Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / make-compressible.mir
blob91c2d95b5051d70ca1638681295687421fefb860
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -o - %s -mtriple=riscv32 -mattr=+c,+f,+d -simplify-mir \
3 # RUN:   -run-pass=riscv-make-compressible | FileCheck --check-prefix=RV32 %s
4 # RUN: llc -o - %s -mtriple=riscv64 -mattr=+c,+f,+d -simplify-mir \
5 # RUN:   -run-pass=riscv-make-compressible | FileCheck --check-prefix=RV64 %s
6 --- |
8   define void @store_common_value(i32* %a, i32* %b, i32* %c) #0 {
9   entry:
10     store i32 0, i32* %a, align 4
11     store i32 0, i32* %b, align 4
12     store i32 0, i32* %c, align 4
13     ret void
14   }
16   define void @store_common_value_float(float* %a, float* %b, float* %c, float %d, float %e, float %f, float %g, float %h, float %i, float %j) #0 {
17   entry:
18     store float %j, float* %a, align 4
19     store float %j, float* %b, align 4
20     store float %j, float* %c, align 4
21     ret void
22   }
24   define void @store_common_value_double(double* %a, double* %b, double* %c, double %d, double %e, double %f, double %g, double %h, double %i, double %j) #0 {
25   entry:
26     store double %j, double* %a, align 8
27     store double %j, double* %b, align 8
28     store double %j, double* %c, align 8
29     ret void
30   }
32   define void @store_common_ptr(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
33   entry:
34     store volatile i32 1, i32* %p, align 4
35     store volatile i32 3, i32* %p, align 4
36     store volatile i32 5, i32* %p, align 4
37     ret void
38   }
40   define void @store_common_ptr_self(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
41   entry:
42     %q = bitcast i32* %p to i32**
43     store volatile i32 1, i32* %p, align 4
44     store volatile i32 3, i32* %p, align 4
45     store volatile i32* %p, i32** %q, align 4
46     ret void
47   }
49   define void @store_common_ptr_float(float %a, float %b, float %c, i32 %d, i32 %e, i32 %f, i32 %g, i32 %h, i32 %i, float* %p) #0 {
50   entry:
51     store volatile float %a, float* %p, align 4
52     store volatile float %b, float* %p, align 4
53     store volatile float %c, float* %p, align 4
54     ret void
55   }
57   define void @store_common_ptr_double(double %a, double %b, double %c, i32 %d, i32 %e, i32 %f, i32 %g, i32 %h, i32 %i, double* %p) #0 {
58   entry:
59     store volatile double %a, double* %p, align 8
60     store volatile double %b, double* %p, align 8
61     store volatile double %c, double* %p, align 8
62     ret void
63   }
65   define void @load_common_ptr(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
66   entry:
67     %g = load volatile i32, i32* %p, align 4
68     %h = load volatile i32, i32* %p, align 4
69     %i = load volatile i32, i32* %p, align 4
70     ret void
71   }
73   define void @load_common_ptr_float(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, float* %g) #0 {
74   entry:
75     %0 = load float, float* %g, align 4
76     %arrayidx1 = getelementptr inbounds float, float* %g, i32 1
77     %1 = load float, float* %arrayidx1, align 4
78     %arrayidx2 = getelementptr inbounds float, float* %g, i32 2
79     %2 = load float, float* %arrayidx2, align 4
80     tail call void @load_common_ptr_float_1(float %0, float %1, float %2)
81     ret void
82   }
84   declare void @load_common_ptr_float_1(float, float, float) #0
86   define void @load_common_ptr_double(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, double* %g) #0 {
87   entry:
88     %0 = load double, double* %g, align 8
89     %arrayidx1 = getelementptr inbounds double, double* %g, i32 1
90     %1 = load double, double* %arrayidx1, align 8
91     %arrayidx2 = getelementptr inbounds double, double* %g, i32 2
92     %2 = load double, double* %arrayidx2, align 8
93     tail call void @load_common_ptr_double_1(double %0, double %1, double %2)
94     ret void
95   }
97   declare void @load_common_ptr_double_1(double, double, double) #0
99   define void @store_large_offset(i32* %p) #0 {
100   entry:
101     %0 = getelementptr inbounds i32, i32* %p, i32 100
102     store volatile i32 1, i32* %0, align 4
103     %1 = getelementptr inbounds i32, i32* %p, i32 101
104     store volatile i32 3, i32* %1, align 4
105     %2 = getelementptr inbounds i32, i32* %p, i32 102
106     store volatile i32 5, i32* %2, align 4
107     %3 = getelementptr inbounds i32, i32* %p, i32 103
108     store volatile i32 7, i32* %3, align 4
109     ret void
110   }
112   define void @store_large_offset_float(float* %p, float %a, float %b, float %c, float %d) #0 {
113   entry:
114     %0 = getelementptr inbounds float, float* %p, i32 100
115     store volatile float %a, float* %0, align 4
116     %1 = getelementptr inbounds float, float* %p, i32 101
117     store volatile float %b, float* %1, align 4
118     %2 = getelementptr inbounds float, float* %p, i32 102
119     store volatile float %c, float* %2, align 4
120     %3 = getelementptr inbounds float, float* %p, i32 103
121     store volatile float %d, float* %3, align 4
122     ret void
123   }
125   define void @store_large_offset_double(double* %p, double %a, double %b, double %c, double %d) #0 {
126   entry:
127     %0 = getelementptr inbounds double, double* %p, i32 100
128     store volatile double %a, double* %0, align 8
129     %1 = getelementptr inbounds double, double* %p, i32 101
130     store volatile double %b, double* %1, align 8
131     %2 = getelementptr inbounds double, double* %p, i32 102
132     store volatile double %c, double* %2, align 8
133     %3 = getelementptr inbounds double, double* %p, i32 103
134     store volatile double %d, double* %3, align 8
135     ret void
136   }
138   define void @load_large_offset(i32* %p) #0 {
139   entry:
140     %0 = getelementptr inbounds i32, i32* %p, i32 100
141     %a = load volatile i32, i32* %0, align 4
142     %1 = getelementptr inbounds i32, i32* %p, i32 101
143     %b = load volatile i32, i32* %1, align 4
144     %2 = getelementptr inbounds i32, i32* %p, i32 102
145     %c = load volatile i32, i32* %2, align 4
146     %3 = getelementptr inbounds i32, i32* %p, i32 103
147     %d = load volatile i32, i32* %3, align 4
148     ret void
149   }
151   define void @load_large_offset_float(float* %p) #0 {
152   entry:
153     %arrayidx = getelementptr inbounds float, float* %p, i32 100
154     %0 = load float, float* %arrayidx, align 4
155     %arrayidx1 = getelementptr inbounds float, float* %p, i32 101
156     %1 = load float, float* %arrayidx1, align 4
157     %arrayidx2 = getelementptr inbounds float, float* %p, i32 102
158     %2 = load float, float* %arrayidx2, align 4
159     tail call void @load_large_offset_float_1(float %0, float %1, float %2)
160     ret void
161   }
163   declare void @load_large_offset_float_1(float, float, float) #0
165   define void @load_large_offset_double(double* %p) #0 {
166   entry:
167     %arrayidx = getelementptr inbounds double, double* %p, i32 100
168     %0 = load double, double* %arrayidx, align 8
169     %arrayidx1 = getelementptr inbounds double, double* %p, i32 101
170     %1 = load double, double* %arrayidx1, align 8
171     %arrayidx2 = getelementptr inbounds double, double* %p, i32 102
172     %2 = load double, double* %arrayidx2, align 8
173     tail call void @load_large_offset_double_1(double %0, double %1, double %2)
174     ret void
175   }
177   declare void @load_large_offset_double_1(double, double, double) #0
179   define void @store_common_value_no_opt(i32* %a) #0 {
180   entry:
181     store i32 0, i32* %a, align 4
182     ret void
183   }
185   define void @store_common_value_float_no_opt(float* %a, float %b, float %c, float %d, float %e, float %f, float %g, float %h) #0 {
186   entry:
187     store float %h, float* %a, align 4
188     ret void
189   }
191   define void @store_common_value_double_no_opt(double* %a, double %b, double %c, double %d, double %e, double %f, double %g, double %h) #0 {
192   entry:
193     store double %h, double* %a, align 8
194     ret void
195   }
197   define void @store_common_ptr_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
198   entry:
199     store volatile i32 1, i32* %p, align 4
200     ret void
201   }
203   define void @store_common_ptr_float_no_opt(float %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, float* %p) #0 {
204   entry:
205     store volatile float %a, float* %p, align 4
206     ret void
207   }
209   define void @store_common_ptr_double_no_opt(double %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, double* %p) #0 {
210   entry:
211     store volatile double %a, double* %p, align 8
212     ret void
213   }
215   define void @load_common_ptr_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
216   entry:
217     %g = load volatile i32, i32* %p, align 4
218     ret void
219   }
221   define float @load_common_ptr_float_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, float* %g) #0 {
222   entry:
223     %0 = load float, float* %g, align 4
224     ret float %0
225   }
227   define double @load_common_ptr_double_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, double* %g) #0 {
228   entry:
229     %0 = load double, double* %g, align 8
230     ret double %0
231   }
233   define void @store_large_offset_no_opt(i32* %p) #0 {
234   entry:
235     %0 = getelementptr inbounds i32, i32* %p, i32 100
236     store volatile i32 1, i32* %0, align 4
237     %1 = getelementptr inbounds i32, i32* %p, i32 101
238     store volatile i32 3, i32* %1, align 4
239     ret void
240   }
242   define void @store_large_offset_float_no_opt(float* %p, float %a, float %b) #0 {
243   entry:
244     %0 = getelementptr inbounds float, float* %p, i32 100
245     store volatile float %a, float* %0, align 4
246     %1 = getelementptr inbounds float, float* %p, i32 101
247     store volatile float %b, float* %1, align 4
248     ret void
249   }
251   define void @store_large_offset_double_no_opt(double* %p, double %a, double %b) #0 {
252   entry:
253     %0 = getelementptr inbounds double, double* %p, i32 100
254     store volatile double %a, double* %0, align 8
255     %1 = getelementptr inbounds double, double* %p, i32 101
256     store volatile double %b, double* %1, align 8
257     ret void
258   }
260   define void @load_large_offset_no_opt(i32* %p) #0 {
261   entry:
262     %0 = getelementptr inbounds i32, i32* %p, i32 100
263     %a = load volatile i32, i32* %0, align 4
264     %1 = getelementptr inbounds i32, i32* %p, i32 101
265     %b = load volatile i32, i32* %1, align 4
266     ret void
267   }
269   define { float, float } @load_large_offset_float_no_opt(float* %p) #0 {
270   entry:
271     %arrayidx = getelementptr inbounds float, float* %p, i32 100
272     %0 = load float, float* %arrayidx, align 4
273     %arrayidx1 = getelementptr inbounds float, float* %p, i32 101
274     %1 = load float, float* %arrayidx1, align 4
275     %2 = insertvalue { float, float } undef, float %0, 0
276     %3 = insertvalue { float, float } %2, float %1, 1
277     ret { float, float } %3
278   }
280   define { double, double } @load_large_offset_double_no_opt(double* %p) #0 {
281   entry:
282     %arrayidx = getelementptr inbounds double, double* %p, i32 100
283     %0 = load double, double* %arrayidx, align 8
284     %arrayidx1 = getelementptr inbounds double, double* %p, i32 101
285     %1 = load double, double* %arrayidx1, align 8
286     %2 = insertvalue { double, double } undef, double %0, 0
287     %3 = insertvalue { double, double } %2, double %1, 1
288     ret { double, double } %3
289   }
291   attributes #0 = { minsize "target-features"="+c,+f,+d" }
295 name:            store_common_value
296 tracksRegLiveness: true
297 body:             |
298   bb.0.entry:
299     liveins: $x10, $x11, $x12
301     ; RV32-LABEL: name: store_common_value
302     ; RV32: liveins: $x10, $x11, $x12
303     ; RV32-NEXT: {{  $}}
304     ; RV32-NEXT: $x13 = ADDI $x0, 0
305     ; RV32-NEXT: SW $x13, killed renamable $x10, 0 :: (store (s32) into %ir.a)
306     ; RV32-NEXT: SW $x13, killed renamable $x11, 0 :: (store (s32) into %ir.b)
307     ; RV32-NEXT: SW $x13, killed renamable $x12, 0 :: (store (s32) into %ir.c)
308     ; RV32-NEXT: PseudoRET
309     ; RV64-LABEL: name: store_common_value
310     ; RV64: liveins: $x10, $x11, $x12
311     ; RV64-NEXT: {{  $}}
312     ; RV64-NEXT: $x13 = ADDI $x0, 0
313     ; RV64-NEXT: SW $x13, killed renamable $x10, 0 :: (store (s32) into %ir.a)
314     ; RV64-NEXT: SW $x13, killed renamable $x11, 0 :: (store (s32) into %ir.b)
315     ; RV64-NEXT: SW $x13, killed renamable $x12, 0 :: (store (s32) into %ir.c)
316     ; RV64-NEXT: PseudoRET
317     SW $x0, killed renamable $x10, 0 :: (store (s32) into %ir.a)
318     SW $x0, killed renamable $x11, 0 :: (store (s32) into %ir.b)
319     SW $x0, killed renamable $x12, 0 :: (store (s32) into %ir.c)
320     PseudoRET
324 name:            store_common_value_float
325 tracksRegLiveness: true
326 body:             |
327   bb.0.entry:
328     liveins: $x10, $x11, $x12, $f16_f
330     ; RV32-LABEL: name: store_common_value_float
331     ; RV32: liveins: $x10, $x11, $x12, $f16_f
332     ; RV32-NEXT: {{  $}}
333     ; RV32-NEXT: $f15_f = FSGNJ_S $f16_f, $f16_f
334     ; RV32-NEXT: FSW $f15_f, killed renamable $x10, 0 :: (store (s32) into %ir.a)
335     ; RV32-NEXT: FSW $f15_f, killed renamable $x11, 0 :: (store (s32) into %ir.b)
336     ; RV32-NEXT: FSW killed $f15_f, killed renamable $x12, 0 :: (store (s32) into %ir.c)
337     ; RV32-NEXT: PseudoRET
338     ; RV64-LABEL: name: store_common_value_float
339     ; RV64: liveins: $x10, $x11, $x12, $f16_f
340     ; RV64-NEXT: {{  $}}
341     ; RV64-NEXT: FSW renamable $f16_f, killed renamable $x10, 0 :: (store (s32) into %ir.a)
342     ; RV64-NEXT: FSW renamable $f16_f, killed renamable $x11, 0 :: (store (s32) into %ir.b)
343     ; RV64-NEXT: FSW killed renamable $f16_f, killed renamable $x12, 0 :: (store (s32) into %ir.c)
344     ; RV64-NEXT: PseudoRET
345     FSW renamable $f16_f, killed renamable $x10, 0 :: (store (s32) into %ir.a)
346     FSW renamable $f16_f, killed renamable $x11, 0 :: (store (s32) into %ir.b)
347     FSW killed renamable $f16_f, killed renamable $x12, 0 :: (store (s32) into %ir.c)
348     PseudoRET
352 name:            store_common_value_double
353 tracksRegLiveness: true
354 body:             |
355   bb.0.entry:
356     liveins: $x10, $x11, $x12, $f16_d
358     ; RV32-LABEL: name: store_common_value_double
359     ; RV32: liveins: $x10, $x11, $x12, $f16_d
360     ; RV32-NEXT: {{  $}}
361     ; RV32-NEXT: $f15_d = FSGNJ_D $f16_d, $f16_d
362     ; RV32-NEXT: FSD $f15_d, killed renamable $x10, 0 :: (store (s64) into %ir.a)
363     ; RV32-NEXT: FSD $f15_d, killed renamable $x11, 0 :: (store (s64) into %ir.b)
364     ; RV32-NEXT: FSD killed $f15_d, killed renamable $x12, 0 :: (store (s64) into %ir.c)
365     ; RV32-NEXT: PseudoRET
366     ; RV64-LABEL: name: store_common_value_double
367     ; RV64: liveins: $x10, $x11, $x12, $f16_d
368     ; RV64-NEXT: {{  $}}
369     ; RV64-NEXT: $f15_d = FSGNJ_D $f16_d, $f16_d
370     ; RV64-NEXT: FSD $f15_d, killed renamable $x10, 0 :: (store (s64) into %ir.a)
371     ; RV64-NEXT: FSD $f15_d, killed renamable $x11, 0 :: (store (s64) into %ir.b)
372     ; RV64-NEXT: FSD killed $f15_d, killed renamable $x12, 0 :: (store (s64) into %ir.c)
373     ; RV64-NEXT: PseudoRET
374     FSD renamable $f16_d, killed renamable $x10, 0 :: (store (s64) into %ir.a)
375     FSD renamable $f16_d, killed renamable $x11, 0 :: (store (s64) into %ir.b)
376     FSD killed renamable $f16_d, killed renamable $x12, 0 :: (store (s64) into %ir.c)
377     PseudoRET
381 name:            store_common_ptr
382 tracksRegLiveness: true
383 body:             |
384   bb.0.entry:
385     liveins: $x16
387     ; RV32-LABEL: name: store_common_ptr
388     ; RV32: liveins: $x16
389     ; RV32-NEXT: {{  $}}
390     ; RV32-NEXT: renamable $x10 = ADDI $x0, 1
391     ; RV32-NEXT: $x11 = ADDI $x16, 0
392     ; RV32-NEXT: SW killed renamable $x10, $x11, 0 :: (volatile store (s32) into %ir.p)
393     ; RV32-NEXT: renamable $x10 = ADDI $x0, 3
394     ; RV32-NEXT: SW killed renamable $x10, $x11, 0 :: (volatile store (s32) into %ir.p)
395     ; RV32-NEXT: renamable $x10 = ADDI $x0, 5
396     ; RV32-NEXT: SW killed renamable $x10, killed $x11, 0 :: (volatile store (s32) into %ir.p)
397     ; RV32-NEXT: PseudoRET
398     ; RV64-LABEL: name: store_common_ptr
399     ; RV64: liveins: $x16
400     ; RV64-NEXT: {{  $}}
401     ; RV64-NEXT: renamable $x10 = ADDI $x0, 1
402     ; RV64-NEXT: $x11 = ADDI $x16, 0
403     ; RV64-NEXT: SW killed renamable $x10, $x11, 0 :: (volatile store (s32) into %ir.p)
404     ; RV64-NEXT: renamable $x10 = ADDI $x0, 3
405     ; RV64-NEXT: SW killed renamable $x10, $x11, 0 :: (volatile store (s32) into %ir.p)
406     ; RV64-NEXT: renamable $x10 = ADDI $x0, 5
407     ; RV64-NEXT: SW killed renamable $x10, killed $x11, 0 :: (volatile store (s32) into %ir.p)
408     ; RV64-NEXT: PseudoRET
409     renamable $x10 = ADDI $x0, 1
410     SW killed renamable $x10, renamable $x16, 0 :: (volatile store (s32) into %ir.p)
411     renamable $x10 = ADDI $x0, 3
412     SW killed renamable $x10, renamable $x16, 0 :: (volatile store (s32) into %ir.p)
413     renamable $x10 = ADDI $x0, 5
414     SW killed renamable $x10, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
415     PseudoRET
419 name:            store_common_ptr_self
420 tracksRegLiveness: true
421 body:             |
422   bb.0.entry:
423     liveins: $x16
425     ; RV32-LABEL: name: store_common_ptr_self
426     ; RV32: liveins: $x16
427     ; RV32-NEXT: {{  $}}
428     ; RV32-NEXT: renamable $x10 = ADDI $x0, 1
429     ; RV32-NEXT: $x11 = ADDI $x16, 0
430     ; RV32-NEXT: SW killed renamable $x10, $x11, 0 :: (volatile store (s32) into %ir.p)
431     ; RV32-NEXT: renamable $x10 = ADDI $x0, 3
432     ; RV32-NEXT: SW killed renamable $x10, $x11, 0 :: (volatile store (s32) into %ir.p)
433     ; RV32-NEXT: SW killed $x11, $x11, 0 :: (volatile store (s32) into %ir.q)
434     ; RV32-NEXT: PseudoRET
435     ; RV64-LABEL: name: store_common_ptr_self
436     ; RV64: liveins: $x16
437     ; RV64-NEXT: {{  $}}
438     ; RV64-NEXT: renamable $x10 = ADDI $x0, 1
439     ; RV64-NEXT: $x11 = ADDI $x16, 0
440     ; RV64-NEXT: SW killed renamable $x10, $x11, 0 :: (volatile store (s32) into %ir.p)
441     ; RV64-NEXT: renamable $x10 = ADDI $x0, 3
442     ; RV64-NEXT: SW killed renamable $x10, $x11, 0 :: (volatile store (s32) into %ir.p)
443     ; RV64-NEXT: SW killed $x11, $x11, 0 :: (volatile store (s32) into %ir.q)
444     ; RV64-NEXT: PseudoRET
445     renamable $x10 = ADDI $x0, 1
446     SW killed renamable $x10, renamable $x16, 0 :: (volatile store (s32) into %ir.p)
447     renamable $x10 = ADDI $x0, 3
448     SW killed renamable $x10, renamable $x16, 0 :: (volatile store (s32) into %ir.p)
449     SW killed renamable $x16, renamable $x16, 0 :: (volatile store (s32) into %ir.q)
450     PseudoRET
454 name:            store_common_ptr_float
455 tracksRegLiveness: true
456 body:             |
457   bb.0.entry:
458     liveins: $x16, $f10_f, $f11_f, $f12_f
460     ; RV32-LABEL: name: store_common_ptr_float
461     ; RV32: liveins: $x16, $f10_f, $f11_f, $f12_f
462     ; RV32-NEXT: {{  $}}
463     ; RV32-NEXT: $x10 = ADDI $x16, 0
464     ; RV32-NEXT: FSW killed renamable $f10_f, $x10, 0 :: (volatile store (s32) into %ir.p)
465     ; RV32-NEXT: FSW killed renamable $f11_f, $x10, 0 :: (volatile store (s32) into %ir.p)
466     ; RV32-NEXT: FSW killed renamable $f12_f, killed $x10, 0 :: (volatile store (s32) into %ir.p)
467     ; RV32-NEXT: PseudoRET
468     ; RV64-LABEL: name: store_common_ptr_float
469     ; RV64: liveins: $x16, $f10_f, $f11_f, $f12_f
470     ; RV64-NEXT: {{  $}}
471     ; RV64-NEXT: FSW killed renamable $f10_f, renamable $x16, 0 :: (volatile store (s32) into %ir.p)
472     ; RV64-NEXT: FSW killed renamable $f11_f, renamable $x16, 0 :: (volatile store (s32) into %ir.p)
473     ; RV64-NEXT: FSW killed renamable $f12_f, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
474     ; RV64-NEXT: PseudoRET
475     FSW killed renamable $f10_f, renamable $x16, 0 :: (volatile store (s32) into %ir.p)
476     FSW killed renamable $f11_f, renamable $x16, 0 :: (volatile store (s32) into %ir.p)
477     FSW killed renamable $f12_f, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
478     PseudoRET
482 name:            store_common_ptr_double
483 tracksRegLiveness: true
484 body:             |
485   bb.0.entry:
486     liveins: $x16, $f10_d, $f11_d, $f12_d
488     ; RV32-LABEL: name: store_common_ptr_double
489     ; RV32: liveins: $x16, $f10_d, $f11_d, $f12_d
490     ; RV32-NEXT: {{  $}}
491     ; RV32-NEXT: $x10 = ADDI $x16, 0
492     ; RV32-NEXT: FSD killed renamable $f10_d, $x10, 0 :: (volatile store (s64) into %ir.p)
493     ; RV32-NEXT: FSD killed renamable $f11_d, $x10, 0 :: (volatile store (s64) into %ir.p)
494     ; RV32-NEXT: FSD killed renamable $f12_d, killed $x10, 0 :: (volatile store (s64) into %ir.p)
495     ; RV32-NEXT: PseudoRET
496     ; RV64-LABEL: name: store_common_ptr_double
497     ; RV64: liveins: $x16, $f10_d, $f11_d, $f12_d
498     ; RV64-NEXT: {{  $}}
499     ; RV64-NEXT: $x10 = ADDI $x16, 0
500     ; RV64-NEXT: FSD killed renamable $f10_d, $x10, 0 :: (volatile store (s64) into %ir.p)
501     ; RV64-NEXT: FSD killed renamable $f11_d, $x10, 0 :: (volatile store (s64) into %ir.p)
502     ; RV64-NEXT: FSD killed renamable $f12_d, killed $x10, 0 :: (volatile store (s64) into %ir.p)
503     ; RV64-NEXT: PseudoRET
504     FSD killed renamable $f10_d, renamable $x16, 0 :: (volatile store (s64) into %ir.p)
505     FSD killed renamable $f11_d, renamable $x16, 0 :: (volatile store (s64) into %ir.p)
506     FSD killed renamable $f12_d, killed renamable $x16, 0 :: (volatile store (s64) into %ir.p)
507     PseudoRET
511 name:            load_common_ptr
512 tracksRegLiveness: true
513 body:             |
514   bb.0.entry:
515     liveins: $x16
517     ; RV32-LABEL: name: load_common_ptr
518     ; RV32: liveins: $x16
519     ; RV32-NEXT: {{  $}}
520     ; RV32-NEXT: $x11 = ADDI $x16, 0
521     ; RV32-NEXT: dead renamable $x10 = LW $x11, 0 :: (volatile load (s32) from %ir.p)
522     ; RV32-NEXT: dead renamable $x10 = LW $x11, 0 :: (volatile load (s32) from %ir.p)
523     ; RV32-NEXT: dead renamable $x10 = LW killed $x11, 0 :: (volatile load (s32) from %ir.p)
524     ; RV32-NEXT: PseudoRET
525     ; RV64-LABEL: name: load_common_ptr
526     ; RV64: liveins: $x16
527     ; RV64-NEXT: {{  $}}
528     ; RV64-NEXT: $x11 = ADDI $x16, 0
529     ; RV64-NEXT: dead renamable $x10 = LW $x11, 0 :: (volatile load (s32) from %ir.p)
530     ; RV64-NEXT: dead renamable $x10 = LW $x11, 0 :: (volatile load (s32) from %ir.p)
531     ; RV64-NEXT: dead renamable $x10 = LW killed $x11, 0 :: (volatile load (s32) from %ir.p)
532     ; RV64-NEXT: PseudoRET
533     dead renamable $x10 = LW renamable $x16, 0 :: (volatile load (s32) from %ir.p)
534     dead renamable $x10 = LW renamable $x16, 0 :: (volatile load (s32) from %ir.p)
535     dead renamable $x10 = LW killed renamable $x16, 0 :: (volatile load (s32) from %ir.p)
536     PseudoRET
540 name:            load_common_ptr_float
541 tracksRegLiveness: true
542 body:             |
543   bb.0.entry:
544     liveins: $x16
546     ; RV32-LABEL: name: load_common_ptr_float
547     ; RV32: liveins: $x16
548     ; RV32-NEXT: {{  $}}
549     ; RV32-NEXT: $x10 = ADDI $x16, 0
550     ; RV32-NEXT: renamable $f10_f = FLW $x10, 0 :: (load (s32) from %ir.g)
551     ; RV32-NEXT: renamable $f11_f = FLW $x10, 4 :: (load (s32) from %ir.arrayidx1)
552     ; RV32-NEXT: renamable $f12_f = FLW killed $x10, 8 :: (load (s32) from %ir.arrayidx2)
553     ; RV32-NEXT: PseudoTAIL target-flags(riscv-call) @load_common_ptr_float_1, implicit $x2, implicit $f10_f, implicit $f11_f, implicit $f12_f
554     ; RV64-LABEL: name: load_common_ptr_float
555     ; RV64: liveins: $x16
556     ; RV64-NEXT: {{  $}}
557     ; RV64-NEXT: renamable $f10_f = FLW renamable $x16, 0 :: (load (s32) from %ir.g)
558     ; RV64-NEXT: renamable $f11_f = FLW renamable $x16, 4 :: (load (s32) from %ir.arrayidx1)
559     ; RV64-NEXT: renamable $f12_f = FLW killed renamable $x16, 8 :: (load (s32) from %ir.arrayidx2)
560     ; RV64-NEXT: PseudoTAIL target-flags(riscv-call) @load_common_ptr_float_1, implicit $x2, implicit $f10_f, implicit $f11_f, implicit $f12_f
561     renamable $f10_f = FLW renamable $x16, 0 :: (load (s32) from %ir.g)
562     renamable $f11_f = FLW renamable $x16, 4 :: (load (s32) from %ir.arrayidx1)
563     renamable $f12_f = FLW killed renamable $x16, 8 :: (load (s32) from %ir.arrayidx2)
564     PseudoTAIL target-flags(riscv-call) @load_common_ptr_float_1, implicit $x2, implicit $f10_f, implicit $f11_f, implicit $f12_f
568 name:            load_common_ptr_double
569 tracksRegLiveness: true
570 body:             |
571   bb.0.entry:
572     liveins: $x16
574     ; RV32-LABEL: name: load_common_ptr_double
575     ; RV32: liveins: $x16
576     ; RV32-NEXT: {{  $}}
577     ; RV32-NEXT: $x10 = ADDI $x16, 0
578     ; RV32-NEXT: renamable $f10_d = FLD $x10, 0 :: (load (s64) from %ir.g)
579     ; RV32-NEXT: renamable $f11_d = FLD $x10, 8 :: (load (s64) from %ir.arrayidx1)
580     ; RV32-NEXT: renamable $f12_d = FLD killed $x10, 16 :: (load (s64) from %ir.arrayidx2)
581     ; RV32-NEXT: PseudoTAIL target-flags(riscv-call) @load_common_ptr_double_1, implicit $x2, implicit $f10_d, implicit $f11_d, implicit $f12_d
582     ; RV64-LABEL: name: load_common_ptr_double
583     ; RV64: liveins: $x16
584     ; RV64-NEXT: {{  $}}
585     ; RV64-NEXT: $x10 = ADDI $x16, 0
586     ; RV64-NEXT: renamable $f10_d = FLD $x10, 0 :: (load (s64) from %ir.g)
587     ; RV64-NEXT: renamable $f11_d = FLD $x10, 8 :: (load (s64) from %ir.arrayidx1)
588     ; RV64-NEXT: renamable $f12_d = FLD killed $x10, 16 :: (load (s64) from %ir.arrayidx2)
589     ; RV64-NEXT: PseudoTAIL target-flags(riscv-call) @load_common_ptr_double_1, implicit $x2, implicit $f10_d, implicit $f11_d, implicit $f12_d
590     renamable $f10_d = FLD renamable $x16, 0 :: (load (s64) from %ir.g)
591     renamable $f11_d = FLD renamable $x16, 8 :: (load (s64) from %ir.arrayidx1)
592     renamable $f12_d = FLD killed renamable $x16, 16 :: (load (s64) from %ir.arrayidx2)
593     PseudoTAIL target-flags(riscv-call) @load_common_ptr_double_1, implicit $x2, implicit $f10_d, implicit $f11_d, implicit $f12_d
597 name:            store_large_offset
598 tracksRegLiveness: true
599 body:             |
600   bb.0.entry:
601     liveins: $x10
603     ; RV32-LABEL: name: store_large_offset
604     ; RV32: liveins: $x10
605     ; RV32-NEXT: {{  $}}
606     ; RV32-NEXT: renamable $x11 = ADDI $x0, 1
607     ; RV32-NEXT: $x12 = ADDI $x10, 384
608     ; RV32-NEXT: SW killed renamable $x11, $x12, 16 :: (volatile store (s32) into %ir.0)
609     ; RV32-NEXT: renamable $x11 = ADDI $x0, 3
610     ; RV32-NEXT: SW killed renamable $x11, $x12, 20 :: (volatile store (s32) into %ir.1)
611     ; RV32-NEXT: renamable $x11 = ADDI $x0, 5
612     ; RV32-NEXT: SW killed renamable $x11, $x12, 24 :: (volatile store (s32) into %ir.2)
613     ; RV32-NEXT: renamable $x11 = ADDI $x0, 7
614     ; RV32-NEXT: SW killed renamable $x11, killed $x12, 28 :: (volatile store (s32) into %ir.3)
615     ; RV32-NEXT: PseudoRET
616     ; RV64-LABEL: name: store_large_offset
617     ; RV64: liveins: $x10
618     ; RV64-NEXT: {{  $}}
619     ; RV64-NEXT: renamable $x11 = ADDI $x0, 1
620     ; RV64-NEXT: $x12 = ADDI $x10, 384
621     ; RV64-NEXT: SW killed renamable $x11, $x12, 16 :: (volatile store (s32) into %ir.0)
622     ; RV64-NEXT: renamable $x11 = ADDI $x0, 3
623     ; RV64-NEXT: SW killed renamable $x11, $x12, 20 :: (volatile store (s32) into %ir.1)
624     ; RV64-NEXT: renamable $x11 = ADDI $x0, 5
625     ; RV64-NEXT: SW killed renamable $x11, $x12, 24 :: (volatile store (s32) into %ir.2)
626     ; RV64-NEXT: renamable $x11 = ADDI $x0, 7
627     ; RV64-NEXT: SW killed renamable $x11, killed $x12, 28 :: (volatile store (s32) into %ir.3)
628     ; RV64-NEXT: PseudoRET
629     renamable $x11 = ADDI $x0, 1
630     SW killed renamable $x11, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
631     renamable $x11 = ADDI $x0, 3
632     SW killed renamable $x11, renamable $x10, 404 :: (volatile store (s32) into %ir.1)
633     renamable $x11 = ADDI $x0, 5
634     SW killed renamable $x11, renamable $x10, 408 :: (volatile store (s32) into %ir.2)
635     renamable $x11 = ADDI $x0, 7
636     SW killed renamable $x11, killed renamable $x10, 412 :: (volatile store (s32) into %ir.3)
637     PseudoRET
641 name:            store_large_offset_float
642 tracksRegLiveness: true
643 body:             |
644   bb.0.entry:
645     liveins: $x10, $f10_f, $f11_f, $f12_f, $f13_f
647     ; RV32-LABEL: name: store_large_offset_float
648     ; RV32: liveins: $x10, $f10_f, $f11_f, $f12_f, $f13_f
649     ; RV32-NEXT: {{  $}}
650     ; RV32-NEXT: $x11 = ADDI $x10, 384
651     ; RV32-NEXT: FSW killed renamable $f10_f, $x11, 16 :: (volatile store (s32) into %ir.0)
652     ; RV32-NEXT: FSW killed renamable $f11_f, $x11, 20 :: (volatile store (s32) into %ir.1)
653     ; RV32-NEXT: FSW killed renamable $f12_f, $x11, 24 :: (volatile store (s32) into %ir.2)
654     ; RV32-NEXT: FSW killed renamable $f13_f, killed $x11, 28 :: (volatile store (s32) into %ir.3)
655     ; RV32-NEXT: PseudoRET
656     ; RV64-LABEL: name: store_large_offset_float
657     ; RV64: liveins: $x10, $f10_f, $f11_f, $f12_f, $f13_f
658     ; RV64-NEXT: {{  $}}
659     ; RV64-NEXT: FSW killed renamable $f10_f, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
660     ; RV64-NEXT: FSW killed renamable $f11_f, renamable $x10, 404 :: (volatile store (s32) into %ir.1)
661     ; RV64-NEXT: FSW killed renamable $f12_f, renamable $x10, 408 :: (volatile store (s32) into %ir.2)
662     ; RV64-NEXT: FSW killed renamable $f13_f, killed renamable $x10, 412 :: (volatile store (s32) into %ir.3)
663     ; RV64-NEXT: PseudoRET
664     FSW killed renamable $f10_f, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
665     FSW killed renamable $f11_f, renamable $x10, 404 :: (volatile store (s32) into %ir.1)
666     FSW killed renamable $f12_f, renamable $x10, 408 :: (volatile store (s32) into %ir.2)
667     FSW killed renamable $f13_f, killed renamable $x10, 412 :: (volatile store (s32) into %ir.3)
668     PseudoRET
672 name:            store_large_offset_double
673 tracksRegLiveness: true
674 body:             |
675   bb.0.entry:
676     liveins: $x10, $f10_d, $f11_d, $f12_d, $f13_d
678     ; RV32-LABEL: name: store_large_offset_double
679     ; RV32: liveins: $x10, $f10_d, $f11_d, $f12_d, $f13_d
680     ; RV32-NEXT: {{  $}}
681     ; RV32-NEXT: $x11 = ADDI $x10, 768
682     ; RV32-NEXT: FSD killed renamable $f10_d, $x11, 32 :: (volatile store (s64) into %ir.0)
683     ; RV32-NEXT: FSD killed renamable $f11_d, $x11, 40 :: (volatile store (s64) into %ir.1)
684     ; RV32-NEXT: FSD killed renamable $f12_d, $x11, 48 :: (volatile store (s64) into %ir.2)
685     ; RV32-NEXT: FSD killed renamable $f13_d, killed $x11, 56 :: (volatile store (s64) into %ir.3)
686     ; RV32-NEXT: PseudoRET
687     ; RV64-LABEL: name: store_large_offset_double
688     ; RV64: liveins: $x10, $f10_d, $f11_d, $f12_d, $f13_d
689     ; RV64-NEXT: {{  $}}
690     ; RV64-NEXT: $x11 = ADDI $x10, 768
691     ; RV64-NEXT: FSD killed renamable $f10_d, $x11, 32 :: (volatile store (s64) into %ir.0)
692     ; RV64-NEXT: FSD killed renamable $f11_d, $x11, 40 :: (volatile store (s64) into %ir.1)
693     ; RV64-NEXT: FSD killed renamable $f12_d, $x11, 48 :: (volatile store (s64) into %ir.2)
694     ; RV64-NEXT: FSD killed renamable $f13_d, killed $x11, 56 :: (volatile store (s64) into %ir.3)
695     ; RV64-NEXT: PseudoRET
696     FSD killed renamable $f10_d, renamable $x10, 800 :: (volatile store (s64) into %ir.0)
697     FSD killed renamable $f11_d, renamable $x10, 808 :: (volatile store (s64) into %ir.1)
698     FSD killed renamable $f12_d, renamable $x10, 816 :: (volatile store (s64) into %ir.2)
699     FSD killed renamable $f13_d, killed renamable $x10, 824 :: (volatile store (s64) into %ir.3)
700     PseudoRET
704 name:            load_large_offset
705 tracksRegLiveness: true
706 body:             |
707   bb.0.entry:
708     liveins: $x10
710     ; RV32-LABEL: name: load_large_offset
711     ; RV32: liveins: $x10
712     ; RV32-NEXT: {{  $}}
713     ; RV32-NEXT: $x12 = ADDI $x10, 384
714     ; RV32-NEXT: dead renamable $x11 = LW $x12, 16 :: (volatile load (s32) from %ir.0)
715     ; RV32-NEXT: dead renamable $x11 = LW $x12, 20 :: (volatile load (s32) from %ir.1)
716     ; RV32-NEXT: dead renamable $x11 = LW $x12, 24 :: (volatile load (s32) from %ir.2)
717     ; RV32-NEXT: dead renamable $x10 = LW killed $x12, 28 :: (volatile load (s32) from %ir.3)
718     ; RV32-NEXT: PseudoRET
719     ; RV64-LABEL: name: load_large_offset
720     ; RV64: liveins: $x10
721     ; RV64-NEXT: {{  $}}
722     ; RV64-NEXT: $x12 = ADDI $x10, 384
723     ; RV64-NEXT: dead renamable $x11 = LW $x12, 16 :: (volatile load (s32) from %ir.0)
724     ; RV64-NEXT: dead renamable $x11 = LW $x12, 20 :: (volatile load (s32) from %ir.1)
725     ; RV64-NEXT: dead renamable $x11 = LW $x12, 24 :: (volatile load (s32) from %ir.2)
726     ; RV64-NEXT: dead renamable $x10 = LW killed $x12, 28 :: (volatile load (s32) from %ir.3)
727     ; RV64-NEXT: PseudoRET
728     dead renamable $x11 = LW renamable $x10, 400 :: (volatile load (s32) from %ir.0)
729     dead renamable $x11 = LW renamable $x10, 404 :: (volatile load (s32) from %ir.1)
730     dead renamable $x11 = LW renamable $x10, 408 :: (volatile load (s32) from %ir.2)
731     dead renamable $x10 = LW killed renamable $x10, 412 :: (volatile load (s32) from %ir.3)
732     PseudoRET
736 name:            load_large_offset_float
737 tracksRegLiveness: true
738 body:             |
739   bb.0.entry:
740     liveins: $x10
742     ; RV32-LABEL: name: load_large_offset_float
743     ; RV32: liveins: $x10
744     ; RV32-NEXT: {{  $}}
745     ; RV32-NEXT: $x11 = ADDI $x10, 384
746     ; RV32-NEXT: renamable $f10_f = FLW $x11, 16 :: (load (s32) from %ir.arrayidx)
747     ; RV32-NEXT: renamable $f11_f = FLW $x11, 20 :: (load (s32) from %ir.arrayidx1)
748     ; RV32-NEXT: renamable $f12_f = FLW killed $x11, 24 :: (load (s32) from %ir.arrayidx2)
749     ; RV32-NEXT: PseudoTAIL target-flags(riscv-call) @load_large_offset_float_1, implicit $x2, implicit $f10_f, implicit $f11_f, implicit $f12_f
750     ; RV64-LABEL: name: load_large_offset_float
751     ; RV64: liveins: $x10
752     ; RV64-NEXT: {{  $}}
753     ; RV64-NEXT: renamable $f10_f = FLW renamable $x10, 400 :: (load (s32) from %ir.arrayidx)
754     ; RV64-NEXT: renamable $f11_f = FLW renamable $x10, 404 :: (load (s32) from %ir.arrayidx1)
755     ; RV64-NEXT: renamable $f12_f = FLW killed renamable $x10, 408 :: (load (s32) from %ir.arrayidx2)
756     ; RV64-NEXT: PseudoTAIL target-flags(riscv-call) @load_large_offset_float_1, implicit $x2, implicit $f10_f, implicit $f11_f, implicit $f12_f
757     renamable $f10_f = FLW renamable $x10, 400 :: (load (s32) from %ir.arrayidx)
758     renamable $f11_f = FLW renamable $x10, 404 :: (load (s32) from %ir.arrayidx1)
759     renamable $f12_f = FLW killed renamable $x10, 408 :: (load (s32) from %ir.arrayidx2)
760     PseudoTAIL target-flags(riscv-call) @load_large_offset_float_1, implicit $x2, implicit $f10_f, implicit $f11_f, implicit $f12_f
764 name:            load_large_offset_double
765 tracksRegLiveness: true
766 body:             |
767   bb.0.entry:
768     liveins: $x10
770     ; RV32-LABEL: name: load_large_offset_double
771     ; RV32: liveins: $x10
772     ; RV32-NEXT: {{  $}}
773     ; RV32-NEXT: $x11 = ADDI $x10, 768
774     ; RV32-NEXT: renamable $f10_d = FLD $x11, 32 :: (load (s64) from %ir.arrayidx)
775     ; RV32-NEXT: renamable $f11_d = FLD $x11, 40 :: (load (s64) from %ir.arrayidx1)
776     ; RV32-NEXT: renamable $f12_d = FLD killed $x11, 48 :: (load (s64) from %ir.arrayidx2)
777     ; RV32-NEXT: PseudoTAIL target-flags(riscv-call) @load_large_offset_double_1, implicit $x2, implicit $f10_d, implicit $f11_d, implicit $f12_d
778     ; RV64-LABEL: name: load_large_offset_double
779     ; RV64: liveins: $x10
780     ; RV64-NEXT: {{  $}}
781     ; RV64-NEXT: $x11 = ADDI $x10, 768
782     ; RV64-NEXT: renamable $f10_d = FLD $x11, 32 :: (load (s64) from %ir.arrayidx)
783     ; RV64-NEXT: renamable $f11_d = FLD $x11, 40 :: (load (s64) from %ir.arrayidx1)
784     ; RV64-NEXT: renamable $f12_d = FLD killed $x11, 48 :: (load (s64) from %ir.arrayidx2)
785     ; RV64-NEXT: PseudoTAIL target-flags(riscv-call) @load_large_offset_double_1, implicit $x2, implicit $f10_d, implicit $f11_d, implicit $f12_d
786     renamable $f10_d = FLD renamable $x10, 800 :: (load (s64) from %ir.arrayidx)
787     renamable $f11_d = FLD renamable $x10, 808 :: (load (s64) from %ir.arrayidx1)
788     renamable $f12_d = FLD killed renamable $x10, 816 :: (load (s64) from %ir.arrayidx2)
789     PseudoTAIL target-flags(riscv-call) @load_large_offset_double_1, implicit $x2, implicit $f10_d, implicit $f11_d, implicit $f12_d
793 name:            store_common_value_no_opt
794 tracksRegLiveness: true
795 body:             |
796   bb.0.entry:
797     liveins: $x10
799     ; RV32-LABEL: name: store_common_value_no_opt
800     ; RV32: liveins: $x10
801     ; RV32-NEXT: {{  $}}
802     ; RV32-NEXT: SW $x0, killed renamable $x10, 0 :: (store (s32) into %ir.a)
803     ; RV32-NEXT: PseudoRET
804     ; RV64-LABEL: name: store_common_value_no_opt
805     ; RV64: liveins: $x10
806     ; RV64-NEXT: {{  $}}
807     ; RV64-NEXT: SW $x0, killed renamable $x10, 0 :: (store (s32) into %ir.a)
808     ; RV64-NEXT: PseudoRET
809     SW $x0, killed renamable $x10, 0 :: (store (s32) into %ir.a)
810     PseudoRET
814 name:            store_common_value_float_no_opt
815 tracksRegLiveness: true
816 body:             |
817   bb.0.entry:
818     liveins: $x10, $f16_f
820     ; RV32-LABEL: name: store_common_value_float_no_opt
821     ; RV32: liveins: $x10, $f16_f
822     ; RV32-NEXT: {{  $}}
823     ; RV32-NEXT: FSW killed renamable $f16_f, killed renamable $x10, 0 :: (store (s32) into %ir.a)
824     ; RV32-NEXT: PseudoRET
825     ; RV64-LABEL: name: store_common_value_float_no_opt
826     ; RV64: liveins: $x10, $f16_f
827     ; RV64-NEXT: {{  $}}
828     ; RV64-NEXT: FSW killed renamable $f16_f, killed renamable $x10, 0 :: (store (s32) into %ir.a)
829     ; RV64-NEXT: PseudoRET
830     FSW killed renamable $f16_f, killed renamable $x10, 0 :: (store (s32) into %ir.a)
831     PseudoRET
835 name:            store_common_value_double_no_opt
836 tracksRegLiveness: true
837 body:             |
838   bb.0.entry:
839     liveins: $x10, $f16_d
841     ; RV32-LABEL: name: store_common_value_double_no_opt
842     ; RV32: liveins: $x10, $f16_d
843     ; RV32-NEXT: {{  $}}
844     ; RV32-NEXT: FSD killed renamable $f16_d, killed renamable $x10, 0 :: (store (s64) into %ir.a)
845     ; RV32-NEXT: PseudoRET
846     ; RV64-LABEL: name: store_common_value_double_no_opt
847     ; RV64: liveins: $x10, $f16_d
848     ; RV64-NEXT: {{  $}}
849     ; RV64-NEXT: FSD killed renamable $f16_d, killed renamable $x10, 0 :: (store (s64) into %ir.a)
850     ; RV64-NEXT: PseudoRET
851     FSD killed renamable $f16_d, killed renamable $x10, 0 :: (store (s64) into %ir.a)
852     PseudoRET
856 name:            store_common_ptr_no_opt
857 tracksRegLiveness: true
858 body:             |
859   bb.0.entry:
860     liveins: $x16
862     ; RV32-LABEL: name: store_common_ptr_no_opt
863     ; RV32: liveins: $x16
864     ; RV32-NEXT: {{  $}}
865     ; RV32-NEXT: renamable $x10 = ADDI $x0, 1
866     ; RV32-NEXT: SW killed renamable $x10, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
867     ; RV32-NEXT: PseudoRET
868     ; RV64-LABEL: name: store_common_ptr_no_opt
869     ; RV64: liveins: $x16
870     ; RV64-NEXT: {{  $}}
871     ; RV64-NEXT: renamable $x10 = ADDI $x0, 1
872     ; RV64-NEXT: SW killed renamable $x10, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
873     ; RV64-NEXT: PseudoRET
874     renamable $x10 = ADDI $x0, 1
875     SW killed renamable $x10, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
876     PseudoRET
880 name:            store_common_ptr_float_no_opt
881 tracksRegLiveness: true
882 body:             |
883   bb.0.entry:
884     liveins: $x16, $f10_f
886     ; RV32-LABEL: name: store_common_ptr_float_no_opt
887     ; RV32: liveins: $x16, $f10_f
888     ; RV32-NEXT: {{  $}}
889     ; RV32-NEXT: FSW killed renamable $f10_f, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
890     ; RV32-NEXT: PseudoRET
891     ; RV64-LABEL: name: store_common_ptr_float_no_opt
892     ; RV64: liveins: $x16, $f10_f
893     ; RV64-NEXT: {{  $}}
894     ; RV64-NEXT: FSW killed renamable $f10_f, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
895     ; RV64-NEXT: PseudoRET
896     FSW killed renamable $f10_f, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)
897     PseudoRET
901 name:            store_common_ptr_double_no_opt
902 tracksRegLiveness: true
903 body:             |
904   bb.0.entry:
905     liveins: $x16, $f10_d
907     ; RV32-LABEL: name: store_common_ptr_double_no_opt
908     ; RV32: liveins: $x16, $f10_d
909     ; RV32-NEXT: {{  $}}
910     ; RV32-NEXT: FSD killed renamable $f10_d, killed renamable $x16, 0 :: (volatile store (s64) into %ir.p)
911     ; RV32-NEXT: PseudoRET
912     ; RV64-LABEL: name: store_common_ptr_double_no_opt
913     ; RV64: liveins: $x16, $f10_d
914     ; RV64-NEXT: {{  $}}
915     ; RV64-NEXT: FSD killed renamable $f10_d, killed renamable $x16, 0 :: (volatile store (s64) into %ir.p)
916     ; RV64-NEXT: PseudoRET
917     FSD killed renamable $f10_d, killed renamable $x16, 0 :: (volatile store (s64) into %ir.p)
918     PseudoRET
922 name:            load_common_ptr_no_opt
923 tracksRegLiveness: true
924 body:             |
925   bb.0.entry:
926     liveins: $x16
928     ; RV32-LABEL: name: load_common_ptr_no_opt
929     ; RV32: liveins: $x16
930     ; RV32-NEXT: {{  $}}
931     ; RV32-NEXT: dead renamable $x10 = LW killed renamable $x16, 0 :: (volatile load (s32) from %ir.p)
932     ; RV32-NEXT: PseudoRET
933     ; RV64-LABEL: name: load_common_ptr_no_opt
934     ; RV64: liveins: $x16
935     ; RV64-NEXT: {{  $}}
936     ; RV64-NEXT: dead renamable $x10 = LW killed renamable $x16, 0 :: (volatile load (s32) from %ir.p)
937     ; RV64-NEXT: PseudoRET
938     dead renamable $x10 = LW killed renamable $x16, 0 :: (volatile load (s32) from %ir.p)
939     PseudoRET
943 name:            load_common_ptr_float_no_opt
944 tracksRegLiveness: true
945 body:             |
946   bb.0.entry:
947     liveins: $x16
949     ; RV32-LABEL: name: load_common_ptr_float_no_opt
950     ; RV32: liveins: $x16
951     ; RV32-NEXT: {{  $}}
952     ; RV32-NEXT: renamable $f10_f = FLW killed renamable $x16, 0 :: (load (s32) from %ir.g)
953     ; RV32-NEXT: PseudoRET implicit $f10_f
954     ; RV64-LABEL: name: load_common_ptr_float_no_opt
955     ; RV64: liveins: $x16
956     ; RV64-NEXT: {{  $}}
957     ; RV64-NEXT: renamable $f10_f = FLW killed renamable $x16, 0 :: (load (s32) from %ir.g)
958     ; RV64-NEXT: PseudoRET implicit $f10_f
959     renamable $f10_f = FLW killed renamable $x16, 0 :: (load (s32) from %ir.g)
960     PseudoRET implicit $f10_f
964 name:            load_common_ptr_double_no_opt
965 tracksRegLiveness: true
966 body:             |
967   bb.0.entry:
968     liveins: $x16
970     ; RV32-LABEL: name: load_common_ptr_double_no_opt
971     ; RV32: liveins: $x16
972     ; RV32-NEXT: {{  $}}
973     ; RV32-NEXT: renamable $f10_d = FLD killed renamable $x16, 0 :: (load (s64) from %ir.g)
974     ; RV32-NEXT: PseudoRET implicit $f10_d
975     ; RV64-LABEL: name: load_common_ptr_double_no_opt
976     ; RV64: liveins: $x16
977     ; RV64-NEXT: {{  $}}
978     ; RV64-NEXT: renamable $f10_d = FLD killed renamable $x16, 0 :: (load (s64) from %ir.g)
979     ; RV64-NEXT: PseudoRET implicit $f10_d
980     renamable $f10_d = FLD killed renamable $x16, 0 :: (load (s64) from %ir.g)
981     PseudoRET implicit $f10_d
985 name:            store_large_offset_no_opt
986 tracksRegLiveness: true
987 body:             |
988   bb.0.entry:
989     liveins: $x10
991     ; RV32-LABEL: name: store_large_offset_no_opt
992     ; RV32: liveins: $x10
993     ; RV32-NEXT: {{  $}}
994     ; RV32-NEXT: renamable $x11 = ADDI $x0, 1
995     ; RV32-NEXT: SW killed renamable $x11, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
996     ; RV32-NEXT: renamable $x11 = ADDI $x0, 3
997     ; RV32-NEXT: SW killed renamable $x11, killed renamable $x10, 404 :: (volatile store (s32) into %ir.1)
998     ; RV32-NEXT: PseudoRET
999     ; RV64-LABEL: name: store_large_offset_no_opt
1000     ; RV64: liveins: $x10
1001     ; RV64-NEXT: {{  $}}
1002     ; RV64-NEXT: renamable $x11 = ADDI $x0, 1
1003     ; RV64-NEXT: SW killed renamable $x11, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
1004     ; RV64-NEXT: renamable $x11 = ADDI $x0, 3
1005     ; RV64-NEXT: SW killed renamable $x11, killed renamable $x10, 404 :: (volatile store (s32) into %ir.1)
1006     ; RV64-NEXT: PseudoRET
1007     renamable $x11 = ADDI $x0, 1
1008     SW killed renamable $x11, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
1009     renamable $x11 = ADDI $x0, 3
1010     SW killed renamable $x11, killed renamable $x10, 404 :: (volatile store (s32) into %ir.1)
1011     PseudoRET
1015 name:            store_large_offset_float_no_opt
1016 tracksRegLiveness: true
1017 body:             |
1018   bb.0.entry:
1019     liveins: $x10, $f10_f, $f11_f
1021     ; RV32-LABEL: name: store_large_offset_float_no_opt
1022     ; RV32: liveins: $x10, $f10_f, $f11_f
1023     ; RV32-NEXT: {{  $}}
1024     ; RV32-NEXT: FSW killed renamable $f10_f, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
1025     ; RV32-NEXT: FSW killed renamable $f11_f, killed renamable $x10, 404 :: (volatile store (s32) into %ir.1)
1026     ; RV32-NEXT: PseudoRET
1027     ; RV64-LABEL: name: store_large_offset_float_no_opt
1028     ; RV64: liveins: $x10, $f10_f, $f11_f
1029     ; RV64-NEXT: {{  $}}
1030     ; RV64-NEXT: FSW killed renamable $f10_f, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
1031     ; RV64-NEXT: FSW killed renamable $f11_f, killed renamable $x10, 404 :: (volatile store (s32) into %ir.1)
1032     ; RV64-NEXT: PseudoRET
1033     FSW killed renamable $f10_f, renamable $x10, 400 :: (volatile store (s32) into %ir.0)
1034     FSW killed renamable $f11_f, killed renamable $x10, 404 :: (volatile store (s32) into %ir.1)
1035     PseudoRET
1039 name:            store_large_offset_double_no_opt
1040 tracksRegLiveness: true
1041 body:             |
1042   bb.0.entry:
1043     liveins: $x10, $f10_d, $f11_d
1045     ; RV32-LABEL: name: store_large_offset_double_no_opt
1046     ; RV32: liveins: $x10, $f10_d, $f11_d
1047     ; RV32-NEXT: {{  $}}
1048     ; RV32-NEXT: FSD killed renamable $f10_d, renamable $x10, 800 :: (volatile store (s64) into %ir.0)
1049     ; RV32-NEXT: FSD killed renamable $f11_d, killed renamable $x10, 808 :: (volatile store (s64) into %ir.1)
1050     ; RV32-NEXT: PseudoRET
1051     ; RV64-LABEL: name: store_large_offset_double_no_opt
1052     ; RV64: liveins: $x10, $f10_d, $f11_d
1053     ; RV64-NEXT: {{  $}}
1054     ; RV64-NEXT: FSD killed renamable $f10_d, renamable $x10, 800 :: (volatile store (s64) into %ir.0)
1055     ; RV64-NEXT: FSD killed renamable $f11_d, killed renamable $x10, 808 :: (volatile store (s64) into %ir.1)
1056     ; RV64-NEXT: PseudoRET
1057     FSD killed renamable $f10_d, renamable $x10, 800 :: (volatile store (s64) into %ir.0)
1058     FSD killed renamable $f11_d, killed renamable $x10, 808 :: (volatile store (s64) into %ir.1)
1059     PseudoRET
1063 name:            load_large_offset_no_opt
1064 tracksRegLiveness: true
1065 body:             |
1066   bb.0.entry:
1067     liveins: $x10
1069     ; RV32-LABEL: name: load_large_offset_no_opt
1070     ; RV32: liveins: $x10
1071     ; RV32-NEXT: {{  $}}
1072     ; RV32-NEXT: dead renamable $x11 = LW renamable $x10, 400 :: (volatile load (s32) from %ir.0)
1073     ; RV32-NEXT: dead renamable $x10 = LW killed renamable $x10, 404 :: (volatile load (s32) from %ir.1)
1074     ; RV32-NEXT: PseudoRET
1075     ; RV64-LABEL: name: load_large_offset_no_opt
1076     ; RV64: liveins: $x10
1077     ; RV64-NEXT: {{  $}}
1078     ; RV64-NEXT: dead renamable $x11 = LW renamable $x10, 400 :: (volatile load (s32) from %ir.0)
1079     ; RV64-NEXT: dead renamable $x10 = LW killed renamable $x10, 404 :: (volatile load (s32) from %ir.1)
1080     ; RV64-NEXT: PseudoRET
1081     dead renamable $x11 = LW renamable $x10, 400 :: (volatile load (s32) from %ir.0)
1082     dead renamable $x10 = LW killed renamable $x10, 404 :: (volatile load (s32) from %ir.1)
1083     PseudoRET
1087 name:            load_large_offset_float_no_opt
1088 tracksRegLiveness: true
1089 body:             |
1090   bb.0.entry:
1091     liveins: $x10
1093     ; RV32-LABEL: name: load_large_offset_float_no_opt
1094     ; RV32: liveins: $x10
1095     ; RV32-NEXT: {{  $}}
1096     ; RV32-NEXT: renamable $f10_f = FLW renamable $x10, 400 :: (load (s32) from %ir.arrayidx)
1097     ; RV32-NEXT: renamable $f11_f = FLW killed renamable $x10, 404 :: (load (s32) from %ir.arrayidx1)
1098     ; RV32-NEXT: PseudoRET implicit $f10_f, implicit $f11_f
1099     ; RV64-LABEL: name: load_large_offset_float_no_opt
1100     ; RV64: liveins: $x10
1101     ; RV64-NEXT: {{  $}}
1102     ; RV64-NEXT: renamable $f10_f = FLW renamable $x10, 400 :: (load (s32) from %ir.arrayidx)
1103     ; RV64-NEXT: renamable $f11_f = FLW killed renamable $x10, 404 :: (load (s32) from %ir.arrayidx1)
1104     ; RV64-NEXT: PseudoRET implicit $f10_f, implicit $f11_f
1105     renamable $f10_f = FLW renamable $x10, 400 :: (load (s32) from %ir.arrayidx)
1106     renamable $f11_f = FLW killed renamable $x10, 404 :: (load (s32) from %ir.arrayidx1)
1107     PseudoRET implicit $f10_f, implicit $f11_f
1111 name:            load_large_offset_double_no_opt
1112 tracksRegLiveness: true
1113 body:             |
1114   bb.0.entry:
1115     liveins: $x10
1117     ; RV32-LABEL: name: load_large_offset_double_no_opt
1118     ; RV32: liveins: $x10
1119     ; RV32-NEXT: {{  $}}
1120     ; RV32-NEXT: renamable $f10_d = FLD renamable $x10, 800 :: (load (s64) from %ir.arrayidx)
1121     ; RV32-NEXT: renamable $f11_d = FLD killed renamable $x10, 808 :: (load (s64) from %ir.arrayidx1)
1122     ; RV32-NEXT: PseudoRET implicit $f10_d, implicit $f11_d
1123     ; RV64-LABEL: name: load_large_offset_double_no_opt
1124     ; RV64: liveins: $x10
1125     ; RV64-NEXT: {{  $}}
1126     ; RV64-NEXT: renamable $f10_d = FLD renamable $x10, 800 :: (load (s64) from %ir.arrayidx)
1127     ; RV64-NEXT: renamable $f11_d = FLD killed renamable $x10, 808 :: (load (s64) from %ir.arrayidx1)
1128     ; RV64-NEXT: PseudoRET implicit $f10_d, implicit $f11_d
1129     renamable $f10_d = FLD renamable $x10, 800 :: (load (s64) from %ir.arrayidx)
1130     renamable $f11_d = FLD killed renamable $x10, 808 :: (load (s64) from %ir.arrayidx1)
1131     PseudoRET implicit $f10_d, implicit $f11_d