144 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=i386-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3 4--- |5 6 define i1 @ptrtoint_s1_p0(ptr %p) {7 entry:8 %0 = ptrtoint ptr %p to i19 ret i1 %010 }11 12 define i8 @ptrtoint_s8_p0(ptr %p) {13 entry:14 %0 = ptrtoint ptr %p to i815 ret i8 %016 }17 18 define i16 @ptrtoint_s16_p0(ptr %p) {19 entry:20 %0 = ptrtoint ptr %p to i1621 ret i16 %022 }23 24 define i32 @ptrtoint_s32_p0(ptr %p) {25 entry:26 %0 = ptrtoint ptr %p to i3227 ret i32 %028 }29 30...31---32name: ptrtoint_s1_p033alignment: 1634legalized: true35regBankSelected: true36tracksRegLiveness: true37registers:38 - { id: 0, class: gpr }39 - { id: 1, class: gpr }40 - { id: 2, class: gpr }41 - { id: 3, class: gpr }42frameInfo:43 maxAlignment: 444fixedStack:45 - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }46body: |47 bb.1.entry:48 ; CHECK-LABEL: name: ptrtoint_s1_p049 ; CHECK: [[MOV32rm:%[0-9]+]]:gr32_abcd = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load (p0) from %fixed-stack.0, align 16)50 ; CHECK: [[COPY:%[0-9]+]]:gr8 = COPY [[MOV32rm]].sub_8bit51 ; CHECK: $al = COPY [[COPY]]52 ; CHECK: RET 0, implicit $al53 %1:gpr(p0) = G_FRAME_INDEX %fixed-stack.054 %0:gpr(p0) = G_LOAD %1(p0) :: (invariant load (p0) from %fixed-stack.0, align 16)55 %2:gpr(s1) = G_PTRTOINT %0(p0)56 %3:gpr(s8) = G_ANYEXT %2(s1)57 $al = COPY %3(s8)58 RET 0, implicit $al59 60...61---62name: ptrtoint_s8_p063alignment: 1664legalized: true65regBankSelected: true66tracksRegLiveness: true67registers:68 - { id: 0, class: gpr }69 - { id: 1, class: gpr }70 - { id: 2, class: gpr }71frameInfo:72 maxAlignment: 473fixedStack:74 - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }75body: |76 bb.1.entry:77 ; CHECK-LABEL: name: ptrtoint_s8_p078 ; CHECK: [[MOV32rm:%[0-9]+]]:gr32_abcd = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load (p0) from %fixed-stack.0, align 16)79 ; CHECK: [[COPY:%[0-9]+]]:gr8 = COPY [[MOV32rm]].sub_8bit80 ; CHECK: $al = COPY [[COPY]]81 ; CHECK: RET 0, implicit $al82 %1:gpr(p0) = G_FRAME_INDEX %fixed-stack.083 %0:gpr(p0) = G_LOAD %1(p0) :: (invariant load (p0) from %fixed-stack.0, align 16)84 %2:gpr(s8) = G_PTRTOINT %0(p0)85 $al = COPY %2(s8)86 RET 0, implicit $al87 88...89---90name: ptrtoint_s16_p091alignment: 1692legalized: true93regBankSelected: true94tracksRegLiveness: true95registers:96 - { id: 0, class: gpr }97 - { id: 1, class: gpr }98 - { id: 2, class: gpr }99frameInfo:100 maxAlignment: 4101fixedStack:102 - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }103body: |104 bb.1.entry:105 ; CHECK-LABEL: name: ptrtoint_s16_p0106 ; CHECK: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load (p0) from %fixed-stack.0, align 16)107 ; CHECK: [[COPY:%[0-9]+]]:gr16 = COPY [[MOV32rm]].sub_16bit108 ; CHECK: $ax = COPY [[COPY]]109 ; CHECK: RET 0, implicit $ax110 %1:gpr(p0) = G_FRAME_INDEX %fixed-stack.0111 %0:gpr(p0) = G_LOAD %1(p0) :: (invariant load (p0) from %fixed-stack.0, align 16)112 %2:gpr(s16) = G_PTRTOINT %0(p0)113 $ax = COPY %2(s16)114 RET 0, implicit $ax115 116...117---118name: ptrtoint_s32_p0119alignment: 16120legalized: true121regBankSelected: true122tracksRegLiveness: true123registers:124 - { id: 0, class: gpr }125 - { id: 1, class: gpr }126 - { id: 2, class: gpr }127frameInfo:128 maxAlignment: 4129fixedStack:130 - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }131body: |132 bb.1.entry:133 ; CHECK-LABEL: name: ptrtoint_s32_p0134 ; CHECK: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load (p0) from %fixed-stack.0, align 16)135 ; CHECK: $eax = COPY [[MOV32rm]]136 ; CHECK: RET 0, implicit $eax137 %1:gpr(p0) = G_FRAME_INDEX %fixed-stack.0138 %0:gpr(p0) = G_LOAD %1(p0) :: (invariant load (p0) from %fixed-stack.0, align 16)139 %2:gpr(s32) = G_PTRTOINT %0(p0)140 $eax = COPY %2(s32)141 RET 0, implicit $eax142 143...144