diff options
author | Soumya AR <soumyaa@nvidia.com> | 2024-10-17 09:30:35 +0530 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@nvidia.com> | 2024-10-24 10:46:04 +0200 |
commit | 3e7549ece7c6b90b9e961778361ee2b65bf104a9 (patch) | |
tree | aa1304cae95eefb274d33e17418da3e1e7ddf72e /gcc/fortran | |
parent | fc40202c1ac5d585bb236cdaf3a3968927e970a0 (diff) | |
download | gcc-3e7549ece7c6b90b9e961778361ee2b65bf104a9.zip gcc-3e7549ece7c6b90b9e961778361ee2b65bf104a9.tar.gz gcc-3e7549ece7c6b90b9e961778361ee2b65bf104a9.tar.bz2 |
SVE intrinsics: Fold constant operands for svlsl.
This patch implements constant folding for svlsl. Test cases have been added to
check for the following cases:
Zero, merge, and don't care predication.
Shift by 0.
Shift by register width.
Overflow shift on signed and unsigned integers.
Shift on a negative integer.
Maximum possible shift, eg. shift by 7 on an 8-bit integer.
The patch was bootstrapped and regtested on aarch64-linux-gnu, no regression.
OK for mainline?
Signed-off-by: Soumya AR <soumyaa@nvidia.com>
gcc/ChangeLog:
* config/aarch64/aarch64-sve-builtins-base.cc (svlsl_impl::fold):
Try constant folding.
* config/aarch64/aarch64-sve-builtins.cc (aarch64_const_binop):
Return 0 if shift is out of range.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/sve/const_fold_lsl_1.c: New test.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions