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 s
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 iden
Patch attached.
Alan Lawrence wrote:
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. T
On 17 December 2014 at 16:19, Alan Lawrence wrote:
> 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. Howeve
>> 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.
OK /Marcus