1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=mips64-mti-linux-gnu %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion | FileCheck %s --check-prefix=MIPS64
3 # RUN: llc -mtriple=mips64-mti-linux-gnu %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion -relocation-model=pic | FileCheck %s --check-prefix=PIC
5 # Test the long branch expansion of various branches
8 define i64 @expand_BNEZC64(i64 %a, i64 %b) {
9 %cmp = icmp eq i64 %a, %b
10 br i1 %cmp, label %iftrue, label %tail
13 call void asm sideeffect ".space 831068", ""()
20 define i64 @expand_BEQZC64(i64 %a, i64 %b) {
21 %cmp = icmp eq i64 %a, %b
22 br i1 %cmp, label %iftrue, label %tail
25 call void asm sideeffect ".space 831068", ""()
32 define i64 @expand_BNEC64(i64 %a, i64 %b) {
33 %cmp = icmp eq i64 %a, %b
34 br i1 %cmp, label %iftrue, label %tail
37 call void asm sideeffect ".space 831068", ""()
44 define i64 @expand_BEQC64(i64 %a, i64 %b) {
45 %cmp = icmp eq i64 %a, %b
46 br i1 %cmp, label %iftrue, label %tail
49 call void asm sideeffect ".space 831068", ""()
56 define i64 @expand_BLTC64(i64 %a, i64 %b) {
57 %cmp = icmp eq i64 %a, %b
58 br i1 %cmp, label %iftrue, label %tail
61 call void asm sideeffect ".space 831068", ""()
68 define i64 @expand_BLTUC64(i64 %a, i64 %b) {
69 %cmp = icmp eq i64 %a, %b
70 br i1 %cmp, label %iftrue, label %tail
73 call void asm sideeffect ".space 831068", ""()
80 define i64 @expand_BGEC64(i64 %a, i64 %b) {
81 %cmp = icmp eq i64 %a, %b
82 br i1 %cmp, label %iftrue, label %tail
85 call void asm sideeffect ".space 831068", ""()
92 define i64 @expand_BGEUC64(i64 %a, i64 %b) {
93 %cmp = icmp eq i64 %a, %b
94 br i1 %cmp, label %iftrue, label %tail
97 call void asm sideeffect ".space 831068", ""()
104 define i64 @expand_BLEZC64(i64 %a, i64 %b) {
105 %cmp = icmp eq i64 %a, %b
106 br i1 %cmp, label %iftrue, label %tail
109 call void asm sideeffect ".space 831068", ""()
116 define i64 @expand_BLTZC64(i64 %a, i64 %b) {
117 %cmp = icmp eq i64 %a, %b
118 br i1 %cmp, label %iftrue, label %tail
121 call void asm sideeffect ".space 831068", ""()
128 define i64 @expand_BGEZC64(i64 %a, i64 %b) {
129 %cmp = icmp eq i64 %a, %b
130 br i1 %cmp, label %iftrue, label %tail
133 call void asm sideeffect ".space 831068", ""()
140 define i64 @expand_BGTZC64(i64 %a, i64 %b) {
141 %cmp = icmp eq i64 %a, %b
142 br i1 %cmp, label %iftrue, label %tail
145 call void asm sideeffect ".space 831068", ""()
157 exposesReturnsTwice: false
159 regBankSelected: false
162 tracksRegLiveness: true
165 - { reg: '$a0_64', virtual-reg: '' }
167 isFrameAddressTaken: false
168 isReturnAddressTaken: false
178 hasOpaqueSPAdjustment: false
180 hasMustTailInVarArgFunc: false
188 ; MIPS64-LABEL: name: expand_BNEZC64
189 ; MIPS64: bb.0 (%ir-block.0):
190 ; MIPS64: successors: %bb.1(0x40000000), %bb.2(0x40000000)
191 ; MIPS64: BNEZC64 killed renamable $a0_64, %bb.2, implicit-def $at
192 ; MIPS64: bb.1.iftrue:
193 ; MIPS64: INLINEASM &".space 831068", 1
194 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
195 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
198 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
199 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
201 ; PIC-LABEL: name: expand_BNEZC64
202 ; PIC: bb.0 (%ir-block.0):
203 ; PIC: successors: %bb.1(0x40000000), %bb.2(0x40000000)
204 ; PIC: BNEZC64 killed renamable $a0_64, %bb.2, implicit-def $at
206 ; PIC: INLINEASM &".space 831068", 1
207 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
208 ; PIC: $v0_64 = DADDiu $zero_64, 1
211 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
212 ; PIC: $v0_64 = DADDiu $zero_64, 0
215 successors: %bb.1(0x40000000), %bb.2(0x40000000)
218 BNEZC64 killed renamable $a0_64, %bb.2, implicit-def $at
221 INLINEASM &".space 831068", 1
222 $v0_64 = DADDiu $zero_64, 1
223 PseudoReturn64 undef $ra_64, implicit killed $v0_64
226 $v0_64 = DADDiu $zero_64, 0
227 PseudoReturn64 undef $ra_64, implicit killed $v0_64
234 exposesReturnsTwice: false
236 regBankSelected: false
239 tracksRegLiveness: true
242 - { reg: '$a0_64', virtual-reg: '' }
244 isFrameAddressTaken: false
245 isReturnAddressTaken: false
255 hasOpaqueSPAdjustment: false
257 hasMustTailInVarArgFunc: false
265 ; MIPS64-LABEL: name: expand_BEQZC64
266 ; MIPS64: bb.0 (%ir-block.0):
267 ; MIPS64: successors: %bb.1(0x40000000), %bb.2(0x40000000)
268 ; MIPS64: BEQZC64 killed renamable $a0_64, %bb.2, implicit-def $at
269 ; MIPS64: bb.1.iftrue:
270 ; MIPS64: INLINEASM &".space 831068", 1
271 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
272 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
275 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
276 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
278 ; PIC-LABEL: name: expand_BEQZC64
279 ; PIC: bb.0 (%ir-block.0):
280 ; PIC: successors: %bb.1(0x40000000), %bb.2(0x40000000)
281 ; PIC: BEQZC64 killed renamable $a0_64, %bb.2, implicit-def $at
283 ; PIC: INLINEASM &".space 831068", 1
284 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
285 ; PIC: $v0_64 = DADDiu $zero_64, 1
288 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
289 ; PIC: $v0_64 = DADDiu $zero_64, 0
292 successors: %bb.1(0x40000000), %bb.2(0x40000000)
295 BEQZC64 killed renamable $a0_64, %bb.2, implicit-def $at
298 INLINEASM &".space 831068", 1
299 $v0_64 = DADDiu $zero_64, 1
300 PseudoReturn64 undef $ra_64, implicit killed $v0_64
303 $v0_64 = DADDiu $zero_64, 0
304 PseudoReturn64 undef $ra_64, implicit killed $v0_64
311 exposesReturnsTwice: false
313 regBankSelected: false
316 tracksRegLiveness: true
319 - { reg: '$a0_64', virtual-reg: '' }
321 isFrameAddressTaken: false
322 isReturnAddressTaken: false
332 hasOpaqueSPAdjustment: false
334 hasMustTailInVarArgFunc: false
342 ; MIPS64-LABEL: name: expand_BNEC64
343 ; MIPS64: bb.0 (%ir-block.0):
344 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
345 ; MIPS64: BEQC64 $a0_64, $zero_64, %bb.2, implicit-def $at
346 ; MIPS64: bb.1 (%ir-block.0):
347 ; MIPS64: successors: %bb.3(0x80000000)
348 ; MIPS64: J %bb.3, implicit-def $at {
351 ; MIPS64: bb.2.iftrue:
352 ; MIPS64: INLINEASM &".space 831068", 1
353 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
354 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
357 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
358 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
360 ; PIC-LABEL: name: expand_BNEC64
361 ; PIC: bb.0 (%ir-block.0):
362 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
363 ; PIC: BEQC64 $a0_64, $zero_64, %bb.3, implicit-def $at
364 ; PIC: bb.1 (%ir-block.0):
365 ; PIC: successors: %bb.2(0x80000000)
366 ; PIC: $sp_64 = DADDiu $sp_64, -16
367 ; PIC: SD $ra_64, $sp_64, 0
368 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
369 ; PIC: $at_64 = DSLL $at_64, 16
370 ; PIC: BAL_BR %bb.2, implicit-def $ra {
371 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
373 ; PIC: bb.2 (%ir-block.0):
374 ; PIC: successors: %bb.4(0x80000000)
375 ; PIC: $at_64 = DADDu $ra_64, $at_64
376 ; PIC: $ra_64 = LD $sp_64, 0
378 ; PIC: $sp_64 = DADDiu $sp_64, 16
381 ; PIC: INLINEASM &".space 831068", 1
382 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
383 ; PIC: $v0_64 = DADDiu $zero_64, 1
386 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
387 ; PIC: $v0_64 = DADDiu $zero_64, 0
390 successors: %bb.1(0x40000000), %bb.2(0x40000000)
393 BNEC64 killed renamable $a0_64, $zero_64, %bb.2, implicit-def $at
396 INLINEASM &".space 831068", 1
397 $v0_64 = DADDiu $zero_64, 1
398 PseudoReturn64 undef $ra_64, implicit killed $v0_64
401 $v0_64 = DADDiu $zero_64, 0
402 PseudoReturn64 undef $ra_64, implicit killed $v0_64
409 exposesReturnsTwice: false
411 regBankSelected: false
414 tracksRegLiveness: true
417 - { reg: '$a0_64', virtual-reg: '' }
419 isFrameAddressTaken: false
420 isReturnAddressTaken: false
430 hasOpaqueSPAdjustment: false
432 hasMustTailInVarArgFunc: false
440 ; MIPS64-LABEL: name: expand_BEQC64
441 ; MIPS64: bb.0 (%ir-block.0):
442 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
443 ; MIPS64: BNEC64 $a0_64, $zero_64, %bb.2, implicit-def $at
444 ; MIPS64: bb.1 (%ir-block.0):
445 ; MIPS64: successors: %bb.3(0x80000000)
446 ; MIPS64: J %bb.3, implicit-def $at {
449 ; MIPS64: bb.2.iftrue:
450 ; MIPS64: INLINEASM &".space 831068", 1
451 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
452 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
455 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
456 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
458 ; PIC-LABEL: name: expand_BEQC64
459 ; PIC: bb.0 (%ir-block.0):
460 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
461 ; PIC: BNEC64 $a0_64, $zero_64, %bb.3, implicit-def $at
462 ; PIC: bb.1 (%ir-block.0):
463 ; PIC: successors: %bb.2(0x80000000)
464 ; PIC: $sp_64 = DADDiu $sp_64, -16
465 ; PIC: SD $ra_64, $sp_64, 0
466 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
467 ; PIC: $at_64 = DSLL $at_64, 16
468 ; PIC: BAL_BR %bb.2, implicit-def $ra {
469 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
471 ; PIC: bb.2 (%ir-block.0):
472 ; PIC: successors: %bb.4(0x80000000)
473 ; PIC: $at_64 = DADDu $ra_64, $at_64
474 ; PIC: $ra_64 = LD $sp_64, 0
476 ; PIC: $sp_64 = DADDiu $sp_64, 16
479 ; PIC: INLINEASM &".space 831068", 1
480 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
481 ; PIC: $v0_64 = DADDiu $zero_64, 1
484 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
485 ; PIC: $v0_64 = DADDiu $zero_64, 0
488 successors: %bb.1(0x40000000), %bb.2(0x40000000)
491 BEQC64 killed renamable $a0_64, $zero_64, %bb.2, implicit-def $at
494 INLINEASM &".space 831068", 1
495 $v0_64 = DADDiu $zero_64, 1
496 PseudoReturn64 undef $ra_64, implicit killed $v0_64
499 $v0_64 = DADDiu $zero_64, 0
500 PseudoReturn64 undef $ra_64, implicit killed $v0_64
507 exposesReturnsTwice: false
509 regBankSelected: false
512 tracksRegLiveness: true
515 - { reg: '$a0_64', virtual-reg: '' }
517 isFrameAddressTaken: false
518 isReturnAddressTaken: false
528 hasOpaqueSPAdjustment: false
530 hasMustTailInVarArgFunc: false
538 ; MIPS64-LABEL: name: expand_BLTC64
539 ; MIPS64: bb.0 (%ir-block.0):
540 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
541 ; MIPS64: BGEC64 $a0_64, $zero_64, %bb.2, implicit-def $at
542 ; MIPS64: bb.1 (%ir-block.0):
543 ; MIPS64: successors: %bb.3(0x80000000)
544 ; MIPS64: J %bb.3, implicit-def $at {
547 ; MIPS64: bb.2.iftrue:
548 ; MIPS64: INLINEASM &".space 831068", 1
549 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
550 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
553 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
554 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
556 ; PIC-LABEL: name: expand_BLTC64
557 ; PIC: bb.0 (%ir-block.0):
558 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
559 ; PIC: BGEC64 $a0_64, $zero_64, %bb.3, implicit-def $at
560 ; PIC: bb.1 (%ir-block.0):
561 ; PIC: successors: %bb.2(0x80000000)
562 ; PIC: $sp_64 = DADDiu $sp_64, -16
563 ; PIC: SD $ra_64, $sp_64, 0
564 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
565 ; PIC: $at_64 = DSLL $at_64, 16
566 ; PIC: BAL_BR %bb.2, implicit-def $ra {
567 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
569 ; PIC: bb.2 (%ir-block.0):
570 ; PIC: successors: %bb.4(0x80000000)
571 ; PIC: $at_64 = DADDu $ra_64, $at_64
572 ; PIC: $ra_64 = LD $sp_64, 0
574 ; PIC: $sp_64 = DADDiu $sp_64, 16
577 ; PIC: INLINEASM &".space 831068", 1
578 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
579 ; PIC: $v0_64 = DADDiu $zero_64, 1
582 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
583 ; PIC: $v0_64 = DADDiu $zero_64, 0
586 successors: %bb.1(0x40000000), %bb.2(0x40000000)
589 BLTC64 killed renamable $a0_64, $zero_64, %bb.2, implicit-def $at
592 INLINEASM &".space 831068", 1
593 $v0_64 = DADDiu $zero_64, 1
594 PseudoReturn64 undef $ra_64, implicit killed $v0_64
597 $v0_64 = DADDiu $zero_64, 0
598 PseudoReturn64 undef $ra_64, implicit killed $v0_64
605 exposesReturnsTwice: false
607 regBankSelected: false
610 tracksRegLiveness: true
613 - { reg: '$a0_64', virtual-reg: '' }
615 isFrameAddressTaken: false
616 isReturnAddressTaken: false
626 hasOpaqueSPAdjustment: false
628 hasMustTailInVarArgFunc: false
636 ; MIPS64-LABEL: name: expand_BLTUC64
637 ; MIPS64: bb.0 (%ir-block.0):
638 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
639 ; MIPS64: BGEUC64 $a0_64, $zero_64, %bb.2, implicit-def $at
640 ; MIPS64: bb.1 (%ir-block.0):
641 ; MIPS64: successors: %bb.3(0x80000000)
642 ; MIPS64: J %bb.3, implicit-def $at {
645 ; MIPS64: bb.2.iftrue:
646 ; MIPS64: INLINEASM &".space 831068", 1
647 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
648 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
651 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
652 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
654 ; PIC-LABEL: name: expand_BLTUC64
655 ; PIC: bb.0 (%ir-block.0):
656 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
657 ; PIC: BGEUC64 $a0_64, $zero_64, %bb.3, implicit-def $at
658 ; PIC: bb.1 (%ir-block.0):
659 ; PIC: successors: %bb.2(0x80000000)
660 ; PIC: $sp_64 = DADDiu $sp_64, -16
661 ; PIC: SD $ra_64, $sp_64, 0
662 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
663 ; PIC: $at_64 = DSLL $at_64, 16
664 ; PIC: BAL_BR %bb.2, implicit-def $ra {
665 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
667 ; PIC: bb.2 (%ir-block.0):
668 ; PIC: successors: %bb.4(0x80000000)
669 ; PIC: $at_64 = DADDu $ra_64, $at_64
670 ; PIC: $ra_64 = LD $sp_64, 0
672 ; PIC: $sp_64 = DADDiu $sp_64, 16
675 ; PIC: INLINEASM &".space 831068", 1
676 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
677 ; PIC: $v0_64 = DADDiu $zero_64, 1
680 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
681 ; PIC: $v0_64 = DADDiu $zero_64, 0
684 successors: %bb.1(0x40000000), %bb.2(0x40000000)
687 BLTUC64 killed renamable $a0_64, $zero_64, %bb.2, implicit-def $at
690 INLINEASM &".space 831068", 1
691 $v0_64 = DADDiu $zero_64, 1
692 PseudoReturn64 undef $ra_64, implicit killed $v0_64
695 $v0_64 = DADDiu $zero_64, 0
696 PseudoReturn64 undef $ra_64, implicit killed $v0_64
703 exposesReturnsTwice: false
705 regBankSelected: false
708 tracksRegLiveness: true
711 - { reg: '$a0_64', virtual-reg: '' }
713 isFrameAddressTaken: false
714 isReturnAddressTaken: false
724 hasOpaqueSPAdjustment: false
726 hasMustTailInVarArgFunc: false
734 ; MIPS64-LABEL: name: expand_BGEC64
735 ; MIPS64: bb.0 (%ir-block.0):
736 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
737 ; MIPS64: BLTC64 $a0_64, $zero_64, %bb.2, implicit-def $at
738 ; MIPS64: bb.1 (%ir-block.0):
739 ; MIPS64: successors: %bb.3(0x80000000)
740 ; MIPS64: J %bb.3, implicit-def $at {
743 ; MIPS64: bb.2.iftrue:
744 ; MIPS64: INLINEASM &".space 831068", 1
745 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
746 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
749 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
750 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
752 ; PIC-LABEL: name: expand_BGEC64
753 ; PIC: bb.0 (%ir-block.0):
754 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
755 ; PIC: BLTC64 $a0_64, $zero_64, %bb.3, implicit-def $at
756 ; PIC: bb.1 (%ir-block.0):
757 ; PIC: successors: %bb.2(0x80000000)
758 ; PIC: $sp_64 = DADDiu $sp_64, -16
759 ; PIC: SD $ra_64, $sp_64, 0
760 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
761 ; PIC: $at_64 = DSLL $at_64, 16
762 ; PIC: BAL_BR %bb.2, implicit-def $ra {
763 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
765 ; PIC: bb.2 (%ir-block.0):
766 ; PIC: successors: %bb.4(0x80000000)
767 ; PIC: $at_64 = DADDu $ra_64, $at_64
768 ; PIC: $ra_64 = LD $sp_64, 0
770 ; PIC: $sp_64 = DADDiu $sp_64, 16
773 ; PIC: INLINEASM &".space 831068", 1
774 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
775 ; PIC: $v0_64 = DADDiu $zero_64, 1
778 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
779 ; PIC: $v0_64 = DADDiu $zero_64, 0
782 successors: %bb.1(0x40000000), %bb.2(0x40000000)
785 BGEC64 killed renamable $a0_64, $zero_64, %bb.2, implicit-def $at
788 INLINEASM &".space 831068", 1
789 $v0_64 = DADDiu $zero_64, 1
790 PseudoReturn64 undef $ra_64, implicit killed $v0_64
793 $v0_64 = DADDiu $zero_64, 0
794 PseudoReturn64 undef $ra_64, implicit killed $v0_64
801 exposesReturnsTwice: false
803 regBankSelected: false
806 tracksRegLiveness: true
809 - { reg: '$a0_64', virtual-reg: '' }
811 isFrameAddressTaken: false
812 isReturnAddressTaken: false
822 hasOpaqueSPAdjustment: false
824 hasMustTailInVarArgFunc: false
832 ; MIPS64-LABEL: name: expand_BGEUC64
833 ; MIPS64: bb.0 (%ir-block.0):
834 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
835 ; MIPS64: BLTUC64 $a0_64, $zero_64, %bb.2, implicit-def $at
836 ; MIPS64: bb.1 (%ir-block.0):
837 ; MIPS64: successors: %bb.3(0x80000000)
838 ; MIPS64: J %bb.3, implicit-def $at {
841 ; MIPS64: bb.2.iftrue:
842 ; MIPS64: INLINEASM &".space 831068", 1
843 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
844 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
847 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
848 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
850 ; PIC-LABEL: name: expand_BGEUC64
851 ; PIC: bb.0 (%ir-block.0):
852 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
853 ; PIC: BLTUC64 $a0_64, $zero_64, %bb.3, implicit-def $at
854 ; PIC: bb.1 (%ir-block.0):
855 ; PIC: successors: %bb.2(0x80000000)
856 ; PIC: $sp_64 = DADDiu $sp_64, -16
857 ; PIC: SD $ra_64, $sp_64, 0
858 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
859 ; PIC: $at_64 = DSLL $at_64, 16
860 ; PIC: BAL_BR %bb.2, implicit-def $ra {
861 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
863 ; PIC: bb.2 (%ir-block.0):
864 ; PIC: successors: %bb.4(0x80000000)
865 ; PIC: $at_64 = DADDu $ra_64, $at_64
866 ; PIC: $ra_64 = LD $sp_64, 0
868 ; PIC: $sp_64 = DADDiu $sp_64, 16
871 ; PIC: INLINEASM &".space 831068", 1
872 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
873 ; PIC: $v0_64 = DADDiu $zero_64, 1
876 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
877 ; PIC: $v0_64 = DADDiu $zero_64, 0
880 successors: %bb.1(0x40000000), %bb.2(0x40000000)
883 BGEUC64 killed renamable $a0_64, $zero_64, %bb.2, implicit-def $at
886 INLINEASM &".space 831068", 1
887 $v0_64 = DADDiu $zero_64, 1
888 PseudoReturn64 undef $ra_64, implicit killed $v0_64
891 $v0_64 = DADDiu $zero_64, 0
892 PseudoReturn64 undef $ra_64, implicit killed $v0_64
899 exposesReturnsTwice: false
901 regBankSelected: false
904 tracksRegLiveness: true
907 - { reg: '$a0_64', virtual-reg: '' }
909 isFrameAddressTaken: false
910 isReturnAddressTaken: false
920 hasOpaqueSPAdjustment: false
922 hasMustTailInVarArgFunc: false
930 ; MIPS64-LABEL: name: expand_BLEZC64
931 ; MIPS64: bb.0 (%ir-block.0):
932 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
933 ; MIPS64: BGTZC64 $a0_64, %bb.2, implicit-def $at
934 ; MIPS64: bb.1 (%ir-block.0):
935 ; MIPS64: successors: %bb.3(0x80000000)
936 ; MIPS64: J %bb.3, implicit-def $at {
939 ; MIPS64: bb.2.iftrue:
940 ; MIPS64: INLINEASM &".space 831068", 1
941 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
942 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
945 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
946 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
948 ; PIC-LABEL: name: expand_BLEZC64
949 ; PIC: bb.0 (%ir-block.0):
950 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
951 ; PIC: BGTZC64 $a0_64, %bb.3, implicit-def $at
952 ; PIC: bb.1 (%ir-block.0):
953 ; PIC: successors: %bb.2(0x80000000)
954 ; PIC: $sp_64 = DADDiu $sp_64, -16
955 ; PIC: SD $ra_64, $sp_64, 0
956 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
957 ; PIC: $at_64 = DSLL $at_64, 16
958 ; PIC: BAL_BR %bb.2, implicit-def $ra {
959 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
961 ; PIC: bb.2 (%ir-block.0):
962 ; PIC: successors: %bb.4(0x80000000)
963 ; PIC: $at_64 = DADDu $ra_64, $at_64
964 ; PIC: $ra_64 = LD $sp_64, 0
966 ; PIC: $sp_64 = DADDiu $sp_64, 16
969 ; PIC: INLINEASM &".space 831068", 1
970 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
971 ; PIC: $v0_64 = DADDiu $zero_64, 1
974 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
975 ; PIC: $v0_64 = DADDiu $zero_64, 0
978 successors: %bb.1(0x40000000), %bb.2(0x40000000)
981 BLEZC64 killed renamable $a0_64, %bb.2, implicit-def $at
984 INLINEASM &".space 831068", 1
985 $v0_64 = DADDiu $zero_64, 1
986 PseudoReturn64 undef $ra_64, implicit killed $v0_64
989 $v0_64 = DADDiu $zero_64, 0
990 PseudoReturn64 undef $ra_64, implicit killed $v0_64
997 exposesReturnsTwice: false
999 regBankSelected: false
1002 tracksRegLiveness: true
1005 - { reg: '$a0_64', virtual-reg: '' }
1007 isFrameAddressTaken: false
1008 isReturnAddressTaken: false
1010 hasPatchPoint: false
1018 hasOpaqueSPAdjustment: false
1020 hasMustTailInVarArgFunc: false
1028 ; MIPS64-LABEL: name: expand_BLTZC64
1029 ; MIPS64: bb.0 (%ir-block.0):
1030 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
1031 ; MIPS64: BGEZC64 $a0_64, %bb.2, implicit-def $at
1032 ; MIPS64: bb.1 (%ir-block.0):
1033 ; MIPS64: successors: %bb.3(0x80000000)
1034 ; MIPS64: J %bb.3, implicit-def $at {
1037 ; MIPS64: bb.2.iftrue:
1038 ; MIPS64: INLINEASM &".space 831068", 1
1039 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1040 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
1042 ; MIPS64: bb.3.tail:
1043 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1044 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
1046 ; PIC-LABEL: name: expand_BLTZC64
1047 ; PIC: bb.0 (%ir-block.0):
1048 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
1049 ; PIC: BGEZC64 $a0_64, %bb.3, implicit-def $at
1050 ; PIC: bb.1 (%ir-block.0):
1051 ; PIC: successors: %bb.2(0x80000000)
1052 ; PIC: $sp_64 = DADDiu $sp_64, -16
1053 ; PIC: SD $ra_64, $sp_64, 0
1054 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
1055 ; PIC: $at_64 = DSLL $at_64, 16
1056 ; PIC: BAL_BR %bb.2, implicit-def $ra {
1057 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
1059 ; PIC: bb.2 (%ir-block.0):
1060 ; PIC: successors: %bb.4(0x80000000)
1061 ; PIC: $at_64 = DADDu $ra_64, $at_64
1062 ; PIC: $ra_64 = LD $sp_64, 0
1063 ; PIC: JR64 $at_64 {
1064 ; PIC: $sp_64 = DADDiu $sp_64, 16
1067 ; PIC: INLINEASM &".space 831068", 1
1068 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1069 ; PIC: $v0_64 = DADDiu $zero_64, 1
1072 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1073 ; PIC: $v0_64 = DADDiu $zero_64, 0
1076 successors: %bb.1(0x40000000), %bb.2(0x40000000)
1079 BLTZC64 killed renamable $a0_64, %bb.2, implicit-def $at
1082 INLINEASM &".space 831068", 1
1083 $v0_64 = DADDiu $zero_64, 1
1084 PseudoReturn64 undef $ra_64, implicit killed $v0_64
1087 $v0_64 = DADDiu $zero_64, 0
1088 PseudoReturn64 undef $ra_64, implicit killed $v0_64
1093 name: expand_BGEZC64
1095 exposesReturnsTwice: false
1097 regBankSelected: false
1100 tracksRegLiveness: true
1103 - { reg: '$a0_64', virtual-reg: '' }
1105 isFrameAddressTaken: false
1106 isReturnAddressTaken: false
1108 hasPatchPoint: false
1116 hasOpaqueSPAdjustment: false
1118 hasMustTailInVarArgFunc: false
1126 ; MIPS64-LABEL: name: expand_BGEZC64
1127 ; MIPS64: bb.0 (%ir-block.0):
1128 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
1129 ; MIPS64: BLTZC64 $a0_64, %bb.2, implicit-def $at
1130 ; MIPS64: bb.1 (%ir-block.0):
1131 ; MIPS64: successors: %bb.3(0x80000000)
1132 ; MIPS64: J %bb.3, implicit-def $at {
1135 ; MIPS64: bb.2.iftrue:
1136 ; MIPS64: INLINEASM &".space 831068", 1
1137 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1138 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
1140 ; MIPS64: bb.3.tail:
1141 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1142 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
1144 ; PIC-LABEL: name: expand_BGEZC64
1145 ; PIC: bb.0 (%ir-block.0):
1146 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
1147 ; PIC: BLTZC64 $a0_64, %bb.3, implicit-def $at
1148 ; PIC: bb.1 (%ir-block.0):
1149 ; PIC: successors: %bb.2(0x80000000)
1150 ; PIC: $sp_64 = DADDiu $sp_64, -16
1151 ; PIC: SD $ra_64, $sp_64, 0
1152 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
1153 ; PIC: $at_64 = DSLL $at_64, 16
1154 ; PIC: BAL_BR %bb.2, implicit-def $ra {
1155 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
1157 ; PIC: bb.2 (%ir-block.0):
1158 ; PIC: successors: %bb.4(0x80000000)
1159 ; PIC: $at_64 = DADDu $ra_64, $at_64
1160 ; PIC: $ra_64 = LD $sp_64, 0
1161 ; PIC: JR64 $at_64 {
1162 ; PIC: $sp_64 = DADDiu $sp_64, 16
1165 ; PIC: INLINEASM &".space 831068", 1
1166 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1167 ; PIC: $v0_64 = DADDiu $zero_64, 1
1170 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1171 ; PIC: $v0_64 = DADDiu $zero_64, 0
1174 successors: %bb.1(0x40000000), %bb.2(0x40000000)
1177 BGEZC64 killed renamable $a0_64, %bb.2, implicit-def $at
1180 INLINEASM &".space 831068", 1
1181 $v0_64 = DADDiu $zero_64, 1
1182 PseudoReturn64 undef $ra_64, implicit killed $v0_64
1185 $v0_64 = DADDiu $zero_64, 0
1186 PseudoReturn64 undef $ra_64, implicit killed $v0_64
1191 name: expand_BGTZC64
1193 exposesReturnsTwice: false
1195 regBankSelected: false
1198 tracksRegLiveness: true
1201 - { reg: '$a0_64', virtual-reg: '' }
1203 isFrameAddressTaken: false
1204 isReturnAddressTaken: false
1206 hasPatchPoint: false
1214 hasOpaqueSPAdjustment: false
1216 hasMustTailInVarArgFunc: false
1224 ; MIPS64-LABEL: name: expand_BGTZC64
1225 ; MIPS64: bb.0 (%ir-block.0):
1226 ; MIPS64: successors: %bb.2(0x40000000), %bb.1(0x40000000)
1227 ; MIPS64: BLEZC64 $a0_64, %bb.2, implicit-def $at
1228 ; MIPS64: bb.1 (%ir-block.0):
1229 ; MIPS64: successors: %bb.3(0x80000000)
1230 ; MIPS64: J %bb.3, implicit-def $at {
1233 ; MIPS64: bb.2.iftrue:
1234 ; MIPS64: INLINEASM &".space 831068", 1
1235 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1236 ; MIPS64: $v0_64 = DADDiu $zero_64, 1
1238 ; MIPS64: bb.3.tail:
1239 ; MIPS64: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1240 ; MIPS64: $v0_64 = DADDiu $zero_64, 0
1242 ; PIC-LABEL: name: expand_BGTZC64
1243 ; PIC: bb.0 (%ir-block.0):
1244 ; PIC: successors: %bb.3(0x40000000), %bb.1(0x40000000)
1245 ; PIC: BLEZC64 $a0_64, %bb.3, implicit-def $at
1246 ; PIC: bb.1 (%ir-block.0):
1247 ; PIC: successors: %bb.2(0x80000000)
1248 ; PIC: $sp_64 = DADDiu $sp_64, -16
1249 ; PIC: SD $ra_64, $sp_64, 0
1250 ; PIC: $at_64 = LONG_BRANCH_DADDiu $zero_64, target-flags(mips-abs-hi) %bb.4, %bb.2
1251 ; PIC: $at_64 = DSLL $at_64, 16
1252 ; PIC: BAL_BR %bb.2, implicit-def $ra {
1253 ; PIC: $at_64 = LONG_BRANCH_DADDiu $at_64, target-flags(mips-abs-lo) %bb.4, %bb.2
1255 ; PIC: bb.2 (%ir-block.0):
1256 ; PIC: successors: %bb.4(0x80000000)
1257 ; PIC: $at_64 = DADDu $ra_64, $at_64
1258 ; PIC: $ra_64 = LD $sp_64, 0
1259 ; PIC: JR64 $at_64 {
1260 ; PIC: $sp_64 = DADDiu $sp_64, 16
1263 ; PIC: INLINEASM &".space 831068", 1
1264 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1265 ; PIC: $v0_64 = DADDiu $zero_64, 1
1268 ; PIC: PseudoReturn64 undef $ra_64, implicit killed $v0_64 {
1269 ; PIC: $v0_64 = DADDiu $zero_64, 0
1272 successors: %bb.1(0x40000000), %bb.2(0x40000000)
1275 BGTZC64 killed renamable $a0_64, %bb.2, implicit-def $at
1278 INLINEASM &".space 831068", 1
1279 $v0_64 = DADDiu $zero_64, 1
1280 PseudoReturn64 undef $ra_64, implicit killed $v0_64
1283 $v0_64 = DADDiu $zero_64, 0
1284 PseudoReturn64 undef $ra_64, implicit killed $v0_64