[llvm] r362820 - [DAGCombine] Use APInt::extractBits in "sub-splat" constant mask detection. NFCI.

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 7 11:07:06 PDT 2019


Author: rksimon
Date: Fri Jun  7 11:07:06 2019
New Revision: 362820

URL: http://llvm.org/viewvc/llvm-project?rev=362820&view=rev
Log:
[DAGCombine] Use APInt::extractBits in "sub-splat" constant mask detection. NFCI.

Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=362820&r1=362819&r2=362820&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Fri Jun  7 11:07:06 2019
@@ -5005,10 +5005,10 @@ SDValue DAGCombiner::visitAND(SDNode *N)
 
         // Make sure that variable 'Constant' is only set if 'SplatBitSize' is a
         // multiple of 'BitWidth'. Otherwise, we could propagate a wrong value.
-        if (SplatBitSize % BitWidth == 0) {
+        if ((SplatBitSize % BitWidth) == 0) {
           Constant = APInt::getAllOnesValue(BitWidth);
-          for (unsigned i = 0, n = SplatBitSize/BitWidth; i < n; ++i)
-            Constant &= SplatValue.lshr(i*BitWidth).zextOrTrunc(BitWidth);
+          for (unsigned i = 0, n = (SplatBitSize / BitWidth); i < n; ++i)
+            Constant &= SplatValue.extractBits(BitWidth, i * BitWidth);
         }
       }
     }




More information about the llvm-commits mailing list