14 #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_ARM_H 15 #define LLVM_CLANG_LIB_BASIC_TARGETS_ARM_H 20 #include "llvm/ADT/Triple.h" 21 #include "llvm/Support/Compiler.h" 22 #include "llvm/Support/TargetParser.h" 38 enum HWDivMode { HWDivThumb = (1 << 0), HWDivARM = (1 << 1) };
40 static bool FPUModeIsVFP(FPUMode Mode) {
41 return Mode & (VFP2FPU | VFP3FPU | VFP4FPU | NeonFPU | FPARMV8);
52 enum { FP_Default, FP_VFP, FP_Neon } FPMath;
54 llvm::ARM::ISAKind ArchISA;
55 llvm::ARM::ArchKind ArchKind = llvm::ARM::ArchKind::ARMV4T;
56 llvm::ARM::ProfileKind ArchProfile;
65 unsigned SoftFloat : 1;
66 unsigned SoftFloatABI : 1;
71 unsigned Unaligned : 1;
93 void setABIAPCS(
bool IsAAPCS16);
96 void setArchInfo(llvm::ARM::ArchKind
Kind);
100 bool isThumb()
const;
101 bool supportsThumb()
const;
102 bool supportsThumb2()
const;
104 StringRef getCPUAttr()
const;
105 StringRef getCPUProfile()
const;
110 StringRef getABI()
const override;
111 bool setABI(
const std::string &Name)
override;
117 const std::vector<std::string> &FeaturesVec)
const override;
119 bool handleTargetFeatures(std::vector<std::string> &Features,
122 bool hasFeature(StringRef Feature)
const override;
124 bool isValidCPUName(StringRef Name)
const override;
125 bool setCPU(
const std::string &Name)
override;
127 bool setFPMath(StringRef Name)
override;
133 void getTargetDefinesARMV81A(
const LangOptions &Opts,
136 void getTargetDefinesARMV82A(
const LangOptions &Opts,
143 bool isCLZForZeroUndef()
const override;
148 bool validateAsmConstraint(
const char *&Name,
150 std::string convertConstraint(
const char *&Constraint)
const override;
152 validateConstraintModifier(StringRef Constraint,
char Modifier,
unsigned Size,
153 std::string &SuggestedModifier)
const override;
154 const char *getClobbers()
const override;
158 int getEHDataRegisterNumber(
unsigned RegNo)
const override;
160 bool hasSjLjLowering()
const override;
179 const llvm::Triple Triple;
184 void getVisualStudioDefines(
const LangOptions &Opts,
235 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
256 #endif // LLVM_CLANG_LIB_BASIC_TARGETS_ARM_H static const Builtin::Info BuiltinInfo[]
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...
Options for controlling the target.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Concrete class used by the front-end to report problems and issues.
static const char *const GCCRegNames[]
Exposes information about the current target.
bool useFP16ConversionIntrinsics() const override
Check whether llvm intrinsics such as llvm.convert.to.fp16 should be used to convert to and from __fp...
CallingConv
CallingConv - Specifies the calling convention that a function uses.
OpenMPLinearClauseKind Modifier
Modifier of 'linear' clause.
Defines the clang::TargetOptions class.
Dataflow Directional Tag Classes.
BuiltinVaListKind
The different kinds of __builtin_va_list types defined by the target implementation.
Defines the clang::TargetInfo interface.