@@ -6,7 +6,7 @@ define void @inboundsPossiblyNegative(ptr %in.ptr, i64 %in.idx1) {
6
6
; CHECK-SAME: ptr [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0:[0-9]+]] {
7
7
; CHECK-NEXT: entry:
8
8
; CHECK-NEXT: [[TMP0:%.*]] = getelementptr <2 x i8>, ptr [[IN_PTR]], i64 [[IN_IDX1]]
9
- ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr <2 x i8>, ptr [[TMP0]], i32 1
9
+ ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr <2 x i8>, ptr [[TMP0]], i64 1
10
10
; CHECK-NEXT: ret void
11
11
;
12
12
entry:
@@ -145,7 +145,7 @@ entry:
145
145
}
146
146
147
147
define void @vectorType1 (ptr %in.ptr , i64 %in.idx1 ) {
148
- ; CHECK-LABEL: define void @badVectorType (
148
+ ; CHECK-LABEL: define void @vectorType1 (
149
149
; CHECK-SAME: ptr [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0]] {
150
150
; CHECK-NEXT: entry:
151
151
; CHECK-NEXT: [[IN_IDX1_NNEG:%.*]] = and i64 [[IN_IDX1]], 2147483647
@@ -161,7 +161,7 @@ entry:
161
161
}
162
162
163
163
define void @vectorType2 (ptr %in.ptr , i64 %in.idx1 ) {
164
- ; CHECK-LABEL: define void @badVectorType2 (
164
+ ; CHECK-LABEL: define void @vectorType2 (
165
165
; CHECK-SAME: ptr [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0]] {
166
166
; CHECK-NEXT: entry:
167
167
; CHECK-NEXT: [[IN_IDX1_NNEG:%.*]] = and i64 [[IN_IDX1]], 2147483647
@@ -176,6 +176,87 @@ entry:
176
176
ret void
177
177
}
178
178
179
+ define void @vectorType3 (ptr %in.ptr , i64 %in.idx1 ) {
180
+ ; CHECK-LABEL: define void @vectorType3(
181
+ ; CHECK-SAME: ptr [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0]] {
182
+ ; CHECK-NEXT: entry:
183
+ ; CHECK-NEXT: [[IN_IDX1_NNEG:%.*]] = and i64 [[IN_IDX1]], 2147483647
184
+ ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds ptr, ptr [[IN_PTR]], i64 [[IN_IDX1_NNEG]]
185
+ ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds <4 x ptr>, ptr [[TMP0]], i32 1
186
+ ; CHECK-NEXT: ret void
187
+ ;
188
+ entry:
189
+ %in.idx1.nneg = and i64 %in.idx1 , 2147483647
190
+ %const1 = getelementptr inbounds <4 x ptr >, ptr %in.ptr , i32 1
191
+ %idx1 = getelementptr inbounds ptr , ptr %const1 , i64 %in.idx1.nneg
192
+ ret void
193
+ }
194
+
195
+ define void @vectorType4 (ptr %in.ptr , i64 %in.idx1 ) {
196
+ ; CHECK-LABEL: define void @vectorType4(
197
+ ; CHECK-SAME: ptr [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0]] {
198
+ ; CHECK-NEXT: entry:
199
+ ; CHECK-NEXT: [[IN_IDX1_NNEG:%.*]] = and i64 [[IN_IDX1]], 2147483647
200
+ ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds <8 x ptr addrspace(1)>, ptr [[IN_PTR]], i64 [[IN_IDX1_NNEG]]
201
+ ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds <4 x ptr>, ptr [[TMP0]], i32 3
202
+ ; CHECK-NEXT: ret void
203
+ ;
204
+ entry:
205
+ %in.idx1.nneg = and i64 %in.idx1 , 2147483647
206
+ %const1 = getelementptr inbounds <4 x ptr >, ptr %in.ptr , i32 3
207
+ %idx1 = getelementptr inbounds <8 x ptr addrspace (1 )>, ptr %const1 , i64 %in.idx1.nneg
208
+ ret void
209
+ }
210
+
211
+
212
+ define void @ptrType (ptr %in.ptr , i64 %in.idx1 ) {
213
+ ; CHECK-LABEL: define void @ptrType(
214
+ ; CHECK-SAME: ptr [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0]] {
215
+ ; CHECK-NEXT: entry:
216
+ ; CHECK-NEXT: [[IN_IDX1_NNEG:%.*]] = and i64 [[IN_IDX1]], 2147483647
217
+ ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds ptr, ptr [[IN_PTR]], i64 [[IN_IDX1_NNEG]]
218
+ ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds <4 x ptr>, ptr [[TMP0]], i32 1
219
+ ; CHECK-NEXT: ret void
220
+ ;
221
+ entry:
222
+ %in.idx1.nneg = and i64 %in.idx1 , 2147483647
223
+ %const1 = getelementptr inbounds <4 x ptr >, ptr %in.ptr , i32 1
224
+ %idx1 = getelementptr inbounds ptr , ptr %const1 , i64 %in.idx1.nneg
225
+ ret void
226
+ }
227
+
228
+ define void @ptrType2 (ptr %in.ptr , i64 %in.idx1 ) {
229
+ ; CHECK-LABEL: define void @ptrType2(
230
+ ; CHECK-SAME: ptr [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0]] {
231
+ ; CHECK-NEXT: entry:
232
+ ; CHECK-NEXT: [[IN_IDX1_NNEG:%.*]] = and i64 [[IN_IDX1]], 2147483647
233
+ ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds i64, ptr [[IN_PTR]], i64 [[IN_IDX1_NNEG]]
234
+ ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds ptr addrspace(3), ptr [[TMP0]], i32 3
235
+ ; CHECK-NEXT: ret void
236
+ ;
237
+ entry:
238
+ %in.idx1.nneg = and i64 %in.idx1 , 2147483647
239
+ %const1 = getelementptr inbounds ptr addrspace (3 ), ptr %in.ptr , i32 3
240
+ %idx1 = getelementptr inbounds i64 , ptr %const1 , i64 %in.idx1.nneg
241
+ ret void
242
+ }
243
+
244
+ define void @ptrType3 (ptr %in.ptr , i64 %in.idx1 ) {
245
+ ; CHECK-LABEL: define void @ptrType3(
246
+ ; CHECK-SAME: ptr [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0]] {
247
+ ; CHECK-NEXT: entry:
248
+ ; CHECK-NEXT: [[IN_IDX1_NNEG:%.*]] = and i64 [[IN_IDX1]], 2147483647
249
+ ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds i16, ptr [[IN_PTR]], i64 [[IN_IDX1_NNEG]]
250
+ ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds ptr addrspace(7), ptr [[TMP0]], i32 3
251
+ ; CHECK-NEXT: ret void
252
+ ;
253
+ entry:
254
+ %in.idx1.nneg = and i64 %in.idx1 , 2147483647
255
+ %const1 = getelementptr inbounds ptr addrspace (7 ), ptr %in.ptr , i32 3
256
+ %idx1 = getelementptr inbounds i16 , ptr %const1 , i64 %in.idx1.nneg
257
+ ret void
258
+ }
259
+
179
260
define void @addrspace1 (ptr addrspace (1 ) %in.ptr , i64 %in.idx1 ) {
180
261
; CHECK-LABEL: define void @addrspace1(
181
262
; CHECK-SAME: ptr addrspace(1) [[IN_PTR:%.*]], i64 [[IN_IDX1:%.*]]) #[[ATTR0]] {
0 commit comments