brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 1734946 Raw
276 lines · plain
1# RUN: llc -O0 -mtriple arm-- -mattr=+v6 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,ARM2# RUN: llc -O0 -mtriple thumb-- -mattr=+v6t2,+dsp -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,THUMB3--- |4  define void @test_pkhbt() { ret void }5  define void @test_pkhbt_commutative() { ret void }6  define void @test_pkhbt_imm16_31() { ret void }7  define void @test_pkhbt_unshifted() { ret void }8 9  define void @test_pkhtb_imm16() { ret void }10  define void @test_pkhtb_imm1_15() { ret void }11...12---13name:            test_pkhbt14# CHECK-LABEL: name: test_pkhbt15legalized:       true16regBankSelected: true17selected:        false18# CHECK: selected: true19registers:20  - { id: 0, class: gprb }21  - { id: 1, class: gprb }22  - { id: 2, class: gprb }23  - { id: 3, class: gprb }24  - { id: 4, class: gprb }25  - { id: 5, class: gprb }26  - { id: 6, class: gprb }27  - { id: 7, class: gprb }28  - { id: 8, class: gprb }29body:             |30  bb.0:31    liveins: $r0, $r132 33    %0(s32) = COPY $r034    %1(s32) = COPY $r135    ; ARM-DAG: [[VREGX:%[0-9]+]]:gprnopc = COPY $r036    ; ARM-DAG: [[VREGY:%[0-9]+]]:gprnopc = COPY $r137    ; THUMB-DAG: [[VREGX:%[0-9]+]]:rgpr = COPY $r038    ; THUMB-DAG: [[VREGY:%[0-9]+]]:rgpr = COPY $r139 40    %2(s32) = G_CONSTANT i32 65535 ; 0xFFFF41    %3(s32) = G_AND %0, %242 43    %4(s32) = G_CONSTANT i32 744    %5(s32) = G_SHL %1, %445    %6(s32) = G_CONSTANT i32 4294901760 ; 0xFFFF000046    %7(s32) = G_AND %5, %647 48    %8(s32) = G_OR %3, %749    ; ARM: [[VREGR:%[0-9]+]]:gprnopc = PKHBT [[VREGX]], [[VREGY]], 7, 14 /* CC::al */, $noreg50    ; THUMB: [[VREGR:%[0-9]+]]:rgpr = t2PKHBT [[VREGX]], [[VREGY]], 7, 14 /* CC::al */, $noreg51 52    $r0 = COPY %8(s32)53    ; CHECK: $r0 = COPY [[VREGR]]54 55    BX_RET 14, $noreg, implicit $r056    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r057...58---59name:            test_pkhbt_commutative60# CHECK-LABEL: name: test_pkhbt_commutative61legalized:       true62regBankSelected: true63selected:        false64# CHECK: selected: true65registers:66  - { id: 0, class: gprb }67  - { id: 1, class: gprb }68  - { id: 2, class: gprb }69  - { id: 3, class: gprb }70  - { id: 4, class: gprb }71  - { id: 5, class: gprb }72  - { id: 6, class: gprb }73  - { id: 7, class: gprb }74  - { id: 8, class: gprb }75body:             |76  bb.0:77    liveins: $r0, $r178 79    %0(s32) = COPY $r080    %1(s32) = COPY $r181    ; ARM-DAG: [[VREGX:%[0-9]+]]:gprnopc = COPY $r082    ; ARM-DAG: [[VREGY:%[0-9]+]]:gprnopc = COPY $r183    ; THUMB-DAG: [[VREGX:%[0-9]+]]:rgpr = COPY $r084    ; THUMB-DAG: [[VREGY:%[0-9]+]]:rgpr = COPY $r185 86    %2(s32) = G_CONSTANT i32 65535 ; 0xFFFF87    %3(s32) = G_AND %0, %288 89    %4(s32) = G_CONSTANT i32 790    %5(s32) = G_SHL %1, %491    %6(s32) = G_CONSTANT i32 4294901760 ; 0xFFFF000092    %7(s32) = G_AND %5, %693 94    %8(s32) = G_OR %7, %395    ; ARM: [[VREGR:%[0-9]+]]:gprnopc = PKHBT [[VREGX]], [[VREGY]], 7, 14 /* CC::al */, $noreg96    ; THUMB: [[VREGR:%[0-9]+]]:rgpr = t2PKHBT [[VREGX]], [[VREGY]], 7, 14 /* CC::al */, $noreg97 98    $r0 = COPY %8(s32)99    ; CHECK: $r0 = COPY [[VREGR]]100 101    BX_RET 14, $noreg, implicit $r0102    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0103...104---105name:            test_pkhbt_imm16_31106# CHECK-LABEL: name: test_pkhbt_imm16_31107legalized:       true108regBankSelected: true109selected:        false110# CHECK: selected: true111registers:112  - { id: 0, class: gprb }113  - { id: 1, class: gprb }114  - { id: 2, class: gprb }115  - { id: 3, class: gprb }116  - { id: 4, class: gprb }117  - { id: 5, class: gprb }118  - { id: 6, class: gprb }119body:             |120  bb.0:121    liveins: $r0, $r1122 123    %0(s32) = COPY $r0124    %1(s32) = COPY $r1125    ; ARM-DAG: [[VREGX:%[0-9]+]]:gprnopc = COPY $r0126    ; ARM-DAG: [[VREGY:%[0-9]+]]:gprnopc = COPY $r1127    ; THUMB-DAG: [[VREGX:%[0-9]+]]:rgpr = COPY $r0128    ; THUMB-DAG: [[VREGY:%[0-9]+]]:rgpr = COPY $r1129 130    %2(s32) = G_CONSTANT i32 65535 ; 0xFFFF131    %3(s32) = G_AND %0, %2132 133    %4(s32) = G_CONSTANT i32 17134    %5(s32) = G_SHL %1, %4135 136    %6(s32) = G_OR %3, %5137    ; ARM: [[VREGR:%[0-9]+]]:gprnopc = PKHBT [[VREGX]], [[VREGY]], 17, 14 /* CC::al */, $noreg138    ; THUMB: [[VREGR:%[0-9]+]]:rgpr = t2PKHBT [[VREGX]], [[VREGY]], 17, 14 /* CC::al */, $noreg139 140    $r0 = COPY %6(s32)141    ; CHECK: $r0 = COPY [[VREGR]]142 143    BX_RET 14, $noreg, implicit $r0144    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0145...146---147name:            test_pkhbt_unshifted148# CHECK-LABEL: name: test_pkhbt_unshifted149legalized:       true150regBankSelected: true151selected:        false152# CHECK: selected: true153registers:154  - { id: 0, class: gprb }155  - { id: 1, class: gprb }156  - { id: 2, class: gprb }157  - { id: 3, class: gprb }158  - { id: 4, class: gprb }159  - { id: 5, class: gprb }160  - { id: 6, class: gprb }161body:             |162  bb.0:163    liveins: $r0, $r1164 165    %0(s32) = COPY $r0166    %1(s32) = COPY $r1167    ; ARM-DAG: [[VREGX:%[0-9]+]]:gprnopc = COPY $r0168    ; ARM-DAG: [[VREGY:%[0-9]+]]:gprnopc = COPY $r1169    ; THUMB-DAG: [[VREGX:%[0-9]+]]:rgpr = COPY $r0170    ; THUMB-DAG: [[VREGY:%[0-9]+]]:rgpr = COPY $r1171 172    %2(s32) = G_CONSTANT i32 65535 ; 0xFFFF173    %3(s32) = G_AND %0, %2174 175    %4(s32) = G_CONSTANT i32 4294901760 ; 0xFFFF0000176    %5(s32) = G_AND %1, %4177 178    %6(s32) = G_OR %3, %5179    ; ARM: [[VREGR:%[0-9]+]]:gprnopc = PKHBT [[VREGX]], [[VREGY]], 0, 14 /* CC::al */, $noreg180    ; THUMB: [[VREGR:%[0-9]+]]:rgpr = t2PKHBT [[VREGX]], [[VREGY]], 0, 14 /* CC::al */, $noreg181 182    $r0 = COPY %6(s32)183    ; CHECK: $r0 = COPY [[VREGR]]184 185    BX_RET 14, $noreg, implicit $r0186    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0187...188---189name:            test_pkhtb_imm16190# CHECK-LABEL: name: test_pkhtb_imm16191legalized:       true192regBankSelected: true193selected:        false194# CHECK: selected: true195registers:196  - { id: 0, class: gprb }197  - { id: 1, class: gprb }198  - { id: 2, class: gprb }199  - { id: 3, class: gprb }200  - { id: 4, class: gprb }201  - { id: 5, class: gprb }202  - { id: 6, class: gprb }203body:             |204  bb.0:205    liveins: $r0, $r1206 207    %0(s32) = COPY $r0208    %1(s32) = COPY $r1209    ; ARM-DAG: [[VREGX:%[0-9]+]]:gprnopc = COPY $r0210    ; ARM-DAG: [[VREGY:%[0-9]+]]:gprnopc = COPY $r1211    ; THUMB-DAG: [[VREGX:%[0-9]+]]:rgpr = COPY $r0212    ; THUMB-DAG: [[VREGY:%[0-9]+]]:rgpr = COPY $r1213 214    %2(s32) = G_CONSTANT i32 4294901760 ; 0xFFFF0000215    %3(s32) = G_AND %0, %2216 217    %4(s32) = G_CONSTANT i32 16218    %5(s32) = G_LSHR %1, %4219 220    %6(s32) = G_OR %3, %5221    ; ARM: [[VREGR:%[0-9]+]]:gprnopc = PKHTB [[VREGX]], [[VREGY]], 16, 14 /* CC::al */, $noreg222    ; THUMB: [[VREGR:%[0-9]+]]:rgpr = t2PKHTB [[VREGX]], [[VREGY]], 16, 14 /* CC::al */, $noreg223 224    $r0 = COPY %6(s32)225    ; CHECK: $r0 = COPY [[VREGR]]226 227    BX_RET 14, $noreg, implicit $r0228    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0229...230---231name:            test_pkhtb_imm1_15232# CHECK-LABEL: name: test_pkhtb_imm1_15233legalized:       true234regBankSelected: true235selected:        false236# CHECK: selected: true237registers:238  - { id: 0, class: gprb }239  - { id: 1, class: gprb }240  - { id: 2, class: gprb }241  - { id: 3, class: gprb }242  - { id: 4, class: gprb }243  - { id: 5, class: gprb }244  - { id: 6, class: gprb }245  - { id: 7, class: gprb }246  - { id: 8, class: gprb }247body:             |248  bb.0:249    liveins: $r0, $r1250 251    %0(s32) = COPY $r0252    %1(s32) = COPY $r1253    ; ARM-DAG: [[VREGX:%[0-9]+]]:gprnopc = COPY $r0254    ; ARM-DAG: [[VREGY:%[0-9]+]]:gprnopc = COPY $r1255    ; THUMB-DAG: [[VREGX:%[0-9]+]]:rgpr = COPY $r0256    ; THUMB-DAG: [[VREGY:%[0-9]+]]:rgpr = COPY $r1257 258    %2(s32) = G_CONSTANT i32 4294901760 ; 0xFFFF0000259    %3(s32) = G_AND %0, %2260 261    %4(s32) = G_CONSTANT i32 7262    %5(s32) = G_LSHR %1, %4263    %6(s32) = G_CONSTANT i32 65535 ; 0xFFFF264    %7(s32) = G_AND %5, %6265 266    %8(s32) = G_OR %3, %7267    ; ARM: [[VREGR:%[0-9]+]]:gprnopc = PKHTB [[VREGX]], [[VREGY]], 7, 14 /* CC::al */, $noreg268    ; THUMB: [[VREGR:%[0-9]+]]:rgpr = t2PKHTB [[VREGX]], [[VREGY]], 7, 14 /* CC::al */, $noreg269 270    $r0 = COPY %8(s32)271    ; CHECK: $r0 = COPY [[VREGR]]272 273    BX_RET 14, $noreg, implicit $r0274    ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0275...276