xref: /llvm-project/flang/test/Semantics/reduce.cuf (revision 4065d985ab0f012f7fc0718685f6c12cf0352929)
15bbb63bdSPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1
2*4065d985SValentin Clement (バレンタイン クレメン)subroutine s(n,m,a,l,c)
35bbb63bdSPeter Klausler  integer, intent(in) :: n
416975ad2SValentin Clement (バレンタイン クレメン)  integer, device, intent(in) :: m(n)
516975ad2SValentin Clement (バレンタイン クレメン)  real, device, intent(in) :: a(n)
616975ad2SValentin Clement (バレンタイン クレメン)  logical, device, intent(in) :: l(n)
75bbb63bdSPeter Klausler  integer j, mr
85bbb63bdSPeter Klausler  real ar
95bbb63bdSPeter Klausler  logical lr
10*4065d985SValentin Clement (バレンタイン クレメン)  complex :: cr
11*4065d985SValentin Clement (バレンタイン クレメン)  complex, device, intent(in) :: c(n)
125bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (+:mr,ar)
135bbb63bdSPeter Klausler  do j=1,n; mr = mr + m(j); ar = ar + a(j); end do
145bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type LOGICAL(4)
155bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (+:lr)
165bbb63bdSPeter Klausler  do j=1,n; end do
175bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (*:mr,ar)
185bbb63bdSPeter Klausler  do j=1,n; mr = mr * m(j); ar = ar * a(j); end do
195bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type LOGICAL(4)
205bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (*:lr)
215bbb63bdSPeter Klausler  do j=1,n; end do
225bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (max:mr,ar)
235bbb63bdSPeter Klausler  do j=1,n; mr = max(mr,m(j)); ar = max(ar,a(j)); end do
245bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type LOGICAL(4)
255bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (max:lr)
265bbb63bdSPeter Klausler  do j=1,n; end do
275bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (min:mr,ar)
285bbb63bdSPeter Klausler  do j=1,n; mr = min(mr,m(j)); ar = min(ar,a(j)); end do
295bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type LOGICAL(4)
305bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (min:lr)
315bbb63bdSPeter Klausler  do j=1,n; end do
325bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (iand:mr)
335bbb63bdSPeter Klausler  do j=1,n; mr = iand(mr,m(j)); end do
345bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type REAL(4)
355bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type LOGICAL(4)
365bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (iand:ar,lr)
375bbb63bdSPeter Klausler  do j=1,n; end do
385bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (ieor:mr)
395bbb63bdSPeter Klausler  do j=1,n; mr = ieor(mr,m(j)); end do
405bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type REAL(4)
415bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type LOGICAL(4)
425bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (ieor:ar,lr)
435bbb63bdSPeter Klausler  do j=1,n; end do
445bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (ior:mr)
455bbb63bdSPeter Klausler  do j=1,n; mr = ior(mr,m(j)); end do
465bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type REAL(4)
475bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type LOGICAL(4)
485bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (ior:ar,lr)
495bbb63bdSPeter Klausler  do j=1,n; end do
505bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (.and.:lr)
515bbb63bdSPeter Klausler  do j=1,n; lr = lr .and. l(j); end do
525bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type INTEGER(4)
535bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type REAL(4)
545bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (.and.:mr,ar)
555bbb63bdSPeter Klausler  do j=1,n; end do
565bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (.eqv.:lr)
575bbb63bdSPeter Klausler  do j=1,n; lr = lr .eqv. l(j); end do
585bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type INTEGER(4)
595bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type REAL(4)
605bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (.eqv.:mr,ar)
615bbb63bdSPeter Klausler  do j=1,n; end do
625bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (.neqv.:lr)
635bbb63bdSPeter Klausler  do j=1,n; lr = lr .neqv. l(j); end do
645bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type INTEGER(4)
655bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type REAL(4)
665bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (.neqv.:mr,ar)
675bbb63bdSPeter Klausler  do j=1,n; end do
685bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (.or.:lr)
695bbb63bdSPeter Klausler  do j=1,n; lr = lr .or. l(j); end do
705bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type INTEGER(4)
715bbb63bdSPeter Klausler!ERROR: !$CUF KERNEL DO REDUCE operation is not acceptable for a variable with type REAL(4)
725bbb63bdSPeter Klausler!$cuf kernel do <<<*,*>>> reduce (.or.:mr,ar)
735bbb63bdSPeter Klausler  do j=1,n; end do
74*4065d985SValentin Clement (バレンタイン クレメン)!$cuf kernel do <<<*,*>>> reduce (+:cr) ! ok complex type
75*4065d985SValentin Clement (バレンタイン クレメン)  do j=1,n; cr = cr + c(j); end do
765bbb63bdSPeter Klauslerend
77