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
8 define void @store_common_value(i32* %a, i32* %b, i32* %c) #0 {
10 store i32 0, i32* %a, align 4
11 store i32 0, i32* %b, align 4
12 store i32 0, i32* %c, align 4
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 {
18 store float %j, float* %a, align 4
19 store float %j, float* %b, align 4
20 store float %j, float* %c, align 4
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 {
26 store double %j, double* %a, align 8
27 store double %j, double* %b, align 8
28 store double %j, double* %c, align 8
32 define void @store_common_ptr(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
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
40 define void @store_common_ptr_self(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
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
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 {
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
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 {
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
65 define void @load_common_ptr(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
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
73 define void @load_common_ptr_float(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, float* %g) #0 {
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)
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 {
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)
97 declare void @load_common_ptr_double_1(double, double, double) #0
99 define void @store_large_offset(i32* %p) #0 {
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
112 define void @store_large_offset_float(float* %p, float %a, float %b, float %c, float %d) #0 {
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
125 define void @store_large_offset_double(double* %p, double %a, double %b, double %c, double %d) #0 {
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
138 define void @load_large_offset(i32* %p) #0 {
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
151 define void @load_large_offset_float(float* %p) #0 {
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)
163 declare void @load_large_offset_float_1(float, float, float) #0
165 define void @load_large_offset_double(double* %p) #0 {
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)
177 declare void @load_large_offset_double_1(double, double, double) #0
179 define void @store_common_value_no_opt(i32* %a) #0 {
181 store i32 0, i32* %a, align 4
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 {
187 store float %h, float* %a, align 4
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 {
193 store double %h, double* %a, align 8
197 define void @store_common_ptr_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
199 store volatile i32 1, i32* %p, align 4
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 {
205 store volatile float %a, float* %p, align 4
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 {
211 store volatile double %a, double* %p, align 8
215 define void @load_common_ptr_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32* %p) #0 {
217 %g = load volatile i32, i32* %p, align 4
221 define float @load_common_ptr_float_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, float* %g) #0 {
223 %0 = load float, float* %g, align 4
227 define double @load_common_ptr_double_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, double* %g) #0 {
229 %0 = load double, double* %g, align 8
233 define void @store_large_offset_no_opt(i32* %p) #0 {
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
242 define void @store_large_offset_float_no_opt(float* %p, float %a, float %b) #0 {
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
251 define void @store_large_offset_double_no_opt(double* %p, double %a, double %b) #0 {
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
260 define void @load_large_offset_no_opt(i32* %p) #0 {
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
269 define { float, float } @load_large_offset_float_no_opt(float* %p) #0 {
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
280 define { double, double } @load_large_offset_double_no_opt(double* %p) #0 {
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
291 attributes #0 = { minsize "target-features"="+c,+f,+d" }
295 name: store_common_value
296 tracksRegLiveness: true
299 liveins: $x10, $x11, $x12
301 ; RV32-LABEL: name: store_common_value
302 ; RV32: liveins: $x10, $x11, $x12
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
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)
324 name: store_common_value_float
325 tracksRegLiveness: true
328 liveins: $x10, $x11, $x12, $f16_f
330 ; RV32-LABEL: name: store_common_value_float
331 ; RV32: liveins: $x10, $x11, $x12, $f16_f
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
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)
352 name: store_common_value_double
353 tracksRegLiveness: true
356 liveins: $x10, $x11, $x12, $f16_d
358 ; RV32-LABEL: name: store_common_value_double
359 ; RV32: liveins: $x10, $x11, $x12, $f16_d
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
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)
381 name: store_common_ptr
382 tracksRegLiveness: true
387 ; RV32-LABEL: name: store_common_ptr
388 ; RV32: liveins: $x16
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
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)
419 name: store_common_ptr_self
420 tracksRegLiveness: true
425 ; RV32-LABEL: name: store_common_ptr_self
426 ; RV32: liveins: $x16
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
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)
454 name: store_common_ptr_float
455 tracksRegLiveness: true
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
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
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)
482 name: store_common_ptr_double
483 tracksRegLiveness: true
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
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
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)
511 name: load_common_ptr
512 tracksRegLiveness: true
517 ; RV32-LABEL: name: load_common_ptr
518 ; RV32: liveins: $x16
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
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)
540 name: load_common_ptr_float
541 tracksRegLiveness: true
546 ; RV32-LABEL: name: load_common_ptr_float
547 ; RV32: liveins: $x16
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
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
574 ; RV32-LABEL: name: load_common_ptr_double
575 ; RV32: liveins: $x16
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
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
603 ; RV32-LABEL: name: store_large_offset
604 ; RV32: liveins: $x10
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
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)
641 name: store_large_offset_float
642 tracksRegLiveness: true
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
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
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)
672 name: store_large_offset_double
673 tracksRegLiveness: true
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
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
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)
704 name: load_large_offset
705 tracksRegLiveness: true
710 ; RV32-LABEL: name: load_large_offset
711 ; RV32: liveins: $x10
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
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)
736 name: load_large_offset_float
737 tracksRegLiveness: true
742 ; RV32-LABEL: name: load_large_offset_float
743 ; RV32: liveins: $x10
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
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
770 ; RV32-LABEL: name: load_large_offset_double
771 ; RV32: liveins: $x10
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
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
799 ; RV32-LABEL: name: store_common_value_no_opt
800 ; RV32: liveins: $x10
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
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)
814 name: store_common_value_float_no_opt
815 tracksRegLiveness: true
818 liveins: $x10, $f16_f
820 ; RV32-LABEL: name: store_common_value_float_no_opt
821 ; RV32: liveins: $x10, $f16_f
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
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)
835 name: store_common_value_double_no_opt
836 tracksRegLiveness: true
839 liveins: $x10, $f16_d
841 ; RV32-LABEL: name: store_common_value_double_no_opt
842 ; RV32: liveins: $x10, $f16_d
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
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)
856 name: store_common_ptr_no_opt
857 tracksRegLiveness: true
862 ; RV32-LABEL: name: store_common_ptr_no_opt
863 ; RV32: liveins: $x16
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
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)
880 name: store_common_ptr_float_no_opt
881 tracksRegLiveness: true
884 liveins: $x16, $f10_f
886 ; RV32-LABEL: name: store_common_ptr_float_no_opt
887 ; RV32: liveins: $x16, $f10_f
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
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)
901 name: store_common_ptr_double_no_opt
902 tracksRegLiveness: true
905 liveins: $x16, $f10_d
907 ; RV32-LABEL: name: store_common_ptr_double_no_opt
908 ; RV32: liveins: $x16, $f10_d
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
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)
922 name: load_common_ptr_no_opt
923 tracksRegLiveness: true
928 ; RV32-LABEL: name: load_common_ptr_no_opt
929 ; RV32: liveins: $x16
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
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)
943 name: load_common_ptr_float_no_opt
944 tracksRegLiveness: true
949 ; RV32-LABEL: name: load_common_ptr_float_no_opt
950 ; RV32: liveins: $x16
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
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
970 ; RV32-LABEL: name: load_common_ptr_double_no_opt
971 ; RV32: liveins: $x16
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
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
991 ; RV32-LABEL: name: store_large_offset_no_opt
992 ; RV32: liveins: $x10
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
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)
1015 name: store_large_offset_float_no_opt
1016 tracksRegLiveness: true
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
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
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)
1039 name: store_large_offset_double_no_opt
1040 tracksRegLiveness: true
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
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
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)
1063 name: load_large_offset_no_opt
1064 tracksRegLiveness: true
1069 ; RV32-LABEL: name: load_large_offset_no_opt
1070 ; RV32: liveins: $x10
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
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)
1087 name: load_large_offset_float_no_opt
1088 tracksRegLiveness: true
1093 ; RV32-LABEL: name: load_large_offset_float_no_opt
1094 ; RV32: liveins: $x10
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
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
1117 ; RV32-LABEL: name: load_large_offset_double_no_opt
1118 ; RV32: liveins: $x10
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
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