diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-05-03 15:56:06 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-05-03 15:56:06 +0000 |
| commit | b323d5ec7cac0122cbf6cd98d47119722f02163c (patch) | |
| tree | 9e81c83da70fa201da3a858837201e47d8c8ec56 /llvm/lib/Target/X86 | |
| parent | d857f64c318dcc5827b9e4cb84086dc8080ca9af (diff) | |
| download | bcm5719-llvm-b323d5ec7cac0122cbf6cd98d47119722f02163c.tar.gz bcm5719-llvm-b323d5ec7cac0122cbf6cd98d47119722f02163c.zip | |
[X86] LowerToHorizontalOp - Tidyup calls to getHopForBuildVector. NFCI.
Merge the if() tests for the various HADD/SUB + Subtarget tests
llvm-svn: 359901
Diffstat (limited to 'llvm/lib/Target/X86')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 69354b72356..885b7aae4c9 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/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()) |

