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