diff options
author | Jennifer Schmitz <jschmitz@nvidia.com> | 2024-07-22 23:24:45 -0700 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@nvidia.com> | 2024-07-24 17:07:25 +0530 |
commit | 4c5eb66e701bc9f3bf1298269f52559b10d63a09 (patch) | |
tree | ef7487fdd91041b38df1819fabaf201368e3f542 /gcc/diagnostic-format-json.cc | |
parent | 4efe43a61334e231bcd3cf9150cd844dbdf9ed20 (diff) | |
download | gcc-4c5eb66e701bc9f3bf1298269f52559b10d63a09.zip gcc-4c5eb66e701bc9f3bf1298269f52559b10d63a09.tar.gz gcc-4c5eb66e701bc9f3bf1298269f52559b10d63a09.tar.bz2 |
aarch64: Fuse CMP+CSEL and CMP+CSET for -mcpu=neoverse-v2
According to the Neoverse V2 Software Optimization Guide (section 4.14), the
instruction pairs CMP+CSEL and CMP+CSET can be fused, which had not been
implemented so far. This patch implements and tests the two fusion pairs.
The patch was bootstrapped and regtested on aarch64-linux-gnu, no regression.
There was also no non-noise impact on SPEC CPU2017 benchmark.
OK for mainline?
Signed-off-by: Jennifer Schmitz <jschmitz@nvidia.com>
gcc/
* config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Implement
fusion logic.
* config/aarch64/aarch64-fusion-pairs.def (cmp+csel): New entry.
(cmp+cset): Likewise.
* config/aarch64/tuning_models/neoversev2.h: Enable logic in
field fusible_ops.
gcc/testsuite/
* gcc.target/aarch64/cmp_csel_fuse.c: New test.
* gcc.target/aarch64/cmp_cset_fuse.c: Likewise.
Diffstat (limited to 'gcc/diagnostic-format-json.cc')
0 files changed, 0 insertions, 0 deletions