void fi5(atomic_int *i, int scope) {
// CHECK-LABEL: @fi5
- // CHECK: switch i32 %{{.*}}, label %opencl_allsvmdevices [
- // CHECK-NEXT: i32 1, label %opencl_workgroup
- // CHECK-NEXT: i32 2, label %opencl_device
- // CHECK-NEXT: i32 4, label %opencl_subgroup
+ // CHECK: switch i32 %{{.*}}, label %[[opencl_allsvmdevices:.*]] [
+ // CHECK-NEXT: i32 1, label %[[opencl_workgroup:.*]]
+ // CHECK-NEXT: i32 2, label %[[opencl_device:.*]]
+ // CHECK-NEXT: i32 4, label %[[opencl_subgroup:.*]]
// CHECK-NEXT: ]
- // CHECK: opencl_workgroup:
+ // CHECK: [[opencl_workgroup]]:
// CHECK: load atomic i32, i32 addrspace(4)* %{{.*}} syncscope("workgroup") seq_cst
- // CHECK: br label %atomic.scope.continue
- // CHECK: opencl_device:
+ // CHECK: br label %[[continue:.*]]
+ // CHECK: [[opencl_device]]:
// CHECK: load atomic i32, i32 addrspace(4)* %{{.*}} syncscope("agent") seq_cst
- // CHECK: br label %atomic.scope.continue
- // CHECK: opencl_allsvmdevices:
+ // CHECK: br label %[[continue]]
+ // CHECK: [[opencl_allsvmdevices]]:
// CHECK: load atomic i32, i32 addrspace(4)* %{{.*}} seq_cst
- // CHECK: br label %atomic.scope.continue
- // CHECK: opencl_subgroup:
+ // CHECK: br label %[[continue]]
+ // CHECK: [[opencl_subgroup]]:
// CHECK: load atomic i32, i32 addrspace(4)* %{{.*}} syncscope("subgroup") seq_cst
- // CHECK: br label %atomic.scope.continue
- // CHECK: atomic.scope.continue:
+ // CHECK: br label %[[continue]]
+ // CHECK: [[continue]]:
int x = __opencl_atomic_load(i, memory_order_seq_cst, scope);
}
void fi6(atomic_int *i, int order, int scope) {
// CHECK-LABEL: @fi6
- // CHECK: switch i32 %{{.*}}, label %monotonic [
- // CHECK-NEXT: i32 1, label %acquire
- // CHECK-NEXT: i32 2, label %acquire
- // CHECK-NEXT: i32 5, label %seqcst
+ // CHECK: switch i32 %{{.*}}, label %[[monotonic:.*]] [
+ // CHECK-NEXT: i32 1, label %[[acquire:.*]]
+ // CHECK-NEXT: i32 2, label %[[acquire:.*]]
+ // CHECK-NEXT: i32 5, label %[[seqcst:.*]]
// CHECK-NEXT: ]
- // CHECK: monotonic:
+ // CHECK: [[monotonic]]:
// CHECK: switch i32 %{{.*}}, label %[[MON_ALL:.*]] [
// CHECK-NEXT: i32 1, label %[[MON_WG:.*]]
// CHECK-NEXT: i32 2, label %[[MON_DEV:.*]]
// CHECK-NEXT: i32 4, label %[[MON_SUB:.*]]
// CHECK-NEXT: ]
- // CHECK: acquire:
+ // CHECK: [[acquire]]:
// CHECK: switch i32 %{{.*}}, label %[[ACQ_ALL:.*]] [
// CHECK-NEXT: i32 1, label %[[ACQ_WG:.*]]
// CHECK-NEXT: i32 2, label %[[ACQ_DEV:.*]]
// CHECK-NEXT: i32 4, label %[[ACQ_SUB:.*]]
// CHECK-NEXT: ]
- // CHECK: seqcst:
+ // CHECK: [[seqcst]]:
// CHECK: switch i32 %{{.*}}, label %[[SEQ_ALL:.*]] [
// CHECK-NEXT: i32 1, label %[[SEQ_WG:.*]]
// CHECK-NEXT: i32 2, label %[[SEQ_DEV:.*]]