brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.5 KiB · 4dd8af0 Raw
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