292 lines · plain
1! RUN: %flang_fc1 -fdebug-unparse-no-sema -fopenmp %s | FileCheck %s2 3program main4 implicit none5 integer :: i, j = 106 integer :: k7!READ8!$omp atomic read9 i = j10!$omp atomic seq_cst read11 i = j12!$omp atomic read seq_cst13 i = j14!$omp atomic release read15 i = j16!$omp atomic read release17 i = j18!$omp atomic acq_rel read19 i = j20!$omp atomic read acq_rel21 i = j22!$omp atomic acquire read23 i = j24!$omp atomic read acquire25 i = j26!$omp atomic relaxed read27 i = j28!$omp atomic read relaxed29 i = j30 31! WRITE32!$omp atomic write33 i = j34!$omp atomic seq_cst write35 i = j36!$omp atomic write seq_cst37 i = j38!$omp atomic release write39 i = j40!$omp atomic write release41 i = j42!$omp atomic acq_rel write43 i = j44!$omp atomic write acq_rel45 i = j46!$omp atomic acquire write47 i = j48!$omp atomic write acquire49 i = j50!$omp atomic relaxed write51 i = j52!$omp atomic write relaxed53 i = j54 55!UPDATE56!$omp atomic update57 i = j58!$omp atomic seq_cst update59 i = j60!$omp atomic update seq_cst61 i = j62!$omp atomic release update63 i = j64!$omp atomic update release65 i = j66!$omp atomic acq_rel update67 i = j68!$omp atomic update acq_rel69 i = j70!$omp atomic acquire update71 i = j72!$omp atomic update acquire73 i = j74!$omp atomic relaxed update75 i = j76!$omp atomic update relaxed77 i = j78 79!CAPTURE80!$omp atomic capture81 i = j82 i = j83!$omp end atomic84!$omp atomic seq_cst capture85 i = j86 i = j87!$omp end atomic88!$omp atomic capture seq_cst89 i = j90 i = j91!$omp end atomic92!$omp atomic release capture93 i = j94 i = j95!$omp end atomic96!$omp atomic capture release97 i = j98 i = j99!$omp end atomic100!$omp atomic acq_rel capture101 i = j102 i = j103!$omp end atomic104!$omp atomic capture acq_rel105 i = j106 i = j107!$omp end atomic108!$omp atomic acquire capture109 i = j110 i = j111!$omp end atomic112!$omp atomic capture acquire113 i = j114 i = j115!$omp end atomic116!$omp atomic relaxed capture117 i = j118 i = j119!$omp end atomic120!$omp atomic capture relaxed121 i = j122 i = j123!$omp end atomic124 125!COMPARE126!$omp atomic compare127 if (k == i) k = j128!$omp atomic seq_cst compare129 if (k == j) then130 k = i131 end if132!$omp atomic compare seq_cst133 if (k .eq. j) then134 k = i135 end if136!$omp atomic release compare137 if (i .eq. j) k = i138!$omp atomic compare release139 if (i .eq. j) then140 i = k141 end if142!$omp atomic acq_rel compare143 if (k .eq. j) then144 j = i145 end if146!$omp atomic compare acq_rel147 if (i .eq. j) then148 i = k149 end if150!$omp atomic acquire compare151 if (i .eq. j + 1) then152 i = j153 end if154 155!$omp atomic compare acquire156 if (i .eq. j) then157 i = k158 end if159!$omp atomic relaxed compare160 if (i .eq. j) then161 i = k162 end if163!$omp atomic compare relaxed164 if (i .eq. k) then165 i = j166 end if167 168 169!$omp atomic compare fail(relaxed)170 if (i .eq. k) then171 i = j172 end if173!$omp atomic fail(relaxed) compare174 if (i .eq. k) then175 i = j176 end if177!$omp atomic fail(relaxed) compare acquire178 if (i .eq. k) then179 i = j180 end if181 182!ATOMIC183!$omp atomic184 i = j185!$omp atomic seq_cst186 i = j187!$omp atomic release188 i = j189!$omp atomic acq_rel190 i = j191!$omp atomic acquire192 i = j193!$omp atomic relaxed194 i = j195 196end program main197!CHECK-LABEL: PROGRAM main198 199!READ200 201!CHECK: !$OMP ATOMIC READ202!CHECK: !$OMP ATOMIC SEQ_CST READ203!CHECK: !$OMP ATOMIC READ SEQ_CST204!CHECK: !$OMP ATOMIC RELEASE READ205!CHECK: !$OMP ATOMIC READ RELEASE206!CHECK: !$OMP ATOMIC ACQ_REL READ207!CHECK: !$OMP ATOMIC READ ACQ_REL208!CHECK: !$OMP ATOMIC ACQUIRE READ209!CHECK: !$OMP ATOMIC READ ACQUIRE210!CHECK: !$OMP ATOMIC RELAXED READ211!CHECK: !$OMP ATOMIC READ RELAXED212 213!WRITE214 215!CHECK: !$OMP ATOMIC WRITE216!CHECK: !$OMP ATOMIC SEQ_CST WRITE217!CHECK: !$OMP ATOMIC WRITE SEQ_CST218!CHECK: !$OMP ATOMIC RELEASE WRITE219!CHECK: !$OMP ATOMIC WRITE RELEASE220!CHECK: !$OMP ATOMIC ACQ_REL WRITE221!CHECK: !$OMP ATOMIC WRITE ACQ_REL222!CHECK: !$OMP ATOMIC ACQUIRE WRITE223!CHECK: !$OMP ATOMIC WRITE ACQUIRE224!CHECK: !$OMP ATOMIC RELAXED WRITE225!CHECK: !$OMP ATOMIC WRITE RELAXED226 227!UPDATE228 229!CHECK: !$OMP ATOMIC UPDATE230!CHECK: !$OMP ATOMIC SEQ_CST UPDATE231!CHECK: !$OMP ATOMIC UPDATE SEQ_CST232!CHECK: !$OMP ATOMIC RELEASE UPDATE233!CHECK: !$OMP ATOMIC UPDATE RELEASE234!CHECK: !$OMP ATOMIC ACQ_REL UPDATE235!CHECK: !$OMP ATOMIC UPDATE ACQ_REL236!CHECK: !$OMP ATOMIC ACQUIRE UPDATE237!CHECK: !$OMP ATOMIC UPDATE ACQUIRE238!CHECK: !$OMP ATOMIC RELAXED UPDATE239!CHECK: !$OMP ATOMIC UPDATE RELAXED240 241!CAPTURE242 243!CHECK: !$OMP ATOMIC CAPTURE244!CHECK: !$OMP END ATOMIC245!CHECK: !$OMP ATOMIC SEQ_CST CAPTURE246!CHECK: !$OMP END ATOMIC247!CHECK: !$OMP ATOMIC CAPTURE SEQ_CST248!CHECK: !$OMP END ATOMIC249!CHECK: !$OMP ATOMIC RELEASE CAPTURE250!CHECK: !$OMP END ATOMIC251!CHECK: !$OMP ATOMIC CAPTURE RELEASE252!CHECK: !$OMP END ATOMIC253!CHECK: !$OMP ATOMIC ACQ_REL CAPTURE254!CHECK: !$OMP END ATOMIC255!CHECK: !$OMP ATOMIC CAPTURE ACQ_REL256!CHECK: !$OMP END ATOMIC257!CHECK: !$OMP ATOMIC ACQUIRE CAPTURE258!CHECK: !$OMP END ATOMIC259!CHECK: !$OMP ATOMIC CAPTURE ACQUIRE260!CHECK: !$OMP END ATOMIC261!CHECK: !$OMP ATOMIC RELAXED CAPTURE262!CHECK: !$OMP END ATOMIC263!CHECK: !$OMP ATOMIC CAPTURE RELAXED264!CHECK: !$OMP END ATOMIC265 266!COMPARE267 268!CHECK: !$OMP ATOMIC COMPARE269!CHECK: !$OMP ATOMIC SEQ_CST COMPARE270!CHECK: !$OMP ATOMIC COMPARE SEQ_CST271!CHECK: !$OMP ATOMIC RELEASE COMPARE272!CHECK: !$OMP ATOMIC COMPARE RELEASE273!CHECK: !$OMP ATOMIC ACQ_REL COMPARE274!CHECK: !$OMP ATOMIC COMPARE ACQ_REL275!CHECK: !$OMP ATOMIC ACQUIRE COMPARE276!CHECK: !$OMP ATOMIC COMPARE ACQUIRE277!CHECK: !$OMP ATOMIC RELAXED COMPARE278!CHECK: !$OMP ATOMIC COMPARE RELAXED279!CHECK: !$OMP ATOMIC COMPARE FAIL(RELAXED)280!CHECK: !$OMP ATOMIC FAIL(RELAXED) COMPARE281!CHECK: !$OMP ATOMIC FAIL(RELAXED) COMPARE ACQUIRE282 283!ATOMIC284!CHECK: !$OMP ATOMIC285!CHECK: !$OMP ATOMIC SEQ_CST286!CHECK: !$OMP ATOMIC RELEASE287!CHECK: !$OMP ATOMIC ACQ_REL288!CHECK: !$OMP ATOMIC ACQUIRE289!CHECK: !$OMP ATOMIC RELAXED290 291 292