[GCC][PATCH][ARM]Add ACLE intrinsics for dot product (vusdot - vector, v<us/su>dot - by element) for AArch32 AdvSIMD ARMv8.6 Extension This patch adds the ARMv8.6 Extension ACLE intrinsics for dot product operations (vector/by element) to the ARM back-end. These are: usdot (vector), <us/su>dot (by element). The functions are optional from ARMv8.2-a as -march=armv8.2-a+i8mm and for ARM they remain optional after as of ARMv8.6-a. The functions are declared in arm_neon.h, RTL patterns are defined to generate assembler and tests are added to verify and perform adequate checks. Regression testing on arm-none-eabi passed successfully. gcc/ChangeLog: 2020-02-11 Stam Markianos-Wright <stam.markianos-wright@arm.com> * config/arm/arm-builtins.c (enum arm_type_qualifiers): (USTERNOP_QUALIFIERS): New define. (USMAC_LANE_QUADTUP_QUALIFIERS): New define. (SUMAC_LANE_QUADTUP_QUALIFIERS): New define. (arm_expand_builtin_args): Add case ARG_BUILTIN_LANE_QUADTUP_INDEX. (arm_expand_builtin_1): Add qualifier_lane_quadtup_index. * config/arm/arm_neon.h (vusdot_s32): New. (vusdot_lane_s32): New. (vusdotq_lane_s32): New. (vsudot_lane_s32): New. (vsudotq_lane_s32): New. * config/arm/arm_neon_builtins.def (usdot, usdot_lane,sudot_lane): New. * config/arm/iterators.md (DOTPROD_I8MM): New. (sup, opsuffix): Add <us/su>. * config/arm/neon.md (neon_usdot, <us/su>dot_lane: New. * config/arm/unspecs.md (UNSPEC_DOT_US, UNSPEC_DOT_SU): New. gcc/testsuite/ChangeLog: 2020-02-11 Stam Markianos-Wright <stam.markianos-wright@arm.com> * gcc.target/arm/simd/vdot-2-1.c: New test. * gcc.target/arm/simd/vdot-2-2.c: New test. * gcc.target/arm/simd/vdot-2-3.c: New test. * gcc.target/arm/simd/vdot-2-4.c: New test.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
README-interworking | Loading commit data... | |
aarch-common-protos.h | Loading commit data... | |
aarch-common.c | Loading commit data... | |
aarch-cost-tables.h | Loading commit data... | |
aout.h | Loading commit data... | |
arm-builtins.c | Loading commit data... | |
arm-c.c | Loading commit data... | |
arm-cpus.in | Loading commit data... | |
arm-d.c | Loading commit data... | |
arm-fixed.md | Loading commit data... | |
arm-flags.h | Loading commit data... | |
arm-generic.md | Loading commit data... | |
arm-ldmstm.ml | Loading commit data... | |
arm-modes.def | Loading commit data... | |
arm-opts.h | Loading commit data... | |
arm-protos.h | Loading commit data... | |
arm-simd-builtin-types.def | Loading commit data... | |
arm-tables.opt | Loading commit data... | |
arm-tune.md | Loading commit data... | |
arm.c | Loading commit data... | |
arm.h | Loading commit data... | |
arm.md | Loading commit data... | |
arm.opt | Loading commit data... | |
arm1020e.md | Loading commit data... | |
arm1026ejs.md | Loading commit data... | |
arm1136jfs.md | Loading commit data... | |
arm926ejs.md | Loading commit data... | |
arm_acle.h | Loading commit data... | |
arm_acle_builtins.def | Loading commit data... | |
arm_bf16.h | Loading commit data... | |
arm_cmse.h | Loading commit data... | |
arm_fp16.h | Loading commit data... | |
arm_neon.h | Loading commit data... | |
arm_neon_builtins.def | Loading commit data... | |
arm_vfp_builtins.def | Loading commit data... | |
bpabi.h | Loading commit data... | |
constraints.md | Loading commit data... | |
cortex-a15-neon.md | Loading commit data... | |
cortex-a15.md | Loading commit data... | |
cortex-a17-neon.md | Loading commit data... | |
cortex-a17.md | Loading commit data... | |
cortex-a5.md | Loading commit data... | |
cortex-a53.md | Loading commit data... | |
cortex-a57.md | Loading commit data... | |
cortex-a7.md | Loading commit data... | |
cortex-a8-neon.md | Loading commit data... | |
cortex-a8.md | Loading commit data... | |
cortex-a9-neon.md | Loading commit data... | |
cortex-a9.md | Loading commit data... | |
cortex-m4-fpu.md | Loading commit data... | |
cortex-m4.md | Loading commit data... | |
cortex-m7.md | Loading commit data... | |
cortex-r4.md | Loading commit data... | |
cortex-r4f.md | Loading commit data... | |
crypto.def | Loading commit data... | |
crypto.md | Loading commit data... | |
driver-arm.c | Loading commit data... | |
elf.h | Loading commit data... | |
exynos-m1.md | Loading commit data... | |
fa526.md | Loading commit data... | |
fa606te.md | Loading commit data... | |
fa626te.md | Loading commit data... | |
fa726te.md | Loading commit data... | |
fmp626.md | Loading commit data... | |
freebsd.h | Loading commit data... | |
fuchsia-elf.h | Loading commit data... | |
iterators.md | Loading commit data... | |
iwmmxt.md | Loading commit data... | |
iwmmxt2.md | Loading commit data... | |
ldmstm.md | Loading commit data... | |
ldrdstrd.md | Loading commit data... | |
linux-eabi.h | Loading commit data... | |
linux-elf.h | Loading commit data... | |
linux-gas.h | Loading commit data... | |
marvell-f-iwmmxt.md | Loading commit data... | |
marvell-pj4.md | Loading commit data... | |
mmintrin.h | Loading commit data... | |
neon.md | Loading commit data... | |
netbsd-eabi.h | Loading commit data... | |
netbsd-elf.h | Loading commit data... | |
parsecpu.awk | Loading commit data... | |
predicates.md | Loading commit data... | |
rtems.h | Loading commit data... | |
semi.h | Loading commit data... | |
symbian.h | Loading commit data... | |
sync.md | Loading commit data... | |
t-aprofile | Loading commit data... | |
t-arm | Loading commit data... | |
t-arm-elf | Loading commit data... | |
t-bpabi | Loading commit data... | |
t-fuchsia | Loading commit data... | |
t-linux-androideabi | Loading commit data... | |
t-linux-eabi | Loading commit data... | |
t-multilib | Loading commit data... | |
t-phoenix | Loading commit data... | |
t-rmprofile | Loading commit data... | |
t-rtems | Loading commit data... | |
t-symbian | Loading commit data... | |
t-vxworks | Loading commit data... | |
thumb1.md | Loading commit data... | |
thumb2.md | Loading commit data... | |
types.md | Loading commit data... | |
uclinux-eabi.h | Loading commit data... | |
uclinux-elf.h | Loading commit data... | |
uclinuxfdpiceabi.h | Loading commit data... | |
unknown-elf.h | Loading commit data... | |
unspecs.md | Loading commit data... | |
vec-common.md | Loading commit data... | |
vfp.md | Loading commit data... | |
vfp11.md | Loading commit data... | |
vxworks.h | Loading commit data... | |
vxworks.opt | Loading commit data... | |
x-arm | Loading commit data... | |
xgene1.md | Loading commit data... |