From: Kyrylo Tkachov Date: Mon, 5 Aug 2024 17:47:33 +0000 (-0700) Subject: aarch64: Check CONSTM1_RTX in definition of Dm constraint X-Git-Tag: basepoints/gcc-16~6711 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=19e565ed13972410451091a789fe58638d03b795;p=thirdparty%2Fgcc.git 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 gcc/ChangeLog: * config/aarch64/constraints.md (Dm): Match CONSTM1_RTX rather CONST1_RTX. --- diff --git a/gcc/config/aarch64/constraints.md b/gcc/config/aarch64/constraints.md index 0c81fb28f7e..a2878f580d9 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