@@ -34,7 +34,7 @@ define void @test_versioned_with_sext_use(i32 %offset, ptr %dst) {
34
34
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i32, ptr [[DST]], i64 [[TMP3]]
35
35
; CHECK-NEXT: [[TMP5:%.*]] = getelementptr i32, ptr [[TMP4]], i32 0
36
36
; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr [[TMP5]], align 8
37
- ; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[TMP3]], [[OFFSET_EXT]]
37
+ ; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[TMP3]], 1
38
38
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
39
39
; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i64 [[INDEX_NEXT]], 200
40
40
; CHECK-NEXT: br i1 [[TMP7]], label [[MIDDLE_BLOCK]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
@@ -110,7 +110,7 @@ define void @test_versioned_with_zext_use(i32 %offset, ptr %dst) {
110
110
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i32, ptr [[DST]], i64 [[TMP3]]
111
111
; CHECK-NEXT: [[TMP5:%.*]] = getelementptr i32, ptr [[TMP4]], i32 0
112
112
; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr [[TMP5]], align 8
113
- ; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[TMP3]], [[OFFSET_EXT]]
113
+ ; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[TMP3]], 1
114
114
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
115
115
; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i64 [[INDEX_NEXT]], 200
116
116
; CHECK-NEXT: br i1 [[TMP7]], label [[MIDDLE_BLOCK]], label [[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
@@ -165,38 +165,23 @@ define void @versioned_sext_use_in_gep(i32 %scale, ptr %dst, i64 %scale.2) {
165
165
; CHECK-NEXT: [[IDENT_CHECK:%.*]] = icmp ne i32 [[SCALE]], 1
166
166
; CHECK-NEXT: br i1 [[IDENT_CHECK]], label [[SCALAR_PH]], label [[VECTOR_PH:%.*]]
167
167
; CHECK: vector.ph:
168
- ; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x i64> poison, i64 [[SCALE_EXT]], i64 0
169
- ; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <4 x i64> [[BROADCAST_SPLATINSERT]], <4 x i64> poison, <4 x i32> zeroinitializer
170
- ; CHECK-NEXT: [[BROADCAST_SPLATINSERT1:%.*]] = insertelement <4 x i64> poison, i64 [[SCALE_2]], i64 0
171
- ; CHECK-NEXT: [[BROADCAST_SPLAT2:%.*]] = shufflevector <4 x i64> [[BROADCAST_SPLATINSERT1]], <4 x i64> poison, <4 x i32> zeroinitializer
172
168
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
173
169
; CHECK: vector.body:
174
170
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
175
- ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <4 x i64> [ <i64 0, i64 1, i64 2, i64 3>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ]
176
- ; CHECK-NEXT: [[TMP0:%.*]] = mul <4 x i64> [[VEC_IND]], [[BROADCAST_SPLAT]]
177
- ; CHECK-NEXT: [[TMP1:%.*]] = extractelement <4 x i64> [[TMP0]], i32 0
178
- ; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP1]]
179
- ; CHECK-NEXT: [[TMP3:%.*]] = extractelement <4 x i64> [[TMP0]], i32 1
180
- ; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP3]]
181
- ; CHECK-NEXT: [[TMP5:%.*]] = extractelement <4 x i64> [[TMP0]], i32 2
182
- ; CHECK-NEXT: [[TMP6:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP5]]
183
- ; CHECK-NEXT: [[TMP7:%.*]] = extractelement <4 x i64> [[TMP0]], i32 3
184
- ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP7]]
185
- ; CHECK-NEXT: [[TMP9:%.*]] = mul <4 x i64> [[BROADCAST_SPLAT]], [[BROADCAST_SPLAT2]]
186
- ; CHECK-NEXT: [[TMP10:%.*]] = extractelement <4 x i64> [[TMP9]], i32 0
171
+ ; CHECK-NEXT: [[TMP10:%.*]] = add i64 [[INDEX]], 0
172
+ ; CHECK-NEXT: [[TMP12:%.*]] = add i64 [[INDEX]], 1
173
+ ; CHECK-NEXT: [[TMP14:%.*]] = add i64 [[INDEX]], 2
174
+ ; CHECK-NEXT: [[TMP16:%.*]] = add i64 [[INDEX]], 3
187
175
; CHECK-NEXT: [[TMP11:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP10]]
188
- ; CHECK-NEXT: [[TMP12:%.*]] = extractelement <4 x i64> [[TMP9]], i32 1
189
176
; CHECK-NEXT: [[TMP13:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP12]]
190
- ; CHECK-NEXT: [[TMP14:%.*]] = extractelement <4 x i64> [[TMP9]], i32 2
191
177
; CHECK-NEXT: [[TMP15:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP14]]
192
- ; CHECK-NEXT: [[TMP16:%.*]] = extractelement <4 x i64> [[TMP9]], i32 3
193
178
; CHECK-NEXT: [[TMP17:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP16]]
194
- ; CHECK-NEXT: store ptr [[TMP11]], ptr [[TMP2]], align 8
195
- ; CHECK-NEXT: store ptr [[TMP13]], ptr [[TMP4]], align 8
196
- ; CHECK-NEXT: store ptr [[TMP15]], ptr [[TMP6]], align 8
197
- ; CHECK-NEXT: store ptr [[TMP17]], ptr [[TMP8]], align 8
179
+ ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[DST]], i64 [[SCALE_2]]
180
+ ; CHECK-NEXT: store ptr [[TMP8]], ptr [[TMP11]], align 8
181
+ ; CHECK-NEXT: store ptr [[TMP8]], ptr [[TMP13]], align 8
182
+ ; CHECK-NEXT: store ptr [[TMP8]], ptr [[TMP15]], align 8
183
+ ; CHECK-NEXT: store ptr [[TMP8]], ptr [[TMP17]], align 8
198
184
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
199
- ; CHECK-NEXT: [[VEC_IND_NEXT]] = add <4 x i64> [[VEC_IND]], <i64 4, i64 4, i64 4, i64 4>
200
185
; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], 256
201
186
; CHECK-NEXT: br i1 [[TMP18]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
202
187
; CHECK: middle.block:
@@ -282,7 +267,7 @@ define void @test_versioned_with_different_uses(i32 %offset, ptr noalias %dst.1,
282
267
; CHECK-NEXT: [[TMP12:%.*]] = getelementptr i32, ptr [[DST_2]], i64 [[TMP3]]
283
268
; CHECK-NEXT: [[TMP13:%.*]] = getelementptr i32, ptr [[TMP12]], i32 0
284
269
; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr [[TMP13]], align 8
285
- ; CHECK-NEXT: [[TMP14:%.*]] = add i64 [[TMP3]], [[OFFSET_EXT]]
270
+ ; CHECK-NEXT: [[TMP14:%.*]] = add i64 [[TMP3]], 1
286
271
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
287
272
; CHECK-NEXT: [[TMP15:%.*]] = icmp eq i64 [[INDEX_NEXT]], 200
288
273
; CHECK-NEXT: br i1 [[TMP15]], label [[MIDDLE_BLOCK]], label [[VECTOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]]
@@ -376,8 +361,7 @@ define void @test_versioned_with_non_ex_use(i32 %offset, ptr noalias %dst.1, ptr
376
361
; CHECK-NEXT: store i32 0, ptr [[TMP14]], align 8
377
362
; CHECK-NEXT: store i32 0, ptr [[TMP16]], align 8
378
363
; CHECK-NEXT: store i32 0, ptr [[TMP18]], align 8
379
- ; CHECK-NEXT: [[TMP19:%.*]] = mul i64 [[TMP9]], [[OFFSET_EXT]]
380
- ; CHECK-NEXT: [[TMP20:%.*]] = getelementptr i32, ptr [[DST_2]], i64 [[TMP19]]
364
+ ; CHECK-NEXT: [[TMP20:%.*]] = getelementptr i32, ptr [[DST_2]], i64 [[TMP9]]
381
365
; CHECK-NEXT: [[TMP21:%.*]] = getelementptr i32, ptr [[TMP20]], i32 0
382
366
; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr [[TMP21]], align 8
383
367
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
0 commit comments