[X86] LowerMINMAX - split v4i64 types on AVX1 targets (Issue #55648)
Originally we tried to use default expansion for v4i64 types to make it easier to concatenate the results back together, but this can cause infinite loop issues with existing VSELECT splitting code in narrowExtractedVectorSelect if we have other uses of the VSELECT results (e.g. reduction patterns). To fix the infinite loop, this patch always splits MIN/MAX v4i64 nodes during lowering and I've added a TODO for combineConcatVectorOps to investigate when we can cheaply concatenate VSELECT/BLENDV nodes together. Fixes #55648 - regression test case will be added in a follow up.
This commit is contained in:
parent
259a9df963
commit
d5af6a3808
|
@ -28607,11 +28607,12 @@ static SDValue LowerAVG(SDValue Op, const X86Subtarget &Subtarget,
|
|||
return SDValue();
|
||||
}
|
||||
|
||||
static SDValue LowerMINMAX(SDValue Op, SelectionDAG &DAG) {
|
||||
static SDValue LowerMINMAX(SDValue Op, const X86Subtarget &Subtarget,
|
||||
SelectionDAG &DAG) {
|
||||
MVT VT = Op.getSimpleValueType();
|
||||
|
||||
// For AVX1 cases, split to use legal ops (everything but v4i64).
|
||||
if (VT.getScalarType() != MVT::i64 && VT.is256BitVector())
|
||||
// For AVX1 cases, split to use legal ops.
|
||||
if (VT.is256BitVector() && !Subtarget.hasInt256())
|
||||
return splitVectorIntBinary(Op, DAG);
|
||||
|
||||
if (VT == MVT::v32i16 || VT == MVT::v64i8)
|
||||
|
@ -31959,7 +31960,7 @@ SDValue X86TargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
|
|||
case ISD::SMAX:
|
||||
case ISD::SMIN:
|
||||
case ISD::UMAX:
|
||||
case ISD::UMIN: return LowerMINMAX(Op, DAG);
|
||||
case ISD::UMIN: return LowerMINMAX(Op, Subtarget, DAG);
|
||||
case ISD::ABS: return LowerABS(Op, Subtarget, DAG);
|
||||
case ISD::AVGCEILU: return LowerAVG(Op, Subtarget, DAG);
|
||||
case ISD::FSINCOS: return LowerFSINCOS(Op, Subtarget, DAG);
|
||||
|
@ -53522,6 +53523,8 @@ static SDValue combineConcatVectorOps(const SDLoc &DL, MVT VT,
|
|||
ConcatSubOperand(VT, Ops, 1), Op0.getOperand(2));
|
||||
}
|
||||
break;
|
||||
// TODO: ISD::VSELECT and X86ISD::BLENDV handling if some of the args can
|
||||
// be concatenated for free.
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1114,14 +1114,14 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
|||
;
|
||||
; X86-AVX1-LABEL: test_reduce_v8i64:
|
||||
; X86-AVX1: ## %bb.0:
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm3, %xmm3
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm3, %xmm0, %xmm1
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm3, %xmm0
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm1
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm2, %xmm0
|
||||
; X86-AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
|
@ -1232,14 +1232,14 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
|||
;
|
||||
; X64-AVX1-LABEL: test_reduce_v8i64:
|
||||
; X64-AVX1: ## %bb.0:
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm3, %xmm3
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm3, %xmm0, %xmm1
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm3, %xmm0
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm1
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm2, %xmm0
|
||||
; X64-AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
|
|
|
@ -1118,14 +1118,14 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
|||
;
|
||||
; X86-AVX1-LABEL: test_reduce_v8i64:
|
||||
; X86-AVX1: ## %bb.0:
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm5
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm1
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm1
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm1, %xmm2, %xmm0, %xmm0
|
||||
; X86-AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
|
@ -1236,14 +1236,14 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
|||
;
|
||||
; X64-AVX1-LABEL: test_reduce_v8i64:
|
||||
; X64-AVX1: ## %bb.0:
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm5
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm1
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm1
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm1, %xmm2, %xmm0, %xmm0
|
||||
; X64-AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
|
|
|
@ -1225,17 +1225,17 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
|||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm1, %xmm3
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm0, %xmm4
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm4, %xmm5
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm6, %xmm7
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm5, %xmm7, %xmm5
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm5, %xmm6, %xmm4, %xmm4
|
||||
; X86-AVX1-NEXT: vxorpd %xmm2, %xmm4, %xmm5
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm3
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm1, %xmm4
|
||||
; X86-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm0, %xmm5
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vxorpd %xmm2, %xmm0, %xmm1
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm4, %xmm0
|
||||
; X86-AVX1-NEXT: vxorpd %xmm2, %xmm3, %xmm4
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm1
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm0, %xmm0
|
||||
; X86-AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; X86-AVX1-NEXT: vxorpd %xmm2, %xmm0, %xmm3
|
||||
; X86-AVX1-NEXT: vxorpd %xmm2, %xmm1, %xmm2
|
||||
|
@ -1370,17 +1370,17 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
|||
; X64-AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm3
|
||||
; X64-AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm4
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; X64-AVX1-NEXT: vpxor %xmm2, %xmm4, %xmm5
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; X64-AVX1-NEXT: vpxor %xmm2, %xmm6, %xmm7
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm5, %xmm7, %xmm5
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm5, %xmm6, %xmm4, %xmm4
|
||||
; X64-AVX1-NEXT: vxorpd %xmm2, %xmm4, %xmm5
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm3
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; X64-AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm4
|
||||
; X64-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; X64-AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm5
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vxorpd %xmm2, %xmm0, %xmm1
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm4, %xmm0
|
||||
; X64-AVX1-NEXT: vxorpd %xmm2, %xmm3, %xmm4
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm1
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm0, %xmm0
|
||||
; X64-AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; X64-AVX1-NEXT: vxorpd %xmm2, %xmm0, %xmm3
|
||||
; X64-AVX1-NEXT: vxorpd %xmm2, %xmm1, %xmm2
|
||||
|
|
|
@ -1143,12 +1143,12 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
|||
; X86-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm5, %xmm6
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm0, %xmm6
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm1, %xmm7
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vxorpd %xmm2, %xmm0, %xmm1
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm5, %xmm3
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm0, %xmm4
|
||||
; X86-AVX1-NEXT: vxorps %xmm2, %xmm1, %xmm5
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm0
|
||||
; X86-AVX1-NEXT: vxorpd %xmm2, %xmm0, %xmm1
|
||||
; X86-AVX1-NEXT: vxorpd %xmm2, %xmm3, %xmm4
|
||||
; X86-AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm1
|
||||
; X86-AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm3, %xmm0
|
||||
|
@ -1290,12 +1290,12 @@ define i64 @test_reduce_v8i64(<8 x i64> %a0) {
|
|||
; X64-AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; X64-AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; X64-AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm6
|
||||
; X64-AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm7
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vxorpd %xmm3, %xmm0, %xmm1
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm5, %xmm2
|
||||
; X64-AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; X64-AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm5
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm0
|
||||
; X64-AVX1-NEXT: vxorpd %xmm3, %xmm0, %xmm1
|
||||
; X64-AVX1-NEXT: vxorpd %xmm3, %xmm2, %xmm4
|
||||
; X64-AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm1
|
||||
; X64-AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm2, %xmm0
|
||||
|
|
|
@ -296,31 +296,31 @@ define void @truncstore_v8i64_v8i32(<8 x i64> %x, <8 x i32>* %p, <8 x i32> %mask
|
|||
; AVX1-NEXT: vpxor %xmm5, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vpcmpeqd %xmm4, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [2147483647,2147483647]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm9
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [18446744071562067968,18446744071562067968]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm10
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm6, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm6, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm3
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm10, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744071562067968,18446744071562067968]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm5, %ymm3, %ymm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2],ymm3[0,2],ymm0[4,6],ymm3[4,6]
|
||||
; AVX1-NEXT: vmaskmovps %ymm0, %ymm8, (%rdi)
|
||||
; AVX1-NEXT: vmaskmovps %ymm0, %ymm2, (%rdi)
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
@ -679,28 +679,28 @@ define void @truncstore_v8i64_v8i16(<8 x i64> %x, <8 x i16>* %p, <8 x i32> %mask
|
|||
;
|
||||
; AVX1-LABEL: truncstore_v8i64_v8i16:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [32767,32767]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm9
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm0, %xmm10
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm7, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm11
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm11, %xmm5, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm10, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [32767,32767]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm3, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm3, %xmm3
|
||||
|
@ -1229,28 +1229,28 @@ define void @truncstore_v8i64_v8i8(<8 x i64> %x, <8 x i8>* %p, <8 x i32> %mask)
|
|||
;
|
||||
; AVX1-LABEL: truncstore_v8i64_v8i8:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [127,127]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm9
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm0, %xmm10
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm7, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm11
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm11, %xmm5, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm10, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [127,127]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm3, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpacksswb %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm1
|
||||
|
@ -1647,18 +1647,18 @@ define void @truncstore_v4i64_v4i32(<4 x i64> %x, <4 x i32>* %p, <4 x i32> %mask
|
|||
; AVX1-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [2147483647,2147483647]
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [2147483647,2147483647]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [18446744071562067968,18446744071562067968]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [18446744071562067968,18446744071562067968]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,2],xmm2[0,2]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm2[0,2],xmm0[0,2]
|
||||
; AVX1-NEXT: vmaskmovps %xmm0, %xmm1, (%rdi)
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -1878,18 +1878,18 @@ define void @truncstore_v4i64_v4i16(<4 x i64> %x, <4 x i16>* %p, <4 x i32> %mask
|
|||
; AVX1-LABEL: truncstore_v4i64_v4i16:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [32767,32767]
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [32767,32767]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm0, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vmovmskps %xmm1, %eax
|
||||
|
@ -2203,16 +2203,16 @@ define void @truncstore_v4i64_v4i8(<4 x i64> %x, <4 x i8>* %p, <4 x i32> %mask)
|
|||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [127,127]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm0, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm4, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
|
||||
; AVX1-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
|
||||
|
|
|
@ -237,25 +237,25 @@ define void @truncstore_v8i64_v8i32(<8 x i64> %x, <8 x i32>* %p, <8 x i32> %mask
|
|||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm8
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372041149743103,9223372041149743103]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm9
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm6 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm5, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm5 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm4, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm7, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2],ymm2[0,2],ymm0[4,6],ymm2[4,6]
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm7, %ymm1
|
||||
; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,2],ymm0[0,2],ymm1[4,6],ymm0[4,6]
|
||||
; AVX1-NEXT: vmaskmovps %ymm0, %ymm8, (%rdi)
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -556,25 +556,25 @@ define void @truncstore_v8i64_v8i16(<8 x i64> %x, <8 x i16>* %p, <8 x i32> %mask
|
|||
;
|
||||
; AVX1-LABEL: truncstore_v8i64_v8i16:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm5, %xmm9
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm5 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm7, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm6, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm7, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm3, %xmm3
|
||||
|
@ -1037,25 +1037,25 @@ define void @truncstore_v8i64_v8i8(<8 x i64> %x, <8 x i8>* %p, <8 x i32> %mask)
|
|||
;
|
||||
; AVX1-LABEL: truncstore_v8i64_v8i8:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854776063,9223372036854776063]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm5, %xmm9
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm5 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm7, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm6, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [9223372036854776063,9223372036854776063]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm7, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackuswb %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm1
|
||||
|
@ -1416,16 +1416,16 @@ define void @truncstore_v4i64_v4i32(<4 x i64> %x, <4 x i32>* %p, <4 x i32> %mask
|
|||
; AVX1-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372041149743103,9223372041149743103]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm4 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm5, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372041149743103,9223372041149743103]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm6 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,2],xmm2[0,2]
|
||||
; AVX1-NEXT: vmaskmovps %xmm0, %xmm1, (%rdi)
|
||||
; AVX1-NEXT: vzeroupper
|
||||
|
@ -1615,16 +1615,16 @@ define void @truncstore_v4i64_v4i16(<4 x i64> %x, <4 x i16>* %p, <4 x i32> %mask
|
|||
; AVX1-LABEL: truncstore_v4i64_v4i16:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm5 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm6, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm7, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
|
||||
|
@ -1905,16 +1905,16 @@ define void @truncstore_v4i64_v4i8(<4 x i64> %x, <4 x i8>* %p, <4 x i32> %mask)
|
|||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854776063,9223372036854776063]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm6 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm5 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm6, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm6, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm6, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm3, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]
|
||||
; AVX1-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vmovmskps %xmm1, %eax
|
||||
; AVX1-NEXT: xorl $15, %eax
|
||||
|
|
|
@ -475,42 +475,42 @@ define <8 x i32> @vec256_i32_signed_mem_mem(<8 x i32>* %a1_addr, <8 x i32>* %a2_
|
|||
define <4 x i64> @vec256_i64_signed_reg_reg(<4 x i64> %a1, <4 x i64> %a2) nounwind {
|
||||
; AVX1-FALLBACK-LABEL: vec256_i64_signed_reg_reg:
|
||||
; AVX1-FALLBACK: # %bb.0:
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm6, %xmm4, %xmm3, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm4, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm6, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm3, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm2, %xmm8, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm2, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm2, %xmm7, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm6, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm3, %xmm7, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm3, %xmm5, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm2, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0
|
||||
; AVX1-FALLBACK-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: vec256_i64_signed_reg_reg:
|
||||
|
@ -536,82 +536,82 @@ define <4 x i64> @vec256_i64_signed_reg_reg(<4 x i64> %a1, <4 x i64> %a2) nounwi
|
|||
;
|
||||
; XOP-FALLBACK-LABEL: vec256_i64_signed_reg_reg:
|
||||
; XOP-FALLBACK: # %bb.0:
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm2, %xmm3, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm1, %xmm0, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm2, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm1, %xmm0, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm3, %xmm4, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm3, %xmm4, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm4, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm1, %xmm0, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm4, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm6, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm2, %xmm8, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm2, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm2, %xmm7, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm7, %xmm6, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm3, %xmm7, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm4, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm3, %xmm5, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm2, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0
|
||||
; XOP-FALLBACK-NEXT: retq
|
||||
;
|
||||
; XOPAVX1-LABEL: vec256_i64_signed_reg_reg:
|
||||
; XOPAVX1: # %bb.0:
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm2, %xmm3, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm1, %xmm0, %xmm5
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm2, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm1, %xmm0, %xmm2
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm3, %xmm4, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm3, %xmm4, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm1, %xmm0, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm4, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpsubq %xmm6, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; XOPAVX1-NEXT: vpor %xmm2, %xmm8, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm2, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm2, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm2, %xmm7, %xmm2
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm7
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm7, %xmm6, %xmm7
|
||||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm3, %xmm7, %xmm3
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm4, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpaddq %xmm3, %xmm5, %xmm3
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOPAVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm2, %xmm0
|
||||
; XOPAVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0
|
||||
; XOPAVX1-NEXT: retq
|
||||
;
|
||||
; AVX512F-LABEL: vec256_i64_signed_reg_reg:
|
||||
|
@ -685,46 +685,46 @@ define <4 x i64> @vec256_i64_signed_reg_reg(<4 x i64> %a1, <4 x i64> %a2) nounwi
|
|||
define <4 x i64> @vec256_i64_unsigned_reg_reg(<4 x i64> %a1, <4 x i64> %a2) nounwind {
|
||||
; AVX1-FALLBACK-LABEL: vec256_i64_unsigned_reg_reg:
|
||||
; AVX1-FALLBACK: # %bb.0:
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-FALLBACK-NEXT: vpxor %xmm4, %xmm3, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpxor %xmm4, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm8
|
||||
; AVX1-FALLBACK-NEXT: vpxor %xmm4, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpxor %xmm4, %xmm0, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm7, %xmm4, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm0, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm4, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm5, %xmm2, %xmm3, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm8, %xmm2, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm3, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-FALLBACK-NEXT: vpxor %xmm2, %xmm1, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpxor %xmm2, %xmm0, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm1, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpxor %xmm2, %xmm6, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpxor %xmm2, %xmm5, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm7, %xmm2, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm2, %xmm7, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm2, %xmm5, %xmm6, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm5, %xmm6, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm8, %xmm0, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm3, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm10 = [1,1]
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm10, %xmm9, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm10, %xmm8, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm7, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm6, %xmm5, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm6, %xmm4, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm1, %xmm6, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm5, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm10, %xmm8, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm6, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm4, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm10, %xmm9, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm6, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm6, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm4, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm3, %xmm7, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm6, %xmm4, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm3, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm6, %xmm3, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm5, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm5, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-FALLBACK-NEXT: retq
|
||||
;
|
||||
|
@ -754,82 +754,82 @@ define <4 x i64> @vec256_i64_unsigned_reg_reg(<4 x i64> %a1, <4 x i64> %a2) noun
|
|||
;
|
||||
; XOP-FALLBACK-LABEL: vec256_i64_unsigned_reg_reg:
|
||||
; XOP-FALLBACK: # %bb.0:
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpcomgtuq %xmm2, %xmm3, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomgtuq %xmm1, %xmm0, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpcomltuq %xmm2, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpcomgtuq %xmm1, %xmm0, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpcomgtuq %xmm3, %xmm4, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomltuq %xmm3, %xmm4, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm4, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpcomltuq %xmm1, %xmm0, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm4, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm6, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm2, %xmm8, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm2, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm2, %xmm7, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm7, %xmm6, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm3, %xmm7, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm4, %xmm3, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm3, %xmm5, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm2, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0
|
||||
; XOP-FALLBACK-NEXT: retq
|
||||
;
|
||||
; XOPAVX1-LABEL: vec256_i64_unsigned_reg_reg:
|
||||
; XOPAVX1: # %bb.0:
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; XOPAVX1-NEXT: vpcomgtuq %xmm2, %xmm3, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomgtuq %xmm1, %xmm0, %xmm5
|
||||
; XOPAVX1-NEXT: vpcomltuq %xmm2, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vpcomgtuq %xmm1, %xmm0, %xmm2
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; XOPAVX1-NEXT: vpcomgtuq %xmm3, %xmm4, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomltuq %xmm3, %xmm4, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vpcomltuq %xmm1, %xmm0, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm4, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpsubq %xmm6, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; XOPAVX1-NEXT: vpor %xmm2, %xmm8, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm2, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm2, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm2, %xmm7, %xmm2
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm7
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm7, %xmm6, %xmm7
|
||||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm3, %xmm7, %xmm3
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm4, %xmm3, %xmm3
|
||||
; XOPAVX1-NEXT: vpaddq %xmm3, %xmm5, %xmm3
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOPAVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm2, %xmm0
|
||||
; XOPAVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0
|
||||
; XOPAVX1-NEXT: retq
|
||||
;
|
||||
; AVX512F-LABEL: vec256_i64_unsigned_reg_reg:
|
||||
|
@ -905,42 +905,42 @@ define <4 x i64> @vec256_i64_unsigned_reg_reg(<4 x i64> %a1, <4 x i64> %a2) noun
|
|||
define <4 x i64> @vec256_i64_signed_mem_reg(<4 x i64>* %a1_addr, <4 x i64> %a2) nounwind {
|
||||
; AVX1-FALLBACK-LABEL: vec256_i64_signed_mem_reg:
|
||||
; AVX1-FALLBACK: # %bb.0:
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa (%rdi), %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa 16(%rdi), %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa 16(%rdi), %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm7, %xmm1, %xmm0, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm5, %xmm1, %xmm0, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm2, %xmm4, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm6, %xmm4, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm3, %xmm1, %xmm0, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm7, %xmm0, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm4, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm0, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm0, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm0, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm3, %xmm8, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm3, %xmm0, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm3, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm5, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm0, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm3, %xmm7, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm4, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm4, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm6, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm4, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm1, %xmm0, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm3, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-FALLBACK-NEXT: retq
|
||||
;
|
||||
|
@ -968,83 +968,83 @@ define <4 x i64> @vec256_i64_signed_mem_reg(<4 x i64>* %a1_addr, <4 x i64> %a2)
|
|||
;
|
||||
; XOP-FALLBACK-LABEL: vec256_i64_signed_mem_reg:
|
||||
; XOP-FALLBACK: # %bb.0:
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vmovdqa (%rdi), %xmm1
|
||||
; XOP-FALLBACK-NEXT: vmovdqa 16(%rdi), %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm2, %xmm3, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm0, %xmm1, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm2, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vmovdqa 16(%rdi), %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm0, %xmm1, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm4, %xmm2, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm4, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm0, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm7, %xmm1, %xmm0, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm5, %xmm1, %xmm0, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm2, %xmm4, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm6, %xmm4, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm3, %xmm1, %xmm0, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm7, %xmm0, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm4, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm0, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm0, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm0, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm3, %xmm8, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm3, %xmm0, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm3, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm5, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm0, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm3, %xmm7, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm4, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm4, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm7, %xmm6, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm4, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm4, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm4, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm0, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm3, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; XOP-FALLBACK-NEXT: retq
|
||||
;
|
||||
; XOPAVX1-LABEL: vec256_i64_signed_mem_reg:
|
||||
; XOPAVX1: # %bb.0:
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; XOPAVX1-NEXT: vmovdqa (%rdi), %xmm1
|
||||
; XOPAVX1-NEXT: vmovdqa 16(%rdi), %xmm3
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm2, %xmm3, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm0, %xmm1, %xmm5
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm2, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vmovdqa 16(%rdi), %xmm2
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm0, %xmm1, %xmm3
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm4, %xmm2, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm4, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm6
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm0, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm0, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm0, %xmm0
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm2, %xmm4, %xmm4
|
||||
; XOPAVX1-NEXT: vpsubq %xmm6, %xmm4, %xmm4
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm0, %xmm0
|
||||
; XOPAVX1-NEXT: vpsubq %xmm7, %xmm0, %xmm0
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm4, %xmm6
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm0, %xmm7
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm0, %xmm0
|
||||
; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm0, %xmm0
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOPAVX1-NEXT: vpor %xmm3, %xmm8, %xmm3
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm3, %xmm0, %xmm0
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm3, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm5, %xmm0
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm0, %xmm0
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm3, %xmm7, %xmm3
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm4, %xmm4
|
||||
; XOPAVX1-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm4, %xmm4
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm7
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm7, %xmm6, %xmm7
|
||||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm4, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm4, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm4, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm0, %xmm0
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm3, %xmm0
|
||||
; XOPAVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; XOPAVX1-NEXT: retq
|
||||
;
|
||||
|
@ -1123,28 +1123,28 @@ define <4 x i64> @vec256_i64_signed_reg_mem(<4 x i64> %a1, <4 x i64>* %a2_addr)
|
|||
; AVX1-FALLBACK: # %bb.0:
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa (%rdi), %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa 16(%rdi), %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm6, %xmm4, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm4, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm3, %xmm8, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm3, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm3, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm3, %xmm7, %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
|
@ -1153,10 +1153,10 @@ define <4 x i64> @vec256_i64_signed_reg_mem(<4 x i64> %a1, <4 x i64>* %a2_addr)
|
|||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm4, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm0, %xmm3, %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-FALLBACK-NEXT: retq
|
||||
;
|
||||
|
@ -1186,28 +1186,28 @@ define <4 x i64> @vec256_i64_signed_reg_mem(<4 x i64> %a1, <4 x i64>* %a2_addr)
|
|||
; XOP-FALLBACK: # %bb.0:
|
||||
; XOP-FALLBACK-NEXT: vmovdqa (%rdi), %xmm1
|
||||
; XOP-FALLBACK-NEXT: vmovdqa 16(%rdi), %xmm2
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm2, %xmm3, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm1, %xmm0, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm2, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm1, %xmm0, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm2, %xmm4, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm2, %xmm4, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm4, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm1, %xmm0, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm4, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm3, %xmm8, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm3, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm3, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm3, %xmm7, %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
|
@ -1216,10 +1216,10 @@ define <4 x i64> @vec256_i64_signed_reg_mem(<4 x i64> %a1, <4 x i64>* %a2_addr)
|
|||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm4, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm0, %xmm3, %xmm0
|
||||
; XOP-FALLBACK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; XOP-FALLBACK-NEXT: retq
|
||||
;
|
||||
|
@ -1227,28 +1227,28 @@ define <4 x i64> @vec256_i64_signed_reg_mem(<4 x i64> %a1, <4 x i64>* %a2_addr)
|
|||
; XOPAVX1: # %bb.0:
|
||||
; XOPAVX1-NEXT: vmovdqa (%rdi), %xmm1
|
||||
; XOPAVX1-NEXT: vmovdqa 16(%rdi), %xmm2
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm2, %xmm3, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm1, %xmm0, %xmm5
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm2, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm1, %xmm0, %xmm3
|
||||
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm2, %xmm4, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm2, %xmm4, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm1, %xmm0, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm4, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; XOPAVX1-NEXT: vpor %xmm3, %xmm8, %xmm3
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm3, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm3, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm3, %xmm7, %xmm3
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
|
@ -1257,10 +1257,10 @@ define <4 x i64> @vec256_i64_signed_reg_mem(<4 x i64> %a1, <4 x i64>* %a2_addr)
|
|||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm7, %xmm2
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm6, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm4, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm2, %xmm5, %xmm2
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm1, %xmm0
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm4, %xmm0
|
||||
; XOPAVX1-NEXT: vpaddq %xmm0, %xmm3, %xmm0
|
||||
; XOPAVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; XOPAVX1-NEXT: retq
|
||||
;
|
||||
|
@ -1341,27 +1341,27 @@ define <4 x i64> @vec256_i64_signed_mem_mem(<4 x i64>* %a1_addr, <4 x i64>* %a2_
|
|||
; AVX1-FALLBACK-NEXT: vmovdqa 16(%rsi), %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa (%rdi), %xmm0
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa 16(%rdi), %xmm3
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm9
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm4, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
|
@ -1406,27 +1406,27 @@ define <4 x i64> @vec256_i64_signed_mem_mem(<4 x i64>* %a1_addr, <4 x i64>* %a2_
|
|||
; XOP-FALLBACK-NEXT: vmovdqa 16(%rsi), %xmm2
|
||||
; XOP-FALLBACK-NEXT: vmovdqa (%rdi), %xmm0
|
||||
; XOP-FALLBACK-NEXT: vmovdqa 16(%rdi), %xmm3
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm1, %xmm0, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm2, %xmm3, %xmm9
|
||||
; XOP-FALLBACK-NEXT: vpcomgtq %xmm1, %xmm0, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm2, %xmm3, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpcomltq %xmm1, %xmm0, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm4, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOP-FALLBACK-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
|
@ -1448,27 +1448,27 @@ define <4 x i64> @vec256_i64_signed_mem_mem(<4 x i64>* %a1_addr, <4 x i64>* %a2_
|
|||
; XOPAVX1-NEXT: vmovdqa 16(%rsi), %xmm2
|
||||
; XOPAVX1-NEXT: vmovdqa (%rdi), %xmm0
|
||||
; XOPAVX1-NEXT: vmovdqa 16(%rdi), %xmm3
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm1, %xmm0, %xmm4
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm2, %xmm3, %xmm9
|
||||
; XOPAVX1-NEXT: vpcomgtq %xmm1, %xmm0, %xmm5
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm2, %xmm3, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vpcomltq %xmm1, %xmm0, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm6, %xmm3, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm9, %xmm3, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpsubq %xmm6, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsubq %xmm7, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm6
|
||||
; XOPAVX1-NEXT: vpsrlq $1, %xmm1, %xmm7
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1]
|
||||
; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm4, %xmm1
|
||||
; XOPAVX1-NEXT: vpor %xmm4, %xmm8, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm4, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpsrlq $32, %xmm4, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm5
|
||||
; XOPAVX1-NEXT: vpaddq %xmm1, %xmm5, %xmm1
|
||||
; XOPAVX1-NEXT: vpsllq $32, %xmm1, %xmm1
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm4, %xmm7, %xmm4
|
||||
; XOPAVX1-NEXT: vpsrlq $33, %xmm2, %xmm2
|
||||
; XOPAVX1-NEXT: vpor %xmm8, %xmm9, %xmm5
|
||||
; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm2
|
||||
|
|
|
@ -161,10 +161,11 @@ define <4 x i64> @max_gt_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: max_gt_v4i64:
|
||||
|
@ -542,10 +543,11 @@ define <4 x i64> @max_ge_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: max_ge_v4i64:
|
||||
|
@ -923,10 +925,11 @@ define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: min_lt_v4i64:
|
||||
|
@ -1304,10 +1307,11 @@ define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: min_le_v4i64:
|
||||
|
|
|
@ -178,15 +178,16 @@ define <4 x i64> @max_gt_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: max_gt_v4i64:
|
||||
|
@ -584,15 +585,16 @@ define <4 x i64> @max_ge_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: max_ge_v4i64:
|
||||
|
@ -989,15 +991,16 @@ define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: min_lt_v4i64:
|
||||
|
@ -1397,15 +1400,16 @@ define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: min_le_v4i64:
|
||||
|
|
|
@ -1964,14 +1964,12 @@ define <4 x i64> @PR52504(<4 x i16> %t3) {
|
|||
; AVX1-NEXT: vpmovsxwq %xmm0, %xmm1
|
||||
; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
|
||||
; AVX1-NEXT: vpmovsxwq %xmm0, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm2
|
||||
; AVX1-NEXT: vxorps %xmm3, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vcmptrueps %ymm3, %ymm3, %ymm3
|
||||
; AVX1-NEXT: vpcmpeqd %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpor %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpor %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %ymm0, %ymm2, %ymm3, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: PR52504:
|
||||
|
|
|
@ -352,14 +352,14 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: test_v8i64:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
|
@ -663,24 +663,24 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: test_v16i64:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm11
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm11, %xmm5, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm9
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm10
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm10, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm6, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm5, %xmm11, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm5, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
|
|
|
@ -352,14 +352,14 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: test_v8i64:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
|
@ -663,22 +663,22 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: test_v16i64:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm9
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm11
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm11, %xmm7, %xmm10
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm10, %xmm11, %xmm7, %xmm5
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm4, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
|
|
|
@ -389,17 +389,17 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
|||
; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm7, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm6, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vxorpd %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm2, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; AVX1-NEXT: vxorpd %xmm2, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vxorpd %xmm2, %xmm1, %xmm2
|
||||
|
@ -736,39 +736,39 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: test_v16i64:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm8, %xmm6
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm10
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm10, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm9
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm11
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm11, %xmm5
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm5, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm12
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm7, %xmm5, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm6, %xmm9
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm5, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm9, %xmm7, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm13
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm13, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm12, %xmm7, %xmm11, %xmm3
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm10, %xmm8, %xmm6
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm7, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm6, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm8, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm8, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm1, %xmm3
|
||||
|
|
|
@ -394,12 +394,12 @@ define i64 @test_v8i64(<8 x i64> %a0) {
|
|||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm3, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm3, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vxorpd %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm2, %xmm0
|
||||
|
@ -743,36 +743,36 @@ define i64 @test_v16i64(<16 x i64> %a0) {
|
|||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm3, %xmm8
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm9
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm12
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm12, %xmm10
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm13
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm13, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm10, %xmm5, %xmm10
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm5, %xmm11
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm11, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm7, %xmm5
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm5, %xmm11
|
||||
; AVX1-NEXT: vblendvpd %xmm10, %xmm12, %xmm13, %xmm7
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm11, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm5, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm8, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm6, %xmm8, %xmm1
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vxorpd %xmm4, %xmm1, %xmm3
|
||||
|
|
|
@ -478,18 +478,18 @@ define <4 x i32> @trunc_packus_v4i64_v4i32(<4 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_packus_v4i64_v4i32:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2]
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm1[0,2],xmm0[0,2]
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
@ -899,24 +899,24 @@ define <8 x i32> @trunc_packus_v8i64_v8i32(<8 x i64>* %p0) "min-legal-vector-wid
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm5, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm9
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm1, %ymm1
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm9, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -1538,18 +1538,18 @@ define <4 x i16> @trunc_packus_v4i64_v4i16(<4 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_packus_v4i64_v4i16:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [65535,65535]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [65535,65535]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -1792,18 +1792,18 @@ define void @trunc_packus_v4i64_v4i16_store(<4 x i64> %a0, <4 x i16> *%p1) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_packus_v4i64_v4i16_store:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [65535,65535]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [65535,65535]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovq %xmm0, (%rdi)
|
||||
; AVX1-NEXT: vzeroupper
|
||||
|
@ -2217,26 +2217,26 @@ define <8 x i16> @trunc_packus_v8i64_v8i16(<8 x i64>* %p0) "min-legal-vector-wid
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [65535,65535]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm5, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm9
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm9, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: trunc_packus_v8i64_v8i16:
|
||||
|
@ -3192,16 +3192,16 @@ define <4 x i8> @trunc_packus_v4i64_v4i8(<4 x i64> %a0) {
|
|||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [255,255]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
|
||||
; AVX1-NEXT: vzeroupper
|
||||
|
@ -3450,16 +3450,16 @@ define void @trunc_packus_v4i64_v4i8_store(<4 x i64> %a0, <4 x i8> *%p1) {
|
|||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [255,255]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
|
||||
; AVX1-NEXT: vmovd %xmm0, (%rdi)
|
||||
|
@ -3863,26 +3863,26 @@ define <8 x i8> @trunc_packus_v8i64_v8i8(<8 x i64>* %p0) "min-legal-vector-width
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [255,255]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm5, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm9
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm9, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackuswb %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
@ -4265,26 +4265,26 @@ define void @trunc_packus_v8i64_v8i8_store(<8 x i64>* %p0, <8 x i8> *%p1) "min-l
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [255,255]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm5, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm9
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm9, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackuswb %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovq %xmm0, (%rsi)
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -4961,54 +4961,54 @@ define <16 x i8> @trunc_packus_v16i64_v16i8(<16 x i64>* %p0) "min-legal-vector-w
|
|||
;
|
||||
; AVX1-LABEL: trunc_packus_v16i64_v16i8:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vmovdqa 112(%rdi), %xmm8
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [255,255]
|
||||
; AVX1-NEXT: vmovdqa 96(%rdi), %xmm9
|
||||
; AVX1-NEXT: vmovdqa 80(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa 64(%rdi), %xmm4
|
||||
; AVX1-NEXT: vmovdqa 96(%rdi), %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [255,255]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm2, %xmm8
|
||||
; AVX1-NEXT: vmovdqa 112(%rdi), %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm9
|
||||
; AVX1-NEXT: vmovdqa 64(%rdi), %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vmovdqa 80(%rdi), %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vmovdqa (%rdi), %xmm5
|
||||
; AVX1-NEXT: vmovdqa 16(%rdi), %xmm6
|
||||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm7
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm5, %xmm1, %xmm10
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm7, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm5, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm6, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm6, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm7
|
||||
; AVX1-NEXT: vpand %xmm5, %xmm7, %xmm5
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm6, %xmm1, %xmm11
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm7, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm4, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm3, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm9, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm9, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm8, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm7, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm7, %xmm5, %xmm5
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vpand %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm6, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm11, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm11, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm10, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm10, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpand %xmm4, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm9, %xmm2
|
||||
; AVX1-NEXT: vpand %xmm2, %xmm9, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm8, %xmm3
|
||||
; AVX1-NEXT: vpand %xmm3, %xmm8, %xmm3
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
|
|
@ -484,18 +484,18 @@ define <4 x i32> @trunc_ssat_v4i64_v4i32(<4 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_ssat_v4i64_v4i32:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [2147483647,2147483647]
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [2147483647,2147483647]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [18446744071562067968,18446744071562067968]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744071562067968,18446744071562067968]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm1[0,2],xmm0[0,2]
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
@ -921,24 +921,24 @@ define <8 x i32> @trunc_ssat_v8i64_v8i32(<8 x i64>* %p0) "min-legal-vector-width
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [2147483647,2147483647]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [18446744071562067968,18446744071562067968]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm9
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744071562067968,18446744071562067968]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm1, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -1550,18 +1550,18 @@ define <4 x i16> @trunc_ssat_v4i64_v4i16(<4 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_ssat_v4i64_v4i16:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [32767,32767]
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [32767,32767]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -1798,18 +1798,18 @@ define void @trunc_ssat_v4i64_v4i16_store(<4 x i64> %a0, <4 x i16> *%p1) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_ssat_v4i64_v4i16_store:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [32767,32767]
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [32767,32767]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovq %xmm0, (%rdi)
|
||||
; AVX1-NEXT: vzeroupper
|
||||
|
@ -2215,26 +2215,26 @@ define <8 x i16> @trunc_ssat_v8i64_v8i16(<8 x i64>* %p0) "min-legal-vector-width
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [32767,32767]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm9
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744073709518848,18446744073709518848]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: trunc_ssat_v8i64_v8i16:
|
||||
|
@ -2955,16 +2955,16 @@ define <4 x i8> @trunc_ssat_v4i64_v4i8(<4 x i64> %a0) {
|
|||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [127,127]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
|
||||
; AVX1-NEXT: vzeroupper
|
||||
|
@ -3216,16 +3216,16 @@ define void @trunc_ssat_v4i64_v4i8_store(<4 x i64> %a0, <4 x i8> *%p1) {
|
|||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [127,127]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
|
||||
; AVX1-NEXT: vmovd %xmm0, (%rdi)
|
||||
|
@ -3637,26 +3637,26 @@ define <8 x i8> @trunc_ssat_v8i64_v8i8(<8 x i64>* %p0) "min-legal-vector-width"=
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [127,127]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm9
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpacksswb %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
@ -4057,26 +4057,26 @@ define void @trunc_ssat_v8i64_v8i8_store(<8 x i64>* %p0, <8 x i8> *%p1) "min-leg
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [127,127]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm9
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm5, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm9, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpacksswb %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovq %xmm0, (%rsi)
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -4785,55 +4785,55 @@ define <16 x i8> @trunc_ssat_v16i64_v16i8(<16 x i64>* %p0) "min-legal-vector-wid
|
|||
;
|
||||
; AVX1-LABEL: trunc_ssat_v16i64_v16i8:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vmovdqa 112(%rdi), %xmm8
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [127,127]
|
||||
; AVX1-NEXT: vmovdqa 96(%rdi), %xmm9
|
||||
; AVX1-NEXT: vmovdqa 80(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa 64(%rdi), %xmm4
|
||||
; AVX1-NEXT: vmovdqa 96(%rdi), %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [127,127]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm2, %xmm8
|
||||
; AVX1-NEXT: vmovdqa 112(%rdi), %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm2, %xmm9
|
||||
; AVX1-NEXT: vmovdqa 64(%rdi), %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vmovdqa 80(%rdi), %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vmovdqa (%rdi), %xmm5
|
||||
; AVX1-NEXT: vmovdqa 16(%rdi), %xmm6
|
||||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm7
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm5, %xmm1, %xmm10
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm6, %xmm1, %xmm11
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm7, %xmm1, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm4, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm3, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm9, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm9, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm8, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm2, %xmm8
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm7, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm7, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm3, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm4, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm7, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm6, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm11, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm11, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm10, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm10, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm8, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpackssdw %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm7, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm5, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm6, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [18446744073709551488,18446744073709551488]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm5, %xmm7
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vpackssdw %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackssdw %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm4, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm3, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm9, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm9, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm8, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm8, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vpackssdw %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpackssdw %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: trunc_ssat_v16i64_v16i8:
|
||||
|
|
|
@ -625,21 +625,21 @@ define <8 x i32> @trunc_usat_v8i64_v8i32(<8 x i64>* %p0) {
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [9223372041149743103,9223372041149743103]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm8
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm7, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm6 = [4294967295,4294967295]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm1, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -1087,16 +1087,16 @@ define <4 x i16> @trunc_usat_v4i64_v4i16(<4 x i64> %a0) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_usat_v4i64_v4i16:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm3 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm5 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vzeroupper
|
||||
|
@ -1262,16 +1262,16 @@ define void @trunc_usat_v4i64_v4i16_store(<4 x i64> %a0, <4 x i16> *%p1) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_usat_v4i64_v4i16_store:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm3 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm5 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm1, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm5, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovq %xmm0, (%rdi)
|
||||
|
@ -1543,23 +1543,23 @@ define <8 x i16> @trunc_usat_v8i64_v8i16(<8 x i64>* %p0) {
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [9223372036854841343,9223372036854841343]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm8
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm6 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [65535,65535]
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm7, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: trunc_usat_v8i64_v8i16:
|
||||
|
@ -2365,16 +2365,16 @@ define <4 x i8> @trunc_usat_v4i64_v4i8(<4 x i64> %a0) {
|
|||
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854776063,9223372036854776063]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm4 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm3 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm4, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm4, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
@ -2544,16 +2544,16 @@ define void @trunc_usat_v4i64_v4i8_store(<4 x i64> %a0, <4 x i8> *%p1) {
|
|||
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854776063,9223372036854776063]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm4, %xmm1
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm4 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm3 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm4, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm3, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm4, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm0, %xmm4, %xmm0
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
|
||||
; AVX1-NEXT: vpshufb %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpshufb %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
|
||||
; AVX1-NEXT: vmovd %xmm0, (%rdi)
|
||||
; AVX1-NEXT: vzeroupper
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -2812,23 +2812,23 @@ define <8 x i8> @trunc_usat_v8i64_v8i8(<8 x i64>* %p0) {
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [9223372036854776063,9223372036854776063]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm8
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm6 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm7, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackuswb %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
|
@ -3072,23 +3072,23 @@ define void @trunc_usat_v8i64_v8i8_store(<8 x i64>* %p0, <8 x i8> *%p1) {
|
|||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [9223372036854776063,9223372036854776063]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm8
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm6 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm7, %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm8, %xmm0, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm7, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpackuswb %xmm0, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovq %xmm0, (%rsi)
|
||||
; AVX1-NEXT: retq
|
||||
|
@ -3497,52 +3497,48 @@ define <16 x i8> @trunc_usat_v16i64_v16i8(<16 x i64>* %p0) {
|
|||
;
|
||||
; AVX1-LABEL: trunc_usat_v16i64_v16i8:
|
||||
; AVX1: # %bb.0:
|
||||
; AVX1-NEXT: vmovdqa (%rdi), %xmm12
|
||||
; AVX1-NEXT: vmovdqa 16(%rdi), %xmm13
|
||||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm15
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm9
|
||||
; AVX1-NEXT: vmovdqa (%rdi), %xmm0
|
||||
; AVX1-NEXT: vmovdqa 16(%rdi), %xmm1
|
||||
; AVX1-NEXT: vmovdqa 32(%rdi), %xmm2
|
||||
; AVX1-NEXT: vmovdqa 48(%rdi), %xmm3
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm12, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [9223372036854776063,9223372036854776063]
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm13, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm0
|
||||
; AVX1-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm15, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm10
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm9, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm11
|
||||
; AVX1-NEXT: vmovdqa 64(%rdi), %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm5, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm14
|
||||
; AVX1-NEXT: vmovdqa 80(%rdi), %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm7, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vmovdqa 96(%rdi), %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vmovdqa 112(%rdi), %xmm0
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vmovapd {{.*#+}} xmm6 = [255,255]
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm6, %xmm8
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm7, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm6, %xmm1
|
||||
; AVX1-NEXT: vblendvpd %xmm14, %xmm5, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm11, %xmm9, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm10, %xmm15, %xmm6, %xmm5
|
||||
; AVX1-NEXT: vmovapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
|
||||
; AVX1-NEXT: vblendvpd %xmm0, %xmm13, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vmovapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
|
||||
; AVX1-NEXT: vblendvpd %xmm0, %xmm12, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpackusdw %xmm8, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm4, %xmm5, %xmm1
|
||||
; AVX1-NEXT: vpackusdw %xmm7, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm1, %xmm3, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vpackuswb %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: vmovdqa 80(%rdi), %xmm1
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm1, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm7, %xmm1
|
||||
; AVX1-NEXT: vmovdqa 64(%rdi), %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1
|
||||
; AVX1-NEXT: vmovdqa 112(%rdi), %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm2, %xmm7, %xmm2
|
||||
; AVX1-NEXT: vmovdqa 96(%rdi), %xmm3
|
||||
; AVX1-NEXT: vpxor %xmm4, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm7, %xmm3
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpackusdw %xmm2, %xmm1, %xmm1
|
||||
; AVX1-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: trunc_usat_v16i64_v16i8:
|
||||
|
|
|
@ -4575,16 +4575,18 @@ define <8 x i64> @test121(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test121:
|
||||
|
@ -4696,16 +4698,18 @@ define <8 x i64> @test122(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test122:
|
||||
|
@ -4816,16 +4820,18 @@ define <8 x i64> @test123(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test123:
|
||||
|
@ -4936,16 +4942,18 @@ define <8 x i64> @test124(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test124:
|
||||
|
@ -5072,25 +5080,27 @@ define <8 x i64> @test125(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test125:
|
||||
|
@ -5222,25 +5232,27 @@ define <8 x i64> @test126(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test126:
|
||||
|
@ -5371,25 +5383,27 @@ define <8 x i64> @test127(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm7, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm0, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm6, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test127:
|
||||
|
@ -5520,25 +5534,27 @@ define <8 x i64> @test128(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm7, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm0, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm6, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test128:
|
||||
|
@ -7128,16 +7144,18 @@ define <8 x i64> @test153(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test153:
|
||||
|
@ -7248,16 +7266,18 @@ define <8 x i64> @test154(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm5
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm4, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test154:
|
||||
|
@ -7369,16 +7389,18 @@ define <8 x i64> @test155(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm2, %xmm5
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test155:
|
||||
|
@ -7504,25 +7526,27 @@ define <8 x i64> @test156(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm7, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm0, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm6, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test156:
|
||||
|
@ -7654,25 +7678,27 @@ define <8 x i64> @test159(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test159:
|
||||
|
@ -7804,25 +7830,27 @@ define <8 x i64> @test160(<8 x i64> %a, <8 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm8
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm7
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm8, %xmm6, %xmm6
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm0, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm4
|
||||
; AVX1-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm6, %xmm0, %xmm2, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm6
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm6, %xmm7
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm7, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm6, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm5, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm1, %xmm3, %xmm1
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test160:
|
||||
|
@ -7900,10 +7928,11 @@ define <4 x i64> @test161(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test161:
|
||||
|
@ -7982,10 +8011,11 @@ define <4 x i64> @test162(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test162:
|
||||
|
@ -8063,10 +8093,11 @@ define <4 x i64> @test163(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test163:
|
||||
|
@ -8144,10 +8175,11 @@ define <4 x i64> @test164(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test164:
|
||||
|
@ -8233,15 +8265,16 @@ define <4 x i64> @test165(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test165:
|
||||
|
@ -8330,15 +8363,16 @@ define <4 x i64> @test166(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test166:
|
||||
|
@ -8426,15 +8460,16 @@ define <4 x i64> @test167(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test167:
|
||||
|
@ -8522,15 +8557,16 @@ define <4 x i64> @test168(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test168:
|
||||
|
@ -8611,10 +8647,11 @@ define <4 x i64> @test169(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test169:
|
||||
|
@ -8692,10 +8729,11 @@ define <4 x i64> @test170(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test170:
|
||||
|
@ -8774,10 +8812,11 @@ define <4 x i64> @test171(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test171:
|
||||
|
@ -8856,10 +8895,11 @@ define <4 x i64> @test172(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm3, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test172:
|
||||
|
@ -8944,15 +8984,16 @@ define <4 x i64> @test173(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test173:
|
||||
|
@ -9040,15 +9081,16 @@ define <4 x i64> @test174(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm5, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test174:
|
||||
|
@ -9137,15 +9179,16 @@ define <4 x i64> @test175(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test175:
|
||||
|
@ -9234,15 +9277,16 @@ define <4 x i64> @test176(<4 x i64> %a, <4 x i64> %b) {
|
|||
; AVX1: # %bb.0: # %entry
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
||||
; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm4, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm4
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm5, %xmm6
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm2, %xmm5, %xmm2
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm3, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: test176:
|
||||
|
@ -10370,14 +10414,16 @@ define <8 x i64> @concat_smin_smax(<4 x i64> %a0, <4 x i64> %a1) {
|
|||
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
|
||||
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
|
||||
; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vblendvpd %xmm2, %xmm3, %xmm4, %xmm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm0, %xmm1, %xmm5
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm5, %ymm2
|
||||
; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm2
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm4, %xmm3, %xmm5
|
||||
; AVX1-NEXT: vblendvpd %xmm5, %xmm3, %xmm4, %xmm3
|
||||
; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm4
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm3
|
||||
; AVX1-NEXT: vblendvpd %ymm3, %ymm0, %ymm1, %ymm1
|
||||
; AVX1-NEXT: vmovapd %ymm2, %ymm0
|
||||
; AVX1-NEXT: vblendvpd %xmm4, %xmm0, %xmm1, %xmm0
|
||||
; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm1
|
||||
; AVX1-NEXT: vmovaps %ymm2, %ymm0
|
||||
; AVX1-NEXT: retq
|
||||
;
|
||||
; AVX2-LABEL: concat_smin_smax:
|
||||
|
|
Loading…
Reference in New Issue