[llvm] r364024 - [X86] foldVectorXorShiftIntoCmp - use isConstOrConstSplat. NFCI.

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 21 03:54:31 PDT 2019


Author: rksimon
Date: Fri Jun 21 03:54:30 2019
New Revision: 364024

URL: http://llvm.org/viewvc/llvm-project?rev=364024&view=rev
Log:
[X86] foldVectorXorShiftIntoCmp - use isConstOrConstSplat. NFCI.

Use the isConstOrConstSplat helper instead of inspecting the build vector manually.

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

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=364024&r1=364023&r2=364024&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Jun 21 03:54:30 2019
@@ -38842,13 +38842,10 @@ static SDValue foldVectorXorShiftIntoCmp
     return SDValue();
 
   // The shift should be smearing the sign bit across each vector element.
-  auto *ShiftBV = dyn_cast<BuildVectorSDNode>(Shift.getOperand(1));
-  if (!ShiftBV)
-    return SDValue();
-
-  EVT ShiftEltTy = Shift.getValueType().getVectorElementType();
-  auto *ShiftAmt = ShiftBV->getConstantSplatNode();
-  if (!ShiftAmt || ShiftAmt->getZExtValue() != ShiftEltTy.getSizeInBits() - 1)
+  auto *ShiftAmt =
+      isConstOrConstSplat(Shift.getOperand(1), /*AllowUndefs*/ true);
+  if (!ShiftAmt ||
+      ShiftAmt->getAPIntValue() != (Shift.getScalarValueSizeInBits() - 1))
     return SDValue();
 
   // Create a greater-than comparison against -1. We don't use the more obvious




More information about the llvm-commits mailing list