Skip to content

Commit 0265ba7

Browse files
committed
update test
1 parent 4eef19c commit 0265ba7

File tree

2 files changed

+91
-453
lines changed

2 files changed

+91
-453
lines changed

llvm/test/CodeGen/LoongArch/frame.ll

Lines changed: 91 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,42 @@
1-
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc --mtriple=loongarch64 -mattr=+d,-lsx < %s | FileCheck %s --check-prefixes=CHECK,NOLSX
3+
; RUN: llc --mtriple=loongarch64 -mattr=+d,+lsx < %s | FileCheck %s --check-prefixes=CHECK,LSX
34

45
%struct.key_t = type { i32, [16 x i8] }
56

67
declare void @llvm.memset.p0.i64(ptr, i8, i64, i1)
78
declare void @test1(ptr)
89

910
define i32 @test() nounwind {
10-
; CHECK-LABEL: test:
11-
; CHECK: # %bb.0:
12-
; CHECK-NEXT: addi.d $sp, $sp, -32
13-
; CHECK-NEXT: st.d $ra, $sp, 24 # 8-byte Folded Spill
14-
; CHECK-NEXT: st.w $zero, $sp, 16
15-
; CHECK-NEXT: vrepli.b $vr0, 0
16-
; CHECK-NEXT: vst $vr0, $sp, 0
17-
; CHECK-NEXT: addi.d $a0, $sp, 4
18-
; CHECK-NEXT: pcaddu18i $ra, %call36(test1)
19-
; CHECK-NEXT: jirl $ra, $ra, 0
20-
; CHECK-NEXT: move $a0, $zero
21-
; CHECK-NEXT: ld.d $ra, $sp, 24 # 8-byte Folded Reload
22-
; CHECK-NEXT: addi.d $sp, $sp, 32
23-
; CHECK-NEXT: ret
11+
; NOLSX-LABEL: test:
12+
; NOLSX: # %bb.0:
13+
; NOLSX-NEXT: addi.d $sp, $sp, -32
14+
; NOLSX-NEXT: st.d $ra, $sp, 24 # 8-byte Folded Spill
15+
; NOLSX-NEXT: st.w $zero, $sp, 16
16+
; NOLSX-NEXT: st.d $zero, $sp, 8
17+
; NOLSX-NEXT: st.d $zero, $sp, 0
18+
; NOLSX-NEXT: addi.d $a0, $sp, 4
19+
; NOLSX-NEXT: pcaddu18i $ra, %call36(test1)
20+
; NOLSX-NEXT: jirl $ra, $ra, 0
21+
; NOLSX-NEXT: move $a0, $zero
22+
; NOLSX-NEXT: ld.d $ra, $sp, 24 # 8-byte Folded Reload
23+
; NOLSX-NEXT: addi.d $sp, $sp, 32
24+
; NOLSX-NEXT: ret
25+
;
26+
; LSX-LABEL: test:
27+
; LSX: # %bb.0:
28+
; LSX-NEXT: addi.d $sp, $sp, -32
29+
; LSX-NEXT: st.d $ra, $sp, 24 # 8-byte Folded Spill
30+
; LSX-NEXT: st.w $zero, $sp, 16
31+
; LSX-NEXT: vrepli.b $vr0, 0
32+
; LSX-NEXT: vst $vr0, $sp, 0
33+
; LSX-NEXT: addi.d $a0, $sp, 4
34+
; LSX-NEXT: pcaddu18i $ra, %call36(test1)
35+
; LSX-NEXT: jirl $ra, $ra, 0
36+
; LSX-NEXT: move $a0, $zero
37+
; LSX-NEXT: ld.d $ra, $sp, 24 # 8-byte Folded Reload
38+
; LSX-NEXT: addi.d $sp, $sp, 32
39+
; LSX-NEXT: ret
2440
%key = alloca %struct.key_t, align 4
2541
call void @llvm.memset.p0.i64(ptr %key, i8 0, i64 20, i1 false)
2642
%1 = getelementptr inbounds %struct.key_t, ptr %key, i64 0, i32 1, i64 0
@@ -98,3 +114,62 @@ define void @test_large_frame_size_1234576() "frame-pointer"="all" {
98114
%1 = alloca i8, i32 1234567
99115
ret void
100116
}
117+
118+
;; Note: will create an emergency spill slot, if (!isInt<7>(StackSize)).
119+
;; Should involve only one SP-adjusting addi per adjustment.
120+
;; LSX 112 + 16(emergency solt) = 128
121+
define void @test_frame_size_112() {
122+
; NOLSX-LABEL: test_frame_size_112:
123+
; NOLSX: # %bb.0:
124+
; NOLSX-NEXT: addi.d $sp, $sp, -112
125+
; NOLSX-NEXT: .cfi_def_cfa_offset 112
126+
; NOLSX-NEXT: addi.d $sp, $sp, 112
127+
; NOLSX-NEXT: ret
128+
;
129+
; LSX-LABEL: test_frame_size_112:
130+
; LSX: # %bb.0:
131+
; LSX-NEXT: addi.d $sp, $sp, -128
132+
; LSX-NEXT: .cfi_def_cfa_offset 128
133+
; LSX-NEXT: addi.d $sp, $sp, 128
134+
; LSX-NEXT: ret
135+
%1 = alloca i8, i32 112
136+
ret void
137+
}
138+
139+
;; LSX 128 + 16(emergency solt) = 144
140+
define void @test_frame_size_128() {
141+
; NOLSX-LABEL: test_frame_size_128:
142+
; NOLSX: # %bb.0:
143+
; NOLSX-NEXT: addi.d $sp, $sp, -128
144+
; NOLSX-NEXT: .cfi_def_cfa_offset 128
145+
; NOLSX-NEXT: addi.d $sp, $sp, 128
146+
; NOLSX-NEXT: ret
147+
;
148+
; LSX-LABEL: test_frame_size_128:
149+
; LSX: # %bb.0:
150+
; LSX-NEXT: addi.d $sp, $sp, -144
151+
; LSX-NEXT: .cfi_def_cfa_offset 144
152+
; LSX-NEXT: addi.d $sp, $sp, 144
153+
; LSX-NEXT: ret
154+
%1 = alloca i8, i32 128
155+
ret void
156+
}
157+
158+
;; LSX 144 + 16(emergency solt) = 160
159+
define void @test_frame_size_144() {
160+
; NOLSX-LABEL: test_frame_size_144:
161+
; NOLSX: # %bb.0:
162+
; NOLSX-NEXT: addi.d $sp, $sp, -144
163+
; NOLSX-NEXT: .cfi_def_cfa_offset 144
164+
; NOLSX-NEXT: addi.d $sp, $sp, 144
165+
; NOLSX-NEXT: ret
166+
;
167+
; LSX-LABEL: test_frame_size_144:
168+
; LSX: # %bb.0:
169+
; LSX-NEXT: addi.d $sp, $sp, -160
170+
; LSX-NEXT: .cfi_def_cfa_offset 160
171+
; LSX-NEXT: addi.d $sp, $sp, 160
172+
; LSX-NEXT: ret
173+
%1 = alloca i8, i32 144
174+
ret void
175+
}

0 commit comments

Comments
 (0)