diff options
author | Jennifer Schmitz <jschmitz@nvidia.com> | 2024-07-22 23:24:45 -0700 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2024-07-28 19:05:50 +0200 |
commit | 7be99ec9261afa37188017925eba8ae7530188a3 (patch) | |
tree | ac7de4f82a6002fd791af93e27cf5ca900fa9c12 /gcc/doc | |
parent | 218aaec86650ec6cae2fc54fdfcedc5abccc55dd (diff) | |
download | gcc-7be99ec9261afa37188017925eba8ae7530188a3.zip gcc-7be99ec9261afa37188017925eba8ae7530188a3.tar.gz gcc-7be99ec9261afa37188017925eba8ae7530188a3.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/doc')
0 files changed, 0 insertions, 0 deletions