@@ -207,10 +207,10 @@ define i1 @logical_and_icmp_subvec(<4 x i32> %x) {
207207
208208define i1 @logical_and_icmp_clamp (<4 x i32 > %x ) {
209209; CHECK-LABEL: @logical_and_icmp_clamp(
210- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i32> [[X:%.*]], <4 x i32> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
211- ; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt <8 x i32> [[TMP1 ]], <i32 17, i32 17, i32 17, i32 17, i32 42, i32 42, i32 42, i32 42>
212- ; CHECK-NEXT: [[TMP3:%.*]] = icmp slt <8 x i32 > [[TMP1 ]], <i32 17 , i32 17 , i32 17 , i32 17 , i32 42 , i32 42 , i32 42 , i32 42 >
213- ; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <8 x i1> [[TMP2]], <8 x i1> [[TMP3]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15>
210+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <4 x i32> [[X:%.*]], splat ( i32 42)
211+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt <4 x i32> [[X ]], splat ( i32 17)
212+ ; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <4 x i1 > [[TMP2 ]], <4 x i1> poison, <8 x i32> <i32 0 , i32 1 , i32 2 , i32 3 , i32 poison , i32 poison , i32 poison , i32 poison >
213+ ; CHECK-NEXT: [[TMP4:%.*]] = call <8 x i1> @llvm.vector.insert.v8i1.v4i1( <8 x i1> [[TMP3]], <4 x i1> [[TMP1]], i64 4)
214214; CHECK-NEXT: [[TMP5:%.*]] = freeze <8 x i1> [[TMP4]]
215215; CHECK-NEXT: [[TMP6:%.*]] = call i1 @llvm.vector.reduce.and.v8i1(<8 x i1> [[TMP5]])
216216; CHECK-NEXT: ret i1 [[TMP6]]
@@ -239,12 +239,12 @@ define i1 @logical_and_icmp_clamp(<4 x i32> %x) {
239239
240240define i1 @logical_and_icmp_clamp_extra_use_cmp (<4 x i32 > %x ) {
241241; CHECK-LABEL: @logical_and_icmp_clamp_extra_use_cmp(
242- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i32> [[X:%.*]], <4 x i32> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
243- ; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt <8 x i32> [[TMP1]], <i32 17, i32 17, i32 17, i32 17, i32 42, i32 42, i32 42, i32 42>
244- ; CHECK-NEXT: [[TMP3:%.*]] = icmp slt <8 x i32> [[TMP1]], <i32 17, i32 17, i32 17, i32 17, i32 42, i32 42, i32 42, i32 42>
245- ; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <8 x i1> [[TMP2]], <8 x i1> [[TMP3]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15>
246- ; CHECK-NEXT: [[TMP5:%.*]] = extractelement <8 x i1> [[TMP4]], i32 6
242+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <4 x i32> [[X:%.*]], splat (i32 42)
243+ ; CHECK-NEXT: [[TMP5:%.*]] = extractelement <4 x i1> [[TMP1]], i32 2
247244; CHECK-NEXT: call void @use1(i1 [[TMP5]])
245+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt <4 x i32> [[X]], splat (i32 17)
246+ ; CHECK-NEXT: [[TMP8:%.*]] = shufflevector <4 x i1> [[TMP3]], <4 x i1> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison>
247+ ; CHECK-NEXT: [[TMP4:%.*]] = call <8 x i1> @llvm.vector.insert.v8i1.v4i1(<8 x i1> [[TMP8]], <4 x i1> [[TMP1]], i64 4)
248248; CHECK-NEXT: [[TMP6:%.*]] = freeze <8 x i1> [[TMP4]]
249249; CHECK-NEXT: [[TMP7:%.*]] = call i1 @llvm.vector.reduce.and.v8i1(<8 x i1> [[TMP6]])
250250; CHECK-NEXT: ret i1 [[TMP7]]
0 commit comments