Skip to content

Commit d156b85

Browse files
[RISCV] Precommit test for llvm#124932
Signed-off-by: Mikhail R. Gadelha <[email protected]>
1 parent d194c6b commit d156b85

File tree

1 file changed

+124
-0
lines changed

1 file changed

+124
-0
lines changed

llvm/test/CodeGen/RISCV/ipra.ll

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=riscv64 -verify-machineinstrs -enable-ipra < %s | FileCheck %s -check-prefix=RV64
3+
; RUN: llc -mtriple=riscv32 -verify-machineinstrs -enable-ipra < %s | FileCheck %s -check-prefix=RV32
4+
; RUN: llc -mtriple=riscv64 -verify-machineinstrs -frame-pointer=all -enable-ipra < %s \
5+
; RUN: | FileCheck %s -check-prefix=RV64-WITHFP
6+
; RUN: llc -mtriple=riscv32 -verify-machineinstrs -frame-pointer=all -enable-ipra < %s \
7+
; RUN: | FileCheck %s -check-prefix=RV32-WITHFP
8+
9+
%struct.bitmap_iterator = type { ptr, ptr, i32, i64 }
10+
11+
define i32 @main() nounwind {
12+
; RV64-LABEL: main:
13+
; RV64: # %bb.0: # %entry
14+
; RV64-NEXT: addi sp, sp, -16
15+
; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
16+
; RV64-NEXT: li a0, 0
17+
; RV64-NEXT: call foobar
18+
; RV64-NEXT: li a0, 0
19+
; RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
20+
; RV64-NEXT: addi sp, sp, 16
21+
; RV64-NEXT: ret
22+
;
23+
; RV32-LABEL: main:
24+
; RV32: # %bb.0: # %entry
25+
; RV32-NEXT: addi sp, sp, -16
26+
; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
27+
; RV32-NEXT: li a0, 0
28+
; RV32-NEXT: call foobar
29+
; RV32-NEXT: li a0, 0
30+
; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
31+
; RV32-NEXT: addi sp, sp, 16
32+
; RV32-NEXT: ret
33+
;
34+
; RV64-WITHFP-LABEL: main:
35+
; RV64-WITHFP: # %bb.0: # %entry
36+
; RV64-WITHFP-NEXT: addi sp, sp, -16
37+
; RV64-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
38+
; RV64-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill
39+
; RV64-WITHFP-NEXT: addi s0, sp, 16
40+
; RV64-WITHFP-NEXT: li a0, 0
41+
; RV64-WITHFP-NEXT: call foobar
42+
; RV64-WITHFP-NEXT: li a0, 0
43+
; RV64-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
44+
; RV64-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload
45+
; RV64-WITHFP-NEXT: addi sp, sp, 16
46+
; RV64-WITHFP-NEXT: ret
47+
;
48+
; RV32-WITHFP-LABEL: main:
49+
; RV32-WITHFP: # %bb.0: # %entry
50+
; RV32-WITHFP-NEXT: addi sp, sp, -16
51+
; RV32-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
52+
; RV32-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
53+
; RV32-WITHFP-NEXT: addi s0, sp, 16
54+
; RV32-WITHFP-NEXT: li a0, 0
55+
; RV32-WITHFP-NEXT: call foobar
56+
; RV32-WITHFP-NEXT: li a0, 0
57+
; RV32-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
58+
; RV32-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
59+
; RV32-WITHFP-NEXT: addi sp, sp, 16
60+
; RV32-WITHFP-NEXT: ret
61+
entry:
62+
call void @foobar(ptr null)
63+
ret i32 0
64+
}
65+
66+
; FIXME: this function calls another function but doesn't save/restore ra
67+
define internal void @foobar(ptr %live_throughout.0.val) norecurse nounwind {
68+
; RV64-LABEL: foobar:
69+
; RV64: # %bb.0: # %entry
70+
; RV64-NEXT: addi sp, sp, -48
71+
; RV64-NEXT: mv a1, a0
72+
; RV64-NEXT: addi a0, sp, 16
73+
; RV64-NEXT: addi a2, sp, 12
74+
; RV64-NEXT: call bmp_iter_set_init
75+
; RV64-NEXT: addi sp, sp, 48
76+
; RV64-NEXT: ret
77+
;
78+
; RV32-LABEL: foobar:
79+
; RV32: # %bb.0: # %entry
80+
; RV32-NEXT: addi sp, sp, -32
81+
; RV32-NEXT: mv a1, a0
82+
; RV32-NEXT: addi a0, sp, 8
83+
; RV32-NEXT: addi a2, sp, 4
84+
; RV32-NEXT: call bmp_iter_set_init
85+
; RV32-NEXT: addi sp, sp, 32
86+
; RV32-NEXT: ret
87+
;
88+
; RV64-WITHFP-LABEL: foobar:
89+
; RV64-WITHFP: # %bb.0: # %entry
90+
; RV64-WITHFP-NEXT: addi sp, sp, -64
91+
; RV64-WITHFP-NEXT: sd ra, 56(sp) # 8-byte Folded Spill
92+
; RV64-WITHFP-NEXT: sd s0, 48(sp) # 8-byte Folded Spill
93+
; RV64-WITHFP-NEXT: addi s0, sp, 64
94+
; RV64-WITHFP-NEXT: mv a1, a0
95+
; RV64-WITHFP-NEXT: addi a0, s0, -48
96+
; RV64-WITHFP-NEXT: addi a2, s0, -52
97+
; RV64-WITHFP-NEXT: call bmp_iter_set_init
98+
; RV64-WITHFP-NEXT: ld ra, 56(sp) # 8-byte Folded Reload
99+
; RV64-WITHFP-NEXT: ld s0, 48(sp) # 8-byte Folded Reload
100+
; RV64-WITHFP-NEXT: addi sp, sp, 64
101+
; RV64-WITHFP-NEXT: ret
102+
;
103+
; RV32-WITHFP-LABEL: foobar:
104+
; RV32-WITHFP: # %bb.0: # %entry
105+
; RV32-WITHFP-NEXT: addi sp, sp, -48
106+
; RV32-WITHFP-NEXT: sw ra, 44(sp) # 4-byte Folded Spill
107+
; RV32-WITHFP-NEXT: sw s0, 40(sp) # 4-byte Folded Spill
108+
; RV32-WITHFP-NEXT: addi s0, sp, 48
109+
; RV32-WITHFP-NEXT: mv a1, a0
110+
; RV32-WITHFP-NEXT: addi a0, s0, -32
111+
; RV32-WITHFP-NEXT: addi a2, s0, -36
112+
; RV32-WITHFP-NEXT: call bmp_iter_set_init
113+
; RV32-WITHFP-NEXT: lw ra, 44(sp) # 4-byte Folded Reload
114+
; RV32-WITHFP-NEXT: lw s0, 40(sp) # 4-byte Folded Reload
115+
; RV32-WITHFP-NEXT: addi sp, sp, 48
116+
; RV32-WITHFP-NEXT: ret
117+
entry:
118+
%rsi = alloca %struct.bitmap_iterator, align 8
119+
%regno = alloca i32, i32 0, align 4
120+
call void @bmp_iter_set_init(ptr %rsi, ptr %live_throughout.0.val, ptr %regno)
121+
ret void
122+
}
123+
124+
declare void @bmp_iter_set_init(ptr, ptr, ptr)

0 commit comments

Comments
 (0)