# 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_GEP [[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_GEP %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_GEP [[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_GEP %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_GEP [[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_GEP %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_GEP [[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_GEP %0, %1(s64)
    G_STORE %2, %0 :: (store 1 into %ir.addr)
    RET 0
...
