1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64-apple-ios -run-pass instruction-select %s \
3 # RUN: -disable-gisel-legality-check -verify-machineinstrs -simplify-mir \
4 # RUN: -o - | FileCheck %s
6 name: test_rule14_id188_at_idx1067
10 tracksRegLiveness: true
12 - { id: 0, class: fpr }
13 - { id: 1, class: fpr }
15 - { reg: '$d0', virtual-reg: '%1' }
20 ; CHECK-LABEL: name: test_rule14_id188_at_idx1067
22 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
23 ; CHECK: [[COPY1:%[0-9]+]]:gpr64sp = COPY [[COPY]]
24 ; CHECK: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY1]], 0 :: (load (s128))
25 ; CHECK: $noreg = PATCHABLE_RET [[LDRQui]]
27 %0:fpr(s128) = G_LOAD %1(p0) :: (load (s128))
28 $noreg = PATCHABLE_RET %0(s128)
32 name: test_rule21_id2237_at_idx1449
36 tracksRegLiveness: true
38 - { id: 0, class: fpr }
39 - { id: 1, class: fpr }
41 - { reg: '$d0', virtual-reg: '%0' }
42 - { reg: '$d1', virtual-reg: '%1' }
47 ; CHECK-LABEL: name: test_rule21_id2237_at_idx1449
48 ; CHECK: liveins: $d0, $d1
49 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
50 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
51 ; CHECK: [[COPY2:%[0-9]+]]:gpr64sp = COPY [[COPY]]
52 ; CHECK: STRDui [[COPY1]], [[COPY2]], 0 :: (store (<8 x s8>))
53 ; CHECK: $noreg = PATCHABLE_RET
55 %0:fpr(<8 x s8>) = COPY $d0
56 G_STORE %0(<8 x s8>), %1(p0) :: (store (<8 x s8>))
57 $noreg = PATCHABLE_RET
61 name: test_rule22_id2238_at_idx1505
65 tracksRegLiveness: true
67 - { id: 0, class: fpr }
68 - { id: 1, class: fpr }
70 - { reg: '$d0', virtual-reg: '%0' }
71 - { reg: '$d1', virtual-reg: '%1' }
76 ; CHECK-LABEL: name: test_rule22_id2238_at_idx1505
77 ; CHECK: liveins: $d0, $d1
78 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
79 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
80 ; CHECK: [[COPY2:%[0-9]+]]:gpr64sp = COPY [[COPY]]
81 ; CHECK: STRDui [[COPY1]], [[COPY2]], 0 :: (store (<4 x s16>))
82 ; CHECK: $noreg = PATCHABLE_RET
84 %0:fpr(<4 x s16>) = COPY $d0
85 G_STORE %0(<4 x s16>), %1(p0) :: (store (<4 x s16>))
86 $noreg = PATCHABLE_RET
90 name: test_rule27_id2243_at_idx1781
94 tracksRegLiveness: true
96 - { id: 0, class: fpr }
97 - { id: 1, class: fpr }
99 - { reg: '$q0', virtual-reg: '%0' }
100 - { reg: '$d0', virtual-reg: '%1' }
105 ; CHECK-LABEL: name: test_rule27_id2243_at_idx1781
106 ; CHECK: liveins: $q0, $d0
107 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
108 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
109 ; CHECK: [[COPY2:%[0-9]+]]:gpr64sp = COPY [[COPY]]
110 ; CHECK: STRQui [[COPY1]], [[COPY2]], 0 :: (store (<4 x s32>))
111 ; CHECK: $noreg = PATCHABLE_RET
112 %1:fpr(p0) = COPY $d0
113 %0:fpr(<4 x s32>) = COPY $q0
114 G_STORE %0(<4 x s32>), %1(p0) :: (store (<4 x s32>))
115 $noreg = PATCHABLE_RET
119 name: test_rule28_id2244_at_idx1837
122 regBankSelected: true
123 tracksRegLiveness: true
125 - { id: 0, class: fpr }
126 - { id: 1, class: fpr }
128 - { reg: '$q0', virtual-reg: '%0' }
129 - { reg: '$d0', virtual-reg: '%1' }
134 ; CHECK-LABEL: name: test_rule28_id2244_at_idx1837
135 ; CHECK: liveins: $q0, $d0
136 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
137 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
138 ; CHECK: [[COPY2:%[0-9]+]]:gpr64sp = COPY [[COPY]]
139 ; CHECK: STRQui [[COPY1]], [[COPY2]], 0 :: (store (<2 x s64>))
140 ; CHECK: $noreg = PATCHABLE_RET
141 %1:fpr(p0) = COPY $d0
142 %0:fpr(<2 x s64>) = COPY $q0
143 G_STORE %0(<2 x s64>), %1(p0) :: (store (<2 x s64>))
144 $noreg = PATCHABLE_RET
148 name: test_rule29_id2245_at_idx1893
151 regBankSelected: true
152 tracksRegLiveness: true
154 - { id: 0, class: fpr }
155 - { id: 1, class: fpr }
157 - { reg: '$q0', virtual-reg: '%0' }
158 - { reg: '$d0', virtual-reg: '%1' }
163 ; CHECK-LABEL: name: test_rule29_id2245_at_idx1893
164 ; CHECK: liveins: $q0, $d0
165 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
166 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
167 ; CHECK: [[COPY2:%[0-9]+]]:gpr64sp = COPY [[COPY]]
168 ; CHECK: STRQui [[COPY1]], [[COPY2]], 0 :: (store (<16 x s8>))
169 ; CHECK: $noreg = PATCHABLE_RET
170 %1:fpr(p0) = COPY $d0
171 %0:fpr(<16 x s8>) = COPY $q0
172 G_STORE %0(<16 x s8>), %1(p0) :: (store (<16 x s8>))
173 $noreg = PATCHABLE_RET
177 name: test_rule30_id2246_at_idx1949
180 regBankSelected: true
181 tracksRegLiveness: true
183 - { id: 0, class: fpr }
184 - { id: 1, class: fpr }
186 - { reg: '$q0', virtual-reg: '%0' }
187 - { reg: '$d0', virtual-reg: '%1' }
192 ; CHECK-LABEL: name: test_rule30_id2246_at_idx1949
193 ; CHECK: liveins: $q0, $d0
194 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
195 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
196 ; CHECK: [[COPY2:%[0-9]+]]:gpr64sp = COPY [[COPY]]
197 ; CHECK: STRQui [[COPY1]], [[COPY2]], 0 :: (store (<8 x s16>))
198 ; CHECK: $noreg = PATCHABLE_RET
199 %1:fpr(p0) = COPY $d0
200 %0:fpr(<8 x s16>) = COPY $q0
201 G_STORE %0(<8 x s16>), %1(p0) :: (store (<8 x s16>))
202 $noreg = PATCHABLE_RET
206 name: test_rule34_id2250_at_idx2173
209 regBankSelected: true
210 tracksRegLiveness: true
212 - { id: 0, class: fpr }
213 - { id: 1, class: fpr }
215 - { reg: '$q0', virtual-reg: '%0' }
216 - { reg: '$d0', virtual-reg: '%1' }
221 ; CHECK-LABEL: name: test_rule34_id2250_at_idx2173
222 ; CHECK: liveins: $q0, $d0
223 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
224 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
225 ; CHECK: [[COPY2:%[0-9]+]]:gpr64sp = COPY [[COPY]]
226 ; CHECK: STRQui [[COPY1]], [[COPY2]], 0 :: (store (s128))
227 ; CHECK: $noreg = PATCHABLE_RET
228 %1:fpr(p0) = COPY $d0
229 %0:fpr(s128) = COPY $q0
230 G_STORE %0(s128), %1(p0) :: (store (s128))
231 $noreg = PATCHABLE_RET
234 # The rules that generated this test has changed. The generator should be rerun
236 name: test_rule92_id2150_at_idx7770
239 regBankSelected: true
240 tracksRegLiveness: true
242 - { id: 0, class: gpr }
243 - { id: 1, class: gpr }
244 - { id: 2, class: gpr }
246 - { reg: '$x0', virtual-reg: '%2' }
251 ; CHECK-LABEL: name: test_rule92_id2150_at_idx7770
252 ; CHECK: liveins: $x0
253 ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
254 ; CHECK: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY]], 0 :: (load (s8))
255 ; CHECK: $noreg = PATCHABLE_RET [[LDRBBui]]
256 %2:gpr(p0) = COPY $x0
257 %0:gpr(s32) = G_LOAD %2(p0) :: (load (s8))
258 $noreg = PATCHABLE_RET %0(s32)
261 # The rules that generated this test has changed. The generator should be rerun
263 name: test_rule96_id2146_at_idx8070
266 regBankSelected: true
267 tracksRegLiveness: true
269 - { id: 0, class: fpr }
270 - { id: 1, class: gpr }
271 - { id: 2, class: gpr }
273 - { reg: '$x0', virtual-reg: '%2' }
278 ; CHECK-LABEL: name: test_rule96_id2146_at_idx8070
279 ; CHECK: liveins: $x0
280 ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
281 ; CHECK: [[LDRBui:%[0-9]+]]:fpr8 = LDRBui [[COPY]], 0 :: (load (s8))
282 ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[LDRBui]]
283 ; CHECK: [[UBFMWri:%[0-9]+]]:gpr32 = UBFMWri [[COPY1]], 0, 7
284 ; CHECK: $noreg = PATCHABLE_RET [[UBFMWri]]
285 %2:gpr(p0) = COPY $x0
286 %0:fpr(s8) = G_LOAD %2(p0) :: (load (s8))
287 %1:gpr(s32) = G_ZEXT %0(s8)
288 $noreg = PATCHABLE_RET %1(s32)
292 name: test_rule129_id2130_at_idx10828
295 regBankSelected: true
296 tracksRegLiveness: true
298 - { id: 0, class: fpr }
299 - { id: 1, class: fpr }
301 - { reg: '$d0', virtual-reg: '%1' }
306 ; CHECK-LABEL: name: test_rule129_id2130_at_idx10828
307 ; CHECK: liveins: $d0
308 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
309 ; CHECK: [[COPY1:%[0-9]+]]:gpr64sp = COPY [[COPY]]
310 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[COPY1]], 0 :: (load (<8 x s8>))
311 ; CHECK: $noreg = PATCHABLE_RET [[LDRDui]]
312 %1:fpr(p0) = COPY $d0
313 %0:fpr(<8 x s8>) = G_LOAD %1(p0) :: (load (<8 x s8>))
314 $noreg = PATCHABLE_RET %0(<8 x s8>)
318 name: test_rule130_id2131_at_idx10884
321 regBankSelected: true
322 tracksRegLiveness: true
324 - { id: 0, class: fpr }
325 - { id: 1, class: fpr }
327 - { reg: '$d0', virtual-reg: '%1' }
332 ; CHECK-LABEL: name: test_rule130_id2131_at_idx10884
333 ; CHECK: liveins: $d0
334 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
335 ; CHECK: [[COPY1:%[0-9]+]]:gpr64sp = COPY [[COPY]]
336 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[COPY1]], 0 :: (load (<4 x s16>))
337 ; CHECK: $noreg = PATCHABLE_RET [[LDRDui]]
338 %1:fpr(p0) = COPY $d0
339 %0:fpr(<4 x s16>) = G_LOAD %1(p0) :: (load (<4 x s16>))
340 $noreg = PATCHABLE_RET %0(<4 x s16>)
344 name: test_rule135_id2136_at_idx11160
347 regBankSelected: true
348 tracksRegLiveness: true
350 - { id: 0, class: fpr }
351 - { id: 1, class: fpr }
353 - { reg: '$d0', virtual-reg: '%1' }
358 ; CHECK-LABEL: name: test_rule135_id2136_at_idx11160
359 ; CHECK: liveins: $d0
360 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
361 ; CHECK: [[COPY1:%[0-9]+]]:gpr64sp = COPY [[COPY]]
362 ; CHECK: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY1]], 0 :: (load (<4 x s32>))
363 ; CHECK: $noreg = PATCHABLE_RET [[LDRQui]]
364 %1:fpr(p0) = COPY $d0
365 %0:fpr(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>))
366 $noreg = PATCHABLE_RET %0(<4 x s32>)
370 name: test_rule136_id2137_at_idx11216
373 regBankSelected: true
374 tracksRegLiveness: true
376 - { id: 0, class: fpr }
377 - { id: 1, class: fpr }
379 - { reg: '$d0', virtual-reg: '%1' }
384 ; CHECK-LABEL: name: test_rule136_id2137_at_idx11216
385 ; CHECK: liveins: $d0
386 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
387 ; CHECK: [[COPY1:%[0-9]+]]:gpr64sp = COPY [[COPY]]
388 ; CHECK: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY1]], 0 :: (load (<2 x s64>))
389 ; CHECK: $noreg = PATCHABLE_RET [[LDRQui]]
390 %1:fpr(p0) = COPY $d0
391 %0:fpr(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>))
392 $noreg = PATCHABLE_RET %0(<2 x s64>)
396 name: test_rule137_id2138_at_idx11272
399 regBankSelected: true
400 tracksRegLiveness: true
402 - { id: 0, class: fpr }
403 - { id: 1, class: fpr }
405 - { reg: '$d0', virtual-reg: '%1' }
410 ; CHECK-LABEL: name: test_rule137_id2138_at_idx11272
411 ; CHECK: liveins: $d0
412 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
413 ; CHECK: [[COPY1:%[0-9]+]]:gpr64sp = COPY [[COPY]]
414 ; CHECK: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY1]], 0 :: (load (<16 x s8>))
415 ; CHECK: $noreg = PATCHABLE_RET [[LDRQui]]
416 %1:fpr(p0) = COPY $d0
417 %0:fpr(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>))
418 $noreg = PATCHABLE_RET %0(<16 x s8>)
422 name: test_rule138_id2139_at_idx11328
425 regBankSelected: true
426 tracksRegLiveness: true
428 - { id: 0, class: fpr }
429 - { id: 1, class: fpr }
431 - { reg: '$d0', virtual-reg: '%1' }
436 ; CHECK-LABEL: name: test_rule138_id2139_at_idx11328
437 ; CHECK: liveins: $d0
438 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
439 ; CHECK: [[COPY1:%[0-9]+]]:gpr64sp = COPY [[COPY]]
440 ; CHECK: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY1]], 0 :: (load (<8 x s16>))
441 ; CHECK: $noreg = PATCHABLE_RET [[LDRQui]]
442 %1:fpr(p0) = COPY $d0
443 %0:fpr(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>))
444 $noreg = PATCHABLE_RET %0(<8 x s16>)
448 name: test_rule339_id2369_at_idx26608
451 regBankSelected: true
452 tracksRegLiveness: true
454 - { id: 0, class: fpr }
455 - { id: 1, class: fpr }
456 - { id: 2, class: fpr }
457 - { id: 3, class: fpr }
458 - { id: 4, class: fpr }
459 - { id: 5, class: fpr }
461 - { reg: '$s0', virtual-reg: '%3' }
462 - { reg: '$s1', virtual-reg: '%4' }
463 - { reg: '$s2', virtual-reg: '%5' }
466 liveins: $s0, $s1, $s2
468 ; CHECK-LABEL: name: test_rule339_id2369_at_idx26608
469 ; CHECK: liveins: $s0, $s1, $s2
470 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s2
471 ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
472 ; CHECK: [[COPY2:%[0-9]+]]:fpr32 = COPY $s0
473 ; CHECK: [[FNMADDSrrr:%[0-9]+]]:fpr32 = nofpexcept FNMADDSrrr [[COPY1]], [[COPY2]], [[COPY]]
474 ; CHECK: $noreg = PATCHABLE_RET [[FNMADDSrrr]]
475 %5:fpr(s32) = COPY $s2
476 %4:fpr(s32) = COPY $s1
477 %3:fpr(s32) = COPY $s0
478 %1:fpr(s32) = G_FNEG %5
479 %0:fpr(s32) = G_FNEG %4
480 %2:fpr(s32) = G_FMA %0, %3, %1
481 $noreg = PATCHABLE_RET %2(s32)
485 name: test_rule340_id2370_at_idx26714
488 regBankSelected: true
489 tracksRegLiveness: true
491 - { id: 0, class: fpr }
492 - { id: 1, class: fpr }
493 - { id: 2, class: fpr }
494 - { id: 3, class: fpr }
495 - { id: 4, class: fpr }
496 - { id: 5, class: fpr }
498 - { reg: '$d0', virtual-reg: '%3' }
499 - { reg: '$d1', virtual-reg: '%4' }
500 - { reg: '$d2', virtual-reg: '%5' }
503 liveins: $d0, $d1, $d2
505 ; CHECK-LABEL: name: test_rule340_id2370_at_idx26714
506 ; CHECK: liveins: $d0, $d1, $d2
507 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
508 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
509 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
510 ; CHECK: [[FNMADDDrrr:%[0-9]+]]:fpr64 = nofpexcept FNMADDDrrr [[COPY1]], [[COPY2]], [[COPY]]
511 ; CHECK: $noreg = PATCHABLE_RET [[FNMADDDrrr]]
512 %5:fpr(s64) = COPY $d2
513 %4:fpr(s64) = COPY $d1
514 %3:fpr(s64) = COPY $d0
515 %1:fpr(s64) = G_FNEG %5
516 %0:fpr(s64) = G_FNEG %4
517 %2:fpr(s64) = G_FMA %0, %3, %1
518 $noreg = PATCHABLE_RET %2(s64)
522 name: test_rule341_id2371_at_idx26820
525 regBankSelected: true
526 tracksRegLiveness: true
528 - { id: 0, class: fpr }
529 - { id: 1, class: fpr }
530 - { id: 2, class: fpr }
531 - { id: 3, class: fpr }
532 - { id: 4, class: fpr }
533 - { id: 5, class: fpr }
535 - { reg: '$s0', virtual-reg: '%3' }
536 - { reg: '$s1', virtual-reg: '%4' }
537 - { reg: '$s2', virtual-reg: '%5' }
540 liveins: $s0, $s1, $s2
542 ; CHECK-LABEL: name: test_rule341_id2371_at_idx26820
543 ; CHECK: liveins: $s0, $s1, $s2
544 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s2
545 ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
546 ; CHECK: [[COPY2:%[0-9]+]]:fpr32 = COPY $s0
547 ; CHECK: [[FNMADDSrrr:%[0-9]+]]:fpr32 = nofpexcept FNMADDSrrr [[COPY1]], [[COPY2]], [[COPY]]
548 ; CHECK: $noreg = PATCHABLE_RET [[FNMADDSrrr]]
549 %5:fpr(s32) = COPY $s2
550 %4:fpr(s32) = COPY $s1
551 %3:fpr(s32) = COPY $s0
552 %1:fpr(s32) = G_FNEG %5
553 %0:fpr(s32) = G_FNEG %4
554 %2:fpr(s32) = G_FMA %3, %0, %1
555 $noreg = PATCHABLE_RET %2(s32)
559 name: test_rule342_id2372_at_idx26926
562 regBankSelected: true
563 tracksRegLiveness: true
565 - { id: 0, class: fpr }
566 - { id: 1, class: fpr }
567 - { id: 2, class: fpr }
568 - { id: 3, class: fpr }
569 - { id: 4, class: fpr }
570 - { id: 5, class: fpr }
572 - { reg: '$d0', virtual-reg: '%3' }
573 - { reg: '$d1', virtual-reg: '%4' }
574 - { reg: '$d2', virtual-reg: '%5' }
577 liveins: $d0, $d1, $d2
579 ; CHECK-LABEL: name: test_rule342_id2372_at_idx26926
580 ; CHECK: liveins: $d0, $d1, $d2
581 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
582 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
583 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
584 ; CHECK: [[FNMADDDrrr:%[0-9]+]]:fpr64 = nofpexcept FNMADDDrrr [[COPY1]], [[COPY2]], [[COPY]]
585 ; CHECK: $noreg = PATCHABLE_RET [[FNMADDDrrr]]
586 %5:fpr(s64) = COPY $d2
587 %4:fpr(s64) = COPY $d1
588 %3:fpr(s64) = COPY $d0
589 %1:fpr(s64) = G_FNEG %5
590 %0:fpr(s64) = G_FNEG %4
591 %2:fpr(s64) = G_FMA %3, %0, %1
592 $noreg = PATCHABLE_RET %2(s64)
596 name: test_rule343_id1266_at_idx27032
599 regBankSelected: true
600 tracksRegLiveness: true
602 - { id: 0, class: fpr }
603 - { id: 1, class: fpr }
604 - { id: 2, class: fpr }
605 - { id: 3, class: fpr }
606 - { id: 4, class: fpr }
608 - { reg: '$d0', virtual-reg: '%3' }
609 - { reg: '$d1', virtual-reg: '%4' }
614 ; CHECK-LABEL: name: test_rule343_id1266_at_idx27032
615 ; CHECK: liveins: $d0, $d1
616 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
617 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
618 ; CHECK: [[SADDLv8i8_v8i16_:%[0-9]+]]:fpr128 = SADDLv8i8_v8i16 [[COPY1]], [[COPY]]
619 ; CHECK: $noreg = PATCHABLE_RET [[SADDLv8i8_v8i16_]]
620 %4:fpr(<8 x s8>) = COPY $d1
621 %3:fpr(<8 x s8>) = COPY $d0
622 %1:fpr(<8 x s16>) = G_SEXT %4(<8 x s8>)
623 %0:fpr(<8 x s16>) = G_SEXT %3(<8 x s8>)
624 %2:fpr(<8 x s16>) = G_ADD %0, %1
625 $noreg = PATCHABLE_RET %2(<8 x s16>)
629 name: test_rule344_id1268_at_idx27128
632 regBankSelected: true
633 tracksRegLiveness: true
635 - { id: 0, class: fpr }
636 - { id: 1, class: fpr }
637 - { id: 2, class: fpr }
638 - { id: 3, class: fpr }
639 - { id: 4, class: fpr }
641 - { reg: '$d0', virtual-reg: '%3' }
642 - { reg: '$d1', virtual-reg: '%4' }
647 ; CHECK-LABEL: name: test_rule344_id1268_at_idx27128
648 ; CHECK: liveins: $d0, $d1
649 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
650 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
651 ; CHECK: [[SADDLv4i16_v4i32_:%[0-9]+]]:fpr128 = SADDLv4i16_v4i32 [[COPY1]], [[COPY]]
652 ; CHECK: $noreg = PATCHABLE_RET [[SADDLv4i16_v4i32_]]
653 %4:fpr(<4 x s16>) = COPY $d1
654 %3:fpr(<4 x s16>) = COPY $d0
655 %1:fpr(<4 x s32>) = G_SEXT %4(<4 x s16>)
656 %0:fpr(<4 x s32>) = G_SEXT %3(<4 x s16>)
657 %2:fpr(<4 x s32>) = G_ADD %0, %1
658 $noreg = PATCHABLE_RET %2(<4 x s32>)
662 name: test_rule345_id1270_at_idx27224
665 regBankSelected: true
666 tracksRegLiveness: true
668 - { id: 0, class: fpr }
669 - { id: 1, class: fpr }
670 - { id: 2, class: fpr }
671 - { id: 3, class: fpr }
672 - { id: 4, class: fpr }
674 - { reg: '$d0', virtual-reg: '%3' }
675 - { reg: '$d1', virtual-reg: '%4' }
680 ; CHECK-LABEL: name: test_rule345_id1270_at_idx27224
681 ; CHECK: liveins: $d0, $d1
682 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
683 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
684 ; CHECK: [[SADDLv2i32_v2i64_:%[0-9]+]]:fpr128 = SADDLv2i32_v2i64 [[COPY1]], [[COPY]]
685 ; CHECK: $noreg = PATCHABLE_RET [[SADDLv2i32_v2i64_]]
686 %4:fpr(<2 x s32>) = COPY $d1
687 %3:fpr(<2 x s32>) = COPY $d0
688 %1:fpr(<2 x s64>) = G_SEXT %4(<2 x s32>)
689 %0:fpr(<2 x s64>) = G_SEXT %3(<2 x s32>)
690 %2:fpr(<2 x s64>) = G_ADD %0, %1
691 $noreg = PATCHABLE_RET %2(<2 x s64>)
695 name: test_rule346_id1326_at_idx27320
698 regBankSelected: true
699 tracksRegLiveness: true
701 - { id: 0, class: fpr }
702 - { id: 1, class: fpr }
703 - { id: 2, class: fpr }
704 - { id: 3, class: fpr }
705 - { id: 4, class: fpr }
707 - { reg: '$d0', virtual-reg: '%3' }
708 - { reg: '$d1', virtual-reg: '%4' }
713 ; CHECK-LABEL: name: test_rule346_id1326_at_idx27320
714 ; CHECK: liveins: $d0, $d1
715 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
716 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
717 ; CHECK: [[UADDLv8i8_v8i16_:%[0-9]+]]:fpr128 = UADDLv8i8_v8i16 [[COPY1]], [[COPY]]
718 ; CHECK: $noreg = PATCHABLE_RET [[UADDLv8i8_v8i16_]]
719 %4:fpr(<8 x s8>) = COPY $d1
720 %3:fpr(<8 x s8>) = COPY $d0
721 %1:fpr(<8 x s16>) = G_ZEXT %4(<8 x s8>)
722 %0:fpr(<8 x s16>) = G_ZEXT %3(<8 x s8>)
723 %2:fpr(<8 x s16>) = G_ADD %0, %1
724 $noreg = PATCHABLE_RET %2(<8 x s16>)
728 name: test_rule347_id1328_at_idx27416
731 regBankSelected: true
732 tracksRegLiveness: true
734 - { id: 0, class: fpr }
735 - { id: 1, class: fpr }
736 - { id: 2, class: fpr }
737 - { id: 3, class: fpr }
738 - { id: 4, class: fpr }
740 - { reg: '$d0', virtual-reg: '%3' }
741 - { reg: '$d1', virtual-reg: '%4' }
746 ; CHECK-LABEL: name: test_rule347_id1328_at_idx27416
747 ; CHECK: liveins: $d0, $d1
748 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
749 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
750 ; CHECK: [[UADDLv4i16_v4i32_:%[0-9]+]]:fpr128 = UADDLv4i16_v4i32 [[COPY1]], [[COPY]]
751 ; CHECK: $noreg = PATCHABLE_RET [[UADDLv4i16_v4i32_]]
752 %4:fpr(<4 x s16>) = COPY $d1
753 %3:fpr(<4 x s16>) = COPY $d0
754 %1:fpr(<4 x s32>) = G_ZEXT %4(<4 x s16>)
755 %0:fpr(<4 x s32>) = G_ZEXT %3(<4 x s16>)
756 %2:fpr(<4 x s32>) = G_ADD %0, %1
757 $noreg = PATCHABLE_RET %2(<4 x s32>)
761 name: test_rule348_id1330_at_idx27512
764 regBankSelected: true
765 tracksRegLiveness: true
767 - { id: 0, class: fpr }
768 - { id: 1, class: fpr }
769 - { id: 2, class: fpr }
770 - { id: 3, class: fpr }
771 - { id: 4, class: fpr }
773 - { reg: '$d0', virtual-reg: '%3' }
774 - { reg: '$d1', virtual-reg: '%4' }
779 ; CHECK-LABEL: name: test_rule348_id1330_at_idx27512
780 ; CHECK: liveins: $d0, $d1
781 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
782 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
783 ; CHECK: [[UADDLv2i32_v2i64_:%[0-9]+]]:fpr128 = UADDLv2i32_v2i64 [[COPY1]], [[COPY]]
784 ; CHECK: $noreg = PATCHABLE_RET [[UADDLv2i32_v2i64_]]
785 %4:fpr(<2 x s32>) = COPY $d1
786 %3:fpr(<2 x s32>) = COPY $d0
787 %1:fpr(<2 x s64>) = G_ZEXT %4(<2 x s32>)
788 %0:fpr(<2 x s64>) = G_ZEXT %3(<2 x s32>)
789 %2:fpr(<2 x s64>) = G_ADD %0, %1
790 $noreg = PATCHABLE_RET %2(<2 x s64>)
794 name: test_rule349_id1308_at_idx27608
797 regBankSelected: true
798 tracksRegLiveness: true
800 - { id: 0, class: fpr }
801 - { id: 1, class: fpr }
802 - { id: 2, class: fpr }
803 - { id: 3, class: fpr }
804 - { id: 4, class: fpr }
806 - { reg: '$d0', virtual-reg: '%3' }
807 - { reg: '$d1', virtual-reg: '%4' }
812 ; CHECK-LABEL: name: test_rule349_id1308_at_idx27608
813 ; CHECK: liveins: $d0, $d1
814 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
815 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
816 ; CHECK: [[SSUBLv8i8_v8i16_:%[0-9]+]]:fpr128 = SSUBLv8i8_v8i16 [[COPY1]], [[COPY]]
817 ; CHECK: $noreg = PATCHABLE_RET [[SSUBLv8i8_v8i16_]]
818 %4:fpr(<8 x s8>) = COPY $d1
819 %3:fpr(<8 x s8>) = COPY $d0
820 %1:fpr(<8 x s16>) = G_SEXT %4(<8 x s8>)
821 %0:fpr(<8 x s16>) = G_SEXT %3(<8 x s8>)
822 %2:fpr(<8 x s16>) = G_SUB %0, %1
823 $noreg = PATCHABLE_RET %2(<8 x s16>)
827 name: test_rule350_id1310_at_idx27704
830 regBankSelected: true
831 tracksRegLiveness: true
833 - { id: 0, class: fpr }
834 - { id: 1, class: fpr }
835 - { id: 2, class: fpr }
836 - { id: 3, class: fpr }
837 - { id: 4, class: fpr }
839 - { reg: '$d0', virtual-reg: '%3' }
840 - { reg: '$d1', virtual-reg: '%4' }
845 ; CHECK-LABEL: name: test_rule350_id1310_at_idx27704
846 ; CHECK: liveins: $d0, $d1
847 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
848 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
849 ; CHECK: [[SSUBLv4i16_v4i32_:%[0-9]+]]:fpr128 = SSUBLv4i16_v4i32 [[COPY1]], [[COPY]]
850 ; CHECK: $noreg = PATCHABLE_RET [[SSUBLv4i16_v4i32_]]
851 %4:fpr(<4 x s16>) = COPY $d1
852 %3:fpr(<4 x s16>) = COPY $d0
853 %1:fpr(<4 x s32>) = G_SEXT %4(<4 x s16>)
854 %0:fpr(<4 x s32>) = G_SEXT %3(<4 x s16>)
855 %2:fpr(<4 x s32>) = G_SUB %0, %1
856 $noreg = PATCHABLE_RET %2(<4 x s32>)
860 name: test_rule351_id1312_at_idx27800
863 regBankSelected: true
864 tracksRegLiveness: true
866 - { id: 0, class: fpr }
867 - { id: 1, class: fpr }
868 - { id: 2, class: fpr }
869 - { id: 3, class: fpr }
870 - { id: 4, class: fpr }
872 - { reg: '$d0', virtual-reg: '%3' }
873 - { reg: '$d1', virtual-reg: '%4' }
878 ; CHECK-LABEL: name: test_rule351_id1312_at_idx27800
879 ; CHECK: liveins: $d0, $d1
880 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
881 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
882 ; CHECK: [[SSUBLv2i32_v2i64_:%[0-9]+]]:fpr128 = SSUBLv2i32_v2i64 [[COPY1]], [[COPY]]
883 ; CHECK: $noreg = PATCHABLE_RET [[SSUBLv2i32_v2i64_]]
884 %4:fpr(<2 x s32>) = COPY $d1
885 %3:fpr(<2 x s32>) = COPY $d0
886 %1:fpr(<2 x s64>) = G_SEXT %4(<2 x s32>)
887 %0:fpr(<2 x s64>) = G_SEXT %3(<2 x s32>)
888 %2:fpr(<2 x s64>) = G_SUB %0, %1
889 $noreg = PATCHABLE_RET %2(<2 x s64>)
893 name: test_rule352_id1356_at_idx27896
896 regBankSelected: true
897 tracksRegLiveness: true
899 - { id: 0, class: fpr }
900 - { id: 1, class: fpr }
901 - { id: 2, class: fpr }
902 - { id: 3, class: fpr }
903 - { id: 4, class: fpr }
905 - { reg: '$d0', virtual-reg: '%3' }
906 - { reg: '$d1', virtual-reg: '%4' }
911 ; CHECK-LABEL: name: test_rule352_id1356_at_idx27896
912 ; CHECK: liveins: $d0, $d1
913 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
914 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
915 ; CHECK: [[USUBLv8i8_v8i16_:%[0-9]+]]:fpr128 = USUBLv8i8_v8i16 [[COPY1]], [[COPY]]
916 ; CHECK: $noreg = PATCHABLE_RET [[USUBLv8i8_v8i16_]]
917 %4:fpr(<8 x s8>) = COPY $d1
918 %3:fpr(<8 x s8>) = COPY $d0
919 %1:fpr(<8 x s16>) = G_ZEXT %4(<8 x s8>)
920 %0:fpr(<8 x s16>) = G_ZEXT %3(<8 x s8>)
921 %2:fpr(<8 x s16>) = G_SUB %0, %1
922 $noreg = PATCHABLE_RET %2(<8 x s16>)
926 name: test_rule353_id1358_at_idx27992
929 regBankSelected: true
930 tracksRegLiveness: true
932 - { id: 0, class: fpr }
933 - { id: 1, class: fpr }
934 - { id: 2, class: fpr }
935 - { id: 3, class: fpr }
936 - { id: 4, class: fpr }
938 - { reg: '$d0', virtual-reg: '%3' }
939 - { reg: '$d1', virtual-reg: '%4' }
944 ; CHECK-LABEL: name: test_rule353_id1358_at_idx27992
945 ; CHECK: liveins: $d0, $d1
946 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
947 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
948 ; CHECK: [[USUBLv4i16_v4i32_:%[0-9]+]]:fpr128 = USUBLv4i16_v4i32 [[COPY1]], [[COPY]]
949 ; CHECK: $noreg = PATCHABLE_RET [[USUBLv4i16_v4i32_]]
950 %4:fpr(<4 x s16>) = COPY $d1
951 %3:fpr(<4 x s16>) = COPY $d0
952 %1:fpr(<4 x s32>) = G_ZEXT %4(<4 x s16>)
953 %0:fpr(<4 x s32>) = G_ZEXT %3(<4 x s16>)
954 %2:fpr(<4 x s32>) = G_SUB %0, %1
955 $noreg = PATCHABLE_RET %2(<4 x s32>)
959 name: test_rule354_id1360_at_idx28088
962 regBankSelected: true
963 tracksRegLiveness: true
965 - { id: 0, class: fpr }
966 - { id: 1, class: fpr }
967 - { id: 2, class: fpr }
968 - { id: 3, class: fpr }
969 - { id: 4, class: fpr }
971 - { reg: '$d0', virtual-reg: '%3' }
972 - { reg: '$d1', virtual-reg: '%4' }
977 ; CHECK-LABEL: name: test_rule354_id1360_at_idx28088
978 ; CHECK: liveins: $d0, $d1
979 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
980 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
981 ; CHECK: [[USUBLv2i32_v2i64_:%[0-9]+]]:fpr128 = USUBLv2i32_v2i64 [[COPY1]], [[COPY]]
982 ; CHECK: $noreg = PATCHABLE_RET [[USUBLv2i32_v2i64_]]
983 %4:fpr(<2 x s32>) = COPY $d1
984 %3:fpr(<2 x s32>) = COPY $d0
985 %1:fpr(<2 x s64>) = G_ZEXT %4(<2 x s32>)
986 %0:fpr(<2 x s64>) = G_ZEXT %3(<2 x s32>)
987 %2:fpr(<2 x s64>) = G_SUB %0, %1
988 $noreg = PATCHABLE_RET %2(<2 x s64>)
992 name: test_rule928_id2367_at_idx60019
995 regBankSelected: true
996 tracksRegLiveness: true
998 - { id: 0, class: fpr }
999 - { id: 1, class: fpr }
1000 - { id: 2, class: fpr }
1001 - { id: 3, class: fpr }
1002 - { id: 4, class: fpr }
1004 - { reg: '$s0', virtual-reg: '%2' }
1005 - { reg: '$s1', virtual-reg: '%3' }
1006 - { reg: '$s2', virtual-reg: '%4' }
1009 liveins: $s0, $s1, $s2
1011 ; CHECK-LABEL: name: test_rule928_id2367_at_idx60019
1012 ; CHECK: liveins: $s0, $s1, $s2
1013 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s2
1014 ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
1015 ; CHECK: [[COPY2:%[0-9]+]]:fpr32 = COPY $s0
1016 ; CHECK: [[FMSUBSrrr:%[0-9]+]]:fpr32 = nofpexcept FMSUBSrrr [[COPY]], [[COPY2]], [[COPY1]]
1017 ; CHECK: $noreg = PATCHABLE_RET [[FMSUBSrrr]]
1018 %4:fpr(s32) = COPY $s2
1019 %3:fpr(s32) = COPY $s1
1020 %2:fpr(s32) = COPY $s0
1021 %0:fpr(s32) = G_FNEG %4
1022 %1:fpr(s32) = G_FMA %0, %2, %3
1023 $noreg = PATCHABLE_RET %1(s32)
1027 name: test_rule929_id2368_at_idx60105
1030 regBankSelected: true
1031 tracksRegLiveness: true
1033 - { id: 0, class: fpr }
1034 - { id: 1, class: fpr }
1035 - { id: 2, class: fpr }
1036 - { id: 3, class: fpr }
1037 - { id: 4, class: fpr }
1039 - { reg: '$d0', virtual-reg: '%2' }
1040 - { reg: '$d1', virtual-reg: '%3' }
1041 - { reg: '$d2', virtual-reg: '%4' }
1044 liveins: $d0, $d1, $d2
1046 ; CHECK-LABEL: name: test_rule929_id2368_at_idx60105
1047 ; CHECK: liveins: $d0, $d1, $d2
1048 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1049 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1050 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1051 ; CHECK: [[FMSUBDrrr:%[0-9]+]]:fpr64 = nofpexcept FMSUBDrrr [[COPY]], [[COPY2]], [[COPY1]]
1052 ; CHECK: $noreg = PATCHABLE_RET [[FMSUBDrrr]]
1053 %4:fpr(s64) = COPY $d2
1054 %3:fpr(s64) = COPY $d1
1055 %2:fpr(s64) = COPY $d0
1056 %0:fpr(s64) = G_FNEG %4
1057 %1:fpr(s64) = G_FMA %0, %2, %3
1058 $noreg = PATCHABLE_RET %1(s64)
1062 name: test_rule930_id2446_at_idx60191
1065 regBankSelected: true
1066 tracksRegLiveness: true
1068 - { id: 0, class: fpr }
1069 - { id: 1, class: fpr }
1070 - { id: 2, class: fpr }
1071 - { id: 3, class: fpr }
1072 - { id: 4, class: fpr }
1074 - { reg: '$d0', virtual-reg: '%2' }
1075 - { reg: '$d1', virtual-reg: '%3' }
1076 - { reg: '$d2', virtual-reg: '%4' }
1079 liveins: $d0, $d1, $d2
1081 ; CHECK-LABEL: name: test_rule930_id2446_at_idx60191
1082 ; CHECK: liveins: $d0, $d1, $d2
1083 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1084 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1085 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1086 ; CHECK: [[FMLSv2f32_:%[0-9]+]]:fpr64 = nofpexcept FMLSv2f32 [[COPY1]], [[COPY2]], [[COPY]]
1087 ; CHECK: $noreg = PATCHABLE_RET [[FMLSv2f32_]]
1088 %4:fpr(<2 x s32>) = COPY $d2
1089 %3:fpr(<2 x s32>) = COPY $d1
1090 %2:fpr(<2 x s32>) = COPY $d0
1091 %0:fpr(<2 x s32>) = G_FNEG %4
1092 %1:fpr(<2 x s32>) = G_FMA %0, %2, %3
1093 $noreg = PATCHABLE_RET %1(<2 x s32>)
1097 name: test_rule931_id2447_at_idx60277
1100 regBankSelected: true
1101 tracksRegLiveness: true
1103 - { id: 0, class: fpr }
1104 - { id: 1, class: fpr }
1105 - { id: 2, class: fpr }
1106 - { id: 3, class: fpr }
1107 - { id: 4, class: fpr }
1109 - { reg: '$q0', virtual-reg: '%2' }
1110 - { reg: '$q1', virtual-reg: '%3' }
1111 - { reg: '$q2', virtual-reg: '%4' }
1114 liveins: $q0, $q1, $q2
1116 ; CHECK-LABEL: name: test_rule931_id2447_at_idx60277
1117 ; CHECK: liveins: $q0, $q1, $q2
1118 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
1119 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1120 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
1121 ; CHECK: [[FMLSv4f32_:%[0-9]+]]:fpr128 = nofpexcept FMLSv4f32 [[COPY1]], [[COPY2]], [[COPY]]
1122 ; CHECK: $noreg = PATCHABLE_RET [[FMLSv4f32_]]
1123 %4:fpr(<4 x s32>) = COPY $q2
1124 %3:fpr(<4 x s32>) = COPY $q1
1125 %2:fpr(<4 x s32>) = COPY $q0
1126 %0:fpr(<4 x s32>) = G_FNEG %4
1127 %1:fpr(<4 x s32>) = G_FMA %0, %2, %3
1128 $noreg = PATCHABLE_RET %1(<4 x s32>)
1132 name: test_rule932_id2448_at_idx60363
1135 regBankSelected: true
1136 tracksRegLiveness: true
1138 - { id: 0, class: fpr }
1139 - { id: 1, class: fpr }
1140 - { id: 2, class: fpr }
1141 - { id: 3, class: fpr }
1142 - { id: 4, class: fpr }
1144 - { reg: '$q0', virtual-reg: '%2' }
1145 - { reg: '$q1', virtual-reg: '%3' }
1146 - { reg: '$q2', virtual-reg: '%4' }
1149 liveins: $q0, $q1, $q2
1151 ; CHECK-LABEL: name: test_rule932_id2448_at_idx60363
1152 ; CHECK: liveins: $q0, $q1, $q2
1153 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
1154 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1155 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
1156 ; CHECK: [[FMLSv2f64_:%[0-9]+]]:fpr128 = nofpexcept FMLSv2f64 [[COPY1]], [[COPY2]], [[COPY]]
1157 ; CHECK: $noreg = PATCHABLE_RET [[FMLSv2f64_]]
1158 %4:fpr(<2 x s64>) = COPY $q2
1159 %3:fpr(<2 x s64>) = COPY $q1
1160 %2:fpr(<2 x s64>) = COPY $q0
1161 %0:fpr(<2 x s64>) = G_FNEG %4
1162 %1:fpr(<2 x s64>) = G_FMA %0, %2, %3
1163 $noreg = PATCHABLE_RET %1(<2 x s64>)
1167 name: test_rule934_id429_at_idx60537
1170 regBankSelected: true
1171 tracksRegLiveness: true
1173 - { id: 0, class: fpr }
1174 - { id: 1, class: fpr }
1175 - { id: 2, class: fpr }
1176 - { id: 3, class: fpr }
1177 - { id: 4, class: fpr }
1179 - { reg: '$s0', virtual-reg: '%2' }
1180 - { reg: '$s1', virtual-reg: '%3' }
1181 - { reg: '$s2', virtual-reg: '%4' }
1184 liveins: $s0, $s1, $s2
1186 ; CHECK-LABEL: name: test_rule934_id429_at_idx60537
1187 ; CHECK: liveins: $s0, $s1, $s2
1188 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s2
1189 ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
1190 ; CHECK: [[COPY2:%[0-9]+]]:fpr32 = COPY $s0
1191 ; CHECK: [[FMSUBSrrr:%[0-9]+]]:fpr32 = nofpexcept FMSUBSrrr [[COPY2]], [[COPY]], [[COPY1]]
1192 ; CHECK: $noreg = PATCHABLE_RET [[FMSUBSrrr]]
1193 %4:fpr(s32) = COPY $s2
1194 %3:fpr(s32) = COPY $s1
1195 %2:fpr(s32) = COPY $s0
1196 %0:fpr(s32) = G_FNEG %4
1197 %1:fpr(s32) = G_FMA %2, %0, %3
1198 $noreg = PATCHABLE_RET %1(s32)
1202 name: test_rule935_id430_at_idx60625
1205 regBankSelected: true
1206 tracksRegLiveness: true
1208 - { id: 0, class: fpr }
1209 - { id: 1, class: fpr }
1210 - { id: 2, class: fpr }
1211 - { id: 3, class: fpr }
1212 - { id: 4, class: fpr }
1214 - { reg: '$d0', virtual-reg: '%2' }
1215 - { reg: '$d1', virtual-reg: '%3' }
1216 - { reg: '$d2', virtual-reg: '%4' }
1219 liveins: $d0, $d1, $d2
1221 ; CHECK-LABEL: name: test_rule935_id430_at_idx60625
1222 ; CHECK: liveins: $d0, $d1, $d2
1223 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1224 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1225 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1226 ; CHECK: [[FMSUBDrrr:%[0-9]+]]:fpr64 = nofpexcept FMSUBDrrr [[COPY2]], [[COPY]], [[COPY1]]
1227 ; CHECK: $noreg = PATCHABLE_RET [[FMSUBDrrr]]
1228 %4:fpr(s64) = COPY $d2
1229 %3:fpr(s64) = COPY $d1
1230 %2:fpr(s64) = COPY $d0
1231 %0:fpr(s64) = G_FNEG %4
1232 %1:fpr(s64) = G_FMA %2, %0, %3
1233 $noreg = PATCHABLE_RET %1(s64)
1237 name: test_rule938_id899_at_idx60889
1240 regBankSelected: true
1241 tracksRegLiveness: true
1243 - { id: 0, class: fpr }
1244 - { id: 1, class: fpr }
1245 - { id: 2, class: fpr }
1246 - { id: 3, class: fpr }
1247 - { id: 4, class: fpr }
1249 - { reg: '$d0', virtual-reg: '%2' }
1250 - { reg: '$d1', virtual-reg: '%3' }
1251 - { reg: '$d2', virtual-reg: '%4' }
1254 liveins: $d0, $d1, $d2
1256 ; CHECK-LABEL: name: test_rule938_id899_at_idx60889
1257 ; CHECK: liveins: $d0, $d1, $d2
1258 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1259 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1260 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1261 ; CHECK: [[FMLSv2f32_:%[0-9]+]]:fpr64 = nofpexcept FMLSv2f32 [[COPY1]], [[COPY2]], [[COPY]]
1262 ; CHECK: $noreg = PATCHABLE_RET [[FMLSv2f32_]]
1263 %4:fpr(<2 x s32>) = COPY $d2
1264 %3:fpr(<2 x s32>) = COPY $d1
1265 %2:fpr(<2 x s32>) = COPY $d0
1266 %0:fpr(<2 x s32>) = G_FNEG %4
1267 %1:fpr(<2 x s32>) = G_FMA %2, %0, %3
1268 $noreg = PATCHABLE_RET %1(<2 x s32>)
1272 name: test_rule939_id900_at_idx60977
1275 regBankSelected: true
1276 tracksRegLiveness: true
1278 - { id: 0, class: fpr }
1279 - { id: 1, class: fpr }
1280 - { id: 2, class: fpr }
1281 - { id: 3, class: fpr }
1282 - { id: 4, class: fpr }
1284 - { reg: '$q0', virtual-reg: '%2' }
1285 - { reg: '$q1', virtual-reg: '%3' }
1286 - { reg: '$q2', virtual-reg: '%4' }
1289 liveins: $q0, $q1, $q2
1291 ; CHECK-LABEL: name: test_rule939_id900_at_idx60977
1292 ; CHECK: liveins: $q0, $q1, $q2
1293 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
1294 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1295 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
1296 ; CHECK: [[FMLSv4f32_:%[0-9]+]]:fpr128 = nofpexcept FMLSv4f32 [[COPY1]], [[COPY2]], [[COPY]]
1297 ; CHECK: $noreg = PATCHABLE_RET [[FMLSv4f32_]]
1298 %4:fpr(<4 x s32>) = COPY $q2
1299 %3:fpr(<4 x s32>) = COPY $q1
1300 %2:fpr(<4 x s32>) = COPY $q0
1301 %0:fpr(<4 x s32>) = G_FNEG %4
1302 %1:fpr(<4 x s32>) = G_FMA %2, %0, %3
1303 $noreg = PATCHABLE_RET %1(<4 x s32>)
1307 name: test_rule940_id901_at_idx61065
1310 regBankSelected: true
1311 tracksRegLiveness: true
1313 - { id: 0, class: fpr }
1314 - { id: 1, class: fpr }
1315 - { id: 2, class: fpr }
1316 - { id: 3, class: fpr }
1317 - { id: 4, class: fpr }
1319 - { reg: '$q0', virtual-reg: '%2' }
1320 - { reg: '$q1', virtual-reg: '%3' }
1321 - { reg: '$q2', virtual-reg: '%4' }
1324 liveins: $q0, $q1, $q2
1326 ; CHECK-LABEL: name: test_rule940_id901_at_idx61065
1327 ; CHECK: liveins: $q0, $q1, $q2
1328 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
1329 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1330 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
1331 ; CHECK: [[FMLSv2f64_:%[0-9]+]]:fpr128 = nofpexcept FMLSv2f64 [[COPY1]], [[COPY2]], [[COPY]]
1332 ; CHECK: $noreg = PATCHABLE_RET [[FMLSv2f64_]]
1333 %4:fpr(<2 x s64>) = COPY $q2
1334 %3:fpr(<2 x s64>) = COPY $q1
1335 %2:fpr(<2 x s64>) = COPY $q0
1336 %0:fpr(<2 x s64>) = G_FNEG %4
1337 %1:fpr(<2 x s64>) = G_FMA %2, %0, %3
1338 $noreg = PATCHABLE_RET %1(<2 x s64>)
1342 name: test_rule942_id435_at_idx61241
1345 regBankSelected: true
1346 tracksRegLiveness: true
1348 - { id: 0, class: fpr }
1349 - { id: 1, class: fpr }
1350 - { id: 2, class: fpr }
1351 - { id: 3, class: fpr }
1352 - { id: 4, class: fpr }
1354 - { reg: '$s0', virtual-reg: '%2' }
1355 - { reg: '$s1', virtual-reg: '%3' }
1356 - { reg: '$s2', virtual-reg: '%4' }
1359 liveins: $s0, $s1, $s2
1361 ; CHECK-LABEL: name: test_rule942_id435_at_idx61241
1362 ; CHECK: liveins: $s0, $s1, $s2
1363 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s2
1364 ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
1365 ; CHECK: [[COPY2:%[0-9]+]]:fpr32 = COPY $s0
1366 ; CHECK: [[FNMSUBSrrr:%[0-9]+]]:fpr32 = nofpexcept FNMSUBSrrr [[COPY2]], [[COPY1]], [[COPY]]
1367 ; CHECK: $noreg = PATCHABLE_RET [[FNMSUBSrrr]]
1368 %4:fpr(s32) = COPY $s2
1369 %3:fpr(s32) = COPY $s1
1370 %2:fpr(s32) = COPY $s0
1371 %0:fpr(s32) = G_FNEG %4
1372 %1:fpr(s32) = G_FMA %2, %3, %0
1373 $noreg = PATCHABLE_RET %1(s32)
1377 name: test_rule943_id436_at_idx61329
1380 regBankSelected: true
1381 tracksRegLiveness: true
1383 - { id: 0, class: fpr }
1384 - { id: 1, class: fpr }
1385 - { id: 2, class: fpr }
1386 - { id: 3, class: fpr }
1387 - { id: 4, class: fpr }
1389 - { reg: '$d0', virtual-reg: '%2' }
1390 - { reg: '$d1', virtual-reg: '%3' }
1391 - { reg: '$d2', virtual-reg: '%4' }
1394 liveins: $d0, $d1, $d2
1396 ; CHECK-LABEL: name: test_rule943_id436_at_idx61329
1397 ; CHECK: liveins: $d0, $d1, $d2
1398 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1399 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1400 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1401 ; CHECK: [[FNMSUBDrrr:%[0-9]+]]:fpr64 = nofpexcept FNMSUBDrrr [[COPY2]], [[COPY1]], [[COPY]]
1402 ; CHECK: $noreg = PATCHABLE_RET [[FNMSUBDrrr]]
1403 %4:fpr(s64) = COPY $d2
1404 %3:fpr(s64) = COPY $d1
1405 %2:fpr(s64) = COPY $d0
1406 %0:fpr(s64) = G_FNEG %4
1407 %1:fpr(s64) = G_FMA %2, %3, %0
1408 $noreg = PATCHABLE_RET %1(s64)
1412 name: test_rule944_id3803_at_idx61417
1415 regBankSelected: true
1416 tracksRegLiveness: true
1418 - { id: 0, class: fpr }
1419 - { id: 1, class: fpr }
1420 - { id: 2, class: fpr }
1421 - { id: 3, class: fpr }
1422 - { id: 4, class: fpr }
1424 - { reg: '$d0', virtual-reg: '%2' }
1425 - { reg: '$d1', virtual-reg: '%3' }
1426 - { reg: '$d2', virtual-reg: '%4' }
1429 liveins: $d0, $d1, $d2
1431 ; CHECK-LABEL: name: test_rule944_id3803_at_idx61417
1432 ; CHECK: liveins: $d0, $d1, $d2
1433 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1434 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1435 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1436 ; CHECK: [[MULv8i8_:%[0-9]+]]:fpr64 = MULv8i8 [[COPY1]], [[COPY]]
1437 ; CHECK: [[ADDv8i8_:%[0-9]+]]:fpr64 = ADDv8i8 [[MULv8i8_]], [[COPY2]]
1438 ; CHECK: $noreg = PATCHABLE_RET [[ADDv8i8_]]
1439 %4:fpr(<8 x s8>) = COPY $d2
1440 %3:fpr(<8 x s8>) = COPY $d1
1441 %2:fpr(<8 x s8>) = COPY $d0
1442 %0:fpr(<8 x s8>) = G_MUL %3, %4
1443 %1:fpr(<8 x s8>) = G_ADD %0, %2
1444 $noreg = PATCHABLE_RET %1(<8 x s8>)
1448 name: test_rule945_id3804_at_idx61505
1451 regBankSelected: true
1452 tracksRegLiveness: true
1454 - { id: 0, class: fpr }
1455 - { id: 1, class: fpr }
1456 - { id: 2, class: fpr }
1457 - { id: 3, class: fpr }
1458 - { id: 4, class: fpr }
1460 - { reg: '$q0', virtual-reg: '%2' }
1461 - { reg: '$q1', virtual-reg: '%3' }
1462 - { reg: '$q2', virtual-reg: '%4' }
1465 liveins: $q0, $q1, $q2
1467 ; CHECK-LABEL: name: test_rule945_id3804_at_idx61505
1468 ; CHECK: liveins: $q0, $q1, $q2
1469 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
1470 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1471 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
1472 ; CHECK: [[MULv16i8_:%[0-9]+]]:fpr128 = MULv16i8 [[COPY1]], [[COPY]]
1473 ; CHECK: [[ADDv16i8_:%[0-9]+]]:fpr128 = ADDv16i8 [[MULv16i8_]], [[COPY2]]
1474 ; CHECK: $noreg = PATCHABLE_RET [[ADDv16i8_]]
1475 %4:fpr(<16 x s8>) = COPY $q2
1476 %3:fpr(<16 x s8>) = COPY $q1
1477 %2:fpr(<16 x s8>) = COPY $q0
1478 %0:fpr(<16 x s8>) = G_MUL %3, %4
1479 %1:fpr(<16 x s8>) = G_ADD %0, %2
1480 $noreg = PATCHABLE_RET %1(<16 x s8>)
1484 name: test_rule946_id3805_at_idx61593
1487 regBankSelected: true
1488 tracksRegLiveness: true
1490 - { id: 0, class: fpr }
1491 - { id: 1, class: fpr }
1492 - { id: 2, class: fpr }
1493 - { id: 3, class: fpr }
1494 - { id: 4, class: fpr }
1496 - { reg: '$d0', virtual-reg: '%2' }
1497 - { reg: '$d1', virtual-reg: '%3' }
1498 - { reg: '$d2', virtual-reg: '%4' }
1501 liveins: $d0, $d1, $d2
1503 ; CHECK-LABEL: name: test_rule946_id3805_at_idx61593
1504 ; CHECK: liveins: $d0, $d1, $d2
1505 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1506 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1507 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1508 ; CHECK: [[MULv4i16_:%[0-9]+]]:fpr64 = MULv4i16 [[COPY1]], [[COPY]]
1509 ; CHECK: [[ADDv4i16_:%[0-9]+]]:fpr64 = ADDv4i16 [[MULv4i16_]], [[COPY2]]
1510 ; CHECK: $noreg = PATCHABLE_RET [[ADDv4i16_]]
1511 %4:fpr(<4 x s16>) = COPY $d2
1512 %3:fpr(<4 x s16>) = COPY $d1
1513 %2:fpr(<4 x s16>) = COPY $d0
1514 %0:fpr(<4 x s16>) = G_MUL %3, %4
1515 %1:fpr(<4 x s16>) = G_ADD %0, %2
1516 $noreg = PATCHABLE_RET %1(<4 x s16>)
1520 name: test_rule947_id3806_at_idx61681
1523 regBankSelected: true
1524 tracksRegLiveness: true
1526 - { id: 0, class: fpr }
1527 - { id: 1, class: fpr }
1528 - { id: 2, class: fpr }
1529 - { id: 3, class: fpr }
1530 - { id: 4, class: fpr }
1532 - { reg: '$q0', virtual-reg: '%2' }
1533 - { reg: '$q1', virtual-reg: '%3' }
1534 - { reg: '$q2', virtual-reg: '%4' }
1537 liveins: $q0, $q1, $q2
1539 ; CHECK-LABEL: name: test_rule947_id3806_at_idx61681
1540 ; CHECK: liveins: $q0, $q1, $q2
1541 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
1542 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1543 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
1544 ; CHECK: [[MULv8i16_:%[0-9]+]]:fpr128 = MULv8i16 [[COPY1]], [[COPY]]
1545 ; CHECK: [[ADDv8i16_:%[0-9]+]]:fpr128 = ADDv8i16 [[MULv8i16_]], [[COPY2]]
1546 ; CHECK: $noreg = PATCHABLE_RET [[ADDv8i16_]]
1547 %4:fpr(<8 x s16>) = COPY $q2
1548 %3:fpr(<8 x s16>) = COPY $q1
1549 %2:fpr(<8 x s16>) = COPY $q0
1550 %0:fpr(<8 x s16>) = G_MUL %3, %4
1551 %1:fpr(<8 x s16>) = G_ADD %0, %2
1552 $noreg = PATCHABLE_RET %1(<8 x s16>)
1556 name: test_rule950_id3869_at_idx61945
1559 regBankSelected: true
1560 tracksRegLiveness: true
1562 - { id: 0, class: fpr }
1563 - { id: 1, class: fpr }
1564 - { id: 2, class: fpr }
1565 - { id: 3, class: fpr }
1567 - { reg: '$q0', virtual-reg: '%2' }
1568 - { reg: '$d0', virtual-reg: '%3' }
1573 ; CHECK-LABEL: name: test_rule950_id3869_at_idx61945
1574 ; CHECK: liveins: $q0, $d0
1575 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1576 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1577 ; CHECK: [[SADDWv8i8_v8i16_:%[0-9]+]]:fpr128 = SADDWv8i8_v8i16 [[COPY1]], [[COPY]]
1578 ; CHECK: $noreg = PATCHABLE_RET [[SADDWv8i8_v8i16_]]
1579 %3:fpr(<8 x s8>) = COPY $d0
1580 %2:fpr(<8 x s16>) = COPY $q0
1581 %0:fpr(<8 x s16>) = G_SEXT %3(<8 x s8>)
1582 %1:fpr(<8 x s16>) = G_ADD %0, %2
1583 $noreg = PATCHABLE_RET %1(<8 x s16>)
1587 name: test_rule951_id3871_at_idx62021
1590 regBankSelected: true
1591 tracksRegLiveness: true
1593 - { id: 0, class: fpr }
1594 - { id: 1, class: fpr }
1595 - { id: 2, class: fpr }
1596 - { id: 3, class: fpr }
1598 - { reg: '$q0', virtual-reg: '%2' }
1599 - { reg: '$d0', virtual-reg: '%3' }
1604 ; CHECK-LABEL: name: test_rule951_id3871_at_idx62021
1605 ; CHECK: liveins: $q0, $d0
1606 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1607 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1608 ; CHECK: [[SADDWv4i16_v4i32_:%[0-9]+]]:fpr128 = SADDWv4i16_v4i32 [[COPY1]], [[COPY]]
1609 ; CHECK: $noreg = PATCHABLE_RET [[SADDWv4i16_v4i32_]]
1610 %3:fpr(<4 x s16>) = COPY $d0
1611 %2:fpr(<4 x s32>) = COPY $q0
1612 %0:fpr(<4 x s32>) = G_SEXT %3(<4 x s16>)
1613 %1:fpr(<4 x s32>) = G_ADD %0, %2
1614 $noreg = PATCHABLE_RET %1(<4 x s32>)
1618 name: test_rule952_id3873_at_idx62097
1621 regBankSelected: true
1622 tracksRegLiveness: true
1624 - { id: 0, class: fpr }
1625 - { id: 1, class: fpr }
1626 - { id: 2, class: fpr }
1627 - { id: 3, class: fpr }
1629 - { reg: '$q0', virtual-reg: '%2' }
1630 - { reg: '$d0', virtual-reg: '%3' }
1635 ; CHECK-LABEL: name: test_rule952_id3873_at_idx62097
1636 ; CHECK: liveins: $q0, $d0
1637 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1638 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1639 ; CHECK: [[SADDWv2i32_v2i64_:%[0-9]+]]:fpr128 = SADDWv2i32_v2i64 [[COPY1]], [[COPY]]
1640 ; CHECK: $noreg = PATCHABLE_RET [[SADDWv2i32_v2i64_]]
1641 %3:fpr(<2 x s32>) = COPY $d0
1642 %2:fpr(<2 x s64>) = COPY $q0
1643 %0:fpr(<2 x s64>) = G_SEXT %3(<2 x s32>)
1644 %1:fpr(<2 x s64>) = G_ADD %0, %2
1645 $noreg = PATCHABLE_RET %1(<2 x s64>)
1649 name: test_rule953_id3887_at_idx62173
1652 regBankSelected: true
1653 tracksRegLiveness: true
1655 - { id: 0, class: fpr }
1656 - { id: 1, class: fpr }
1657 - { id: 2, class: fpr }
1658 - { id: 3, class: fpr }
1660 - { reg: '$q0', virtual-reg: '%2' }
1661 - { reg: '$d0', virtual-reg: '%3' }
1666 ; CHECK-LABEL: name: test_rule953_id3887_at_idx62173
1667 ; CHECK: liveins: $q0, $d0
1668 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1669 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1670 ; CHECK: [[UADDWv8i8_v8i16_:%[0-9]+]]:fpr128 = UADDWv8i8_v8i16 [[COPY1]], [[COPY]]
1671 ; CHECK: $noreg = PATCHABLE_RET [[UADDWv8i8_v8i16_]]
1672 %3:fpr(<8 x s8>) = COPY $d0
1673 %2:fpr(<8 x s16>) = COPY $q0
1674 %0:fpr(<8 x s16>) = G_ZEXT %3(<8 x s8>)
1675 %1:fpr(<8 x s16>) = G_ADD %0, %2
1676 $noreg = PATCHABLE_RET %1(<8 x s16>)
1680 name: test_rule954_id3889_at_idx62249
1683 regBankSelected: true
1684 tracksRegLiveness: true
1686 - { id: 0, class: fpr }
1687 - { id: 1, class: fpr }
1688 - { id: 2, class: fpr }
1689 - { id: 3, class: fpr }
1691 - { reg: '$q0', virtual-reg: '%2' }
1692 - { reg: '$d0', virtual-reg: '%3' }
1697 ; CHECK-LABEL: name: test_rule954_id3889_at_idx62249
1698 ; CHECK: liveins: $q0, $d0
1699 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1700 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1701 ; CHECK: [[UADDWv4i16_v4i32_:%[0-9]+]]:fpr128 = UADDWv4i16_v4i32 [[COPY1]], [[COPY]]
1702 ; CHECK: $noreg = PATCHABLE_RET [[UADDWv4i16_v4i32_]]
1703 %3:fpr(<4 x s16>) = COPY $d0
1704 %2:fpr(<4 x s32>) = COPY $q0
1705 %0:fpr(<4 x s32>) = G_ZEXT %3(<4 x s16>)
1706 %1:fpr(<4 x s32>) = G_ADD %0, %2
1707 $noreg = PATCHABLE_RET %1(<4 x s32>)
1711 name: test_rule955_id3891_at_idx62325
1714 regBankSelected: true
1715 tracksRegLiveness: true
1717 - { id: 0, class: fpr }
1718 - { id: 1, class: fpr }
1719 - { id: 2, class: fpr }
1720 - { id: 3, class: fpr }
1722 - { reg: '$q0', virtual-reg: '%2' }
1723 - { reg: '$d0', virtual-reg: '%3' }
1728 ; CHECK-LABEL: name: test_rule955_id3891_at_idx62325
1729 ; CHECK: liveins: $q0, $d0
1730 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1731 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1732 ; CHECK: [[UADDWv2i32_v2i64_:%[0-9]+]]:fpr128 = UADDWv2i32_v2i64 [[COPY1]], [[COPY]]
1733 ; CHECK: $noreg = PATCHABLE_RET [[UADDWv2i32_v2i64_]]
1734 %3:fpr(<2 x s32>) = COPY $d0
1735 %2:fpr(<2 x s64>) = COPY $q0
1736 %0:fpr(<2 x s64>) = G_ZEXT %3(<2 x s32>)
1737 %1:fpr(<2 x s64>) = G_ADD %0, %2
1738 $noreg = PATCHABLE_RET %1(<2 x s64>)
1742 name: test_rule956_id927_at_idx62401
1745 regBankSelected: true
1746 tracksRegLiveness: true
1748 - { id: 0, class: fpr }
1749 - { id: 1, class: fpr }
1750 - { id: 2, class: fpr }
1751 - { id: 3, class: fpr }
1752 - { id: 4, class: fpr }
1754 - { reg: '$d0', virtual-reg: '%2' }
1755 - { reg: '$d1', virtual-reg: '%3' }
1756 - { reg: '$d2', virtual-reg: '%4' }
1759 liveins: $d0, $d1, $d2
1761 ; CHECK-LABEL: name: test_rule956_id927_at_idx62401
1762 ; CHECK: liveins: $d0, $d1, $d2
1763 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1764 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1765 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1766 ; CHECK: [[MULv8i8_:%[0-9]+]]:fpr64 = MULv8i8 [[COPY1]], [[COPY]]
1767 ; CHECK: [[ADDv8i8_:%[0-9]+]]:fpr64 = ADDv8i8 [[COPY2]], [[MULv8i8_]]
1768 ; CHECK: $noreg = PATCHABLE_RET [[ADDv8i8_]]
1769 %4:fpr(<8 x s8>) = COPY $d2
1770 %3:fpr(<8 x s8>) = COPY $d1
1771 %2:fpr(<8 x s8>) = COPY $d0
1772 %0:fpr(<8 x s8>) = G_MUL %3, %4
1773 %1:fpr(<8 x s8>) = G_ADD %2, %0
1774 $noreg = PATCHABLE_RET %1(<8 x s8>)
1778 name: test_rule957_id928_at_idx62489
1781 regBankSelected: true
1782 tracksRegLiveness: true
1784 - { id: 0, class: fpr }
1785 - { id: 1, class: fpr }
1786 - { id: 2, class: fpr }
1787 - { id: 3, class: fpr }
1788 - { id: 4, class: fpr }
1790 - { reg: '$q0', virtual-reg: '%2' }
1791 - { reg: '$q1', virtual-reg: '%3' }
1792 - { reg: '$q2', virtual-reg: '%4' }
1795 liveins: $q0, $q1, $q2
1797 ; CHECK-LABEL: name: test_rule957_id928_at_idx62489
1798 ; CHECK: liveins: $q0, $q1, $q2
1799 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
1800 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1801 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
1802 ; CHECK: [[MULv16i8_:%[0-9]+]]:fpr128 = MULv16i8 [[COPY1]], [[COPY]]
1803 ; CHECK: [[ADDv16i8_:%[0-9]+]]:fpr128 = ADDv16i8 [[COPY2]], [[MULv16i8_]]
1804 ; CHECK: $noreg = PATCHABLE_RET [[ADDv16i8_]]
1805 %4:fpr(<16 x s8>) = COPY $q2
1806 %3:fpr(<16 x s8>) = COPY $q1
1807 %2:fpr(<16 x s8>) = COPY $q0
1808 %0:fpr(<16 x s8>) = G_MUL %3, %4
1809 %1:fpr(<16 x s8>) = G_ADD %2, %0
1810 $noreg = PATCHABLE_RET %1(<16 x s8>)
1814 name: test_rule958_id929_at_idx62577
1817 regBankSelected: true
1818 tracksRegLiveness: true
1820 - { id: 0, class: fpr }
1821 - { id: 1, class: fpr }
1822 - { id: 2, class: fpr }
1823 - { id: 3, class: fpr }
1824 - { id: 4, class: fpr }
1826 - { reg: '$d0', virtual-reg: '%2' }
1827 - { reg: '$d1', virtual-reg: '%3' }
1828 - { reg: '$d2', virtual-reg: '%4' }
1831 liveins: $d0, $d1, $d2
1833 ; CHECK-LABEL: name: test_rule958_id929_at_idx62577
1834 ; CHECK: liveins: $d0, $d1, $d2
1835 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
1836 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1837 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
1838 ; CHECK: [[MULv4i16_:%[0-9]+]]:fpr64 = MULv4i16 [[COPY1]], [[COPY]]
1839 ; CHECK: [[ADDv4i16_:%[0-9]+]]:fpr64 = ADDv4i16 [[COPY2]], [[MULv4i16_]]
1840 ; CHECK: $noreg = PATCHABLE_RET [[ADDv4i16_]]
1841 %4:fpr(<4 x s16>) = COPY $d2
1842 %3:fpr(<4 x s16>) = COPY $d1
1843 %2:fpr(<4 x s16>) = COPY $d0
1844 %0:fpr(<4 x s16>) = G_MUL %3, %4
1845 %1:fpr(<4 x s16>) = G_ADD %2, %0
1846 $noreg = PATCHABLE_RET %1(<4 x s16>)
1850 name: test_rule959_id930_at_idx62665
1853 regBankSelected: true
1854 tracksRegLiveness: true
1856 - { id: 0, class: fpr }
1857 - { id: 1, class: fpr }
1858 - { id: 2, class: fpr }
1859 - { id: 3, class: fpr }
1860 - { id: 4, class: fpr }
1862 - { reg: '$q0', virtual-reg: '%2' }
1863 - { reg: '$q1', virtual-reg: '%3' }
1864 - { reg: '$q2', virtual-reg: '%4' }
1867 liveins: $q0, $q1, $q2
1869 ; CHECK-LABEL: name: test_rule959_id930_at_idx62665
1870 ; CHECK: liveins: $q0, $q1, $q2
1871 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
1872 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1873 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
1874 ; CHECK: [[MULv8i16_:%[0-9]+]]:fpr128 = MULv8i16 [[COPY1]], [[COPY]]
1875 ; CHECK: [[ADDv8i16_:%[0-9]+]]:fpr128 = ADDv8i16 [[COPY2]], [[MULv8i16_]]
1876 ; CHECK: $noreg = PATCHABLE_RET [[ADDv8i16_]]
1877 %4:fpr(<8 x s16>) = COPY $q2
1878 %3:fpr(<8 x s16>) = COPY $q1
1879 %2:fpr(<8 x s16>) = COPY $q0
1880 %0:fpr(<8 x s16>) = G_MUL %3, %4
1881 %1:fpr(<8 x s16>) = G_ADD %2, %0
1882 $noreg = PATCHABLE_RET %1(<8 x s16>)
1886 name: test_rule962_id1272_at_idx62929
1889 regBankSelected: true
1890 tracksRegLiveness: true
1892 - { id: 0, class: fpr }
1893 - { id: 1, class: fpr }
1894 - { id: 2, class: fpr }
1895 - { id: 3, class: fpr }
1897 - { reg: '$q0', virtual-reg: '%2' }
1898 - { reg: '$d0', virtual-reg: '%3' }
1903 ; CHECK-LABEL: name: test_rule962_id1272_at_idx62929
1904 ; CHECK: liveins: $q0, $d0
1905 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1906 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1907 ; CHECK: [[SADDWv8i8_v8i16_:%[0-9]+]]:fpr128 = SADDWv8i8_v8i16 [[COPY1]], [[COPY]]
1908 ; CHECK: $noreg = PATCHABLE_RET [[SADDWv8i8_v8i16_]]
1909 %3:fpr(<8 x s8>) = COPY $d0
1910 %2:fpr(<8 x s16>) = COPY $q0
1911 %0:fpr(<8 x s16>) = G_SEXT %3(<8 x s8>)
1912 %1:fpr(<8 x s16>) = G_ADD %2, %0
1913 $noreg = PATCHABLE_RET %1(<8 x s16>)
1917 name: test_rule963_id1274_at_idx63005
1920 regBankSelected: true
1921 tracksRegLiveness: true
1923 - { id: 0, class: fpr }
1924 - { id: 1, class: fpr }
1925 - { id: 2, class: fpr }
1926 - { id: 3, class: fpr }
1928 - { reg: '$q0', virtual-reg: '%2' }
1929 - { reg: '$d0', virtual-reg: '%3' }
1934 ; CHECK-LABEL: name: test_rule963_id1274_at_idx63005
1935 ; CHECK: liveins: $q0, $d0
1936 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1937 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1938 ; CHECK: [[SADDWv4i16_v4i32_:%[0-9]+]]:fpr128 = SADDWv4i16_v4i32 [[COPY1]], [[COPY]]
1939 ; CHECK: $noreg = PATCHABLE_RET [[SADDWv4i16_v4i32_]]
1940 %3:fpr(<4 x s16>) = COPY $d0
1941 %2:fpr(<4 x s32>) = COPY $q0
1942 %0:fpr(<4 x s32>) = G_SEXT %3(<4 x s16>)
1943 %1:fpr(<4 x s32>) = G_ADD %2, %0
1944 $noreg = PATCHABLE_RET %1(<4 x s32>)
1948 name: test_rule964_id1276_at_idx63081
1951 regBankSelected: true
1952 tracksRegLiveness: true
1954 - { id: 0, class: fpr }
1955 - { id: 1, class: fpr }
1956 - { id: 2, class: fpr }
1957 - { id: 3, class: fpr }
1959 - { reg: '$q0', virtual-reg: '%2' }
1960 - { reg: '$d0', virtual-reg: '%3' }
1965 ; CHECK-LABEL: name: test_rule964_id1276_at_idx63081
1966 ; CHECK: liveins: $q0, $d0
1967 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1968 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
1969 ; CHECK: [[SADDWv2i32_v2i64_:%[0-9]+]]:fpr128 = SADDWv2i32_v2i64 [[COPY1]], [[COPY]]
1970 ; CHECK: $noreg = PATCHABLE_RET [[SADDWv2i32_v2i64_]]
1971 %3:fpr(<2 x s32>) = COPY $d0
1972 %2:fpr(<2 x s64>) = COPY $q0
1973 %0:fpr(<2 x s64>) = G_SEXT %3(<2 x s32>)
1974 %1:fpr(<2 x s64>) = G_ADD %2, %0
1975 $noreg = PATCHABLE_RET %1(<2 x s64>)
1979 name: test_rule965_id1332_at_idx63157
1982 regBankSelected: true
1983 tracksRegLiveness: true
1985 - { id: 0, class: fpr }
1986 - { id: 1, class: fpr }
1987 - { id: 2, class: fpr }
1988 - { id: 3, class: fpr }
1990 - { reg: '$q0', virtual-reg: '%2' }
1991 - { reg: '$d0', virtual-reg: '%3' }
1996 ; CHECK-LABEL: name: test_rule965_id1332_at_idx63157
1997 ; CHECK: liveins: $q0, $d0
1998 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1999 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2000 ; CHECK: [[UADDWv8i8_v8i16_:%[0-9]+]]:fpr128 = UADDWv8i8_v8i16 [[COPY1]], [[COPY]]
2001 ; CHECK: $noreg = PATCHABLE_RET [[UADDWv8i8_v8i16_]]
2002 %3:fpr(<8 x s8>) = COPY $d0
2003 %2:fpr(<8 x s16>) = COPY $q0
2004 %0:fpr(<8 x s16>) = G_ZEXT %3(<8 x s8>)
2005 %1:fpr(<8 x s16>) = G_ADD %2, %0
2006 $noreg = PATCHABLE_RET %1(<8 x s16>)
2010 name: test_rule966_id1334_at_idx63233
2013 regBankSelected: true
2014 tracksRegLiveness: true
2016 - { id: 0, class: fpr }
2017 - { id: 1, class: fpr }
2018 - { id: 2, class: fpr }
2019 - { id: 3, class: fpr }
2021 - { reg: '$q0', virtual-reg: '%2' }
2022 - { reg: '$d0', virtual-reg: '%3' }
2027 ; CHECK-LABEL: name: test_rule966_id1334_at_idx63233
2028 ; CHECK: liveins: $q0, $d0
2029 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2030 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2031 ; CHECK: [[UADDWv4i16_v4i32_:%[0-9]+]]:fpr128 = UADDWv4i16_v4i32 [[COPY1]], [[COPY]]
2032 ; CHECK: $noreg = PATCHABLE_RET [[UADDWv4i16_v4i32_]]
2033 %3:fpr(<4 x s16>) = COPY $d0
2034 %2:fpr(<4 x s32>) = COPY $q0
2035 %0:fpr(<4 x s32>) = G_ZEXT %3(<4 x s16>)
2036 %1:fpr(<4 x s32>) = G_ADD %2, %0
2037 $noreg = PATCHABLE_RET %1(<4 x s32>)
2041 name: test_rule967_id1336_at_idx63309
2044 regBankSelected: true
2045 tracksRegLiveness: true
2047 - { id: 0, class: fpr }
2048 - { id: 1, class: fpr }
2049 - { id: 2, class: fpr }
2050 - { id: 3, class: fpr }
2052 - { reg: '$q0', virtual-reg: '%2' }
2053 - { reg: '$d0', virtual-reg: '%3' }
2058 ; CHECK-LABEL: name: test_rule967_id1336_at_idx63309
2059 ; CHECK: liveins: $q0, $d0
2060 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2061 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2062 ; CHECK: [[UADDWv2i32_v2i64_:%[0-9]+]]:fpr128 = UADDWv2i32_v2i64 [[COPY1]], [[COPY]]
2063 ; CHECK: $noreg = PATCHABLE_RET [[UADDWv2i32_v2i64_]]
2064 %3:fpr(<2 x s32>) = COPY $d0
2065 %2:fpr(<2 x s64>) = COPY $q0
2066 %0:fpr(<2 x s64>) = G_ZEXT %3(<2 x s32>)
2067 %1:fpr(<2 x s64>) = G_ADD %2, %0
2068 $noreg = PATCHABLE_RET %1(<2 x s64>)
2072 name: test_rule977_id933_at_idx64051
2075 regBankSelected: true
2076 tracksRegLiveness: true
2078 - { id: 0, class: fpr }
2079 - { id: 1, class: fpr }
2080 - { id: 2, class: fpr }
2081 - { id: 3, class: fpr }
2082 - { id: 4, class: fpr }
2084 - { reg: '$d0', virtual-reg: '%2' }
2085 - { reg: '$d1', virtual-reg: '%3' }
2086 - { reg: '$d2', virtual-reg: '%4' }
2089 liveins: $d0, $d1, $d2
2091 ; CHECK-LABEL: name: test_rule977_id933_at_idx64051
2092 ; CHECK: liveins: $d0, $d1, $d2
2093 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
2094 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2095 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
2096 ; CHECK: [[MULv8i8_:%[0-9]+]]:fpr64 = MULv8i8 [[COPY1]], [[COPY]]
2097 ; CHECK: [[SUBv8i8_:%[0-9]+]]:fpr64 = SUBv8i8 [[COPY2]], [[MULv8i8_]]
2098 ; CHECK: $noreg = PATCHABLE_RET [[SUBv8i8_]]
2099 %4:fpr(<8 x s8>) = COPY $d2
2100 %3:fpr(<8 x s8>) = COPY $d1
2101 %2:fpr(<8 x s8>) = COPY $d0
2102 %0:fpr(<8 x s8>) = G_MUL %3, %4
2103 %1:fpr(<8 x s8>) = G_SUB %2, %0
2104 $noreg = PATCHABLE_RET %1(<8 x s8>)
2108 name: test_rule978_id934_at_idx64139
2111 regBankSelected: true
2112 tracksRegLiveness: true
2114 - { id: 0, class: fpr }
2115 - { id: 1, class: fpr }
2116 - { id: 2, class: fpr }
2117 - { id: 3, class: fpr }
2118 - { id: 4, class: fpr }
2120 - { reg: '$q0', virtual-reg: '%2' }
2121 - { reg: '$q1', virtual-reg: '%3' }
2122 - { reg: '$q2', virtual-reg: '%4' }
2125 liveins: $q0, $q1, $q2
2127 ; CHECK-LABEL: name: test_rule978_id934_at_idx64139
2128 ; CHECK: liveins: $q0, $q1, $q2
2129 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
2130 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2131 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
2132 ; CHECK: [[MULv16i8_:%[0-9]+]]:fpr128 = MULv16i8 [[COPY1]], [[COPY]]
2133 ; CHECK: [[SUBv16i8_:%[0-9]+]]:fpr128 = SUBv16i8 [[COPY2]], [[MULv16i8_]]
2134 ; CHECK: $noreg = PATCHABLE_RET [[SUBv16i8_]]
2135 %4:fpr(<16 x s8>) = COPY $q2
2136 %3:fpr(<16 x s8>) = COPY $q1
2137 %2:fpr(<16 x s8>) = COPY $q0
2138 %0:fpr(<16 x s8>) = G_MUL %3, %4
2139 %1:fpr(<16 x s8>) = G_SUB %2, %0
2140 $noreg = PATCHABLE_RET %1(<16 x s8>)
2144 name: test_rule979_id935_at_idx64227
2147 regBankSelected: true
2148 tracksRegLiveness: true
2150 - { id: 0, class: fpr }
2151 - { id: 1, class: fpr }
2152 - { id: 2, class: fpr }
2153 - { id: 3, class: fpr }
2154 - { id: 4, class: fpr }
2156 - { reg: '$d0', virtual-reg: '%2' }
2157 - { reg: '$d1', virtual-reg: '%3' }
2158 - { reg: '$d2', virtual-reg: '%4' }
2161 liveins: $d0, $d1, $d2
2163 ; CHECK-LABEL: name: test_rule979_id935_at_idx64227
2164 ; CHECK: liveins: $d0, $d1, $d2
2165 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
2166 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2167 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
2168 ; CHECK: [[MULv4i16_:%[0-9]+]]:fpr64 = MULv4i16 [[COPY1]], [[COPY]]
2169 ; CHECK: [[SUBv4i16_:%[0-9]+]]:fpr64 = SUBv4i16 [[COPY2]], [[MULv4i16_]]
2170 ; CHECK: $noreg = PATCHABLE_RET [[SUBv4i16_]]
2171 %4:fpr(<4 x s16>) = COPY $d2
2172 %3:fpr(<4 x s16>) = COPY $d1
2173 %2:fpr(<4 x s16>) = COPY $d0
2174 %0:fpr(<4 x s16>) = G_MUL %3, %4
2175 %1:fpr(<4 x s16>) = G_SUB %2, %0
2176 $noreg = PATCHABLE_RET %1(<4 x s16>)
2180 name: test_rule980_id936_at_idx64315
2183 regBankSelected: true
2184 tracksRegLiveness: true
2186 - { id: 0, class: fpr }
2187 - { id: 1, class: fpr }
2188 - { id: 2, class: fpr }
2189 - { id: 3, class: fpr }
2190 - { id: 4, class: fpr }
2192 - { reg: '$q0', virtual-reg: '%2' }
2193 - { reg: '$q1', virtual-reg: '%3' }
2194 - { reg: '$q2', virtual-reg: '%4' }
2197 liveins: $q0, $q1, $q2
2199 ; CHECK-LABEL: name: test_rule980_id936_at_idx64315
2200 ; CHECK: liveins: $q0, $q1, $q2
2201 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
2202 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2203 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
2204 ; CHECK: [[MULv8i16_:%[0-9]+]]:fpr128 = MULv8i16 [[COPY1]], [[COPY]]
2205 ; CHECK: [[SUBv8i16_:%[0-9]+]]:fpr128 = SUBv8i16 [[COPY2]], [[MULv8i16_]]
2206 ; CHECK: $noreg = PATCHABLE_RET [[SUBv8i16_]]
2207 %4:fpr(<8 x s16>) = COPY $q2
2208 %3:fpr(<8 x s16>) = COPY $q1
2209 %2:fpr(<8 x s16>) = COPY $q0
2210 %0:fpr(<8 x s16>) = G_MUL %3, %4
2211 %1:fpr(<8 x s16>) = G_SUB %2, %0
2212 $noreg = PATCHABLE_RET %1(<8 x s16>)
2216 name: test_rule983_id1314_at_idx64579
2219 regBankSelected: true
2220 tracksRegLiveness: true
2222 - { id: 0, class: fpr }
2223 - { id: 1, class: fpr }
2224 - { id: 2, class: fpr }
2225 - { id: 3, class: fpr }
2227 - { reg: '$q0', virtual-reg: '%2' }
2228 - { reg: '$d0', virtual-reg: '%3' }
2233 ; CHECK-LABEL: name: test_rule983_id1314_at_idx64579
2234 ; CHECK: liveins: $q0, $d0
2235 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2236 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2237 ; CHECK: [[SSUBWv8i8_v8i16_:%[0-9]+]]:fpr128 = SSUBWv8i8_v8i16 [[COPY1]], [[COPY]]
2238 ; CHECK: $noreg = PATCHABLE_RET [[SSUBWv8i8_v8i16_]]
2239 %3:fpr(<8 x s8>) = COPY $d0
2240 %2:fpr(<8 x s16>) = COPY $q0
2241 %0:fpr(<8 x s16>) = G_SEXT %3(<8 x s8>)
2242 %1:fpr(<8 x s16>) = G_SUB %2, %0
2243 $noreg = PATCHABLE_RET %1(<8 x s16>)
2247 name: test_rule984_id1316_at_idx64655
2250 regBankSelected: true
2251 tracksRegLiveness: true
2253 - { id: 0, class: fpr }
2254 - { id: 1, class: fpr }
2255 - { id: 2, class: fpr }
2256 - { id: 3, class: fpr }
2258 - { reg: '$q0', virtual-reg: '%2' }
2259 - { reg: '$d0', virtual-reg: '%3' }
2264 ; CHECK-LABEL: name: test_rule984_id1316_at_idx64655
2265 ; CHECK: liveins: $q0, $d0
2266 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2267 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2268 ; CHECK: [[SSUBWv4i16_v4i32_:%[0-9]+]]:fpr128 = SSUBWv4i16_v4i32 [[COPY1]], [[COPY]]
2269 ; CHECK: $noreg = PATCHABLE_RET [[SSUBWv4i16_v4i32_]]
2270 %3:fpr(<4 x s16>) = COPY $d0
2271 %2:fpr(<4 x s32>) = COPY $q0
2272 %0:fpr(<4 x s32>) = G_SEXT %3(<4 x s16>)
2273 %1:fpr(<4 x s32>) = G_SUB %2, %0
2274 $noreg = PATCHABLE_RET %1(<4 x s32>)
2278 name: test_rule985_id1318_at_idx64731
2281 regBankSelected: true
2282 tracksRegLiveness: true
2284 - { id: 0, class: fpr }
2285 - { id: 1, class: fpr }
2286 - { id: 2, class: fpr }
2287 - { id: 3, class: fpr }
2289 - { reg: '$q0', virtual-reg: '%2' }
2290 - { reg: '$d0', virtual-reg: '%3' }
2295 ; CHECK-LABEL: name: test_rule985_id1318_at_idx64731
2296 ; CHECK: liveins: $q0, $d0
2297 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2298 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2299 ; CHECK: [[SSUBWv2i32_v2i64_:%[0-9]+]]:fpr128 = SSUBWv2i32_v2i64 [[COPY1]], [[COPY]]
2300 ; CHECK: $noreg = PATCHABLE_RET [[SSUBWv2i32_v2i64_]]
2301 %3:fpr(<2 x s32>) = COPY $d0
2302 %2:fpr(<2 x s64>) = COPY $q0
2303 %0:fpr(<2 x s64>) = G_SEXT %3(<2 x s32>)
2304 %1:fpr(<2 x s64>) = G_SUB %2, %0
2305 $noreg = PATCHABLE_RET %1(<2 x s64>)
2309 name: test_rule986_id1362_at_idx64807
2312 regBankSelected: true
2313 tracksRegLiveness: true
2315 - { id: 0, class: fpr }
2316 - { id: 1, class: fpr }
2317 - { id: 2, class: fpr }
2318 - { id: 3, class: fpr }
2320 - { reg: '$q0', virtual-reg: '%2' }
2321 - { reg: '$d0', virtual-reg: '%3' }
2326 ; CHECK-LABEL: name: test_rule986_id1362_at_idx64807
2327 ; CHECK: liveins: $q0, $d0
2328 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2329 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2330 ; CHECK: [[USUBWv8i8_v8i16_:%[0-9]+]]:fpr128 = USUBWv8i8_v8i16 [[COPY1]], [[COPY]]
2331 ; CHECK: $noreg = PATCHABLE_RET [[USUBWv8i8_v8i16_]]
2332 %3:fpr(<8 x s8>) = COPY $d0
2333 %2:fpr(<8 x s16>) = COPY $q0
2334 %0:fpr(<8 x s16>) = G_ZEXT %3(<8 x s8>)
2335 %1:fpr(<8 x s16>) = G_SUB %2, %0
2336 $noreg = PATCHABLE_RET %1(<8 x s16>)
2340 name: test_rule987_id1364_at_idx64883
2343 regBankSelected: true
2344 tracksRegLiveness: true
2346 - { id: 0, class: fpr }
2347 - { id: 1, class: fpr }
2348 - { id: 2, class: fpr }
2349 - { id: 3, class: fpr }
2351 - { reg: '$q0', virtual-reg: '%2' }
2352 - { reg: '$d0', virtual-reg: '%3' }
2357 ; CHECK-LABEL: name: test_rule987_id1364_at_idx64883
2358 ; CHECK: liveins: $q0, $d0
2359 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2360 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2361 ; CHECK: [[USUBWv4i16_v4i32_:%[0-9]+]]:fpr128 = USUBWv4i16_v4i32 [[COPY1]], [[COPY]]
2362 ; CHECK: $noreg = PATCHABLE_RET [[USUBWv4i16_v4i32_]]
2363 %3:fpr(<4 x s16>) = COPY $d0
2364 %2:fpr(<4 x s32>) = COPY $q0
2365 %0:fpr(<4 x s32>) = G_ZEXT %3(<4 x s16>)
2366 %1:fpr(<4 x s32>) = G_SUB %2, %0
2367 $noreg = PATCHABLE_RET %1(<4 x s32>)
2371 name: test_rule988_id1366_at_idx64959
2374 regBankSelected: true
2375 tracksRegLiveness: true
2377 - { id: 0, class: fpr }
2378 - { id: 1, class: fpr }
2379 - { id: 2, class: fpr }
2380 - { id: 3, class: fpr }
2382 - { reg: '$q0', virtual-reg: '%2' }
2383 - { reg: '$d0', virtual-reg: '%3' }
2388 ; CHECK-LABEL: name: test_rule988_id1366_at_idx64959
2389 ; CHECK: liveins: $q0, $d0
2390 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2391 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2392 ; CHECK: [[USUBWv2i32_v2i64_:%[0-9]+]]:fpr128 = USUBWv2i32_v2i64 [[COPY1]], [[COPY]]
2393 ; CHECK: $noreg = PATCHABLE_RET [[USUBWv2i32_v2i64_]]
2394 %3:fpr(<2 x s32>) = COPY $d0
2395 %2:fpr(<2 x s64>) = COPY $q0
2396 %0:fpr(<2 x s64>) = G_ZEXT %3(<2 x s32>)
2397 %1:fpr(<2 x s64>) = G_SUB %2, %0
2398 $noreg = PATCHABLE_RET %1(<2 x s64>)
2402 name: test_rule990_id432_at_idx65123
2405 regBankSelected: true
2406 tracksRegLiveness: true
2408 - { id: 0, class: fpr }
2409 - { id: 1, class: fpr }
2410 - { id: 2, class: fpr }
2411 - { id: 3, class: fpr }
2412 - { id: 4, class: fpr }
2414 - { reg: '$s0', virtual-reg: '%2' }
2415 - { reg: '$s1', virtual-reg: '%3' }
2416 - { reg: '$s2', virtual-reg: '%4' }
2419 liveins: $s0, $s1, $s2
2421 ; CHECK-LABEL: name: test_rule990_id432_at_idx65123
2422 ; CHECK: liveins: $s0, $s1, $s2
2423 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s2
2424 ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
2425 ; CHECK: [[COPY2:%[0-9]+]]:fpr32 = COPY $s0
2426 ; CHECK: [[FNMADDSrrr:%[0-9]+]]:fpr32 = nofpexcept FNMADDSrrr [[COPY2]], [[COPY1]], [[COPY]]
2427 ; CHECK: $noreg = PATCHABLE_RET [[FNMADDSrrr]]
2428 %4:fpr(s32) = COPY $s2
2429 %3:fpr(s32) = COPY $s1
2430 %2:fpr(s32) = COPY $s0
2431 %0:fpr(s32) = G_FMA %2, %3, %4
2432 %1:fpr(s32) = G_FNEG %0
2433 $noreg = PATCHABLE_RET %1(s32)
2437 name: test_rule991_id433_at_idx65211
2440 regBankSelected: true
2441 tracksRegLiveness: true
2443 - { id: 0, class: fpr }
2444 - { id: 1, class: fpr }
2445 - { id: 2, class: fpr }
2446 - { id: 3, class: fpr }
2447 - { id: 4, class: fpr }
2449 - { reg: '$d0', virtual-reg: '%2' }
2450 - { reg: '$d1', virtual-reg: '%3' }
2451 - { reg: '$d2', virtual-reg: '%4' }
2454 liveins: $d0, $d1, $d2
2456 ; CHECK-LABEL: name: test_rule991_id433_at_idx65211
2457 ; CHECK: liveins: $d0, $d1, $d2
2458 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
2459 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2460 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
2461 ; CHECK: [[FNMADDDrrr:%[0-9]+]]:fpr64 = nofpexcept FNMADDDrrr [[COPY2]], [[COPY1]], [[COPY]]
2462 ; CHECK: $noreg = PATCHABLE_RET [[FNMADDDrrr]]
2463 %4:fpr(s64) = COPY $d2
2464 %3:fpr(s64) = COPY $d1
2465 %2:fpr(s64) = COPY $d0
2466 %0:fpr(s64) = G_FMA %2, %3, %4
2467 %1:fpr(s64) = G_FNEG %0
2468 $noreg = PATCHABLE_RET %1(s64)
2472 name: test_rule993_id420_at_idx65375
2475 regBankSelected: true
2476 tracksRegLiveness: true
2478 - { id: 0, class: fpr }
2479 - { id: 1, class: fpr }
2480 - { id: 2, class: fpr }
2481 - { id: 3, class: fpr }
2483 - { reg: '$s0', virtual-reg: '%2' }
2484 - { reg: '$s1', virtual-reg: '%3' }
2489 ; CHECK-LABEL: name: test_rule993_id420_at_idx65375
2490 ; CHECK: liveins: $s0, $s1
2491 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s1
2492 ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY $s0
2493 ; CHECK: [[FNMULSrr:%[0-9]+]]:fpr32 = nofpexcept FNMULSrr [[COPY1]], [[COPY]]
2494 ; CHECK: $noreg = PATCHABLE_RET [[FNMULSrr]]
2495 %3:fpr(s32) = COPY $s1
2496 %2:fpr(s32) = COPY $s0
2497 %0:fpr(s32) = G_FMUL %2, %3
2498 %1:fpr(s32) = G_FNEG %0
2499 $noreg = PATCHABLE_RET %1(s32)
2503 name: test_rule994_id421_at_idx65451
2506 regBankSelected: true
2507 tracksRegLiveness: true
2509 - { id: 0, class: fpr }
2510 - { id: 1, class: fpr }
2511 - { id: 2, class: fpr }
2512 - { id: 3, class: fpr }
2514 - { reg: '$d0', virtual-reg: '%2' }
2515 - { reg: '$d1', virtual-reg: '%3' }
2520 ; CHECK-LABEL: name: test_rule994_id421_at_idx65451
2521 ; CHECK: liveins: $d0, $d1
2522 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
2523 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
2524 ; CHECK: [[FNMULDrr:%[0-9]+]]:fpr64 = nofpexcept FNMULDrr [[COPY1]], [[COPY]]
2525 ; CHECK: $noreg = PATCHABLE_RET [[FNMULDrr]]
2526 %3:fpr(s64) = COPY $d1
2527 %2:fpr(s64) = COPY $d0
2528 %0:fpr(s64) = G_FMUL %2, %3
2529 %1:fpr(s64) = G_FNEG %0
2530 $noreg = PATCHABLE_RET %1(s64)
2534 name: test_rule1230_id2969_at_idx81784
2537 regBankSelected: true
2538 tracksRegLiveness: true
2540 - { id: 0, class: gpr }
2541 - { id: 1, class: gpr }
2543 - { reg: '$x0', virtual-reg: '%0' }
2544 - { reg: '$x1', virtual-reg: '%1' }
2549 ; CHECK-LABEL: name: test_rule1230_id2969_at_idx81784
2550 ; CHECK: liveins: $x0, $x1
2551 ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x1
2552 ; CHECK: [[COPY1:%[0-9]+]]:gpr64all = COPY $x0
2553 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[COPY1]]
2554 ; CHECK: ST1Onev8b [[COPY2]], [[COPY]] :: (store (<8 x s8>))
2555 ; CHECK: $noreg = PATCHABLE_RET
2556 %1:gpr(p0) = COPY $x1
2557 %0:gpr(<8 x s8>) = COPY $x0
2558 G_STORE %0(<8 x s8>), %1(p0) :: (store (<8 x s8>))
2559 $noreg = PATCHABLE_RET
2563 name: test_rule1231_id2970_at_idx81816
2566 regBankSelected: true
2567 tracksRegLiveness: true
2569 - { id: 0, class: gpr }
2570 - { id: 1, class: gpr }
2572 - { reg: '$x0', virtual-reg: '%0' }
2573 - { reg: '$x1', virtual-reg: '%1' }
2578 ; CHECK-LABEL: name: test_rule1231_id2970_at_idx81816
2579 ; CHECK: liveins: $x0, $x1
2580 ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x1
2581 ; CHECK: [[COPY1:%[0-9]+]]:gpr64all = COPY $x0
2582 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[COPY1]]
2583 ; CHECK: ST1Onev4h [[COPY2]], [[COPY]] :: (store (<4 x s16>))
2584 ; CHECK: $noreg = PATCHABLE_RET
2585 %1:gpr(p0) = COPY $x1
2586 %0:gpr(<4 x s16>) = COPY $x0
2587 G_STORE %0(<4 x s16>), %1(p0) :: (store (<4 x s16>))
2588 $noreg = PATCHABLE_RET
2592 name: test_rule1239_id894_at_idx82201
2595 regBankSelected: true
2596 tracksRegLiveness: true
2598 - { id: 0, class: fpr }
2599 - { id: 1, class: fpr }
2600 - { id: 2, class: fpr }
2601 - { id: 3, class: fpr }
2603 - { reg: '$d0', virtual-reg: '%1' }
2604 - { reg: '$d1', virtual-reg: '%2' }
2605 - { reg: '$d2', virtual-reg: '%3' }
2608 liveins: $d0, $d1, $d2
2610 ; CHECK-LABEL: name: test_rule1239_id894_at_idx82201
2611 ; CHECK: liveins: $d0, $d1, $d2
2612 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d2
2613 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2614 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0
2615 ; CHECK: [[FMLAv2f32_:%[0-9]+]]:fpr64 = nofpexcept FMLAv2f32 [[COPY]], [[COPY1]], [[COPY2]]
2616 ; CHECK: $noreg = PATCHABLE_RET [[FMLAv2f32_]]
2617 %3:fpr(<2 x s32>) = COPY $d2
2618 %2:fpr(<2 x s32>) = COPY $d1
2619 %1:fpr(<2 x s32>) = COPY $d0
2620 %0:fpr(<2 x s32>) = G_FMA %1, %2, %3
2621 $noreg = PATCHABLE_RET %0(<2 x s32>)
2625 name: test_rule1240_id895_at_idx82269
2628 regBankSelected: true
2629 tracksRegLiveness: true
2631 - { id: 0, class: fpr }
2632 - { id: 1, class: fpr }
2633 - { id: 2, class: fpr }
2634 - { id: 3, class: fpr }
2636 - { reg: '$q0', virtual-reg: '%1' }
2637 - { reg: '$q1', virtual-reg: '%2' }
2638 - { reg: '$q2', virtual-reg: '%3' }
2641 liveins: $q0, $q1, $q2
2643 ; CHECK-LABEL: name: test_rule1240_id895_at_idx82269
2644 ; CHECK: liveins: $q0, $q1, $q2
2645 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
2646 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2647 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
2648 ; CHECK: [[FMLAv4f32_:%[0-9]+]]:fpr128 = nofpexcept FMLAv4f32 [[COPY]], [[COPY1]], [[COPY2]]
2649 ; CHECK: $noreg = PATCHABLE_RET [[FMLAv4f32_]]
2650 %3:fpr(<4 x s32>) = COPY $q2
2651 %2:fpr(<4 x s32>) = COPY $q1
2652 %1:fpr(<4 x s32>) = COPY $q0
2653 %0:fpr(<4 x s32>) = G_FMA %1, %2, %3
2654 $noreg = PATCHABLE_RET %0(<4 x s32>)
2658 name: test_rule1241_id896_at_idx82337
2661 regBankSelected: true
2662 tracksRegLiveness: true
2664 - { id: 0, class: fpr }
2665 - { id: 1, class: fpr }
2666 - { id: 2, class: fpr }
2667 - { id: 3, class: fpr }
2669 - { reg: '$q0', virtual-reg: '%1' }
2670 - { reg: '$q1', virtual-reg: '%2' }
2671 - { reg: '$q2', virtual-reg: '%3' }
2674 liveins: $q0, $q1, $q2
2676 ; CHECK-LABEL: name: test_rule1241_id896_at_idx82337
2677 ; CHECK: liveins: $q0, $q1, $q2
2678 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q2
2679 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2680 ; CHECK: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0
2681 ; CHECK: [[FMLAv2f64_:%[0-9]+]]:fpr128 = nofpexcept FMLAv2f64 [[COPY]], [[COPY1]], [[COPY2]]
2682 ; CHECK: $noreg = PATCHABLE_RET [[FMLAv2f64_]]
2683 %3:fpr(<2 x s64>) = COPY $q2
2684 %2:fpr(<2 x s64>) = COPY $q1
2685 %1:fpr(<2 x s64>) = COPY $q0
2686 %0:fpr(<2 x s64>) = G_FMA %1, %2, %3
2687 $noreg = PATCHABLE_RET %0(<2 x s64>)
2691 name: test_rule1244_id751_at_idx82487
2694 regBankSelected: true
2695 tracksRegLiveness: true
2697 - { id: 0, class: fpr }
2698 - { id: 1, class: fpr }
2699 - { id: 2, class: fpr }
2701 - { reg: '$d0', virtual-reg: '%1' }
2702 - { reg: '$d1', virtual-reg: '%2' }
2707 ; CHECK-LABEL: name: test_rule1244_id751_at_idx82487
2708 ; CHECK: liveins: $d0, $d1
2709 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
2710 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
2711 ; CHECK: [[ADDv8i8_:%[0-9]+]]:fpr64 = ADDv8i8 [[COPY1]], [[COPY]]
2712 ; CHECK: $noreg = PATCHABLE_RET [[ADDv8i8_]]
2713 %2:fpr(<8 x s8>) = COPY $d1
2714 %1:fpr(<8 x s8>) = COPY $d0
2715 %0:fpr(<8 x s8>) = G_ADD %1, %2
2716 $noreg = PATCHABLE_RET %0(<8 x s8>)
2720 name: test_rule1245_id752_at_idx82530
2723 regBankSelected: true
2724 tracksRegLiveness: true
2726 - { id: 0, class: fpr }
2727 - { id: 1, class: fpr }
2728 - { id: 2, class: fpr }
2730 - { reg: '$q0', virtual-reg: '%1' }
2731 - { reg: '$q1', virtual-reg: '%2' }
2736 ; CHECK-LABEL: name: test_rule1245_id752_at_idx82530
2737 ; CHECK: liveins: $q0, $q1
2738 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
2739 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2740 ; CHECK: [[ADDv16i8_:%[0-9]+]]:fpr128 = ADDv16i8 [[COPY1]], [[COPY]]
2741 ; CHECK: $noreg = PATCHABLE_RET [[ADDv16i8_]]
2742 %2:fpr(<16 x s8>) = COPY $q1
2743 %1:fpr(<16 x s8>) = COPY $q0
2744 %0:fpr(<16 x s8>) = G_ADD %1, %2
2745 $noreg = PATCHABLE_RET %0(<16 x s8>)
2749 name: test_rule1246_id753_at_idx82573
2752 regBankSelected: true
2753 tracksRegLiveness: true
2755 - { id: 0, class: fpr }
2756 - { id: 1, class: fpr }
2757 - { id: 2, class: fpr }
2759 - { reg: '$d0', virtual-reg: '%1' }
2760 - { reg: '$d1', virtual-reg: '%2' }
2765 ; CHECK-LABEL: name: test_rule1246_id753_at_idx82573
2766 ; CHECK: liveins: $d0, $d1
2767 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
2768 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
2769 ; CHECK: [[ADDv4i16_:%[0-9]+]]:fpr64 = ADDv4i16 [[COPY1]], [[COPY]]
2770 ; CHECK: $noreg = PATCHABLE_RET [[ADDv4i16_]]
2771 %2:fpr(<4 x s16>) = COPY $d1
2772 %1:fpr(<4 x s16>) = COPY $d0
2773 %0:fpr(<4 x s16>) = G_ADD %1, %2
2774 $noreg = PATCHABLE_RET %0(<4 x s16>)
2778 name: test_rule1247_id754_at_idx82616
2781 regBankSelected: true
2782 tracksRegLiveness: true
2784 - { id: 0, class: fpr }
2785 - { id: 1, class: fpr }
2786 - { id: 2, class: fpr }
2788 - { reg: '$q0', virtual-reg: '%1' }
2789 - { reg: '$q1', virtual-reg: '%2' }
2794 ; CHECK-LABEL: name: test_rule1247_id754_at_idx82616
2795 ; CHECK: liveins: $q0, $q1
2796 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
2797 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2798 ; CHECK: [[ADDv8i16_:%[0-9]+]]:fpr128 = ADDv8i16 [[COPY1]], [[COPY]]
2799 ; CHECK: $noreg = PATCHABLE_RET [[ADDv8i16_]]
2800 %2:fpr(<8 x s16>) = COPY $q1
2801 %1:fpr(<8 x s16>) = COPY $q0
2802 %0:fpr(<8 x s16>) = G_ADD %1, %2
2803 $noreg = PATCHABLE_RET %0(<8 x s16>)
2807 name: test_rule1254_id1162_at_idx82913
2810 regBankSelected: true
2811 tracksRegLiveness: true
2813 - { id: 0, class: fpr }
2814 - { id: 1, class: fpr }
2815 - { id: 2, class: fpr }
2817 - { reg: '$d0', virtual-reg: '%1' }
2818 - { reg: '$d1', virtual-reg: '%2' }
2823 ; CHECK-LABEL: name: test_rule1254_id1162_at_idx82913
2824 ; CHECK: liveins: $d0, $d1
2825 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
2826 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
2827 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY]]
2828 ; CHECK: $noreg = PATCHABLE_RET [[ANDv8i8_]]
2829 %2:fpr(<8 x s8>) = COPY $d1
2830 %1:fpr(<8 x s8>) = COPY $d0
2831 %0:fpr(<8 x s8>) = G_AND %1, %2
2832 $noreg = PATCHABLE_RET %0(<8 x s8>)
2836 name: test_rule1255_id1163_at_idx82956
2839 regBankSelected: true
2840 tracksRegLiveness: true
2842 - { id: 0, class: fpr }
2843 - { id: 1, class: fpr }
2844 - { id: 2, class: fpr }
2846 - { reg: '$q0', virtual-reg: '%1' }
2847 - { reg: '$q1', virtual-reg: '%2' }
2852 ; CHECK-LABEL: name: test_rule1255_id1163_at_idx82956
2853 ; CHECK: liveins: $q0, $q1
2854 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
2855 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2856 ; CHECK: [[ANDv16i8_:%[0-9]+]]:fpr128 = ANDv16i8 [[COPY1]], [[COPY]]
2857 ; CHECK: $noreg = PATCHABLE_RET [[ANDv16i8_]]
2858 %2:fpr(<16 x s8>) = COPY $q1
2859 %1:fpr(<16 x s8>) = COPY $q0
2860 %0:fpr(<16 x s8>) = G_AND %1, %2
2861 $noreg = PATCHABLE_RET %0(<16 x s8>)
2865 name: test_rule1256_id1751_at_idx82999
2868 regBankSelected: true
2869 tracksRegLiveness: true
2871 - { id: 0, class: fpr }
2872 - { id: 1, class: fpr }
2873 - { id: 2, class: fpr }
2875 - { reg: '$d0', virtual-reg: '%1' }
2876 - { reg: '$d1', virtual-reg: '%2' }
2881 ; CHECK-LABEL: name: test_rule1256_id1751_at_idx82999
2882 ; CHECK: liveins: $d0, $d1
2883 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
2884 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
2885 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY]]
2886 ; CHECK: $noreg = PATCHABLE_RET [[ANDv8i8_]]
2887 %2:fpr(<4 x s16>) = COPY $d1
2888 %1:fpr(<4 x s16>) = COPY $d0
2889 %0:fpr(<4 x s16>) = G_AND %1, %2
2890 $noreg = PATCHABLE_RET %0(<4 x s16>)
2894 name: test_rule1259_id1754_at_idx83128
2897 regBankSelected: true
2898 tracksRegLiveness: true
2900 - { id: 0, class: fpr }
2901 - { id: 1, class: fpr }
2902 - { id: 2, class: fpr }
2904 - { reg: '$q0', virtual-reg: '%1' }
2905 - { reg: '$q1', virtual-reg: '%2' }
2910 ; CHECK-LABEL: name: test_rule1259_id1754_at_idx83128
2911 ; CHECK: liveins: $q0, $q1
2912 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
2913 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2914 ; CHECK: [[ANDv16i8_:%[0-9]+]]:fpr128 = ANDv16i8 [[COPY1]], [[COPY]]
2915 ; CHECK: $noreg = PATCHABLE_RET [[ANDv16i8_]]
2916 %2:fpr(<8 x s16>) = COPY $q1
2917 %1:fpr(<8 x s16>) = COPY $q0
2918 %0:fpr(<8 x s16>) = G_AND %1, %2
2919 $noreg = PATCHABLE_RET %0(<8 x s16>)
2923 name: test_rule1268_id829_at_idx83513
2926 regBankSelected: true
2927 tracksRegLiveness: true
2929 - { id: 0, class: fpr }
2930 - { id: 1, class: fpr }
2931 - { id: 2, class: fpr }
2933 - { reg: '$d0', virtual-reg: '%1' }
2934 - { reg: '$d1', virtual-reg: '%2' }
2939 ; CHECK-LABEL: name: test_rule1268_id829_at_idx83513
2940 ; CHECK: liveins: $d0, $d1
2941 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
2942 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
2943 ; CHECK: [[FADDv2f32_:%[0-9]+]]:fpr64 = nofpexcept FADDv2f32 [[COPY1]], [[COPY]]
2944 ; CHECK: $noreg = PATCHABLE_RET [[FADDv2f32_]]
2945 %2:fpr(<2 x s32>) = COPY $d1
2946 %1:fpr(<2 x s32>) = COPY $d0
2947 %0:fpr(<2 x s32>) = G_FADD %1, %2
2948 $noreg = PATCHABLE_RET %0(<2 x s32>)
2952 name: test_rule1269_id830_at_idx83556
2955 regBankSelected: true
2956 tracksRegLiveness: true
2958 - { id: 0, class: fpr }
2959 - { id: 1, class: fpr }
2960 - { id: 2, class: fpr }
2962 - { reg: '$q0', virtual-reg: '%1' }
2963 - { reg: '$q1', virtual-reg: '%2' }
2968 ; CHECK-LABEL: name: test_rule1269_id830_at_idx83556
2969 ; CHECK: liveins: $q0, $q1
2970 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
2971 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
2972 ; CHECK: [[FADDv4f32_:%[0-9]+]]:fpr128 = nofpexcept FADDv4f32 [[COPY1]], [[COPY]]
2973 ; CHECK: $noreg = PATCHABLE_RET [[FADDv4f32_]]
2974 %2:fpr(<4 x s32>) = COPY $q1
2975 %1:fpr(<4 x s32>) = COPY $q0
2976 %0:fpr(<4 x s32>) = G_FADD %1, %2
2977 $noreg = PATCHABLE_RET %0(<4 x s32>)
2981 name: test_rule1270_id831_at_idx83599
2984 regBankSelected: true
2985 tracksRegLiveness: true
2987 - { id: 0, class: fpr }
2988 - { id: 1, class: fpr }
2989 - { id: 2, class: fpr }
2991 - { reg: '$q0', virtual-reg: '%1' }
2992 - { reg: '$q1', virtual-reg: '%2' }
2997 ; CHECK-LABEL: name: test_rule1270_id831_at_idx83599
2998 ; CHECK: liveins: $q0, $q1
2999 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3000 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3001 ; CHECK: [[FADDv2f64_:%[0-9]+]]:fpr128 = nofpexcept FADDv2f64 [[COPY1]], [[COPY]]
3002 ; CHECK: $noreg = PATCHABLE_RET [[FADDv2f64_]]
3003 %2:fpr(<2 x s64>) = COPY $q1
3004 %1:fpr(<2 x s64>) = COPY $q0
3005 %0:fpr(<2 x s64>) = G_FADD %1, %2
3006 $noreg = PATCHABLE_RET %0(<2 x s64>)
3010 name: test_rule1276_id849_at_idx83857
3013 regBankSelected: true
3014 tracksRegLiveness: true
3016 - { id: 0, class: fpr }
3017 - { id: 1, class: fpr }
3018 - { id: 2, class: fpr }
3020 - { reg: '$d0', virtual-reg: '%1' }
3021 - { reg: '$d1', virtual-reg: '%2' }
3026 ; CHECK-LABEL: name: test_rule1276_id849_at_idx83857
3027 ; CHECK: liveins: $d0, $d1
3028 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3029 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3030 ; CHECK: [[FDIVv2f32_:%[0-9]+]]:fpr64 = nofpexcept FDIVv2f32 [[COPY1]], [[COPY]]
3031 ; CHECK: $noreg = PATCHABLE_RET [[FDIVv2f32_]]
3032 %2:fpr(<2 x s32>) = COPY $d1
3033 %1:fpr(<2 x s32>) = COPY $d0
3034 %0:fpr(<2 x s32>) = G_FDIV %1, %2
3035 $noreg = PATCHABLE_RET %0(<2 x s32>)
3039 name: test_rule1277_id850_at_idx83900
3042 regBankSelected: true
3043 tracksRegLiveness: true
3045 - { id: 0, class: fpr }
3046 - { id: 1, class: fpr }
3047 - { id: 2, class: fpr }
3049 - { reg: '$q0', virtual-reg: '%1' }
3050 - { reg: '$q1', virtual-reg: '%2' }
3055 ; CHECK-LABEL: name: test_rule1277_id850_at_idx83900
3056 ; CHECK: liveins: $q0, $q1
3057 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3058 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3059 ; CHECK: [[FDIVv4f32_:%[0-9]+]]:fpr128 = nofpexcept FDIVv4f32 [[COPY1]], [[COPY]]
3060 ; CHECK: $noreg = PATCHABLE_RET [[FDIVv4f32_]]
3061 %2:fpr(<4 x s32>) = COPY $q1
3062 %1:fpr(<4 x s32>) = COPY $q0
3063 %0:fpr(<4 x s32>) = G_FDIV %1, %2
3064 $noreg = PATCHABLE_RET %0(<4 x s32>)
3068 name: test_rule1278_id851_at_idx83943
3071 regBankSelected: true
3072 tracksRegLiveness: true
3074 - { id: 0, class: fpr }
3075 - { id: 1, class: fpr }
3076 - { id: 2, class: fpr }
3078 - { reg: '$q0', virtual-reg: '%1' }
3079 - { reg: '$q1', virtual-reg: '%2' }
3084 ; CHECK-LABEL: name: test_rule1278_id851_at_idx83943
3085 ; CHECK: liveins: $q0, $q1
3086 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3087 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3088 ; CHECK: [[FDIVv2f64_:%[0-9]+]]:fpr128 = nofpexcept FDIVv2f64 [[COPY1]], [[COPY]]
3089 ; CHECK: $noreg = PATCHABLE_RET [[FDIVv2f64_]]
3090 %2:fpr(<2 x s64>) = COPY $q1
3091 %1:fpr(<2 x s64>) = COPY $q0
3092 %0:fpr(<2 x s64>) = G_FDIV %1, %2
3093 $noreg = PATCHABLE_RET %0(<2 x s64>)
3097 name: test_rule1284_id909_at_idx84201
3100 regBankSelected: true
3101 tracksRegLiveness: true
3103 - { id: 0, class: fpr }
3104 - { id: 1, class: fpr }
3105 - { id: 2, class: fpr }
3107 - { reg: '$d0', virtual-reg: '%1' }
3108 - { reg: '$d1', virtual-reg: '%2' }
3113 ; CHECK-LABEL: name: test_rule1284_id909_at_idx84201
3114 ; CHECK: liveins: $d0, $d1
3115 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3116 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3117 ; CHECK: [[FMULv2f32_:%[0-9]+]]:fpr64 = nofpexcept FMULv2f32 [[COPY1]], [[COPY]]
3118 ; CHECK: $noreg = PATCHABLE_RET [[FMULv2f32_]]
3119 %2:fpr(<2 x s32>) = COPY $d1
3120 %1:fpr(<2 x s32>) = COPY $d0
3121 %0:fpr(<2 x s32>) = G_FMUL %1, %2
3122 $noreg = PATCHABLE_RET %0(<2 x s32>)
3126 name: test_rule1285_id910_at_idx84244
3129 regBankSelected: true
3130 tracksRegLiveness: true
3132 - { id: 0, class: fpr }
3133 - { id: 1, class: fpr }
3134 - { id: 2, class: fpr }
3136 - { reg: '$q0', virtual-reg: '%1' }
3137 - { reg: '$q1', virtual-reg: '%2' }
3142 ; CHECK-LABEL: name: test_rule1285_id910_at_idx84244
3143 ; CHECK: liveins: $q0, $q1
3144 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3145 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3146 ; CHECK: [[FMULv4f32_:%[0-9]+]]:fpr128 = nofpexcept FMULv4f32 [[COPY1]], [[COPY]]
3147 ; CHECK: $noreg = PATCHABLE_RET [[FMULv4f32_]]
3148 %2:fpr(<4 x s32>) = COPY $q1
3149 %1:fpr(<4 x s32>) = COPY $q0
3150 %0:fpr(<4 x s32>) = G_FMUL %1, %2
3151 $noreg = PATCHABLE_RET %0(<4 x s32>)
3155 name: test_rule1286_id911_at_idx84287
3158 regBankSelected: true
3159 tracksRegLiveness: true
3161 - { id: 0, class: fpr }
3162 - { id: 1, class: fpr }
3163 - { id: 2, class: fpr }
3165 - { reg: '$q0', virtual-reg: '%1' }
3166 - { reg: '$q1', virtual-reg: '%2' }
3171 ; CHECK-LABEL: name: test_rule1286_id911_at_idx84287
3172 ; CHECK: liveins: $q0, $q1
3173 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3174 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3175 ; CHECK: [[FMULv2f64_:%[0-9]+]]:fpr128 = nofpexcept FMULv2f64 [[COPY1]], [[COPY]]
3176 ; CHECK: $noreg = PATCHABLE_RET [[FMULv2f64_]]
3177 %2:fpr(<2 x s64>) = COPY $q1
3178 %1:fpr(<2 x s64>) = COPY $q0
3179 %0:fpr(<2 x s64>) = G_FMUL %1, %2
3180 $noreg = PATCHABLE_RET %0(<2 x s64>)
3184 name: test_rule1292_id924_at_idx84545
3187 regBankSelected: true
3188 tracksRegLiveness: true
3190 - { id: 0, class: fpr }
3191 - { id: 1, class: fpr }
3192 - { id: 2, class: fpr }
3194 - { reg: '$d0', virtual-reg: '%1' }
3195 - { reg: '$d1', virtual-reg: '%2' }
3200 ; CHECK-LABEL: name: test_rule1292_id924_at_idx84545
3201 ; CHECK: liveins: $d0, $d1
3202 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3203 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3204 ; CHECK: [[FSUBv2f32_:%[0-9]+]]:fpr64 = nofpexcept FSUBv2f32 [[COPY1]], [[COPY]]
3205 ; CHECK: $noreg = PATCHABLE_RET [[FSUBv2f32_]]
3206 %2:fpr(<2 x s32>) = COPY $d1
3207 %1:fpr(<2 x s32>) = COPY $d0
3208 %0:fpr(<2 x s32>) = G_FSUB %1, %2
3209 $noreg = PATCHABLE_RET %0(<2 x s32>)
3213 name: test_rule1293_id925_at_idx84588
3216 regBankSelected: true
3217 tracksRegLiveness: true
3219 - { id: 0, class: fpr }
3220 - { id: 1, class: fpr }
3221 - { id: 2, class: fpr }
3223 - { reg: '$q0', virtual-reg: '%1' }
3224 - { reg: '$q1', virtual-reg: '%2' }
3229 ; CHECK-LABEL: name: test_rule1293_id925_at_idx84588
3230 ; CHECK: liveins: $q0, $q1
3231 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3232 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3233 ; CHECK: [[FSUBv4f32_:%[0-9]+]]:fpr128 = nofpexcept FSUBv4f32 [[COPY1]], [[COPY]]
3234 ; CHECK: $noreg = PATCHABLE_RET [[FSUBv4f32_]]
3235 %2:fpr(<4 x s32>) = COPY $q1
3236 %1:fpr(<4 x s32>) = COPY $q0
3237 %0:fpr(<4 x s32>) = G_FSUB %1, %2
3238 $noreg = PATCHABLE_RET %0(<4 x s32>)
3242 name: test_rule1294_id926_at_idx84631
3245 regBankSelected: true
3246 tracksRegLiveness: true
3248 - { id: 0, class: fpr }
3249 - { id: 1, class: fpr }
3250 - { id: 2, class: fpr }
3252 - { reg: '$q0', virtual-reg: '%1' }
3253 - { reg: '$q1', virtual-reg: '%2' }
3258 ; CHECK-LABEL: name: test_rule1294_id926_at_idx84631
3259 ; CHECK: liveins: $q0, $q1
3260 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3261 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3262 ; CHECK: [[FSUBv2f64_:%[0-9]+]]:fpr128 = nofpexcept FSUBv2f64 [[COPY1]], [[COPY]]
3263 ; CHECK: $noreg = PATCHABLE_RET [[FSUBv2f64_]]
3264 %2:fpr(<2 x s64>) = COPY $q1
3265 %1:fpr(<2 x s64>) = COPY $q0
3266 %0:fpr(<2 x s64>) = G_FSUB %1, %2
3267 $noreg = PATCHABLE_RET %0(<2 x s64>)
3271 name: test_rule1296_id939_at_idx84715
3274 regBankSelected: true
3275 tracksRegLiveness: true
3277 - { id: 0, class: fpr }
3278 - { id: 1, class: fpr }
3279 - { id: 2, class: fpr }
3281 - { reg: '$d0', virtual-reg: '%1' }
3282 - { reg: '$d1', virtual-reg: '%2' }
3287 ; CHECK-LABEL: name: test_rule1296_id939_at_idx84715
3288 ; CHECK: liveins: $d0, $d1
3289 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3290 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3291 ; CHECK: [[MULv8i8_:%[0-9]+]]:fpr64 = MULv8i8 [[COPY1]], [[COPY]]
3292 ; CHECK: $noreg = PATCHABLE_RET [[MULv8i8_]]
3293 %2:fpr(<8 x s8>) = COPY $d1
3294 %1:fpr(<8 x s8>) = COPY $d0
3295 %0:fpr(<8 x s8>) = G_MUL %1, %2
3296 $noreg = PATCHABLE_RET %0(<8 x s8>)
3300 name: test_rule1297_id940_at_idx84758
3303 regBankSelected: true
3304 tracksRegLiveness: true
3306 - { id: 0, class: fpr }
3307 - { id: 1, class: fpr }
3308 - { id: 2, class: fpr }
3310 - { reg: '$q0', virtual-reg: '%1' }
3311 - { reg: '$q1', virtual-reg: '%2' }
3316 ; CHECK-LABEL: name: test_rule1297_id940_at_idx84758
3317 ; CHECK: liveins: $q0, $q1
3318 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3319 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3320 ; CHECK: [[MULv16i8_:%[0-9]+]]:fpr128 = MULv16i8 [[COPY1]], [[COPY]]
3321 ; CHECK: $noreg = PATCHABLE_RET [[MULv16i8_]]
3322 %2:fpr(<16 x s8>) = COPY $q1
3323 %1:fpr(<16 x s8>) = COPY $q0
3324 %0:fpr(<16 x s8>) = G_MUL %1, %2
3325 $noreg = PATCHABLE_RET %0(<16 x s8>)
3329 name: test_rule1298_id941_at_idx84801
3332 regBankSelected: true
3333 tracksRegLiveness: true
3335 - { id: 0, class: fpr }
3336 - { id: 1, class: fpr }
3337 - { id: 2, class: fpr }
3339 - { reg: '$d0', virtual-reg: '%1' }
3340 - { reg: '$d1', virtual-reg: '%2' }
3345 ; CHECK-LABEL: name: test_rule1298_id941_at_idx84801
3346 ; CHECK: liveins: $d0, $d1
3347 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3348 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3349 ; CHECK: [[MULv4i16_:%[0-9]+]]:fpr64 = MULv4i16 [[COPY1]], [[COPY]]
3350 ; CHECK: $noreg = PATCHABLE_RET [[MULv4i16_]]
3351 %2:fpr(<4 x s16>) = COPY $d1
3352 %1:fpr(<4 x s16>) = COPY $d0
3353 %0:fpr(<4 x s16>) = G_MUL %1, %2
3354 $noreg = PATCHABLE_RET %0(<4 x s16>)
3358 name: test_rule1299_id942_at_idx84844
3361 regBankSelected: true
3362 tracksRegLiveness: true
3364 - { id: 0, class: fpr }
3365 - { id: 1, class: fpr }
3366 - { id: 2, class: fpr }
3368 - { reg: '$q0', virtual-reg: '%1' }
3369 - { reg: '$q1', virtual-reg: '%2' }
3374 ; CHECK-LABEL: name: test_rule1299_id942_at_idx84844
3375 ; CHECK: liveins: $q0, $q1
3376 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3377 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3378 ; CHECK: [[MULv8i16_:%[0-9]+]]:fpr128 = MULv8i16 [[COPY1]], [[COPY]]
3379 ; CHECK: $noreg = PATCHABLE_RET [[MULv8i16_]]
3380 %2:fpr(<8 x s16>) = COPY $q1
3381 %1:fpr(<8 x s16>) = COPY $q0
3382 %0:fpr(<8 x s16>) = G_MUL %1, %2
3383 $noreg = PATCHABLE_RET %0(<8 x s16>)
3387 name: test_rule1304_id1174_at_idx85055
3390 regBankSelected: true
3391 tracksRegLiveness: true
3393 - { id: 0, class: fpr }
3394 - { id: 1, class: fpr }
3395 - { id: 2, class: fpr }
3397 - { reg: '$d0', virtual-reg: '%1' }
3398 - { reg: '$d1', virtual-reg: '%2' }
3403 ; CHECK-LABEL: name: test_rule1304_id1174_at_idx85055
3404 ; CHECK: liveins: $d0, $d1
3405 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3406 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3407 ; CHECK: [[ORRv8i8_:%[0-9]+]]:fpr64 = ORRv8i8 [[COPY1]], [[COPY]]
3408 ; CHECK: $noreg = PATCHABLE_RET [[ORRv8i8_]]
3409 %2:fpr(<8 x s8>) = COPY $d1
3410 %1:fpr(<8 x s8>) = COPY $d0
3411 %0:fpr(<8 x s8>) = G_OR %1, %2
3412 $noreg = PATCHABLE_RET %0(<8 x s8>)
3416 name: test_rule1305_id1175_at_idx85098
3419 regBankSelected: true
3420 tracksRegLiveness: true
3422 - { id: 0, class: fpr }
3423 - { id: 1, class: fpr }
3424 - { id: 2, class: fpr }
3426 - { reg: '$q0', virtual-reg: '%1' }
3427 - { reg: '$q1', virtual-reg: '%2' }
3432 ; CHECK-LABEL: name: test_rule1305_id1175_at_idx85098
3433 ; CHECK: liveins: $q0, $q1
3434 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3435 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3436 ; CHECK: [[ORRv16i8_:%[0-9]+]]:fpr128 = ORRv16i8 [[COPY1]], [[COPY]]
3437 ; CHECK: $noreg = PATCHABLE_RET [[ORRv16i8_]]
3438 %2:fpr(<16 x s8>) = COPY $q1
3439 %1:fpr(<16 x s8>) = COPY $q0
3440 %0:fpr(<16 x s8>) = G_OR %1, %2
3441 $noreg = PATCHABLE_RET %0(<16 x s8>)
3445 name: test_rule1306_id1827_at_idx85141
3448 regBankSelected: true
3449 tracksRegLiveness: true
3451 - { id: 0, class: fpr }
3452 - { id: 1, class: fpr }
3453 - { id: 2, class: fpr }
3455 - { reg: '$d0', virtual-reg: '%1' }
3456 - { reg: '$d1', virtual-reg: '%2' }
3461 ; CHECK-LABEL: name: test_rule1306_id1827_at_idx85141
3462 ; CHECK: liveins: $d0, $d1
3463 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3464 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3465 ; CHECK: [[ORRv8i8_:%[0-9]+]]:fpr64 = ORRv8i8 [[COPY1]], [[COPY]]
3466 ; CHECK: $noreg = PATCHABLE_RET [[ORRv8i8_]]
3467 %2:fpr(<4 x s16>) = COPY $d1
3468 %1:fpr(<4 x s16>) = COPY $d0
3469 %0:fpr(<4 x s16>) = G_OR %1, %2
3470 $noreg = PATCHABLE_RET %0(<4 x s16>)
3474 name: test_rule1309_id1830_at_idx85270
3477 regBankSelected: true
3478 tracksRegLiveness: true
3480 - { id: 0, class: fpr }
3481 - { id: 1, class: fpr }
3482 - { id: 2, class: fpr }
3484 - { reg: '$q0', virtual-reg: '%1' }
3485 - { reg: '$q1', virtual-reg: '%2' }
3490 ; CHECK-LABEL: name: test_rule1309_id1830_at_idx85270
3491 ; CHECK: liveins: $q0, $q1
3492 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3493 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3494 ; CHECK: [[ORRv16i8_:%[0-9]+]]:fpr128 = ORRv16i8 [[COPY1]], [[COPY]]
3495 ; CHECK: $noreg = PATCHABLE_RET [[ORRv16i8_]]
3496 %2:fpr(<8 x s16>) = COPY $q1
3497 %1:fpr(<8 x s16>) = COPY $q0
3498 %0:fpr(<8 x s16>) = G_OR %1, %2
3499 $noreg = PATCHABLE_RET %0(<8 x s16>)
3503 name: test_rule1315_id1051_at_idx85522
3506 regBankSelected: true
3507 tracksRegLiveness: true
3509 - { id: 0, class: fpr }
3510 - { id: 1, class: fpr }
3511 - { id: 2, class: fpr }
3513 - { reg: '$d0', virtual-reg: '%1' }
3514 - { reg: '$d1', virtual-reg: '%2' }
3519 ; CHECK-LABEL: name: test_rule1315_id1051_at_idx85522
3520 ; CHECK: liveins: $d0, $d1
3521 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3522 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3523 ; CHECK: [[SUBv8i8_:%[0-9]+]]:fpr64 = SUBv8i8 [[COPY1]], [[COPY]]
3524 ; CHECK: $noreg = PATCHABLE_RET [[SUBv8i8_]]
3525 %2:fpr(<8 x s8>) = COPY $d1
3526 %1:fpr(<8 x s8>) = COPY $d0
3527 %0:fpr(<8 x s8>) = G_SUB %1, %2
3528 $noreg = PATCHABLE_RET %0(<8 x s8>)
3532 name: test_rule1316_id1052_at_idx85565
3535 regBankSelected: true
3536 tracksRegLiveness: true
3538 - { id: 0, class: fpr }
3539 - { id: 1, class: fpr }
3540 - { id: 2, class: fpr }
3542 - { reg: '$q0', virtual-reg: '%1' }
3543 - { reg: '$q1', virtual-reg: '%2' }
3548 ; CHECK-LABEL: name: test_rule1316_id1052_at_idx85565
3549 ; CHECK: liveins: $q0, $q1
3550 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3551 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3552 ; CHECK: [[SUBv16i8_:%[0-9]+]]:fpr128 = SUBv16i8 [[COPY1]], [[COPY]]
3553 ; CHECK: $noreg = PATCHABLE_RET [[SUBv16i8_]]
3554 %2:fpr(<16 x s8>) = COPY $q1
3555 %1:fpr(<16 x s8>) = COPY $q0
3556 %0:fpr(<16 x s8>) = G_SUB %1, %2
3557 $noreg = PATCHABLE_RET %0(<16 x s8>)
3561 name: test_rule1317_id1053_at_idx85608
3564 regBankSelected: true
3565 tracksRegLiveness: true
3567 - { id: 0, class: fpr }
3568 - { id: 1, class: fpr }
3569 - { id: 2, class: fpr }
3571 - { reg: '$d0', virtual-reg: '%1' }
3572 - { reg: '$d1', virtual-reg: '%2' }
3577 ; CHECK-LABEL: name: test_rule1317_id1053_at_idx85608
3578 ; CHECK: liveins: $d0, $d1
3579 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3580 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3581 ; CHECK: [[SUBv4i16_:%[0-9]+]]:fpr64 = SUBv4i16 [[COPY1]], [[COPY]]
3582 ; CHECK: $noreg = PATCHABLE_RET [[SUBv4i16_]]
3583 %2:fpr(<4 x s16>) = COPY $d1
3584 %1:fpr(<4 x s16>) = COPY $d0
3585 %0:fpr(<4 x s16>) = G_SUB %1, %2
3586 $noreg = PATCHABLE_RET %0(<4 x s16>)
3590 name: test_rule1318_id1054_at_idx85651
3593 regBankSelected: true
3594 tracksRegLiveness: true
3596 - { id: 0, class: fpr }
3597 - { id: 1, class: fpr }
3598 - { id: 2, class: fpr }
3600 - { reg: '$q0', virtual-reg: '%1' }
3601 - { reg: '$q1', virtual-reg: '%2' }
3606 ; CHECK-LABEL: name: test_rule1318_id1054_at_idx85651
3607 ; CHECK: liveins: $q0, $q1
3608 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3609 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3610 ; CHECK: [[SUBv8i16_:%[0-9]+]]:fpr128 = SUBv8i16 [[COPY1]], [[COPY]]
3611 ; CHECK: $noreg = PATCHABLE_RET [[SUBv8i16_]]
3612 %2:fpr(<8 x s16>) = COPY $q1
3613 %1:fpr(<8 x s16>) = COPY $q0
3614 %0:fpr(<8 x s16>) = G_SUB %1, %2
3615 $noreg = PATCHABLE_RET %0(<8 x s16>)
3619 name: test_rule1329_id1170_at_idx86118
3622 regBankSelected: true
3623 tracksRegLiveness: true
3625 - { id: 0, class: fpr }
3626 - { id: 1, class: fpr }
3627 - { id: 2, class: fpr }
3629 - { reg: '$d0', virtual-reg: '%1' }
3630 - { reg: '$d1', virtual-reg: '%2' }
3635 ; CHECK-LABEL: name: test_rule1329_id1170_at_idx86118
3636 ; CHECK: liveins: $d0, $d1
3637 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3638 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3639 ; CHECK: [[EORv8i8_:%[0-9]+]]:fpr64 = EORv8i8 [[COPY1]], [[COPY]]
3640 ; CHECK: $noreg = PATCHABLE_RET [[EORv8i8_]]
3641 %2:fpr(<8 x s8>) = COPY $d1
3642 %1:fpr(<8 x s8>) = COPY $d0
3643 %0:fpr(<8 x s8>) = G_XOR %1, %2
3644 $noreg = PATCHABLE_RET %0(<8 x s8>)
3648 name: test_rule1330_id1171_at_idx86161
3651 regBankSelected: true
3652 tracksRegLiveness: true
3654 - { id: 0, class: fpr }
3655 - { id: 1, class: fpr }
3656 - { id: 2, class: fpr }
3658 - { reg: '$q0', virtual-reg: '%1' }
3659 - { reg: '$q1', virtual-reg: '%2' }
3664 ; CHECK-LABEL: name: test_rule1330_id1171_at_idx86161
3665 ; CHECK: liveins: $q0, $q1
3666 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3667 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3668 ; CHECK: [[EORv16i8_:%[0-9]+]]:fpr128 = EORv16i8 [[COPY1]], [[COPY]]
3669 ; CHECK: $noreg = PATCHABLE_RET [[EORv16i8_]]
3670 %2:fpr(<16 x s8>) = COPY $q1
3671 %1:fpr(<16 x s8>) = COPY $q0
3672 %0:fpr(<16 x s8>) = G_XOR %1, %2
3673 $noreg = PATCHABLE_RET %0(<16 x s8>)
3677 name: test_rule1331_id1791_at_idx86204
3680 regBankSelected: true
3681 tracksRegLiveness: true
3683 - { id: 0, class: fpr }
3684 - { id: 1, class: fpr }
3685 - { id: 2, class: fpr }
3687 - { reg: '$d0', virtual-reg: '%1' }
3688 - { reg: '$d1', virtual-reg: '%2' }
3693 ; CHECK-LABEL: name: test_rule1331_id1791_at_idx86204
3694 ; CHECK: liveins: $d0, $d1
3695 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d1
3696 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0
3697 ; CHECK: [[EORv8i8_:%[0-9]+]]:fpr64 = EORv8i8 [[COPY1]], [[COPY]]
3698 ; CHECK: $noreg = PATCHABLE_RET [[EORv8i8_]]
3699 %2:fpr(<4 x s16>) = COPY $d1
3700 %1:fpr(<4 x s16>) = COPY $d0
3701 %0:fpr(<4 x s16>) = G_XOR %1, %2
3702 $noreg = PATCHABLE_RET %0(<4 x s16>)
3706 name: test_rule1334_id1794_at_idx86333
3709 regBankSelected: true
3710 tracksRegLiveness: true
3712 - { id: 0, class: fpr }
3713 - { id: 1, class: fpr }
3714 - { id: 2, class: fpr }
3716 - { reg: '$q0', virtual-reg: '%1' }
3717 - { reg: '$q1', virtual-reg: '%2' }
3722 ; CHECK-LABEL: name: test_rule1334_id1794_at_idx86333
3723 ; CHECK: liveins: $q0, $q1
3724 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q1
3725 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0
3726 ; CHECK: [[EORv16i8_:%[0-9]+]]:fpr128 = EORv16i8 [[COPY1]], [[COPY]]
3727 ; CHECK: $noreg = PATCHABLE_RET [[EORv16i8_]]
3728 %2:fpr(<8 x s16>) = COPY $q1
3729 %1:fpr(<8 x s16>) = COPY $q0
3730 %0:fpr(<8 x s16>) = G_XOR %1, %2
3731 $noreg = PATCHABLE_RET %0(<8 x s16>)
3735 name: test_rule1337_id2925_at_idx86462
3738 regBankSelected: true
3739 tracksRegLiveness: true
3741 - { id: 0, class: fpr }
3742 - { id: 1, class: fpr }
3744 - { reg: '$d0', virtual-reg: '%1' }
3749 ; CHECK-LABEL: name: test_rule1337_id2925_at_idx86462
3750 ; CHECK: liveins: $d0
3751 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3752 ; CHECK: [[USHLLv8i8_shift:%[0-9]+]]:fpr128 = USHLLv8i8_shift [[COPY]], 0
3753 ; CHECK: $noreg = PATCHABLE_RET [[USHLLv8i8_shift]]
3754 %1:fpr(<8 x s8>) = COPY $d0
3755 %0:fpr(<8 x s16>) = G_ANYEXT %1(<8 x s8>)
3756 $noreg = PATCHABLE_RET %0(<8 x s16>)
3760 name: test_rule1338_id2928_at_idx86507
3763 regBankSelected: true
3764 tracksRegLiveness: true
3766 - { id: 0, class: fpr }
3767 - { id: 1, class: fpr }
3769 - { reg: '$d0', virtual-reg: '%1' }
3774 ; CHECK-LABEL: name: test_rule1338_id2928_at_idx86507
3775 ; CHECK: liveins: $d0
3776 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3777 ; CHECK: [[USHLLv4i16_shift:%[0-9]+]]:fpr128 = USHLLv4i16_shift [[COPY]], 0
3778 ; CHECK: $noreg = PATCHABLE_RET [[USHLLv4i16_shift]]
3779 %1:fpr(<4 x s16>) = COPY $d0
3780 %0:fpr(<4 x s32>) = G_ANYEXT %1(<4 x s16>)
3781 $noreg = PATCHABLE_RET %0(<4 x s32>)
3785 name: test_rule1339_id2931_at_idx86552
3788 regBankSelected: true
3789 tracksRegLiveness: true
3791 - { id: 0, class: fpr }
3792 - { id: 1, class: fpr }
3794 - { reg: '$d0', virtual-reg: '%1' }
3799 ; CHECK-LABEL: name: test_rule1339_id2931_at_idx86552
3800 ; CHECK: liveins: $d0
3801 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3802 ; CHECK: [[USHLLv2i32_shift:%[0-9]+]]:fpr128 = USHLLv2i32_shift [[COPY]], 0
3803 ; CHECK: $noreg = PATCHABLE_RET [[USHLLv2i32_shift]]
3804 %1:fpr(<2 x s32>) = COPY $d0
3805 %0:fpr(<2 x s64>) = G_ANYEXT %1(<2 x s32>)
3806 $noreg = PATCHABLE_RET %0(<2 x s64>)
3810 name: test_rule1582_id372_at_idx97075
3813 regBankSelected: true
3814 tracksRegLiveness: true
3816 - { id: 0, class: fpr }
3817 - { id: 1, class: fpr }
3819 - { reg: '$s0', virtual-reg: '%1' }
3824 ; CHECK-LABEL: name: test_rule1582_id372_at_idx97075
3825 ; CHECK: liveins: $s0
3826 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
3827 ; CHECK: [[FNEGSr:%[0-9]+]]:fpr32 = FNEGSr [[COPY]]
3828 ; CHECK: $noreg = PATCHABLE_RET [[FNEGSr]]
3829 %1:fpr(s32) = COPY $s0
3830 %0:fpr(s32) = G_FNEG %1
3831 $noreg = PATCHABLE_RET %0(s32)
3835 name: test_rule1583_id373_at_idx97110
3838 regBankSelected: true
3839 tracksRegLiveness: true
3841 - { id: 0, class: fpr }
3842 - { id: 1, class: fpr }
3844 - { reg: '$d0', virtual-reg: '%1' }
3849 ; CHECK-LABEL: name: test_rule1583_id373_at_idx97110
3850 ; CHECK: liveins: $d0
3851 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3852 ; CHECK: [[FNEGDr:%[0-9]+]]:fpr64 = FNEGDr [[COPY]]
3853 ; CHECK: $noreg = PATCHABLE_RET [[FNEGDr]]
3854 %1:fpr(s64) = COPY $d0
3855 %0:fpr(s64) = G_FNEG %1
3856 $noreg = PATCHABLE_RET %0(s64)
3860 name: test_rule1586_id597_at_idx97215
3863 regBankSelected: true
3864 tracksRegLiveness: true
3866 - { id: 0, class: fpr }
3867 - { id: 1, class: fpr }
3869 - { reg: '$d0', virtual-reg: '%1' }
3874 ; CHECK-LABEL: name: test_rule1586_id597_at_idx97215
3875 ; CHECK: liveins: $d0
3876 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3877 ; CHECK: [[FNEGv2f32_:%[0-9]+]]:fpr64 = FNEGv2f32 [[COPY]]
3878 ; CHECK: $noreg = PATCHABLE_RET [[FNEGv2f32_]]
3879 %1:fpr(<2 x s32>) = COPY $d0
3880 %0:fpr(<2 x s32>) = G_FNEG %1
3881 $noreg = PATCHABLE_RET %0(<2 x s32>)
3885 name: test_rule1587_id598_at_idx97250
3888 regBankSelected: true
3889 tracksRegLiveness: true
3891 - { id: 0, class: fpr }
3892 - { id: 1, class: fpr }
3894 - { reg: '$q0', virtual-reg: '%1' }
3899 ; CHECK-LABEL: name: test_rule1587_id598_at_idx97250
3900 ; CHECK: liveins: $q0
3901 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3902 ; CHECK: [[FNEGv4f32_:%[0-9]+]]:fpr128 = FNEGv4f32 [[COPY]]
3903 ; CHECK: $noreg = PATCHABLE_RET [[FNEGv4f32_]]
3904 %1:fpr(<4 x s32>) = COPY $q0
3905 %0:fpr(<4 x s32>) = G_FNEG %1
3906 $noreg = PATCHABLE_RET %0(<4 x s32>)
3910 name: test_rule1588_id599_at_idx97285
3913 regBankSelected: true
3914 tracksRegLiveness: true
3916 - { id: 0, class: fpr }
3917 - { id: 1, class: fpr }
3919 - { reg: '$q0', virtual-reg: '%1' }
3924 ; CHECK-LABEL: name: test_rule1588_id599_at_idx97285
3925 ; CHECK: liveins: $q0
3926 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3927 ; CHECK: [[FNEGv2f64_:%[0-9]+]]:fpr128 = FNEGv2f64 [[COPY]]
3928 ; CHECK: $noreg = PATCHABLE_RET [[FNEGv2f64_]]
3929 %1:fpr(<2 x s64>) = COPY $q0
3930 %0:fpr(<2 x s64>) = G_FNEG %1
3931 $noreg = PATCHABLE_RET %0(<2 x s64>)
3935 name: test_rule1592_id2383_at_idx97425
3938 regBankSelected: true
3939 tracksRegLiveness: true
3941 - { id: 0, class: fpr }
3942 - { id: 1, class: fpr }
3944 - { reg: '$d0', virtual-reg: '%1' }
3949 ; CHECK-LABEL: name: test_rule1592_id2383_at_idx97425
3950 ; CHECK: liveins: $d0
3951 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3952 ; CHECK: [[FCVTLv2i32_:%[0-9]+]]:fpr128 = nofpexcept FCVTLv2i32 [[COPY]]
3953 ; CHECK: $noreg = PATCHABLE_RET [[FCVTLv2i32_]]
3954 %1:fpr(<2 x s32>) = COPY $d0
3955 %0:fpr(<2 x s64>) = G_FPEXT %1(<2 x s32>)
3956 $noreg = PATCHABLE_RET %0(<2 x s64>)
3960 name: test_rule1593_id2385_at_idx97458
3963 regBankSelected: true
3964 tracksRegLiveness: true
3966 - { id: 0, class: fpr }
3967 - { id: 1, class: fpr }
3969 - { reg: '$d0', virtual-reg: '%1' }
3974 ; CHECK-LABEL: name: test_rule1593_id2385_at_idx97458
3975 ; CHECK: liveins: $d0
3976 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3977 ; CHECK: [[FCVTLv4i16_:%[0-9]+]]:fpr128 = nofpexcept FCVTLv4i16 [[COPY]]
3978 ; CHECK: $noreg = PATCHABLE_RET [[FCVTLv4i16_]]
3979 %1:fpr(<4 x s16>) = COPY $d0
3980 %0:fpr(<4 x s32>) = G_FPEXT %1(<4 x s16>)
3981 $noreg = PATCHABLE_RET %0(<4 x s32>)
3985 name: test_rule1602_id587_at_idx97771
3988 regBankSelected: true
3989 tracksRegLiveness: true
3991 - { id: 0, class: fpr }
3992 - { id: 1, class: fpr }
3994 - { reg: '$d0', virtual-reg: '%1' }
3999 ; CHECK-LABEL: name: test_rule1602_id587_at_idx97771
4000 ; CHECK: liveins: $d0
4001 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4002 ; CHECK: [[FCVTZSv2f32_:%[0-9]+]]:fpr64 = nofpexcept FCVTZSv2f32 [[COPY]]
4003 ; CHECK: $noreg = PATCHABLE_RET [[FCVTZSv2f32_]]
4004 %1:fpr(<2 x s32>) = COPY $d0
4005 %0:fpr(<2 x s32>) = G_FPTOSI %1(<2 x s32>)
4006 $noreg = PATCHABLE_RET %0(<2 x s32>)
4010 name: test_rule1603_id588_at_idx97806
4013 regBankSelected: true
4014 tracksRegLiveness: true
4016 - { id: 0, class: fpr }
4017 - { id: 1, class: fpr }
4019 - { reg: '$q0', virtual-reg: '%1' }
4024 ; CHECK-LABEL: name: test_rule1603_id588_at_idx97806
4025 ; CHECK: liveins: $q0
4026 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4027 ; CHECK: [[FCVTZSv4f32_:%[0-9]+]]:fpr128 = nofpexcept FCVTZSv4f32 [[COPY]]
4028 ; CHECK: $noreg = PATCHABLE_RET [[FCVTZSv4f32_]]
4029 %1:fpr(<4 x s32>) = COPY $q0
4030 %0:fpr(<4 x s32>) = G_FPTOSI %1(<4 x s32>)
4031 $noreg = PATCHABLE_RET %0(<4 x s32>)
4035 name: test_rule1604_id589_at_idx97841
4038 regBankSelected: true
4039 tracksRegLiveness: true
4041 - { id: 0, class: fpr }
4042 - { id: 1, class: fpr }
4044 - { reg: '$q0', virtual-reg: '%1' }
4049 ; CHECK-LABEL: name: test_rule1604_id589_at_idx97841
4050 ; CHECK: liveins: $q0
4051 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4052 ; CHECK: [[FCVTZSv2f64_:%[0-9]+]]:fpr128 = nofpexcept FCVTZSv2f64 [[COPY]]
4053 ; CHECK: $noreg = PATCHABLE_RET [[FCVTZSv2f64_]]
4054 %1:fpr(<2 x s64>) = COPY $q0
4055 %0:fpr(<2 x s64>) = G_FPTOSI %1(<2 x s64>)
4056 $noreg = PATCHABLE_RET %0(<2 x s64>)
4060 name: test_rule1613_id592_at_idx98156
4063 regBankSelected: true
4064 tracksRegLiveness: true
4066 - { id: 0, class: fpr }
4067 - { id: 1, class: fpr }
4069 - { reg: '$d0', virtual-reg: '%1' }
4074 ; CHECK-LABEL: name: test_rule1613_id592_at_idx98156
4075 ; CHECK: liveins: $d0
4076 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4077 ; CHECK: [[FCVTZUv2f32_:%[0-9]+]]:fpr64 = nofpexcept FCVTZUv2f32 [[COPY]]
4078 ; CHECK: $noreg = PATCHABLE_RET [[FCVTZUv2f32_]]
4079 %1:fpr(<2 x s32>) = COPY $d0
4080 %0:fpr(<2 x s32>) = G_FPTOUI %1(<2 x s32>)
4081 $noreg = PATCHABLE_RET %0(<2 x s32>)
4085 name: test_rule1614_id593_at_idx98191
4088 regBankSelected: true
4089 tracksRegLiveness: true
4091 - { id: 0, class: fpr }
4092 - { id: 1, class: fpr }
4094 - { reg: '$q0', virtual-reg: '%1' }
4099 ; CHECK-LABEL: name: test_rule1614_id593_at_idx98191
4100 ; CHECK: liveins: $q0
4101 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4102 ; CHECK: [[FCVTZUv4f32_:%[0-9]+]]:fpr128 = nofpexcept FCVTZUv4f32 [[COPY]]
4103 ; CHECK: $noreg = PATCHABLE_RET [[FCVTZUv4f32_]]
4104 %1:fpr(<4 x s32>) = COPY $q0
4105 %0:fpr(<4 x s32>) = G_FPTOUI %1(<4 x s32>)
4106 $noreg = PATCHABLE_RET %0(<4 x s32>)
4110 name: test_rule1615_id594_at_idx98226
4113 regBankSelected: true
4114 tracksRegLiveness: true
4116 - { id: 0, class: fpr }
4117 - { id: 1, class: fpr }
4119 - { reg: '$q0', virtual-reg: '%1' }
4124 ; CHECK-LABEL: name: test_rule1615_id594_at_idx98226
4125 ; CHECK: liveins: $q0
4126 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4127 ; CHECK: [[FCVTZUv2f64_:%[0-9]+]]:fpr128 = nofpexcept FCVTZUv2f64 [[COPY]]
4128 ; CHECK: $noreg = PATCHABLE_RET [[FCVTZUv2f64_]]
4129 %1:fpr(<2 x s64>) = COPY $q0
4130 %0:fpr(<2 x s64>) = G_FPTOUI %1(<2 x s64>)
4131 $noreg = PATCHABLE_RET %0(<2 x s64>)
4135 name: test_rule1619_id2389_at_idx98366
4138 regBankSelected: true
4139 tracksRegLiveness: true
4141 - { id: 0, class: fpr }
4142 - { id: 1, class: fpr }
4144 - { reg: '$q0', virtual-reg: '%1' }
4149 ; CHECK-LABEL: name: test_rule1619_id2389_at_idx98366
4150 ; CHECK: liveins: $q0
4151 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4152 ; CHECK: [[FCVTNv2i32_:%[0-9]+]]:fpr64 = nofpexcept FCVTNv2i32 [[COPY]]
4153 ; CHECK: $noreg = PATCHABLE_RET [[FCVTNv2i32_]]
4154 %1:fpr(<2 x s64>) = COPY $q0
4155 %0:fpr(<2 x s32>) = G_FPTRUNC %1(<2 x s64>)
4156 $noreg = PATCHABLE_RET %0(<2 x s32>)
4160 name: test_rule1620_id2390_at_idx98399
4163 regBankSelected: true
4164 tracksRegLiveness: true
4166 - { id: 0, class: fpr }
4167 - { id: 1, class: fpr }
4169 - { reg: '$q0', virtual-reg: '%1' }
4174 ; CHECK-LABEL: name: test_rule1620_id2390_at_idx98399
4175 ; CHECK: liveins: $q0
4176 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4177 ; CHECK: [[FCVTNv4i16_:%[0-9]+]]:fpr64 = nofpexcept FCVTNv4i16 [[COPY]]
4178 ; CHECK: $noreg = PATCHABLE_RET [[FCVTNv4i16_]]
4179 %1:fpr(<4 x s32>) = COPY $q0
4180 %0:fpr(<4 x s16>) = G_FPTRUNC %1(<4 x s32>)
4181 $noreg = PATCHABLE_RET %0(<4 x s16>)
4185 name: test_rule1621_id2923_at_idx98432
4188 regBankSelected: true
4189 tracksRegLiveness: true
4191 - { id: 0, class: fpr }
4192 - { id: 1, class: fpr }
4194 - { reg: '$d0', virtual-reg: '%1' }
4199 ; CHECK-LABEL: name: test_rule1621_id2923_at_idx98432
4200 ; CHECK: liveins: $d0
4201 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4202 ; CHECK: [[SSHLLv8i8_shift:%[0-9]+]]:fpr128 = SSHLLv8i8_shift [[COPY]], 0
4203 ; CHECK: $noreg = PATCHABLE_RET [[SSHLLv8i8_shift]]
4204 %1:fpr(<8 x s8>) = COPY $d0
4205 %0:fpr(<8 x s16>) = G_SEXT %1(<8 x s8>)
4206 $noreg = PATCHABLE_RET %0(<8 x s16>)
4210 name: test_rule1622_id2926_at_idx98477
4213 regBankSelected: true
4214 tracksRegLiveness: true
4216 - { id: 0, class: fpr }
4217 - { id: 1, class: fpr }
4219 - { reg: '$d0', virtual-reg: '%1' }
4224 ; CHECK-LABEL: name: test_rule1622_id2926_at_idx98477
4225 ; CHECK: liveins: $d0
4226 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4227 ; CHECK: [[SSHLLv4i16_shift:%[0-9]+]]:fpr128 = SSHLLv4i16_shift [[COPY]], 0
4228 ; CHECK: $noreg = PATCHABLE_RET [[SSHLLv4i16_shift]]
4229 %1:fpr(<4 x s16>) = COPY $d0
4230 %0:fpr(<4 x s32>) = G_SEXT %1(<4 x s16>)
4231 $noreg = PATCHABLE_RET %0(<4 x s32>)
4235 name: test_rule1623_id2929_at_idx98522
4238 regBankSelected: true
4239 tracksRegLiveness: true
4241 - { id: 0, class: fpr }
4242 - { id: 1, class: fpr }
4244 - { reg: '$d0', virtual-reg: '%1' }
4249 ; CHECK-LABEL: name: test_rule1623_id2929_at_idx98522
4250 ; CHECK: liveins: $d0
4251 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4252 ; CHECK: [[SSHLLv2i32_shift:%[0-9]+]]:fpr128 = SSHLLv2i32_shift [[COPY]], 0
4253 ; CHECK: $noreg = PATCHABLE_RET [[SSHLLv2i32_shift]]
4254 %1:fpr(<2 x s32>) = COPY $d0
4255 %0:fpr(<2 x s64>) = G_SEXT %1(<2 x s32>)
4256 $noreg = PATCHABLE_RET %0(<2 x s64>)
4260 name: test_rule1632_id687_at_idx98847
4263 regBankSelected: true
4264 tracksRegLiveness: true
4266 - { id: 0, class: fpr }
4267 - { id: 1, class: fpr }
4269 - { reg: '$d0', virtual-reg: '%1' }
4274 ; CHECK-LABEL: name: test_rule1632_id687_at_idx98847
4275 ; CHECK: liveins: $d0
4276 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4277 ; CHECK: [[SCVTFv2f32_:%[0-9]+]]:fpr64 = nofpexcept SCVTFv2f32 [[COPY]]
4278 ; CHECK: $noreg = PATCHABLE_RET [[SCVTFv2f32_]]
4279 %1:fpr(<2 x s32>) = COPY $d0
4280 %0:fpr(<2 x s32>) = G_SITOFP %1(<2 x s32>)
4281 $noreg = PATCHABLE_RET %0(<2 x s32>)
4285 name: test_rule1633_id688_at_idx98882
4288 regBankSelected: true
4289 tracksRegLiveness: true
4291 - { id: 0, class: fpr }
4292 - { id: 1, class: fpr }
4294 - { reg: '$q0', virtual-reg: '%1' }
4299 ; CHECK-LABEL: name: test_rule1633_id688_at_idx98882
4300 ; CHECK: liveins: $q0
4301 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4302 ; CHECK: [[SCVTFv4f32_:%[0-9]+]]:fpr128 = nofpexcept SCVTFv4f32 [[COPY]]
4303 ; CHECK: $noreg = PATCHABLE_RET [[SCVTFv4f32_]]
4304 %1:fpr(<4 x s32>) = COPY $q0
4305 %0:fpr(<4 x s32>) = G_SITOFP %1(<4 x s32>)
4306 $noreg = PATCHABLE_RET %0(<4 x s32>)
4310 name: test_rule1634_id689_at_idx98917
4313 regBankSelected: true
4314 tracksRegLiveness: true
4316 - { id: 0, class: fpr }
4317 - { id: 1, class: fpr }
4319 - { reg: '$q0', virtual-reg: '%1' }
4324 ; CHECK-LABEL: name: test_rule1634_id689_at_idx98917
4325 ; CHECK: liveins: $q0
4326 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4327 ; CHECK: [[SCVTFv2f64_:%[0-9]+]]:fpr128 = nofpexcept SCVTFv2f64 [[COPY]]
4328 ; CHECK: $noreg = PATCHABLE_RET [[SCVTFv2f64_]]
4329 %1:fpr(<2 x s64>) = COPY $q0
4330 %0:fpr(<2 x s64>) = G_SITOFP %1(<2 x s64>)
4331 $noreg = PATCHABLE_RET %0(<2 x s64>)
4335 name: test_rule1635_id748_at_idx98952
4338 regBankSelected: true
4339 tracksRegLiveness: true
4341 - { id: 0, class: fpr }
4342 - { id: 1, class: fpr }
4344 - { reg: '$q0', virtual-reg: '%1' }
4349 ; CHECK-LABEL: name: test_rule1635_id748_at_idx98952
4350 ; CHECK: liveins: $q0
4351 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4352 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[COPY]]
4353 ; CHECK: $noreg = PATCHABLE_RET [[XTNv8i8_]]
4354 %1:fpr(<8 x s16>) = COPY $q0
4355 %0:fpr(<8 x s8>) = G_TRUNC %1(<8 x s16>)
4356 $noreg = PATCHABLE_RET %0(<8 x s8>)
4360 name: test_rule1636_id749_at_idx98987
4363 regBankSelected: true
4364 tracksRegLiveness: true
4366 - { id: 0, class: fpr }
4367 - { id: 1, class: fpr }
4369 - { reg: '$q0', virtual-reg: '%1' }
4374 ; CHECK-LABEL: name: test_rule1636_id749_at_idx98987
4375 ; CHECK: liveins: $q0
4376 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4377 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[COPY]]
4378 ; CHECK: $noreg = PATCHABLE_RET [[XTNv4i16_]]
4379 %1:fpr(<4 x s32>) = COPY $q0
4380 %0:fpr(<4 x s16>) = G_TRUNC %1(<4 x s32>)
4381 $noreg = PATCHABLE_RET %0(<4 x s16>)
4385 name: test_rule1637_id750_at_idx99022
4388 regBankSelected: true
4389 tracksRegLiveness: true
4391 - { id: 0, class: fpr }
4392 - { id: 1, class: fpr }
4394 - { reg: '$q0', virtual-reg: '%1' }
4399 ; CHECK-LABEL: name: test_rule1637_id750_at_idx99022
4400 ; CHECK: liveins: $q0
4401 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4402 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[COPY]]
4403 ; CHECK: $noreg = PATCHABLE_RET [[XTNv2i32_]]
4404 %1:fpr(<2 x s64>) = COPY $q0
4405 %0:fpr(<2 x s32>) = G_TRUNC %1(<2 x s64>)
4406 $noreg = PATCHABLE_RET %0(<2 x s32>)
4410 name: test_rule1647_id731_at_idx99386
4413 regBankSelected: true
4414 tracksRegLiveness: true
4416 - { id: 0, class: fpr }
4417 - { id: 1, class: fpr }
4419 - { reg: '$d0', virtual-reg: '%1' }
4424 ; CHECK-LABEL: name: test_rule1647_id731_at_idx99386
4425 ; CHECK: liveins: $d0
4426 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4427 ; CHECK: [[UCVTFv2f32_:%[0-9]+]]:fpr64 = nofpexcept UCVTFv2f32 [[COPY]]
4428 ; CHECK: $noreg = PATCHABLE_RET [[UCVTFv2f32_]]
4429 %1:fpr(<2 x s32>) = COPY $d0
4430 %0:fpr(<2 x s32>) = G_UITOFP %1(<2 x s32>)
4431 $noreg = PATCHABLE_RET %0(<2 x s32>)
4435 name: test_rule1648_id732_at_idx99421
4438 regBankSelected: true
4439 tracksRegLiveness: true
4441 - { id: 0, class: fpr }
4442 - { id: 1, class: fpr }
4444 - { reg: '$q0', virtual-reg: '%1' }
4449 ; CHECK-LABEL: name: test_rule1648_id732_at_idx99421
4450 ; CHECK: liveins: $q0
4451 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4452 ; CHECK: [[UCVTFv4f32_:%[0-9]+]]:fpr128 = nofpexcept UCVTFv4f32 [[COPY]]
4453 ; CHECK: $noreg = PATCHABLE_RET [[UCVTFv4f32_]]
4454 %1:fpr(<4 x s32>) = COPY $q0
4455 %0:fpr(<4 x s32>) = G_UITOFP %1(<4 x s32>)
4456 $noreg = PATCHABLE_RET %0(<4 x s32>)
4460 name: test_rule1649_id733_at_idx99456
4463 regBankSelected: true
4464 tracksRegLiveness: true
4466 - { id: 0, class: fpr }
4467 - { id: 1, class: fpr }
4469 - { reg: '$q0', virtual-reg: '%1' }
4474 ; CHECK-LABEL: name: test_rule1649_id733_at_idx99456
4475 ; CHECK: liveins: $q0
4476 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
4477 ; CHECK: [[UCVTFv2f64_:%[0-9]+]]:fpr128 = nofpexcept UCVTFv2f64 [[COPY]]
4478 ; CHECK: $noreg = PATCHABLE_RET [[UCVTFv2f64_]]
4479 %1:fpr(<2 x s64>) = COPY $q0
4480 %0:fpr(<2 x s64>) = G_UITOFP %1(<2 x s64>)
4481 $noreg = PATCHABLE_RET %0(<2 x s64>)
4485 name: test_rule1650_id2924_at_idx99491
4488 regBankSelected: true
4489 tracksRegLiveness: true
4491 - { id: 0, class: fpr }
4492 - { id: 1, class: fpr }
4494 - { reg: '$d0', virtual-reg: '%1' }
4499 ; CHECK-LABEL: name: test_rule1650_id2924_at_idx99491
4500 ; CHECK: liveins: $d0
4501 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4502 ; CHECK: [[USHLLv8i8_shift:%[0-9]+]]:fpr128 = USHLLv8i8_shift [[COPY]], 0
4503 ; CHECK: $noreg = PATCHABLE_RET [[USHLLv8i8_shift]]
4504 %1:fpr(<8 x s8>) = COPY $d0
4505 %0:fpr(<8 x s16>) = G_ZEXT %1(<8 x s8>)
4506 $noreg = PATCHABLE_RET %0(<8 x s16>)
4510 name: test_rule1651_id2927_at_idx99536
4513 regBankSelected: true
4514 tracksRegLiveness: true
4516 - { id: 0, class: fpr }
4517 - { id: 1, class: fpr }
4519 - { reg: '$d0', virtual-reg: '%1' }
4524 ; CHECK-LABEL: name: test_rule1651_id2927_at_idx99536
4525 ; CHECK: liveins: $d0
4526 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4527 ; CHECK: [[USHLLv4i16_shift:%[0-9]+]]:fpr128 = USHLLv4i16_shift [[COPY]], 0
4528 ; CHECK: $noreg = PATCHABLE_RET [[USHLLv4i16_shift]]
4529 %1:fpr(<4 x s16>) = COPY $d0
4530 %0:fpr(<4 x s32>) = G_ZEXT %1(<4 x s16>)
4531 $noreg = PATCHABLE_RET %0(<4 x s32>)
4535 name: test_rule1652_id2930_at_idx99581
4538 regBankSelected: true
4539 tracksRegLiveness: true
4541 - { id: 0, class: fpr }
4542 - { id: 1, class: fpr }
4544 - { reg: '$d0', virtual-reg: '%1' }
4549 ; CHECK-LABEL: name: test_rule1652_id2930_at_idx99581
4550 ; CHECK: liveins: $d0
4551 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
4552 ; CHECK: [[USHLLv2i32_shift:%[0-9]+]]:fpr128 = USHLLv2i32_shift [[COPY]], 0
4553 ; CHECK: $noreg = PATCHABLE_RET [[USHLLv2i32_shift]]
4554 %1:fpr(<2 x s32>) = COPY $d0
4555 %0:fpr(<2 x s64>) = G_ZEXT %1(<2 x s32>)
4556 $noreg = PATCHABLE_RET %0(<2 x s64>)