]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: Check CONSTM1_RTX in definition of Dm constraint
authorKyrylo Tkachov <ktkachov@nvidia.com>
Mon, 5 Aug 2024 17:47:33 +0000 (10:47 -0700)
committerKyrylo Tkachov <ktkachov@nvidia.com>
Fri, 9 Aug 2024 06:26:32 +0000 (08:26 +0200)
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 <ktkachov@nvidia.com>
gcc/ChangeLog:

* config/aarch64/constraints.md (Dm): Match CONSTM1_RTX rather
CONST1_RTX.

gcc/config/aarch64/constraints.md

index 0c81fb28f7e50190a429baa6522bb9275b3afd7b..a2878f580d909d694a55b3d0e2b2c78d7abe2930 100644 (file)
   "@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