11; 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 \
33; RUN: | FileCheck %s
44
55; NDS.BBC
@@ -8,15 +8,14 @@ define i32 @bbc(i32 %a) nounwind {
88; CHECK-LABEL: bbc:
99; CHECK: # %bb.0:
1010; 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
1612; CHECK-NEXT: li a0, 1
13+ ; CHECK-NEXT: ret
14+ ; CHECK-NEXT: .LBB0_2: # %f
15+ ; CHECK-NEXT: li a0, 0
1716; CHECK-NEXT: ret
1817 %and = and i32 %a , 65536
19- %tst = icmp eq i32 %and , 0
18+ %tst = icmp ne i32 %and , 0
2019 br i1 %tst , label %t , label %f
2120f:
2221 ret i32 0
2726define i32 @select_bbc (i32 %a , i32 %b , i32 %c ) nounwind {
2827; CHECK-LABEL: select_bbc:
2928; 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
3329; CHECK-NEXT: nds.bbc a0, 16, .LBB1_2
3430; 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
3732; 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
4034; CHECK-NEXT: ret
4135 %and = and i32 %a , 65536
4236 %tst = icmp eq i32 %and , 0
@@ -50,15 +44,14 @@ define i32 @bbs(i32 %a) nounwind {
5044; CHECK-LABEL: bbs:
5145; CHECK: # %bb.0:
5246; 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
5848; CHECK-NEXT: li a0, 1
49+ ; CHECK-NEXT: ret
50+ ; CHECK-NEXT: .LBB2_2: # %f
51+ ; CHECK-NEXT: li a0, 0
5952; CHECK-NEXT: ret
6053 %and = and i32 %a , 65536
61- %tst = icmp ne i32 %and , 0
54+ %tst = icmp eq i32 %and , 0
6255 br i1 %tst , label %t , label %f
6356f:
6457 ret i32 0
6962define i32 @select_bbs (i32 %a , i32 %b , i32 %c ) nounwind {
7063; CHECK-LABEL: select_bbs:
7164; 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
7565; CHECK-NEXT: nds.bbs a0, 16, .LBB3_2
7666; 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
7968; 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
8270; CHECK-NEXT: ret
8371 %and = and i32 %a , 65536
8472 %tst = icmp ne i32 %and , 0
@@ -92,14 +80,13 @@ define i32 @beqc(i32 %a) nounwind {
9280; CHECK-LABEL: beqc:
9381; CHECK: # %bb.0:
9482; 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
10084; CHECK-NEXT: li a0, 1
10185; 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
10390 br i1 %tst , label %t , label %f
10491f:
10592 ret i32 0
11097define i32 @select_beqc (i32 %a , i32 %b , i32 %c ) nounwind {
11198; CHECK-LABEL: select_beqc:
11299; 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
116100; CHECK-NEXT: nds.beqc a0, 5, .LBB5_2
117101; 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
120103; 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
123105; CHECK-NEXT: ret
124106 %tst = icmp eq i32 %a , 5
125107 %ret = select i1 %tst , i32 %b , i32 %c
@@ -132,14 +114,13 @@ define i32 @bnec(i32 %a) nounwind {
132114; CHECK-LABEL: bnec:
133115; CHECK: # %bb.0:
134116; 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
140118; CHECK-NEXT: li a0, 1
141119; 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
143124 br i1 %tst , label %t , label %f
144125f:
145126 ret i32 0
150131define i32 @select_bnec (i32 %a , i32 %b , i32 %c ) nounwind {
151132; CHECK-LABEL: select_bnec:
152133; 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
156134; CHECK-NEXT: nds.bnec a0, 5, .LBB7_2
157135; 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
160137; 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
163139; CHECK-NEXT: ret
164140 %tst = icmp ne i32 %a , 5
165141 %ret = select i1 %tst , i32 %b , i32 %c
@@ -182,7 +158,6 @@ define i32 @bfoz_from_and_i32(i32 %x) {
182158define i64 @bfoz_from_and_i64 (i64 %x ) {
183159; CHECK-LABEL: bfoz_from_and_i64:
184160; CHECK: # %bb.0:
185- ; CHECK-NEXT: # kill: def $x11 killed $x10
186161; CHECK-NEXT: nds.bfoz a0, a0, 11, 0
187162; CHECK-NEXT: li a1, 0
188163; CHECK-NEXT: ret
@@ -203,7 +178,6 @@ define i32 @bfoz_from_and_lshr_i32(i32 %x) {
203178define i64 @bfoz_from_and_lshr_i64 (i64 %x ) {
204179; CHECK-LABEL: bfoz_from_and_lshr_i64:
205180; CHECK: # %bb.0:
206- ; CHECK-NEXT: # kill: def $x12 killed $x11
207181; CHECK-NEXT: nds.bfoz a0, a1, 25, 14
208182; CHECK-NEXT: li a1, 0
209183; CHECK-NEXT: ret
@@ -225,8 +199,6 @@ define i32 @bfoz_from_lshr_and_i32(i32 %x) {
225199define i64 @bfoz_from_lshr_and_i64 (i64 %x ) {
226200; CHECK-LABEL: bfoz_from_lshr_and_i64:
227201; CHECK: # %bb.0:
228- ; CHECK-NEXT: # kill: def $x12 killed $x11
229- ; CHECK-NEXT: # kill: def $x12 killed $x10
230202; CHECK-NEXT: andi a1, a1, 15
231203; CHECK-NEXT: srli a0, a0, 24
232204; CHECK-NEXT: slli a1, a1, 8
@@ -299,7 +271,6 @@ define i32 @bfos_from_ashr_shl_i32(i32 %x) {
299271define i32 @bfos_from_ashr_sexti8_i32 (i8 %x ) {
300272; CHECK-LABEL: bfos_from_ashr_sexti8_i32:
301273; CHECK: # %bb.0:
302- ; CHECK-NEXT: # kill: def $x11 killed $x10
303274; CHECK-NEXT: nds.bfos a0, a0, 7, 5
304275; CHECK-NEXT: ret
305276 %sext = sext i8 %x to i32
@@ -310,7 +281,6 @@ define i32 @bfos_from_ashr_sexti8_i32(i8 %x) {
310281define i32 @bfos_from_ashr_sexti16_i32 (i16 %x ) {
311282; CHECK-LABEL: bfos_from_ashr_sexti16_i32:
312283; CHECK: # %bb.0:
313- ; CHECK-NEXT: # kill: def $x11 killed $x10
314284; CHECK-NEXT: nds.bfos a0, a0, 15, 11
315285; CHECK-NEXT: ret
316286 %sext = sext i16 %x to i32
@@ -357,7 +327,6 @@ define i32 @sexti1_i32(i32 %a) {
357327define i32 @sexti1_i32_2 (i1 %a ) {
358328; CHECK-LABEL: sexti1_i32_2:
359329; CHECK: # %bb.0:
360- ; CHECK-NEXT: # kill: def $x11 killed $x10
361330; CHECK-NEXT: nds.bfos a0, a0, 0, 0
362331; CHECK-NEXT: ret
363332 %1 = sext i1 %a to i32
@@ -390,7 +359,6 @@ define i32 @sexti8_i32(i32 %a) {
390359define i32 @sexti8_i32_2 (i8 %a ) {
391360; CHECK-LABEL: sexti8_i32_2:
392361; CHECK: # %bb.0:
393- ; CHECK-NEXT: # kill: def $x11 killed $x10
394362; CHECK-NEXT: nds.bfos a0, a0, 7, 0
395363; CHECK-NEXT: ret
396364 %1 = sext i8 %a to i32
@@ -410,7 +378,6 @@ define i32 @sexti16_i32(i32 %a) {
410378define i32 @sexti16_i32_2 (i16 %a ) {
411379; CHECK-LABEL: sexti16_i32_2:
412380; CHECK: # %bb.0:
413- ; CHECK-NEXT: # kill: def $x11 killed $x10
414381; CHECK-NEXT: nds.bfos a0, a0, 15, 0
415382; CHECK-NEXT: ret
416383 %1 = sext i16 %a to i32
@@ -420,9 +387,8 @@ define i32 @sexti16_i32_2(i16 %a) {
420387define i64 @sexti1_i64 (i64 %a ) {
421388; CHECK-LABEL: sexti1_i64:
422389; 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
426392; CHECK-NEXT: ret
427393 %shl = shl i64 %a , 63
428394 %shr = ashr exact i64 %shl , 63
@@ -432,9 +398,8 @@ define i64 @sexti1_i64(i64 %a) {
432398define i64 @sexti1_i64_2 (i1 %a ) {
433399; CHECK-LABEL: sexti1_i64_2:
434400; 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
438403; CHECK-NEXT: ret
439404 %1 = sext i1 %a to i64
440405 ret i64 %1
@@ -443,7 +408,6 @@ define i64 @sexti1_i64_2(i1 %a) {
443408define i64 @sexti8_i64 (i64 %a ) {
444409; CHECK-LABEL: sexti8_i64:
445410; CHECK: # %bb.0:
446- ; CHECK-NEXT: # kill: def $x11 killed $x10
447411; CHECK-NEXT: nds.bfos a0, a0, 7, 0
448412; CHECK-NEXT: srai a1, a0, 31
449413; CHECK-NEXT: ret
@@ -455,7 +419,6 @@ define i64 @sexti8_i64(i64 %a) {
455419define i64 @sexti8_i64_2 (i8 %a ) {
456420; CHECK-LABEL: sexti8_i64_2:
457421; CHECK: # %bb.0:
458- ; CHECK-NEXT: # kill: def $x11 killed $x10
459422; CHECK-NEXT: nds.bfos a0, a0, 7, 0
460423; CHECK-NEXT: srai a1, a0, 31
461424; CHECK-NEXT: ret
@@ -466,7 +429,6 @@ define i64 @sexti8_i64_2(i8 %a) {
466429define i64 @sexti16_i64 (i64 %a ) {
467430; CHECK-LABEL: sexti16_i64:
468431; CHECK: # %bb.0:
469- ; CHECK-NEXT: # kill: def $x11 killed $x10
470432; CHECK-NEXT: nds.bfos a0, a0, 15, 0
471433; CHECK-NEXT: srai a1, a0, 31
472434; CHECK-NEXT: ret
@@ -478,7 +440,6 @@ define i64 @sexti16_i64(i64 %a) {
478440define i64 @sexti16_i64_2 (i16 %a ) {
479441; CHECK-LABEL: sexti16_i64_2:
480442; CHECK: # %bb.0:
481- ; CHECK-NEXT: # kill: def $x11 killed $x10
482443; CHECK-NEXT: nds.bfos a0, a0, 15, 0
483444; CHECK-NEXT: srai a1, a0, 31
484445; CHECK-NEXT: ret
@@ -489,7 +450,6 @@ define i64 @sexti16_i64_2(i16 %a) {
489450define i64 @sexti32_i64 (i64 %a ) {
490451; CHECK-LABEL: sexti32_i64:
491452; CHECK: # %bb.0:
492- ; CHECK-NEXT: # kill: def $x11 killed $x10
493453; CHECK-NEXT: srai a1, a0, 31
494454; CHECK-NEXT: ret
495455 %shl = shl i64 %a , 32
0 commit comments