summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-10-27 07:10:48 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-10-27 07:10:48 +0000
commit88116e905e654daa92bdb80a821e12e053a42f0e (patch)
tree4f1b9e124c9813130e1ae976e4f9f27197f81c54
parent96f2ea3dd407792054ea3592e9d243f34695e4af (diff)
downloadbcm5719-llvm-88116e905e654daa92bdb80a821e12e053a42f0e.tar.gz
bcm5719-llvm-88116e905e654daa92bdb80a821e12e053a42f0e.zip
Revert rL345395: [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. ........ Its been reported that this is causing out of trunk failures. llvm-svn: 345451
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 2ebaec778e3..6d589eef5a9 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -6325,6 +6325,9 @@ 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);
@@ -6384,7 +6387,8 @@ static bool getFauxShuffleMask(SDValue N, SmallVectorImpl<int> &Mask,
Mask[i + InsertIdx] = (NumElts * (1 + InputIdx)) + ExtractIdx + M;
}
}
- return true;
+ // TODO - Add support for more than 1 subinput.
+ return Ops.size() <= 2;
}
case ISD::SCALAR_TO_VECTOR: {
// Match against a scalar_to_vector of an extract from a vector,
@@ -6577,7 +6581,7 @@ static bool resolveTargetShuffleInputs(SDValue Op,
return false;
resolveTargetShuffleInputsAndMask(Inputs, Mask);
- return Inputs.size() <= 2;
+ return true;
}
/// Returns the scalar element that will make up the ith
OpenPOWER on IntegriCloud