brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.1 KiB · 8b4f888 Raw
340 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL3--- |4 5  define i64 @test_lshr_i64(i64 %arg1, i64 %arg2) {6    %res = lshr i64 %arg1, %arg27    ret i64 %res8  }9 10  define i64 @test_lshr_i64_imm(i64 %arg1) {11    %res = lshr i64 %arg1, 512    ret i64 %res13  }14 15  define i32 @test_lshr_i32(i32 %arg1, i32 %arg2) {16    %res = lshr i32 %arg1, %arg217    ret i32 %res18  }19 20  define i32 @test_lshr_i32_imm(i32 %arg1) {21    %res = lshr i32 %arg1, 522    ret i32 %res23  }24 25  define i16 @test_lshr_i16(i32 %arg1, i32 %arg2) {26    %a = trunc i32 %arg1 to i1627    %a2 = trunc i32 %arg2 to i1628    %res = lshr i16 %a, %a229    ret i16 %res30  }31 32  define i16 @test_lshr_i16_imm(i32 %arg1) {33    %a = trunc i32 %arg1 to i1634    %res = lshr i16 %a, 535    ret i16 %res36  }37 38  define i8 @test_lshr_i8(i32 %arg1, i32 %arg2) {39    %a = trunc i32 %arg1 to i840    %a2 = trunc i32 %arg2 to i841    %res = lshr i8 %a, %a242    ret i8 %res43  }44 45  define i8 @test_lshr_i8_imm(i32 %arg1) {46    %a = trunc i32 %arg1 to i847    %res = lshr i8 %a, 548    ret i8 %res49  }50 51...52---53name:            test_lshr_i6454alignment:       1655legalized:       true56regBankSelected: true57tracksRegLiveness: true58registers:59  - { id: 0, class: gpr, preferred-register: '' }60  - { id: 1, class: gpr, preferred-register: '' }61  - { id: 2, class: gpr, preferred-register: '' }62  - { id: 3, class: gpr, preferred-register: '' }63liveins:64fixedStack:65stack:66constants:67body:             |68  bb.1 (%ir-block.0):69    liveins: $rdi, $rsi70 71    ; ALL-LABEL: name: test_lshr_i6472    ; ALL: liveins: $rdi, $rsi73    ; ALL-NEXT: {{  $}}74    ; ALL-NEXT: [[COPY:%[0-9]+]]:gr64 = COPY $rdi75    ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr64_with_sub_8bit = COPY $rsi76    ; ALL-NEXT: [[COPY2:%[0-9]+]]:gr8 = COPY [[COPY1]].sub_8bit77    ; ALL-NEXT: $cl = COPY [[COPY2]]78    ; ALL-NEXT: [[SHR64rCL:%[0-9]+]]:gr64 = SHR64rCL [[COPY]], implicit-def dead $eflags, implicit $cl79    ; ALL-NEXT: $rax = COPY [[SHR64rCL]]80    ; ALL-NEXT: RET 0, implicit $rax81    %0(s64) = COPY $rdi82    %1(s64) = COPY $rsi83    %2(s8) = G_TRUNC %184    %3(s64) = G_LSHR %0, %285    $rax = COPY %3(s64)86    RET 0, implicit $rax87 88...89---90name:            test_lshr_i64_imm91alignment:       1692legalized:       true93regBankSelected: true94tracksRegLiveness: true95registers:96  - { id: 0, class: gpr, preferred-register: '' }97  - { id: 1, class: gpr, preferred-register: '' }98  - { id: 2, class: gpr, preferred-register: '' }99liveins:100fixedStack:101stack:102constants:103body:             |104  bb.1 (%ir-block.0):105    liveins: $rdi106 107    ; ALL-LABEL: name: test_lshr_i64_imm108    ; ALL: liveins: $rdi109    ; ALL-NEXT: {{  $}}110    ; ALL-NEXT: [[COPY:%[0-9]+]]:gr64 = COPY $rdi111    ; ALL-NEXT: [[SHR64ri:%[0-9]+]]:gr64 = SHR64ri [[COPY]], 5, implicit-def dead $eflags112    ; ALL-NEXT: $rax = COPY [[SHR64ri]]113    ; ALL-NEXT: RET 0, implicit $rax114    %0(s64) = COPY $rdi115    %1(s8) = G_CONSTANT i8 5116    %2(s64) = G_LSHR %0, %1117    $rax = COPY %2(s64)118    RET 0, implicit $rax119 120...121---122name:            test_lshr_i32123alignment:       16124legalized:       true125regBankSelected: true126tracksRegLiveness: true127registers:128  - { id: 0, class: gpr, preferred-register: '' }129  - { id: 1, class: gpr, preferred-register: '' }130  - { id: 2, class: gpr, preferred-register: '' }131  - { id: 3, class: gpr, preferred-register: '' }132liveins:133fixedStack:134stack:135constants:136body:             |137  bb.1 (%ir-block.0):138    liveins: $edi, $esi139 140    ; ALL-LABEL: name: test_lshr_i32141    ; ALL: liveins: $edi, $esi142    ; ALL-NEXT: {{  $}}143    ; ALL-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edi144    ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $esi145    ; ALL-NEXT: [[COPY2:%[0-9]+]]:gr8 = COPY [[COPY1]].sub_8bit146    ; ALL-NEXT: $cl = COPY [[COPY2]]147    ; ALL-NEXT: [[SHR32rCL:%[0-9]+]]:gr32 = SHR32rCL [[COPY]], implicit-def dead $eflags, implicit $cl148    ; ALL-NEXT: $eax = COPY [[SHR32rCL]]149    ; ALL-NEXT: RET 0, implicit $eax150    %0(s32) = COPY $edi151    %1(s32) = COPY $esi152    %2(s8) = G_TRUNC %1153    %3(s32) = G_LSHR %0, %2154    $eax = COPY %3(s32)155    RET 0, implicit $eax156 157...158---159name:            test_lshr_i32_imm160alignment:       16161legalized:       true162regBankSelected: true163tracksRegLiveness: true164registers:165  - { id: 0, class: gpr, preferred-register: '' }166  - { id: 1, class: gpr, preferred-register: '' }167  - { id: 2, class: gpr, preferred-register: '' }168liveins:169fixedStack:170stack:171constants:172body:             |173  bb.1 (%ir-block.0):174    liveins: $edi175 176    ; ALL-LABEL: name: test_lshr_i32_imm177    ; ALL: liveins: $edi178    ; ALL-NEXT: {{  $}}179    ; ALL-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edi180    ; ALL-NEXT: [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 5, implicit-def dead $eflags181    ; ALL-NEXT: $eax = COPY [[SHR32ri]]182    ; ALL-NEXT: RET 0, implicit $eax183    %0(s32) = COPY $edi184    %1(s8) = G_CONSTANT i8 5185    %2(s32) = G_LSHR %0, %1186    $eax = COPY %2(s32)187    RET 0, implicit $eax188 189...190---191name:            test_lshr_i16192alignment:       16193legalized:       true194regBankSelected: true195tracksRegLiveness: true196registers:197  - { id: 0, class: gpr, preferred-register: '' }198  - { id: 1, class: gpr, preferred-register: '' }199  - { id: 2, class: gpr, preferred-register: '' }200  - { id: 3, class: gpr, preferred-register: '' }201  - { id: 4, class: gpr, preferred-register: '' }202liveins:203fixedStack:204stack:205constants:206body:             |207  bb.1 (%ir-block.0):208    liveins: $edi, $esi209 210    ; ALL-LABEL: name: test_lshr_i16211    ; ALL: liveins: $edi, $esi212    ; ALL-NEXT: {{  $}}213    ; ALL-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edi214    ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $esi215    ; ALL-NEXT: [[COPY2:%[0-9]+]]:gr16 = COPY [[COPY]].sub_16bit216    ; ALL-NEXT: [[COPY3:%[0-9]+]]:gr8 = COPY [[COPY1]].sub_8bit217    ; ALL-NEXT: $cl = COPY [[COPY3]]218    ; ALL-NEXT: [[SHR16rCL:%[0-9]+]]:gr16 = SHR16rCL [[COPY2]], implicit-def dead $eflags, implicit $cl219    ; ALL-NEXT: $ax = COPY [[SHR16rCL]]220    ; ALL-NEXT: RET 0, implicit $ax221    %0(s32) = COPY $edi222    %1(s32) = COPY $esi223    %2(s16) = G_TRUNC %0(s32)224    %3(s8) = G_TRUNC %1(s32)225    %4(s16) = G_LSHR %2, %3226    $ax = COPY %4(s16)227    RET 0, implicit $ax228 229...230---231name:            test_lshr_i16_imm232alignment:       16233legalized:       true234regBankSelected: true235tracksRegLiveness: true236registers:237  - { id: 0, class: gpr, preferred-register: '' }238  - { id: 1, class: gpr, preferred-register: '' }239  - { id: 2, class: gpr, preferred-register: '' }240  - { id: 3, class: gpr, preferred-register: '' }241liveins:242fixedStack:243stack:244constants:245body:             |246  bb.1 (%ir-block.0):247    liveins: $edi248 249    ; ALL-LABEL: name: test_lshr_i16_imm250    ; ALL: liveins: $edi251    ; ALL-NEXT: {{  $}}252    ; ALL-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edi253    ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr16 = COPY [[COPY]].sub_16bit254    ; ALL-NEXT: [[SHR16ri:%[0-9]+]]:gr16 = SHR16ri [[COPY1]], 5, implicit-def dead $eflags255    ; ALL-NEXT: $ax = COPY [[SHR16ri]]256    ; ALL-NEXT: RET 0, implicit $ax257    %0(s32) = COPY $edi258    %2(s8) = G_CONSTANT i8 5259    %1(s16) = G_TRUNC %0(s32)260    %3(s16) = G_LSHR %1, %2261    $ax = COPY %3(s16)262    RET 0, implicit $ax263 264...265---266name:            test_lshr_i8267alignment:       16268legalized:       true269regBankSelected: true270tracksRegLiveness: true271registers:272  - { id: 0, class: gpr, preferred-register: '' }273  - { id: 1, class: gpr, preferred-register: '' }274  - { id: 2, class: gpr, preferred-register: '' }275  - { id: 3, class: gpr, preferred-register: '' }276  - { id: 4, class: gpr, preferred-register: '' }277liveins:278fixedStack:279stack:280constants:281body:             |282  bb.1 (%ir-block.0):283    liveins: $edi, $esi284 285    ; ALL-LABEL: name: test_lshr_i8286    ; ALL: liveins: $edi, $esi287    ; ALL-NEXT: {{  $}}288    ; ALL-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edi289    ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $esi290    ; ALL-NEXT: [[COPY2:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit291    ; ALL-NEXT: [[COPY3:%[0-9]+]]:gr8 = COPY [[COPY1]].sub_8bit292    ; ALL-NEXT: $cl = COPY [[COPY3]]293    ; ALL-NEXT: [[SHR8rCL:%[0-9]+]]:gr8 = SHR8rCL [[COPY2]], implicit-def dead $eflags, implicit $cl294    ; ALL-NEXT: $al = COPY [[SHR8rCL]]295    ; ALL-NEXT: RET 0, implicit $al296    %0(s32) = COPY $edi297    %1(s32) = COPY $esi298    %2(s8) = G_TRUNC %0(s32)299    %3(s8) = G_TRUNC %1(s32)300    %4(s8) = G_LSHR %2, %3301    $al = COPY %4(s8)302    RET 0, implicit $al303 304...305---306name:            test_lshr_i8_imm307alignment:       16308legalized:       true309regBankSelected: true310tracksRegLiveness: true311registers:312  - { id: 0, class: gpr, preferred-register: '' }313  - { id: 1, class: gpr, preferred-register: '' }314  - { id: 2, class: gpr, preferred-register: '' }315  - { id: 3, class: gpr, preferred-register: '' }316liveins:317fixedStack:318stack:319constants:320body:             |321  bb.1 (%ir-block.0):322    liveins: $edi323 324    ; ALL-LABEL: name: test_lshr_i8_imm325    ; ALL: liveins: $edi326    ; ALL-NEXT: {{  $}}327    ; ALL-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edi328    ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit329    ; ALL-NEXT: [[SHR8ri:%[0-9]+]]:gr8 = SHR8ri [[COPY1]], 5, implicit-def dead $eflags330    ; ALL-NEXT: $al = COPY [[SHR8ri]]331    ; ALL-NEXT: RET 0, implicit $al332    %0(s32) = COPY $edi333    %2(s8) = G_CONSTANT i8 5334    %1(s8) = G_TRUNC %0(s32)335    %3(s8) = G_LSHR %1, %2336    $al = COPY %3(s8)337    RET 0, implicit $al338 339...340