@@ -12,69 +12,74 @@ declare preserve_mostcc void @preserve_mostcc_func()
1212define preserve_mostcc void @preserve_mostcc1 () nounwind {
1313; RV32I-LABEL: preserve_mostcc1:
1414; RV32I: # %bb.0: # %entry
15- ; RV32I-NEXT: addi sp, sp, -48
16- ; RV32I-NEXT: sw t0, 44(sp) # 4-byte Folded Spill
17- ; RV32I-NEXT: sw a0, 40(sp) # 4-byte Folded Spill
18- ; RV32I-NEXT: sw a1, 36(sp) # 4-byte Folded Spill
19- ; RV32I-NEXT: sw a2, 32(sp) # 4-byte Folded Spill
20- ; RV32I-NEXT: sw a3, 28(sp) # 4-byte Folded Spill
21- ; RV32I-NEXT: sw a4, 24(sp) # 4-byte Folded Spill
22- ; RV32I-NEXT: sw a5, 20(sp) # 4-byte Folded Spill
23- ; RV32I-NEXT: sw a6, 16(sp) # 4-byte Folded Spill
24- ; RV32I-NEXT: sw a7, 12(sp) # 4-byte Folded Spill
25- ; RV32I-NEXT: sw t4, 8(sp) # 4-byte Folded Spill
26- ; RV32I-NEXT: sw t5, 4(sp) # 4-byte Folded Spill
27- ; RV32I-NEXT: sw t6, 0(sp) # 4-byte Folded Spill
15+ ; RV32I-NEXT: addi sp, sp, -64
16+ ; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill
17+ ; RV32I-NEXT: sw t0, 56(sp) # 4-byte Folded Spill
18+ ; RV32I-NEXT: sw a0, 52(sp) # 4-byte Folded Spill
19+ ; RV32I-NEXT: sw a1, 48(sp) # 4-byte Folded Spill
20+ ; RV32I-NEXT: sw a2, 44(sp) # 4-byte Folded Spill
21+ ; RV32I-NEXT: sw a3, 40(sp) # 4-byte Folded Spill
22+ ; RV32I-NEXT: sw a4, 36(sp) # 4-byte Folded Spill
23+ ; RV32I-NEXT: sw a5, 32(sp) # 4-byte Folded Spill
24+ ; RV32I-NEXT: sw a6, 28(sp) # 4-byte Folded Spill
25+ ; RV32I-NEXT: sw a7, 24(sp) # 4-byte Folded Spill
26+ ; RV32I-NEXT: sw t4, 20(sp) # 4-byte Folded Spill
27+ ; RV32I-NEXT: sw t5, 16(sp) # 4-byte Folded Spill
28+ ; RV32I-NEXT: sw t6, 12(sp) # 4-byte Folded Spill
2829; RV32I-NEXT: call standard_cc_func
29- ; RV32I-NEXT: lw t0, 44(sp) # 4-byte Folded Reload
30- ; RV32I-NEXT: lw a0, 40(sp) # 4-byte Folded Reload
31- ; RV32I-NEXT: lw a1, 36(sp) # 4-byte Folded Reload
32- ; RV32I-NEXT: lw a2, 32(sp) # 4-byte Folded Reload
33- ; RV32I-NEXT: lw a3, 28(sp) # 4-byte Folded Reload
34- ; RV32I-NEXT: lw a4, 24(sp) # 4-byte Folded Reload
35- ; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload
36- ; RV32I-NEXT: lw a6, 16(sp) # 4-byte Folded Reload
37- ; RV32I-NEXT: lw a7, 12(sp) # 4-byte Folded Reload
38- ; RV32I-NEXT: lw t4, 8(sp) # 4-byte Folded Reload
39- ; RV32I-NEXT: lw t5, 4(sp) # 4-byte Folded Reload
40- ; RV32I-NEXT: lw t6, 0(sp) # 4-byte Folded Reload
41- ; RV32I-NEXT: addi sp, sp, 48
30+ ; RV32I-NEXT: lw ra, 60(sp) # 4-byte Folded Reload
31+ ; RV32I-NEXT: lw t0, 56(sp) # 4-byte Folded Reload
32+ ; RV32I-NEXT: lw a0, 52(sp) # 4-byte Folded Reload
33+ ; RV32I-NEXT: lw a1, 48(sp) # 4-byte Folded Reload
34+ ; RV32I-NEXT: lw a2, 44(sp) # 4-byte Folded Reload
35+ ; RV32I-NEXT: lw a3, 40(sp) # 4-byte Folded Reload
36+ ; RV32I-NEXT: lw a4, 36(sp) # 4-byte Folded Reload
37+ ; RV32I-NEXT: lw a5, 32(sp) # 4-byte Folded Reload
38+ ; RV32I-NEXT: lw a6, 28(sp) # 4-byte Folded Reload
39+ ; RV32I-NEXT: lw a7, 24(sp) # 4-byte Folded Reload
40+ ; RV32I-NEXT: lw t4, 20(sp) # 4-byte Folded Reload
41+ ; RV32I-NEXT: lw t5, 16(sp) # 4-byte Folded Reload
42+ ; RV32I-NEXT: lw t6, 12(sp) # 4-byte Folded Reload
43+ ; RV32I-NEXT: addi sp, sp, 64
4244; RV32I-NEXT: ret
4345;
4446; RV64I-LABEL: preserve_mostcc1:
4547; RV64I: # %bb.0: # %entry
46- ; RV64I-NEXT: addi sp, sp, -96
47- ; RV64I-NEXT: sd t0, 88(sp) # 8-byte Folded Spill
48- ; RV64I-NEXT: sd a0, 80(sp) # 8-byte Folded Spill
49- ; RV64I-NEXT: sd a1, 72(sp) # 8-byte Folded Spill
50- ; RV64I-NEXT: sd a2, 64(sp) # 8-byte Folded Spill
51- ; RV64I-NEXT: sd a3, 56(sp) # 8-byte Folded Spill
52- ; RV64I-NEXT: sd a4, 48(sp) # 8-byte Folded Spill
53- ; RV64I-NEXT: sd a5, 40(sp) # 8-byte Folded Spill
54- ; RV64I-NEXT: sd a6, 32(sp) # 8-byte Folded Spill
55- ; RV64I-NEXT: sd a7, 24(sp) # 8-byte Folded Spill
56- ; RV64I-NEXT: sd t4, 16(sp) # 8-byte Folded Spill
57- ; RV64I-NEXT: sd t5, 8(sp) # 8-byte Folded Spill
58- ; RV64I-NEXT: sd t6, 0(sp) # 8-byte Folded Spill
48+ ; RV64I-NEXT: addi sp, sp, -112
49+ ; RV64I-NEXT: sd ra, 104(sp) # 8-byte Folded Spill
50+ ; RV64I-NEXT: sd t0, 96(sp) # 8-byte Folded Spill
51+ ; RV64I-NEXT: sd a0, 88(sp) # 8-byte Folded Spill
52+ ; RV64I-NEXT: sd a1, 80(sp) # 8-byte Folded Spill
53+ ; RV64I-NEXT: sd a2, 72(sp) # 8-byte Folded Spill
54+ ; RV64I-NEXT: sd a3, 64(sp) # 8-byte Folded Spill
55+ ; RV64I-NEXT: sd a4, 56(sp) # 8-byte Folded Spill
56+ ; RV64I-NEXT: sd a5, 48(sp) # 8-byte Folded Spill
57+ ; RV64I-NEXT: sd a6, 40(sp) # 8-byte Folded Spill
58+ ; RV64I-NEXT: sd a7, 32(sp) # 8-byte Folded Spill
59+ ; RV64I-NEXT: sd t4, 24(sp) # 8-byte Folded Spill
60+ ; RV64I-NEXT: sd t5, 16(sp) # 8-byte Folded Spill
61+ ; RV64I-NEXT: sd t6, 8(sp) # 8-byte Folded Spill
5962; RV64I-NEXT: call standard_cc_func
60- ; RV64I-NEXT: ld t0, 88(sp) # 8-byte Folded Reload
61- ; RV64I-NEXT: ld a0, 80(sp) # 8-byte Folded Reload
62- ; RV64I-NEXT: ld a1, 72(sp) # 8-byte Folded Reload
63- ; RV64I-NEXT: ld a2, 64(sp) # 8-byte Folded Reload
64- ; RV64I-NEXT: ld a3, 56(sp) # 8-byte Folded Reload
65- ; RV64I-NEXT: ld a4, 48(sp) # 8-byte Folded Reload
66- ; RV64I-NEXT: ld a5, 40(sp) # 8-byte Folded Reload
67- ; RV64I-NEXT: ld a6, 32(sp) # 8-byte Folded Reload
68- ; RV64I-NEXT: ld a7, 24(sp) # 8-byte Folded Reload
69- ; RV64I-NEXT: ld t4, 16(sp) # 8-byte Folded Reload
70- ; RV64I-NEXT: ld t5, 8(sp) # 8-byte Folded Reload
71- ; RV64I-NEXT: ld t6, 0(sp) # 8-byte Folded Reload
72- ; RV64I-NEXT: addi sp, sp, 96
63+ ; RV64I-NEXT: ld ra, 104(sp) # 8-byte Folded Reload
64+ ; RV64I-NEXT: ld t0, 96(sp) # 8-byte Folded Reload
65+ ; RV64I-NEXT: ld a0, 88(sp) # 8-byte Folded Reload
66+ ; RV64I-NEXT: ld a1, 80(sp) # 8-byte Folded Reload
67+ ; RV64I-NEXT: ld a2, 72(sp) # 8-byte Folded Reload
68+ ; RV64I-NEXT: ld a3, 64(sp) # 8-byte Folded Reload
69+ ; RV64I-NEXT: ld a4, 56(sp) # 8-byte Folded Reload
70+ ; RV64I-NEXT: ld a5, 48(sp) # 8-byte Folded Reload
71+ ; RV64I-NEXT: ld a6, 40(sp) # 8-byte Folded Reload
72+ ; RV64I-NEXT: ld a7, 32(sp) # 8-byte Folded Reload
73+ ; RV64I-NEXT: ld t4, 24(sp) # 8-byte Folded Reload
74+ ; RV64I-NEXT: ld t5, 16(sp) # 8-byte Folded Reload
75+ ; RV64I-NEXT: ld t6, 8(sp) # 8-byte Folded Reload
76+ ; RV64I-NEXT: addi sp, sp, 112
7377; RV64I-NEXT: ret
7478;
7579; RV32E-LABEL: preserve_mostcc1:
7680; RV32E: # %bb.0: # %entry
77- ; RV32E-NEXT: addi sp, sp, -28
81+ ; RV32E-NEXT: addi sp, sp, -32
82+ ; RV32E-NEXT: sw ra, 28(sp) # 4-byte Folded Spill
7883; RV32E-NEXT: sw t0, 24(sp) # 4-byte Folded Spill
7984; RV32E-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
8085; RV32E-NEXT: sw a1, 16(sp) # 4-byte Folded Spill
@@ -83,19 +88,21 @@ define preserve_mostcc void @preserve_mostcc1() nounwind {
8388; RV32E-NEXT: sw a4, 4(sp) # 4-byte Folded Spill
8489; RV32E-NEXT: sw a5, 0(sp) # 4-byte Folded Spill
8590; RV32E-NEXT: call standard_cc_func
91+ ; RV32E-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
8692; RV32E-NEXT: lw t0, 24(sp) # 4-byte Folded Reload
8793; RV32E-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
8894; RV32E-NEXT: lw a1, 16(sp) # 4-byte Folded Reload
8995; RV32E-NEXT: lw a2, 12(sp) # 4-byte Folded Reload
9096; RV32E-NEXT: lw a3, 8(sp) # 4-byte Folded Reload
9197; RV32E-NEXT: lw a4, 4(sp) # 4-byte Folded Reload
9298; RV32E-NEXT: lw a5, 0(sp) # 4-byte Folded Reload
93- ; RV32E-NEXT: addi sp, sp, 28
99+ ; RV32E-NEXT: addi sp, sp, 32
94100; RV32E-NEXT: ret
95101;
96102; RV64E-LABEL: preserve_mostcc1:
97103; RV64E: # %bb.0: # %entry
98- ; RV64E-NEXT: addi sp, sp, -56
104+ ; RV64E-NEXT: addi sp, sp, -64
105+ ; RV64E-NEXT: sd ra, 56(sp) # 8-byte Folded Spill
99106; RV64E-NEXT: sd t0, 48(sp) # 8-byte Folded Spill
100107; RV64E-NEXT: sd a0, 40(sp) # 8-byte Folded Spill
101108; RV64E-NEXT: sd a1, 32(sp) # 8-byte Folded Spill
@@ -104,14 +111,15 @@ define preserve_mostcc void @preserve_mostcc1() nounwind {
104111; RV64E-NEXT: sd a4, 8(sp) # 8-byte Folded Spill
105112; RV64E-NEXT: sd a5, 0(sp) # 8-byte Folded Spill
106113; RV64E-NEXT: call standard_cc_func
114+ ; RV64E-NEXT: ld ra, 56(sp) # 8-byte Folded Reload
107115; RV64E-NEXT: ld t0, 48(sp) # 8-byte Folded Reload
108116; RV64E-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
109117; RV64E-NEXT: ld a1, 32(sp) # 8-byte Folded Reload
110118; RV64E-NEXT: ld a2, 24(sp) # 8-byte Folded Reload
111119; RV64E-NEXT: ld a3, 16(sp) # 8-byte Folded Reload
112120; RV64E-NEXT: ld a4, 8(sp) # 8-byte Folded Reload
113121; RV64E-NEXT: ld a5, 0(sp) # 8-byte Folded Reload
114- ; RV64E-NEXT: addi sp, sp, 56
122+ ; RV64E-NEXT: addi sp, sp, 64
115123; RV64E-NEXT: ret
116124entry:
117125 call void @standard_cc_func ()
@@ -121,22 +129,38 @@ entry:
121129define preserve_mostcc void @preserve_mostcc2 () nounwind {
122130; RV32I-LABEL: preserve_mostcc2:
123131; RV32I: # %bb.0:
132+ ; RV32I-NEXT: addi sp, sp, -16
133+ ; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
124134; RV32I-NEXT: call preserve_mostcc_func
135+ ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
136+ ; RV32I-NEXT: addi sp, sp, 16
125137; RV32I-NEXT: ret
126138;
127139; RV64I-LABEL: preserve_mostcc2:
128140; RV64I: # %bb.0:
141+ ; RV64I-NEXT: addi sp, sp, -16
142+ ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
129143; RV64I-NEXT: call preserve_mostcc_func
144+ ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
145+ ; RV64I-NEXT: addi sp, sp, 16
130146; RV64I-NEXT: ret
131147;
132148; RV32E-LABEL: preserve_mostcc2:
133149; RV32E: # %bb.0:
150+ ; RV32E-NEXT: addi sp, sp, -4
151+ ; RV32E-NEXT: sw ra, 0(sp) # 4-byte Folded Spill
134152; RV32E-NEXT: call preserve_mostcc_func
153+ ; RV32E-NEXT: lw ra, 0(sp) # 4-byte Folded Reload
154+ ; RV32E-NEXT: addi sp, sp, 4
135155; RV32E-NEXT: ret
136156;
137157; RV64E-LABEL: preserve_mostcc2:
138158; RV64E: # %bb.0:
159+ ; RV64E-NEXT: addi sp, sp, -8
160+ ; RV64E-NEXT: sd ra, 0(sp) # 8-byte Folded Spill
139161; RV64E-NEXT: call preserve_mostcc_func
162+ ; RV64E-NEXT: ld ra, 0(sp) # 8-byte Folded Reload
163+ ; RV64E-NEXT: addi sp, sp, 8
140164; RV64E-NEXT: ret
141165 call preserve_mostcc void @preserve_mostcc_func ()
142166 ret void
0 commit comments