@@ -134,22 +134,18 @@ define i16 @for_phi_removed(ptr %src) {
134134; UNROLL-NO-IC: [[VECTOR_BODY]]:
135135; UNROLL-NO-IC-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
136136; UNROLL-NO-IC-NEXT: [[TMP0:%.*]] = load i32, ptr [[SRC]], align 4
137- ; UNROLL-NO-IC-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x i32> poison, i32 [[TMP0]], i64 0
138- ; UNROLL-NO-IC-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <4 x i32> [[BROADCAST_SPLATINSERT]], <4 x i32> poison, <4 x i32> zeroinitializer
139- ; UNROLL-NO-IC-NEXT: [[TMP1:%.*]] = icmp eq <4 x i32> [[BROADCAST_SPLAT]], zeroinitializer
140- ; UNROLL-NO-IC-NEXT: [[TMP4:%.*]] = extractelement <4 x i1> [[TMP1]], i32 0
141- ; UNROLL-NO-IC-NEXT: [[TMP2:%.*]] = select i1 [[TMP4]], <4 x i16> splat (i16 1), <4 x i16> zeroinitializer
137+ ; UNROLL-NO-IC-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 0
138+ ; UNROLL-NO-IC-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i16 1, i16 0
142139; UNROLL-NO-IC-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 8
143140; UNROLL-NO-IC-NEXT: [[TMP3:%.*]] = icmp eq i32 [[INDEX_NEXT]], 104
144141; UNROLL-NO-IC-NEXT: br i1 [[TMP3]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
145142; UNROLL-NO-IC: [[MIDDLE_BLOCK]]:
146- ; UNROLL-NO-IC-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <4 x i16> [[TMP2]], i32 3
147143; UNROLL-NO-IC-NEXT: br label %[[SCALAR_PH:.*]]
148144; UNROLL-NO-IC: [[SCALAR_PH]]:
149145; UNROLL-NO-IC-NEXT: br label %[[LOOP:.*]]
150146; UNROLL-NO-IC: [[LOOP]]:
151147; UNROLL-NO-IC-NEXT: [[IV:%.*]] = phi i16 [ 104, %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
152- ; UNROLL-NO-IC-NEXT: [[P:%.*]] = phi i16 [ [[VECTOR_RECUR_EXTRACT ]], %[[SCALAR_PH]] ], [ [[SEL:%.*]], %[[LOOP]] ]
148+ ; UNROLL-NO-IC-NEXT: [[P:%.*]] = phi i16 [ [[TMP2 ]], %[[SCALAR_PH]] ], [ [[SEL:%.*]], %[[LOOP]] ]
153149; UNROLL-NO-IC-NEXT: [[L:%.*]] = load i32, ptr [[SRC]], align 4
154150; UNROLL-NO-IC-NEXT: [[C:%.*]] = icmp eq i32 [[L]], 0
155151; UNROLL-NO-IC-NEXT: [[SEL]] = select i1 [[C]], i16 1, i16 0
@@ -200,22 +196,18 @@ define i16 @for_phi_removed(ptr %src) {
200196; SINK-AFTER: [[VECTOR_BODY]]:
201197; SINK-AFTER-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
202198; SINK-AFTER-NEXT: [[TMP0:%.*]] = load i32, ptr [[SRC]], align 4
203- ; SINK-AFTER-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x i32> poison, i32 [[TMP0]], i64 0
204- ; SINK-AFTER-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <4 x i32> [[BROADCAST_SPLATINSERT]], <4 x i32> poison, <4 x i32> zeroinitializer
205- ; SINK-AFTER-NEXT: [[TMP1:%.*]] = icmp eq <4 x i32> [[BROADCAST_SPLAT]], zeroinitializer
206- ; SINK-AFTER-NEXT: [[TMP4:%.*]] = extractelement <4 x i1> [[TMP1]], i32 0
207- ; SINK-AFTER-NEXT: [[TMP2:%.*]] = select i1 [[TMP4]], <4 x i16> splat (i16 1), <4 x i16> zeroinitializer
199+ ; SINK-AFTER-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 0
200+ ; SINK-AFTER-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i16 1, i16 0
208201; SINK-AFTER-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
209202; SINK-AFTER-NEXT: [[TMP3:%.*]] = icmp eq i32 [[INDEX_NEXT]], 108
210203; SINK-AFTER-NEXT: br i1 [[TMP3]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
211204; SINK-AFTER: [[MIDDLE_BLOCK]]:
212- ; SINK-AFTER-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <4 x i16> [[TMP2]], i32 3
213205; SINK-AFTER-NEXT: br label %[[SCALAR_PH:.*]]
214206; SINK-AFTER: [[SCALAR_PH]]:
215207; SINK-AFTER-NEXT: br label %[[LOOP:.*]]
216208; SINK-AFTER: [[LOOP]]:
217209; SINK-AFTER-NEXT: [[IV:%.*]] = phi i16 [ 108, %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
218- ; SINK-AFTER-NEXT: [[P:%.*]] = phi i16 [ [[VECTOR_RECUR_EXTRACT ]], %[[SCALAR_PH]] ], [ [[SEL:%.*]], %[[LOOP]] ]
210+ ; SINK-AFTER-NEXT: [[P:%.*]] = phi i16 [ [[TMP2 ]], %[[SCALAR_PH]] ], [ [[SEL:%.*]], %[[LOOP]] ]
219211; SINK-AFTER-NEXT: [[L:%.*]] = load i32, ptr [[SRC]], align 4
220212; SINK-AFTER-NEXT: [[C:%.*]] = icmp eq i32 [[L]], 0
221213; SINK-AFTER-NEXT: [[SEL]] = select i1 [[C]], i16 1, i16 0
0 commit comments