[llvm] cc15380 - [X86][SSE] combineTargetShuffle - use scaleShuffleMask helper to widen shuffle mask. NFCI.

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 8 11:36:45 PDT 2020


Author: Simon Pilgrim
Date: 2020-08-08T19:36:18+01:00
New Revision: cc15380f103f09bc447cd3f22bcdbedca7447b97

URL: https://github.com/llvm/llvm-project/commit/cc15380f103f09bc447cd3f22bcdbedca7447b97
DIFF: https://github.com/llvm/llvm-project/commit/cc15380f103f09bc447cd3f22bcdbedca7447b97.diff

LOG: [X86][SSE] combineTargetShuffle - use scaleShuffleMask helper to widen shuffle mask. NFCI.

Use scaleShuffleMask helper for the shuffle(hadd,hadd) canonicalization.

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86ISelLowering.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index b8e7026d1ca4..0056b392705b 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());


        


More information about the llvm-commits mailing list