XOPEnum { NoXOP, SSE4A, FMA4, XOP } XOPLevel = NoXOP;
76 boolHasVAES =
false;
77 boolHasPCLMUL =
false;
78 boolHasVPCLMULQDQ =
false;
79 boolHasGFNI =
false;
80 boolHasLZCNT =
false;
81 boolHasRDRND =
false;
82 boolHasFSGSBASE =
false;
84 boolHasBMI2 =
false;
85 boolHasPOPCNT =
false;
87 boolHasPRFCHW =
false;
88 boolHasRDSEED =
false;
93 boolHasF16C =
false;
94 boolHasAVX10_1 =
false;
95 boolHasAVX10_1_512 =
false;
96 boolHasAVX10_2 =
false;
97 boolHasAVX10_2_512 =
false;
98 boolHasEVEX512 =
false;
99 boolHasAVX512CD =
false;
100 boolHasAVX512VPOPCNTDQ =
false;
101 boolHasAVX512VNNI =
false;
102 boolHasAVX512FP16 =
false;
103 boolHasAVX512BF16 =
false;
104 boolHasAVX512DQ =
false;
105 boolHasAVX512BITALG =
false;
106 boolHasAVX512BW =
false;
107 boolHasAVX512VL =
false;
108 boolHasAVX512VBMI =
false;
109 boolHasAVX512VBMI2 =
false;
110 boolHasAVXIFMA =
false;
111 boolHasAVX512IFMA =
false;
112 boolHasAVX512VP2INTERSECT =
false;
113 boolHasSHA =
false;
114 boolHasSHA512 =
false;
115 boolHasSHSTK =
false;
116 boolHasSM3 =
false;
117 boolHasSGX =
false;
118 boolHasSM4 =
false;
119 boolHasCX8 =
false;
120 boolHasCX16 =
false;
121 boolHasFXSR =
false;
122 boolHasXSAVE =
false;
123 boolHasXSAVEOPT =
false;
124 boolHasXSAVEC =
false;
125 boolHasXSAVES =
false;
126 boolHasMWAITX =
false;
127 boolHasCLZERO =
false;
128 boolHasCLDEMOTE =
false;
129 boolHasPCONFIG =
false;
130 boolHasPKU =
false;
131 boolHasCLFLUSHOPT =
false;
132 boolHasCLWB =
false;
133 boolHasMOVBE =
false;
134 boolHasMOVRS =
false;
135 boolHasPREFETCHI =
false;
136 boolHasRDPID =
false;
137 boolHasRDPRU =
false;
138 boolHasRetpolineExternalThunk =
false;
139 boolHasLAHFSAHF =
false;
140 boolHasWBNOINVD =
false;
141 boolHasWAITPKG =
false;
142 boolHasMOVDIRI =
false;
143 boolHasMOVDIR64B =
false;
144 boolHasPTWRITE =
false;
145 boolHasINVPCID =
false;
146 boolHasENQCMD =
false;
147 boolHasAVXVNNIINT16 =
false;
148 boolHasAMXFP16 =
false;
149 boolHasCMPCCXADD =
false;
150 boolHasRAOINT =
false;
151 boolHasAVXVNNIINT8 =
false;
152 boolHasAVXNECONVERT =
false;
154 boolHasWIDEKL =
false;
155 boolHasHRESET =
false;
156 boolHasAVXVNNI =
false;
157 boolHasAMXTILE =
false;
158 boolHasAMXINT8 =
false;
159 boolHasAMXBF16 =
false;
160 boolHasAMXCOMPLEX =
false;
161 boolHasAMXFP8 =
false;
162 boolHasAMXMOVRS =
false;
163 boolHasAMXTRANSPOSE =
false;
164 boolHasAMXAVX512 =
false;
165 boolHasAMXTF32 =
false;
166 boolHasSERIALIZE =
false;
167 boolHasTSXLDTRK =
false;
168 boolHasUSERMSR =
false;
169 boolHasUINTR =
false;
170 boolHasCRC32 =
false;
171 boolHasX87 =
false;
172 boolHasEGPR =
false;
173 boolHasPush2Pop2 =
false;
174 boolHasPPX =
false;
175 boolHasNDD =
false;
176 boolHasCCMP =
false;
180 boolHasInlineAsmUseGPR32 =
false;
181 boolHasBranchHint =
false;
184llvm::X86::CPUKind CPU = llvm::X86::CK_None;
186 enum FPMathKind{ FP_Default, FP_SSE, FP_387 } FPMath = FP_Default;
191BFloat16Width = BFloat16Align = 16;
192BFloat16Format = &llvm::APFloat::BFloat();
193LongDoubleFormat = &llvm::APFloat::x87DoubleExtended();
196HasUnalignedAccess =
true;
199getTriple().isOSWindows() && getTriple().isOSBinFormatCOFF();
205 returnLongDoubleFormat == &llvm::APFloat::IEEEquad() ?
"g":
"e";
210 returnSSELevel == NoSSE ? LangOptions::FPEvalMethodKind::FEM_Extended
211: LangOptions::FPEvalMethodKind::FEM_Source;
226 returnRegName ==
"esp"|| RegName ==
"rsp";
233 boolvalidateCpuSupports(StringRef FeatureStr)
const override;
235 boolvalidateCpuIs(StringRef FeatureStr)
const override;
237 boolvalidateCPUSpecificCPUDispatch(StringRef Name)
const override;
239 charCPUSpecificManglingCharacter(StringRef Name)
const override;
241 voidgetCPUSpecificCPUDispatchFeatures(
245std::optional<unsigned> getCPUCacheLineSize()
const override;
247 boolvalidateAsmConstraint(
const char*&Name,
251 bool&HasSizeMismatch)
const override{
254 if(RegName ==
"esp"|| RegName ==
"ebp") {
256HasSizeMismatch = RegSize != 32;
263 boolvalidateOutputSize(
constllvm::StringMap<bool> &FeatureMap,
264StringRef Constraint,
unsignedSize)
const override;
266 boolvalidateInputSize(
constllvm::StringMap<bool> &FeatureMap,
267StringRef Constraint,
unsignedSize)
const override;
271 if(CPU == llvm::X86::CK_None || CPU >= llvm::X86::CK_PentiumPro)
273 returnTargetInfo::checkCFProtectionReturnSupported(Diags);
278 if(CPU == llvm::X86::CK_None || CPU >= llvm::X86::CK_PentiumPro)
280 returnTargetInfo::checkCFProtectionBranchSupported(Diags);
283 virtual boolvalidateOperandSize(
constllvm::StringMap<bool> &FeatureMap,
284StringRef Constraint,
unsignedSize)
const;
286std::string convertConstraint(
const char*&Constraint)
const override;
288 return "~{dirflag},~{fpsr},~{flags}";
293StringRef::iterator I,
E;
294 for(I = Constraint.begin(),
E= Constraint.end(); I !=
E; ++I) {
295 if(isalpha(*I) || *I ==
'@')
319 if((++I !=
E) && ((*I ==
'0') || (*I ==
'z')))
335 voidsetFeatureEnabled(llvm::StringMap<bool> &Features, StringRef Name,
336 boolEnabled)
const final;
341 conststd::vector<std::string> &FeaturesVec)
const override;
343 boolisValidFeatureName(StringRef Name)
const override;
345 bool hasFeature(StringRef Feature)
const final;
347 boolhandleTargetFeatures(std::vector<std::string> &Features,
351 if(getTriple().getArch() == llvm::Triple::x86_64 && SSELevel >= AVX512F)
353 if(getTriple().getArch() == llvm::Triple::x86_64 && SSELevel >= AVX)
355 if(getTriple().getArch() == llvm::Triple::x86 && !HasMMX)
365 boolOnly64Bit = getTriple().getArch() != llvm::Triple::x86;
366 returnllvm::X86::parseArchX86(Name, Only64Bit) != llvm::X86::CK_None;
370 if(Name ==
"generic")
376 returnllvm::X86::parseTuneCPU(Name) != llvm::X86::CK_None;
382 bool setCPU(
conststd::string &Name)
override{
383 boolOnly64Bit = getTriple().getArch() != llvm::Triple::x86;
384CPU = llvm::X86::parseArchX86(Name, Only64Bit);
385 returnCPU != llvm::X86::CK_None;
390 boolsetFPMath(StringRef Name)
override;
393 returngetTriple().getArch() != llvm::Triple::x86;
429 unsignedTargetAddrSpace = getTargetAddressSpace(AS);
432 if(TargetAddrSpace ==
ptr64)
438 returngetPointerWidthV(AddrSpace);
448DoubleAlign = LongLongAlign = 32;
449LongDoubleWidth = 96;
450LongDoubleAlign = 32;
452resetDataLayout(Triple.isOSBinFormatMachO()
453?
"e-m:o-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:" 454 "128-f64:32:64-f80:32-n8:16:32-S128" 455:
"e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:" 456 "128-f64:32:64-f80:32-n8:16:32-S128",
457Triple.isOSBinFormatMachO() ?
"_":
"");
458SizeType = UnsignedInt;
459PtrDiffType = SignedInt;
460IntPtrType = SignedInt;
464RealTypeUsesObjCFPRetMask =
465(
unsigned)(FloatModeKind::Float | FloatModeKind::Double |
466FloatModeKind::LongDouble);
469MaxAtomicPromoteWidth = 64;
470MaxAtomicInlineWidth = 32;
474 returnTargetInfo::CharPtrBuiltinVaList;
486StringRef Constraint,
unsignedSize)
const override{
487 switch(Constraint[0]) {
504 returnX86TargetInfo::validateOperandSize(FeatureMap, Constraint, Size);
509MaxAtomicInlineWidth = 64;
516 returnllvm::IntegerType::MAX_INT_BITS;
532SizeType = UnsignedLong;
533IntPtrType = SignedLong;
534PtrDiffType = SignedLong;
551LongDoubleWidth = 128;
552LongDoubleAlign = 128;
554MaxVectorAlign = 256;
556llvm::Triple
T= llvm::Triple(Triple);
558UseSignedCharForObjCBool =
false;
559SizeType = UnsignedLong;
560IntPtrType = SignedLong;
561resetDataLayout(
"e-m:o-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-" 562 "f64:32:64-f80:128-n8:16:32-S128",
564HasAlignMac68kSupport =
true;
585DoubleAlign = LongLongAlign = 64;
587getTriple().isOSWindows() && getTriple().isOSBinFormatCOFF();
588 boolIsMSVC = getTriple().isWindowsMSVCEnvironment();
589std::string Layout = IsWinCOFF ?
"e-m:x":
"e-m:e";
590Layout +=
"-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-";
591Layout += IsMSVC ?
"f80:128":
"f80:32";
592Layout +=
"-n8:16:32-a:0:32-S32";
593resetDataLayout(Layout, IsWinCOFF ?
"_":
"");
604LongDoubleWidth = LongDoubleAlign = 64;
605LongDoubleFormat = &llvm::APFloat::IEEEdouble();
610WindowsX86_32TargetInfo::getTargetDefines(Opts, Builder);
614Builder.defineMacro(
"_M_IX86",
"600");
629WindowsX86_32TargetInfo::getTargetDefines(Opts, Builder);
630Builder.defineMacro(
"_X86_");
639this->WCharType = TargetInfo::UnsignedShort;
640DoubleAlign = LongLongAlign = 64;
641resetDataLayout(
"e-m:x-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-" 642 "i128:128-f80:32-n8:16:32-a:0:32-S32",
648X86_32TargetInfo::getTargetDefines(Opts, Builder);
649Builder.defineMacro(
"_X86_");
650Builder.defineMacro(
"__CYGWIN__");
651Builder.defineMacro(
"__CYGWIN32__");
655Builder.defineMacro(
"_GNU_SOURCE");
669Builder.defineMacro(
"__INTEL__");
678LongDoubleWidth = 64;
679DefaultAlignForAttributeAligned = 32;
680LongDoubleFormat = &llvm::APFloat::IEEEdouble();
681resetDataLayout(
"e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:32-" 682 "f64:32-f128:32-n8:16:32-a:0:32-S32");
683WIntType = UnsignedInt;
688 returnCC ==
CC_C? CCCR_OK : CCCR_Warning;
693X86_32TargetInfo::getTargetDefines(Opts, Builder);
694Builder.defineMacro(
"__iamcu");
695Builder.defineMacro(
"__iamcu__");
706SizeType = UnsignedLong;
707IntPtrType = SignedLong;
708PtrDiffType = SignedLong;
713X86_32TargetInfo::getTargetDefines(Opts, Builder);
714Builder.defineMacro(
"__INTEL__");
715Builder.defineMacro(
"__rtems__");
724 const boolIsX32 = getTriple().isX32();
726getTriple().isOSWindows() && getTriple().isOSBinFormatCOFF();
727LongWidth = LongAlign = PointerWidth = PointerAlign = IsX32 ? 32 : 64;
728LongDoubleWidth = 128;
729LongDoubleAlign = 128;
730LargeArrayMinWidth = 128;
731LargeArrayAlign = 128;
733SizeType = IsX32 ? UnsignedInt : UnsignedLong;
734PtrDiffType = IsX32 ? SignedInt : SignedLong;
735IntPtrType = IsX32 ? SignedInt : SignedLong;
736IntMaxType = IsX32 ? SignedLongLong : SignedLong;
737Int64Type = IsX32 ? SignedLongLong : SignedLong;
741resetDataLayout(IsX32 ?
"e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-" 742 "i64:64-i128:128-f80:128-n8:16:32:64-S128" 743: IsWinCOFF ?
"e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:" 744 "64-i128:128-f80:128-n8:16:32:64-S128" 745:
"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:" 746 "64-i128:128-f80:128-n8:16:32:64-S128");
749RealTypeUsesObjCFPRetMask = (
unsigned)FloatModeKind::LongDouble;
752ComplexLongDoubleUsesFP2Ret =
true;
755HasBuiltinMSVaList =
true;
758MaxAtomicPromoteWidth = 128;
759MaxAtomicInlineWidth = 64;
763 returnTargetInfo::X86_64ABIBuiltinVaList;
805 bool&HasSizeMismatch)
const override{
808 if(RegName ==
"rsp"|| RegName ==
"rbp") {
810HasSizeMismatch = RegSize != 64;
815 returnX86TargetInfo::validateGlobalRegisterVariable(RegName, RegSize,
821MaxAtomicInlineWidth = 128;
828 returnllvm::IntegerType::MAX_INT_BITS;
838this->TheCXXABI.set(TargetCXXABI::Microsoft);
840this->resetDataLayout(
"e-m:w-p270:32:32-p271:32:32-p272:64:64-" 841 "i64:64-i128:128-f80:128-n8:16:32:64-S128");
845 returnTargetInfo::CharPtrBuiltinVaList;
860 returnCCK_MicrosoftWin64;
870LongWidth = LongAlign = 32;
871DoubleAlign = LongLongAlign = 64;
872IntMaxType = SignedLongLong;
873Int64Type = SignedLongLong;
874SizeType = UnsignedLongLong;
875PtrDiffType = SignedLongLong;
876IntPtrType = SignedLongLong;
880 returnTargetInfo::CharPtrBuiltinVaList;
914LongDoubleWidth = LongDoubleAlign = 64;
915LongDoubleFormat = &llvm::APFloat::IEEEdouble();
920WindowsX86_64TargetInfo::getTargetDefines(Opts, Builder);
921Builder.defineMacro(
"_M_X64",
"100");
922Builder.defineMacro(
"_M_AMD64",
"100");
927 returnCCK_MicrosoftWin64;
939LongDoubleWidth = LongDoubleAlign = 128;
940LongDoubleFormat = &llvm::APFloat::x87DoubleExtended();
950this->WCharType = TargetInfo::UnsignedShort;
951TLSSupported =
false;
956X86_64TargetInfo::getTargetDefines(Opts, Builder);
957Builder.defineMacro(
"__x86_64__");
958Builder.defineMacro(
"__CYGWIN__");
959Builder.defineMacro(
"__CYGWIN64__");
963Builder.defineMacro(
"_GNU_SOURCE");
972Int64Type = SignedLongLong;
974llvm::Triple
T= llvm::Triple(Triple);
976UseSignedCharForObjCBool =
false;
977resetDataLayout(
"e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-" 978 "f80:128-n8:16:32:64-S128",
999IntMaxType = SignedLongLong;
1000Int64Type = SignedLongLong;
1011LongDoubleWidth = 64;
1012LongDoubleFormat = &llvm::APFloat::IEEEdouble();
1022LongDoubleFormat = &llvm::APFloat::IEEEquad();
1033LongDoubleWidth = 64;
1034LongDoubleFormat = &llvm::APFloat::IEEEdouble();
1044LongDoubleFormat = &llvm::APFloat::IEEEquad();
Provides LLVM's BitmaskEnum facility to enumeration types declared in namespace clang.
static uint64_t getFMVPriority(const TargetInfo &TI, const CodeGenFunction::FMVResolverOption &RO)
static unsigned getCharWidth(tok::TokenKind kind, const TargetInfo &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.
Defines the clang::TargetOptions class.
Concrete class used by the front-end to report problems and issues.
FPEvalMethodKind
Possible float expression evaluation method choices.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Exposes information about the current target.
BuiltinVaListKind
The different kinds of __builtin_va_list types defined by the target implementation.
Options for controlling the target.
AndroidX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
AndroidX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
AppleMachOI386TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
X86TargetInfo::getTargetDefines - Return the set of the X86-specific macro definitions for this parti...
CygwinX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
X86TargetInfo::getTargetDefines - Return the set of the X86-specific macro definitions for this parti...
CygwinX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
DarwinI386TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
bool handleTargetFeatures(std::vector< std::string > &Features, DiagnosticsEngine &Diags) override
DarwinX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
bool handleTargetFeatures(std::vector< std::string > &Features, DiagnosticsEngine &Diags) override
HaikuX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
MCUX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
bool allowsLargerPreferedTypeAlignment() const override
Whether target allows to overalign ABI-specified preferred alignment.
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
X86TargetInfo::getTargetDefines - Return the set of the X86-specific macro definitions for this parti...
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override
Determines whether a given calling convention is valid for the target.
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
MicrosoftX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
TargetInfo::CallingConvKind getCallingConvKind(bool ClangABICompat4) const override
MicrosoftX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
MinGWX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
MinGWX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
NetBSDI386TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
OHOSX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
OHOSX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
OpenBSDI386TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
OpenBSDX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
RTEMSX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
X86TargetInfo::getTargetDefines - Return the set of the X86-specific macro definitions for this parti...
UEFIX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
BuiltinVaListKind getBuiltinVaListKind() const override
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override
TargetInfo::CallingConvKind getCallingConvKind(bool ClangABICompat4) const override
WindowsX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
WindowsX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
BuiltinVaListKind getBuiltinVaListKind() const override
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override
bool isSPRegName(StringRef RegName) const override
bool isValidTuneCPUName(StringRef Name) const override
Determine whether this TargetInfo supports the given CPU name for tuning.
bool supportsCpuSupports() const override
bool isValidCPUName(StringRef Name) const override
Determine whether this TargetInfo supports the given CPU name.
bool setCPU(const std::string &Name) override
Target the specified CPU.
X86TargetInfo(const llvm::Triple &Triple, const TargetOptions &)
bool supportsExtendIntArgs() const override
Whether the option -fextend-arguments={32,64} is supported on the target.
CallingConv getDefaultCallingConv() const override
Gets the default calling convention for the given target and declaration context.
bool useFP16ConversionIntrinsics() const override
Check whether llvm intrinsics such as llvm.convert.to.fp16 should be used to convert to and from __fp...
bool hasSjLjLowering() const override
Controls if __builtin_longjmp / __builtin_setjmp can be lowered to llvm.eh.sjlj.longjmp / llvm....
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override
Determines whether a given calling convention is valid for the target.
bool supportsCpuIs() const override
bool supportsCpuInit() const override
bool checkCFProtectionBranchSupported(DiagnosticsEngine &Diags) const override
Check if the target supports CFProtection branch.
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...
std::string_view getClobbers() const override
Returns a string of target-specific clobbers, in LLVM format.
bool supportSourceEvalMethod() const override
bool checkCFProtectionReturnSupported(DiagnosticsEngine &Diags) const override
Check if the target supports CFProtection return.
LangOptions::FPEvalMethodKind getFPEvalMethod() const override
Return the value for the C99 FLT_EVAL_METHOD macro.
uint64_t getPointerWidthV(LangAS AS) const override
void setSupportedOpenCLOpts() override
Set supported OpenCL extensions and optional core features.
bool supportsTargetAttributeTune() const override
Determine whether this TargetInfo supports tune in target attribute.
const char * getLongDoubleMangling() const override
Return the mangled code of long double.
bool checkArithmeticFenceSupported() const override
Controls if __arithmetic_fence is supported in the targeted backend.
bool validateGlobalRegisterVariable(StringRef RegName, unsigned RegSize, bool &HasSizeMismatch) const override
Validate register name used for global register variables.
StringRef getABI() const override
Get the ABI currently in use.
ArrayRef< TargetInfo::GCCRegAlias > getGCCRegAliases() const override
uint64_t getPointerAlignV(LangAS AddrSpace) const override
X86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
size_t getMaxBitIntWidth() const override
void setMaxAtomicWidth() override
Set the maximum inline or promote width lock-free atomic operation for the given target.
int getEHDataRegisterNumber(unsigned RegNo) const override
Return the register number that __builtin_eh_return_regno would return with the specified argument.
bool hasBitIntType() const override
Determine whether the _BitInt type is supported on this target.
bool validateOperandSize(const llvm::StringMap< bool > &FeatureMap, StringRef Constraint, unsigned Size) const override
BuiltinVaListKind getBuiltinVaListKind() const override
Returns the kind of __builtin_va_list type that should be used with this target.
bool validateGlobalRegisterVariable(StringRef RegName, unsigned RegSize, bool &HasSizeMismatch) const override
Validate register name used for global register variables.
bool hasInt128Type() const override
Determine whether the __int128 type is supported on this target.
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override
Determines whether a given calling convention is valid for the target.
CallingConv getDefaultCallingConv() const override
Gets the default calling convention for the given target and declaration context.
bool hasBitIntType() const override
Determine whether the _BitInt type is supported on this target.
int getEHDataRegisterNumber(unsigned RegNo) const override
Return the register number that __builtin_eh_return_regno would return with the specified argument.
void setMaxAtomicWidth() override
Set the maximum inline or promote width lock-free atomic operation for the given target.
size_t getMaxBitIntWidth() const override
BuiltinVaListKind getBuiltinVaListKind() const override
Returns the kind of __builtin_va_list type that should be used with this target.
X86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
unsigned getUnwindWordWidth() const override
unsigned getRegisterWidth() const override
Return the "preferred" register width on this target.
Defines the clang::TargetInfo interface.
static const unsigned X86AddrSpaceMap[]
LLVM_LIBRARY_VISIBILITY void addCygMingDefines(const clang::LangOptions &Opts, clang::MacroBuilder &Builder)
LLVM_LIBRARY_VISIBILITY void DefineStd(clang::MacroBuilder &Builder, llvm::StringRef MacroName, const clang::LangOptions &Opts)
Define a macro name and standard variants.
The JSON file list parser is used to communicate input to InstallAPI.
LangAS
Defines the address space values used by the address space qualifier of QualType.
const FunctionProtoType * T
CallingConv
CallingConv - Specifies the calling convention that a function uses.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4