brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.1 KiB · f626e56 Raw
616 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple thumb-- -mattr=+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3--- |4  define void @test_trunc_and_zext_s1_to_s32() { ret void }5  define void @test_trunc_and_sext_s1_to_s32() { ret void }6  define void @test_trunc_and_anyext_s1_to_s32() { ret void }7 8  define void @test_trunc_and_zext_s8_to_s32() { ret void }9  define void @test_trunc_and_sext_s8_to_s32() { ret void }10  define void @test_trunc_and_anyext_s8_to_s32() { ret void }11 12  define void @test_trunc_and_zext_s16_to_s32() { ret void }13  define void @test_trunc_and_sext_s16_to_s32() { ret void }14  define void @test_trunc_and_anyext_s16_to_s32() { ret void }15 16  define void @test_trunc_and_zext_s1_to_s16() { ret void }17  define void @test_trunc_and_sext_s1_to_s16() { ret void }18  define void @test_trunc_and_anyext_s1_to_s16() { ret void }19 20  define void @test_trunc_and_zext_s8_to_s16() { ret void }21  define void @test_trunc_and_sext_s8_to_s16() { ret void }22  define void @test_trunc_and_anyext_s8_to_s16() { ret void }23 24  define void @test_trunc_and_zext_s1_to_s8() { ret void }25  define void @test_trunc_and_sext_s1_to_s8() { ret void }26  define void @test_trunc_and_anyext_s1_to_s8() { ret void }27...28---29name:            test_trunc_and_zext_s1_to_s3230legalized:       true31regBankSelected: true32selected:        false33tracksRegLiveness: true34registers:35  - { id: 0, class: gprb }36  - { id: 1, class: gprb }37  - { id: 2, class: gprb }38body:             |39  bb.0:40    liveins: $r041 42    ; CHECK-LABEL: name: test_trunc_and_zext_s1_to_s3243    ; CHECK: liveins: $r044    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r045    ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY [[COPY]]46    ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[COPY1]], 1, 14 /* CC::al */, $noreg, $noreg47    ; CHECK: $r0 = COPY [[t2ANDri]]48    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r049    %0(s32) = COPY $r050 51    %1(s1) = G_TRUNC %0(s32)52 53    %2(s32) = G_ZEXT %1(s1)54 55    $r0 = COPY %2(s32)56 57    BX_RET 14, $noreg, implicit $r058...59---60name:            test_trunc_and_sext_s1_to_s3261legalized:       true62regBankSelected: true63selected:        false64tracksRegLiveness: true65registers:66  - { id: 0, class: gprb }67  - { id: 1, class: gprb }68  - { id: 2, class: gprb }69body:             |70  bb.0:71    liveins: $r072 73    ; CHECK-LABEL: name: test_trunc_and_sext_s1_to_s3274    ; CHECK: liveins: $r075    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r076    ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY [[COPY]]77    ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[COPY1]], 1, 14 /* CC::al */, $noreg, $noreg78    ; CHECK: [[t2RSBri:%[0-9]+]]:rgpr = t2RSBri [[t2ANDri]], 0, 14 /* CC::al */, $noreg, $noreg79    ; CHECK: $r0 = COPY [[t2RSBri]]80    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r081    %0(s32) = COPY $r082 83    %1(s1) = G_TRUNC %0(s32)84 85    %2(s32) = G_SEXT %1(s1)86 87    $r0 = COPY %2(s32)88 89    BX_RET 14, $noreg, implicit $r090...91---92name:            test_trunc_and_anyext_s1_to_s3293legalized:       true94regBankSelected: true95selected:        false96tracksRegLiveness: true97registers:98  - { id: 0, class: gprb }99  - { id: 1, class: gprb }100  - { id: 2, class: gprb }101body:             |102  bb.0:103    liveins: $r0104 105    ; CHECK-LABEL: name: test_trunc_and_anyext_s1_to_s32106    ; CHECK: liveins: $r0107    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0108    ; CHECK: $r0 = COPY [[COPY]]109    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0110    %0(s32) = COPY $r0111 112    %1(s1) = G_TRUNC %0(s32)113 114    %2(s32) = G_ANYEXT %1(s1)115 116    $r0 = COPY %2(s32)117 118    BX_RET 14, $noreg, implicit $r0119...120---121name:            test_trunc_and_zext_s8_to_s32122legalized:       true123regBankSelected: true124selected:        false125tracksRegLiveness: true126registers:127  - { id: 0, class: gprb }128  - { id: 1, class: gprb }129  - { id: 2, class: gprb }130body:             |131  bb.0:132    liveins: $r0133 134    ; CHECK-LABEL: name: test_trunc_and_zext_s8_to_s32135    ; CHECK: liveins: $r0136    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0137    ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY [[COPY]]138    ; CHECK: [[t2UXTB:%[0-9]+]]:rgpr = t2UXTB [[COPY1]], 0, 14 /* CC::al */, $noreg139    ; CHECK: $r0 = COPY [[t2UXTB]]140    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0141    %0(s32) = COPY $r0142 143    %1(s8) = G_TRUNC %0(s32)144 145    %2(s32) = G_ZEXT %1(s8)146 147    $r0 = COPY %2(s32)148 149    BX_RET 14, $noreg, implicit $r0150...151---152name:            test_trunc_and_sext_s8_to_s32153legalized:       true154regBankSelected: true155selected:        false156tracksRegLiveness: true157registers:158  - { id: 0, class: gprb }159  - { id: 1, class: gprb }160  - { id: 2, class: gprb }161body:             |162  bb.0:163    liveins: $r0164 165    ; CHECK-LABEL: name: test_trunc_and_sext_s8_to_s32166    ; CHECK: liveins: $r0167    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0168    ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY [[COPY]]169    ; CHECK: [[t2SXTB:%[0-9]+]]:rgpr = t2SXTB [[COPY1]], 0, 14 /* CC::al */, $noreg170    ; CHECK: $r0 = COPY [[t2SXTB]]171    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0172    %0(s32) = COPY $r0173 174    %1(s8) = G_TRUNC %0(s32)175 176    %2(s32) = G_SEXT %1(s8)177 178    $r0 = COPY %2(s32)179 180    BX_RET 14, $noreg, implicit $r0181...182---183name:            test_trunc_and_anyext_s8_to_s32184legalized:       true185regBankSelected: true186selected:        false187tracksRegLiveness: true188registers:189  - { id: 0, class: gprb }190  - { id: 1, class: gprb }191  - { id: 2, class: gprb }192body:             |193  bb.0:194    liveins: $r0195 196    ; CHECK-LABEL: name: test_trunc_and_anyext_s8_to_s32197    ; CHECK: liveins: $r0198    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0199    ; CHECK: $r0 = COPY [[COPY]]200    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0201    %0(s32) = COPY $r0202 203    %1(s8) = G_TRUNC %0(s32)204 205    %2(s32) = G_ANYEXT %1(s8)206 207    $r0 = COPY %2(s32)208 209    BX_RET 14, $noreg, implicit $r0210...211---212name:            test_trunc_and_zext_s16_to_s32213legalized:       true214regBankSelected: true215selected:        false216tracksRegLiveness: true217registers:218  - { id: 0, class: gprb }219  - { id: 1, class: gprb }220  - { id: 2, class: gprb }221body:             |222  bb.0:223    liveins: $r0224 225    ; CHECK-LABEL: name: test_trunc_and_zext_s16_to_s32226    ; CHECK: liveins: $r0227    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0228    ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY [[COPY]]229    ; CHECK: [[t2UXTH:%[0-9]+]]:rgpr = t2UXTH [[COPY1]], 0, 14 /* CC::al */, $noreg230    ; CHECK: $r0 = COPY [[t2UXTH]]231    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0232    %0(s32) = COPY $r0233 234    %1(s16) = G_TRUNC %0(s32)235 236    %2(s32) = G_ZEXT %1(s16)237 238    $r0 = COPY %2(s32)239 240    BX_RET 14, $noreg, implicit $r0241...242---243name:            test_trunc_and_sext_s16_to_s32244legalized:       true245regBankSelected: true246selected:        false247tracksRegLiveness: true248registers:249  - { id: 0, class: gprb }250  - { id: 1, class: gprb }251  - { id: 2, class: gprb }252body:             |253  bb.0:254    liveins: $r0255 256    ; CHECK-LABEL: name: test_trunc_and_sext_s16_to_s32257    ; CHECK: liveins: $r0258    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0259    ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY [[COPY]]260    ; CHECK: [[t2SXTH:%[0-9]+]]:rgpr = t2SXTH [[COPY1]], 0, 14 /* CC::al */, $noreg261    ; CHECK: $r0 = COPY [[t2SXTH]]262    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0263    %0(s32) = COPY $r0264 265    %1(s16) = G_TRUNC %0(s32)266 267    %2(s32) = G_SEXT %1(s16)268 269    $r0 = COPY %2(s32)270 271    BX_RET 14, $noreg, implicit $r0272...273---274name:            test_trunc_and_anyext_s16_to_s32275legalized:       true276regBankSelected: true277selected:        false278tracksRegLiveness: true279registers:280  - { id: 0, class: gprb }281  - { id: 1, class: gprb }282  - { id: 2, class: gprb }283body:             |284  bb.0:285    liveins: $r0286 287    ; CHECK-LABEL: name: test_trunc_and_anyext_s16_to_s32288    ; CHECK: liveins: $r0289    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0290    ; CHECK: $r0 = COPY [[COPY]]291    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0292    %0(s32) = COPY $r0293 294    %1(s16) = G_TRUNC %0(s32)295 296    %2(s32) = G_ANYEXT %1(s16)297 298    $r0 = COPY %2(s32)299 300    BX_RET 14, $noreg, implicit $r0301...302---303name:            test_trunc_and_zext_s1_to_s16304legalized:       true305regBankSelected: true306selected:        false307tracksRegLiveness: true308registers:309  - { id: 0, class: gprb }310  - { id: 1, class: gprb }311  - { id: 2, class: gprb }312  - { id: 3, class: gprb }313body:             |314  bb.0:315    liveins: $r0, $r1316 317    ; CHECK-LABEL: name: test_trunc_and_zext_s1_to_s16318    ; CHECK: liveins: $r0, $r1319    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0320    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1321    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]322    ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[COPY2]], 1, 14 /* CC::al */, $noreg, $noreg323    ; CHECK: t2STRHi12 [[t2ANDri]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s16))324    ; CHECK: BX_RET 14 /* CC::al */, $noreg325    %0(p0) = COPY $r0326 327    %1(s32) = COPY $r1328 329    %2(s1) = G_TRUNC %1(s32)330 331    %3(s16) = G_ZEXT %2(s1)332 333    G_STORE %3(s16), %0(p0) :: (store (s16))334 335    BX_RET 14, $noreg336...337---338name:            test_trunc_and_sext_s1_to_s16339legalized:       true340regBankSelected: true341selected:        false342tracksRegLiveness: true343registers:344  - { id: 0, class: gprb }345  - { id: 1, class: gprb }346  - { id: 2, class: gprb }347  - { id: 3, class: gprb }348body:             |349  bb.0:350    liveins: $r0, $r1351 352    ; CHECK-LABEL: name: test_trunc_and_sext_s1_to_s16353    ; CHECK: liveins: $r0, $r1354    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0355    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1356    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]357    ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[COPY2]], 1, 14 /* CC::al */, $noreg, $noreg358    ; CHECK: [[t2RSBri:%[0-9]+]]:rgpr = t2RSBri [[t2ANDri]], 0, 14 /* CC::al */, $noreg, $noreg359    ; CHECK: t2STRHi12 [[t2RSBri]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s16))360    ; CHECK: BX_RET 14 /* CC::al */, $noreg361    %0(p0) = COPY $r0362 363    %1(s32) = COPY $r1364 365    %2(s1) = G_TRUNC %1(s32)366 367    %3(s16) = G_SEXT %2(s1)368 369    G_STORE %3(s16), %0(p0) :: (store (s16))370 371    BX_RET 14, $noreg372...373---374name:            test_trunc_and_anyext_s1_to_s16375legalized:       true376regBankSelected: true377selected:        false378tracksRegLiveness: true379registers:380  - { id: 0, class: gprb }381  - { id: 1, class: gprb }382  - { id: 2, class: gprb }383  - { id: 3, class: gprb }384body:             |385  bb.0:386    liveins: $r0, $r1387 388    ; CHECK-LABEL: name: test_trunc_and_anyext_s1_to_s16389    ; CHECK: liveins: $r0, $r1390    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0391    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1392    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]393    ; CHECK: t2STRHi12 [[COPY2]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s16))394    ; CHECK: BX_RET 14 /* CC::al */, $noreg395    %0(p0) = COPY $r0396 397    %1(s32) = COPY $r1398 399    %2(s1) = G_TRUNC %1(s32)400 401    %3(s16) = G_ANYEXT %2(s1)402 403    G_STORE %3(s16), %0(p0) :: (store (s16))404 405    BX_RET 14, $noreg406...407---408name:            test_trunc_and_zext_s8_to_s16409legalized:       true410regBankSelected: true411selected:        false412tracksRegLiveness: true413registers:414  - { id: 0, class: gprb }415  - { id: 1, class: gprb }416  - { id: 2, class: gprb }417  - { id: 3, class: gprb }418body:             |419  bb.0:420    liveins: $r0, $r1421 422    ; CHECK-LABEL: name: test_trunc_and_zext_s8_to_s16423    ; CHECK: liveins: $r0, $r1424    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0425    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1426    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]427    ; CHECK: [[t2UXTB:%[0-9]+]]:rgpr = t2UXTB [[COPY2]], 0, 14 /* CC::al */, $noreg428    ; CHECK: t2STRHi12 [[t2UXTB]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s16))429    ; CHECK: BX_RET 14 /* CC::al */, $noreg430    %0(p0) = COPY $r0431 432    %1(s32) = COPY $r1433 434    %2(s8) = G_TRUNC %1(s32)435 436    %3(s16) = G_ZEXT %2(s8)437 438    G_STORE %3(s16), %0(p0) :: (store (s16))439 440    BX_RET 14, $noreg441...442---443name:            test_trunc_and_sext_s8_to_s16444legalized:       true445regBankSelected: true446selected:        false447tracksRegLiveness: true448registers:449  - { id: 0, class: gprb }450  - { id: 1, class: gprb }451  - { id: 2, class: gprb }452  - { id: 3, class: gprb }453body:             |454  bb.0:455    liveins: $r0, $r1456 457    ; CHECK-LABEL: name: test_trunc_and_sext_s8_to_s16458    ; CHECK: liveins: $r0, $r1459    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0460    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1461    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]462    ; CHECK: [[t2SXTB:%[0-9]+]]:rgpr = t2SXTB [[COPY2]], 0, 14 /* CC::al */, $noreg463    ; CHECK: t2STRHi12 [[t2SXTB]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s16))464    ; CHECK: BX_RET 14 /* CC::al */, $noreg465    %0(p0) = COPY $r0466 467    %1(s32) = COPY $r1468 469    %2(s8) = G_TRUNC %1(s32)470 471    %3(s16) = G_SEXT %2(s8)472 473    G_STORE %3(s16), %0(p0) :: (store (s16))474 475    BX_RET 14, $noreg476...477---478name:            test_trunc_and_anyext_s8_to_s16479legalized:       true480regBankSelected: true481selected:        false482tracksRegLiveness: true483registers:484  - { id: 0, class: gprb }485  - { id: 1, class: gprb }486  - { id: 2, class: gprb }487  - { id: 3, class: gprb }488body:             |489  bb.0:490    liveins: $r0, $r1491 492    ; CHECK-LABEL: name: test_trunc_and_anyext_s8_to_s16493    ; CHECK: liveins: $r0, $r1494    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0495    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1496    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]497    ; CHECK: t2STRHi12 [[COPY2]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s16))498    ; CHECK: BX_RET 14 /* CC::al */, $noreg499    %0(p0) = COPY $r0500 501    %1(s32) = COPY $r1502 503    %2(s8) = G_TRUNC %1(s32)504 505    %3(s16) = G_ANYEXT %2(s8)506 507    G_STORE %3(s16), %0(p0) :: (store (s16))508 509    BX_RET 14, $noreg510...511---512name:            test_trunc_and_zext_s1_to_s8513legalized:       true514regBankSelected: true515selected:        false516tracksRegLiveness: true517registers:518  - { id: 0, class: gprb }519  - { id: 1, class: gprb }520  - { id: 2, class: gprb }521  - { id: 3, class: gprb }522body:             |523  bb.0:524    liveins: $r0, $r1525 526    ; CHECK-LABEL: name: test_trunc_and_zext_s1_to_s8527    ; CHECK: liveins: $r0, $r1528    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0529    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1530    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]531    ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[COPY2]], 1, 14 /* CC::al */, $noreg, $noreg532    ; CHECK: t2STRBi12 [[t2ANDri]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s8))533    ; CHECK: BX_RET 14 /* CC::al */, $noreg534    %0(p0) = COPY $r0535 536    %1(s32) = COPY $r1537 538    %2(s1) = G_TRUNC %1(s32)539 540    %3(s8) = G_ZEXT %2(s1)541 542    G_STORE %3(s8), %0(p0) :: (store (s8))543 544    BX_RET 14, $noreg545...546---547name:            test_trunc_and_sext_s1_to_s8548legalized:       true549regBankSelected: true550selected:        false551tracksRegLiveness: true552registers:553  - { id: 0, class: gprb }554  - { id: 1, class: gprb }555  - { id: 2, class: gprb }556  - { id: 3, class: gprb }557body:             |558  bb.0:559    liveins: $r0, $r1560 561    ; CHECK-LABEL: name: test_trunc_and_sext_s1_to_s8562    ; CHECK: liveins: $r0, $r1563    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0564    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1565    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]566    ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[COPY2]], 1, 14 /* CC::al */, $noreg, $noreg567    ; CHECK: [[t2RSBri:%[0-9]+]]:rgpr = t2RSBri [[t2ANDri]], 0, 14 /* CC::al */, $noreg, $noreg568    ; CHECK: t2STRBi12 [[t2RSBri]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s8))569    ; CHECK: BX_RET 14 /* CC::al */, $noreg570    %0(p0) = COPY $r0571 572    %1(s32) = COPY $r1573 574    %2(s1) = G_TRUNC %1(s32)575 576    %3(s8) = G_SEXT %2(s1)577 578    G_STORE %3(s8), %0(p0) :: (store (s8))579 580    BX_RET 14, $noreg581...582---583name:            test_trunc_and_anyext_s1_to_s8584legalized:       true585regBankSelected: true586selected:        false587tracksRegLiveness: true588registers:589  - { id: 0, class: gprb }590  - { id: 1, class: gprb }591  - { id: 2, class: gprb }592  - { id: 3, class: gprb }593body:             |594  bb.0:595    liveins: $r0, $r1596 597    ; CHECK-LABEL: name: test_trunc_and_anyext_s1_to_s8598    ; CHECK: liveins: $r0, $r1599    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0600    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1601    ; CHECK: [[COPY2:%[0-9]+]]:rgpr = COPY [[COPY1]]602    ; CHECK: t2STRBi12 [[COPY2]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s8))603    ; CHECK: BX_RET 14 /* CC::al */, $noreg604    %0(p0) = COPY $r0605 606    %1(s32) = COPY $r1607 608    %2(s1) = G_TRUNC %1(s32)609 610    %3(s8) = G_ANYEXT %2(s1)611 612    G_STORE %3(s8), %0(p0) :: (store (s8))613 614    BX_RET 14, $noreg615...616