[AArch64][SME] Add the zero intrinsic
authorDavid Sherwood <david.sherwood@arm.com>
Tue, 14 Jun 2022 15:59:40 +0000 (16:59 +0100)
committerDavid Sherwood <david.sherwood@arm.com>
Mon, 20 Jun 2022 13:27:59 +0000 (14:27 +0100)
commit013358632e657f3138f055313ef7b51cbafe06ce
tree3b47266a4a4d164ef7fcd4d1bc8bb3a13896d122
parentd7762a3b369ec2be8ccb5f585aa6a96026caaa33
[AArch64][SME] Add the zero intrinsic

The SME zero instruction takes a mask as an input declaring which
64-bit element tiles should be zeroed. There is a 1:1 mapping
between the zero intrinsic and the instruction, however we also
want to make the register allocator aware that some tile
registers are being written to.

We can actually just use the custom inserter for a pseudo instruction
to correctly mark all the appropriate registers in the mask as
implicitly defined by the operation.

 Differential Revision: https://reviews.llvm.org/D127843
llvm/include/llvm/IR/IntrinsicsAArch64.td
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.h
llvm/lib/Target/AArch64/SMEInstrFormats.td
llvm/test/CodeGen/AArch64/sme-intrinsics-zero.ll [new file with mode: 0644]