xref: /llvm-project/llvm/test/CodeGen/RISCV/stack-inst-compress.mir (revision a0b049055df592759e4ac1d8032139f385581c63)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
2# RUN: llc -mtriple=riscv32  -x mir -run-pass=prologepilog  -verify-machineinstrs < %s \
3# RUN: | FileCheck -check-prefixes=CHECK-RV32-NO-COM %s
4# RUN: llc -mtriple=riscv32  -mattr=+c -x mir -run-pass=prologepilog \
5# RUN: -verify-machineinstrs < %s | FileCheck -check-prefixes=CHECK-RV32-COM %s
6# RUN: llc -mtriple=riscv64 -x mir -run-pass=prologepilog  -verify-machineinstrs < %s \
7# RUN: | FileCheck -check-prefixes=CHECK-RV64-NO-COM %s
8# RUN: llc -mtriple=riscv64 -mattr=+c -x mir -run-pass=prologepilog \
9# RUN: -verify-machineinstrs < %s | FileCheck -check-prefixes=CHECK-RV64-COM %s
10--- |
11  define dso_local void @_Z15stack_size_2048v() {
12  entry:
13    ret void
14  }
15
16  declare dso_local void @_Z6calleePi(ptr noundef)
17
18  define dso_local void @_Z15stack_size_4096v() {
19  entry:
20    ret void
21  }
22
23  define dso_local void @_Z15stack_size_8192v() {
24  entry:
25    ret void
26  }
27
28...
29---
30name:            _Z15stack_size_2048v
31alignment:       2
32tracksRegLiveness: true
33frameInfo:
34  maxAlignment:    4
35  adjustsStack:    true
36  hasCalls:        true
37  localFrameSize:  2048
38stack:
39  - { id: 0, size: 2048, alignment: 4, local-offset: -2048 }
40machineFunctionInfo:
41  varArgsFrameIndex: 0
42  varArgsSaveSize: 0
43body:             |
44  bb.0.entry:
45    ; CHECK-RV32-NO-COM-LABEL: name: _Z15stack_size_2048v
46    ; CHECK-RV32-NO-COM: liveins: $x1
47    ; CHECK-RV32-NO-COM-NEXT: {{  $}}
48    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
49    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
50    ; CHECK-RV32-NO-COM-NEXT: frame-setup SW killed $x1, $x2, 2028 :: (store (s32) into %stack.1)
51    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
52    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -32
53    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2064
54    ; CHECK-RV32-NO-COM-NEXT: renamable $x10 = ADDI $x2, 12
55    ; CHECK-RV32-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
56    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 32
57    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 2032
58    ; CHECK-RV32-NO-COM-NEXT: $x1 = frame-destroy LW $x2, 2028 :: (load (s32) from %stack.1)
59    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
60    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
61    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
62    ; CHECK-RV32-NO-COM-NEXT: PseudoRET
63    ;
64    ; CHECK-RV32-COM-LABEL: name: _Z15stack_size_2048v
65    ; CHECK-RV32-COM: liveins: $x1
66    ; CHECK-RV32-COM-NEXT: {{  $}}
67    ; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -256
68    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 256
69    ; CHECK-RV32-COM-NEXT: frame-setup SW killed $x1, $x2, 252 :: (store (s32) into %stack.1)
70    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
71    ; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -1808
72    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2064
73    ; CHECK-RV32-COM-NEXT: renamable $x10 = ADDI $x2, 12
74    ; CHECK-RV32-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
75    ; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 1808
76    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 256
77    ; CHECK-RV32-COM-NEXT: $x1 = frame-destroy LW $x2, 252 :: (load (s32) from %stack.1)
78    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
79    ; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 256
80    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
81    ; CHECK-RV32-COM-NEXT: PseudoRET
82    ;
83    ; CHECK-RV64-NO-COM-LABEL: name: _Z15stack_size_2048v
84    ; CHECK-RV64-NO-COM: liveins: $x1
85    ; CHECK-RV64-NO-COM-NEXT: {{  $}}
86    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
87    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
88    ; CHECK-RV64-NO-COM-NEXT: frame-setup SD killed $x1, $x2, 2024 :: (store (s64) into %stack.1)
89    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
90    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -32
91    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2064
92    ; CHECK-RV64-NO-COM-NEXT: renamable $x10 = ADDI $x2, 8
93    ; CHECK-RV64-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
94    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 32
95    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 2032
96    ; CHECK-RV64-NO-COM-NEXT: $x1 = frame-destroy LD $x2, 2024 :: (load (s64) from %stack.1)
97    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
98    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
99    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
100    ; CHECK-RV64-NO-COM-NEXT: PseudoRET
101    ;
102    ; CHECK-RV64-COM-LABEL: name: _Z15stack_size_2048v
103    ; CHECK-RV64-COM: liveins: $x1
104    ; CHECK-RV64-COM-NEXT: {{  $}}
105    ; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -496
106    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 496
107    ; CHECK-RV64-COM-NEXT: frame-setup SD killed $x1, $x2, 488 :: (store (s64) into %stack.1)
108    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
109    ; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -1568
110    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2064
111    ; CHECK-RV64-COM-NEXT: renamable $x10 = ADDI $x2, 8
112    ; CHECK-RV64-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
113    ; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 1568
114    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 496
115    ; CHECK-RV64-COM-NEXT: $x1 = frame-destroy LD $x2, 488 :: (load (s64) from %stack.1)
116    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
117    ; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 496
118    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
119    ; CHECK-RV64-COM-NEXT: PseudoRET
120    ADJCALLSTACKDOWN 0, 0, implicit-def dead $x2, implicit $x2
121    renamable $x10 = ADDI %stack.0, 0
122    PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
123    ADJCALLSTACKUP 0, 0, implicit-def dead $x2, implicit $x2
124    PseudoRET
125
126...
127---
128name:            _Z15stack_size_4096v
129alignment:       2
130tracksRegLiveness: true
131frameInfo:
132  maxAlignment:    4
133  adjustsStack:    true
134  hasCalls:        true
135  localFrameSize:  4096
136stack:
137  - { id: 0, size: 4096, alignment: 4, local-offset: -4096 }
138machineFunctionInfo:
139  varArgsFrameIndex: 0
140  varArgsSaveSize: 0
141body:             |
142  bb.0.entry:
143    ; CHECK-RV32-NO-COM-LABEL: name: _Z15stack_size_4096v
144    ; CHECK-RV32-NO-COM: liveins: $x1
145    ; CHECK-RV32-NO-COM-NEXT: {{  $}}
146    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
147    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
148    ; CHECK-RV32-NO-COM-NEXT: frame-setup SW killed $x1, $x2, 2028 :: (store (s32) into %stack.1)
149    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
150    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2048
151    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI killed $x2, -32
152    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 4112
153    ; CHECK-RV32-NO-COM-NEXT: renamable $x10 = ADDI $x2, 12
154    ; CHECK-RV32-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
155    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
156    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI killed $x2, 48
157    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 2032
158    ; CHECK-RV32-NO-COM-NEXT: $x1 = frame-destroy LW $x2, 2028 :: (load (s32) from %stack.1)
159    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
160    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
161    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
162    ; CHECK-RV32-NO-COM-NEXT: PseudoRET
163    ;
164    ; CHECK-RV32-COM-LABEL: name: _Z15stack_size_4096v
165    ; CHECK-RV32-COM: liveins: $x1
166    ; CHECK-RV32-COM-NEXT: {{  $}}
167    ; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -256
168    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 256
169    ; CHECK-RV32-COM-NEXT: frame-setup SW killed $x1, $x2, 252 :: (store (s32) into %stack.1)
170    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
171    ; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -2048
172    ; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI killed $x2, -1808
173    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 4112
174    ; CHECK-RV32-COM-NEXT: renamable $x10 = ADDI $x2, 12
175    ; CHECK-RV32-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
176    ; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
177    ; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI killed $x2, 1824
178    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 256
179    ; CHECK-RV32-COM-NEXT: $x1 = frame-destroy LW $x2, 252 :: (load (s32) from %stack.1)
180    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
181    ; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 256
182    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
183    ; CHECK-RV32-COM-NEXT: PseudoRET
184    ;
185    ; CHECK-RV64-NO-COM-LABEL: name: _Z15stack_size_4096v
186    ; CHECK-RV64-NO-COM: liveins: $x1
187    ; CHECK-RV64-NO-COM-NEXT: {{  $}}
188    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
189    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
190    ; CHECK-RV64-NO-COM-NEXT: frame-setup SD killed $x1, $x2, 2024 :: (store (s64) into %stack.1)
191    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
192    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2048
193    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI killed $x2, -32
194    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 4112
195    ; CHECK-RV64-NO-COM-NEXT: renamable $x10 = ADDI $x2, 8
196    ; CHECK-RV64-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
197    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
198    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI killed $x2, 48
199    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 2032
200    ; CHECK-RV64-NO-COM-NEXT: $x1 = frame-destroy LD $x2, 2024 :: (load (s64) from %stack.1)
201    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
202    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
203    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
204    ; CHECK-RV64-NO-COM-NEXT: PseudoRET
205    ;
206    ; CHECK-RV64-COM-LABEL: name: _Z15stack_size_4096v
207    ; CHECK-RV64-COM: liveins: $x1
208    ; CHECK-RV64-COM-NEXT: {{  $}}
209    ; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -496
210    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 496
211    ; CHECK-RV64-COM-NEXT: frame-setup SD killed $x1, $x2, 488 :: (store (s64) into %stack.1)
212    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
213    ; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -2048
214    ; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI killed $x2, -1568
215    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 4112
216    ; CHECK-RV64-COM-NEXT: renamable $x10 = ADDI $x2, 8
217    ; CHECK-RV64-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
218    ; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
219    ; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI killed $x2, 1584
220    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 496
221    ; CHECK-RV64-COM-NEXT: $x1 = frame-destroy LD $x2, 488 :: (load (s64) from %stack.1)
222    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
223    ; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 496
224    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
225    ; CHECK-RV64-COM-NEXT: PseudoRET
226    ADJCALLSTACKDOWN 0, 0, implicit-def dead $x2, implicit $x2
227    renamable $x10 = ADDI %stack.0, 0
228    PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
229    ADJCALLSTACKUP 0, 0, implicit-def dead $x2, implicit $x2
230    PseudoRET
231
232...
233---
234name:            _Z15stack_size_8192v
235alignment:       2
236tracksRegLiveness: true
237frameInfo:
238  maxAlignment:    4
239  adjustsStack:    true
240  hasCalls:        true
241  localFrameSize:  8192
242stack:
243  - { id: 0, size: 8192, alignment: 4, local-offset: -8192 }
244machineFunctionInfo:
245  varArgsFrameIndex: 0
246  varArgsSaveSize: 0
247body:             |
248  bb.0.entry:
249    ; CHECK-RV32-NO-COM-LABEL: name: _Z15stack_size_8192v
250    ; CHECK-RV32-NO-COM: liveins: $x1
251    ; CHECK-RV32-NO-COM-NEXT: {{  $}}
252    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
253    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
254    ; CHECK-RV32-NO-COM-NEXT: frame-setup SW killed $x1, $x2, 2028 :: (store (s32) into %stack.1)
255    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
256    ; CHECK-RV32-NO-COM-NEXT: $x10 = frame-setup LUI 2
257    ; CHECK-RV32-NO-COM-NEXT: $x10 = frame-setup ADDI killed $x10, -2016
258    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup SUB $x2, killed $x10
259    ; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8208
260    ; CHECK-RV32-NO-COM-NEXT: renamable $x10 = ADDI $x2, 12
261    ; CHECK-RV32-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
262    ; CHECK-RV32-NO-COM-NEXT: $x10 = frame-destroy LUI 2
263    ; CHECK-RV32-NO-COM-NEXT: $x10 = frame-destroy ADDI killed $x10, -2016
264    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
265    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 2032
266    ; CHECK-RV32-NO-COM-NEXT: $x1 = frame-destroy LW $x2, 2028 :: (load (s32) from %stack.1)
267    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
268    ; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
269    ; CHECK-RV32-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
270    ; CHECK-RV32-NO-COM-NEXT: PseudoRET
271    ;
272    ; CHECK-RV32-COM-LABEL: name: _Z15stack_size_8192v
273    ; CHECK-RV32-COM: liveins: $x1
274    ; CHECK-RV32-COM-NEXT: {{  $}}
275    ; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -256
276    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 256
277    ; CHECK-RV32-COM-NEXT: frame-setup SW killed $x1, $x2, 252 :: (store (s32) into %stack.1)
278    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
279    ; CHECK-RV32-COM-NEXT: $x10 = frame-setup LUI 2
280    ; CHECK-RV32-COM-NEXT: $x10 = frame-setup ADDI killed $x10, -240
281    ; CHECK-RV32-COM-NEXT: $x2 = frame-setup SUB $x2, killed $x10
282    ; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8208
283    ; CHECK-RV32-COM-NEXT: renamable $x10 = ADDI $x2, 12
284    ; CHECK-RV32-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
285    ; CHECK-RV32-COM-NEXT: $x10 = frame-destroy LUI 2
286    ; CHECK-RV32-COM-NEXT: $x10 = frame-destroy ADDI killed $x10, -240
287    ; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
288    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 256
289    ; CHECK-RV32-COM-NEXT: $x1 = frame-destroy LW $x2, 252 :: (load (s32) from %stack.1)
290    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
291    ; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 256
292    ; CHECK-RV32-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
293    ; CHECK-RV32-COM-NEXT: PseudoRET
294    ;
295    ; CHECK-RV64-NO-COM-LABEL: name: _Z15stack_size_8192v
296    ; CHECK-RV64-NO-COM: liveins: $x1
297    ; CHECK-RV64-NO-COM-NEXT: {{  $}}
298    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
299    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
300    ; CHECK-RV64-NO-COM-NEXT: frame-setup SD killed $x1, $x2, 2024 :: (store (s64) into %stack.1)
301    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
302    ; CHECK-RV64-NO-COM-NEXT: $x10 = frame-setup LUI 2
303    ; CHECK-RV64-NO-COM-NEXT: $x10 = frame-setup ADDIW killed $x10, -2016
304    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup SUB $x2, killed $x10
305    ; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8208
306    ; CHECK-RV64-NO-COM-NEXT: renamable $x10 = ADDI $x2, 8
307    ; CHECK-RV64-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
308    ; CHECK-RV64-NO-COM-NEXT: $x10 = frame-destroy LUI 2
309    ; CHECK-RV64-NO-COM-NEXT: $x10 = frame-destroy ADDIW killed $x10, -2016
310    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
311    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 2032
312    ; CHECK-RV64-NO-COM-NEXT: $x1 = frame-destroy LD $x2, 2024 :: (load (s64) from %stack.1)
313    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
314    ; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
315    ; CHECK-RV64-NO-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
316    ; CHECK-RV64-NO-COM-NEXT: PseudoRET
317    ;
318    ; CHECK-RV64-COM-LABEL: name: _Z15stack_size_8192v
319    ; CHECK-RV64-COM: liveins: $x1
320    ; CHECK-RV64-COM-NEXT: {{  $}}
321    ; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -496
322    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 496
323    ; CHECK-RV64-COM-NEXT: frame-setup SD killed $x1, $x2, 488 :: (store (s64) into %stack.1)
324    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
325    ; CHECK-RV64-COM-NEXT: $x10 = frame-setup LUI 2
326    ; CHECK-RV64-COM-NEXT: $x10 = frame-setup ADDIW killed $x10, -480
327    ; CHECK-RV64-COM-NEXT: $x2 = frame-setup SUB $x2, killed $x10
328    ; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8208
329    ; CHECK-RV64-COM-NEXT: renamable $x10 = ADDI $x2, 8
330    ; CHECK-RV64-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
331    ; CHECK-RV64-COM-NEXT: $x10 = frame-destroy LUI 2
332    ; CHECK-RV64-COM-NEXT: $x10 = frame-destroy ADDIW killed $x10, -480
333    ; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
334    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 496
335    ; CHECK-RV64-COM-NEXT: $x1 = frame-destroy LD $x2, 488 :: (load (s64) from %stack.1)
336    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION restore $x1
337    ; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 496
338    ; CHECK-RV64-COM-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0
339    ; CHECK-RV64-COM-NEXT: PseudoRET
340    ADJCALLSTACKDOWN 0, 0, implicit-def dead $x2, implicit $x2
341    renamable $x10 = ADDI %stack.0, 0
342    PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
343    ADJCALLSTACKUP 0, 0, implicit-def dead $x2, implicit $x2
344    PseudoRET
345
346...
347