[llvm] e640b20 - [X86][SSE] LowerScalarImmediateShift - use APInt::getLowBitsSet for vXi8 ISD::SRL mask generation. NFCI.

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 1 10:19:45 PST 2021


Author: Simon Pilgrim
Date: 2021-02-01T18:17:40Z
New Revision: e640b209b24a9bf66f5998b5fafa76f0dbb388ab

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

LOG: [X86][SSE] LowerScalarImmediateShift - use APInt::getLowBitsSet for vXi8 ISD::SRL mask generation. NFCI.

Match what we do for ISD::SHL

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 1380195606a7..9a1c9bf7aa3b 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -27777,8 +27777,8 @@ static SDValue LowerScalarImmediateShift(SDValue Op, SelectionDAG &DAG,
                                                ShiftAmt, DAG);
       SRL = DAG.getBitcast(VT, SRL);
       // Zero out the leftmost bits.
-      return DAG.getNode(ISD::AND, dl, VT, SRL,
-                         DAG.getConstant(uint8_t(-1U) >> ShiftAmt, dl, VT));
+      APInt Mask = APInt::getLowBitsSet(8, 8 - ShiftAmt);
+      return DAG.getNode(ISD::AND, dl, VT, SRL, DAG.getConstant(Mask, dl, VT));
     }
     if (Op.getOpcode() == ISD::SRA) {
       // ashr(R, Amt) === sub(xor(lshr(R, Amt), Mask), Mask)


        


More information about the llvm-commits mailing list