[AArch64][SME] Add support for arm_locally_streaming functions.
authorSander de Smalen <sander.desmalen@arm.com>
Fri, 14 Oct 2022 08:51:13 +0000 (08:51 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Fri, 14 Oct 2022 13:47:53 +0000 (13:47 +0000)
commit02df03c5b7ae9fa2e8b55369dd5ebd3871a60017
tree64ac731401a02450cd5c8e81f3f15939882a8011
parentb3f1d58a131eb546aaf1ac165c77ccb89c40d758
[AArch64][SME] Add support for arm_locally_streaming functions.

Functions with `aarch64_sme_pstatesm_body` will emit a SMSTART at the start
of the function, and a SMSTOP at the end of the function, such that all
operations use the right value for vscale.

Because the placement of these nodes is critically important (i.e. no
vscale-dependent operations should be done before SMSTART has been issued),
we require glueing the CopyFromReg to the Entry node such that we can
insert the SMSTART as part of that glued chain.

More details about the SME attributes and design can be found
in D131562.

Reviewed By: aemerson

Differential Revision: https://reviews.llvm.org/D131582
14 files changed:
llvm/include/llvm/CodeGen/SelectionDAG.h
llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
llvm/test/CodeGen/AArch64/sme-get-pstatesm.ll
llvm/test/CodeGen/AArch64/sme-streaming-body.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/sve-fixed-length-frame-offests.ll
llvm/test/CodeGen/AMDGPU/sdag-print-divergence.ll
llvm/test/CodeGen/X86/callbr-asm-bb-exports.ll
llvm/test/CodeGen/X86/merge-store-partially-alias-loads.ll
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/amdgpu_isel.ll.expected
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/lanai_isel.ll.expected
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/x86_isel.ll.expected