@@ -207,10 +207,10 @@ define i1 @logical_and_icmp_subvec(<4 x i32> %x) {
207
207
208
208
define i1 @logical_and_icmp_clamp (<4 x i32 > %x ) {
209
209
; 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)
214
214
; CHECK-NEXT: [[TMP5:%.*]] = freeze <8 x i1> [[TMP4]]
215
215
; CHECK-NEXT: [[TMP6:%.*]] = call i1 @llvm.vector.reduce.and.v8i1(<8 x i1> [[TMP5]])
216
216
; CHECK-NEXT: ret i1 [[TMP6]]
@@ -239,12 +239,12 @@ define i1 @logical_and_icmp_clamp(<4 x i32> %x) {
239
239
240
240
define i1 @logical_and_icmp_clamp_extra_use_cmp (<4 x i32 > %x ) {
241
241
; 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
247
244
; 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)
248
248
; CHECK-NEXT: [[TMP6:%.*]] = freeze <8 x i1> [[TMP4]]
249
249
; CHECK-NEXT: [[TMP7:%.*]] = call i1 @llvm.vector.reduce.and.v8i1(<8 x i1> [[TMP6]])
250
250
; CHECK-NEXT: ret i1 [[TMP7]]
0 commit comments