• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_GEP [[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_GEP %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_GEP [[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_GEP %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_GEP [[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_GEP %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_GEP [[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_GEP %0, %1(s64)
108    G_STORE %2, %0 :: (store 1 into %ir.addr)
109    RET 0
110...
111