# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s

--- |
  define void @test_gep_i8(i8* %addr) {
    %arrayidx = getelementptr i32, i32* undef, i8 5
    ret void
  }

  define void @test_gep_i16(i8* %addr) {
    %arrayidx = getelementptr i32, i32* undef, i16 5
    ret void
  }

  define void @test_gep_i32(i8* %addr) {
    %arrayidx = getelementptr i32, i32* undef, i32 5
    ret void
  }

  define void @test_gep_i64(i8* %addr) {
    %arrayidx = getelementptr i32, i32* undef, i64 5
    ret void
  }
...
---
name:            test_gep_i8
legalized:       false
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: test_gep_i8
    ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF
    ; CHECK: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 20
    ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[C]](s8)
    ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_PTR_ADD [[DEF]], [[SEXT]](s32)
    ; CHECK: G_STORE [[GEP]](p0), [[DEF]](p0) :: (store 1 into %ir.addr)
    ; CHECK: RET 0
    %0(p0) = IMPLICIT_DEF
    %1(s8) = G_CONSTANT i8 20
    %2(p0) = G_PTR_ADD %0, %1(s8)
    G_STORE %2, %0 :: (store 1 into %ir.addr)
    RET 0
...
---
name:            test_gep_i16
legalized:       false
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: test_gep_i16
    ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF
    ; CHECK: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 20
    ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[C]](s16)
    ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_PTR_ADD [[DEF]], [[SEXT]](s32)
    ; CHECK: G_STORE [[GEP]](p0), [[DEF]](p0) :: (store 1 into %ir.addr)
    ; CHECK: RET 0
    %0(p0) = IMPLICIT_DEF
    %1(s16) = G_CONSTANT i16 20
    %2(p0) = G_PTR_ADD %0, %1(s16)
    G_STORE %2, %0 :: (store 1 into %ir.addr)
    RET 0
...
---
name:            test_gep_i32
legalized:       false
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: test_gep_i32
    ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF
    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 20
    ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_PTR_ADD [[DEF]], [[C]](s32)
    ; CHECK: G_STORE [[GEP]](p0), [[DEF]](p0) :: (store 1 into %ir.addr)
    ; CHECK: RET 0
    %0(p0) = IMPLICIT_DEF
    %1(s32) = G_CONSTANT i32 20
    %2(p0) = G_PTR_ADD %0, %1(s32)
    G_STORE %2, %0 :: (store 1 into %ir.addr)
    RET 0
...
---
name:            test_gep_i64
legalized:       false
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: test_gep_i64
    ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF
    ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 20
    ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_PTR_ADD [[DEF]], [[C]](s64)
    ; CHECK: G_STORE [[GEP]](p0), [[DEF]](p0) :: (store 1 into %ir.addr)
    ; CHECK: RET 0
    %0(p0) = IMPLICIT_DEF
    %1(s64) = G_CONSTANT i64 20
    %2(p0) = G_PTR_ADD %0, %1(s64)
    G_STORE %2, %0 :: (store 1 into %ir.addr)
    RET 0
...
