Skip to content

Commit d2f235e

Browse files
committed
More small type tests
1 parent 0adef1d commit d2f235e

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

llvm/test/Transforms/InstCombine/vector-reductions.ll

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,46 @@ define i1 @constant_multiplied_non_power_of_2_i1(i1 %0) {
410410
;
411411
%2 = insertelement <8 x i1> poison, i1 %0, i32 0
412412
%3 = shufflevector <8 x i1> %2, <8 x i1> poison, <8 x i32> zeroinitializer
413-
%4 = tail call i1 @llvm.vector.reduce.add.v6i1(<8 x i1> %3)
413+
%4 = tail call i1 @llvm.vector.reduce.add.v8i1(<8 x i1> %3)
414414
ret i1 %4
415415
}
416+
417+
define i1 @constant_multiplied_non_power_of_2_i1x4(i1 %0) {
418+
; CHECK-LABEL: @constant_multiplied_non_power_of_2_i1x4(
419+
; CHECK-NEXT: [[TMP2:%.*]] = insertelement <4 x i1> poison, i1 [[TMP0:%.*]], i64 0
420+
; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <4 x i1> [[TMP2]], <4 x i1> poison, <4 x i32> zeroinitializer
421+
; CHECK-NEXT: [[TMP4:%.*]] = bitcast <4 x i1> [[TMP3]] to i4
422+
; CHECK-NEXT: [[TMP5:%.*]] = call range(i4 0, 5) i4 @llvm.ctpop.i4(i4 [[TMP4]])
423+
; CHECK-NEXT: [[TMP6:%.*]] = trunc i4 [[TMP5]] to i1
424+
; CHECK-NEXT: ret i1 [[TMP6]]
425+
;
426+
%2 = insertelement <4 x i1> poison, i1 %0, i32 0
427+
%3 = shufflevector <4 x i1> %2, <4 x i1> poison, <4 x i32> zeroinitializer
428+
%4 = tail call i1 @llvm.vector.reduce.add.v4i1(<4 x i1> %3)
429+
ret i1 %4
430+
}
431+
432+
define i1 @constant_multiplied_non_power_of_2_i1x2(i1 %0) {
433+
; CHECK-LABEL: @constant_multiplied_non_power_of_2_i1x2(
434+
; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x i1> poison, i1 [[TMP0:%.*]], i64 0
435+
; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <2 x i1> [[TMP2]], <2 x i1> poison, <2 x i32> zeroinitializer
436+
; CHECK-NEXT: [[TMP4:%.*]] = bitcast <2 x i1> [[TMP3]] to i2
437+
; CHECK-NEXT: [[TMP5:%.*]] = call range(i2 0, -1) i2 @llvm.ctpop.i2(i2 [[TMP4]])
438+
; CHECK-NEXT: [[TMP6:%.*]] = trunc i2 [[TMP5]] to i1
439+
; CHECK-NEXT: ret i1 [[TMP6]]
440+
;
441+
%2 = insertelement <2 x i1> poison, i1 %0, i32 0
442+
%3 = shufflevector <2 x i1> %2, <2 x i1> poison, <2 x i32> zeroinitializer
443+
%4 = tail call i1 @llvm.vector.reduce.add.v2i1(<2 x i1> %3)
444+
ret i1 %4
445+
}
446+
447+
define i2 @constant_multiplied_non_power_of_2_i2x4(i2 %0) {
448+
; CHECK-LABEL: @constant_multiplied_non_power_of_2_i2x4(
449+
; CHECK-NEXT: ret i2 0
450+
;
451+
%2 = insertelement <4 x i2> poison, i2 %0, i32 0
452+
%3 = shufflevector <4 x i2> %2, <4 x i2> poison, <4 x i32> zeroinitializer
453+
%4 = tail call i2 @llvm.vector.reduce.add.v4i2(<4 x i2> %3)
454+
ret i2 %4
455+
}

0 commit comments

Comments
 (0)