|
8 | 8 | ; RUN: llvm-spirv -to-text %t.spv -o - | FileCheck %s |
9 | 9 |
|
10 | 10 | ; CHECK: TypeInt [[Int:[0-9]+]] 32 0 |
11 | | -; CHECK-DAG: Constant [[Int]] [[MemSem_Relaxed:[0-9]+]] 0 |
12 | | -; CHECK-DAG: Constant [[Int]] [[MemSem_Acquire:[0-9]+]] 2 |
13 | | -; CHECK-DAG: Constant [[Int]] [[MemSem_Release:[0-9]+]] 4 {{$}} |
14 | | -; CHECK-DAG: Constant [[Int]] [[MemSem_AcquireRelease:[0-9]+]] 8 |
15 | | -; CHECK-DAG: Constant [[Int]] [[MemSem_SequentiallyConsistent:[0-9]+]] 16 |
| 11 | +; CHECK-DAG: Constant [[Int]] [[MemSem_CW_Relaxed:[0-9]+]] 512 |
| 12 | +; CHECK-DAG: Constant [[Int]] [[MemSem_CW_Acquire:[0-9]+]] 514 |
| 13 | +; CHECK-DAG: Constant [[Int]] [[MemSem_CW_Release:[0-9]+]] 516 |
| 14 | +; CHECK-DAG: Constant [[Int]] [[MemSem_CW_AcquireRelease:[0-9]+]] 520 |
| 15 | +; CHECK-DAG: Constant [[Int]] [[MemSem_CW_SequentiallyConsistent:[0-9]+]] 528 |
| 16 | +; CHECK-DAG: Constant [[Int]] [[MemSem_WG_Relaxed:[0-9]+]] 256 |
| 17 | +; CHECK-DAG: Constant [[Int]] [[MemSem_WG_AcquireRelease:[0-9]+]] 264 |
| 18 | +; CHECK-DAG: Constant [[Int]] [[MemSem_WG_SequentiallyConsistent:[0-9]+]] 272 |
16 | 19 | ; CHECK-DAG: Constant [[Int]] [[Value:[0-9]+]] 42 |
17 | 20 | ; CHECK: TypeFloat [[Float:[0-9]+]] 32 |
18 | 21 | ; CHECK: {{(Variable|UntypedVariableKHR)}} {{[0-9]+}} [[Pointer:[0-9]+]] |
19 | 22 | ; CHECK: {{(Variable|UntypedVariableKHR)}} {{[0-9]+}} [[FPPointer:[0-9]+]] |
| 23 | +; CHECK: {{(Variable|UntypedVariableKHR)}} {{[0-9]+}} [[LocalPointer:[0-9]+]] |
20 | 24 | ; CHECK: Constant [[Float]] [[FPValue:[0-9]+]] 1109917696 |
21 | 25 |
|
22 | 26 | target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" |
23 | 27 | target triple = "spir64" |
24 | 28 |
|
25 | 29 | @ui = common dso_local addrspace(1) global i32 0, align 4 |
26 | 30 | @f = common dso_local local_unnamed_addr addrspace(1) global float 0.000000e+00, align 4 |
| 31 | +@li = common dso_local addrspace(3) global i32 0, align 4 |
27 | 32 |
|
28 | 33 | ; Function Attrs: nounwind |
29 | 34 | define dso_local spir_func void @test_atomicrmw() local_unnamed_addr #0 { |
30 | 35 | entry: |
31 | 36 | %0 = atomicrmw xchg ptr addrspace(1) @ui, i32 42 acq_rel |
32 | | -; CHECK: AtomicExchange [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_AcquireRelease]] [[Value]] |
| 37 | +; CHECK: AtomicExchange [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_AcquireRelease]] [[Value]] |
33 | 38 |
|
34 | 39 | %1 = atomicrmw xchg ptr addrspace(1) @f, float 42.000000e+00 seq_cst |
35 | | -; CHECK: AtomicExchange [[Float]] {{[0-9]+}} [[FPPointer]] {{.+}} [[MemSem_SequentiallyConsistent]] [[FPValue]] |
| 40 | +; CHECK: AtomicExchange [[Float]] {{[0-9]+}} [[FPPointer]] {{.+}} [[MemSem_CW_SequentiallyConsistent]] [[FPValue]] |
36 | 41 |
|
37 | 42 | %2 = atomicrmw add ptr addrspace(1) @ui, i32 42 monotonic |
38 | | -; CHECK: AtomicIAdd [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_Relaxed]] [[Value]] |
| 43 | +; CHECK: AtomicIAdd [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_Relaxed]] [[Value]] |
39 | 44 |
|
40 | 45 | %3 = atomicrmw sub ptr addrspace(1) @ui, i32 42 acquire |
41 | | -; CHECK: AtomicISub [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_Acquire]] [[Value]] |
| 46 | +; CHECK: AtomicISub [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_Acquire]] [[Value]] |
42 | 47 |
|
43 | 48 | %4 = atomicrmw or ptr addrspace(1) @ui, i32 42 release |
44 | | -; CHECK: AtomicOr [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_Release]] [[Value]] |
| 49 | +; CHECK: AtomicOr [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_Release]] [[Value]] |
45 | 50 |
|
46 | 51 | %5 = atomicrmw xor ptr addrspace(1) @ui, i32 42 acq_rel |
47 | | -; CHECK: AtomicXor [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_AcquireRelease]] [[Value]] |
| 52 | +; CHECK: AtomicXor [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_AcquireRelease]] [[Value]] |
48 | 53 |
|
49 | 54 | %6 = atomicrmw and ptr addrspace(1) @ui, i32 42 seq_cst |
50 | | -; CHECK: AtomicAnd [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_SequentiallyConsistent]] [[Value]] |
| 55 | +; CHECK: AtomicAnd [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_SequentiallyConsistent]] [[Value]] |
51 | 56 |
|
52 | 57 | %7 = atomicrmw max ptr addrspace(1) @ui, i32 42 monotonic |
53 | | -; CHECK: AtomicSMax [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_Relaxed]] [[Value]] |
| 58 | +; CHECK: AtomicSMax [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_Relaxed]] [[Value]] |
54 | 59 |
|
55 | 60 | %8 = atomicrmw min ptr addrspace(1) @ui, i32 42 acquire |
56 | | -; CHECK: AtomicSMin [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_Acquire]] [[Value]] |
| 61 | +; CHECK: AtomicSMin [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_Acquire]] [[Value]] |
57 | 62 |
|
58 | 63 | %9 = atomicrmw umax ptr addrspace(1) @ui, i32 42 release |
59 | | -; CHECK: AtomicUMax [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_Release]] [[Value]] |
| 64 | +; CHECK: AtomicUMax [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_Release]] [[Value]] |
60 | 65 |
|
61 | 66 | %10 = atomicrmw umin ptr addrspace(1) @ui, i32 42 acq_rel |
62 | | -; CHECK: AtomicUMin [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_AcquireRelease]] [[Value]] |
| 67 | +; CHECK: AtomicUMin [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_AcquireRelease]] [[Value]] |
| 68 | + |
| 69 | + %11 = atomicrmw add ptr addrspace(3) @li, i32 42 acq_rel |
| 70 | +; CHECK: AtomicIAdd [[Int]] {{[0-9]+}} [[LocalPointer]] {{.+}} [[MemSem_WG_AcquireRelease]] [[Value]] |
| 71 | + |
| 72 | + ret void |
| 73 | +} |
| 74 | + |
| 75 | +; Function Attrs: nounwind |
| 76 | +define dso_local spir_func void @test_atomic_load_store() local_unnamed_addr #0 { |
| 77 | +entry: |
| 78 | + %0 = load atomic i32, ptr addrspace(1) @ui seq_cst, align 4 |
| 79 | +; CHECK: AtomicLoad [[Int]] {{[0-9]+}} [[Pointer]] {{.+}} [[MemSem_CW_SequentiallyConsistent]] |
| 80 | + store atomic i32 42, ptr addrspace(1) @ui monotonic, align 4 |
| 81 | +; CHECK: AtomicStore [[Pointer]] {{.+}} [[MemSem_CW_Relaxed]] [[Value]] |
| 82 | + |
| 83 | + %1 = load atomic i32, ptr addrspace(3) @li seq_cst, align 4 |
| 84 | +; CHECK: AtomicLoad [[Int]] {{[0-9]+}} [[LocalPointer]] {{.+}} [[MemSem_WG_SequentiallyConsistent]] |
| 85 | + store atomic i32 42, ptr addrspace(3) @li monotonic, align 4 |
| 86 | +; CHECK: AtomicStore [[LocalPointer]] {{.+}} [[MemSem_WG_Relaxed]] [[Value]] |
63 | 87 |
|
64 | 88 | ret void |
65 | 89 | } |
|
0 commit comments