22 "SM_Enabled and SM_Compatible are mutually exclusive");
24 "ZA_New and ZA_Shared are mutually exclusive");
26 "ZA_New and ZA_Preserved are mutually exclusive");
28 "ZA_New and ZA_NoLazySave are mutually exclusive");
30 "ZA_Shared and ZA_NoLazySave are mutually exclusive");
41 if (FuncName ==
"__arm_tpidr2_save" || FuncName ==
"__arm_sme_state")
44 if (FuncName ==
"__arm_tpidr2_restore")
51 if (Attrs.hasFnAttr(
"aarch64_pstate_sm_enabled"))
53 if (Attrs.hasFnAttr(
"aarch64_pstate_sm_compatible"))
55 if (Attrs.hasFnAttr(
"aarch64_pstate_sm_body"))
57 if (Attrs.hasFnAttr(
"aarch64_pstate_za_shared"))
59 if (Attrs.hasFnAttr(
"aarch64_pstate_za_new"))
61 if (Attrs.hasFnAttr(
"aarch64_pstate_za_preserved"))
67 bool BodyOverridesInterface)
const {
71 if (BodyOverridesInterface && Callee.hasStreamingBody()) {
73 : std::optional<bool>(
true);
76 if (Callee.hasStreamingCompatibleInterface())
87 return Callee.hasStreamingInterface();
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 parameter attributes for this call.
SMEAttrs is a utility class to parse the SME ACLE attributes on functions.
bool hasStreamingInterface() const
bool hasNonStreamingInterfaceAndBody() const
SMEAttrs(unsigned Mask=Normal)
bool hasStreamingCompatibleInterface() const
bool hasStreamingInterfaceOrBody() const
void set(unsigned M, bool Enable=true)
std::optional< bool > requiresSMChange(const SMEAttrs &Callee, bool BodyOverridesInterface=false) const
bool hasNewZABody() const
bool hasSharedZAInterface() const
StringRef - Represent a constant reference to a string, i.e.
This is an optimization pass for GlobalISel generic memory operations.