[AArch64][SVE2] Add the SVE2.1 BF16 instructions
authorDavid Sherwood <david.sherwood@arm.com>
Wed, 2 Nov 2022 14:58:34 +0000 (14:58 +0000)
committerDavid Sherwood <david.sherwood@arm.com>
Mon, 7 Nov 2022 15:29:40 +0000 (15:29 +0000)
commitcf69895ab31b40fe0d1275a29c4a29283ce327ae
treec1e0dfe932e1baf80ed85344a968eddf64957e95
parent5c0cb75787b9a8a7fd488fb05b8350dc798aee9a
[AArch64][SVE2] Add the SVE2.1 BF16 instructions

This patch adds the new FEAT_B16B16 feature as well as the
assembly/disassembly for all of the B16B16 instructions:

bfadd:   BFloat16 floating-point add vectors
bfsub:   BFloat16 floating-point subtract vectors
bfmul:   BFloat16 floating-point multiply vectors
bfclamp: BFloat16 floating-point clamp to minimum/maximum number
bfmax:   BFloat16 floating-point maximum
bfmaxnm: BFloat16 floating-point maximum number
bfmin:   BFloat16 floating-point minimum
bfminnm: BFloat16 floating-point minimum number
bfmla:   BFloat16 floating-point fused multiply-add vectors
bfmls:   BFloat16 floating-point fused multiply-subtract vectors

The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09

Differential Revision: https://reviews.llvm.org/D137321
29 files changed:
llvm/include/llvm/Support/AArch64TargetParser.def
llvm/include/llvm/Support/AArch64TargetParser.h
llvm/lib/Target/AArch64/AArch64.td
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
llvm/lib/Target/AArch64/SVEInstrFormats.td
llvm/test/MC/AArch64/SVE2p1/bfadd-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfadd.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfclamp-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfclamp.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmax-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmax.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmaxnm-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmaxnm.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmin-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmin.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfminnm-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfminnm.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmla-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmla.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmls-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmls.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmul-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfmul.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfsub-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2p1/bfsub.s [new file with mode: 0644]
llvm/unittests/Support/TargetParserTest.cpp