From a3b81fe4c3b89a82dcfe48949c0c4b08642dfd5a Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Fri, 3 May 2019 15:56:06 +0000 Subject: [PATCH] [X86] LowerToHorizontalOp - Tidyup calls to getHopForBuildVector. NFCI. Merge the if() tests for the various HADD/SUB + Subtarget tests git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359901 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ISelLowering.cpp | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 69354b72356..885b7aae4c9 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -8595,23 +8595,15 @@ static SDValue LowerToHorizontalOp(const BuildVectorSDNode *BV, // int/FP at 128-bit/256-bit. Each type was introduced with a different // subtarget feature. Try to match those "native" patterns first. MVT VT = BV->getSimpleValueType(0); - unsigned HOpcode; - SDValue V0, V1; - if ((VT == MVT::v4f32 || VT == MVT::v2f64) && Subtarget.hasSSE3()) - if (isHopBuildVector(BV, DAG, HOpcode, V0, V1)) - return getHopForBuildVector(BV, DAG, HOpcode, V0, V1); - - if ((VT == MVT::v8i16 || VT == MVT::v4i32) && Subtarget.hasSSSE3()) - if (isHopBuildVector(BV, DAG, HOpcode, V0, V1)) - return getHopForBuildVector(BV, DAG, HOpcode, V0, V1); - - if ((VT == MVT::v8f32 || VT == MVT::v4f64) && Subtarget.hasAVX()) - if (isHopBuildVector(BV, DAG, HOpcode, V0, V1)) - return getHopForBuildVector(BV, DAG, HOpcode, V0, V1); - - if ((VT == MVT::v16i16 || VT == MVT::v8i32) && Subtarget.hasAVX2()) + if (((VT == MVT::v4f32 || VT == MVT::v2f64) && Subtarget.hasSSE3()) || + ((VT == MVT::v8i16 || VT == MVT::v4i32) && Subtarget.hasSSSE3()) || + ((VT == MVT::v8f32 || VT == MVT::v4f64) && Subtarget.hasAVX()) || + ((VT == MVT::v16i16 || VT == MVT::v8i32) && Subtarget.hasAVX2())) { + unsigned HOpcode; + SDValue V0, V1; if (isHopBuildVector(BV, DAG, HOpcode, V0, V1)) return getHopForBuildVector(BV, DAG, HOpcode, V0, V1); + } // Try harder to match 256-bit ops by using extract/concat. if (!Subtarget.hasAVX() || !VT.is256BitVector()) -- 2.40.0