[llvm] [DAGCombiner] Teach SearchForAndLoads to handle an AND with 2 constant operands. (PR #142062)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Fri May 30 02:43:04 PDT 2025


================
@@ -6812,7 +6812,8 @@ bool DAGCombiner::SearchForAndLoads(SDNode *N,
 
     // Some constants may need fixing up later if they are too large.
     if (auto *C = dyn_cast<ConstantSDNode>(Op)) {
-      if ((N->getOpcode() == ISD::OR || N->getOpcode() == ISD::XOR) &&
+      if ((N->getOpcode() == ISD::OR || N->getOpcode() == ISD::XOR ||
+           N->getOpcode() == ISD::AND) &&
----------------
dtcxzyw wrote:

N is always a bitwise op. We can insert an assertion instead.
https://github.com/llvm/llvm-project/blob/2a3afa2feb90844ad0f8b0bc57663e2aec06cd0a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp#L6858-L6864
https://github.com/llvm/llvm-project/blob/2a3afa2feb90844ad0f8b0bc57663e2aec06cd0a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp#L6891-L6906
https://github.com/llvm/llvm-project/blob/2a3afa2feb90844ad0f8b0bc57663e2aec06cd0a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp#L7494-L7501



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


More information about the llvm-commits mailing list