#include "clang/Sema/SemaARM.h"
#include "clang/Basic/DiagnosticSema.h"
#include "clang/Basic/TargetBuiltins.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/ParsedAttr.h"
#include "clang/Sema/Sema.h"
namespace clang {
SemaARM::SemaARM(Sema &S) : … { … }
bool SemaARM::BuiltinARMMemoryTaggingCall(unsigned BuiltinID,
CallExpr *TheCall) { … }
bool SemaARM::BuiltinARMSpecialReg(unsigned BuiltinID, CallExpr *TheCall,
int ArgNum, unsigned ExpectedFieldNum,
bool AllowName) { … }
static QualType getNeonEltType(NeonTypeFlags Flags, ASTContext &Context,
bool IsPolyUnsigned, bool IsInt64Long) { … }
enum ArmSMEState : unsigned { … };
bool SemaARM::CheckImmediateArg(CallExpr *TheCall, unsigned CheckTy,
unsigned ArgIdx, unsigned EltBitWidth,
unsigned VecBitWidth) { … }
bool SemaARM::PerformNeonImmChecks(
CallExpr *TheCall,
SmallVectorImpl<std::tuple<int, int, int, int>> &ImmChecks,
int OverloadType) { … }
bool SemaARM::PerformSVEImmChecks(
CallExpr *TheCall, SmallVectorImpl<std::tuple<int, int, int>> &ImmChecks) { … }
SemaARM::ArmStreamingType getArmStreamingFnType(const FunctionDecl *FD) { … }
static bool checkArmStreamingBuiltin(Sema &S, CallExpr *TheCall,
const FunctionDecl *FD,
SemaARM::ArmStreamingType BuiltinType,
unsigned BuiltinID) { … }
static bool hasArmZAState(const FunctionDecl *FD) { … }
static bool hasArmZT0State(const FunctionDecl *FD) { … }
static ArmSMEState getSMEState(unsigned BuiltinID) { … }
bool SemaARM::CheckSMEBuiltinFunctionCall(unsigned BuiltinID,
CallExpr *TheCall) { … }
bool SemaARM::CheckSVEBuiltinFunctionCall(unsigned BuiltinID,
CallExpr *TheCall) { … }
bool SemaARM::CheckNeonBuiltinFunctionCall(const TargetInfo &TI,
unsigned BuiltinID,
CallExpr *TheCall) { … }
bool SemaARM::CheckMVEBuiltinFunctionCall(unsigned BuiltinID,
CallExpr *TheCall) { … }
bool SemaARM::CheckCDEBuiltinFunctionCall(const TargetInfo &TI,
unsigned BuiltinID,
CallExpr *TheCall) { … }
bool SemaARM::CheckARMCoprocessorImmediate(const TargetInfo &TI,
const Expr *CoprocArg,
bool WantCDE) { … }
bool SemaARM::CheckARMBuiltinExclusiveCall(unsigned BuiltinID,
CallExpr *TheCall,
unsigned MaxWidth) { … }
bool SemaARM::CheckARMBuiltinFunctionCall(const TargetInfo &TI,
unsigned BuiltinID,
CallExpr *TheCall) { … }
bool SemaARM::CheckAArch64BuiltinFunctionCall(const TargetInfo &TI,
unsigned BuiltinID,
CallExpr *TheCall) { … }
namespace {
struct IntrinToName { … };
}
static bool BuiltinAliasValid(unsigned BuiltinID, StringRef AliasName,
ArrayRef<IntrinToName> Map,
const char *IntrinNames) { … }
bool SemaARM::MveAliasValid(unsigned BuiltinID, StringRef AliasName) { … }
bool SemaARM::CdeAliasValid(unsigned BuiltinID, StringRef AliasName) { … }
bool SemaARM::SveAliasValid(unsigned BuiltinID, StringRef AliasName) { … }
bool SemaARM::SmeAliasValid(unsigned BuiltinID, StringRef AliasName) { … }
void SemaARM::handleBuiltinAliasAttr(Decl *D, const ParsedAttr &AL) { … }
static bool checkNewAttrMutualExclusion(
Sema &S, const ParsedAttr &AL, const FunctionProtoType *FPT,
FunctionType::ArmStateValue CurrentState, StringRef StateName) { … }
void SemaARM::handleNewAttr(Decl *D, const ParsedAttr &AL) { … }
void SemaARM::handleCmseNSEntryAttr(Decl *D, const ParsedAttr &AL) { … }
void SemaARM::handleInterruptAttr(Decl *D, const ParsedAttr &AL) { … }
}