Ping: [PATCH 1/2][AArch64] Simplify patterns for sshr_n_[us]64 intrinsic

Alan Lawrence alan.lawrence@arm.com
Wed Dec 17 16:28:00 GMT 2014


This seems to have slipped under the radar for awhile. Ping.

--Alan

> The sshr_n_64 intrinsics allow performing a signed shift right by 64 places. The standard ashrdi3 pattern masks the sign amount with 63, so cannot be used. However, such a shift fills the result by the sign bit, which is identical to shifting right by 63. This patch just simplifies the code to shift by 63 instead, which allows to remove an UNSPEC and insn previously dedicated to this case.
> 
> 
> Cross-tested on aarch64-none-elf and aarch64_be-none-elf, with test coverage provided by gcc.target/aarch64/sshr64_1.c .
> 
> 
> gcc/ChangeLog:
> 
> 	* config/aarch64/aarch64.md (enum "unspec"): Remove UNSPEC_SSHR64.
> 
> 	* config/aarch64/aarch64-simd.md (aarch64_ashr_simddi): Change shift
> 	amount to 63 if was 64.
> 	(aarch64_sshr_simddi): Remove.
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: shift-signed.patch
Type: text/x-patch
Size: 1768 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20141217/126eb2a4/attachment.bin>


More information about the Gcc-patches mailing list