https://gcc.gnu.org/g:19e565ed13972410451091a789fe58638d03b795

commit r15-2842-g19e565ed13972410451091a789fe58638d03b795
Author: Kyrylo Tkachov <ktkac...@nvidia.com>
Date:   Mon Aug 5 10:47:33 2024 -0700

    aarch64: Check CONSTM1_RTX in definition of Dm constraint
    
    The constraint Dm is intended to match vectors of minus 1, but actually
    checks for CONST1_RTX. This doesn't have a bad effect in practice as its
    only use in the aarch64_wrffr pattern for the setffr instruction which
    is a VNx16BI operation and -1 and 1 are the same there. That pattern
    can only be currently generated through intrinsics anyway that create it
    with a CONSTM1_RTX constant.
    
    Fix the constraint definition so that it doesn't become a footgun if its
    used in some other pattern.
    
    Bootstrapped and tested on aarch64-none-linux-gnu.
    
    Signed-off-by: Kyrylo Tkachov <ktkac...@nvidia.com>
    
    gcc/ChangeLog:
    
            * config/aarch64/constraints.md (Dm): Match CONSTM1_RTX rather
            CONST1_RTX.

Diff:
---
 gcc/config/aarch64/constraints.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/aarch64/constraints.md 
b/gcc/config/aarch64/constraints.md
index 0c81fb28f7e5..a2878f580d90 100644
--- a/gcc/config/aarch64/constraints.md
+++ b/gcc/config/aarch64/constraints.md
@@ -556,7 +556,7 @@
   "@internal
  A constraint that matches a vector of immediate minus one."
  (and (match_code "const,const_vector")
-      (match_test "op == CONST1_RTX (GET_MODE (op))")))
+      (match_test "op == CONSTM1_RTX (GET_MODE (op))")))
 
 (define_constraint "Dd"
   "@internal

Reply via email to