[AArch32] Armv8.6-a Matrix Mult Assembly + Intrinsics
authorLuke Geeson <luke.geeson@arm.com>
Thu, 9 Apr 2020 18:29:19 +0000 (19:29 +0100)
committerLuke Geeson <luke.geeson@arm.com>
Fri, 24 Apr 2020 14:54:06 +0000 (15:54 +0100)
commit7da19051253219d4bee2c50fe13f250201f1f7ec
tree56d6af8aadd00c8ae6b641d7f82c66252e7b82a8
parent832cd749131b1fa59d12486325f19e16eb392a42
[AArch32] Armv8.6-a Matrix Mult Assembly + Intrinsics

This patch upstreams support for the Armv8.6-a Matrix Multiplication
Extension. A summary of the features can be found here:

https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/arm-architecture-developments-armv8-6-a

This patch includes:

- Assembly support for AArch32
- Intrinsics Support for AArch32 Neon Intrinsics for Matrix
  Multiplication

Note: these extensions are optional in the 8.6a architecture and so have
to be enabled by default

No additional IR types or C Types are needed for this extension.

This is part of a patch series, starting with BFloat16 support and
the other components in the armv8.6a extension (in previous patches
linked in phabricator)

Based on work by:
- Luke Geeson
- Oliver Stannard
- Luke Cheeseman

Reviewers: t.p.northover, miyuki

Reviewed By: miyuki

Subscribers: miyuki, ostannard, kristof.beyls, hiraditya, danielkiss,
cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D77872
clang/lib/Basic/Targets/ARM.cpp
clang/lib/Basic/Targets/ARM.h
clang/lib/CodeGen/CGBuiltin.cpp
clang/test/CodeGen/arm-v8.6a-neon-intrinsics.c [new file with mode: 0644]
llvm/include/llvm/IR/IntrinsicsARM.td
llvm/lib/Target/ARM/ARM.td
llvm/lib/Target/ARM/ARMInstrNEON.td
llvm/lib/Target/ARM/ARMPredicates.td
llvm/lib/Target/ARM/ARMSubtarget.h
llvm/test/CodeGen/ARM/arm-matmul.ll [new file with mode: 0644]