diff options
author | Jennifer Schmitz <jschmitz@nvidia.com> | 2024-07-16 01:59:50 -0700 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@nvidia.com> | 2024-07-30 13:17:23 +0200 |
commit | 7cde140863edea536c676096cbc3d84a6d1424e4 (patch) | |
tree | 17c94a1ba0b6b04324e1efab09128c3cfbf39d2e /gcc/cp/parser.cc | |
parent | 265aa32062167a5b299c2ffb616edce5997b64bf (diff) | |
download | gcc-7cde140863edea536c676096cbc3d84a6d1424e4.zip gcc-7cde140863edea536c676096cbc3d84a6d1424e4.tar.gz gcc-7cde140863edea536c676096cbc3d84a6d1424e4.tar.bz2 |
SVE intrinsics: Add strength reduction for division by constant.
This patch folds SVE division where all divisor elements are the same
power of 2 to svasrd (signed) or svlsr (unsigned).
Tests were added to check
1) whether the transform is applied (existing test harness was amended), and
2) correctness using runtime tests for all input types of svdiv; for signed
and unsigned integers, several corner cases were covered.
The patch was bootstrapped and regtested on aarch64-linux-gnu, no regression.
OK for mainline?
Signed-off-by: Jennifer Schmitz <jschmitz@nvidia.com>
gcc/
* config/aarch64/aarch64-sve-builtins-base.cc (svdiv_impl::fold):
Implement strength reduction.
gcc/testsuite/
* gcc.target/aarch64/sve/div_const_run.c: New test.
* gcc.target/aarch64/sve/acle/asm/div_s32.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/div_s64.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/div_u32.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/div_u64.c: Likewise.
Diffstat (limited to 'gcc/cp/parser.cc')
0 files changed, 0 insertions, 0 deletions