summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-10-26 15:19:02 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-10-26 15:19:02 +0000
commit5d1be4f8d4317a6f32da29fc3fd4a997cbd8db92 (patch)
tree426db9a0219c30512bbea86b6534c02e4db57ffb
parentf4a6f6424daf2b7876fa83b190feed1f5b225ac4 (diff)
downloadbcm5719-llvm-5d1be4f8d4317a6f32da29fc3fd4a997cbd8db92.tar.gz
bcm5719-llvm-5d1be4f8d4317a6f32da29fc3fd4a997cbd8db92.zip
[X86][SSE] Move 2-input limit up from getFauxShuffleMask to resolveTargetShuffleInputs
Makes no difference to actual shuffle decoding yet, but merges all the existing limits in one place for when proper support is fixed. llvm-svn: 345395
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index dd37010cbd8..bfd8c89599b 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -6325,9 +6325,6 @@ static bool getFauxShuffleMask(SDValue N, SmallVectorImpl<int> &Mask,
if (!resolveTargetShuffleInputs(N0, SrcInputs0, SrcMask0, DAG) ||
!resolveTargetShuffleInputs(N1, SrcInputs1, SrcMask1, DAG))
return false;
- // TODO - Add support for more than 2 inputs.
- if ((SrcInputs0.size() + SrcInputs1.size()) > 2)
- return false;
int MaskSize = std::max(SrcMask0.size(), SrcMask1.size());
SmallVector<int, 64> Mask0, Mask1;
scaleShuffleMask<int>(MaskSize / SrcMask0.size(), SrcMask0, Mask0);
@@ -6387,8 +6384,7 @@ static bool getFauxShuffleMask(SDValue N, SmallVectorImpl<int> &Mask,
Mask[i + InsertIdx] = (NumElts * (1 + InputIdx)) + ExtractIdx + M;
}
}
- // TODO - Add support for more than 1 subinput.
- return Ops.size() <= 2;
+ return true;
}
case ISD::SCALAR_TO_VECTOR: {
// Match against a scalar_to_vector of an extract from a vector,
@@ -6581,7 +6577,7 @@ static bool resolveTargetShuffleInputs(SDValue Op,
return false;
resolveTargetShuffleInputsAndMask(Inputs, Mask);
- return true;
+ return Inputs.size() <= 2;
}
/// Returns the scalar element that will make up the ith
OpenPOWER on IntegriCloud