1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s 3 4--- | 5 define void @test_gep_i8(i8* %addr) { 6 %arrayidx = getelementptr i32, i32* undef, i8 5 7 ret void 8 } 9 10 define void @test_gep_i16(i8* %addr) { 11 %arrayidx = getelementptr i32, i32* undef, i16 5 12 ret void 13 } 14 15 define void @test_gep_i32(i8* %addr) { 16 %arrayidx = getelementptr i32, i32* undef, i32 5 17 ret void 18 } 19 20 define void @test_gep_i64(i8* %addr) { 21 %arrayidx = getelementptr i32, i32* undef, i64 5 22 ret void 23 } 24... 25--- 26name: test_gep_i8 27legalized: false 28registers: 29 - { id: 0, class: _ } 30 - { id: 1, class: _ } 31 - { id: 2, class: _ } 32body: | 33 bb.1 (%ir-block.0): 34 ; CHECK-LABEL: name: test_gep_i8 35 ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF 36 ; CHECK: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 20 37 ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[C]](s8) 38 ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_PTR_ADD [[DEF]], [[SEXT]](s32) 39 ; CHECK: G_STORE [[GEP]](p0), [[DEF]](p0) :: (store 1 into %ir.addr) 40 ; CHECK: RET 0 41 %0(p0) = IMPLICIT_DEF 42 %1(s8) = G_CONSTANT i8 20 43 %2(p0) = G_PTR_ADD %0, %1(s8) 44 G_STORE %2, %0 :: (store 1 into %ir.addr) 45 RET 0 46... 47--- 48name: test_gep_i16 49legalized: false 50registers: 51 - { id: 0, class: _ } 52 - { id: 1, class: _ } 53 - { id: 2, class: _ } 54body: | 55 bb.1 (%ir-block.0): 56 ; CHECK-LABEL: name: test_gep_i16 57 ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF 58 ; CHECK: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 20 59 ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[C]](s16) 60 ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_PTR_ADD [[DEF]], [[SEXT]](s32) 61 ; CHECK: G_STORE [[GEP]](p0), [[DEF]](p0) :: (store 1 into %ir.addr) 62 ; CHECK: RET 0 63 %0(p0) = IMPLICIT_DEF 64 %1(s16) = G_CONSTANT i16 20 65 %2(p0) = G_PTR_ADD %0, %1(s16) 66 G_STORE %2, %0 :: (store 1 into %ir.addr) 67 RET 0 68... 69--- 70name: test_gep_i32 71legalized: false 72registers: 73 - { id: 0, class: _ } 74 - { id: 1, class: _ } 75 - { id: 2, class: _ } 76body: | 77 bb.1 (%ir-block.0): 78 ; CHECK-LABEL: name: test_gep_i32 79 ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF 80 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 20 81 ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_PTR_ADD [[DEF]], [[C]](s32) 82 ; CHECK: G_STORE [[GEP]](p0), [[DEF]](p0) :: (store 1 into %ir.addr) 83 ; CHECK: RET 0 84 %0(p0) = IMPLICIT_DEF 85 %1(s32) = G_CONSTANT i32 20 86 %2(p0) = G_PTR_ADD %0, %1(s32) 87 G_STORE %2, %0 :: (store 1 into %ir.addr) 88 RET 0 89... 90--- 91name: test_gep_i64 92legalized: false 93registers: 94 - { id: 0, class: _ } 95 - { id: 1, class: _ } 96 - { id: 2, class: _ } 97body: | 98 bb.1 (%ir-block.0): 99 ; CHECK-LABEL: name: test_gep_i64 100 ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF 101 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 20 102 ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_PTR_ADD [[DEF]], [[C]](s64) 103 ; CHECK: G_STORE [[GEP]](p0), [[DEF]](p0) :: (store 1 into %ir.addr) 104 ; CHECK: RET 0 105 %0(p0) = IMPLICIT_DEF 106 %1(s64) = G_CONSTANT i64 20 107 %2(p0) = G_PTR_ADD %0, %1(s64) 108 G_STORE %2, %0 :: (store 1 into %ir.addr) 109 RET 0 110... 111