[llvm] [Mips] Optimize (shift x (and y, BitWidth - 1)) to (shift x, y) (PR #73889)

via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 29 18:47:11 PST 2023


================
@@ -324,6 +326,20 @@ bool MipsDAGToDAGISel::SelectInlineAsmMemoryOperand(
   return true;
 }
 
+bool MipsDAGToDAGISel::isUnneededShiftMask(SDNode *N,
+                                             unsigned ShAmtBits) const {
+  assert(N->getOpcode() == ISD::AND && "Unexpected opcode");
+
+  const APInt &RHS = cast<ConstantSDNode>(N->getOperand(1))->getAPIntValue();
+  if (RHS.countr_one() >= ShAmtBits) {
+    LLVM_DEBUG(dbgs() << DEBUG_TYPE << " Need optimize 'and & shl/srl/sra' and operand value bits is " << RHS.countr_one() << "\n");
----------------
yingopq wrote:

Thanks!

https://github.com/llvm/llvm-project/pull/73889


More information about the llvm-commits mailing list