Skip to content

Commit 3610d97

Browse files
toppercmemfrob
authored andcommitted
[RISCV] Add test case for missed opportunity use bgez for the canonical form X > -1. NFC
1 parent 60be59e commit 3610d97

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

llvm/test/CodeGen/RISCV/branch.ll

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,45 @@ define void @foo(i32 %a, i32 *%b, i1 %c) nounwind {
66
; RV32I-LABEL: foo:
77
; RV32I: # %bb.0:
88
; RV32I-NEXT: lw a3, 0(a1)
9-
; RV32I-NEXT: beq a3, a0, .LBB0_12
9+
; RV32I-NEXT: beq a3, a0, .LBB0_13
1010
; RV32I-NEXT: # %bb.1: # %test2
1111
; RV32I-NEXT: lw a3, 0(a1)
12-
; RV32I-NEXT: bne a3, a0, .LBB0_12
12+
; RV32I-NEXT: bne a3, a0, .LBB0_13
1313
; RV32I-NEXT: # %bb.2: # %test3
1414
; RV32I-NEXT: lw a3, 0(a1)
15-
; RV32I-NEXT: blt a3, a0, .LBB0_12
15+
; RV32I-NEXT: blt a3, a0, .LBB0_13
1616
; RV32I-NEXT: # %bb.3: # %test4
1717
; RV32I-NEXT: lw a3, 0(a1)
18-
; RV32I-NEXT: bge a3, a0, .LBB0_12
18+
; RV32I-NEXT: bge a3, a0, .LBB0_13
1919
; RV32I-NEXT: # %bb.4: # %test5
2020
; RV32I-NEXT: lw a3, 0(a1)
21-
; RV32I-NEXT: bltu a3, a0, .LBB0_12
21+
; RV32I-NEXT: bltu a3, a0, .LBB0_13
2222
; RV32I-NEXT: # %bb.5: # %test6
2323
; RV32I-NEXT: lw a3, 0(a1)
24-
; RV32I-NEXT: bgeu a3, a0, .LBB0_12
24+
; RV32I-NEXT: bgeu a3, a0, .LBB0_13
2525
; RV32I-NEXT: # %bb.6: # %test7
2626
; RV32I-NEXT: lw a3, 0(a1)
27-
; RV32I-NEXT: blt a0, a3, .LBB0_12
27+
; RV32I-NEXT: blt a0, a3, .LBB0_13
2828
; RV32I-NEXT: # %bb.7: # %test8
2929
; RV32I-NEXT: lw a3, 0(a1)
30-
; RV32I-NEXT: bge a0, a3, .LBB0_12
30+
; RV32I-NEXT: bge a0, a3, .LBB0_13
3131
; RV32I-NEXT: # %bb.8: # %test9
3232
; RV32I-NEXT: lw a3, 0(a1)
33-
; RV32I-NEXT: bltu a0, a3, .LBB0_12
33+
; RV32I-NEXT: bltu a0, a3, .LBB0_13
3434
; RV32I-NEXT: # %bb.9: # %test10
3535
; RV32I-NEXT: lw a3, 0(a1)
36-
; RV32I-NEXT: bgeu a0, a3, .LBB0_12
36+
; RV32I-NEXT: bgeu a0, a3, .LBB0_13
3737
; RV32I-NEXT: # %bb.10: # %test11
3838
; RV32I-NEXT: lw a0, 0(a1)
3939
; RV32I-NEXT: andi a0, a2, 1
40-
; RV32I-NEXT: bnez a0, .LBB0_12
40+
; RV32I-NEXT: bnez a0, .LBB0_13
4141
; RV32I-NEXT: # %bb.11: # %test12
4242
; RV32I-NEXT: lw a0, 0(a1)
43-
; RV32I-NEXT: .LBB0_12: # %end
43+
; RV32I-NEXT: addi a2, zero, -1
44+
; RV32I-NEXT: blt a2, a0, .LBB0_13
45+
; RV32I-NEXT: # %bb.12: # %test13
46+
; RV32I-NEXT: lw a0, 0(a1)
47+
; RV32I-NEXT: .LBB0_13: # %end
4448
; RV32I-NEXT: ret
4549
%val1 = load volatile i32, i32* %b
4650
%tst1 = icmp eq i32 %val1, %a
@@ -100,8 +104,15 @@ test11:
100104
%val11 = load volatile i32, i32* %b
101105
br i1 %c, label %end, label %test12
102106

107+
; Check that we use bgez for X > -1 which is the canonical form.
108+
103109
test12:
104110
%val12 = load volatile i32, i32* %b
111+
%tst12 = icmp sgt i32 %val12, -1
112+
br i1 %tst12, label %end, label %test13
113+
114+
test13:
115+
%val13 = load volatile i32, i32* %b
105116
br label %end
106117

107118
end:

0 commit comments

Comments
 (0)