742 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple arm-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3--- |4 define void @test_mla() #0 { ret void }5 define void @test_mla_commutative() #0 { ret void }6 define void @test_mla_v5() #1 { ret void }7 8 define void @test_mls() #2 { ret void }9 define void @test_no_mls() { ret void }10 11 define void @test_bicrr() { ret void }12 define void @test_bicrr_commutative() { ret void }13 14 define void @test_bicri() { ret void }15 define void @test_bicri_commutative_xor() { ret void }16 define void @test_bicri_commutative_and() { ret void }17 define void @test_bicri_commutative_both() { ret void }18 19 define void @test_movti16_0xffff() #2 { ret void }20 21 define void @test_vnmuls() #3 { ret void }22 define void @test_vnmuls_reassociate() #3 { ret void }23 define void @test_vnmuld() #3 { ret void }24 25 define void @test_vfnmas() #4 { ret void }26 define void @test_vfnmad() #4 { ret void }27 28 define void @test_vfmss() #4 { ret void }29 define void @test_vfmsd() #4 { ret void }30 31 define void @test_vfnmss() #4 { ret void }32 33 define void @test_bfc() #2 { ret void }34 define void @test_no_bfc_bad_mask() #2 { ret void }35 36 attributes #0 = { "target-features"="+v6" }37 attributes #1 = { "target-features"="-v6" }38 attributes #2 = { "target-features"="+v6t2" }39 attributes #3 = { "target-features"="+vfp2" }40 attributes #4 = { "target-features"="+vfp4" }41...42---43name: test_mla44legalized: true45regBankSelected: true46selected: false47registers:48 - { id: 0, class: gprb }49 - { id: 1, class: gprb }50 - { id: 2, class: gprb }51 - { id: 3, class: gprb }52 - { id: 4, class: gprb }53body: |54 bb.0:55 liveins: $r0, $r1, $r256 57 ; CHECK-LABEL: name: test_mla58 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r059 ; CHECK: [[COPY1:%[0-9]+]]:gprnopc = COPY $r160 ; CHECK: [[COPY2:%[0-9]+]]:gprnopc = COPY $r261 ; CHECK: [[MLA:%[0-9]+]]:gprnopc = MLA [[COPY]], [[COPY1]], [[COPY2]], 14 /* CC::al */, $noreg, $noreg62 ; CHECK: $r0 = COPY [[MLA]]63 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r064 %0(s32) = COPY $r065 %1(s32) = COPY $r166 %2(s32) = COPY $r267 68 %3(s32) = G_MUL %0, %169 %4(s32) = G_ADD %3, %270 71 $r0 = COPY %4(s32)72 73 BX_RET 14, $noreg, implicit $r074...75---76name: test_mla_commutative77legalized: true78regBankSelected: true79selected: false80registers:81 - { id: 0, class: gprb }82 - { id: 1, class: gprb }83 - { id: 2, class: gprb }84 - { id: 3, class: gprb }85 - { id: 4, class: gprb }86body: |87 bb.0:88 liveins: $r0, $r1, $r289 90 ; CHECK-LABEL: name: test_mla_commutative91 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r092 ; CHECK: [[COPY1:%[0-9]+]]:gprnopc = COPY $r193 ; CHECK: [[COPY2:%[0-9]+]]:gprnopc = COPY $r294 ; CHECK: [[MLA:%[0-9]+]]:gprnopc = MLA [[COPY]], [[COPY1]], [[COPY2]], 14 /* CC::al */, $noreg, $noreg95 ; CHECK: $r0 = COPY [[MLA]]96 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r097 %0(s32) = COPY $r098 %1(s32) = COPY $r199 %2(s32) = COPY $r2100 101 %3(s32) = G_MUL %0, %1102 %4(s32) = G_ADD %2, %3103 104 $r0 = COPY %4(s32)105 106 BX_RET 14, $noreg, implicit $r0107...108---109name: test_mla_v5110legalized: true111regBankSelected: true112selected: false113registers:114 - { id: 0, class: gprb }115 - { id: 1, class: gprb }116 - { id: 2, class: gprb }117 - { id: 3, class: gprb }118 - { id: 4, class: gprb }119body: |120 bb.0:121 liveins: $r0, $r1, $r2122 123 ; CHECK-LABEL: name: test_mla_v5124 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0125 ; CHECK: [[COPY1:%[0-9]+]]:gprnopc = COPY $r1126 ; CHECK: [[COPY2:%[0-9]+]]:gprnopc = COPY $r2127 ; CHECK: early-clobber %4:gprnopc = MLAv5 [[COPY]], [[COPY1]], [[COPY2]], 14 /* CC::al */, $noreg, $noreg128 ; CHECK: $r0 = COPY %4129 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0130 %0(s32) = COPY $r0131 %1(s32) = COPY $r1132 %2(s32) = COPY $r2133 134 %3(s32) = G_MUL %0, %1135 %4(s32) = G_ADD %3, %2136 137 $r0 = COPY %4(s32)138 139 BX_RET 14, $noreg, implicit $r0140...141---142name: test_mls143legalized: true144regBankSelected: true145selected: false146registers:147 - { id: 0, class: gprb }148 - { id: 1, class: gprb }149 - { id: 2, class: gprb }150 - { id: 3, class: gprb }151 - { id: 4, class: gprb }152body: |153 bb.0:154 liveins: $r0, $r1, $r2155 156 ; CHECK-LABEL: name: test_mls157 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0158 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1159 ; CHECK: [[COPY2:%[0-9]+]]:gpr = COPY $r2160 ; CHECK: [[MLS:%[0-9]+]]:gpr = MLS [[COPY]], [[COPY1]], [[COPY2]], 14 /* CC::al */, $noreg161 ; CHECK: $r0 = COPY [[MLS]]162 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0163 %0(s32) = COPY $r0164 %1(s32) = COPY $r1165 %2(s32) = COPY $r2166 167 %3(s32) = G_MUL %0, %1168 %4(s32) = G_SUB %2, %3169 170 $r0 = COPY %4(s32)171 172 BX_RET 14, $noreg, implicit $r0173...174---175name: test_no_mls176legalized: true177regBankSelected: true178selected: false179registers:180 - { id: 0, class: gprb }181 - { id: 1, class: gprb }182 - { id: 2, class: gprb }183 - { id: 3, class: gprb }184 - { id: 4, class: gprb }185body: |186 bb.0:187 liveins: $r0, $r1, $r2188 189 ; CHECK-LABEL: name: test_no_mls190 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0191 ; CHECK: [[COPY1:%[0-9]+]]:gprnopc = COPY $r1192 ; CHECK: [[COPY2:%[0-9]+]]:gpr = COPY $r2193 ; CHECK: early-clobber %3:gprnopc = MULv5 [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, $noreg194 ; CHECK: [[SUBrr:%[0-9]+]]:gpr = SUBrr [[COPY2]], %3, 14 /* CC::al */, $noreg, $noreg195 ; CHECK: $r0 = COPY [[SUBrr]]196 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0197 %0(s32) = COPY $r0198 %1(s32) = COPY $r1199 %2(s32) = COPY $r2200 201 %3(s32) = G_MUL %0, %1202 %4(s32) = G_SUB %2, %3203 204 $r0 = COPY %4(s32)205 206 BX_RET 14, $noreg, implicit $r0207...208---209name: test_bicrr210legalized: true211regBankSelected: true212selected: false213registers:214 - { id: 0, class: gprb }215 - { id: 1, class: gprb }216 - { id: 2, class: gprb }217 - { id: 3, class: gprb }218 - { id: 4, class: gprb }219body: |220 bb.0:221 liveins: $r0, $r1222 223 ; CHECK-LABEL: name: test_bicrr224 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0225 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1226 ; CHECK: [[BICrr:%[0-9]+]]:gpr = BICrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, $noreg227 ; CHECK: $r0 = COPY [[BICrr]]228 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0229 %0(s32) = COPY $r0230 %1(s32) = COPY $r1231 232 %2(s32) = G_CONSTANT i32 -1233 %3(s32) = G_XOR %1, %2234 %4(s32) = G_AND %0, %3235 236 $r0 = COPY %4(s32)237 238 BX_RET 14, $noreg, implicit $r0239...240---241name: test_bicrr_commutative242legalized: true243regBankSelected: true244selected: false245registers:246 - { id: 0, class: gprb }247 - { id: 1, class: gprb }248 - { id: 2, class: gprb }249 - { id: 3, class: gprb }250 - { id: 4, class: gprb }251body: |252 bb.0:253 liveins: $r0, $r1254 255 ; CHECK-LABEL: name: test_bicrr_commutative256 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0257 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1258 ; CHECK: [[BICrr:%[0-9]+]]:gpr = BICrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, $noreg259 ; CHECK: $r0 = COPY [[BICrr]]260 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0261 %0(s32) = COPY $r0262 %1(s32) = COPY $r1263 264 %2(s32) = G_CONSTANT i32 -1265 %3(s32) = G_XOR %1, %2266 %4(s32) = G_AND %3, %0267 268 $r0 = COPY %4(s32)269 270 BX_RET 14, $noreg, implicit $r0271...272---273name: test_bicri274legalized: true275regBankSelected: true276selected: false277registers:278 - { id: 0, class: gprb }279 - { id: 1, class: gprb }280 - { id: 2, class: gprb }281 - { id: 3, class: gprb }282 - { id: 4, class: gprb }283body: |284 bb.0:285 liveins: $r0286 287 ; CHECK-LABEL: name: test_bicri288 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0289 ; CHECK: [[BICri:%[0-9]+]]:gpr = BICri [[COPY]], 192, 14 /* CC::al */, $noreg, $noreg290 ; CHECK: $r0 = COPY [[BICri]]291 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0292 %0(s32) = COPY $r0293 294 ; This test and the following ones are a bit contrived, since they use a295 ; G_XOR that can be constant-folded. They exist mostly to validate the296 ; TableGen pattern that defines BICri. We also have a pattern for matching a297 ; G_AND with a G_CONSTANT operand directly, which is the more common case,298 ; but that will be covered by different tests.299 %1(s32) = G_CONSTANT i32 192300 301 %2(s32) = G_CONSTANT i32 -1302 %3(s32) = G_XOR %1, %2303 %4(s32) = G_AND %0, %3304 305 $r0 = COPY %4(s32)306 307 BX_RET 14, $noreg, implicit $r0308...309---310name: test_bicri_commutative_xor311legalized: true312regBankSelected: true313selected: false314registers:315 - { id: 0, class: gprb }316 - { id: 1, class: gprb }317 - { id: 2, class: gprb }318 - { id: 3, class: gprb }319 - { id: 4, class: gprb }320body: |321 bb.0:322 liveins: $r0323 324 ; CHECK-LABEL: name: test_bicri_commutative_xor325 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0326 ; CHECK: [[BICri:%[0-9]+]]:gpr = BICri [[COPY]], 192, 14 /* CC::al */, $noreg, $noreg327 ; CHECK: $r0 = COPY [[BICri]]328 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0329 %0(s32) = COPY $r0330 331 %1(s32) = G_CONSTANT i32 192332 333 %2(s32) = G_CONSTANT i32 -1334 %3(s32) = G_XOR %2, %1335 %4(s32) = G_AND %0, %3336 337 $r0 = COPY %4(s32)338 339 BX_RET 14, $noreg, implicit $r0340...341---342name: test_bicri_commutative_and343legalized: true344regBankSelected: true345selected: false346registers:347 - { id: 0, class: gprb }348 - { id: 1, class: gprb }349 - { id: 2, class: gprb }350 - { id: 3, class: gprb }351 - { id: 4, class: gprb }352body: |353 bb.0:354 liveins: $r0355 356 ; CHECK-LABEL: name: test_bicri_commutative_and357 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0358 ; CHECK: [[BICri:%[0-9]+]]:gpr = BICri [[COPY]], 192, 14 /* CC::al */, $noreg, $noreg359 ; CHECK: $r0 = COPY [[BICri]]360 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0361 %0(s32) = COPY $r0362 363 %1(s32) = G_CONSTANT i32 192364 365 %2(s32) = G_CONSTANT i32 -1366 %3(s32) = G_XOR %1, %2367 %4(s32) = G_AND %3, %0368 369 $r0 = COPY %4(s32)370 371 BX_RET 14, $noreg, implicit $r0372...373---374name: test_bicri_commutative_both375legalized: true376regBankSelected: true377selected: false378registers:379 - { id: 0, class: gprb }380 - { id: 1, class: gprb }381 - { id: 2, class: gprb }382 - { id: 3, class: gprb }383 - { id: 4, class: gprb }384body: |385 bb.0:386 liveins: $r0387 388 ; CHECK-LABEL: name: test_bicri_commutative_both389 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0390 ; CHECK: [[BICri:%[0-9]+]]:gpr = BICri [[COPY]], 192, 14 /* CC::al */, $noreg, $noreg391 ; CHECK: $r0 = COPY [[BICri]]392 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0393 %0(s32) = COPY $r0394 395 %1(s32) = G_CONSTANT i32 192396 397 %2(s32) = G_CONSTANT i32 -1398 %3(s32) = G_XOR %2, %1399 %4(s32) = G_AND %3, %0400 401 $r0 = COPY %4(s32)402 403 BX_RET 14, $noreg, implicit $r0404...405---406name: test_movti16_0xffff407legalized: true408regBankSelected: true409selected: false410registers:411 - { id: 0, class: gprb }412 - { id: 1, class: gprb }413 - { id: 2, class: gprb }414body: |415 bb.0:416 liveins: $r0417 418 ; CHECK-LABEL: name: test_movti16_0xffff419 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0420 ; CHECK: [[MOVTi16_:%[0-9]+]]:gprnopc = MOVTi16 [[COPY]], 65535, 14 /* CC::al */, $noreg421 ; CHECK: $r0 = COPY [[MOVTi16_]]422 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0423 %0(s32) = COPY $r0424 425 %1(s32) = G_CONSTANT i32 4294901760 ; 0xFFFF0000426 427 %2(s32) = G_OR %0, %1428 429 $r0 = COPY %2(s32)430 431 BX_RET 14, $noreg, implicit $r0432...433---434name: test_vnmuls435legalized: true436regBankSelected: true437selected: false438registers:439 - { id: 0, class: fprb }440 - { id: 1, class: fprb }441 - { id: 2, class: fprb }442 - { id: 3, class: fprb }443body: |444 bb.0:445 liveins: $s0, $s1446 447 ; CHECK-LABEL: name: test_vnmuls448 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0449 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1450 ; CHECK: [[VNMULS:%[0-9]+]]:spr = nofpexcept VNMULS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr451 ; CHECK: $s0 = COPY [[VNMULS]]452 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0453 %0(s32) = COPY $s0454 %1(s32) = COPY $s1455 456 %2(s32) = G_FMUL %0, %1457 %3(s32) = G_FNEG %2458 459 $s0 = COPY %3(s32)460 461 BX_RET 14, $noreg, implicit $s0462...463---464name: test_vnmuls_reassociate465legalized: true466regBankSelected: true467selected: false468registers:469 - { id: 0, class: fprb }470 - { id: 1, class: fprb }471 - { id: 2, class: fprb }472 - { id: 3, class: fprb }473body: |474 bb.0:475 liveins: $s0, $s1476 477 ; CHECK-LABEL: name: test_vnmuls_reassociate478 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0479 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1480 ; CHECK: [[VNMULS:%[0-9]+]]:spr = nofpexcept VNMULS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr481 ; CHECK: $s0 = COPY [[VNMULS]]482 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0483 %0(s32) = COPY $s0484 %1(s32) = COPY $s1485 486 %2(s32) = G_FNEG %0487 %3(s32) = G_FMUL %1, %2488 489 $s0 = COPY %3(s32)490 491 BX_RET 14, $noreg, implicit $s0492...493---494name: test_vnmuld495legalized: true496regBankSelected: true497selected: false498registers:499 - { id: 0, class: fprb }500 - { id: 1, class: fprb }501 - { id: 2, class: fprb }502 - { id: 3, class: fprb }503body: |504 bb.0:505 liveins: $d0, $d1506 507 ; CHECK-LABEL: name: test_vnmuld508 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0509 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1510 ; CHECK: [[VNMULD:%[0-9]+]]:dpr = nofpexcept VNMULD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr511 ; CHECK: $d0 = COPY [[VNMULD]]512 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0513 %0(s64) = COPY $d0514 %1(s64) = COPY $d1515 516 %2(s64) = G_FMUL %0, %1517 %3(s64) = G_FNEG %2518 519 $d0 = COPY %3(s64)520 521 BX_RET 14, $noreg, implicit $d0522...523---524name: test_vfnmas525legalized: true526regBankSelected: true527selected: false528registers:529 - { id: 0, class: fprb }530 - { id: 1, class: fprb }531 - { id: 2, class: fprb }532 - { id: 3, class: fprb }533 - { id: 4, class: fprb }534body: |535 bb.0:536 liveins: $s0, $s1, $s2537 538 ; CHECK-LABEL: name: test_vfnmas539 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0540 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1541 ; CHECK: [[COPY2:%[0-9]+]]:spr = COPY $s2542 ; CHECK: [[VFNMAS:%[0-9]+]]:spr = nofpexcept VFNMAS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr543 ; CHECK: $s0 = COPY [[VFNMAS]]544 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0545 %0(s32) = COPY $s0546 %1(s32) = COPY $s1547 %2(s32) = COPY $s2548 549 %3(s32) = G_FMA %0, %1, %2550 %4(s32) = G_FNEG %3551 552 $s0 = COPY %4(s32)553 554 BX_RET 14, $noreg, implicit $s0555...556---557name: test_vfnmad558legalized: true559regBankSelected: true560selected: false561registers:562 - { id: 0, class: fprb }563 - { id: 1, class: fprb }564 - { id: 2, class: fprb }565 - { id: 3, class: fprb }566 - { id: 4, class: fprb }567 - { id: 5, class: fprb }568body: |569 bb.0:570 liveins: $d0, $d1, $d2571 572 ; CHECK-LABEL: name: test_vfnmad573 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0574 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1575 ; CHECK: [[COPY2:%[0-9]+]]:dpr = COPY $d2576 ; CHECK: [[VFNMAD:%[0-9]+]]:dpr = nofpexcept VFNMAD [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr577 ; CHECK: $d0 = COPY [[VFNMAD]]578 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0579 %0(s64) = COPY $d0580 %1(s64) = COPY $d1581 %2(s64) = COPY $d2582 583 %3(s64) = G_FNEG %0584 %4(s64) = G_FNEG %2585 %5(s64) = G_FMA %3, %1, %4586 587 $d0 = COPY %5(s64)588 589 BX_RET 14, $noreg, implicit $d0590...591---592name: test_vfmss593legalized: true594regBankSelected: true595selected: false596registers:597 - { id: 0, class: fprb }598 - { id: 1, class: fprb }599 - { id: 2, class: fprb }600 - { id: 3, class: fprb }601 - { id: 4, class: fprb }602body: |603 bb.0:604 liveins: $s0, $s1, $s2605 606 ; CHECK-LABEL: name: test_vfmss607 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0608 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1609 ; CHECK: [[COPY2:%[0-9]+]]:spr = COPY $s2610 ; CHECK: [[VFMSS:%[0-9]+]]:spr = nofpexcept VFMSS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr611 ; CHECK: $s0 = COPY [[VFMSS]]612 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0613 %0(s32) = COPY $s0614 %1(s32) = COPY $s1615 %2(s32) = COPY $s2616 617 %3(s32) = G_FNEG %0618 %4(s32) = G_FMA %3, %1, %2619 620 $s0 = COPY %4(s32)621 622 BX_RET 14, $noreg, implicit $s0623...624---625name: test_vfmsd626legalized: true627regBankSelected: true628selected: false629registers:630 - { id: 0, class: fprb }631 - { id: 1, class: fprb }632 - { id: 2, class: fprb }633 - { id: 3, class: fprb }634 - { id: 4, class: fprb }635body: |636 bb.0:637 liveins: $d0, $d1, $d2638 639 ; CHECK-LABEL: name: test_vfmsd640 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0641 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1642 ; CHECK: [[COPY2:%[0-9]+]]:dpr = COPY $d2643 ; CHECK: [[VFMSD:%[0-9]+]]:dpr = nofpexcept VFMSD [[COPY2]], [[COPY1]], [[COPY]], 14 /* CC::al */, $noreg, implicit $fpscr644 ; CHECK: $d0 = COPY [[VFMSD]]645 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0646 %0(s64) = COPY $d0647 %1(s64) = COPY $d1648 %2(s64) = COPY $d2649 650 %3(s64) = G_FNEG %1651 %4(s64) = G_FMA %0, %3, %2652 653 $d0 = COPY %4(s64)654 655 BX_RET 14, $noreg, implicit $d0656...657---658name: test_vfnmss659legalized: true660regBankSelected: true661selected: false662registers:663 - { id: 0, class: fprb }664 - { id: 1, class: fprb }665 - { id: 2, class: fprb }666 - { id: 3, class: fprb }667 - { id: 4, class: fprb }668body: |669 bb.0:670 liveins: $s0, $s1, $s2671 672 ; CHECK-LABEL: name: test_vfnmss673 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0674 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1675 ; CHECK: [[COPY2:%[0-9]+]]:spr = COPY $s2676 ; CHECK: [[VFNMSS:%[0-9]+]]:spr = nofpexcept VFNMSS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr677 ; CHECK: $s0 = COPY [[VFNMSS]]678 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0679 %0(s32) = COPY $s0680 %1(s32) = COPY $s1681 %2(s32) = COPY $s2682 683 %3(s32) = G_FNEG %2684 %4(s32) = G_FMA %0, %1, %3685 686 $s0 = COPY %4(s32)687 688 BX_RET 14, $noreg, implicit $s0689...690---691name: test_bfc692legalized: true693regBankSelected: true694selected: false695registers:696 - { id: 0, class: gprb }697 - { id: 1, class: gprb }698 - { id: 2, class: gprb }699body: |700 bb.0:701 liveins: $r0702 703 ; CHECK-LABEL: name: test_bfc704 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0705 ; CHECK: [[BFC:%[0-9]+]]:gpr = BFC [[COPY]], -65529, 14 /* CC::al */, $noreg706 ; CHECK: $r0 = COPY [[BFC]]707 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0708 %0(s32) = COPY $r0709 %1(s32) = G_CONSTANT i32 -65529 ; 0xFFFF0007710 %2(s32) = G_AND %0, %1711 712 $r0 = COPY %2(s32)713 714 BX_RET 14, $noreg, implicit $r0715...716---717name: test_no_bfc_bad_mask718legalized: true719regBankSelected: true720selected: false721registers:722 - { id: 0, class: gprb }723 - { id: 1, class: gprb }724 - { id: 2, class: gprb }725body: |726 bb.0:727 liveins: $r0728 729 ; CHECK-LABEL: name: test_no_bfc_bad_mask730 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0731 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[COPY]], 6, 14 /* CC::al */, $noreg, $noreg732 ; CHECK: $r0 = COPY [[ANDri]]733 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0734 %0(s32) = COPY $r0735 %1(s32) = G_CONSTANT i32 6 ; 0x00000006736 %2(s32) = G_AND %0, %1737 738 $r0 = COPY %2(s32)739 740 BX_RET 14, $noreg, implicit $r0741...742