1144 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS323--- |4 5 define void @long_chain_ambiguous_i64_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {6 entry:7 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.18 9 pre.PHI.1: ; preds = %entry10 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.011 12 pre.PHI.1.0: ; preds = %pre.PHI.113 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.014 15 b.PHI.1.0: ; preds = %pre.PHI.1.016 %phi1.0 = load i64, ptr %a17 br label %b.PHI.118 19 b.PHI.1.1: ; preds = %pre.PHI.120 %phi1.1 = load i64, ptr %b21 br label %b.PHI.122 23 b.PHI.1.2: ; preds = %pre.PHI.1.024 %phi1.2 = load i64, ptr %c25 br label %b.PHI.126 27 b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.028 %phi1 = phi i64 [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]29 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.330 31 b.PHI.1.end: ; preds = %b.PHI.132 store i64 %phi1, ptr %result33 ret void34 35 pre.PHI.2: ; preds = %entry36 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.137 38 b.PHI.2.0: ; preds = %pre.PHI.239 %phi2.0 = load i64, ptr %a40 br label %b.PHI.241 42 b.PHI.2.1: ; preds = %pre.PHI.243 %phi2.1 = load i64, ptr %b44 br label %b.PHI.245 46 b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.047 %phi2 = phi i64 [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]48 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end49 50 b.PHI.2.end: ; preds = %b.PHI.251 store i64 %phi2, ptr %result52 ret void53 54 b.PHI.3: ; preds = %b.PHI.2, %b.PHI.155 %phi3 = phi i64 [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]56 %phi4 = phi i64 [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]57 %sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi458 %sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi359 store i64 %sel_3_1.2, ptr %result60 store i64 %phi3, ptr %result61 ret void62 }63 64 define void @long_chain_i64_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {65 entry:66 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.167 68 pre.PHI.1: ; preds = %entry69 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.070 71 pre.PHI.1.0: ; preds = %pre.PHI.172 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.073 74 b.PHI.1.0: ; preds = %pre.PHI.1.075 %phi1.0 = load i64, ptr %a76 br label %b.PHI.177 78 b.PHI.1.1: ; preds = %pre.PHI.179 %phi1.1 = load i64, ptr %b80 br label %b.PHI.181 82 b.PHI.1.2: ; preds = %pre.PHI.1.083 %phi1.2 = load i64, ptr %c84 br label %b.PHI.185 86 b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.087 %phi1 = phi i64 [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]88 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.389 90 b.PHI.1.end: ; preds = %b.PHI.191 store i64 %phi1, ptr %result92 ret void93 94 pre.PHI.2: ; preds = %entry95 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.196 97 b.PHI.2.0: ; preds = %pre.PHI.298 %phi2.0 = load i64, ptr %a99 br label %b.PHI.2100 101 b.PHI.2.1: ; preds = %pre.PHI.2102 %phi2.1 = load i64, ptr %b103 br label %b.PHI.2104 105 b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0106 %phi2 = phi i64 [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]107 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end108 109 b.PHI.2.end: ; preds = %b.PHI.2110 store i64 %phi2, ptr %result111 ret void112 113 b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1114 %phi3 = phi i64 [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]115 %phi4 = phi i64 [ %phi2, %b.PHI.2 ], [ 0, %b.PHI.1 ]116 %sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4117 %sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3118 store i64 %sel_3_1.2, ptr %result119 store i64 %phi3, ptr %result120 ret void121 }122 123 define void @long_chain_ambiguous_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {124 entry:125 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1126 127 pre.PHI.1: ; preds = %entry128 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0129 130 pre.PHI.1.0: ; preds = %pre.PHI.1131 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0132 133 b.PHI.1.0: ; preds = %pre.PHI.1.0134 %phi1.0 = load double, ptr %a135 br label %b.PHI.1136 137 b.PHI.1.1: ; preds = %pre.PHI.1138 %phi1.1 = load double, ptr %b139 br label %b.PHI.1140 141 b.PHI.1.2: ; preds = %pre.PHI.1.0142 %phi1.2 = load double, ptr %c143 br label %b.PHI.1144 145 b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0146 %phi1 = phi double [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]147 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3148 149 b.PHI.1.end: ; preds = %b.PHI.1150 store double %phi1, ptr %result151 ret void152 153 pre.PHI.2: ; preds = %entry154 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1155 156 b.PHI.2.0: ; preds = %pre.PHI.2157 %phi2.0 = load double, ptr %a158 br label %b.PHI.2159 160 b.PHI.2.1: ; preds = %pre.PHI.2161 %phi2.1 = load double, ptr %b162 br label %b.PHI.2163 164 b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0165 %phi2 = phi double [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]166 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end167 168 b.PHI.2.end: ; preds = %b.PHI.2169 store double %phi2, ptr %result170 ret void171 172 b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1173 %phi3 = phi double [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]174 %phi4 = phi double [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]175 %sel_1.2 = select i1 %cnd2, double %phi3, double %phi4176 %sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3177 store double %sel_3_1.2, ptr %result178 store double %phi3, ptr %result179 ret void180 }181 182 define void @long_chain_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {183 entry:184 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1185 186 pre.PHI.1: ; preds = %entry187 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0188 189 pre.PHI.1.0: ; preds = %pre.PHI.1190 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0191 192 b.PHI.1.0: ; preds = %pre.PHI.1.0193 %phi1.0 = load double, ptr %a194 br label %b.PHI.1195 196 b.PHI.1.1: ; preds = %pre.PHI.1197 %phi1.1 = load double, ptr %b198 br label %b.PHI.1199 200 b.PHI.1.2: ; preds = %pre.PHI.1.0201 %phi1.2 = load double, ptr %c202 br label %b.PHI.1203 204 b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0205 %phi1 = phi double [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]206 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3207 208 b.PHI.1.end: ; preds = %b.PHI.1209 store double %phi1, ptr %result210 ret void211 212 pre.PHI.2: ; preds = %entry213 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1214 215 b.PHI.2.0: ; preds = %pre.PHI.2216 %phi2.0 = load double, ptr %a217 br label %b.PHI.2218 219 b.PHI.2.1: ; preds = %pre.PHI.2220 %phi2.1 = load double, ptr %b221 br label %b.PHI.2222 223 b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0224 %phi2 = phi double [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]225 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end226 227 b.PHI.2.end: ; preds = %b.PHI.2228 store double %phi2, ptr %result229 ret void230 231 b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1232 %phi3 = phi double [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]233 %phi4 = phi double [ %phi2, %b.PHI.2 ], [ 0.000000e+00, %b.PHI.1 ]234 %sel_1.2 = select i1 %cnd2, double %phi3, double %phi4235 %sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3236 store double %sel_3_1.2, ptr %result237 store double %phi3, ptr %result238 ret void239 }240 241...242---243name: long_chain_ambiguous_i64_in_fpr244alignment: 4245legalized: true246tracksRegLiveness: true247fixedStack:248 - { id: 0, offset: 24, size: 4, alignment: 8, isImmutable: true }249 - { id: 1, offset: 20, size: 4, alignment: 4, isImmutable: true }250 - { id: 2, offset: 16, size: 4, alignment: 8, isImmutable: true }251body: |252 ; MIPS32-LABEL: name: long_chain_ambiguous_i64_in_fpr253 ; MIPS32: bb.0.entry:254 ; MIPS32-NEXT: successors: %bb.8(0x40000000), %bb.1(0x40000000)255 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a3256 ; MIPS32-NEXT: {{ $}}257 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0258 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1259 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2260 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:gprb(p0) = COPY $a3261 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.0262 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0) from %fixed-stack.0, align 8)263 ; MIPS32-NEXT: [[FRAME_INDEX1:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.1264 ; MIPS32-NEXT: [[LOAD1:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (p0) from %fixed-stack.1)265 ; MIPS32-NEXT: [[FRAME_INDEX2:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.2266 ; MIPS32-NEXT: [[LOAD2:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (load (p0) from %fixed-stack.2, align 8)267 ; MIPS32-NEXT: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1268 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)269 ; MIPS32-NEXT: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY4]], [[C]]270 ; MIPS32-NEXT: G_BRCOND [[AND]](s32), %bb.8271 ; MIPS32-NEXT: {{ $}}272 ; MIPS32-NEXT: bb.1.pre.PHI.1:273 ; MIPS32-NEXT: successors: %bb.4(0x40000000), %bb.2(0x40000000)274 ; MIPS32-NEXT: {{ $}}275 ; MIPS32-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1276 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)277 ; MIPS32-NEXT: [[AND1:%[0-9]+]]:gprb(s32) = G_AND [[COPY5]], [[C1]]278 ; MIPS32-NEXT: G_BRCOND [[AND1]](s32), %bb.4279 ; MIPS32-NEXT: {{ $}}280 ; MIPS32-NEXT: bb.2.pre.PHI.1.0:281 ; MIPS32-NEXT: successors: %bb.5(0x40000000), %bb.3(0x40000000)282 ; MIPS32-NEXT: {{ $}}283 ; MIPS32-NEXT: [[C2:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1284 ; MIPS32-NEXT: [[COPY6:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)285 ; MIPS32-NEXT: [[AND2:%[0-9]+]]:gprb(s32) = G_AND [[COPY6]], [[C2]]286 ; MIPS32-NEXT: G_BRCOND [[AND2]](s32), %bb.5287 ; MIPS32-NEXT: {{ $}}288 ; MIPS32-NEXT: bb.3.b.PHI.1.0:289 ; MIPS32-NEXT: successors: %bb.6(0x80000000)290 ; MIPS32-NEXT: {{ $}}291 ; MIPS32-NEXT: [[LOAD3:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)292 ; MIPS32-NEXT: G_BR %bb.6293 ; MIPS32-NEXT: {{ $}}294 ; MIPS32-NEXT: bb.4.b.PHI.1.1:295 ; MIPS32-NEXT: successors: %bb.6(0x80000000)296 ; MIPS32-NEXT: {{ $}}297 ; MIPS32-NEXT: [[LOAD4:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)298 ; MIPS32-NEXT: G_BR %bb.6299 ; MIPS32-NEXT: {{ $}}300 ; MIPS32-NEXT: bb.5.b.PHI.1.2:301 ; MIPS32-NEXT: successors: %bb.6(0x80000000)302 ; MIPS32-NEXT: {{ $}}303 ; MIPS32-NEXT: [[LOAD5:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD1]](p0) :: (load (s64) from %ir.c)304 ; MIPS32-NEXT: {{ $}}305 ; MIPS32-NEXT: bb.6.b.PHI.1:306 ; MIPS32-NEXT: successors: %bb.7(0x40000000), %bb.13(0x40000000)307 ; MIPS32-NEXT: {{ $}}308 ; MIPS32-NEXT: [[PHI:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD3]](s64), %bb.3, [[LOAD4]](s64), %bb.4, [[LOAD5]](s64), %bb.5309 ; MIPS32-NEXT: [[C3:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1310 ; MIPS32-NEXT: [[COPY7:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)311 ; MIPS32-NEXT: [[AND3:%[0-9]+]]:gprb(s32) = G_AND [[COPY7]], [[C3]]312 ; MIPS32-NEXT: G_BRCOND [[AND3]](s32), %bb.7313 ; MIPS32-NEXT: G_BR %bb.13314 ; MIPS32-NEXT: {{ $}}315 ; MIPS32-NEXT: bb.7.b.PHI.1.end:316 ; MIPS32-NEXT: G_STORE [[PHI]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)317 ; MIPS32-NEXT: RetRA318 ; MIPS32-NEXT: {{ $}}319 ; MIPS32-NEXT: bb.8.pre.PHI.2:320 ; MIPS32-NEXT: successors: %bb.9(0x40000000), %bb.10(0x40000000)321 ; MIPS32-NEXT: {{ $}}322 ; MIPS32-NEXT: [[C4:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1323 ; MIPS32-NEXT: [[COPY8:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)324 ; MIPS32-NEXT: [[AND4:%[0-9]+]]:gprb(s32) = G_AND [[COPY8]], [[C4]]325 ; MIPS32-NEXT: G_BRCOND [[AND4]](s32), %bb.9326 ; MIPS32-NEXT: G_BR %bb.10327 ; MIPS32-NEXT: {{ $}}328 ; MIPS32-NEXT: bb.9.b.PHI.2.0:329 ; MIPS32-NEXT: successors: %bb.11(0x80000000)330 ; MIPS32-NEXT: {{ $}}331 ; MIPS32-NEXT: [[LOAD6:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)332 ; MIPS32-NEXT: G_BR %bb.11333 ; MIPS32-NEXT: {{ $}}334 ; MIPS32-NEXT: bb.10.b.PHI.2.1:335 ; MIPS32-NEXT: successors: %bb.11(0x80000000)336 ; MIPS32-NEXT: {{ $}}337 ; MIPS32-NEXT: [[LOAD7:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)338 ; MIPS32-NEXT: {{ $}}339 ; MIPS32-NEXT: bb.11.b.PHI.2:340 ; MIPS32-NEXT: successors: %bb.13(0x40000000), %bb.12(0x40000000)341 ; MIPS32-NEXT: {{ $}}342 ; MIPS32-NEXT: [[PHI1:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD6]](s64), %bb.9, [[LOAD7]](s64), %bb.10343 ; MIPS32-NEXT: [[C5:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1344 ; MIPS32-NEXT: [[COPY9:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)345 ; MIPS32-NEXT: [[AND5:%[0-9]+]]:gprb(s32) = G_AND [[COPY9]], [[C5]]346 ; MIPS32-NEXT: G_BRCOND [[AND5]](s32), %bb.13347 ; MIPS32-NEXT: {{ $}}348 ; MIPS32-NEXT: bb.12.b.PHI.2.end:349 ; MIPS32-NEXT: G_STORE [[PHI1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)350 ; MIPS32-NEXT: RetRA351 ; MIPS32-NEXT: {{ $}}352 ; MIPS32-NEXT: bb.13.b.PHI.3:353 ; MIPS32-NEXT: [[PHI2:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6354 ; MIPS32-NEXT: [[PHI3:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6355 ; MIPS32-NEXT: [[C6:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1356 ; MIPS32-NEXT: [[COPY10:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)357 ; MIPS32-NEXT: [[AND6:%[0-9]+]]:gprb(s32) = G_AND [[COPY10]], [[C6]]358 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND6]](s32), [[PHI2]], [[PHI3]]359 ; MIPS32-NEXT: [[COPY11:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)360 ; MIPS32-NEXT: [[AND7:%[0-9]+]]:gprb(s32) = G_AND [[COPY11]], [[C6]]361 ; MIPS32-NEXT: [[SELECT1:%[0-9]+]]:fprb(s64) = G_SELECT [[AND7]](s32), [[SELECT]], [[PHI2]]362 ; MIPS32-NEXT: G_STORE [[SELECT1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)363 ; MIPS32-NEXT: G_STORE [[PHI2]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)364 ; MIPS32-NEXT: RetRA365 bb.1.entry:366 liveins: $a0, $a1, $a2, $a3367 368 %7:_(s32) = COPY $a0369 %8:_(s32) = COPY $a1370 %9:_(s32) = COPY $a2371 %3:_(p0) = COPY $a3372 %10:_(p0) = G_FRAME_INDEX %fixed-stack.2373 %4:_(p0) = G_LOAD %10(p0) :: (load (p0) from %fixed-stack.2, align 8)374 %11:_(p0) = G_FRAME_INDEX %fixed-stack.1375 %5:_(p0) = G_LOAD %11(p0) :: (load (p0) from %fixed-stack.1)376 %12:_(p0) = G_FRAME_INDEX %fixed-stack.0377 %6:_(p0) = G_LOAD %12(p0) :: (load (p0) from %fixed-stack.0, align 8)378 %32:_(s32) = G_CONSTANT i32 1379 %33:_(s32) = COPY %7(s32)380 %31:_(s32) = G_AND %33, %32381 G_BRCOND %31(s32), %bb.9382 383 bb.2.pre.PHI.1:384 %34:_(s32) = G_CONSTANT i32 1385 %35:_(s32) = COPY %8(s32)386 %30:_(s32) = G_AND %35, %34387 G_BRCOND %30(s32), %bb.5388 389 bb.3.pre.PHI.1.0:390 %36:_(s32) = G_CONSTANT i32 1391 %37:_(s32) = COPY %9(s32)392 %29:_(s32) = G_AND %37, %36393 G_BRCOND %29(s32), %bb.6394 395 bb.4.b.PHI.1.0:396 %13:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)397 G_BR %bb.7398 399 bb.5.b.PHI.1.1:400 %15:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)401 G_BR %bb.7402 403 bb.6.b.PHI.1.2:404 %14:_(s64) = G_LOAD %5(p0) :: (load (s64) from %ir.c)405 406 bb.7.b.PHI.1:407 %16:_(s64) = G_PHI %13(s64), %bb.4, %15(s64), %bb.5, %14(s64), %bb.6408 %38:_(s32) = G_CONSTANT i32 1409 %39:_(s32) = COPY %9(s32)410 %28:_(s32) = G_AND %39, %38411 G_BRCOND %28(s32), %bb.8412 G_BR %bb.14413 414 bb.8.b.PHI.1.end:415 G_STORE %16(s64), %6(p0) :: (store (s64) into %ir.result)416 RetRA417 418 bb.9.pre.PHI.2:419 %40:_(s32) = G_CONSTANT i32 1420 %41:_(s32) = COPY %7(s32)421 %27:_(s32) = G_AND %41, %40422 G_BRCOND %27(s32), %bb.10423 G_BR %bb.11424 425 bb.10.b.PHI.2.0:426 %18:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)427 G_BR %bb.12428 429 bb.11.b.PHI.2.1:430 %17:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)431 432 bb.12.b.PHI.2:433 %19:_(s64) = G_PHI %18(s64), %bb.10, %17(s64), %bb.11434 %42:_(s32) = G_CONSTANT i32 1435 %43:_(s32) = COPY %8(s32)436 %26:_(s32) = G_AND %43, %42437 G_BRCOND %26(s32), %bb.14438 439 bb.13.b.PHI.2.end:440 G_STORE %19(s64), %6(p0) :: (store (s64) into %ir.result)441 RetRA442 443 bb.14.b.PHI.3:444 %20:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7445 %21:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7446 %44:_(s32) = G_CONSTANT i32 1447 %45:_(s32) = COPY %9(s32)448 %25:_(s32) = G_AND %45, %44449 %22:_(s64) = G_SELECT %25(s32), %20, %21450 %46:_(s32) = COPY %8(s32)451 %24:_(s32) = G_AND %46, %44452 %23:_(s64) = G_SELECT %24(s32), %22, %20453 G_STORE %23(s64), %6(p0) :: (store (s64) into %ir.result)454 G_STORE %20(s64), %6(p0) :: (store (s64) into %ir.result)455 RetRA456 457...458---459name: long_chain_i64_in_gpr460alignment: 4461legalized: true462tracksRegLiveness: true463fixedStack:464 - { id: 0, offset: 24, size: 4, alignment: 8, isImmutable: true }465 - { id: 1, offset: 20, size: 4, alignment: 4, isImmutable: true }466 - { id: 2, offset: 16, size: 4, alignment: 8, isImmutable: true }467body: |468 ; MIPS32-LABEL: name: long_chain_i64_in_gpr469 ; MIPS32: bb.0.entry:470 ; MIPS32-NEXT: successors: %bb.8(0x40000000), %bb.1(0x40000000)471 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a3472 ; MIPS32-NEXT: {{ $}}473 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0474 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1475 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2476 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:gprb(p0) = COPY $a3477 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.0478 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0) from %fixed-stack.0, align 8)479 ; MIPS32-NEXT: [[FRAME_INDEX1:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.1480 ; MIPS32-NEXT: [[LOAD1:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (p0) from %fixed-stack.1)481 ; MIPS32-NEXT: [[FRAME_INDEX2:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.2482 ; MIPS32-NEXT: [[LOAD2:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (load (p0) from %fixed-stack.2, align 8)483 ; MIPS32-NEXT: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0484 ; MIPS32-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1485 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)486 ; MIPS32-NEXT: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY4]], [[C1]]487 ; MIPS32-NEXT: G_BRCOND [[AND]](s32), %bb.8488 ; MIPS32-NEXT: {{ $}}489 ; MIPS32-NEXT: bb.1.pre.PHI.1:490 ; MIPS32-NEXT: successors: %bb.4(0x40000000), %bb.2(0x40000000)491 ; MIPS32-NEXT: {{ $}}492 ; MIPS32-NEXT: [[C2:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1493 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)494 ; MIPS32-NEXT: [[AND1:%[0-9]+]]:gprb(s32) = G_AND [[COPY5]], [[C2]]495 ; MIPS32-NEXT: G_BRCOND [[AND1]](s32), %bb.4496 ; MIPS32-NEXT: {{ $}}497 ; MIPS32-NEXT: bb.2.pre.PHI.1.0:498 ; MIPS32-NEXT: successors: %bb.5(0x40000000), %bb.3(0x40000000)499 ; MIPS32-NEXT: {{ $}}500 ; MIPS32-NEXT: [[C3:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1501 ; MIPS32-NEXT: [[COPY6:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)502 ; MIPS32-NEXT: [[AND2:%[0-9]+]]:gprb(s32) = G_AND [[COPY6]], [[C3]]503 ; MIPS32-NEXT: G_BRCOND [[AND2]](s32), %bb.5504 ; MIPS32-NEXT: {{ $}}505 ; MIPS32-NEXT: bb.3.b.PHI.1.0:506 ; MIPS32-NEXT: successors: %bb.6(0x80000000)507 ; MIPS32-NEXT: {{ $}}508 ; MIPS32-NEXT: [[LOAD3:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY3]](p0) :: (load (s32) from %ir.a, align 8)509 ; MIPS32-NEXT: [[C4:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4510 ; MIPS32-NEXT: [[PTR_ADD:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[COPY3]], [[C4]](s32)511 ; MIPS32-NEXT: [[LOAD4:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from %ir.a + 4, basealign 8)512 ; MIPS32-NEXT: G_BR %bb.6513 ; MIPS32-NEXT: {{ $}}514 ; MIPS32-NEXT: bb.4.b.PHI.1.1:515 ; MIPS32-NEXT: successors: %bb.6(0x80000000)516 ; MIPS32-NEXT: {{ $}}517 ; MIPS32-NEXT: [[LOAD5:%[0-9]+]]:gprb(s32) = G_LOAD [[LOAD]](p0) :: (load (s32) from %ir.b, align 8)518 ; MIPS32-NEXT: [[C5:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4519 ; MIPS32-NEXT: [[PTR_ADD1:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[LOAD]], [[C5]](s32)520 ; MIPS32-NEXT: [[LOAD6:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32) from %ir.b + 4, basealign 8)521 ; MIPS32-NEXT: G_BR %bb.6522 ; MIPS32-NEXT: {{ $}}523 ; MIPS32-NEXT: bb.5.b.PHI.1.2:524 ; MIPS32-NEXT: successors: %bb.6(0x80000000)525 ; MIPS32-NEXT: {{ $}}526 ; MIPS32-NEXT: [[LOAD7:%[0-9]+]]:gprb(s32) = G_LOAD [[LOAD1]](p0) :: (load (s32) from %ir.c, align 8)527 ; MIPS32-NEXT: [[C6:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4528 ; MIPS32-NEXT: [[PTR_ADD2:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[LOAD1]], [[C6]](s32)529 ; MIPS32-NEXT: [[LOAD8:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD2]](p0) :: (load (s32) from %ir.c + 4, basealign 8)530 ; MIPS32-NEXT: {{ $}}531 ; MIPS32-NEXT: bb.6.b.PHI.1:532 ; MIPS32-NEXT: successors: %bb.7(0x40000000), %bb.13(0x40000000)533 ; MIPS32-NEXT: {{ $}}534 ; MIPS32-NEXT: [[PHI:%[0-9]+]]:gprb(s32) = G_PHI [[LOAD3]](s32), %bb.3, [[LOAD5]](s32), %bb.4, [[LOAD7]](s32), %bb.5535 ; MIPS32-NEXT: [[PHI1:%[0-9]+]]:gprb(s32) = G_PHI [[LOAD4]](s32), %bb.3, [[LOAD6]](s32), %bb.4, [[LOAD8]](s32), %bb.5536 ; MIPS32-NEXT: [[C7:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1537 ; MIPS32-NEXT: [[COPY7:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)538 ; MIPS32-NEXT: [[AND3:%[0-9]+]]:gprb(s32) = G_AND [[COPY7]], [[C7]]539 ; MIPS32-NEXT: G_BRCOND [[AND3]](s32), %bb.7540 ; MIPS32-NEXT: G_BR %bb.13541 ; MIPS32-NEXT: {{ $}}542 ; MIPS32-NEXT: bb.7.b.PHI.1.end:543 ; MIPS32-NEXT: G_STORE [[PHI]](s32), [[LOAD2]](p0) :: (store (s32) into %ir.result, align 8)544 ; MIPS32-NEXT: [[C8:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4545 ; MIPS32-NEXT: [[PTR_ADD3:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[LOAD2]], [[C8]](s32)546 ; MIPS32-NEXT: G_STORE [[PHI1]](s32), [[PTR_ADD3]](p0) :: (store (s32) into %ir.result + 4, basealign 8)547 ; MIPS32-NEXT: RetRA548 ; MIPS32-NEXT: {{ $}}549 ; MIPS32-NEXT: bb.8.pre.PHI.2:550 ; MIPS32-NEXT: successors: %bb.9(0x40000000), %bb.10(0x40000000)551 ; MIPS32-NEXT: {{ $}}552 ; MIPS32-NEXT: [[C9:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1553 ; MIPS32-NEXT: [[COPY8:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)554 ; MIPS32-NEXT: [[AND4:%[0-9]+]]:gprb(s32) = G_AND [[COPY8]], [[C9]]555 ; MIPS32-NEXT: G_BRCOND [[AND4]](s32), %bb.9556 ; MIPS32-NEXT: G_BR %bb.10557 ; MIPS32-NEXT: {{ $}}558 ; MIPS32-NEXT: bb.9.b.PHI.2.0:559 ; MIPS32-NEXT: successors: %bb.11(0x80000000)560 ; MIPS32-NEXT: {{ $}}561 ; MIPS32-NEXT: [[LOAD9:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY3]](p0) :: (load (s32) from %ir.a, align 8)562 ; MIPS32-NEXT: [[C10:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4563 ; MIPS32-NEXT: [[PTR_ADD4:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[COPY3]], [[C10]](s32)564 ; MIPS32-NEXT: [[LOAD10:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD4]](p0) :: (load (s32) from %ir.a + 4, basealign 8)565 ; MIPS32-NEXT: G_BR %bb.11566 ; MIPS32-NEXT: {{ $}}567 ; MIPS32-NEXT: bb.10.b.PHI.2.1:568 ; MIPS32-NEXT: successors: %bb.11(0x80000000)569 ; MIPS32-NEXT: {{ $}}570 ; MIPS32-NEXT: [[LOAD11:%[0-9]+]]:gprb(s32) = G_LOAD [[LOAD]](p0) :: (load (s32) from %ir.b, align 8)571 ; MIPS32-NEXT: [[C11:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4572 ; MIPS32-NEXT: [[PTR_ADD5:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[LOAD]], [[C11]](s32)573 ; MIPS32-NEXT: [[LOAD12:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD5]](p0) :: (load (s32) from %ir.b + 4, basealign 8)574 ; MIPS32-NEXT: {{ $}}575 ; MIPS32-NEXT: bb.11.b.PHI.2:576 ; MIPS32-NEXT: successors: %bb.13(0x40000000), %bb.12(0x40000000)577 ; MIPS32-NEXT: {{ $}}578 ; MIPS32-NEXT: [[PHI2:%[0-9]+]]:gprb(s32) = G_PHI [[LOAD9]](s32), %bb.9, [[LOAD11]](s32), %bb.10579 ; MIPS32-NEXT: [[PHI3:%[0-9]+]]:gprb(s32) = G_PHI [[LOAD10]](s32), %bb.9, [[LOAD12]](s32), %bb.10580 ; MIPS32-NEXT: [[C12:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1581 ; MIPS32-NEXT: [[COPY9:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)582 ; MIPS32-NEXT: [[AND5:%[0-9]+]]:gprb(s32) = G_AND [[COPY9]], [[C12]]583 ; MIPS32-NEXT: G_BRCOND [[AND5]](s32), %bb.13584 ; MIPS32-NEXT: {{ $}}585 ; MIPS32-NEXT: bb.12.b.PHI.2.end:586 ; MIPS32-NEXT: G_STORE [[PHI2]](s32), [[LOAD2]](p0) :: (store (s32) into %ir.result, align 8)587 ; MIPS32-NEXT: [[C13:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4588 ; MIPS32-NEXT: [[PTR_ADD6:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[LOAD2]], [[C13]](s32)589 ; MIPS32-NEXT: G_STORE [[PHI3]](s32), [[PTR_ADD6]](p0) :: (store (s32) into %ir.result + 4, basealign 8)590 ; MIPS32-NEXT: RetRA591 ; MIPS32-NEXT: {{ $}}592 ; MIPS32-NEXT: bb.13.b.PHI.3:593 ; MIPS32-NEXT: [[PHI4:%[0-9]+]]:gprb(s32) = G_PHI [[PHI2]](s32), %bb.11, [[PHI]](s32), %bb.6594 ; MIPS32-NEXT: [[PHI5:%[0-9]+]]:gprb(s32) = G_PHI [[PHI3]](s32), %bb.11, [[PHI1]](s32), %bb.6595 ; MIPS32-NEXT: [[PHI6:%[0-9]+]]:gprb(s32) = G_PHI [[PHI2]](s32), %bb.11, [[C]](s32), %bb.6596 ; MIPS32-NEXT: [[PHI7:%[0-9]+]]:gprb(s32) = G_PHI [[PHI3]](s32), %bb.11, [[C]](s32), %bb.6597 ; MIPS32-NEXT: [[C14:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1598 ; MIPS32-NEXT: [[COPY10:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)599 ; MIPS32-NEXT: [[AND6:%[0-9]+]]:gprb(s32) = G_AND [[COPY10]], [[C14]]600 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:gprb(s32) = G_SELECT [[AND6]](s32), [[PHI4]], [[PHI6]]601 ; MIPS32-NEXT: [[SELECT1:%[0-9]+]]:gprb(s32) = G_SELECT [[AND6]](s32), [[PHI5]], [[PHI7]]602 ; MIPS32-NEXT: [[COPY11:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)603 ; MIPS32-NEXT: [[AND7:%[0-9]+]]:gprb(s32) = G_AND [[COPY11]], [[C14]]604 ; MIPS32-NEXT: [[SELECT2:%[0-9]+]]:gprb(s32) = G_SELECT [[AND7]](s32), [[SELECT]], [[PHI4]]605 ; MIPS32-NEXT: [[SELECT3:%[0-9]+]]:gprb(s32) = G_SELECT [[AND7]](s32), [[SELECT1]], [[PHI5]]606 ; MIPS32-NEXT: G_STORE [[SELECT2]](s32), [[LOAD2]](p0) :: (store (s32) into %ir.result, align 8)607 ; MIPS32-NEXT: [[C15:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4608 ; MIPS32-NEXT: [[PTR_ADD7:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[LOAD2]], [[C15]](s32)609 ; MIPS32-NEXT: G_STORE [[SELECT3]](s32), [[PTR_ADD7]](p0) :: (store (s32) into %ir.result + 4, basealign 8)610 ; MIPS32-NEXT: G_STORE [[PHI4]](s32), [[LOAD2]](p0) :: (store (s32) into %ir.result, align 8)611 ; MIPS32-NEXT: [[C16:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4612 ; MIPS32-NEXT: [[PTR_ADD8:%[0-9]+]]:gprb(p0) = nuw inbounds G_PTR_ADD [[LOAD2]], [[C16]](s32)613 ; MIPS32-NEXT: G_STORE [[PHI5]](s32), [[PTR_ADD8]](p0) :: (store (s32) into %ir.result + 4, basealign 8)614 ; MIPS32-NEXT: RetRA615 bb.1.entry:616 liveins: $a0, $a1, $a2, $a3617 618 %7:_(s32) = COPY $a0619 %8:_(s32) = COPY $a1620 %9:_(s32) = COPY $a2621 %3:_(p0) = COPY $a3622 %10:_(p0) = G_FRAME_INDEX %fixed-stack.2623 %4:_(p0) = G_LOAD %10(p0) :: (load (p0) from %fixed-stack.2, align 8)624 %11:_(p0) = G_FRAME_INDEX %fixed-stack.1625 %5:_(p0) = G_LOAD %11(p0) :: (load (p0) from %fixed-stack.1)626 %12:_(p0) = G_FRAME_INDEX %fixed-stack.0627 %6:_(p0) = G_LOAD %12(p0) :: (load (p0) from %fixed-stack.0, align 8)628 %33:_(s32) = G_CONSTANT i32 0629 %24:_(s64) = G_MERGE_VALUES %33(s32), %33(s32)630 %34:_(s32) = G_CONSTANT i32 1631 %35:_(s32) = COPY %7(s32)632 %32:_(s32) = G_AND %35, %34633 G_BRCOND %32(s32), %bb.9634 635 bb.2.pre.PHI.1:636 %36:_(s32) = G_CONSTANT i32 1637 %37:_(s32) = COPY %8(s32)638 %31:_(s32) = G_AND %37, %36639 G_BRCOND %31(s32), %bb.5640 641 bb.3.pre.PHI.1.0:642 %38:_(s32) = G_CONSTANT i32 1643 %39:_(s32) = COPY %9(s32)644 %30:_(s32) = G_AND %39, %38645 G_BRCOND %30(s32), %bb.6646 647 bb.4.b.PHI.1.0:648 %13:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)649 G_BR %bb.7650 651 bb.5.b.PHI.1.1:652 %15:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)653 G_BR %bb.7654 655 bb.6.b.PHI.1.2:656 %14:_(s64) = G_LOAD %5(p0) :: (load (s64) from %ir.c)657 658 bb.7.b.PHI.1:659 %16:_(s64) = G_PHI %13(s64), %bb.4, %15(s64), %bb.5, %14(s64), %bb.6660 %40:_(s32) = G_CONSTANT i32 1661 %41:_(s32) = COPY %9(s32)662 %29:_(s32) = G_AND %41, %40663 G_BRCOND %29(s32), %bb.8664 G_BR %bb.14665 666 bb.8.b.PHI.1.end:667 G_STORE %16(s64), %6(p0) :: (store (s64) into %ir.result)668 RetRA669 670 bb.9.pre.PHI.2:671 %42:_(s32) = G_CONSTANT i32 1672 %43:_(s32) = COPY %7(s32)673 %28:_(s32) = G_AND %43, %42674 G_BRCOND %28(s32), %bb.10675 G_BR %bb.11676 677 bb.10.b.PHI.2.0:678 %18:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)679 G_BR %bb.12680 681 bb.11.b.PHI.2.1:682 %17:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)683 684 bb.12.b.PHI.2:685 %19:_(s64) = G_PHI %18(s64), %bb.10, %17(s64), %bb.11686 %44:_(s32) = G_CONSTANT i32 1687 %45:_(s32) = COPY %8(s32)688 %27:_(s32) = G_AND %45, %44689 G_BRCOND %27(s32), %bb.14690 691 bb.13.b.PHI.2.end:692 G_STORE %19(s64), %6(p0) :: (store (s64) into %ir.result)693 RetRA694 695 bb.14.b.PHI.3:696 %20:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7697 %21:_(s64) = G_PHI %19(s64), %bb.12, %24(s64), %bb.7698 %46:_(s32) = G_CONSTANT i32 1699 %47:_(s32) = COPY %9(s32)700 %26:_(s32) = G_AND %47, %46701 %22:_(s64) = G_SELECT %26(s32), %20, %21702 %48:_(s32) = COPY %8(s32)703 %25:_(s32) = G_AND %48, %46704 %23:_(s64) = G_SELECT %25(s32), %22, %20705 G_STORE %23(s64), %6(p0) :: (store (s64) into %ir.result)706 G_STORE %20(s64), %6(p0) :: (store (s64) into %ir.result)707 RetRA708 709...710---711name: long_chain_ambiguous_double_in_fpr712alignment: 4713legalized: true714tracksRegLiveness: true715fixedStack:716 - { id: 0, offset: 24, size: 4, alignment: 8, isImmutable: true }717 - { id: 1, offset: 20, size: 4, alignment: 4, isImmutable: true }718 - { id: 2, offset: 16, size: 4, alignment: 8, isImmutable: true }719body: |720 ; MIPS32-LABEL: name: long_chain_ambiguous_double_in_fpr721 ; MIPS32: bb.0.entry:722 ; MIPS32-NEXT: successors: %bb.8(0x40000000), %bb.1(0x40000000)723 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a3724 ; MIPS32-NEXT: {{ $}}725 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0726 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1727 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2728 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:gprb(p0) = COPY $a3729 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.0730 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0) from %fixed-stack.0, align 8)731 ; MIPS32-NEXT: [[FRAME_INDEX1:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.1732 ; MIPS32-NEXT: [[LOAD1:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (p0) from %fixed-stack.1)733 ; MIPS32-NEXT: [[FRAME_INDEX2:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.2734 ; MIPS32-NEXT: [[LOAD2:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (load (p0) from %fixed-stack.2, align 8)735 ; MIPS32-NEXT: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1736 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)737 ; MIPS32-NEXT: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY4]], [[C]]738 ; MIPS32-NEXT: G_BRCOND [[AND]](s32), %bb.8739 ; MIPS32-NEXT: {{ $}}740 ; MIPS32-NEXT: bb.1.pre.PHI.1:741 ; MIPS32-NEXT: successors: %bb.4(0x40000000), %bb.2(0x40000000)742 ; MIPS32-NEXT: {{ $}}743 ; MIPS32-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1744 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)745 ; MIPS32-NEXT: [[AND1:%[0-9]+]]:gprb(s32) = G_AND [[COPY5]], [[C1]]746 ; MIPS32-NEXT: G_BRCOND [[AND1]](s32), %bb.4747 ; MIPS32-NEXT: {{ $}}748 ; MIPS32-NEXT: bb.2.pre.PHI.1.0:749 ; MIPS32-NEXT: successors: %bb.5(0x40000000), %bb.3(0x40000000)750 ; MIPS32-NEXT: {{ $}}751 ; MIPS32-NEXT: [[C2:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1752 ; MIPS32-NEXT: [[COPY6:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)753 ; MIPS32-NEXT: [[AND2:%[0-9]+]]:gprb(s32) = G_AND [[COPY6]], [[C2]]754 ; MIPS32-NEXT: G_BRCOND [[AND2]](s32), %bb.5755 ; MIPS32-NEXT: {{ $}}756 ; MIPS32-NEXT: bb.3.b.PHI.1.0:757 ; MIPS32-NEXT: successors: %bb.6(0x80000000)758 ; MIPS32-NEXT: {{ $}}759 ; MIPS32-NEXT: [[LOAD3:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)760 ; MIPS32-NEXT: G_BR %bb.6761 ; MIPS32-NEXT: {{ $}}762 ; MIPS32-NEXT: bb.4.b.PHI.1.1:763 ; MIPS32-NEXT: successors: %bb.6(0x80000000)764 ; MIPS32-NEXT: {{ $}}765 ; MIPS32-NEXT: [[LOAD4:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)766 ; MIPS32-NEXT: G_BR %bb.6767 ; MIPS32-NEXT: {{ $}}768 ; MIPS32-NEXT: bb.5.b.PHI.1.2:769 ; MIPS32-NEXT: successors: %bb.6(0x80000000)770 ; MIPS32-NEXT: {{ $}}771 ; MIPS32-NEXT: [[LOAD5:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD1]](p0) :: (load (s64) from %ir.c)772 ; MIPS32-NEXT: {{ $}}773 ; MIPS32-NEXT: bb.6.b.PHI.1:774 ; MIPS32-NEXT: successors: %bb.7(0x40000000), %bb.13(0x40000000)775 ; MIPS32-NEXT: {{ $}}776 ; MIPS32-NEXT: [[PHI:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD3]](s64), %bb.3, [[LOAD4]](s64), %bb.4, [[LOAD5]](s64), %bb.5777 ; MIPS32-NEXT: [[C3:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1778 ; MIPS32-NEXT: [[COPY7:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)779 ; MIPS32-NEXT: [[AND3:%[0-9]+]]:gprb(s32) = G_AND [[COPY7]], [[C3]]780 ; MIPS32-NEXT: G_BRCOND [[AND3]](s32), %bb.7781 ; MIPS32-NEXT: G_BR %bb.13782 ; MIPS32-NEXT: {{ $}}783 ; MIPS32-NEXT: bb.7.b.PHI.1.end:784 ; MIPS32-NEXT: G_STORE [[PHI]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)785 ; MIPS32-NEXT: RetRA786 ; MIPS32-NEXT: {{ $}}787 ; MIPS32-NEXT: bb.8.pre.PHI.2:788 ; MIPS32-NEXT: successors: %bb.9(0x40000000), %bb.10(0x40000000)789 ; MIPS32-NEXT: {{ $}}790 ; MIPS32-NEXT: [[C4:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1791 ; MIPS32-NEXT: [[COPY8:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)792 ; MIPS32-NEXT: [[AND4:%[0-9]+]]:gprb(s32) = G_AND [[COPY8]], [[C4]]793 ; MIPS32-NEXT: G_BRCOND [[AND4]](s32), %bb.9794 ; MIPS32-NEXT: G_BR %bb.10795 ; MIPS32-NEXT: {{ $}}796 ; MIPS32-NEXT: bb.9.b.PHI.2.0:797 ; MIPS32-NEXT: successors: %bb.11(0x80000000)798 ; MIPS32-NEXT: {{ $}}799 ; MIPS32-NEXT: [[LOAD6:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)800 ; MIPS32-NEXT: G_BR %bb.11801 ; MIPS32-NEXT: {{ $}}802 ; MIPS32-NEXT: bb.10.b.PHI.2.1:803 ; MIPS32-NEXT: successors: %bb.11(0x80000000)804 ; MIPS32-NEXT: {{ $}}805 ; MIPS32-NEXT: [[LOAD7:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)806 ; MIPS32-NEXT: {{ $}}807 ; MIPS32-NEXT: bb.11.b.PHI.2:808 ; MIPS32-NEXT: successors: %bb.13(0x40000000), %bb.12(0x40000000)809 ; MIPS32-NEXT: {{ $}}810 ; MIPS32-NEXT: [[PHI1:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD6]](s64), %bb.9, [[LOAD7]](s64), %bb.10811 ; MIPS32-NEXT: [[C5:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1812 ; MIPS32-NEXT: [[COPY9:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)813 ; MIPS32-NEXT: [[AND5:%[0-9]+]]:gprb(s32) = G_AND [[COPY9]], [[C5]]814 ; MIPS32-NEXT: G_BRCOND [[AND5]](s32), %bb.13815 ; MIPS32-NEXT: {{ $}}816 ; MIPS32-NEXT: bb.12.b.PHI.2.end:817 ; MIPS32-NEXT: G_STORE [[PHI1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)818 ; MIPS32-NEXT: RetRA819 ; MIPS32-NEXT: {{ $}}820 ; MIPS32-NEXT: bb.13.b.PHI.3:821 ; MIPS32-NEXT: [[PHI2:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6822 ; MIPS32-NEXT: [[PHI3:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6823 ; MIPS32-NEXT: [[C6:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1824 ; MIPS32-NEXT: [[COPY10:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)825 ; MIPS32-NEXT: [[AND6:%[0-9]+]]:gprb(s32) = G_AND [[COPY10]], [[C6]]826 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND6]](s32), [[PHI2]], [[PHI3]]827 ; MIPS32-NEXT: [[COPY11:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)828 ; MIPS32-NEXT: [[AND7:%[0-9]+]]:gprb(s32) = G_AND [[COPY11]], [[C6]]829 ; MIPS32-NEXT: [[SELECT1:%[0-9]+]]:fprb(s64) = G_SELECT [[AND7]](s32), [[SELECT]], [[PHI2]]830 ; MIPS32-NEXT: G_STORE [[SELECT1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)831 ; MIPS32-NEXT: G_STORE [[PHI2]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)832 ; MIPS32-NEXT: RetRA833 bb.1.entry:834 liveins: $a0, $a1, $a2, $a3835 836 %7:_(s32) = COPY $a0837 %8:_(s32) = COPY $a1838 %9:_(s32) = COPY $a2839 %3:_(p0) = COPY $a3840 %10:_(p0) = G_FRAME_INDEX %fixed-stack.2841 %4:_(p0) = G_LOAD %10(p0) :: (load (p0) from %fixed-stack.2, align 8)842 %11:_(p0) = G_FRAME_INDEX %fixed-stack.1843 %5:_(p0) = G_LOAD %11(p0) :: (load (p0) from %fixed-stack.1)844 %12:_(p0) = G_FRAME_INDEX %fixed-stack.0845 %6:_(p0) = G_LOAD %12(p0) :: (load (p0) from %fixed-stack.0, align 8)846 %32:_(s32) = G_CONSTANT i32 1847 %33:_(s32) = COPY %7(s32)848 %31:_(s32) = G_AND %33, %32849 G_BRCOND %31(s32), %bb.9850 851 bb.2.pre.PHI.1:852 %34:_(s32) = G_CONSTANT i32 1853 %35:_(s32) = COPY %8(s32)854 %30:_(s32) = G_AND %35, %34855 G_BRCOND %30(s32), %bb.5856 857 bb.3.pre.PHI.1.0:858 %36:_(s32) = G_CONSTANT i32 1859 %37:_(s32) = COPY %9(s32)860 %29:_(s32) = G_AND %37, %36861 G_BRCOND %29(s32), %bb.6862 863 bb.4.b.PHI.1.0:864 %13:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)865 G_BR %bb.7866 867 bb.5.b.PHI.1.1:868 %15:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)869 G_BR %bb.7870 871 bb.6.b.PHI.1.2:872 %14:_(s64) = G_LOAD %5(p0) :: (load (s64) from %ir.c)873 874 bb.7.b.PHI.1:875 %16:_(s64) = G_PHI %13(s64), %bb.4, %15(s64), %bb.5, %14(s64), %bb.6876 %38:_(s32) = G_CONSTANT i32 1877 %39:_(s32) = COPY %9(s32)878 %28:_(s32) = G_AND %39, %38879 G_BRCOND %28(s32), %bb.8880 G_BR %bb.14881 882 bb.8.b.PHI.1.end:883 G_STORE %16(s64), %6(p0) :: (store (s64) into %ir.result)884 RetRA885 886 bb.9.pre.PHI.2:887 %40:_(s32) = G_CONSTANT i32 1888 %41:_(s32) = COPY %7(s32)889 %27:_(s32) = G_AND %41, %40890 G_BRCOND %27(s32), %bb.10891 G_BR %bb.11892 893 bb.10.b.PHI.2.0:894 %18:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)895 G_BR %bb.12896 897 bb.11.b.PHI.2.1:898 %17:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)899 900 bb.12.b.PHI.2:901 %19:_(s64) = G_PHI %18(s64), %bb.10, %17(s64), %bb.11902 %42:_(s32) = G_CONSTANT i32 1903 %43:_(s32) = COPY %8(s32)904 %26:_(s32) = G_AND %43, %42905 G_BRCOND %26(s32), %bb.14906 907 bb.13.b.PHI.2.end:908 G_STORE %19(s64), %6(p0) :: (store (s64) into %ir.result)909 RetRA910 911 bb.14.b.PHI.3:912 %20:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7913 %21:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7914 %44:_(s32) = G_CONSTANT i32 1915 %45:_(s32) = COPY %9(s32)916 %25:_(s32) = G_AND %45, %44917 %22:_(s64) = G_SELECT %25(s32), %20, %21918 %46:_(s32) = COPY %8(s32)919 %24:_(s32) = G_AND %46, %44920 %23:_(s64) = G_SELECT %24(s32), %22, %20921 G_STORE %23(s64), %6(p0) :: (store (s64) into %ir.result)922 G_STORE %20(s64), %6(p0) :: (store (s64) into %ir.result)923 RetRA924 925...926---927name: long_chain_double_in_fpr928alignment: 4929legalized: true930tracksRegLiveness: true931fixedStack:932 - { id: 0, offset: 24, size: 4, alignment: 8, isImmutable: true }933 - { id: 1, offset: 20, size: 4, alignment: 4, isImmutable: true }934 - { id: 2, offset: 16, size: 4, alignment: 8, isImmutable: true }935body: |936 ; MIPS32-LABEL: name: long_chain_double_in_fpr937 ; MIPS32: bb.0.entry:938 ; MIPS32-NEXT: successors: %bb.8(0x40000000), %bb.1(0x40000000)939 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a3940 ; MIPS32-NEXT: {{ $}}941 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0942 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1943 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2944 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:gprb(p0) = COPY $a3945 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.0946 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0) from %fixed-stack.0, align 8)947 ; MIPS32-NEXT: [[FRAME_INDEX1:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.1948 ; MIPS32-NEXT: [[LOAD1:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (p0) from %fixed-stack.1)949 ; MIPS32-NEXT: [[FRAME_INDEX2:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.2950 ; MIPS32-NEXT: [[LOAD2:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (load (p0) from %fixed-stack.2, align 8)951 ; MIPS32-NEXT: [[C:%[0-9]+]]:fprb(s64) = G_FCONSTANT double 0.000000e+00952 ; MIPS32-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1953 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)954 ; MIPS32-NEXT: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY4]], [[C1]]955 ; MIPS32-NEXT: G_BRCOND [[AND]](s32), %bb.8956 ; MIPS32-NEXT: {{ $}}957 ; MIPS32-NEXT: bb.1.pre.PHI.1:958 ; MIPS32-NEXT: successors: %bb.4(0x40000000), %bb.2(0x40000000)959 ; MIPS32-NEXT: {{ $}}960 ; MIPS32-NEXT: [[C2:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1961 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)962 ; MIPS32-NEXT: [[AND1:%[0-9]+]]:gprb(s32) = G_AND [[COPY5]], [[C2]]963 ; MIPS32-NEXT: G_BRCOND [[AND1]](s32), %bb.4964 ; MIPS32-NEXT: {{ $}}965 ; MIPS32-NEXT: bb.2.pre.PHI.1.0:966 ; MIPS32-NEXT: successors: %bb.5(0x40000000), %bb.3(0x40000000)967 ; MIPS32-NEXT: {{ $}}968 ; MIPS32-NEXT: [[C3:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1969 ; MIPS32-NEXT: [[COPY6:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)970 ; MIPS32-NEXT: [[AND2:%[0-9]+]]:gprb(s32) = G_AND [[COPY6]], [[C3]]971 ; MIPS32-NEXT: G_BRCOND [[AND2]](s32), %bb.5972 ; MIPS32-NEXT: {{ $}}973 ; MIPS32-NEXT: bb.3.b.PHI.1.0:974 ; MIPS32-NEXT: successors: %bb.6(0x80000000)975 ; MIPS32-NEXT: {{ $}}976 ; MIPS32-NEXT: [[LOAD3:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)977 ; MIPS32-NEXT: G_BR %bb.6978 ; MIPS32-NEXT: {{ $}}979 ; MIPS32-NEXT: bb.4.b.PHI.1.1:980 ; MIPS32-NEXT: successors: %bb.6(0x80000000)981 ; MIPS32-NEXT: {{ $}}982 ; MIPS32-NEXT: [[LOAD4:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)983 ; MIPS32-NEXT: G_BR %bb.6984 ; MIPS32-NEXT: {{ $}}985 ; MIPS32-NEXT: bb.5.b.PHI.1.2:986 ; MIPS32-NEXT: successors: %bb.6(0x80000000)987 ; MIPS32-NEXT: {{ $}}988 ; MIPS32-NEXT: [[LOAD5:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD1]](p0) :: (load (s64) from %ir.c)989 ; MIPS32-NEXT: {{ $}}990 ; MIPS32-NEXT: bb.6.b.PHI.1:991 ; MIPS32-NEXT: successors: %bb.7(0x40000000), %bb.13(0x40000000)992 ; MIPS32-NEXT: {{ $}}993 ; MIPS32-NEXT: [[PHI:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD3]](s64), %bb.3, [[LOAD4]](s64), %bb.4, [[LOAD5]](s64), %bb.5994 ; MIPS32-NEXT: [[C4:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1995 ; MIPS32-NEXT: [[COPY7:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)996 ; MIPS32-NEXT: [[AND3:%[0-9]+]]:gprb(s32) = G_AND [[COPY7]], [[C4]]997 ; MIPS32-NEXT: G_BRCOND [[AND3]](s32), %bb.7998 ; MIPS32-NEXT: G_BR %bb.13999 ; MIPS32-NEXT: {{ $}}1000 ; MIPS32-NEXT: bb.7.b.PHI.1.end:1001 ; MIPS32-NEXT: G_STORE [[PHI]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)1002 ; MIPS32-NEXT: RetRA1003 ; MIPS32-NEXT: {{ $}}1004 ; MIPS32-NEXT: bb.8.pre.PHI.2:1005 ; MIPS32-NEXT: successors: %bb.9(0x40000000), %bb.10(0x40000000)1006 ; MIPS32-NEXT: {{ $}}1007 ; MIPS32-NEXT: [[C5:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 11008 ; MIPS32-NEXT: [[COPY8:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)1009 ; MIPS32-NEXT: [[AND4:%[0-9]+]]:gprb(s32) = G_AND [[COPY8]], [[C5]]1010 ; MIPS32-NEXT: G_BRCOND [[AND4]](s32), %bb.91011 ; MIPS32-NEXT: G_BR %bb.101012 ; MIPS32-NEXT: {{ $}}1013 ; MIPS32-NEXT: bb.9.b.PHI.2.0:1014 ; MIPS32-NEXT: successors: %bb.11(0x80000000)1015 ; MIPS32-NEXT: {{ $}}1016 ; MIPS32-NEXT: [[LOAD6:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)1017 ; MIPS32-NEXT: G_BR %bb.111018 ; MIPS32-NEXT: {{ $}}1019 ; MIPS32-NEXT: bb.10.b.PHI.2.1:1020 ; MIPS32-NEXT: successors: %bb.11(0x80000000)1021 ; MIPS32-NEXT: {{ $}}1022 ; MIPS32-NEXT: [[LOAD7:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)1023 ; MIPS32-NEXT: {{ $}}1024 ; MIPS32-NEXT: bb.11.b.PHI.2:1025 ; MIPS32-NEXT: successors: %bb.13(0x40000000), %bb.12(0x40000000)1026 ; MIPS32-NEXT: {{ $}}1027 ; MIPS32-NEXT: [[PHI1:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD6]](s64), %bb.9, [[LOAD7]](s64), %bb.101028 ; MIPS32-NEXT: [[C6:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 11029 ; MIPS32-NEXT: [[COPY9:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)1030 ; MIPS32-NEXT: [[AND5:%[0-9]+]]:gprb(s32) = G_AND [[COPY9]], [[C6]]1031 ; MIPS32-NEXT: G_BRCOND [[AND5]](s32), %bb.131032 ; MIPS32-NEXT: {{ $}}1033 ; MIPS32-NEXT: bb.12.b.PHI.2.end:1034 ; MIPS32-NEXT: G_STORE [[PHI1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)1035 ; MIPS32-NEXT: RetRA1036 ; MIPS32-NEXT: {{ $}}1037 ; MIPS32-NEXT: bb.13.b.PHI.3:1038 ; MIPS32-NEXT: [[PHI2:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.61039 ; MIPS32-NEXT: [[PHI3:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[C]](s64), %bb.61040 ; MIPS32-NEXT: [[C7:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 11041 ; MIPS32-NEXT: [[COPY10:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)1042 ; MIPS32-NEXT: [[AND6:%[0-9]+]]:gprb(s32) = G_AND [[COPY10]], [[C7]]1043 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND6]](s32), [[PHI2]], [[PHI3]]1044 ; MIPS32-NEXT: [[COPY11:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)1045 ; MIPS32-NEXT: [[AND7:%[0-9]+]]:gprb(s32) = G_AND [[COPY11]], [[C7]]1046 ; MIPS32-NEXT: [[SELECT1:%[0-9]+]]:fprb(s64) = G_SELECT [[AND7]](s32), [[SELECT]], [[PHI2]]1047 ; MIPS32-NEXT: G_STORE [[SELECT1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)1048 ; MIPS32-NEXT: G_STORE [[PHI2]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)1049 ; MIPS32-NEXT: RetRA1050 bb.1.entry:1051 liveins: $a0, $a1, $a2, $a31052 1053 %7:_(s32) = COPY $a01054 %8:_(s32) = COPY $a11055 %9:_(s32) = COPY $a21056 %3:_(p0) = COPY $a31057 %10:_(p0) = G_FRAME_INDEX %fixed-stack.21058 %4:_(p0) = G_LOAD %10(p0) :: (load (p0) from %fixed-stack.2, align 8)1059 %11:_(p0) = G_FRAME_INDEX %fixed-stack.11060 %5:_(p0) = G_LOAD %11(p0) :: (load (p0) from %fixed-stack.1)1061 %12:_(p0) = G_FRAME_INDEX %fixed-stack.01062 %6:_(p0) = G_LOAD %12(p0) :: (load (p0) from %fixed-stack.0, align 8)1063 %24:_(s64) = G_FCONSTANT double 0.000000e+001064 %33:_(s32) = G_CONSTANT i32 11065 %34:_(s32) = COPY %7(s32)1066 %32:_(s32) = G_AND %34, %331067 G_BRCOND %32(s32), %bb.91068 1069 bb.2.pre.PHI.1:1070 %35:_(s32) = G_CONSTANT i32 11071 %36:_(s32) = COPY %8(s32)1072 %31:_(s32) = G_AND %36, %351073 G_BRCOND %31(s32), %bb.51074 1075 bb.3.pre.PHI.1.0:1076 %37:_(s32) = G_CONSTANT i32 11077 %38:_(s32) = COPY %9(s32)1078 %30:_(s32) = G_AND %38, %371079 G_BRCOND %30(s32), %bb.61080 1081 bb.4.b.PHI.1.0:1082 %13:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)1083 G_BR %bb.71084 1085 bb.5.b.PHI.1.1:1086 %15:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)1087 G_BR %bb.71088 1089 bb.6.b.PHI.1.2:1090 %14:_(s64) = G_LOAD %5(p0) :: (load (s64) from %ir.c)1091 1092 bb.7.b.PHI.1:1093 %16:_(s64) = G_PHI %13(s64), %bb.4, %15(s64), %bb.5, %14(s64), %bb.61094 %39:_(s32) = G_CONSTANT i32 11095 %40:_(s32) = COPY %9(s32)1096 %29:_(s32) = G_AND %40, %391097 G_BRCOND %29(s32), %bb.81098 G_BR %bb.141099 1100 bb.8.b.PHI.1.end:1101 G_STORE %16(s64), %6(p0) :: (store (s64) into %ir.result)1102 RetRA1103 1104 bb.9.pre.PHI.2:1105 %41:_(s32) = G_CONSTANT i32 11106 %42:_(s32) = COPY %7(s32)1107 %28:_(s32) = G_AND %42, %411108 G_BRCOND %28(s32), %bb.101109 G_BR %bb.111110 1111 bb.10.b.PHI.2.0:1112 %18:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)1113 G_BR %bb.121114 1115 bb.11.b.PHI.2.1:1116 %17:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)1117 1118 bb.12.b.PHI.2:1119 %19:_(s64) = G_PHI %18(s64), %bb.10, %17(s64), %bb.111120 %43:_(s32) = G_CONSTANT i32 11121 %44:_(s32) = COPY %8(s32)1122 %27:_(s32) = G_AND %44, %431123 G_BRCOND %27(s32), %bb.141124 1125 bb.13.b.PHI.2.end:1126 G_STORE %19(s64), %6(p0) :: (store (s64) into %ir.result)1127 RetRA1128 1129 bb.14.b.PHI.3:1130 %20:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.71131 %21:_(s64) = G_PHI %19(s64), %bb.12, %24(s64), %bb.71132 %45:_(s32) = G_CONSTANT i32 11133 %46:_(s32) = COPY %9(s32)1134 %26:_(s32) = G_AND %46, %451135 %22:_(s64) = G_SELECT %26(s32), %20, %211136 %47:_(s32) = COPY %8(s32)1137 %25:_(s32) = G_AND %47, %451138 %23:_(s64) = G_SELECT %25(s32), %22, %201139 G_STORE %23(s64), %6(p0) :: (store (s64) into %ir.result)1140 G_STORE %20(s64), %6(p0) :: (store (s64) into %ir.result)1141 RetRA1142 1143...1144