Skip to content

Commit 7914464

Browse files
committed
[PhaseOrdering][X86] blendv-select.ll - add test coverage for #66513
1 parent 06d4876 commit 7914464

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

llvm/test/Transforms/PhaseOrdering/X86/blendv-select.ll

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,65 @@ define <8 x i64> @x86_pblendvb_v64i8_v32i8(<8 x i64> %a, <8 x i64> %b, <8 x i64>
473473
ret <8 x i64> %res
474474
}
475475

476+
define <2 x i64> @PR66513(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c, <2 x i64> %src) {
477+
; CHECK-LABEL: @PR66513(
478+
; CHECK-NEXT: [[I:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>
479+
; CHECK-NEXT: [[CMP_I23:%.*]] = icmp sgt <4 x i32> [[I]], zeroinitializer
480+
; CHECK-NEXT: [[SEXT_I24:%.*]] = sext <4 x i1> [[CMP_I23]] to <4 x i32>
481+
; CHECK-NEXT: [[I1:%.*]] = bitcast <4 x i32> [[SEXT_I24]] to <2 x i64>
482+
; CHECK-NEXT: [[I2:%.*]] = bitcast <2 x i64> [[B:%.*]] to <4 x i32>
483+
; CHECK-NEXT: [[CMP_I21:%.*]] = icmp sgt <4 x i32> [[I2]], zeroinitializer
484+
; CHECK-NEXT: [[SEXT_I22:%.*]] = sext <4 x i1> [[CMP_I21]] to <4 x i32>
485+
; CHECK-NEXT: [[I3:%.*]] = bitcast <4 x i32> [[SEXT_I22]] to <2 x i64>
486+
; CHECK-NEXT: [[I4:%.*]] = bitcast <2 x i64> [[C:%.*]] to <4 x i32>
487+
; CHECK-NEXT: [[CMP_I:%.*]] = icmp sgt <4 x i32> [[I4]], zeroinitializer
488+
; CHECK-NEXT: [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
489+
; CHECK-NEXT: [[I5:%.*]] = bitcast <4 x i32> [[SEXT_I]] to <2 x i64>
490+
; CHECK-NEXT: [[AND_I27:%.*]] = and <2 x i64> [[I3]], [[I1]]
491+
; CHECK-NEXT: [[XOR_I:%.*]] = xor <2 x i64> [[AND_I27]], [[I5]]
492+
; CHECK-NEXT: [[AND_I26:%.*]] = and <2 x i64> [[XOR_I]], [[I1]]
493+
; CHECK-NEXT: [[AND_I25:%.*]] = and <2 x i64> [[XOR_I]], [[I3]]
494+
; CHECK-NEXT: [[AND_I:%.*]] = and <2 x i64> [[AND_I27]], [[SRC:%.*]]
495+
; CHECK-NEXT: [[I6:%.*]] = bitcast <2 x i64> [[AND_I]] to <16 x i8>
496+
; CHECK-NEXT: [[I7:%.*]] = bitcast <2 x i64> [[A]] to <16 x i8>
497+
; CHECK-NEXT: [[I8:%.*]] = bitcast <2 x i64> [[AND_I26]] to <16 x i8>
498+
; CHECK-NEXT: [[I9:%.*]] = tail call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> [[I6]], <16 x i8> [[I7]], <16 x i8> [[I8]])
499+
; CHECK-NEXT: [[I12:%.*]] = bitcast <2 x i64> [[B]] to <16 x i8>
500+
; CHECK-NEXT: [[I13:%.*]] = bitcast <2 x i64> [[AND_I25]] to <16 x i8>
501+
; CHECK-NEXT: [[I14:%.*]] = tail call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> [[I9]], <16 x i8> [[I12]], <16 x i8> [[I13]])
502+
; CHECK-NEXT: [[I15:%.*]] = bitcast <16 x i8> [[I14]] to <2 x i64>
503+
; CHECK-NEXT: ret <2 x i64> [[I15]]
504+
;
505+
%i = bitcast <2 x i64> %a to <4 x i32>
506+
%cmp.i23 = icmp sgt <4 x i32> %i, zeroinitializer
507+
%sext.i24 = sext <4 x i1> %cmp.i23 to <4 x i32>
508+
%i1 = bitcast <4 x i32> %sext.i24 to <2 x i64>
509+
%i2 = bitcast <2 x i64> %b to <4 x i32>
510+
%cmp.i21 = icmp sgt <4 x i32> %i2, zeroinitializer
511+
%sext.i22 = sext <4 x i1> %cmp.i21 to <4 x i32>
512+
%i3 = bitcast <4 x i32> %sext.i22 to <2 x i64>
513+
%i4 = bitcast <2 x i64> %c to <4 x i32>
514+
%cmp.i = icmp sgt <4 x i32> %i4, zeroinitializer
515+
%sext.i = sext <4 x i1> %cmp.i to <4 x i32>
516+
%i5 = bitcast <4 x i32> %sext.i to <2 x i64>
517+
%and.i27 = and <2 x i64> %i1, %i3
518+
%xor.i = xor <2 x i64> %and.i27, %i5
519+
%and.i26 = and <2 x i64> %xor.i, %i1
520+
%and.i25 = and <2 x i64> %xor.i, %i3
521+
%and.i = and <2 x i64> %src, %and.i27
522+
%i6 = bitcast <2 x i64> %and.i to <16 x i8>
523+
%i7 = bitcast <2 x i64> %a to <16 x i8>
524+
%i8 = bitcast <2 x i64> %and.i26 to <16 x i8>
525+
%i9 = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %i6, <16 x i8> %i7, <16 x i8> %i8)
526+
%i10 = bitcast <16 x i8> %i9 to <2 x i64>
527+
%i11 = bitcast <2 x i64> %i10 to <16 x i8>
528+
%i12 = bitcast <2 x i64> %b to <16 x i8>
529+
%i13 = bitcast <2 x i64> %and.i25 to <16 x i8>
530+
%i14 = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %i11, <16 x i8> %i12, <16 x i8> %i13)
531+
%i15 = bitcast <16 x i8> %i14 to <2 x i64>
532+
ret <2 x i64> %i15
533+
}
534+
476535
;
477536
; Negative Tests
478537
;

0 commit comments

Comments
 (0)