[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-load.mir
blob14ccb00ec986d6eeec938b6415c1f355d0c0c420
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 --- |
5   target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
7   define void @load_s64_gpr(i64* %addr) { ret void }
8   define void @load_s32_gpr(i32* %addr) { ret void }
9   define void @load_s16_gpr_anyext(i16* %addr) { ret void }
10   define void @load_s16_gpr(i16* %addr) { ret void }
11   define void @load_s8_gpr_anyext(i8* %addr) { ret void }
12   define void @load_s8_gpr(i8* %addr) { ret void }
14   define void @load_fi_s64_gpr() {
15     %ptr0 = alloca i64
16     ret void
17   }
19   define void @load_gep_128_s64_gpr(i64* %addr) { ret void }
20   define void @load_gep_512_s32_gpr(i32* %addr) { ret void }
21   define void @load_gep_64_s16_gpr(i16* %addr) { ret void }
22   define void @load_gep_1_s8_gpr(i8* %addr) { ret void }
24   define void @load_s64_fpr(i64* %addr) { ret void }
25   define void @load_s32_fpr(i32* %addr) { ret void }
26   define void @load_s16_fpr(i16* %addr) { ret void }
27   define void @load_s8_fpr(i8* %addr) { ret void }
29   define void @load_gep_8_s64_fpr(i64* %addr) { ret void }
30   define void @load_gep_16_s32_fpr(i32* %addr) { ret void }
31   define void @load_gep_64_s16_fpr(i16* %addr) { ret void }
32   define void @load_gep_32_s8_fpr(i8* %addr) { ret void }
34   define void @load_v2s32(i64 *%addr) { ret void }
35   define void @load_v2s64(i64 *%addr) { ret void }
37   define void @load_4xi16(<4 x i16>* %ptr) { ret void }
38   define void @load_4xi32(<4 x i32>* %ptr) { ret void }
39   define void @load_8xi16(<8 x i16>* %ptr) { ret void }
40   define void @load_16xi8(<16 x i8>* %ptr) { ret void }
41   define void @anyext_on_fpr() { ret void }
42   define void @anyext_on_fpr8() { ret void }
44 ...
46 ---
47 name:            load_s64_gpr
48 legalized:       true
49 regBankSelected: true
51 registers:
52   - { id: 0, class: gpr }
53   - { id: 1, class: gpr }
55 body:             |
56   bb.0:
57     liveins: $x0
59     ; CHECK-LABEL: name: load_s64_gpr
60     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
61     ; CHECK-NEXT: [[LDRXui:%[0-9]+]]:gpr64 = LDRXui [[COPY]], 0 :: (load (s64) from %ir.addr)
62     ; CHECK-NEXT: $x0 = COPY [[LDRXui]]
63     %0(p0) = COPY $x0
64     %1(s64) = G_LOAD  %0 :: (load (s64) from %ir.addr)
65     $x0 = COPY %1(s64)
66 ...
68 ---
69 name:            load_s32_gpr
70 legalized:       true
71 regBankSelected: true
73 registers:
74   - { id: 0, class: gpr }
75   - { id: 1, class: gpr }
77 body:             |
78   bb.0:
79     liveins: $x0
81     ; CHECK-LABEL: name: load_s32_gpr
82     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
83     ; CHECK-NEXT: [[LDRWui:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 0 :: (load (s32) from %ir.addr)
84     ; CHECK-NEXT: $w0 = COPY [[LDRWui]]
85     %0(p0) = COPY $x0
86     %1(s32) = G_LOAD  %0 :: (load (s32) from %ir.addr)
87     $w0 = COPY %1(s32)
88 ...
90 ---
91 name:            load_s16_gpr_anyext
92 legalized:       true
93 regBankSelected: true
95 body:             |
96   bb.0:
97     liveins: $x0
99     ; CHECK-LABEL: name: load_s16_gpr_anyext
100     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
101     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 0 :: (load (s16) from %ir.addr)
102     ; CHECK-NEXT: $w0 = COPY [[LDRHHui]]
103     %0:gpr(p0) = COPY $x0
104     %1:gpr(s32) = G_LOAD  %0 :: (load (s16) from %ir.addr)
105     $w0 = COPY %1(s32)
109 name:            load_s16_gpr
110 legalized:       true
111 regBankSelected: true
113 registers:
114   - { id: 0, class: gpr }
115   - { id: 1, class: gpr }
117 body:             |
118   bb.0:
119     liveins: $x0
121     ; CHECK-LABEL: name: load_s16_gpr
122     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
123     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 0 :: (load (s16) from %ir.addr)
124     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[LDRHHui]]
125     ; CHECK-NEXT: $w0 = COPY [[COPY1]]
126     %0(p0) = COPY $x0
127     %1(s16) = G_LOAD  %0 :: (load (s16) from %ir.addr)
128     %2:gpr(s32) = G_ANYEXT %1
129     $w0 = COPY %2(s32)
133 name:            load_s8_gpr_anyext
134 legalized:       true
135 regBankSelected: true
137 body:             |
138   bb.0:
139     liveins: $x0
141     ; CHECK-LABEL: name: load_s8_gpr_anyext
142     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
143     ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY]], 0 :: (load (s8) from %ir.addr)
144     ; CHECK-NEXT: $w0 = COPY [[LDRBBui]]
145     %0:gpr(p0) = COPY $x0
146     %1:gpr(s32) = G_LOAD  %0 :: (load (s8) from %ir.addr)
147     $w0 = COPY %1(s32)
151 name:            load_s8_gpr
152 legalized:       true
153 regBankSelected: true
155 registers:
156   - { id: 0, class: gpr }
157   - { id: 1, class: gpr }
159 body:             |
160   bb.0:
161     liveins: $x0
163     ; CHECK-LABEL: name: load_s8_gpr
164     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
165     ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY]], 0 :: (load (s8) from %ir.addr)
166     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[LDRBBui]]
167     ; CHECK-NEXT: $w0 = COPY [[COPY1]]
168     %0(p0) = COPY $x0
169     %1(s8) = G_LOAD  %0 :: (load (s8) from %ir.addr)
170     %2:gpr(s32) = G_ANYEXT %1
171     $w0 = COPY %2(s32)
175 name:            load_fi_s64_gpr
176 legalized:       true
177 regBankSelected: true
179 registers:
180   - { id: 0, class: gpr }
181   - { id: 1, class: gpr }
183 stack:
184   - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }
186 body:             |
187   bb.0:
188     liveins: $x0
190     ; CHECK-LABEL: name: load_fi_s64_gpr
191     ; CHECK: [[LDRXui:%[0-9]+]]:gpr64 = LDRXui %stack.0.ptr0, 0 :: (load (s64))
192     ; CHECK-NEXT: $x0 = COPY [[LDRXui]]
193     %0(p0) = G_FRAME_INDEX %stack.0.ptr0
194     %1(s64) = G_LOAD %0 :: (load (s64))
195     $x0 = COPY %1(s64)
199 name:            load_gep_128_s64_gpr
200 legalized:       true
201 regBankSelected: true
203 registers:
204   - { id: 0, class: gpr }
205   - { id: 1, class: gpr }
206   - { id: 2, class: gpr }
207   - { id: 3, class: gpr }
209 body:             |
210   bb.0:
211     liveins: $x0
213     ; CHECK-LABEL: name: load_gep_128_s64_gpr
214     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
215     ; CHECK-NEXT: [[LDRXui:%[0-9]+]]:gpr64 = LDRXui [[COPY]], 16 :: (load (s64) from %ir.addr)
216     ; CHECK-NEXT: $x0 = COPY [[LDRXui]]
217     %0(p0) = COPY $x0
218     %1(s64) = G_CONSTANT i64 128
219     %2(p0) = G_PTR_ADD %0, %1
220     %3(s64) = G_LOAD %2 :: (load (s64) from %ir.addr)
221     $x0 = COPY %3
225 name:            load_gep_512_s32_gpr
226 legalized:       true
227 regBankSelected: true
229 registers:
230   - { id: 0, class: gpr }
231   - { id: 1, class: gpr }
232   - { id: 2, class: gpr }
233   - { id: 3, class: gpr }
235 body:             |
236   bb.0:
237     liveins: $x0
239     ; CHECK-LABEL: name: load_gep_512_s32_gpr
240     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
241     ; CHECK-NEXT: [[LDRWui:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 128 :: (load (s32) from %ir.addr)
242     ; CHECK-NEXT: $w0 = COPY [[LDRWui]]
243     %0(p0) = COPY $x0
244     %1(s64) = G_CONSTANT i64 512
245     %2(p0) = G_PTR_ADD %0, %1
246     %3(s32) = G_LOAD %2 :: (load (s32) from %ir.addr)
247     $w0 = COPY %3
251 name:            load_gep_64_s16_gpr
252 legalized:       true
253 regBankSelected: true
255 registers:
256   - { id: 0, class: gpr }
257   - { id: 1, class: gpr }
258   - { id: 2, class: gpr }
259   - { id: 3, class: gpr }
261 body:             |
262   bb.0:
263     liveins: $x0
265     ; CHECK-LABEL: name: load_gep_64_s16_gpr
266     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
267     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 32 :: (load (s16) from %ir.addr)
268     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[LDRHHui]]
269     ; CHECK-NEXT: $w0 = COPY [[COPY1]]
270     %0(p0) = COPY $x0
271     %1(s64) = G_CONSTANT i64 64
272     %2(p0) = G_PTR_ADD %0, %1
273     %3(s16) = G_LOAD %2 :: (load (s16) from %ir.addr)
274     %4:gpr(s32) = G_ANYEXT %3
275     $w0 = COPY %4
279 name:            load_gep_1_s8_gpr
280 legalized:       true
281 regBankSelected: true
283 registers:
284   - { id: 0, class: gpr }
285   - { id: 1, class: gpr }
286   - { id: 2, class: gpr }
287   - { id: 3, class: gpr }
289 body:             |
290   bb.0:
291     liveins: $x0
293     ; CHECK-LABEL: name: load_gep_1_s8_gpr
294     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
295     ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY]], 1 :: (load (s8) from %ir.addr)
296     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[LDRBBui]]
297     ; CHECK-NEXT: $w0 = COPY [[COPY1]]
298     %0(p0) = COPY $x0
299     %1(s64) = G_CONSTANT i64 1
300     %2(p0) = G_PTR_ADD %0, %1
301     %3(s8) = G_LOAD %2 :: (load (s8) from %ir.addr)
302     %4:gpr(s32) = G_ANYEXT %3
303     $w0 = COPY %4
307 name:            load_s64_fpr
308 legalized:       true
309 regBankSelected: true
311 registers:
312   - { id: 0, class: gpr }
313   - { id: 1, class: fpr }
315 body:             |
316   bb.0:
317     liveins: $x0
319     ; CHECK-LABEL: name: load_s64_fpr
320     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
321     ; CHECK-NEXT: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[COPY]], 0 :: (load (s64) from %ir.addr)
322     ; CHECK-NEXT: $d0 = COPY [[LDRDui]]
323     %0(p0) = COPY $x0
324     %1(s64) = G_LOAD  %0 :: (load (s64) from %ir.addr)
325     $d0 = COPY %1(s64)
329 name:            load_s32_fpr
330 legalized:       true
331 regBankSelected: true
333 registers:
334   - { id: 0, class: gpr }
335   - { id: 1, class: fpr }
337 body:             |
338   bb.0:
339     liveins: $x0
341     ; CHECK-LABEL: name: load_s32_fpr
342     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
343     ; CHECK-NEXT: [[LDRSui:%[0-9]+]]:fpr32 = LDRSui [[COPY]], 0 :: (load (s32) from %ir.addr)
344     ; CHECK-NEXT: $s0 = COPY [[LDRSui]]
345     %0(p0) = COPY $x0
346     %1(s32) = G_LOAD  %0 :: (load (s32) from %ir.addr)
347     $s0 = COPY %1(s32)
351 name:            load_s16_fpr
352 legalized:       true
353 regBankSelected: true
355 registers:
356   - { id: 0, class: gpr }
357   - { id: 1, class: fpr }
359 body:             |
360   bb.0:
361     liveins: $x0
363     ; CHECK-LABEL: name: load_s16_fpr
364     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
365     ; CHECK-NEXT: [[LDRHui:%[0-9]+]]:fpr16 = LDRHui [[COPY]], 0 :: (load (s16) from %ir.addr)
366     ; CHECK-NEXT: $h0 = COPY [[LDRHui]]
367     %0(p0) = COPY $x0
368     %1(s16) = G_LOAD  %0 :: (load (s16) from %ir.addr)
369     $h0 = COPY %1(s16)
373 name:            load_s8_fpr
374 legalized:       true
375 regBankSelected: true
377 registers:
378   - { id: 0, class: gpr }
379   - { id: 1, class: fpr }
381 body:             |
382   bb.0:
383     liveins: $x0
385     ; CHECK-LABEL: name: load_s8_fpr
386     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
387     ; CHECK-NEXT: [[LDRBui:%[0-9]+]]:fpr8 = LDRBui [[COPY]], 0 :: (load (s8) from %ir.addr)
388     ; CHECK-NEXT: $b0 = COPY [[LDRBui]]
389     %0(p0) = COPY $x0
390     %1(s8) = G_LOAD  %0 :: (load (s8) from %ir.addr)
391     $b0 = COPY %1(s8)
395 name:            load_gep_8_s64_fpr
396 legalized:       true
397 regBankSelected: true
399 registers:
400   - { id: 0, class: gpr }
401   - { id: 1, class: gpr }
402   - { id: 2, class: gpr }
403   - { id: 3, class: fpr }
405 body:             |
406   bb.0:
407     liveins: $x0
409     ; CHECK-LABEL: name: load_gep_8_s64_fpr
410     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
411     ; CHECK-NEXT: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[COPY]], 1 :: (load (s64) from %ir.addr)
412     ; CHECK-NEXT: $d0 = COPY [[LDRDui]]
413     %0(p0) = COPY $x0
414     %1(s64) = G_CONSTANT i64 8
415     %2(p0) = G_PTR_ADD %0, %1
416     %3(s64) = G_LOAD %2 :: (load (s64) from %ir.addr)
417     $d0 = COPY %3
421 name:            load_gep_16_s32_fpr
422 legalized:       true
423 regBankSelected: true
425 registers:
426   - { id: 0, class: gpr }
427   - { id: 1, class: gpr }
428   - { id: 2, class: gpr }
429   - { id: 3, class: fpr }
431 body:             |
432   bb.0:
433     liveins: $x0
435     ; CHECK-LABEL: name: load_gep_16_s32_fpr
436     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
437     ; CHECK-NEXT: [[LDRSui:%[0-9]+]]:fpr32 = LDRSui [[COPY]], 4 :: (load (s32) from %ir.addr)
438     ; CHECK-NEXT: $s0 = COPY [[LDRSui]]
439     %0(p0) = COPY $x0
440     %1(s64) = G_CONSTANT i64 16
441     %2(p0) = G_PTR_ADD %0, %1
442     %3(s32) = G_LOAD %2 :: (load (s32) from %ir.addr)
443     $s0 = COPY %3
447 name:            load_gep_64_s16_fpr
448 legalized:       true
449 regBankSelected: true
451 registers:
452   - { id: 0, class: gpr }
453   - { id: 1, class: gpr }
454   - { id: 2, class: gpr }
455   - { id: 3, class: fpr }
457 body:             |
458   bb.0:
459     liveins: $x0
461     ; CHECK-LABEL: name: load_gep_64_s16_fpr
462     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
463     ; CHECK-NEXT: [[LDRHui:%[0-9]+]]:fpr16 = LDRHui [[COPY]], 32 :: (load (s16) from %ir.addr)
464     ; CHECK-NEXT: $h0 = COPY [[LDRHui]]
465     %0(p0) = COPY $x0
466     %1(s64) = G_CONSTANT i64 64
467     %2(p0) = G_PTR_ADD %0, %1
468     %3(s16) = G_LOAD %2 :: (load (s16) from %ir.addr)
469     $h0 = COPY %3
473 name:            load_gep_32_s8_fpr
474 legalized:       true
475 regBankSelected: true
477 registers:
478   - { id: 0, class: gpr }
479   - { id: 1, class: gpr }
480   - { id: 2, class: gpr }
481   - { id: 3, class: fpr }
483 body:             |
484   bb.0:
485     liveins: $x0
487     ; CHECK-LABEL: name: load_gep_32_s8_fpr
488     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
489     ; CHECK-NEXT: [[LDRBui:%[0-9]+]]:fpr8 = LDRBui [[COPY]], 32 :: (load (s8) from %ir.addr)
490     ; CHECK-NEXT: $b0 = COPY [[LDRBui]]
491     %0(p0) = COPY $x0
492     %1(s64) = G_CONSTANT i64 32
493     %2(p0) = G_PTR_ADD %0, %1
494     %3(s8) = G_LOAD %2 :: (load (s8) from %ir.addr)
495     $b0 = COPY %3
498 name:            load_v2s32
499 legalized:       true
500 regBankSelected: true
502 registers:
503   - { id: 0, class: gpr }
504   - { id: 1, class: fpr }
506 body:             |
507   bb.0:
508     liveins: $x0
510     ; CHECK-LABEL: name: load_v2s32
511     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
512     ; CHECK-NEXT: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[COPY]], 0 :: (load (<2 x s32>) from %ir.addr)
513     ; CHECK-NEXT: $d0 = COPY [[LDRDui]]
514     %0(p0) = COPY $x0
515     %1(<2 x s32>) = G_LOAD %0 :: (load (<2 x s32>) from %ir.addr)
516     $d0 = COPY %1(<2 x s32>)
519 name:            load_v2s64
520 legalized:       true
521 regBankSelected: true
523 registers:
524   - { id: 0, class: gpr }
525   - { id: 1, class: fpr }
527 body:             |
528   bb.0:
529     liveins: $x0
531     ; CHECK-LABEL: name: load_v2s64
532     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
533     ; CHECK-NEXT: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY]], 0 :: (load (<2 x s64>) from %ir.addr)
534     ; CHECK-NEXT: $q0 = COPY [[LDRQui]]
535     %0(p0) = COPY $x0
536     %1(<2 x s64>) = G_LOAD %0 :: (load (<2 x s64>) from %ir.addr)
537     $q0 = COPY %1(<2 x s64>)
540 name:            load_4xi16
541 alignment:       4
542 legalized:       true
543 regBankSelected: true
544 tracksRegLiveness: true
545 registers:
546   - { id: 0, class: gpr }
547   - { id: 1, class: fpr }
548 machineFunctionInfo: {}
549 body:             |
550   bb.1 (%ir-block.0):
551     liveins: $x0
553     ; CHECK-LABEL: name: load_4xi16
554     ; CHECK: liveins: $x0
555     ; CHECK-NEXT: {{  $}}
556     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
557     ; CHECK-NEXT: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[COPY]], 0 :: (load (<4 x s16>) from %ir.ptr)
558     ; CHECK-NEXT: $d0 = COPY [[LDRDui]]
559     ; CHECK-NEXT: RET_ReallyLR implicit $d0
560     %0:gpr(p0) = COPY $x0
561     %1:fpr(<4 x s16>) = G_LOAD %0(p0) :: (load (<4 x s16>) from %ir.ptr)
562     $d0 = COPY %1(<4 x s16>)
563     RET_ReallyLR implicit $d0
567 name:            load_4xi32
568 alignment:       4
569 legalized:       true
570 regBankSelected: true
571 tracksRegLiveness: true
572 registers:
573   - { id: 0, class: gpr }
574   - { id: 1, class: fpr }
575 machineFunctionInfo: {}
576 body:             |
577   bb.1 (%ir-block.0):
578     liveins: $x0
580     ; CHECK-LABEL: name: load_4xi32
581     ; CHECK: liveins: $x0
582     ; CHECK-NEXT: {{  $}}
583     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
584     ; CHECK-NEXT: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY]], 0 :: (load (<4 x s32>) from %ir.ptr)
585     ; CHECK-NEXT: $q0 = COPY [[LDRQui]]
586     ; CHECK-NEXT: RET_ReallyLR implicit $q0
587     %0:gpr(p0) = COPY $x0
588     %1:fpr(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.ptr)
589     $q0 = COPY %1(<4 x s32>)
590     RET_ReallyLR implicit $q0
594 name:            load_8xi16
595 alignment:       4
596 legalized:       true
597 regBankSelected: true
598 tracksRegLiveness: true
599 registers:
600   - { id: 0, class: gpr }
601   - { id: 1, class: fpr }
602 machineFunctionInfo: {}
603 body:             |
604   bb.1 (%ir-block.0):
605     liveins: $x0
607     ; CHECK-LABEL: name: load_8xi16
608     ; CHECK: liveins: $x0
609     ; CHECK-NEXT: {{  $}}
610     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
611     ; CHECK-NEXT: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY]], 0 :: (load (<8 x s16>) from %ir.ptr)
612     ; CHECK-NEXT: $q0 = COPY [[LDRQui]]
613     ; CHECK-NEXT: RET_ReallyLR implicit $q0
614     %0:gpr(p0) = COPY $x0
615     %1:fpr(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.ptr)
616     $q0 = COPY %1(<8 x s16>)
617     RET_ReallyLR implicit $q0
621 name:            load_16xi8
622 alignment:       4
623 legalized:       true
624 regBankSelected: true
625 tracksRegLiveness: true
626 registers:
627   - { id: 0, class: gpr }
628   - { id: 1, class: fpr }
629 machineFunctionInfo: {}
630 body:             |
631   bb.1 (%ir-block.0):
632     liveins: $x0
634     ; CHECK-LABEL: name: load_16xi8
635     ; CHECK: liveins: $x0
636     ; CHECK-NEXT: {{  $}}
637     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
638     ; CHECK-NEXT: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY]], 0 :: (load (<16 x s8>) from %ir.ptr)
639     ; CHECK-NEXT: $q0 = COPY [[LDRQui]]
640     ; CHECK-NEXT: RET_ReallyLR implicit $q0
641     %0:gpr(p0) = COPY $x0
642     %1:fpr(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.ptr)
643     $q0 = COPY %1(<16 x s8>)
644     RET_ReallyLR implicit $q0
648 name:            anyext_on_fpr
649 alignment:       4
650 legalized:       true
651 regBankSelected: true
652 tracksRegLiveness: true
653 liveins:
654   - { reg: '$x0' }
655   - { reg: '$x1' }
656   - { reg: '$x2' }
657   - { reg: '$w3' }
658 frameInfo:
659   maxAlignment:    1
660 machineFunctionInfo: {}
661 body:             |
662   bb.1:
663     liveins: $w3, $x0, $x1, $x2
665     ; CHECK-LABEL: name: anyext_on_fpr
666     ; CHECK: liveins: $w3, $x0, $x1, $x2
667     ; CHECK-NEXT: {{  $}}
668     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
669     ; CHECK-NEXT: [[LDRHui:%[0-9]+]]:fpr16 = LDRHui [[COPY]], 0 :: (load (s16))
670     ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:fpr32 = SUBREG_TO_REG 0, [[LDRHui]], %subreg.hsub
671     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[SUBREG_TO_REG]]
672     ; CHECK-NEXT: $w0 = COPY [[COPY1]]
673     ; CHECK-NEXT: RET_ReallyLR
674     %0:gpr(p0) = COPY $x0
675     %16:fpr(s32) = G_LOAD %0(p0) :: (load (s16))
676     %24:gpr(s32) = COPY %16(s32)
677     $w0 = COPY %24(s32)
678     RET_ReallyLR
682 name:            anyext_on_fpr8
683 alignment:       4
684 legalized:       true
685 regBankSelected: true
686 tracksRegLiveness: true
687 liveins:
688   - { reg: '$x0' }
689   - { reg: '$x1' }
690   - { reg: '$x2' }
691   - { reg: '$w3' }
692 frameInfo:
693   maxAlignment:    1
694 machineFunctionInfo: {}
695 body:             |
696   bb.1:
697     liveins: $w3, $x0, $x1, $x2
699     ; CHECK-LABEL: name: anyext_on_fpr8
700     ; CHECK: liveins: $w3, $x0, $x1, $x2
701     ; CHECK-NEXT: {{  $}}
702     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
703     ; CHECK-NEXT: [[LDRBui:%[0-9]+]]:fpr8 = LDRBui [[COPY]], 0 :: (load (s8))
704     ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:fpr32 = SUBREG_TO_REG 0, [[LDRBui]], %subreg.bsub
705     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[SUBREG_TO_REG]]
706     ; CHECK-NEXT: $w0 = COPY [[COPY1]]
707     ; CHECK-NEXT: RET_ReallyLR
708     %0:gpr(p0) = COPY $x0
709     %16:fpr(s32) = G_LOAD %0(p0) :: (load (s8))
710     %24:gpr(s32) = COPY %16(s32)
711     $w0 = COPY %24(s32)
712     RET_ReallyLR