Skip to content

Commit 5b4573a

Browse files
committed
Update vector-bo-select.ll
1 parent a8280c4 commit 5b4573a

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

llvm/test/CodeGen/X86/vector-bo-select.ll

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2717,6 +2717,100 @@ define <8 x i64> @sub_v8i64_cast_cond(i8 noundef zeroext %pb, <8 x i64> noundef
27172717
ret <8 x i64> %r
27182718
}
27192719

2720+
define <8 x i64> @sub_v8i64_cast_cond_xor(i8 noundef zeroext %pb, <8 x i64> noundef %x, <8 x i64> noundef %y) {
2721+
; SSE2-LABEL: sub_v8i64_cast_cond_xor:
2722+
; SSE2: # %bb.0:
2723+
; SSE2-NEXT: movd %edi, %xmm8
2724+
; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm8[0,1,0,1]
2725+
; SSE2-NEXT: movdqa {{.*#+}} xmm10 = [64,128]
2726+
; SSE2-NEXT: movdqa %xmm9, %xmm8
2727+
; SSE2-NEXT: pand %xmm10, %xmm8
2728+
; SSE2-NEXT: pcmpeqd %xmm10, %xmm8
2729+
; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm8[1,0,3,2]
2730+
; SSE2-NEXT: pand %xmm7, %xmm8
2731+
; SSE2-NEXT: pand %xmm10, %xmm8
2732+
; SSE2-NEXT: movdqa {{.*#+}} xmm10 = [16,32]
2733+
; SSE2-NEXT: movdqa %xmm9, %xmm7
2734+
; SSE2-NEXT: pand %xmm10, %xmm7
2735+
; SSE2-NEXT: pcmpeqd %xmm10, %xmm7
2736+
; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm7[1,0,3,2]
2737+
; SSE2-NEXT: pand %xmm6, %xmm7
2738+
; SSE2-NEXT: pand %xmm10, %xmm7
2739+
; SSE2-NEXT: movdqa {{.*#+}} xmm6 = [4,8]
2740+
; SSE2-NEXT: movdqa %xmm9, %xmm10
2741+
; SSE2-NEXT: pand %xmm6, %xmm10
2742+
; SSE2-NEXT: pcmpeqd %xmm6, %xmm10
2743+
; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm10[1,0,3,2]
2744+
; SSE2-NEXT: pand %xmm5, %xmm10
2745+
; SSE2-NEXT: pand %xmm6, %xmm10
2746+
; SSE2-NEXT: movdqa {{.*#+}} xmm5 = [1,2]
2747+
; SSE2-NEXT: pand %xmm5, %xmm9
2748+
; SSE2-NEXT: pcmpeqd %xmm5, %xmm9
2749+
; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm9[1,0,3,2]
2750+
; SSE2-NEXT: pand %xmm4, %xmm9
2751+
; SSE2-NEXT: pand %xmm5, %xmm9
2752+
; SSE2-NEXT: pxor %xmm9, %xmm0
2753+
; SSE2-NEXT: pxor %xmm10, %xmm1
2754+
; SSE2-NEXT: pxor %xmm7, %xmm2
2755+
; SSE2-NEXT: pxor %xmm8, %xmm3
2756+
; SSE2-NEXT: retq
2757+
;
2758+
; SSE42-LABEL: sub_v8i64_cast_cond_xor:
2759+
; SSE42: # %bb.0:
2760+
; SSE42-NEXT: movd %edi, %xmm8
2761+
; SSE42-NEXT: pshufd {{.*#+}} xmm9 = xmm8[0,1,0,1]
2762+
; SSE42-NEXT: pmovzxbq {{.*#+}} xmm10 = [64,128]
2763+
; SSE42-NEXT: movdqa %xmm9, %xmm8
2764+
; SSE42-NEXT: pand %xmm10, %xmm8
2765+
; SSE42-NEXT: pcmpeqq %xmm10, %xmm8
2766+
; SSE42-NEXT: pand %xmm7, %xmm8
2767+
; SSE42-NEXT: pmovsxbq {{.*#+}} xmm7 = [16,32]
2768+
; SSE42-NEXT: movdqa %xmm9, %xmm10
2769+
; SSE42-NEXT: pand %xmm7, %xmm10
2770+
; SSE42-NEXT: pcmpeqq %xmm7, %xmm10
2771+
; SSE42-NEXT: pand %xmm6, %xmm10
2772+
; SSE42-NEXT: pmovsxbq {{.*#+}} xmm6 = [4,8]
2773+
; SSE42-NEXT: movdqa %xmm9, %xmm7
2774+
; SSE42-NEXT: pand %xmm6, %xmm7
2775+
; SSE42-NEXT: pcmpeqq %xmm6, %xmm7
2776+
; SSE42-NEXT: pand %xmm5, %xmm7
2777+
; SSE42-NEXT: pmovsxbq {{.*#+}} xmm5 = [1,2]
2778+
; SSE42-NEXT: pand %xmm5, %xmm9
2779+
; SSE42-NEXT: pcmpeqq %xmm5, %xmm9
2780+
; SSE42-NEXT: pand %xmm4, %xmm9
2781+
; SSE42-NEXT: pxor %xmm9, %xmm0
2782+
; SSE42-NEXT: pxor %xmm7, %xmm1
2783+
; SSE42-NEXT: pxor %xmm10, %xmm2
2784+
; SSE42-NEXT: pxor %xmm8, %xmm3
2785+
; SSE42-NEXT: retq
2786+
;
2787+
; AVX2-LABEL: sub_v8i64_cast_cond_xor:
2788+
; AVX2: # %bb.0:
2789+
; AVX2-NEXT: vmovd %edi, %xmm4
2790+
; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
2791+
; AVX2-NEXT: vpmovzxbq {{.*#+}} ymm5 = [16,32,64,128]
2792+
; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
2793+
; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
2794+
; AVX2-NEXT: vpand %ymm3, %ymm5, %ymm3
2795+
; AVX2-NEXT: vpmovsxbq {{.*#+}} ymm5 = [1,2,4,8]
2796+
; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
2797+
; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
2798+
; AVX2-NEXT: vpand %ymm2, %ymm4, %ymm2
2799+
; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm0
2800+
; AVX2-NEXT: vpxor %ymm3, %ymm1, %ymm1
2801+
; AVX2-NEXT: retq
2802+
;
2803+
; AVX512-LABEL: sub_v8i64_cast_cond_xor:
2804+
; AVX512: # %bb.0:
2805+
; AVX512-NEXT: kmovw %edi, %k1
2806+
; AVX512-NEXT: vpxorq %zmm1, %zmm0, %zmm0 {%k1}
2807+
; AVX512-NEXT: retq
2808+
%b = bitcast i8 %pb to <8 x i1>
2809+
%s = select <8 x i1> %b, <8 x i64> %y, <8 x i64> zeroinitializer
2810+
%r = xor <8 x i64> %x, %s
2811+
ret <8 x i64> %r
2812+
}
2813+
27202814
define <4 x i32> @mul_v4i32(<4 x i1> %b, <4 x i32> noundef %x, <4 x i32> noundef %y) {
27212815
; SSE2-LABEL: mul_v4i32:
27222816
; SSE2: # %bb.0:

0 commit comments

Comments
 (0)