diff options
author | Craig Topper <craig.topper@gmail.com> | 2017-02-12 23:49:49 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2017-02-12 23:49:49 +0000 |
commit | aa46204ed9f36077c4bf138288a391ac395cfcce (patch) | |
tree | 7c751e9e1a97aff86da4e67bc9378d1384645e26 /llvm/lib/CodeGen | |
parent | 53eafa8ea43066d528434b7883b8602474149780 (diff) | |
download | bcm5719-llvm-aa46204ed9f36077c4bf138288a391ac395cfcce.tar.gz bcm5719-llvm-aa46204ed9f36077c4bf138288a391ac395cfcce.zip |
[DAGCombiner] Remove the half vector width check for the combine of EXTRACT_SUBVECTOR from an INSERT_SUBVECTOR.
This gives more parallelism opportunities for AVX-512 when dealing with 128-bit extracts from 512-bit vectors.
llvm-svn: 294930
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 63e2bd09371..9e06f0fd6f9 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -13933,13 +13933,12 @@ SDValue DAGCombiner::visitEXTRACT_SUBVECTOR(SDNode* N) { if (V->getOpcode() == ISD::INSERT_SUBVECTOR) { // Handle only simple case where vector being inserted and vector - // being extracted are of same type, and are half size of larger vectors. - EVT BigVT = V->getOperand(0).getValueType(); + // being extracted are of same size. EVT SmallVT = V->getOperand(1).getValueType(); - if (!NVT.bitsEq(SmallVT) || NVT.getSizeInBits()*2 != BigVT.getSizeInBits()) + if (!NVT.bitsEq(SmallVT)) return SDValue(); - // Only handle cases where both indexes are constants with the same type. + // Only handle cases where both indexes are constants. ConstantSDNode *ExtIdx = dyn_cast<ConstantSDNode>(N->getOperand(1)); ConstantSDNode *InsIdx = dyn_cast<ConstantSDNode>(V->getOperand(2)); |