brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 9f23a27 Raw
124 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang -fopenacc2 3! Check OpenACC clause validity for the following construct and directive:4!   2.11 Serial Loop5 6program openacc_serial_loop_validity7 8  implicit none9 10  integer :: i, b11  integer, parameter :: N = 25612  integer, dimension(N) :: c13  logical, dimension(N) :: d, e14  integer :: async115  integer :: wait1, wait216  real :: reduction_r17  logical :: reduction_l18  logical :: ifCondition = .TRUE.19  real(8), dimension(N) :: a20 21 22  !$acc serial loop reduction(+: reduction_r)23  do i = 1, N24    reduction_r = a(i) + i25  end do26 27  !$acc serial loop reduction(*: reduction_r)28  do i = 1, N29    reduction_r = reduction_r * (a(i) + i)30  end do31 32  !$acc serial loop reduction(min: reduction_r)33  do i = 1, N34    reduction_r = min(reduction_r, a(i) * i)35  end do36 37  !$acc serial loop reduction(max: reduction_r)38  do i = 1, N39    reduction_r = max(reduction_r, a(i) * i)40  end do41 42  !$acc serial loop reduction(iand: b)43  do i = 1, N44    b = iand(b, c(i))45  end do46 47  !$acc serial loop reduction(ior: b)48  do i = 1, N49    b = ior(b, c(i))50  end do51 52  !$acc serial loop reduction(ieor: b)53  do i = 1, N54    b = ieor(b, c(i))55  end do56 57  !$acc serial loop reduction(.and.: reduction_l)58  do i = 1, N59    reduction_l = d(i) .and. e(i)60  end do61 62  !$acc serial loop reduction(.or.: reduction_l)63  do i = 1, N64    reduction_l = d(i) .or. e(i)65  end do66 67  !$acc serial loop reduction(.eqv.: reduction_l)68  do i = 1, N69    reduction_l = d(i) .eqv. e(i)70  end do71 72  !$acc serial loop reduction(.neqv.: reduction_l)73  do i = 1, N74    reduction_l = d(i) .neqv. e(i)75  end do76 77  !ERROR: Clause IF is not allowed after clause DEVICE_TYPE on the SERIAL LOOP directive78  !$acc serial loop device_type(*) if(.TRUE.)79  do i = 1, N80    a(i) = 3.14d081  end do82  !$acc end serial loop83 84  !$acc serial loop if(ifCondition)85  do i = 1, N86    a(i) = 3.14d087  end do88  !$acc end serial loop89 90  !$acc serial loop91  do i = 1, N92    a(i) = 3.14d093  end do94  !ERROR: Unmatched END PARALLEL LOOP directive95  !$acc end parallel loop96 97  !$acc serial loop98  do i = 1, N99    a(i) = 3.14d0100  end do101  !$acc end serial loop102 103  !$acc serial loop104  do i = 1, N105    a(i) = 3.14d0106  end do107  !$acc end serial108 109  !$acc serial loop110  do i = 1, n111    if(i == 10) cycle112  end do113 114  !$acc serial loop async(1) device_type(nvidia) async(3)115  do i = 1, n116  end do117 118!ERROR: At most one ASYNC clause can appear on the SERIAL LOOP directive or in group separated by the DEVICE_TYPE clause119  !$acc serial loop async(1) device_type(nvidia) async async120  do i = 1, n121  end do122 123end program openacc_serial_loop_validity124