# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=i686-linux-gnu -run-pass=legalizer -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:       16
tracksRegLiveness: true
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
  - { id: 3, class: _ }
frameInfo:
  maxAlignment:    4
fixedStack:
  - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }
body:             |
  bb.1.entry:
    ; CHECK-LABEL: name: ptrtoint_s1_p0
    ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
    ; CHECK: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (invariant load 4 from %fixed-stack.0, align 16)
    ; CHECK: [[PTRTOINT:%[0-9]+]]:_(s1) = G_PTRTOINT [[LOAD]](p0)
    ; CHECK: [[ANYEXT:%[0-9]+]]:_(s8) = G_ANYEXT [[PTRTOINT]](s1)
    ; CHECK: $al = COPY [[ANYEXT]](s8)
    ; CHECK: RET 0, implicit $al
    %1:_(p0) = G_FRAME_INDEX %fixed-stack.0
    %0:_(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 16)
    %2:_(s1) = G_PTRTOINT %0(p0)
    %3:_(s8) = G_ANYEXT %2(s1)
    $al = COPY %3(s8)
    RET 0, implicit $al

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

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

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

...
