aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2021-02-01 21:10:35 +0000
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>2021-02-01 21:10:35 +0000
commit850e5878f8f57244571858f604f28da646be498d (patch)
tree589a12935ec14f04135dc7b7a8160c2306125590 /gcc/expr.c
parent11d4ec5d45c02a19b8ff9d7f26800637ad563e05 (diff)
downloadgcc-850e5878f8f57244571858f604f28da646be498d.zip
gcc-850e5878f8f57244571858f604f28da646be498d.tar.gz
gcc-850e5878f8f57244571858f604f28da646be498d.tar.bz2
aarch64: Reimplement vrshrn* intrinsics using builtins
This patch moves the vrshrn* intrinsics to builtins away from inline asm. It's a bit of code, but it's very similar to the recent vsrhn* reimplementation except that we use an unspec rather than standard RTL codes for the functionality. gcc/ChangeLog: * config/aarch64/aarch64-simd-builtins.def (rshrn, rshrn2): Define builtins. * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Define. (aarch64_rshrn<mode>_insn_be): Likewise. (aarch64_rshrn<mode>): Likewise. (aarch64_rshrn2<mode>_insn_le): Likewise. (aarch64_rshrn2<mode>_insn_be): Likewise. (aarch64_rshrn2<mode>): Likewise. * config/aarch64/aarch64.md (unspec): Add UNSPEC_RSHRN. * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Reimplement using builtin. (vrshrn_high_n_s32): Likewise. (vrshrn_high_n_s64): Likewise. (vrshrn_high_n_u16): Likewise. (vrshrn_high_n_u32): Likewise. (vrshrn_high_n_u64): Likewise. (vrshrn_n_s16): Likewise. (vrshrn_n_s32): Likewise. (vrshrn_n_s64): Likewise. (vrshrn_n_u16): Likewise. (vrshrn_n_u32): Likewise. (vrshrn_n_u64): Likewise. gcc/testsuite/ChangeLog: * gcc.target/aarch64/narrow_high-intrinsics.c: Adjust rshrn2 assembly scan.
Diffstat (limited to 'gcc/expr.c')
0 files changed, 0 insertions, 0 deletions