23 "SM_Enabled and SM_Compatible are mutually exclusive");
27 "ZA_New and SME_ABI_Routine are mutually exclusive");
32 "Attributes 'aarch64_new_za', 'aarch64_in_za', 'aarch64_out_za', "
33 "'aarch64_inout_za' and 'aarch64_preserves_za' are mutually exclusive");
39 "Attributes 'aarch64_new_zt0', 'aarch64_in_zt0', 'aarch64_out_zt0', "
40 "'aarch64_inout_zt0' and 'aarch64_preserves_zt0' are mutually exclusive");
43 "Function cannot have a shared-ZA interface and an agnostic-ZA "
55 if (FuncName ==
"__arm_tpidr2_save" || FuncName ==
"__arm_sme_state")
57 if (FuncName ==
"__arm_tpidr2_restore")
60 if (FuncName ==
"__arm_sc_memcpy" || FuncName ==
"__arm_sc_memset" ||
61 FuncName ==
"__arm_sc_memmove" || FuncName ==
"__arm_sc_memchr")
63 if (FuncName ==
"__arm_sme_save" || FuncName ==
"__arm_sme_restore" ||
64 FuncName ==
"__arm_sme_state_size")
70 if (Attrs.hasFnAttr(
"aarch64_pstate_sm_enabled"))
72 if (Attrs.hasFnAttr(
"aarch64_pstate_sm_compatible"))
74 if (Attrs.hasFnAttr(
"aarch64_pstate_sm_body"))
76 if (Attrs.hasFnAttr(
"aarch64_za_state_agnostic"))
78 if (Attrs.hasFnAttr(
"aarch64_in_za"))
80 if (Attrs.hasFnAttr(
"aarch64_out_za"))
82 if (Attrs.hasFnAttr(
"aarch64_inout_za"))
84 if (Attrs.hasFnAttr(
"aarch64_preserves_za"))
86 if (Attrs.hasFnAttr(
"aarch64_new_za"))
88 if (Attrs.hasFnAttr(
"aarch64_in_zt0"))
90 if (Attrs.hasFnAttr(
"aarch64_out_zt0"))
92 if (Attrs.hasFnAttr(
"aarch64_inout_zt0"))
94 if (Attrs.hasFnAttr(
"aarch64_preserves_zt0"))
96 if (Attrs.hasFnAttr(
"aarch64_new_zt0"))
101 if (Callee.hasStreamingCompatibleInterface())
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
Function * getCalledFunction() const
Returns the function called, or null if this is an indirect function invocation or the function signa...
AttributeList getAttributes() const
Return the attributes for this call.
SMEAttrs is a utility class to parse the SME ACLE attributes on functions.
bool isPreservesZT0() const
bool hasStreamingInterface() const
static unsigned encodeZAState(StateValue S)
bool hasNonStreamingInterfaceAndBody() const
SMEAttrs(unsigned Mask=Normal)
bool hasStreamingCompatibleInterface() const
bool hasAgnosticZAInterface() const
bool requiresSMChange(const SMEAttrs &Callee) const
bool hasStreamingInterfaceOrBody() const
void set(unsigned M, bool Enable=true)
bool isPreservesZA() const
bool hasSharedZAInterface() const
static unsigned encodeZT0State(StateValue S)
StringRef - Represent a constant reference to a string, i.e.
This is an optimization pass for GlobalISel generic memory operations.