@@ -70,46 +70,37 @@ define void @redundant_or_1(ptr %dst, i1 %c.0, i1 %c.1) {
7070; CHECK-NEXT: [[BROADCAST_SPLAT2:%.*]] = shufflevector <4 x i1> [[BROADCAST_SPLATINSERT1]], <4 x i1> poison, <4 x i32> zeroinitializer
7171; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
7272; CHECK: vector.body:
73- ; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_CONTINUE8:%.*]] ]
74- ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <4 x i8> [ <i8 0, i8 1, i8 2, i8 3>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE8]] ]
75- ; CHECK-NEXT: [[TMP1:%.*]] = icmp ule <4 x i8> [[VEC_IND]], splat (i8 2)
76- ; CHECK-NEXT: [[TMP2:%.*]] = select <4 x i1> [[TMP1]], <4 x i1> [[TMP0]], <4 x i1> zeroinitializer
73+ ; CHECK-NEXT: [[TMP2:%.*]] = select <4 x i1> <i1 true, i1 true, i1 true, i1 false>, <4 x i1> [[TMP0]], <4 x i1> zeroinitializer
7774; CHECK-NEXT: [[TMP5:%.*]] = select <4 x i1> [[TMP2]], <4 x i1> [[BROADCAST_SPLAT2]], <4 x i1> zeroinitializer
7875; CHECK-NEXT: [[TMP6:%.*]] = extractelement <4 x i1> [[TMP5]], i32 0
7976; CHECK-NEXT: br i1 [[TMP6]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]
8077; CHECK: pred.store.if:
81- ; CHECK-NEXT: [[TMP7:%.*]] = add i32 [[INDEX]], 0
82- ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds i32, ptr [[DST:%.*]], i32 [[TMP7]]
78+ ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds i32, ptr [[DST:%.*]], i32 0
8379; CHECK-NEXT: store i32 0, ptr [[TMP8]], align 4
8480; CHECK-NEXT: br label [[PRED_STORE_CONTINUE]]
8581; CHECK: pred.store.continue:
8682; CHECK-NEXT: [[TMP9:%.*]] = extractelement <4 x i1> [[TMP5]], i32 1
8783; CHECK-NEXT: br i1 [[TMP9]], label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CONTINUE4:%.*]]
8884; CHECK: pred.store.if3:
89- ; CHECK-NEXT: [[TMP10:%.*]] = add i32 [[INDEX]], 1
90- ; CHECK-NEXT: [[TMP11:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 [[TMP10]]
85+ ; CHECK-NEXT: [[TMP11:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 1
9186; CHECK-NEXT: store i32 0, ptr [[TMP11]], align 4
9287; CHECK-NEXT: br label [[PRED_STORE_CONTINUE4]]
9388; CHECK: pred.store.continue4:
9489; CHECK-NEXT: [[TMP12:%.*]] = extractelement <4 x i1> [[TMP5]], i32 2
9590; CHECK-NEXT: br i1 [[TMP12]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE6:%.*]]
9691; CHECK: pred.store.if5:
97- ; CHECK-NEXT: [[TMP13:%.*]] = add i32 [[INDEX]], 2
98- ; CHECK-NEXT: [[TMP14:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 [[TMP13]]
92+ ; CHECK-NEXT: [[TMP14:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 2
9993; CHECK-NEXT: store i32 0, ptr [[TMP14]], align 4
10094; CHECK-NEXT: br label [[PRED_STORE_CONTINUE6]]
10195; CHECK: pred.store.continue6:
10296; CHECK-NEXT: [[TMP15:%.*]] = extractelement <4 x i1> [[TMP5]], i32 3
103- ; CHECK-NEXT: br i1 [[TMP15]], label [[PRED_STORE_IF7:%.*]], label [[PRED_STORE_CONTINUE8]]
97+ ; CHECK-NEXT: br i1 [[TMP15]], label [[PRED_STORE_IF7:%.*]], label [[PRED_STORE_CONTINUE8:%.* ]]
10498; CHECK: pred.store.if7:
105- ; CHECK-NEXT: [[TMP16:%.*]] = add i32 [[INDEX]], 3
106- ; CHECK-NEXT: [[TMP17:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 [[TMP16]]
99+ ; CHECK-NEXT: [[TMP17:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 3
107100; CHECK-NEXT: store i32 0, ptr [[TMP17]], align 4
108101; CHECK-NEXT: br label [[PRED_STORE_CONTINUE8]]
109102; CHECK: pred.store.continue8:
110- ; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
111- ; CHECK-NEXT: [[VEC_IND_NEXT]] = add <4 x i8> [[VEC_IND]], splat (i8 4)
112- ; CHECK-NEXT: br i1 true, label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP3:![0-9]+]]
103+ ; CHECK-NEXT: br label [[MIDDLE_BLOCK:%.*]]
113104; CHECK: middle.block:
114105; CHECK-NEXT: br label [[EXIT:%.*]]
115106; CHECK: scalar.ph:
@@ -129,7 +120,7 @@ define void @redundant_or_1(ptr %dst, i1 %c.0, i1 %c.1) {
129120; CHECK: loop.latch:
130121; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i32 [[IV]], 1
131122; CHECK-NEXT: [[EC:%.*]] = icmp eq i32 [[IV_NEXT]], 3
132- ; CHECK-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP_HEADER]], !llvm.loop [[LOOP4 :![0-9]+]]
123+ ; CHECK-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP_HEADER]], !llvm.loop [[LOOP3 :![0-9]+]]
133124; CHECK: exit:
134125; CHECK-NEXT: ret void
135126;
@@ -172,46 +163,37 @@ define void @redundant_or_2(ptr %dst, i1 %c.0, i1 %c.1) {
172163; CHECK-NEXT: [[BROADCAST_SPLAT2:%.*]] = shufflevector <4 x i1> [[BROADCAST_SPLATINSERT1]], <4 x i1> poison, <4 x i32> zeroinitializer
173164; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
174165; CHECK: vector.body:
175- ; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_CONTINUE8:%.*]] ]
176- ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <4 x i8> [ <i8 0, i8 1, i8 2, i8 3>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE8]] ]
177- ; CHECK-NEXT: [[TMP2:%.*]] = icmp ule <4 x i8> [[VEC_IND]], splat (i8 2)
178- ; CHECK-NEXT: [[TMP3:%.*]] = select <4 x i1> [[TMP2]], <4 x i1> [[TMP0]], <4 x i1> zeroinitializer
166+ ; CHECK-NEXT: [[TMP3:%.*]] = select <4 x i1> <i1 true, i1 true, i1 true, i1 false>, <4 x i1> [[TMP0]], <4 x i1> zeroinitializer
179167; CHECK-NEXT: [[TMP4:%.*]] = select <4 x i1> [[TMP3]], <4 x i1> [[BROADCAST_SPLAT2]], <4 x i1> zeroinitializer
180168; CHECK-NEXT: [[TMP5:%.*]] = extractelement <4 x i1> [[TMP4]], i32 0
181169; CHECK-NEXT: br i1 [[TMP5]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]
182170; CHECK: pred.store.if:
183- ; CHECK-NEXT: [[TMP6:%.*]] = add i32 [[INDEX]], 0
184- ; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i32, ptr [[DST:%.*]], i32 [[TMP6]]
171+ ; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i32, ptr [[DST:%.*]], i32 0
185172; CHECK-NEXT: store i32 0, ptr [[TMP7]], align 4
186173; CHECK-NEXT: br label [[PRED_STORE_CONTINUE]]
187174; CHECK: pred.store.continue:
188175; CHECK-NEXT: [[TMP8:%.*]] = extractelement <4 x i1> [[TMP4]], i32 1
189176; CHECK-NEXT: br i1 [[TMP8]], label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CONTINUE4:%.*]]
190177; CHECK: pred.store.if3:
191- ; CHECK-NEXT: [[TMP9:%.*]] = add i32 [[INDEX]], 1
192- ; CHECK-NEXT: [[TMP10:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 [[TMP9]]
178+ ; CHECK-NEXT: [[TMP10:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 1
193179; CHECK-NEXT: store i32 0, ptr [[TMP10]], align 4
194180; CHECK-NEXT: br label [[PRED_STORE_CONTINUE4]]
195181; CHECK: pred.store.continue4:
196182; CHECK-NEXT: [[TMP11:%.*]] = extractelement <4 x i1> [[TMP4]], i32 2
197183; CHECK-NEXT: br i1 [[TMP11]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE6:%.*]]
198184; CHECK: pred.store.if5:
199- ; CHECK-NEXT: [[TMP12:%.*]] = add i32 [[INDEX]], 2
200- ; CHECK-NEXT: [[TMP13:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 [[TMP12]]
185+ ; CHECK-NEXT: [[TMP13:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 2
201186; CHECK-NEXT: store i32 0, ptr [[TMP13]], align 4
202187; CHECK-NEXT: br label [[PRED_STORE_CONTINUE6]]
203188; CHECK: pred.store.continue6:
204189; CHECK-NEXT: [[TMP14:%.*]] = extractelement <4 x i1> [[TMP4]], i32 3
205- ; CHECK-NEXT: br i1 [[TMP14]], label [[PRED_STORE_IF7:%.*]], label [[PRED_STORE_CONTINUE8]]
190+ ; CHECK-NEXT: br i1 [[TMP14]], label [[PRED_STORE_IF7:%.*]], label [[PRED_STORE_CONTINUE8:%.* ]]
206191; CHECK: pred.store.if7:
207- ; CHECK-NEXT: [[TMP15:%.*]] = add i32 [[INDEX]], 3
208- ; CHECK-NEXT: [[TMP16:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 [[TMP15]]
192+ ; CHECK-NEXT: [[TMP16:%.*]] = getelementptr inbounds i32, ptr [[DST]], i32 3
209193; CHECK-NEXT: store i32 0, ptr [[TMP16]], align 4
210194; CHECK-NEXT: br label [[PRED_STORE_CONTINUE8]]
211195; CHECK: pred.store.continue8:
212- ; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
213- ; CHECK-NEXT: [[VEC_IND_NEXT]] = add <4 x i8> [[VEC_IND]], splat (i8 4)
214- ; CHECK-NEXT: br i1 true, label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP5:![0-9]+]]
196+ ; CHECK-NEXT: br label [[MIDDLE_BLOCK:%.*]]
215197; CHECK: middle.block:
216198; CHECK-NEXT: br label [[EXIT:%.*]]
217199; CHECK: scalar.ph:
@@ -231,7 +213,7 @@ define void @redundant_or_2(ptr %dst, i1 %c.0, i1 %c.1) {
231213; CHECK: loop.latch:
232214; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i32 [[IV]], 1
233215; CHECK-NEXT: [[EC:%.*]] = icmp eq i32 [[IV_NEXT]], 3
234- ; CHECK-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP_HEADER]], !llvm.loop [[LOOP6 :![0-9]+]]
216+ ; CHECK-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP_HEADER]], !llvm.loop [[LOOP4 :![0-9]+]]
235217; CHECK: exit:
236218; CHECK-NEXT: ret void
237219;
0 commit comments