@@ -8,14 +8,12 @@ declare void @llvm.assume(i1 noundef)
8
8
define i32 @entry (ptr %0 ) {
9
9
; CHECK-LABEL: define i32 @entry(
10
10
; CHECK-SAME: ptr nocapture [[TMP0:%.*]]) local_unnamed_addr {
11
- ; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP0]], align 8
12
- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP2]], i64 4) ]
11
+ ; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP0]], align 8, !align [[META0:![0-9]+]]
13
12
; CHECK-NEXT: [[DOT0_COPYLOAD_I_I_I:%.*]] = load i32, ptr [[TMP2]], align 4
14
13
; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @swap(i32 [[DOT0_COPYLOAD_I_I_I]])
15
14
; CHECK-NEXT: [[TMP4:%.*]] = load ptr, ptr [[TMP0]], align 8
16
15
; CHECK-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP4]], i64 4
17
16
; CHECK-NEXT: store ptr [[TMP5]], ptr [[TMP0]], align 8
18
- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP5]], i64 4) ]
19
17
; CHECK-NEXT: [[DOT0_COPYLOAD_I_I_I1:%.*]] = load i32, ptr [[TMP5]], align 4
20
18
; CHECK-NEXT: [[TMP6:%.*]] = tail call i32 @swap(i32 [[DOT0_COPYLOAD_I_I_I1]])
21
19
; CHECK-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TMP0]], align 8
@@ -32,8 +30,7 @@ define i32 @entry(ptr %0) {
32
30
define i32 @fn1 (ptr %0 ) {
33
31
; CHECK-LABEL: define i32 @fn1(
34
32
; CHECK-SAME: ptr nocapture [[TMP0:%.*]]) local_unnamed_addr {
35
- ; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP0]], align 8
36
- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP2]], i64 4) ]
33
+ ; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP0]], align 8, !align [[META0]]
37
34
; CHECK-NEXT: [[DOT0_COPYLOAD_I_I:%.*]] = load i32, ptr [[TMP2]], align 4
38
35
; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @swap(i32 [[DOT0_COPYLOAD_I_I]])
39
36
; CHECK-NEXT: [[TMP4:%.*]] = load ptr, ptr [[TMP0]], align 8
@@ -48,8 +45,7 @@ define i32 @fn1(ptr %0) {
48
45
define i32 @fn2 (ptr %0 ) {
49
46
; CHECK-LABEL: define i32 @fn2(
50
47
; CHECK-SAME: ptr nocapture [[TMP0:%.*]]) local_unnamed_addr {
51
- ; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP0]], align 8
52
- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP2]], i64 4) ]
48
+ ; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP0]], align 8, !align [[META0]]
53
49
; CHECK-NEXT: [[DOT0_COPYLOAD_I:%.*]] = load i32, ptr [[TMP2]], align 4
54
50
; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @swap(i32 [[DOT0_COPYLOAD_I]])
55
51
; CHECK-NEXT: [[TMP4:%.*]] = load ptr, ptr [[TMP0]], align 8
@@ -68,7 +64,6 @@ define i32 @fn2(ptr %0) {
68
64
define i32 @load_assume_aligned (ptr %0 ) {
69
65
; CHECK-LABEL: define i32 @load_assume_aligned(
70
66
; CHECK-SAME: ptr [[TMP0:%.*]]) local_unnamed_addr {
71
- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP0]], i64 4) ]
72
67
; CHECK-NEXT: [[DOT0_COPYLOAD:%.*]] = load i32, ptr [[TMP0]], align 4
73
68
; CHECK-NEXT: [[TMP2:%.*]] = tail call i32 @swap(i32 [[DOT0_COPYLOAD]])
74
69
; CHECK-NEXT: ret i32 [[TMP2]]
@@ -80,3 +75,6 @@ define i32 @load_assume_aligned(ptr %0) {
80
75
}
81
76
82
77
declare i32 @swap (i32 )
78
+ ;.
79
+ ; CHECK: [[META0]] = !{i64 4}
80
+ ;.
0 commit comments