diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2025-08-04 11:45:32 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2025-08-04 11:45:32 +0100 |
commit | dec30d6f9bf5600d221a73926d0c00bf12a5b6f5 (patch) | |
tree | b0859505ffd7f6d8e2f2bd470076647e0ebedc88 /libcpp/include/cpplib.h | |
parent | 5e6ccffab91186878d7b7195fb356ba779417e36 (diff) | |
download | gcc-dec30d6f9bf5600d221a73926d0c00bf12a5b6f5.zip gcc-dec30d6f9bf5600d221a73926d0c00bf12a5b6f5.tar.gz gcc-dec30d6f9bf5600d221a73926d0c00bf12a5b6f5.tar.bz2 |
aarch64: Drop unnecessary GPs in svcmp_wide PTEST patterns
Patterns that fuse a predicate operation P with a PTEST use
aarch64_sve_same_pred_for_ptest_p to test whether the governing
predicates of P and the PTEST are compatible. Most patterns were also
written as define_insn_and_rewrites, with the rewrite replacing P's
original governing predicate with PTEST's. This ensures that we don't,
for example, have both a .H PTRUE for the PTEST and a .B PTRUE for a
comparison that feeds the PTEST.
The svcmp_wide* patterns were missing this rewrite, meaning that we did
have redundant PTRUEs.
gcc/
* config/aarch64/aarch64-sve.md
(*aarch64_pred_cmp<cmp_op><mode>_wide_cc): Turn into a
define_insn_and_rewrite and rewrite the governing predicate
of the comparison so that it is identical to the PTEST's.
(*aarch64_pred_cmp<cmp_op><mode>_wide_ptest): Likewise.
gcc/testsuite/
* gcc.target/aarch64/sve/acle/general/cmpeq_1.c: Check the number
of PTRUEs.
* gcc.target/aarch64/sve/acle/general/cmpge_5.c: New test.
* gcc.target/aarch64/sve/acle/general/cmpge_6.c: Likewise.
* gcc.target/aarch64/sve/acle/general/cmpgt_5.c: Likewise.
* gcc.target/aarch64/sve/acle/general/cmpgt_6.c: Likewise.
* gcc.target/aarch64/sve/acle/general/cmple_5.c: Likewise.
* gcc.target/aarch64/sve/acle/general/cmple_6.c: Likewise.
* gcc.target/aarch64/sve/acle/general/cmplt_5.c: Likewise.
* gcc.target/aarch64/sve/acle/general/cmplt_6.c: Likewise.
* gcc.target/aarch64/sve/acle/general/cmpne_3.c: Likewise.
Diffstat (limited to 'libcpp/include/cpplib.h')
0 files changed, 0 insertions, 0 deletions