Skip to content

Commit e497b12

Browse files
committed
[NFC][AArch64][ARM][Thumb][Hexagon] Autogenerate some tests
These all (and some others) are being affected by D104597, but they are manually-written, which rather complicates checking the effect that change has on them.
1 parent b1f55c3 commit e497b12

18 files changed

+1622
-406
lines changed

llvm/test/CodeGen/AArch64/addsub.ll

Lines changed: 90 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-linux-gnu | FileCheck %s
23

34
; Note that this should be refactored (for efficiency if nothing else)
@@ -11,13 +12,23 @@
1112
; Add pure 12-bit immediates:
1213
define void @add_small() {
1314
; CHECK-LABEL: add_small:
15+
; CHECK: // %bb.0:
16+
; CHECK-NEXT: adrp x8, :got:var_i32
17+
; CHECK-NEXT: adrp x9, :got:var_i64
18+
; CHECK-NEXT: ldr x8, [x8, :got_lo12:var_i32]
19+
; CHECK-NEXT: ldr x9, [x9, :got_lo12:var_i64]
20+
; CHECK-NEXT: ldr w10, [x8]
21+
; CHECK-NEXT: ldr x11, [x9]
22+
; CHECK-NEXT: add w10, w10, #4095 // =4095
23+
; CHECK-NEXT: add x11, x11, #52 // =52
24+
; CHECK-NEXT: str w10, [x8]
25+
; CHECK-NEXT: str x11, [x9]
26+
; CHECK-NEXT: ret
1427

15-
; CHECK: add {{w[0-9]+}}, {{w[0-9]+}}, #4095
1628
%val32 = load i32, i32* @var_i32
1729
%newval32 = add i32 %val32, 4095
1830
store i32 %newval32, i32* @var_i32
1931

20-
; CHECK: add {{x[0-9]+}}, {{x[0-9]+}}, #52
2132
%val64 = load i64, i64* @var_i64
2233
%newval64 = add i64 %val64, 52
2334
store i64 %newval64, i64* @var_i64
@@ -36,33 +47,47 @@ define void @add_small() {
3647
; xC = add xA, #12 ; <- xA implicitly zero extend wA.
3748
define void @add_small_imm(i8* %p, i64* %q, i32 %b, i32* %addr) {
3849
; CHECK-LABEL: add_small_imm:
50+
; CHECK: // %bb.0: // %entry
51+
; CHECK-NEXT: ldrb w8, [x0]
52+
; CHECK-NEXT: add w9, w8, w2
53+
; CHECK-NEXT: add x8, x8, #12 // =12
54+
; CHECK-NEXT: str w9, [x3]
55+
; CHECK-NEXT: str x8, [x1]
56+
; CHECK-NEXT: ret
3957
entry:
4058

41-
; CHECK: ldrb w[[LOAD32:[0-9]+]], [x0]
4259
%t = load i8, i8* %p
4360
%promoted = zext i8 %t to i64
4461
%zextt = zext i8 %t to i32
4562
%add = add nuw i32 %zextt, %b
4663

47-
; CHECK: add [[ADD2:x[0-9]+]], x[[LOAD32]], #12
4864
%add2 = add nuw i64 %promoted, 12
4965
store i32 %add, i32* %addr
5066

51-
; CHECK: str [[ADD2]], [x1]
5267
store i64 %add2, i64* %q
5368
ret void
5469
}
5570

5671
; Add 12-bit immediates, shifted left by 12 bits
5772
define void @add_med() {
5873
; CHECK-LABEL: add_med:
74+
; CHECK: // %bb.0:
75+
; CHECK-NEXT: adrp x8, :got:var_i32
76+
; CHECK-NEXT: adrp x9, :got:var_i64
77+
; CHECK-NEXT: ldr x8, [x8, :got_lo12:var_i32]
78+
; CHECK-NEXT: ldr x9, [x9, :got_lo12:var_i64]
79+
; CHECK-NEXT: ldr w10, [x8]
80+
; CHECK-NEXT: ldr x11, [x9]
81+
; CHECK-NEXT: add w10, w10, #3567, lsl #12 // =14610432
82+
; CHECK-NEXT: add x11, x11, #4095, lsl #12 // =16773120
83+
; CHECK-NEXT: str w10, [x8]
84+
; CHECK-NEXT: str x11, [x9]
85+
; CHECK-NEXT: ret
5986

60-
; CHECK: add {{w[0-9]+}}, {{w[0-9]+}}, {{#3567, lsl #12|#14610432}}
6187
%val32 = load i32, i32* @var_i32
6288
%newval32 = add i32 %val32, 14610432 ; =0xdef000
6389
store i32 %newval32, i32* @var_i32
6490

65-
; CHECK: add {{x[0-9]+}}, {{x[0-9]+}}, {{#4095, lsl #12|#16773120}}
6691
%val64 = load i64, i64* @var_i64
6792
%newval64 = add i64 %val64, 16773120 ; =0xfff000
6893
store i64 %newval64, i64* @var_i64
@@ -73,13 +98,23 @@ define void @add_med() {
7398
; Subtract 12-bit immediates
7499
define void @sub_small() {
75100
; CHECK-LABEL: sub_small:
101+
; CHECK: // %bb.0:
102+
; CHECK-NEXT: adrp x8, :got:var_i32
103+
; CHECK-NEXT: adrp x9, :got:var_i64
104+
; CHECK-NEXT: ldr x8, [x8, :got_lo12:var_i32]
105+
; CHECK-NEXT: ldr x9, [x9, :got_lo12:var_i64]
106+
; CHECK-NEXT: ldr w10, [x8]
107+
; CHECK-NEXT: ldr x11, [x9]
108+
; CHECK-NEXT: sub w10, w10, #4095 // =4095
109+
; CHECK-NEXT: sub x11, x11, #52 // =52
110+
; CHECK-NEXT: str w10, [x8]
111+
; CHECK-NEXT: str x11, [x9]
112+
; CHECK-NEXT: ret
76113

77-
; CHECK: sub {{w[0-9]+}}, {{w[0-9]+}}, #4095
78114
%val32 = load i32, i32* @var_i32
79115
%newval32 = sub i32 %val32, 4095
80116
store i32 %newval32, i32* @var_i32
81117

82-
; CHECK: sub {{x[0-9]+}}, {{x[0-9]+}}, #52
83118
%val64 = load i64, i64* @var_i64
84119
%newval64 = sub i64 %val64, 52
85120
store i64 %newval64, i64* @var_i64
@@ -90,13 +125,23 @@ define void @sub_small() {
90125
; Subtract 12-bit immediates, shifted left by 12 bits
91126
define void @sub_med() {
92127
; CHECK-LABEL: sub_med:
128+
; CHECK: // %bb.0:
129+
; CHECK-NEXT: adrp x8, :got:var_i32
130+
; CHECK-NEXT: adrp x9, :got:var_i64
131+
; CHECK-NEXT: ldr x8, [x8, :got_lo12:var_i32]
132+
; CHECK-NEXT: ldr x9, [x9, :got_lo12:var_i64]
133+
; CHECK-NEXT: ldr w10, [x8]
134+
; CHECK-NEXT: ldr x11, [x9]
135+
; CHECK-NEXT: sub w10, w10, #3567, lsl #12 // =14610432
136+
; CHECK-NEXT: sub x11, x11, #4095, lsl #12 // =16773120
137+
; CHECK-NEXT: str w10, [x8]
138+
; CHECK-NEXT: str x11, [x9]
139+
; CHECK-NEXT: ret
93140

94-
; CHECK: sub {{w[0-9]+}}, {{w[0-9]+}}, {{#3567, lsl #12|#14610432}}
95141
%val32 = load i32, i32* @var_i32
96142
%newval32 = sub i32 %val32, 14610432 ; =0xdef000
97143
store i32 %newval32, i32* @var_i32
98144

99-
; CHECK: sub {{x[0-9]+}}, {{x[0-9]+}}, {{#4095, lsl #12|#16773120}}
100145
%val64 = load i64, i64* @var_i64
101146
%newval64 = sub i64 %val64, 16773120 ; =0xfff000
102147
store i64 %newval64, i64* @var_i64
@@ -106,41 +151,65 @@ define void @sub_med() {
106151

107152
define void @testing() {
108153
; CHECK-LABEL: testing:
154+
; CHECK: // %bb.0:
155+
; CHECK-NEXT: adrp x8, :got:var_i32
156+
; CHECK-NEXT: ldr x8, [x8, :got_lo12:var_i32]
157+
; CHECK-NEXT: ldr w9, [x8]
158+
; CHECK-NEXT: cmp w9, #4095 // =4095
159+
; CHECK-NEXT: b.ne .LBB5_6
160+
; CHECK-NEXT: // %bb.1: // %test2
161+
; CHECK-NEXT: adrp x10, :got:var2_i32
162+
; CHECK-NEXT: ldr x10, [x10, :got_lo12:var2_i32]
163+
; CHECK-NEXT: add w11, w9, #1 // =1
164+
; CHECK-NEXT: str w11, [x8]
165+
; CHECK-NEXT: ldr w10, [x10]
166+
; CHECK-NEXT: cmp w10, #3567, lsl #12 // =14610432
167+
; CHECK-NEXT: b.lo .LBB5_6
168+
; CHECK-NEXT: // %bb.2: // %test3
169+
; CHECK-NEXT: add w11, w9, #2 // =2
170+
; CHECK-NEXT: cmp w9, #123 // =123
171+
; CHECK-NEXT: str w11, [x8]
172+
; CHECK-NEXT: b.lt .LBB5_6
173+
; CHECK-NEXT: // %bb.3: // %test4
174+
; CHECK-NEXT: add w11, w9, #3 // =3
175+
; CHECK-NEXT: cmp w10, #321 // =321
176+
; CHECK-NEXT: str w11, [x8]
177+
; CHECK-NEXT: b.gt .LBB5_6
178+
; CHECK-NEXT: // %bb.4: // %test5
179+
; CHECK-NEXT: add w11, w9, #4 // =4
180+
; CHECK-NEXT: cmn w10, #444 // =444
181+
; CHECK-NEXT: str w11, [x8]
182+
; CHECK-NEXT: b.gt .LBB5_6
183+
; CHECK-NEXT: // %bb.5: // %test6
184+
; CHECK-NEXT: add w9, w9, #5 // =5
185+
; CHECK-NEXT: str w9, [x8]
186+
; CHECK-NEXT: .LBB5_6: // %ret
187+
; CHECK-NEXT: ret
109188
%val = load i32, i32* @var_i32
110189
%val2 = load i32, i32* @var2_i32
111190

112-
; CHECK: cmp {{w[0-9]+}}, #4095
113-
; CHECK: b.ne [[RET:.?LBB[0-9]+_[0-9]+]]
114191
%cmp_pos_small = icmp ne i32 %val, 4095
115192
br i1 %cmp_pos_small, label %ret, label %test2
116193

117194
test2:
118-
; CHECK: cmp {{w[0-9]+}}, {{#3567, lsl #12|#14610432}}
119-
; CHECK: b.lo [[RET]]
120195
%newval2 = add i32 %val, 1
121196
store i32 %newval2, i32* @var_i32
122197
%cmp_pos_big = icmp ult i32 %val2, 14610432
123198
br i1 %cmp_pos_big, label %ret, label %test3
124199

125200
test3:
126-
; CHECK: cmp {{w[0-9]+}}, #123
127-
; CHECK: b.lt [[RET]]
128201
%newval3 = add i32 %val, 2
129202
store i32 %newval3, i32* @var_i32
130203
%cmp_pos_slt = icmp slt i32 %val, 123
131204
br i1 %cmp_pos_slt, label %ret, label %test4
132205

133206
test4:
134-
; CHECK: cmp {{w[0-9]+}}, #321
135-
; CHECK: b.gt [[RET]]
136207
%newval4 = add i32 %val, 3
137208
store i32 %newval4, i32* @var_i32
138209
%cmp_pos_sgt = icmp sgt i32 %val2, 321
139210
br i1 %cmp_pos_sgt, label %ret, label %test5
140211

141212
test5:
142-
; CHECK: cmn {{w[0-9]+}}, #444
143-
; CHECK: b.gt [[RET]]
144213
%newval5 = add i32 %val, 4
145214
store i32 %newval5, i32* @var_i32
146215
%cmp_neg_uge = icmp sgt i32 %val2, -444

llvm/test/CodeGen/AArch64/branch-relax-alignment.ll

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc -mtriple=aarch64-apple-darwin -aarch64-bcc-offset-bits=4 -align-all-nofallthru-blocks=4 < %s | FileCheck %s
23

34
; Long branch is assumed because the block has a higher alignment
45
; requirement than the function.
56

6-
; CHECK-LABEL: invert_bcc_block_align_higher_func:
7-
; CHECK: b.eq [[JUMP_BB1:LBB[0-9]+_[0-9]+]]
8-
; CHECK-NEXT: b [[JUMP_BB2:LBB[0-9]+_[0-9]+]]
9-
10-
; CHECK: [[JUMP_BB1]]:
11-
; CHECK: ret
12-
; CHECK: .p2align 4
13-
14-
; CHECK: [[JUMP_BB2]]:
15-
; CHECK: ret
167
define i32 @invert_bcc_block_align_higher_func(i32 %x, i32 %y) align 4 #0 {
8+
; CHECK-LABEL: invert_bcc_block_align_higher_func:
9+
; CHECK: ; %bb.0:
10+
; CHECK-NEXT: cmp w0, w1
11+
; CHECK-NEXT: b.eq LBB0_1
12+
; CHECK-NEXT: b LBB0_2
13+
; CHECK-NEXT: LBB0_1: ; %bb1
14+
; CHECK-NEXT: mov w8, #42
15+
; CHECK-NEXT: mov w0, wzr
16+
; CHECK-NEXT: str w8, [x8]
17+
; CHECK-NEXT: ret
18+
; CHECK-NEXT: .p2align 4
19+
; CHECK-NEXT: LBB0_2: ; %bb2
20+
; CHECK-NEXT: mov w8, #9
21+
; CHECK-NEXT: mov w0, #1
22+
; CHECK-NEXT: str w8, [x8]
23+
; CHECK-NEXT: ret
1724
%1 = icmp eq i32 %x, %y
1825
br i1 %1, label %bb1, label %bb2
1926

llvm/test/CodeGen/AArch64/branch-relax-bcc.ll

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc -mtriple=aarch64-apple-darwin -aarch64-bcc-offset-bits=3 < %s | FileCheck %s
23

3-
; CHECK-LABEL: invert_bcc:
4-
; CHECK: fcmp s0, s1
5-
; CHECK-NEXT: b.ne [[JUMP_BB1:LBB[0-9]+_[0-9]+]]
6-
; CHECK-NEXT: b [[BB1:LBB[0-9]+_[0-9]+]]
7-
8-
; CHECK-NEXT: [[JUMP_BB1]]:
9-
; CHECK-NEXT: b.vc [[BB2:LBB[0-9]+_[0-9]+]]
10-
; CHECK-NEXT: b [[BB1]]
11-
12-
; CHECK: [[BB2]]: ; %bb2
13-
; CHECK: mov w{{[0-9]+}}, #9
14-
; CHECK: ret
15-
16-
; CHECK: [[BB1]]: ; %bb1
17-
; CHECK: mov w{{[0-9]+}}, #42
18-
; CHECK: ret
19-
204
define i32 @invert_bcc(float %x, float %y) #0 {
5+
; CHECK-LABEL: invert_bcc:
6+
; CHECK: ; %bb.0:
7+
; CHECK-NEXT: fcmp s0, s1
8+
; CHECK-NEXT: b.ne LBB0_3
9+
; CHECK-NEXT: b LBB0_2
10+
; CHECK-NEXT: LBB0_3:
11+
; CHECK-NEXT: b.vc LBB0_1
12+
; CHECK-NEXT: b LBB0_2
13+
; CHECK-NEXT: LBB0_1: ; %bb2
14+
; CHECK-NEXT: mov w8, #9
15+
; CHECK-NEXT: mov w0, #1
16+
; CHECK-NEXT: ; InlineAsm Start
17+
; CHECK-NEXT: nop
18+
; CHECK-NEXT: nop
19+
; CHECK-NEXT: ; InlineAsm End
20+
; CHECK-NEXT: str w8, [x8]
21+
; CHECK-NEXT: ret
22+
; CHECK-NEXT: LBB0_2: ; %bb1
23+
; CHECK-NEXT: mov w8, #42
24+
; CHECK-NEXT: mov w0, wzr
25+
; CHECK-NEXT: str w8, [x8]
26+
; CHECK-NEXT: ret
2127
%1 = fcmp ueq float %x, %y
2228
br i1 %1, label %bb1, label %bb2
2329

@@ -36,24 +42,26 @@ bb1:
3642

3743
declare i32 @foo() #0
3844

39-
; CHECK-LABEL: _block_split:
40-
; CHECK: cmp w0, #5
41-
; CHECK-NEXT: b.ne [[LOR_LHS_FALSE_BB:LBB[0-9]+_[0-9]+]]
42-
; CHECK-NEXT: b [[IF_THEN_BB:LBB[0-9]+_[0-9]+]]
43-
44-
; CHECK: [[LOR_LHS_FALSE_BB]]:
45-
; CHECK: cmp w{{[0-9]+}}, #16
46-
; CHECK-NEXT: b.le [[IF_THEN_BB]]
47-
; CHECK-NEXT: b [[IF_END_BB:LBB[0-9]+_[0-9]+]]
48-
49-
; CHECK: [[IF_THEN_BB]]:
50-
; CHECK: bl _foo
51-
; CHECK-NOT: b L
52-
53-
; CHECK: [[IF_END_BB]]:
54-
; CHECK: mov{{.*}}, #7
55-
; CHECK: ret
5645
define i32 @block_split(i32 %a, i32 %b) #0 {
46+
; CHECK-LABEL: block_split:
47+
; CHECK: ; %bb.0: ; %entry
48+
; CHECK-NEXT: cmp w0, #5 ; =5
49+
; CHECK-NEXT: b.ne LBB1_1
50+
; CHECK-NEXT: b LBB1_2
51+
; CHECK-NEXT: LBB1_1: ; %lor.lhs.false
52+
; CHECK-NEXT: lsl w8, w1, #1
53+
; CHECK-NEXT: cmp w1, #7 ; =7
54+
; CHECK-NEXT: csinc w8, w8, w1, lt
55+
; CHECK-NEXT: cmp w8, #16 ; =16
56+
; CHECK-NEXT: b.le LBB1_2
57+
; CHECK-NEXT: b LBB1_3
58+
; CHECK-NEXT: LBB1_2: ; %if.then
59+
; CHECK-NEXT: stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
60+
; CHECK-NEXT: bl _foo
61+
; CHECK-NEXT: ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
62+
; CHECK-NEXT: LBB1_3: ; %if.end
63+
; CHECK-NEXT: mov w0, #7
64+
; CHECK-NEXT: ret
5765
entry:
5866
%cmp = icmp eq i32 %a, 5
5967
br i1 %cmp, label %if.then, label %lor.lhs.false

0 commit comments

Comments
 (0)