Skip to content

Commit 96e4b81

Browse files
committed
Address review comment
1 parent 48ef270 commit 96e4b81

File tree

1 file changed

+38
-17
lines changed

1 file changed

+38
-17
lines changed

llvm/test/Transforms/LoopVectorize/optsize.ll

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -248,22 +248,29 @@ for.end: ; preds = %for.body
248248
;
249249
@cm_array = external global [2592 x i16], align 1
250250

251-
define void @pr43371() optsize {
251+
define void @pr43371(i16 %val) optsize {
252252
;
253253
; CHECK-LABEL: define void @pr43371(
254-
; CHECK-SAME: ) #[[ATTR0]] {
254+
; CHECK-SAME: i16 [[VAL:%.*]]) #[[ATTR0]] {
255255
; CHECK-NEXT: [[ENTRY:.*:]]
256256
; CHECK-NEXT: br label %[[VECTOR_PH:.*]]
257257
; CHECK: [[VECTOR_PH]]:
258+
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <2 x i16> poison, i16 [[VAL]], i64 0
259+
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <2 x i16> [[BROADCAST_SPLATINSERT]], <2 x i16> poison, <2 x i32> zeroinitializer
258260
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
259261
; CHECK: [[VECTOR_BODY]]:
260262
; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
261-
; CHECK-NEXT: [[OFFSET_IDX:%.*]] = trunc i32 [[INDEX]] to i16
262-
; CHECK-NEXT: [[TMP0:%.*]] = add i16 3, [[OFFSET_IDX]]
263-
; CHECK-NEXT: [[TMP4:%.*]] = zext i16 [[TMP0]] to i32
263+
; CHECK-NEXT: [[VEC_IND:%.*]] = phi <2 x i16> [ <i16 0, i16 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[VECTOR_BODY]] ]
264+
; CHECK-NEXT: [[TMP0:%.*]] = add <2 x i16> [[BROADCAST_SPLAT]], [[VEC_IND]]
265+
; CHECK-NEXT: [[TMP1:%.*]] = zext <2 x i16> [[TMP0]] to <2 x i32>
266+
; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x i32> [[TMP1]], i32 0
267+
; CHECK-NEXT: [[TMP3:%.*]] = extractelement <2 x i32> [[TMP1]], i32 1
264268
; CHECK-NEXT: [[TMP5:%.*]] = getelementptr [2592 x i16], ptr @cm_array, i32 0, i32 [[TMP4]]
265-
; CHECK-NEXT: store <2 x i16> zeroinitializer, ptr [[TMP5]], align 1
269+
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr [2592 x i16], ptr @cm_array, i32 0, i32 [[TMP3]]
270+
; CHECK-NEXT: store i16 0, ptr [[TMP5]], align 1
271+
; CHECK-NEXT: store i16 0, ptr [[TMP7]], align 1
266272
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 2
273+
; CHECK-NEXT: [[VEC_IND_NEXT]] = add <2 x i16> [[VEC_IND]], splat (i16 2)
267274
; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i32 [[INDEX_NEXT]], 756
268275
; CHECK-NEXT: br i1 [[TMP6]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP15:![0-9]+]]
269276
; CHECK: [[MIDDLE_BLOCK]]:
@@ -272,19 +279,26 @@ define void @pr43371() optsize {
272279
; CHECK-NEXT: unreachable
273280
;
274281
; PGSO-LABEL: define void @pr43371(
275-
; PGSO-SAME: ) #[[ATTR0]] {
282+
; PGSO-SAME: i16 [[VAL:%.*]]) #[[ATTR0]] {
276283
; PGSO-NEXT: [[ENTRY:.*:]]
277284
; PGSO-NEXT: br label %[[VECTOR_PH:.*]]
278285
; PGSO: [[VECTOR_PH]]:
286+
; PGSO-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <2 x i16> poison, i16 [[VAL]], i64 0
287+
; PGSO-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <2 x i16> [[BROADCAST_SPLATINSERT]], <2 x i16> poison, <2 x i32> zeroinitializer
279288
; PGSO-NEXT: br label %[[VECTOR_BODY:.*]]
280289
; PGSO: [[VECTOR_BODY]]:
281290
; PGSO-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
282-
; PGSO-NEXT: [[OFFSET_IDX:%.*]] = trunc i32 [[INDEX]] to i16
283-
; PGSO-NEXT: [[TMP0:%.*]] = add i16 3, [[OFFSET_IDX]]
284-
; PGSO-NEXT: [[TMP4:%.*]] = zext i16 [[TMP0]] to i32
291+
; PGSO-NEXT: [[VEC_IND:%.*]] = phi <2 x i16> [ <i16 0, i16 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[VECTOR_BODY]] ]
292+
; PGSO-NEXT: [[TMP0:%.*]] = add <2 x i16> [[BROADCAST_SPLAT]], [[VEC_IND]]
293+
; PGSO-NEXT: [[TMP1:%.*]] = zext <2 x i16> [[TMP0]] to <2 x i32>
294+
; PGSO-NEXT: [[TMP4:%.*]] = extractelement <2 x i32> [[TMP1]], i32 0
295+
; PGSO-NEXT: [[TMP3:%.*]] = extractelement <2 x i32> [[TMP1]], i32 1
285296
; PGSO-NEXT: [[TMP5:%.*]] = getelementptr [2592 x i16], ptr @cm_array, i32 0, i32 [[TMP4]]
286-
; PGSO-NEXT: store <2 x i16> zeroinitializer, ptr [[TMP5]], align 1
297+
; PGSO-NEXT: [[TMP7:%.*]] = getelementptr [2592 x i16], ptr @cm_array, i32 0, i32 [[TMP3]]
298+
; PGSO-NEXT: store i16 0, ptr [[TMP5]], align 1
299+
; PGSO-NEXT: store i16 0, ptr [[TMP7]], align 1
287300
; PGSO-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 2
301+
; PGSO-NEXT: [[VEC_IND_NEXT]] = add <2 x i16> [[VEC_IND]], splat (i16 2)
288302
; PGSO-NEXT: [[TMP6:%.*]] = icmp eq i32 [[INDEX_NEXT]], 756
289303
; PGSO-NEXT: br i1 [[TMP6]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP15:![0-9]+]]
290304
; PGSO: [[MIDDLE_BLOCK]]:
@@ -293,19 +307,26 @@ define void @pr43371() optsize {
293307
; PGSO-NEXT: unreachable
294308
;
295309
; NPGSO-LABEL: define void @pr43371(
296-
; NPGSO-SAME: ) #[[ATTR0]] {
310+
; NPGSO-SAME: i16 [[VAL:%.*]]) #[[ATTR0]] {
297311
; NPGSO-NEXT: [[ENTRY:.*:]]
298312
; NPGSO-NEXT: br label %[[VECTOR_PH:.*]]
299313
; NPGSO: [[VECTOR_PH]]:
314+
; NPGSO-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <2 x i16> poison, i16 [[VAL]], i64 0
315+
; NPGSO-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <2 x i16> [[BROADCAST_SPLATINSERT]], <2 x i16> poison, <2 x i32> zeroinitializer
300316
; NPGSO-NEXT: br label %[[VECTOR_BODY:.*]]
301317
; NPGSO: [[VECTOR_BODY]]:
302318
; NPGSO-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
303-
; NPGSO-NEXT: [[OFFSET_IDX:%.*]] = trunc i32 [[INDEX]] to i16
304-
; NPGSO-NEXT: [[TMP0:%.*]] = add i16 3, [[OFFSET_IDX]]
305-
; NPGSO-NEXT: [[TMP4:%.*]] = zext i16 [[TMP0]] to i32
319+
; NPGSO-NEXT: [[VEC_IND:%.*]] = phi <2 x i16> [ <i16 0, i16 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[VECTOR_BODY]] ]
320+
; NPGSO-NEXT: [[TMP0:%.*]] = add <2 x i16> [[BROADCAST_SPLAT]], [[VEC_IND]]
321+
; NPGSO-NEXT: [[TMP1:%.*]] = zext <2 x i16> [[TMP0]] to <2 x i32>
322+
; NPGSO-NEXT: [[TMP4:%.*]] = extractelement <2 x i32> [[TMP1]], i32 0
323+
; NPGSO-NEXT: [[TMP3:%.*]] = extractelement <2 x i32> [[TMP1]], i32 1
306324
; NPGSO-NEXT: [[TMP5:%.*]] = getelementptr [2592 x i16], ptr @cm_array, i32 0, i32 [[TMP4]]
307-
; NPGSO-NEXT: store <2 x i16> zeroinitializer, ptr [[TMP5]], align 1
325+
; NPGSO-NEXT: [[TMP7:%.*]] = getelementptr [2592 x i16], ptr @cm_array, i32 0, i32 [[TMP3]]
326+
; NPGSO-NEXT: store i16 0, ptr [[TMP5]], align 1
327+
; NPGSO-NEXT: store i16 0, ptr [[TMP7]], align 1
308328
; NPGSO-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 2
329+
; NPGSO-NEXT: [[VEC_IND_NEXT]] = add <2 x i16> [[VEC_IND]], splat (i16 2)
309330
; NPGSO-NEXT: [[TMP6:%.*]] = icmp eq i32 [[INDEX_NEXT]], 756
310331
; NPGSO-NEXT: br i1 [[TMP6]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP19:![0-9]+]]
311332
; NPGSO: [[MIDDLE_BLOCK]]:
@@ -325,7 +346,7 @@ for.cond.cleanup28:
325346

326347
for.body29:
327348
%i24.0170 = phi i16 [ 0, %entry], [ %inc37, %for.body29]
328-
%add33 = add i16 3, %i24.0170
349+
%add33 = add i16 %val, %i24.0170
329350
%idxprom34 = zext i16 %add33 to i32
330351
%arrayidx35 = getelementptr [2592 x i16], ptr @cm_array, i32 0, i32 %idxprom34
331352
store i16 0, ptr %arrayidx35, align 1

0 commit comments

Comments
 (0)