Go to the documentation of this file.
13 #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_AARCH64_H
14 #define LLVM_CLANG_LIB_BASIC_TARGETS_AARCH64_H
18 #include "llvm/Support/AArch64TargetParser.h"
19 #include "llvm/Support/TargetParser.h"
25 virtual void setDataLayout() = 0;
29 enum FPUModeEnum { FPUMode, NeonMode = (1 << 0), SveMode = (1 << 1) };
58 llvm::AArch64::ArchKind ArchKind;
63 StringRef getArchProfile()
const;
68 StringRef getABI()
const override;
71 bool validateBranchProtection(StringRef Spec, StringRef Arch,
73 StringRef &Err)
const override;
75 bool isValidCPUName(StringRef Name)
const override;
83 void getTargetDefinesARMV81A(
const LangOptions &Opts,
85 void getTargetDefinesARMV82A(
const LangOptions &Opts,
87 void getTargetDefinesARMV83A(
const LangOptions &Opts,
89 void getTargetDefinesARMV84A(
const LangOptions &Opts,
91 void getTargetDefinesARMV85A(
const LangOptions &Opts,
93 void getTargetDefinesARMV86A(
const LangOptions &Opts,
95 void getTargetDefinesARMV87A(
const LangOptions &Opts,
97 void getTargetDefinesARMV88A(
const LangOptions &Opts,
99 void getTargetDefinesARMV9A(
const LangOptions &Opts,
101 void getTargetDefinesARMV91A(
const LangOptions &Opts,
103 void getTargetDefinesARMV92A(
const LangOptions &Opts,
105 void getTargetDefinesARMV93A(
const LangOptions &Opts,
113 getVScaleRange(
const LangOptions &LangOpts)
const override;
115 bool hasFeature(StringRef Feature)
const override;
116 bool handleTargetFeatures(std::vector<std::string> &Features,
119 CallingConvCheckResult checkCallingConvention(
CallingConv CC)
const override;
121 bool isCLZForZeroUndef()
const override;
123 BuiltinVaListKind getBuiltinVaListKind()
const override;
130 switch (*Constraint) {
142 bool validateAsmConstraint(
const char *&Name,
145 validateConstraintModifier(StringRef Constraint,
char Modifier,
unsigned Size,
147 const char *getClobbers()
const override;
154 int getEHDataRegisterNumber(
unsigned RegNo)
const override;
157 bool hasInt128Type()
const override;
169 void setDataLayout()
override;
174 const llvm::Triple Triple;
180 void setDataLayout()
override;
197 getCallingConvKind(
bool ClangABICompat4)
const override;
199 unsigned getMinGlobalAlign(
uint64_t TypeSize)
const override;
216 void setDataLayout()
override;
227 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
245 #endif // LLVM_CLANG_LIB_BASIC_TARGETS_AARCH64_H
Concrete class used by the front-end to report problems and issues.
Exposes information about the current target.
BuiltinVaListKind
The different kinds of __builtin_va_list types defined by the target implementation.
static const Builtin::Info BuiltinInfo[]
static const char *const GCCRegNames[]
StringRef getConstraintRegister(StringRef Constraint, StringRef Expression) const override
Extracts a register from the passed constraint (if it is a single-register constraint) and the asm la...
CallingConv
CallingConv - Specifies the calling convention that a function uses.
const char * getBFloat16Mangling() const override
Return the mangled code of bfloat.
std::string convertConstraint(const char *&Constraint) const override
bool hasBitIntType() const override
Determine whether the _BitInt type is supported on this target.
bool useFP16ConversionIntrinsics() const override
Check whether llvm intrinsics such as llvm.convert.to.fp16 should be used to convert to and from __fp...
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
virtual std::string convertConstraint(const char *&Constraint) const
Options for controlling the target.
static bool hasFeature(StringRef Feature, const LangOptions &LangOpts, const TargetInfo &Target)
Determine whether a translation unit built using the current language options has the given feature.