|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
1 | 2 | ; RUN: opt -passes=verify -S < %s | FileCheck %s
|
2 | 3 |
|
3 |
| -; CHECK: @load |
4 | 4 | define i32 @load(ptr %a) {
|
5 |
| - %i = load i32, ptr %a |
6 |
| - ret i32 %i |
| 5 | +; CHECK-LABEL: @load( |
| 6 | +; CHECK-NEXT: [[I:%.*]] = load i32, ptr [[A:%.*]], align 4 |
| 7 | +; CHECK-NEXT: ret i32 [[I]] |
| 8 | +; |
| 9 | + %i = load i32, ptr %a |
| 10 | + ret i32 %i |
7 | 11 | }
|
8 | 12 |
|
9 |
| -; CHECK: @store |
10 | 13 | define void @store(ptr %a, i32 %i) {
|
11 |
| - store i32 %i, ptr %a |
12 |
| - ret void |
| 14 | +; CHECK-LABEL: @store( |
| 15 | +; CHECK-NEXT: store i32 [[I:%.*]], ptr [[A:%.*]], align 4 |
| 16 | +; CHECK-NEXT: ret void |
| 17 | +; |
| 18 | + store i32 %i, ptr %a |
| 19 | + ret void |
13 | 20 | }
|
14 | 21 |
|
15 |
| -; CHECK: @cmpxchg |
16 | 22 | define void @cmpxchg(ptr %p, i32 %a, i32 %b) {
|
17 |
| - %val_success = cmpxchg ptr %p, i32 %a, i32 %b acq_rel monotonic |
18 |
| - ret void |
| 23 | +; CHECK-LABEL: @cmpxchg( |
| 24 | +; CHECK-NEXT: [[VAL_SUCCESS:%.*]] = cmpxchg ptr [[P:%.*]], i32 [[A:%.*]], i32 [[B:%.*]] acq_rel monotonic, align 4 |
| 25 | +; CHECK-NEXT: ret void |
| 26 | +; |
| 27 | + %val_success = cmpxchg ptr %p, i32 %a, i32 %b acq_rel monotonic |
| 28 | + ret void |
19 | 29 | }
|
20 | 30 |
|
21 |
| -; CHECK: @atomicrmw |
22 | 31 | define void @atomicrmw(ptr %a, i32 %i) {
|
23 |
| - %b = atomicrmw add ptr %a, i32 %i acquire |
24 |
| - ret void |
| 32 | +; CHECK-LABEL: @atomicrmw( |
| 33 | +; CHECK-NEXT: [[B:%.*]] = atomicrmw add ptr [[A:%.*]], i32 [[I:%.*]] acquire, align 4 |
| 34 | +; CHECK-NEXT: ret void |
| 35 | +; |
| 36 | + %b = atomicrmw add ptr %a, i32 %i acquire |
| 37 | + ret void |
25 | 38 | }
|
26 | 39 |
|
27 | 40 | define void @opaque_mangle(ptr %a) {
|
28 |
| - call void @llvm.lifetime.start.p0(i64 8, ptr %a) |
29 |
| - call void @llvm.lifetime.end.p0(i64 8, ptr %a) |
30 |
| - ret void |
| 41 | +; CHECK-LABEL: @opaque_mangle( |
| 42 | +; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[A:%.*]]) |
| 43 | +; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[A]]) |
| 44 | +; CHECK-NEXT: ret void |
| 45 | +; |
| 46 | + call void @llvm.lifetime.start.p0(i64 8, ptr %a) |
| 47 | + call void @llvm.lifetime.end.p0(i64 8, ptr %a) |
| 48 | + ret void |
| 49 | +} |
| 50 | + |
| 51 | +define void @intrinsic_calls(ptr %a) { |
| 52 | +; CHECK-LABEL: @intrinsic_calls( |
| 53 | +; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i32> @llvm.masked.load.v2i32.p0(ptr [[A:%.*]], i32 4, <2 x i1> zeroinitializer, <2 x i32> zeroinitializer) |
| 54 | +; CHECK-NEXT: call void @llvm.masked.store.v2i32.p0(<2 x i32> zeroinitializer, ptr [[A]], i32 4, <2 x i1> zeroinitializer) |
| 55 | +; CHECK-NEXT: ret void |
| 56 | +; |
| 57 | + call <2 x i32> @llvm.masked.load.v2i32.p0(ptr %a, i32 4, <2 x i1> zeroinitializer, <2 x i32> zeroinitializer) |
| 58 | + call void @llvm.masked.store.v2i32.p0(<2 x i32> zeroinitializer, ptr %a, i32 4, <2 x i1> zeroinitializer) |
| 59 | + ret void |
31 | 60 | }
|
32 | 61 |
|
33 | 62 | ; CHECK: @llvm.lifetime.start.p0
|
34 | 63 | ; CHECK: @llvm.lifetime.end.p0
|
35 | 64 | declare void @llvm.lifetime.start.p0(i64, ptr nocapture)
|
36 | 65 | declare void @llvm.lifetime.end.p0(i64, ptr nocapture)
|
| 66 | + |
| 67 | +declare <2 x i32> @llvm.masked.load.v2i32.p0(ptr, i32, <2 x i1>, <2 x i32>) |
| 68 | +declare void @llvm.masked.store.v2i32.p0(<2 x i32>, ptr, i32, <2 x i1>) |
0 commit comments