|
| 1 | +; RUN: llvm-as %s -o %t.bc |
| 2 | +; RUN: llvm-spirv %t.bc -spirv-text -o - | FileCheck %s --check-prefixes=CHECK |
| 3 | +; RUN: llvm-spirv %t.bc -o %t.spv |
| 4 | +; RUN: spirv-val %t.spv |
| 5 | + |
| 6 | +target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" |
| 7 | +target triple = "spir64" |
| 8 | + |
| 9 | +; CHECK-DAG: 4 TypeInt [[#int:]] 32 0 |
| 10 | +; CHECK-DAG: Constant [[#int]] [[#DeviceScope:]] 4 |
| 11 | +; CHECK-DAG: Constant [[#int]] [[#SequentiallyConsistent_MS:]] 0 |
| 12 | +; CHECK-DAG: 4 TypePointer [[#int_ptr:]] 4 [[#int]] |
| 13 | +; CHECK-DAG: 2 TypeBool [[#bool:]] |
| 14 | + |
| 15 | +define spir_kernel void @test_atomic_kernel() { |
| 16 | +entry: |
| 17 | + %arrayidx7 = getelementptr i32, ptr addrspace(3) null, i64 0 |
| 18 | + |
| 19 | +; CHECK: PtrAccessChain [[#int_ptr]] [[#Pointer:]] [[#]] [[#]] |
| 20 | +; CHECK: Load [[#int]] [[#Comparator:]] [[#]] |
| 21 | +; CHECK-NEXT: AtomicCompareExchange [[#int]] [[#Result:]] [[#Pointer]] [[#DeviceScope]] [[#SequentiallyConsistent_MS]] [[#SequentiallyConsistent_MS]] [[#]] [[#Comparator]] |
| 22 | +; CHECK-NEXT: Store [[#]] [[#Result]] |
| 23 | +; CHECK-NEXT: IEqual [[#bool]] [[#]] [[#Result]] [[#Comparator]] |
| 24 | + %call10 = call spir_func i1 @_Z37atomic_compare_exchange_weak_explicitPU3AS3VU7_AtomiciPii12memory_orderS4_12memory_scope(ptr addrspace(3) %arrayidx7, ptr null, i32 14, i32 0, i32 0, i32 0) |
| 25 | + |
| 26 | +; CHECK: Load [[#int]] [[#Comparator:]] [[#]] |
| 27 | +; CHECK-NEXT: AtomicCompareExchange [[#int]] [[#Result2:]] [[#Pointer]] [[#DeviceScope]] [[#SequentiallyConsistent_MS]] [[#SequentiallyConsistent_MS]] [[#]] [[#Comparator]] |
| 28 | +; CHECK-NEXT: Store [[#]] [[#Result2]] |
| 29 | +; CHECK-NEXT: IEqual [[#bool]] [[#]] [[#Result2]] [[#Comparator]] |
| 30 | + %call11 = call spir_func i1 @_Z39atomic_compare_exchange_strong_explicitPU3AS3VU7_AtomiciPii12memory_orderS4_12memory_scope(ptr addrspace(3) %arrayidx7, ptr null, i32 14, i32 0, i32 0, i32 0) |
| 31 | + ret void |
| 32 | +} |
| 33 | + |
| 34 | +declare spir_func i1 @_Z37atomic_compare_exchange_weak_explicitPU3AS3VU7_AtomiciPii12memory_orderS4_12memory_scope(ptr addrspace(3), ptr, i32, i32, i32, i32) |
| 35 | +declare spir_func i1 @_Z39atomic_compare_exchange_strong_explicitPU3AS3VU7_AtomiciPii12memory_orderS4_12memory_scope(ptr addrspace(3), ptr, i32, i32, i32, i32) |
| 36 | + |
| 37 | +!opencl.ocl.version = !{!0} |
| 38 | + |
| 39 | +!0 = !{i32 3, i32 0} |
| 40 | + |
0 commit comments