172 lines
4.2 KiB
Fortran
172 lines
4.2 KiB
Fortran
! RUN: %python %S/../test_errors.py %s %flang -fopenacc
|
|
|
|
! Check OpenACC reduction validity.
|
|
|
|
program openacc_reduction_validity
|
|
|
|
integer :: i
|
|
real :: r
|
|
complex :: c
|
|
logical :: l
|
|
|
|
!$acc parallel reduction(+:i)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(*:i)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(min:i)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(max:i)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(iand:i)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(ior:i)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(ieor:i)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for integer type
|
|
!$acc parallel reduction(.and.:i)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for integer type
|
|
!$acc parallel reduction(.or.:i)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for integer type
|
|
!$acc parallel reduction(.eqv.:i)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for integer type
|
|
!$acc parallel reduction(.neqv.:i)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(+:r)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(*:r)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(min:r)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(max:r)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for real type
|
|
!$acc parallel reduction(iand:r)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for real type
|
|
!$acc parallel reduction(ior:r)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for real type
|
|
!$acc parallel reduction(ieor:r)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for real type
|
|
!$acc parallel reduction(.and.:r)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for real type
|
|
!$acc parallel reduction(.or.:r)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for real type
|
|
!$acc parallel reduction(.eqv.:r)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for real type
|
|
!$acc parallel reduction(.neqv.:r)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(+:c)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(*:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(min:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(max:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(iand:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(ior:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(ieor:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(.and.:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(.or.:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(.eqv.:c)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for complex type
|
|
!$acc parallel reduction(.neqv.:c)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(.and.:l)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(.or.:l)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(.eqv.:l)
|
|
!$acc end parallel
|
|
|
|
!$acc parallel reduction(.neqv.:l)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for logical type
|
|
!$acc parallel reduction(+:l)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for logical type
|
|
!$acc parallel reduction(*:l)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for logical type
|
|
!$acc parallel reduction(min:l)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for logical type
|
|
!$acc parallel reduction(max:l)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for logical type
|
|
!$acc parallel reduction(iand:l)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for logical type
|
|
!$acc parallel reduction(ior:l)
|
|
!$acc end parallel
|
|
|
|
!ERROR: reduction operator not supported for logical type
|
|
!$acc parallel reduction(ieor:l)
|
|
!$acc end parallel
|
|
|
|
|
|
end program
|