[llvm] [DAGCombiner] Fold pattern for srl-shl-zext (PR #138290)

Alexander Peskov via llvm-commits llvm-commits at lists.llvm.org
Mon May 12 06:50:05 PDT 2025


================
@@ -10972,6 +10972,24 @@ SDValue DAGCombiner::visitSRL(SDNode *N) {
       return DAG.getNode(ISD::SRL, DL, VT, N0, NewOp1);
   }
 
+  // fold (srl (logic_op x, (shl (zext y), c1)), c1)
+  //   -> (logic_op (srl x, c1), (zext y))
+  // c1 <= leadingzeros(zext(y))
+  SDValue X, ZExtY;
+  if (N1C && sd_match(N0, m_OneUse(m_BitwiseLogic(
+                              m_Value(X),
+                              m_OneUse(m_Shl(m_AllOf(m_Value(ZExtY),
+                                                     m_Opc(ISD::ZERO_EXTEND)),
+                                             m_Specific(N1))))))) {
+    unsigned NumLeadingZeros =
+        ZExtY.getValueType().getScalarSizeInBits() -
----------------
apeskov wrote:

replaced

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


More information about the llvm-commits mailing list