22 return T->getAArch64SMEAttributes() &
29 bool CallerIsStreaming =
31 bool CalleeIsStreaming =
38 if (!CalleeIsStreamingCompatible &&
39 (CallerIsStreaming != CalleeIsStreaming || CallerIsStreamingCompatible)) {
40 if (CalleeIsStreaming)
45 if (
auto *NewAttr = Callee->getAttr<ArmNewAttr>()) {
46 if (NewAttr->isNewZA())
48 if (NewAttr->isNewZT0())
58 [[maybe_unused]]
int PtrArgNum = -1;
59 [[maybe_unused]]
bool HasConstPtr =
false;
65#define GET_NEON_OVERLOAD_CHECK
66#include "clang/Basic/arm_fp16.inc"
67#include "clang/Basic/arm_neon.inc"
68#undef GET_NEON_OVERLOAD_CHECK
71 case ARM::BI__builtin_arm_vcvtr_f:
72 case ARM::BI__builtin_arm_vcvtr_d:
84 bool HasHiddenVisibility) {
85 if (!HasHiddenVisibility)
88 return !D->
hasAttr<OMPDeclareTargetDeclAttr>() &&
89 (D->
hasAttr<DeviceKernelAttr>() ||
93 cast<VarDecl>(D)->getType()->isCUDADeviceBuiltinSurfaceType() ||
94 cast<VarDecl>(D)->getType()->isCUDADeviceBuiltinTextureType())));
Enumerates target-specific builtins in their own namespaces within namespace clang.
Decl - This represents one declaration (or definition), e.g.
Represents a function declaration or definition.
Represents a prototype with parameter type info, e.g.
@ SME_PStateSMCompatibleMask
const T * getAs() const
Member-template getAs<specific type>'.
bool requiresAMDGPUProtectedVisibility(const Decl *D, bool HasHiddenVisibility)
Returns whether D must be given protected visibility on AMDGPU.
bool hasExtraNeonArgument(unsigned BuiltinID)
Returns whether the Neon builtin BuiltinID takes a trailing argument that discriminates the operand t...
ArmSMEInlinability
The Arm SME ABI issues that can prevent inlining one function into another.
@ ErrorCalleeRequiresNewZA
@ WarnIncompatibleStreamingModes
@ ErrorCalleeRequiresNewZT0
@ ErrorIncompatibleStreamingModes
static bool isStreamingCompatible(const FunctionDecl *F)
ArmSMEInlinability getArmSMEInlinability(const FunctionDecl *Caller, const FunctionDecl *Callee)
Determines if there are any Arm SME ABI issues with inlining Callee into Caller.
bool isa(CodeGen::Address addr)
const FunctionProtoType * T
U cast(CodeGen::Address addr)
bool IsArmStreamingFunction(const FunctionDecl *FD, bool IncludeLocallyStreaming)
Returns whether the given FunctionDecl has an __arm[_locally]_streaming attribute.