brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 50e988b Raw
66 lines · cpp
1// RUN: %clang_cc1 -fopenacc -ast-print %s -o - | FileCheck %s2 3void foo(int v, int x) {4// CHECK: #pragma acc atomic read5// CHECK-NEXT:   v = x;6#pragma acc atomic read7  v = x;8// CHECK-NEXT: pragma acc atomic write9// CHECK-NEXT:  v = x + 1;10#pragma acc atomic write11  v = x + 1;12// CHECK-NEXT: pragma acc atomic update13// CHECK-NEXT:  x++;14#pragma acc atomic update15  x++;16// CHECK-NEXT: pragma acc atomic 17// CHECK-NEXT:  x--;18#pragma acc atomic19  x--;20// CHECK-NEXT: pragma acc atomic capture21// CHECK-NEXT:  v = x++;22#pragma acc atomic capture23  v = x++;24 25// CHECK-NEXT: #pragma acc atomic capture26// CHECK-NEXT: { 27// CHECK-NEXT: x--;28// CHECK-NEXT: v = x;29// CHECK-NEXT: }30#pragma acc atomic capture31  { x--; v = x; }32 33}34 35void foo2(int v, int x) {36// CHECK: #pragma acc atomic read if(v)37// CHECK-NEXT:   v = x;38#pragma acc atomic read if (v)39  v = x;40// CHECK-NEXT: pragma acc atomic write if(x)41// CHECK-NEXT:  v = x + 1;42#pragma acc atomic write if (x)43  v = x + 1;44// CHECK-NEXT: pragma acc atomic update if(true)45// CHECK-NEXT:  x++;46#pragma acc atomic update if (true)47  x++;48// CHECK-NEXT: pragma acc atomic  if(false)49// CHECK-NEXT:  x--;50#pragma acc atomic if (false)51  x--;52// CHECK-NEXT: pragma acc atomic capture if(v < x)53// CHECK-NEXT:  v = x++;54#pragma acc atomic capture if (v < x)55  v = x++;56 57// CHECK-NEXT: #pragma acc atomic capture if(x > v)58// CHECK-NEXT: { 59// CHECK-NEXT: x--;60// CHECK-NEXT: v = x;61// CHECK-NEXT: }62#pragma acc atomic capture if (x > v)63  { x--; v = x; }64 65}66