]> git.ipfire.org Git - thirdparty/gcc.git/commit
SVE intrinsics: Fold constant operands for svlsl.
authorSoumya AR <soumyaa@nvidia.com>
Thu, 17 Oct 2024 04:00:35 +0000 (09:30 +0530)
committerKyrylo Tkachov <ktkachov@nvidia.com>
Thu, 24 Oct 2024 08:46:04 +0000 (10:46 +0200)
commit3e7549ece7c6b90b9e961778361ee2b65bf104a9
treeaa1304cae95eefb274d33e17418da3e1e7ddf72e
parentfc40202c1ac5d585bb236cdaf3a3968927e970a0
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.
gcc/config/aarch64/aarch64-sve-builtins-base.cc
gcc/config/aarch64/aarch64-sve-builtins.cc
gcc/testsuite/gcc.target/aarch64/sve/const_fold_lsl_1.c [new file with mode: 0644]