216 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# 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=MM3# 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=PIC4 5# Test the long branch expansion of various branches6 7--- |8 9 define i32 @a(double %a, double %b) {10 entry:11 %cmp = fcmp une double %a, %b12 br i1 %cmp, label %if.then, label %return13 14 if.then:15 call void asm sideeffect ".space 310680", "~{$1}"()16 ret i32 017 18 return:19 ret i32 120 }21 22 define i32 @b(double %a, double %b) {23 entry:24 %cmp = fcmp ueq double %a, %b25 br i1 %cmp, label %if.then, label %return26 27 if.then:28 call void asm sideeffect ".space 310680", "~{$1}"()29 ret i32 030 31 return:32 ret i32 133 }34 35...36---37name: a38alignment: 439exposesReturnsTwice: false40legalized: false41regBankSelected: false42selected: false43failedISel: false44tracksRegLiveness: true45registers:46liveins:47 - { reg: '$d6', virtual-reg: '' }48 - { reg: '$d7', virtual-reg: '' }49frameInfo:50 isFrameAddressTaken: false51 isReturnAddressTaken: false52 hasStackMap: false53 hasPatchPoint: false54 stackSize: 055 offsetAdjustment: 056 maxAlignment: 157 adjustsStack: false58 hasCalls: false59 stackProtector: ''60 maxCallFrameSize: 061 hasOpaqueSPAdjustment: false62 hasVAStart: false63 hasMustTailInVarArgFunc: false64 localFrameSize: 065 savePoint: []66 restorePoint: []67fixedStack:68stack:69constants:70body: |71 ; MM-LABEL: name: a72 ; MM: bb.0.entry:73 ; MM: successors: %bb.2(0x50000000), %bb.1(0x30000000)74 ; MM: FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc075 ; MM: BC1F_MM $fcc0, %bb.2, implicit-def $at {76 ; MM: $zero = SLL_MM $zero, 077 ; MM: }78 ; MM: bb.1.entry:79 ; MM: successors: %bb.3(0x80000000)80 ; MM: J %bb.3, implicit-def $at {81 ; MM: $zero = SLL_MM $zero, 082 ; MM: }83 ; MM: bb.2.if.then:84 ; MM: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at85 ; MM: $v0 = LI16_MM 086 ; MM: JRC16_MM undef $ra, implicit killed $v087 ; MM: bb.3.return:88 ; MM: $v0 = LI16_MM 189 ; MM: JRC16_MM undef $ra, implicit killed $v090 ; PIC-LABEL: name: a91 ; PIC: bb.0.entry:92 ; PIC: successors: %bb.3(0x50000000), %bb.1(0x30000000)93 ; PIC: FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc094 ; PIC: BC1F_MM $fcc0, %bb.3, implicit-def $at {95 ; PIC: $zero = SLL_MM $zero, 096 ; PIC: }97 ; PIC: bb.1.entry:98 ; PIC: successors: %bb.2(0x80000000)99 ; PIC: $sp = ADDiu $sp, -8100 ; PIC: SW $ra, $sp, 0101 ; PIC: $at = LONG_BRANCH_LUi target-flags(mips-abs-hi) %bb.4, %bb.2102 ; PIC: BAL_BR_MM %bb.2, implicit-def $ra {103 ; PIC: $at = LONG_BRANCH_ADDiu $at, target-flags(mips-abs-lo) %bb.4, %bb.2104 ; PIC: }105 ; PIC: bb.2.entry:106 ; PIC: successors: %bb.4(0x80000000)107 ; PIC: $at = ADDu $ra, $at108 ; PIC: $ra = LW $sp, 0109 ; PIC: JR $at {110 ; PIC: $sp = ADDiu $sp, 8111 ; PIC: }112 ; PIC: bb.3.if.then:113 ; PIC: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at114 ; PIC: $v0 = LI16_MM 0115 ; PIC: JRC16_MM undef $ra, implicit killed $v0116 ; PIC: bb.4.return:117 ; PIC: $v0 = LI16_MM 1118 ; PIC: JRC16_MM undef $ra, implicit killed $v0119 bb.0.entry:120 successors: %bb.1(0x50000000), %bb.2(0x30000000)121 liveins: $d6, $d7122 123 FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0124 BC1T_MM killed $fcc0, %bb.2, implicit-def dead $at125 126 bb.1.if.then:127 INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at128 $v0 = LI16_MM 0129 PseudoReturn undef $ra, implicit killed $v0130 131 bb.2.return:132 $v0 = LI16_MM 1133 PseudoReturn undef $ra, implicit killed $v0134 135...136---137name: b138alignment: 4139exposesReturnsTwice: false140legalized: false141regBankSelected: false142selected: false143failedISel: false144tracksRegLiveness: true145registers:146liveins:147 - { reg: '$d6', virtual-reg: '' }148 - { reg: '$d7', virtual-reg: '' }149frameInfo:150 isFrameAddressTaken: false151 isReturnAddressTaken: false152 hasStackMap: false153 hasPatchPoint: false154 stackSize: 0155 offsetAdjustment: 0156 maxAlignment: 1157 adjustsStack: false158 hasCalls: false159 stackProtector: ''160 maxCallFrameSize: 0161 hasOpaqueSPAdjustment: false162 hasVAStart: false163 hasMustTailInVarArgFunc: false164 localFrameSize: 0165 savePoint: []166 restorePoint: []167fixedStack:168stack:169constants:170body: |171 ; MM-LABEL: name: b172 ; MM: bb.0.entry:173 ; MM: successors: %bb.2(0x30000000), %bb.1(0x50000000)174 ; MM: FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0175 ; MM: BC1F_MM killed $fcc0, %bb.1, implicit-def dead $at {176 ; MM: $zero = SLL_MM $zero, 0177 ; MM: }178 ; MM: bb.1.return:179 ; MM: $v0 = LI16_MM 1180 ; MM: JRC16_MM undef $ra, implicit killed $v0181 ; MM: bb.2.if.then:182 ; MM: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at183 ; MM: $v0 = LI16_MM 0184 ; MM: JRC16_MM undef $ra, implicit killed $v0185 ; PIC-LABEL: name: b186 ; PIC: bb.0.entry:187 ; PIC: successors: %bb.2(0x30000000), %bb.1(0x50000000)188 ; PIC: FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0189 ; PIC: BC1F_MM killed $fcc0, %bb.1, implicit-def dead $at {190 ; PIC: $zero = SLL_MM $zero, 0191 ; PIC: }192 ; PIC: bb.1.return:193 ; PIC: $v0 = LI16_MM 1194 ; PIC: JRC16_MM undef $ra, implicit killed $v0195 ; PIC: bb.2.if.then:196 ; PIC: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at197 ; PIC: $v0 = LI16_MM 0198 ; PIC: JRC16_MM undef $ra, implicit killed $v0199 bb.0.entry:200 successors: %bb.1(0x30000000), %bb.2(0x50000000)201 liveins: $d6, $d7202 203 FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0204 BC1F_MM killed $fcc0, %bb.2, implicit-def dead $at205 206 bb.2.return:207 $v0 = LI16_MM 1208 PseudoReturn undef $ra, implicit killed $v0209 210 bb.1.if.then:211 INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at212 $v0 = LI16_MM 0213 PseudoReturn undef $ra, implicit killed $v0214 215...216