# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=mips-mti-linux-gnu -mattr=+micromips %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion | FileCheck %s --check-prefix=MM
# RUN: llc -mtriple=mips-mti-linux-gnu -mattr=+micromips %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion -relocation-model=pic | FileCheck %s --check-prefix=PIC

# Test the long branch expansion of various branches

--- |

  define i32 @a(double %a, double %b) {
  entry:
    %cmp = fcmp une double %a, %b
    br i1 %cmp, label %if.then, label %return

  if.then:
    call void asm sideeffect ".space 310680", "~{$1}"()
    ret i32 0

  return:
    ret i32 1
  }

  define i32 @b(double %a, double %b) {
  entry:
    %cmp = fcmp ueq double %a, %b
    br i1 %cmp, label %if.then, label %return

  if.then:
    call void asm sideeffect ".space 310680", "~{$1}"()
    ret i32 0

  return:
    ret i32 1
  }

...
---
name:            a
alignment:       4
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
failedISel:      false
tracksRegLiveness: true
registers:
liveins:
  - { reg: '$d6', virtual-reg: '' }
  - { reg: '$d7', virtual-reg: '' }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    1
  adjustsStack:    false
  hasCalls:        false
  stackProtector:  ''
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
  localFrameSize:  0
  savePoint:       ''
  restorePoint:    ''
fixedStack:
stack:
constants:
body:             |
  ; MM-LABEL: name: a
  ; MM: bb.0.entry:
  ; MM:   successors: %bb.2(0x50000000), %bb.1(0x30000000)
  ; MM:   FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
  ; MM:   BC1F_MM $fcc0, %bb.2, implicit-def $at {
  ; MM:     $zero = SLL_MM $zero, 0
  ; MM:   }
  ; MM: bb.1.entry:
  ; MM:   successors: %bb.3(0x80000000)
  ; MM:   J %bb.3, implicit-def $at {
  ; MM:     $zero = SLL_MM $zero, 0
  ; MM:   }
  ; MM: bb.2.if.then:
  ; MM:   INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
  ; MM:   $v0 = LI16_MM 0
  ; MM:   JRC16_MM undef $ra, implicit killed $v0
  ; MM: bb.3.return:
  ; MM:   $v0 = LI16_MM 1
  ; MM:   JRC16_MM undef $ra, implicit killed $v0
  ; PIC-LABEL: name: a
  ; PIC: bb.0.entry:
  ; PIC:   successors: %bb.3(0x50000000), %bb.1(0x30000000)
  ; PIC:   FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
  ; PIC:   BC1F_MM $fcc0, %bb.3, implicit-def $at {
  ; PIC:     $zero = SLL_MM $zero, 0
  ; PIC:   }
  ; PIC: bb.1.entry:
  ; PIC:   successors: %bb.2(0x80000000)
  ; PIC:   $sp = ADDiu $sp, -8
  ; PIC:   SW $ra, $sp, 0
  ; PIC:   $at = LONG_BRANCH_LUi target-flags(mips-abs-hi) %bb.4, %bb.2
  ; PIC:   BAL_BR_MM %bb.2, implicit-def $ra {
  ; PIC:     $at = LONG_BRANCH_ADDiu $at, target-flags(mips-abs-lo) %bb.4, %bb.2
  ; PIC:   }
  ; PIC: bb.2.entry:
  ; PIC:   successors: %bb.4(0x80000000)
  ; PIC:   $at = ADDu $ra, $at
  ; PIC:   $ra = LW $sp, 0
  ; PIC:   JR $at {
  ; PIC:     $sp = ADDiu $sp, 8
  ; PIC:   }
  ; PIC: bb.3.if.then:
  ; PIC:   INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
  ; PIC:   $v0 = LI16_MM 0
  ; PIC:   JRC16_MM undef $ra, implicit killed $v0
  ; PIC: bb.4.return:
  ; PIC:   $v0 = LI16_MM 1
  ; PIC:   JRC16_MM undef $ra, implicit killed $v0
  bb.0.entry:
    successors: %bb.1(0x50000000), %bb.2(0x30000000)
    liveins: $d6, $d7

    FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
    BC1T_MM killed $fcc0, %bb.2, implicit-def dead $at

  bb.1.if.then:
    INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
    $v0 = LI16_MM 0
    PseudoReturn undef $ra, implicit killed $v0

  bb.2.return:
    $v0 = LI16_MM 1
    PseudoReturn undef $ra, implicit killed $v0

...
---
name:            b
alignment:       4
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
failedISel:      false
tracksRegLiveness: true
registers:
liveins:
  - { reg: '$d6', virtual-reg: '' }
  - { reg: '$d7', virtual-reg: '' }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    1
  adjustsStack:    false
  hasCalls:        false
  stackProtector:  ''
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
  localFrameSize:  0
  savePoint:       ''
  restorePoint:    ''
fixedStack:
stack:
constants:
body:             |
  ; MM-LABEL: name: b
  ; MM: bb.0.entry:
  ; MM:   successors: %bb.2(0x30000000), %bb.1(0x50000000)
  ; MM:   FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
  ; MM:   BC1F_MM killed $fcc0, %bb.1, implicit-def dead $at {
  ; MM:     $zero = SLL_MM $zero, 0
  ; MM:   }
  ; MM: bb.1.return:
  ; MM:   $v0 = LI16_MM 1
  ; MM:   JRC16_MM undef $ra, implicit killed $v0
  ; MM: bb.2.if.then:
  ; MM:   INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
  ; MM:   $v0 = LI16_MM 0
  ; MM:   JRC16_MM undef $ra, implicit killed $v0
  ; PIC-LABEL: name: b
  ; PIC: bb.0.entry:
  ; PIC:   successors: %bb.2(0x30000000), %bb.1(0x50000000)
  ; PIC:   FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
  ; PIC:   BC1F_MM killed $fcc0, %bb.1, implicit-def dead $at {
  ; PIC:     $zero = SLL_MM $zero, 0
  ; PIC:   }
  ; PIC: bb.1.return:
  ; PIC:   $v0 = LI16_MM 1
  ; PIC:   JRC16_MM undef $ra, implicit killed $v0
  ; PIC: bb.2.if.then:
  ; PIC:   INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
  ; PIC:   $v0 = LI16_MM 0
  ; PIC:   JRC16_MM undef $ra, implicit killed $v0
  bb.0.entry:
    successors: %bb.1(0x30000000), %bb.2(0x50000000)
    liveins: $d6, $d7

    FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
    BC1F_MM killed $fcc0, %bb.2, implicit-def dead $at

  bb.2.return:
    $v0 = LI16_MM 1
    PseudoReturn undef $ra, implicit killed $v0

  bb.1.if.then:
    INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
    $v0 = LI16_MM 0
    PseudoReturn undef $ra, implicit killed $v0

...
