[gcc r17-3537] match: Remove some INTEGER_CST checks there were already done (widdening multiply)

Andrea Pinski via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:034513d779c8662d9464dc0487c7c304c064d74f

commit r17-3537-g034513d779c8662d9464dc0487c7c304c064d74f
Author: Andrea Pinski <[email protected]>
Date:   Fri Aug 21 19:34:56 2026 -0700

    match: Remove some INTEGER_CST checks there were already done (widdening multiply)
    
    This removes checks for INTEGER_CST which are done in the inner most match already.
    Doing this change simplifies the generated code by 0.2% (or 584 lines).
    
    Pushed as obvious after a bootstrap/test on x86_64-linux-gnu.
    
    gcc/ChangeLog:
    
            * match.pd (mul_hilo): Remove INTEGER_CST check on the operands.
            (mul_lolo): Likewise.
            (mul_hihi): Likewise.
            (mul_low_accum): Likewise.
            (mul_ladder_sum1): Likewise.
            (mul_ladder_sum2): Likewise.
            (mul_ladder_sum3): Likewise.
            (mul_carry_low_sum): Likewise.
    
    Signed-off-by: Andrea Pinski <[email protected]>

Diff:
---
 gcc/match.pd | 54 +++++++++++++++++++++++++++---------------------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/gcc/match.pd b/gcc/match.pd
index 28c36e557443..fc49146c6c11 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -12825,18 +12825,18 @@ and,
 /* Cross product: high(op0) * low(op1).  */
 (match (mul_hilo @op0 @op1 @0 @1)
   (mult:c
-    (mul_hi @op0 INTEGER_CST@0)
-    (mul_lo @op1 INTEGER_CST@1)))
+    (mul_hi @op0 @0)
+    (mul_lo @op1 @1)))
 /* Low-low product: low(op0) * low(op1).  */
 (match (mul_lolo @op0 @op1 @0)
   (mult:c
-    (mul_lo @op0 INTEGER_CST@0)
-    (mul_lo @op1 INTEGER_CST@0)))
+    (mul_lo @op0 @0)
+    (mul_lo @op1 @0)))
 /* High-high product: high(op0) * high(op1).  */
 (match (mul_hihi @op0 @op1 @0)
   (mult:c
-    (mul_hi @op0 INTEGER_CST@0)
-    (mul_hi @op1 INTEGER_CST@0)))
+    (mul_hi @op0 @0)
+    (mul_hi @op1 @0)))
 /* Cross sum: xh*yl + xl*yh.
    Note: matches any PLUS; operands are validated as actual cross
    products by the forwprop consumer (long_mul_check_consistency).  */
@@ -12847,8 +12847,8 @@ and,
   (plus:c
     (mul_cross_sum @mul_hilo0 @mul_hilo1)
     (mul_hi
-      (mul_lolo @op0 @op1 INTEGER_CST@1)
-      INTEGER_CST@0)))
+      (mul_lolo @op0 @op1 @1)
+      @0)))
 /* Carry from low-sum overflow: (cast?) (hilo > low_sum) << N.
    No explicit type/width guard needed: mul_low_sum delegates to
    mul_cross_sum + mul_hi + mul_lolo, which provide deep structural
@@ -12857,9 +12857,9 @@ and,
   (lshift
     (convert (gt
       @mul_hilo0
-      (mul_low_sum @op0 @op1 @mul_hilo1 @mul_hilo2 INTEGER_CST@0
-       INTEGER_CST@1)))
-    INTEGER_CST@0))
+      (mul_low_sum @op0 @op1 @mul_hilo1 @mul_hilo2 @0
+       @1)))
+    @0))
 /* Carry from cross-sum overflow: (cast?) (hilo > cross_sum) << N.
    Explicit guard required because mul_cross_sum is just (plus:c @0 @1)
    with no inherent type or halfwidth constraint.  */
