1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc -O0 - mtriple=riscv32 -mattr=+xandesperf -verify-machineinstrs < %s \
2
+ ; RUN: llc -mtriple=riscv32 -mattr=+xandesperf -verify-machineinstrs < %s \
3
3
; RUN: | FileCheck %s
4
4
5
5
; NDS.BBC
@@ -8,15 +8,14 @@ define i32 @bbc(i32 %a) nounwind {
8
8
; CHECK-LABEL: bbc:
9
9
; CHECK: # %bb.0:
10
10
; CHECK-NEXT: nds.bbc a0, 16, .LBB0_2
11
- ; CHECK-NEXT: j .LBB0_1
12
- ; CHECK-NEXT: .LBB0_1: # %f
13
- ; CHECK-NEXT: li a0, 0
14
- ; CHECK-NEXT: ret
15
- ; CHECK-NEXT: .LBB0_2: # %t
11
+ ; CHECK-NEXT: # %bb.1: # %t
16
12
; CHECK-NEXT: li a0, 1
13
+ ; CHECK-NEXT: ret
14
+ ; CHECK-NEXT: .LBB0_2: # %f
15
+ ; CHECK-NEXT: li a0, 0
17
16
; CHECK-NEXT: ret
18
17
%and = and i32 %a , 65536
19
- %tst = icmp eq i32 %and , 0
18
+ %tst = icmp ne i32 %and , 0
20
19
br i1 %tst , label %t , label %f
21
20
f:
22
21
ret i32 0
27
26
define i32 @select_bbc (i32 %a , i32 %b , i32 %c ) nounwind {
28
27
; CHECK-LABEL: select_bbc:
29
28
; CHECK: # %bb.0:
30
- ; CHECK-NEXT: addi sp, sp, -16
31
- ; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
32
- ; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
33
29
; CHECK-NEXT: nds.bbc a0, 16, .LBB1_2
34
30
; CHECK-NEXT: # %bb.1:
35
- ; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
36
- ; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
31
+ ; CHECK-NEXT: mv a1, a2
37
32
; CHECK-NEXT: .LBB1_2:
38
- ; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
39
- ; CHECK-NEXT: addi sp, sp, 16
33
+ ; CHECK-NEXT: mv a0, a1
40
34
; CHECK-NEXT: ret
41
35
%and = and i32 %a , 65536
42
36
%tst = icmp eq i32 %and , 0
@@ -50,15 +44,14 @@ define i32 @bbs(i32 %a) nounwind {
50
44
; CHECK-LABEL: bbs:
51
45
; CHECK: # %bb.0:
52
46
; CHECK-NEXT: nds.bbs a0, 16, .LBB2_2
53
- ; CHECK-NEXT: j .LBB2_1
54
- ; CHECK-NEXT: .LBB2_1: # %f
55
- ; CHECK-NEXT: li a0, 0
56
- ; CHECK-NEXT: ret
57
- ; CHECK-NEXT: .LBB2_2: # %t
47
+ ; CHECK-NEXT: # %bb.1: # %t
58
48
; CHECK-NEXT: li a0, 1
49
+ ; CHECK-NEXT: ret
50
+ ; CHECK-NEXT: .LBB2_2: # %f
51
+ ; CHECK-NEXT: li a0, 0
59
52
; CHECK-NEXT: ret
60
53
%and = and i32 %a , 65536
61
- %tst = icmp ne i32 %and , 0
54
+ %tst = icmp eq i32 %and , 0
62
55
br i1 %tst , label %t , label %f
63
56
f:
64
57
ret i32 0
69
62
define i32 @select_bbs (i32 %a , i32 %b , i32 %c ) nounwind {
70
63
; CHECK-LABEL: select_bbs:
71
64
; CHECK: # %bb.0:
72
- ; CHECK-NEXT: addi sp, sp, -16
73
- ; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
74
- ; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
75
65
; CHECK-NEXT: nds.bbs a0, 16, .LBB3_2
76
66
; CHECK-NEXT: # %bb.1:
77
- ; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
78
- ; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
67
+ ; CHECK-NEXT: mv a1, a2
79
68
; CHECK-NEXT: .LBB3_2:
80
- ; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
81
- ; CHECK-NEXT: addi sp, sp, 16
69
+ ; CHECK-NEXT: mv a0, a1
82
70
; CHECK-NEXT: ret
83
71
%and = and i32 %a , 65536
84
72
%tst = icmp ne i32 %and , 0
@@ -92,14 +80,13 @@ define i32 @beqc(i32 %a) nounwind {
92
80
; CHECK-LABEL: beqc:
93
81
; CHECK: # %bb.0:
94
82
; CHECK-NEXT: nds.beqc a0, 5, .LBB4_2
95
- ; CHECK-NEXT: j .LBB4_1
96
- ; CHECK-NEXT: .LBB4_1: # %f
97
- ; CHECK-NEXT: li a0, 0
98
- ; CHECK-NEXT: ret
99
- ; CHECK-NEXT: .LBB4_2: # %t
83
+ ; CHECK-NEXT: # %bb.1: # %t
100
84
; CHECK-NEXT: li a0, 1
101
85
; CHECK-NEXT: ret
102
- %tst = icmp eq i32 %a , 5
86
+ ; CHECK-NEXT: .LBB4_2: # %f
87
+ ; CHECK-NEXT: li a0, 0
88
+ ; CHECK-NEXT: ret
89
+ %tst = icmp ne i32 %a , 5
103
90
br i1 %tst , label %t , label %f
104
91
f:
105
92
ret i32 0
110
97
define i32 @select_beqc (i32 %a , i32 %b , i32 %c ) nounwind {
111
98
; CHECK-LABEL: select_beqc:
112
99
; CHECK: # %bb.0:
113
- ; CHECK-NEXT: addi sp, sp, -16
114
- ; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
115
- ; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
116
100
; CHECK-NEXT: nds.beqc a0, 5, .LBB5_2
117
101
; CHECK-NEXT: # %bb.1:
118
- ; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
119
- ; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
102
+ ; CHECK-NEXT: mv a1, a2
120
103
; CHECK-NEXT: .LBB5_2:
121
- ; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
122
- ; CHECK-NEXT: addi sp, sp, 16
104
+ ; CHECK-NEXT: mv a0, a1
123
105
; CHECK-NEXT: ret
124
106
%tst = icmp eq i32 %a , 5
125
107
%ret = select i1 %tst , i32 %b , i32 %c
@@ -132,14 +114,13 @@ define i32 @bnec(i32 %a) nounwind {
132
114
; CHECK-LABEL: bnec:
133
115
; CHECK: # %bb.0:
134
116
; CHECK-NEXT: nds.bnec a0, 5, .LBB6_2
135
- ; CHECK-NEXT: j .LBB6_1
136
- ; CHECK-NEXT: .LBB6_1: # %f
137
- ; CHECK-NEXT: li a0, 0
138
- ; CHECK-NEXT: ret
139
- ; CHECK-NEXT: .LBB6_2: # %t
117
+ ; CHECK-NEXT: # %bb.1: # %t
140
118
; CHECK-NEXT: li a0, 1
141
119
; CHECK-NEXT: ret
142
- %tst = icmp ne i32 %a , 5
120
+ ; CHECK-NEXT: .LBB6_2: # %f
121
+ ; CHECK-NEXT: li a0, 0
122
+ ; CHECK-NEXT: ret
123
+ %tst = icmp eq i32 %a , 5
143
124
br i1 %tst , label %t , label %f
144
125
f:
145
126
ret i32 0
150
131
define i32 @select_bnec (i32 %a , i32 %b , i32 %c ) nounwind {
151
132
; CHECK-LABEL: select_bnec:
152
133
; CHECK: # %bb.0:
153
- ; CHECK-NEXT: addi sp, sp, -16
154
- ; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
155
- ; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
156
134
; CHECK-NEXT: nds.bnec a0, 5, .LBB7_2
157
135
; CHECK-NEXT: # %bb.1:
158
- ; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
159
- ; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
136
+ ; CHECK-NEXT: mv a1, a2
160
137
; CHECK-NEXT: .LBB7_2:
161
- ; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
162
- ; CHECK-NEXT: addi sp, sp, 16
138
+ ; CHECK-NEXT: mv a0, a1
163
139
; CHECK-NEXT: ret
164
140
%tst = icmp ne i32 %a , 5
165
141
%ret = select i1 %tst , i32 %b , i32 %c
@@ -182,7 +158,6 @@ define i32 @bfoz_from_and_i32(i32 %x) {
182
158
define i64 @bfoz_from_and_i64 (i64 %x ) {
183
159
; CHECK-LABEL: bfoz_from_and_i64:
184
160
; CHECK: # %bb.0:
185
- ; CHECK-NEXT: # kill: def $x11 killed $x10
186
161
; CHECK-NEXT: nds.bfoz a0, a0, 11, 0
187
162
; CHECK-NEXT: li a1, 0
188
163
; CHECK-NEXT: ret
@@ -203,7 +178,6 @@ define i32 @bfoz_from_and_lshr_i32(i32 %x) {
203
178
define i64 @bfoz_from_and_lshr_i64 (i64 %x ) {
204
179
; CHECK-LABEL: bfoz_from_and_lshr_i64:
205
180
; CHECK: # %bb.0:
206
- ; CHECK-NEXT: # kill: def $x12 killed $x11
207
181
; CHECK-NEXT: nds.bfoz a0, a1, 25, 14
208
182
; CHECK-NEXT: li a1, 0
209
183
; CHECK-NEXT: ret
@@ -225,8 +199,6 @@ define i32 @bfoz_from_lshr_and_i32(i32 %x) {
225
199
define i64 @bfoz_from_lshr_and_i64 (i64 %x ) {
226
200
; CHECK-LABEL: bfoz_from_lshr_and_i64:
227
201
; CHECK: # %bb.0:
228
- ; CHECK-NEXT: # kill: def $x12 killed $x11
229
- ; CHECK-NEXT: # kill: def $x12 killed $x10
230
202
; CHECK-NEXT: andi a1, a1, 15
231
203
; CHECK-NEXT: srli a0, a0, 24
232
204
; CHECK-NEXT: slli a1, a1, 8
@@ -299,7 +271,6 @@ define i32 @bfos_from_ashr_shl_i32(i32 %x) {
299
271
define i32 @bfos_from_ashr_sexti8_i32 (i8 %x ) {
300
272
; CHECK-LABEL: bfos_from_ashr_sexti8_i32:
301
273
; CHECK: # %bb.0:
302
- ; CHECK-NEXT: # kill: def $x11 killed $x10
303
274
; CHECK-NEXT: nds.bfos a0, a0, 7, 5
304
275
; CHECK-NEXT: ret
305
276
%sext = sext i8 %x to i32
@@ -310,7 +281,6 @@ define i32 @bfos_from_ashr_sexti8_i32(i8 %x) {
310
281
define i32 @bfos_from_ashr_sexti16_i32 (i16 %x ) {
311
282
; CHECK-LABEL: bfos_from_ashr_sexti16_i32:
312
283
; CHECK: # %bb.0:
313
- ; CHECK-NEXT: # kill: def $x11 killed $x10
314
284
; CHECK-NEXT: nds.bfos a0, a0, 15, 11
315
285
; CHECK-NEXT: ret
316
286
%sext = sext i16 %x to i32
@@ -357,7 +327,6 @@ define i32 @sexti1_i32(i32 %a) {
357
327
define i32 @sexti1_i32_2 (i1 %a ) {
358
328
; CHECK-LABEL: sexti1_i32_2:
359
329
; CHECK: # %bb.0:
360
- ; CHECK-NEXT: # kill: def $x11 killed $x10
361
330
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
362
331
; CHECK-NEXT: ret
363
332
%1 = sext i1 %a to i32
@@ -390,7 +359,6 @@ define i32 @sexti8_i32(i32 %a) {
390
359
define i32 @sexti8_i32_2 (i8 %a ) {
391
360
; CHECK-LABEL: sexti8_i32_2:
392
361
; CHECK: # %bb.0:
393
- ; CHECK-NEXT: # kill: def $x11 killed $x10
394
362
; CHECK-NEXT: nds.bfos a0, a0, 7, 0
395
363
; CHECK-NEXT: ret
396
364
%1 = sext i8 %a to i32
@@ -410,7 +378,6 @@ define i32 @sexti16_i32(i32 %a) {
410
378
define i32 @sexti16_i32_2 (i16 %a ) {
411
379
; CHECK-LABEL: sexti16_i32_2:
412
380
; CHECK: # %bb.0:
413
- ; CHECK-NEXT: # kill: def $x11 killed $x10
414
381
; CHECK-NEXT: nds.bfos a0, a0, 15, 0
415
382
; CHECK-NEXT: ret
416
383
%1 = sext i16 %a to i32
@@ -420,9 +387,8 @@ define i32 @sexti16_i32_2(i16 %a) {
420
387
define i64 @sexti1_i64 (i64 %a ) {
421
388
; CHECK-LABEL: sexti1_i64:
422
389
; CHECK: # %bb.0:
423
- ; CHECK-NEXT: # kill: def $x11 killed $x10
424
- ; CHECK-NEXT: nds.bfos a1, a0, 0, 0
425
- ; CHECK-NEXT: mv a0, a1
390
+ ; CHECK-NEXT: nds.bfos a0, a0, 0, 0
391
+ ; CHECK-NEXT: mv a1, a0
426
392
; CHECK-NEXT: ret
427
393
%shl = shl i64 %a , 63
428
394
%shr = ashr exact i64 %shl , 63
@@ -432,9 +398,8 @@ define i64 @sexti1_i64(i64 %a) {
432
398
define i64 @sexti1_i64_2 (i1 %a ) {
433
399
; CHECK-LABEL: sexti1_i64_2:
434
400
; CHECK: # %bb.0:
435
- ; CHECK-NEXT: # kill: def $x11 killed $x10
436
- ; CHECK-NEXT: nds.bfos a1, a0, 0, 0
437
- ; CHECK-NEXT: mv a0, a1
401
+ ; CHECK-NEXT: nds.bfos a0, a0, 0, 0
402
+ ; CHECK-NEXT: mv a1, a0
438
403
; CHECK-NEXT: ret
439
404
%1 = sext i1 %a to i64
440
405
ret i64 %1
@@ -443,7 +408,6 @@ define i64 @sexti1_i64_2(i1 %a) {
443
408
define i64 @sexti8_i64 (i64 %a ) {
444
409
; CHECK-LABEL: sexti8_i64:
445
410
; CHECK: # %bb.0:
446
- ; CHECK-NEXT: # kill: def $x11 killed $x10
447
411
; CHECK-NEXT: nds.bfos a0, a0, 7, 0
448
412
; CHECK-NEXT: srai a1, a0, 31
449
413
; CHECK-NEXT: ret
@@ -455,7 +419,6 @@ define i64 @sexti8_i64(i64 %a) {
455
419
define i64 @sexti8_i64_2 (i8 %a ) {
456
420
; CHECK-LABEL: sexti8_i64_2:
457
421
; CHECK: # %bb.0:
458
- ; CHECK-NEXT: # kill: def $x11 killed $x10
459
422
; CHECK-NEXT: nds.bfos a0, a0, 7, 0
460
423
; CHECK-NEXT: srai a1, a0, 31
461
424
; CHECK-NEXT: ret
@@ -466,7 +429,6 @@ define i64 @sexti8_i64_2(i8 %a) {
466
429
define i64 @sexti16_i64 (i64 %a ) {
467
430
; CHECK-LABEL: sexti16_i64:
468
431
; CHECK: # %bb.0:
469
- ; CHECK-NEXT: # kill: def $x11 killed $x10
470
432
; CHECK-NEXT: nds.bfos a0, a0, 15, 0
471
433
; CHECK-NEXT: srai a1, a0, 31
472
434
; CHECK-NEXT: ret
@@ -478,7 +440,6 @@ define i64 @sexti16_i64(i64 %a) {
478
440
define i64 @sexti16_i64_2 (i16 %a ) {
479
441
; CHECK-LABEL: sexti16_i64_2:
480
442
; CHECK: # %bb.0:
481
- ; CHECK-NEXT: # kill: def $x11 killed $x10
482
443
; CHECK-NEXT: nds.bfos a0, a0, 15, 0
483
444
; CHECK-NEXT: srai a1, a0, 31
484
445
; CHECK-NEXT: ret
@@ -489,7 +450,6 @@ define i64 @sexti16_i64_2(i16 %a) {
489
450
define i64 @sexti32_i64 (i64 %a ) {
490
451
; CHECK-LABEL: sexti32_i64:
491
452
; CHECK: # %bb.0:
492
- ; CHECK-NEXT: # kill: def $x11 killed $x10
493
453
; CHECK-NEXT: srai a1, a0, 31
494
454
; CHECK-NEXT: ret
495
455
%shl = shl i64 %a , 32
0 commit comments