Hi all, This patch is part of a series adding support for Armv8.6-A features. It depends on the Arm Armv8.6-A CLI patch, https://gcc.gnu.org/ml/gcc-patches/2019-11/msg02195.html. It also depends on the Armv8.6-A effective target checking patch, https://gcc.gnu.org/ml/gcc-patches/2019-12/msg00857.html. It also depends on the ARMv8.6-A I8MM dot product patch for using the same builtin qualifier https://gcc.gnu.org/ml/gcc-patches/2019-12/msg00945.html. This patch adds intrinsics for matrix multiply-accumulate operations including vmmlaq_s32, vmmlaq_u32, and vusmmlaq_s32. ACLE documents are at https://developer.arm.com/docs/101028/latest ISA documents are at https://developer.arm.com/docs/ddi0596/latest Regtested for arm-none-linux-gnueabi-armv8.2-a. Is it OK for trunk please? Thanks, Dennis gcc/ChangeLog: 2019-12-10 Dennis Zhang * config/arm/arm_neon.h (vmmlaq_s32, vmmlaq_u32, vusmmlaq_s32): New. * config/arm/arm_neon_builtins.def (smmla, ummla, usmmla): New. * config/arm/iterators.md (MATMUL): New. (sup): Add UNSPEC_MATMUL_S, UNSPEC_MATMUL_U, and UNSPEC_MATMUL_US. (mmla_sfx): New. * config/arm/neon.md (neon_mmlav16qi): New. * config/arm/unspecs.md (UNSPEC_MATMUL_S): New. (UNSPEC_MATMUL_U, UNSPEC_MATMUL_US): New. gcc/testsuite/ChangeLog: 2019-12-10 Dennis Zhang * gcc.target/arm/simd/vmmla_1.c: New test.