aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2020-08-08 19:35:57 +0100
committerSimon Pilgrim <llvm-dev@redking.me.uk>2020-08-08 19:36:18 +0100
commitcc15380f103f09bc447cd3f22bcdbedca7447b97 (patch)
tree3fb164acd35ec4682b1921e1d05af737fe863998
parent44b260cb0aab387d85e4d59c16fc7b8866264f5e (diff)
downloadllvm-cc15380f103f09bc447cd3f22bcdbedca7447b97.zip
llvm-cc15380f103f09bc447cd3f22bcdbedca7447b97.tar.gz
llvm-cc15380f103f09bc447cd3f22bcdbedca7447b97.tar.bz2
[X86][SSE] combineTargetShuffle - use scaleShuffleMask helper to widen shuffle mask. NFCI.
Use scaleShuffleMask helper for the shuffle(hadd,hadd) canonicalization.
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp10
1 files changed, 2 insertions, 8 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index b8e7026..0056b39 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -35921,14 +35921,8 @@ static SDValue combineTargetShuffle(SDValue N, SelectionDAG &DAG,
SmallVector<int, 16> TargetMask128;
if (!TargetMask.empty() && 0 < TargetOps.size() && TargetOps.size() <= 2 &&
isRepeatedTargetShuffleMask(128, VT, TargetMask, TargetMask128)) {
- SmallVector<int, 16> WidenedMask128 = TargetMask128;
- while (WidenedMask128.size() > 2) {
- SmallVector<int, 16> WidenedMask;
- if (!canWidenShuffleElements(WidenedMask128, WidenedMask))
- break;
- WidenedMask128 = std::move(WidenedMask);
- }
- if (WidenedMask128.size() == 2) {
+ SmallVector<int, 16> WidenedMask128;
+ if (scaleShuffleElements(TargetMask128, 2, WidenedMask128)) {
assert(isUndefOrZeroOrInRange(WidenedMask128, 0, 4) && "Illegal shuffle");
SDValue BC0 = peekThroughBitcasts(TargetOps.front());
SDValue BC1 = peekThroughBitcasts(TargetOps.back());