@@ -12886,9 +12886,9 @@ and,
 (match (mul_low_accum @op0 @op1 @mul_hilo0 @mul_hilo1 @0 @1)
   (plus:c
     (mul_hi
-      (mul_lolo @op0 @op1 INTEGER_CST@0)
-      INTEGER_CST@1)
-    (mul_lo (mul_cross_sum @mul_hilo0 @mul_hilo1) INTEGER_CST@0)))
+      (mul_lolo @op0 @op1 @0)
+      @1)
+    (mul_lo (mul_cross_sum @mul_hilo0 @mul_hilo1) @0)))
 /* Ladder sum form 1: (hilo0 & mask) + hilo1 + (xl*yl >> N).
    First variant: @mul_hilo1 is inside the inner plus:c alongside
    (mul_lo ...).  */
@@ -12897,42 +12897,42 @@ and,
     (plus:c
       (mul_lo
 	@mul_hilo0
-	INTEGER_CST@0)
+	@0)
       @mul_hilo1)
-    (mul_hi (mul_lolo @op0 @op1 INTEGER_CST@0) INTEGER_CST@1)))
+    (mul_hi (mul_lolo @op0 @op1 @0) @1)))
 /* Second variant: @mul_hilo1 is the outermost addend and could match
    anything, so guard that its definition is a MULT_EXPR.  */
 (match (mul_ladder_sum1 @op0 @op1 @mul_hilo0 @mul_hilo1 @0 @1)
   (plus:c
     (plus:c
-      (mul_lo @mul_hilo0 INTEGER_CST@0)
-      (mul_hi (mul_lolo @op0 @op1 INTEGER_CST@0) INTEGER_CST@1))
+      (mul_lo @mul_hilo0 @0)
+      (mul_hi (mul_lolo @op0 @op1 @0) @1))
     (mult@mul_hilo1 @2 @3)))
 /* Partial ladder sum: (xl*yl >> N) + hilo.  */
 (match (mul_ladder_part_sum @op0 @op1 @mul_hilo0 @0 @1)
   (plus:c
-    (mul_hi (mul_lolo @op0 @op1 INTEGER_CST@0) INTEGER_CST@1)
+    (mul_hi (mul_lolo @op0 @op1 @0) @1)
     @mul_hilo0))
 /* Ladder sum form 2: (ladder_part_sum & mask) + hilo.  */
 (match (mul_ladder_sum2 @op0 @op1 @mul_hilo0 @mul_hilo1 @0 @1)
   (plus:c
     (mul_lo
-      (mul_ladder_part_sum @op0 @op1 @mul_hilo0 INTEGER_CST@0 INTEGER_CST@1)
-      INTEGER_CST@0)
+      (mul_ladder_part_sum @op0 @op1 @mul_hilo0 @0 @1)
+      @0)
     @mul_hilo1))
 /* Ladder sum form 3: (hilo0 & mask) + (hilo1 & mask) + (xl*yl >> N).  */
 (match (mul_ladder_sum3 @op0 @op1 @mul_hilo0 @mul_hilo1 @0 @1)
   (plus:c
     (plus:c
-      (mul_lo @mul_hilo0 INTEGER_CST@0)
-      (mul_lo @mul_hilo1 INTEGER_CST@0))
-    (mul_hi (mul_lolo @op0 @op1 INTEGER_CST@0) INTEGER_CST@1)))
+      (mul_lo @mul_hilo0 @0)
+      (mul_lo @mul_hilo1 @0))
+    (mul_hi (mul_lolo @op0 @op1 @0) @1)))
 (match (mul_ladder_sum3 @op0 @op1 @mul_hilo0 @mul_hilo1 @0 @1)
   (plus:c
     (plus:c
-      (mul_lo @mul_hilo0 INTEGER_CST@0)
-      (mul_hi (mul_lolo @op0 @op1 INTEGER_CST@0) INTEGER_CST@1))
-    (mul_lo @mul_hilo1 INTEGER_CST@0)))
+      (mul_lo @mul_hilo0 @0)
+      (mul_hi (mul_lolo @op0 @op1 @0) @1))
+    (mul_lo @mul_hilo1 @0)))
 /* Long-multiply high-part emit chain produced by forwprop's recognizer:
 
      (N) ((2N) op1 * (2N) op2) >> N
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.