# RUN: llc -mtriple arm-- -run-pass=legalizer %s -o - | FileCheck %s
# RUN: llc -mtriple thumb-- -mattr=+v6t2 -run-pass=legalizer %s -o - | FileCheck %s
--- |
  define void @test_inttoptr_s32() { ret void }
  define void @test_ptrtoint_s32() { ret void }

  define void @test_inttoptr_s16() { ret void }
  define void @test_ptrtoint_s8() { ret void }
...
---
name:            test_inttoptr_s32
# CHECK-LABEL: name: test_inttoptr_s32
legalized:       false
# CHECK: legalized: true
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
body:             |
  bb.0:
    liveins: $r0

    %0(s32) = COPY $r0
    %1(p0) = G_INTTOPTR %0(s32)
    ; G_INTTOPTR with s32 is legal, so we should find it unchanged in the output
    ; CHECK: {{%[0-9]+}}:_(p0) = G_INTTOPTR {{%[0-9]+}}
    $r0 = COPY %1(p0)
    BX_RET 14, $noreg, implicit $r0
...
---
name:            test_ptrtoint_s32
# CHECK-LABEL: name: test_ptrtoint_s32
legalized:       false
# CHECK: legalized: true
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
body:             |
  bb.0:
    liveins: $r0

    %0(p0) = COPY $r0
    %1(s32) = G_PTRTOINT %0(p0)
    ; G_PTRTOINT with s32 is legal, so we should find it unchanged in the output
    ; CHECK: {{%[0-9]+}}:_(s32) = G_PTRTOINT {{%[0-9]+}}
    $r0 = COPY %1(s32)
    BX_RET 14, $noreg, implicit $r0
...
---
name:            test_inttoptr_s16
# CHECK-LABEL: name: test_inttoptr_s16
legalized:       false
# CHECK: legalized: true
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.0:
    liveins: $r0

    %0(s32) = COPY $r0
    %1(s16) = G_TRUNC %0(s32)
    %2(p0) = G_INTTOPTR %1(s16)
    ; G_INTTOPTR with s16 should zero extend
    ; CHECK-NOT: G_INTTOPTR {{%[0-9]+}}(s16)
    ; CHECK: [[BITS:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
    ; CHECK: [[X32:%[0-9]+]]:_(s32) = G_AND {{%[0-9]+}}, [[BITS]]
    ; CHECK: {{%[0-9]+}}:_(p0) = G_INTTOPTR [[X32]](s32)
    ; CHECK-NOT: G_INTTOPTR {{%[0-9]+}}(s16)
    $r0 = COPY %2(p0)
    BX_RET 14, $noreg, implicit $r0
...
---
name:            test_ptrtoint_s8
# CHECK-LABEL: name: test_ptrtoint_s8
legalized:       false
# CHECK: legalized: true
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.0:
    liveins: $r0

    %0(p0) = COPY $r0
    %1(s8) = G_PTRTOINT %0(p0)
    ; G_PTRTOINT with s8 should truncate
    ; CHECK-NOT: {{%[0-9]+}}(s8) = G_PTRTOINT
    ; CHECK: [[X32:%[0-9]+]]:_(s32) = G_PTRTOINT {{%[0-9]+}}(p0)
    ; CHECK: [[BITS:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY [[X32]]
    ; CHECK: {{%[0-9]+}}:_(s32) = G_AND [[COPY]], [[BITS]]
    ; CHECK-NOT: {{%[0-9]+}}(s8) = G_PTRTOINT
    %2(s32) = G_ZEXT %1(s8)
    $r0 = COPY %2(s32)
    BX_RET 14, $noreg, implicit $r0
...
