mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[X86][SSE] Fold extract_subvector(vselect(x,y,z),0) -> vselect(extract_subvector(x,0),extract_subvector(y,0),extract_subvector(z,0))
llvm-svn: 364136
This commit is contained in:
parent
f3f33f9cb9
commit
be1c540c74
@ -43623,6 +43623,16 @@ static SDValue combineExtractSubvector(SDNode *N, SelectionDAG &DAG,
|
||||
unsigned ExtOp = getOpcode_EXTEND_VECTOR_INREG(InOpcode);
|
||||
return DAG.getNode(ExtOp, SDLoc(N), VT, InVec.getOperand(0));
|
||||
}
|
||||
if (InOpcode == ISD::VSELECT &&
|
||||
InVec.getOperand(0).getValueType().is256BitVector() &&
|
||||
InVec.getOperand(1).getValueType().is256BitVector() &&
|
||||
InVec.getOperand(2).getValueType().is256BitVector()) {
|
||||
SDLoc DL(N);
|
||||
SDValue Ext0 = extractSubVector(InVec.getOperand(0), 0, DAG, DL, 128);
|
||||
SDValue Ext1 = extractSubVector(InVec.getOperand(1), 0, DAG, DL, 128);
|
||||
SDValue Ext2 = extractSubVector(InVec.getOperand(2), 0, DAG, DL, 128);
|
||||
return DAG.getNode(InOpcode, DL, VT, Ext0, Ext1, Ext2);
|
||||
}
|
||||
}
|
||||
|
||||
return SDValue();
|
||||
|
@ -545,7 +545,7 @@ define i64 @test_reduce_v4i64(<4 x i64> %a0) {
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; X64-AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; X64-AVX2-NEXT: vzeroupper
|
||||
; X64-AVX2-NEXT: retq
|
||||
@ -1256,7 +1256,7 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; X64-AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; X64-AVX2-NEXT: vzeroupper
|
||||
; X64-AVX2-NEXT: retq
|
||||
|
@ -549,7 +549,7 @@ define i64 @test_reduce_v4i64(<4 x i64> %a0) {
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; X64-AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; X64-AVX2-NEXT: vzeroupper
|
||||
; X64-AVX2-NEXT: retq
|
||||
@ -1260,7 +1260,7 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; X64-AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; X64-AVX2-NEXT: vzeroupper
|
||||
; X64-AVX2-NEXT: retq
|
||||
|
@ -654,7 +654,7 @@ define i64 @test_reduce_v4i64(<4 x i64> %a0) {
|
||||
; X64-AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; X64-AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; X64-AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; X64-AVX2-NEXT: vzeroupper
|
||||
; X64-AVX2-NEXT: retq
|
||||
@ -1434,7 +1434,7 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
||||
; X64-AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; X64-AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; X64-AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; X64-AVX2-NEXT: vzeroupper
|
||||
; X64-AVX2-NEXT: retq
|
||||
|
@ -594,7 +594,7 @@ define i64 @test_reduce_v4i64(<4 x i64> %a0) {
|
||||
; X64-AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; X64-AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; X64-AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; X64-AVX2-NEXT: vzeroupper
|
||||
; X64-AVX2-NEXT: retq
|
||||
@ -1338,7 +1338,7 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
||||
; X64-AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; X64-AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; X64-AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
|
||||
; X64-AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; X64-AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; X64-AVX2-NEXT: vzeroupper
|
||||
; X64-AVX2-NEXT: retq
|
||||
|
@ -1031,8 +1031,7 @@ define <16 x i8> @var_shuffle_v16i8_from_v32i8_v16i8(<32 x i8> %v, <16 x i8> %in
|
||||
; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]
|
||||
; AVX2-NEXT: vpshufb %xmm1, %xmm0, %xmm0
|
||||
; AVX2-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
|
||||
; AVX2-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
|
||||
; AVX2-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
|
||||
; AVX2-NEXT: vpblendvb %xmm1, %xmm0, %xmm2, %xmm0
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
;
|
||||
@ -1043,8 +1042,7 @@ define <16 x i8> @var_shuffle_v16i8_from_v32i8_v16i8(<32 x i8> %v, <16 x i8> %in
|
||||
; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]
|
||||
; AVX512-NEXT: vpshufb %xmm1, %xmm0, %xmm0
|
||||
; AVX512-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
|
||||
; AVX512-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
|
||||
; AVX512-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
|
||||
; AVX512-NEXT: vpblendvb %xmm1, %xmm0, %xmm2, %xmm0
|
||||
; AVX512-NEXT: vzeroupper
|
||||
; AVX512-NEXT: retq
|
||||
;
|
||||
|
@ -1126,8 +1126,7 @@ define <4 x i32> @var_shuffle_v4i32_from_v8i32(<8 x i32> %v, <4 x i32> %indices)
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vpermilps %ymm1, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vpcmpgtd {{.*}}(%rip), %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvps %ymm1, %ymm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
|
||||
; AVX1-NEXT: vblendvps %xmm1, %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
@ -165,7 +165,7 @@ define i64 @test_v4i64(<4 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -342,7 +342,7 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -644,7 +644,7 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
|
@ -165,7 +165,7 @@ define i64 @test_v4i64(<4 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -342,7 +342,7 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -644,7 +644,7 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
|
@ -164,7 +164,7 @@ define i64 @test_v4i64(<4 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -341,7 +341,7 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -643,7 +643,7 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
|
@ -164,7 +164,7 @@ define i64 @test_v4i64(<4 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -341,7 +341,7 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -643,7 +643,7 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,0,1]
|
||||
; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
|
@ -178,7 +178,7 @@ define i64 @test_v4i64(<4 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -371,7 +371,7 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -701,7 +701,7 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm4, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vxorpd %ymm4, %ymm1, %ymm3
|
||||
; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
|
@ -178,7 +178,7 @@ define i64 @test_v4i64(<4 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -371,7 +371,7 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -701,7 +701,7 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm4, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vxorpd %ymm4, %ymm1, %ymm3
|
||||
; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
|
@ -177,7 +177,7 @@ define i64 @test_v4i64(<4 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -370,7 +370,7 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -700,7 +700,7 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm4, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vxorpd %ymm4, %ymm1, %ymm3
|
||||
; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
|
@ -177,7 +177,7 @@ define i64 @test_v4i64(<4 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -370,7 +370,7 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm0, %ymm3
|
||||
; AVX2-NEXT: vxorpd %ymm2, %ymm1, %ymm2
|
||||
; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
@ -700,7 +700,7 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
||||
; AVX2-NEXT: vxorpd %ymm4, %ymm0, %ymm2
|
||||
; AVX2-NEXT: vxorpd %ymm4, %ymm1, %ymm3
|
||||
; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2
|
||||
; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX2-NEXT: vmovq %xmm0, %rax
|
||||
; AVX2-NEXT: vzeroupper
|
||||
; AVX2-NEXT: retq
|
||||
|
Loading…
x
Reference in New Issue
Block a user