# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=i386-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s

--- |

  define i1 @ptrtoint_s1_p0(i64* %p) {
  entry:
    %0 = ptrtoint i64* %p to i1
    ret i1 %0
  }

  define i8 @ptrtoint_s8_p0(i64* %p) {
  entry:
    %0 = ptrtoint i64* %p to i8
    ret i8 %0
  }

  define i16 @ptrtoint_s16_p0(i64* %p) {
  entry:
    %0 = ptrtoint i64* %p to i16
    ret i16 %0
  }

  define i32 @ptrtoint_s32_p0(i64* %p) {
  entry:
    %0 = ptrtoint i64* %p to i32
    ret i32 %0
  }

...
---
name:            ptrtoint_s1_p0
alignment:       4
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
  - { id: 3, class: gpr }
frameInfo:
  maxAlignment:    4
fixedStack:
  - { id: 0, size: 4, alignment: 16, stack-id: 0, isImmutable: true }
body:             |
  bb.1.entry:
    ; CHECK-LABEL: name: ptrtoint_s1_p0
    ; CHECK: [[MOV32rm:%[0-9]+]]:gr32_abcd = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load 4 from %fixed-stack.0, align 0)
    ; CHECK: [[COPY:%[0-9]+]]:gr8 = COPY [[MOV32rm]].sub_8bit
    ; CHECK: $al = COPY [[COPY]]
    ; CHECK: RET 0, implicit $al
    %1:gpr(p0) = G_FRAME_INDEX %fixed-stack.0
    %0:gpr(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 0)
    %2:gpr(s1) = G_PTRTOINT %0(p0)
    %3:gpr(s8) = G_ANYEXT %2(s1)
    $al = COPY %3(s8)
    RET 0, implicit $al

...
---
name:            ptrtoint_s8_p0
alignment:       4
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
frameInfo:
  maxAlignment:    4
fixedStack:
  - { id: 0, size: 4, alignment: 16, stack-id: 0, isImmutable: true }
body:             |
  bb.1.entry:
    ; CHECK-LABEL: name: ptrtoint_s8_p0
    ; CHECK: [[MOV32rm:%[0-9]+]]:gr32_abcd = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load 4 from %fixed-stack.0, align 0)
    ; CHECK: [[COPY:%[0-9]+]]:gr8 = COPY [[MOV32rm]].sub_8bit
    ; CHECK: $al = COPY [[COPY]]
    ; CHECK: RET 0, implicit $al
    %1:gpr(p0) = G_FRAME_INDEX %fixed-stack.0
    %0:gpr(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 0)
    %2:gpr(s8) = G_PTRTOINT %0(p0)
    $al = COPY %2(s8)
    RET 0, implicit $al

...
---
name:            ptrtoint_s16_p0
alignment:       4
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
frameInfo:
  maxAlignment:    4
fixedStack:
  - { id: 0, size: 4, alignment: 16, stack-id: 0, isImmutable: true }
body:             |
  bb.1.entry:
    ; CHECK-LABEL: name: ptrtoint_s16_p0
    ; CHECK: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load 4 from %fixed-stack.0, align 0)
    ; CHECK: [[COPY:%[0-9]+]]:gr16 = COPY [[MOV32rm]].sub_16bit
    ; CHECK: $ax = COPY [[COPY]]
    ; CHECK: RET 0, implicit $ax
    %1:gpr(p0) = G_FRAME_INDEX %fixed-stack.0
    %0:gpr(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 0)
    %2:gpr(s16) = G_PTRTOINT %0(p0)
    $ax = COPY %2(s16)
    RET 0, implicit $ax

...
---
name:            ptrtoint_s32_p0
alignment:       4
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
frameInfo:
  maxAlignment:    4
fixedStack:
  - { id: 0, size: 4, alignment: 16, stack-id: 0, isImmutable: true }
body:             |
  bb.1.entry:
    ; CHECK-LABEL: name: ptrtoint_s32_p0
    ; CHECK: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load 4 from %fixed-stack.0, align 0)
    ; CHECK: $eax = COPY [[MOV32rm]]
    ; CHECK: RET 0, implicit $eax
    %1:gpr(p0) = G_FRAME_INDEX %fixed-stack.0
    %0:gpr(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 0)
    %2:gpr(s32) = G_PTRTOINT %0(p0)
    $eax = COPY %2(s32)
    RET 0, implicit $eax

...
