aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorChris Sidebottom <chris.sidebottom@arm.com>2023-05-25 14:57:34 +0100
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>2023-05-25 14:57:34 +0100
commitf3dbc4112da318d1685a0833c7b3180589bbba2e (patch)
tree0bc8aa2b3107aba6f7a5fbaf53f6ecfc42d820cc /gcc/tree-vectorizer.h
parentf5298d9969b4fa34ff3aecd54b9630e22b2984a5 (diff)
downloadgcc-f3dbc4112da318d1685a0833c7b3180589bbba2e.zip
gcc-f3dbc4112da318d1685a0833c7b3180589bbba2e.tar.gz
gcc-f3dbc4112da318d1685a0833c7b3180589bbba2e.tar.bz2
arm: Implement ACLE Data Intrinsics
This patch implements a number of scalar data processing intrinsics from ACLE that were requested by some users. Some of these have fast single-instruction sequences for Armv6 and later, but even for earlier versions they can still emit an inline sequence or a call to libgcc (and ACLE recommends them being unconditionally available). Chris Sidebottom wrote most of the patch, I just cleaned it up, wired up some builtins and adjusted the tests. Bootstrapped and tested on arm-none-linux-gnueabihf. Co-authored-by: Chris Sidebottom <chris.sidebottom@arm.com> gcc/ChangeLog: * config/arm/arm.md (rbitsi2): Rename to... (arm_rbit): ... This. (ctzsi2): Adjust for the above. (arm_rev16si2): Convert to define_expand. (arm_rev16si2_alt1): New pattern. (arm_rev16si2_alt): Rename to... (*arm_rev16si2_alt2): ... This. * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll, __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16, __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics. * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins. gcc/testsuite/ChangeLog: * gcc.target/arm/acle/data-intrinsics-armv6.c: New test. * gcc.target/arm/acle/data-intrinsics-assembly.c: New test. * gcc.target/arm/acle/data-intrinsics-rbit.c: New test. * gcc.target/arm/acle/data-intrinsics.c: New test.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions