aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc
diff options
context:
space:
mode:
authorJennifer Schmitz <jschmitz@nvidia.com>2024-07-22 23:24:45 -0700
committerThomas Koenig <tkoenig@gcc.gnu.org>2024-07-28 19:05:50 +0200
commit7be99ec9261afa37188017925eba8ae7530188a3 (patch)
treeac7de4f82a6002fd791af93e27cf5ca900fa9c12 /gcc/doc
parent218aaec86650ec6cae2fc54fdfcedc5abccc55dd (diff)
downloadgcc-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