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.