diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2020-08-08 19:35:57 +0100 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2020-08-08 19:36:18 +0100 |
commit | cc15380f103f09bc447cd3f22bcdbedca7447b97 (patch) | |
tree | 3fb164acd35ec4682b1921e1d05af737fe863998 | |
parent | 44b260cb0aab387d85e4d59c16fc7b8866264f5e (diff) | |
download | llvm-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.cpp | 10 |
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()); |