26 return Arch ==
Other.Arch && SubArch ==
Other.SubArch &&
28 Environment ==
Other.Environment && ObjectFormat ==
Other.ObjectFormat;
32 return std::tie(Arch, SubArch, Vendor, OS, Environment, ObjectFormat, Data) <
103 return "powerpc64le";
111 return "renderscript32";
113 return "renderscript64";
175 return "mipsisa32r6";
179 return "mipsisa32r6el";
183 return "mipsisa64r6";
187 return "mipsisa64r6el";
197 return "aarch64_lfi";
385#define TRIPLE_VENDOR(Enum, Name) \
388#include "llvm/TargetParser/TripleName.def"
398#define TRIPLE_OS(Enum, Name, CMakeName) \
401#include "llvm/TargetParser/TripleName.def"
411#define TRIPLE_ENV(Enum, Name, CMakeOverride) \
414#include "llvm/TargetParser/TripleName.def"
437 return "dxcontainer";
445 if (ArchName ==
"bpf") {
450 }
else if (ArchName ==
"bpf_be" || ArchName ==
"bpfeb") {
452 }
else if (ArchName ==
"bpf_le" || ArchName ==
"bpfel") {
577 if (ArchName.
empty())
604 .Cases({
"amd64",
"x86_64",
"x86_64h",
"x86_64_lfi"},
Triple::x86_64)
605 .Cases({
"powerpc",
"powerpcspe",
"ppc",
"ppc32"},
Triple::ppc)
628 .
Cases({
"mips",
"mipseb",
"mipsallegrex",
"mipsisa32r6",
"mipsr6"},
630 .Cases({
"mipsel",
"mipsallegrexel",
"mipsisa32r6el",
"mipsr6el"},
632 .Cases({
"mips64",
"mips64eb",
"mipsn32",
"mipsisa64r6",
"mips64r6",
635 .Cases({
"mips64el",
"mipsn32el",
"mipsisa64r6el",
"mips64r6el",
663 .Cases({
"spirv32",
"spirv32v1.0",
"spirv32v1.1",
"spirv32v1.2",
664 "spirv32v1.3",
"spirv32v1.4",
"spirv32v1.5",
"spirv32v1.6"},
666 .Cases({
"spirv64",
"spirv64v1.0",
"spirv64v1.1",
"spirv64v1.2",
667 "spirv64v1.3",
"spirv64v1.4",
"spirv64v1.5",
"spirv64v1.6"},
680 .
Cases({
"dxil",
"dxilv1.0",
"dxilv1.1",
"dxilv1.2",
"dxilv1.3",
681 "dxilv1.4",
"dxilv1.5",
"dxilv1.6",
"dxilv1.7",
"dxilv1.8",
682 "dxilv1.9",
"dxilv1.10"},
702#define TRIPLE_VENDOR(Enum, Name) .Case(Name, Triple::Enum)
703#define TRIPLE_VENDOR_ALIAS(Enum, AliasName) .Case(AliasName, Triple::Enum)
704#include "llvm/TargetParser/TripleName.def"
710#define TRIPLE_OS(Enum, Name, CMakeName) .StartsWith(Name, Triple::Enum)
711#define TRIPLE_OS_ALIAS(Enum, AliasName) .StartsWith(AliasName, Triple::Enum)
712#include "llvm/TargetParser/TripleName.def"
718#define TRIPLE_ENV(Enum, Name, CMakeOverride) .StartsWith(Name, Triple::Enum)
719#include "llvm/TargetParser/TripleName.def"
742 if (SubArchName ==
"powerpcspe")
745 if (SubArchName ==
"arm64e")
747 if (SubArchName ==
"arm64e.x1")
750 if (SubArchName ==
"arm64ec")
753 if (SubArchName ==
"aarch64_lfi")
756 if (SubArchName ==
"x86_64_lfi")
860 if (ARMSubArch.
empty())
869 case ARM::ArchKind::ARMV4:
871 case ARM::ArchKind::ARMV4T:
873 case ARM::ArchKind::ARMV5T:
875 case ARM::ArchKind::ARMV5TE:
876 case ARM::ArchKind::IWMMXT:
877 case ARM::ArchKind::IWMMXT2:
878 case ARM::ArchKind::XSCALE:
879 case ARM::ArchKind::ARMV5TEJ:
881 case ARM::ArchKind::ARMV6:
883 case ARM::ArchKind::ARMV6K:
884 case ARM::ArchKind::ARMV6KZ:
886 case ARM::ArchKind::ARMV6T2:
888 case ARM::ArchKind::ARMV6M:
890 case ARM::ArchKind::ARMV7A:
891 case ARM::ArchKind::ARMV7R:
893 case ARM::ArchKind::ARMV7VE:
895 case ARM::ArchKind::ARMV7K:
897 case ARM::ArchKind::ARMV7M:
899 case ARM::ArchKind::ARMV7S:
901 case ARM::ArchKind::ARMV7EM:
903 case ARM::ArchKind::ARMV8A:
905 case ARM::ArchKind::ARMV8_1A:
907 case ARM::ArchKind::ARMV8_2A:
909 case ARM::ArchKind::ARMV8_3A:
911 case ARM::ArchKind::ARMV8_4A:
913 case ARM::ArchKind::ARMV8_5A:
915 case ARM::ArchKind::ARMV8_6A:
917 case ARM::ArchKind::ARMV8_7A:
919 case ARM::ArchKind::ARMV8_8A:
921 case ARM::ArchKind::ARMV8_9A:
923 case ARM::ArchKind::ARMV9A:
925 case ARM::ArchKind::ARMV9_1A:
927 case ARM::ArchKind::ARMV9_2A:
929 case ARM::ArchKind::ARMV9_3A:
931 case ARM::ArchKind::ARMV9_4A:
933 case ARM::ArchKind::ARMV9_5A:
935 case ARM::ArchKind::ARMV9_6A:
937 case ARM::ArchKind::ARMV9_7A:
939 case ARM::ArchKind::ARMV9_8A:
941 case ARM::ArchKind::ARMV8R:
943 case ARM::ArchKind::ARMV8MBaseline:
945 case ARM::ArchKind::ARMV8MMainline:
947 case ARM::ArchKind::ARMV8_1MMainline:
955 switch (
T.getArch()) {
1019 if (
T.isOSWindows())
1059 if (Components.
size() > 0) {
1062 if (Components.
size() > 1) {
1064 if (Components.
size() > 2) {
1066 if (Components.
size() > 3) {
1095 : Data((ArchStr +
Twine(
'-') + VendorStr +
Twine(
'-') + OSStr).
str()),
1108 const Twine &EnvironmentStr)
1109 : Data((ArchStr +
Twine(
'-') + VendorStr +
Twine(
'-') + OSStr +
Twine(
'-') +
1124 Arch(
A), SubArch(SA), Vendor(V), OS(OS),
1133 Arch(
A), SubArch(SA), Vendor(V), OS(OS), Environment(E),
1143 Arch(
A), SubArch(SA), Vendor(V), OS(OS), Environment(E),
1153 const unsigned SMMajor = 6;
1156 if (std::optional<unsigned> SMMinor = Ver.
getMinor()) {
1188 if (ShaderModelStr ==
"shadermodel6.x") {
1198 bool IsMinGW32 =
false;
1199 bool IsCygwin =
false;
1203 Str.split(Components,
'-');
1211 if (Components.
size() > 0)
1214 if (Components.
size() > 1)
1217 if (Components.
size() > 2) {
1219 IsCygwin = Components[2].starts_with(
"cygwin") ||
1220 Components[2].starts_with(
"msys");
1221 IsMinGW32 = Components[2].starts_with(
"mingw");
1224 if (Components.
size() > 3)
1227 if (Components.
size() > 4)
1241 for (
unsigned Pos = 0; Pos != std::size(Found); ++Pos) {
1245 for (
unsigned Idx = 0; Idx != Components.
size(); ++Idx) {
1247 if (Idx < std::size(Found) && Found[Idx])
1268 Valid = OS !=
UnknownOS || IsCygwin || IsMinGW32;
1291 std::swap(CurrentComponent, Components[Idx]);
1294 for (
unsigned i = Pos; !CurrentComponent.
empty(); ++i) {
1296 while (i < std::size(Found) && Found[i])
1300 std::swap(CurrentComponent, Components[i]);
1302 }
else if (Pos > Idx) {
1309 for (
unsigned i = Idx; i < Components.
size();) {
1312 std::swap(CurrentComponent, Components[i]);
1314 if (CurrentComponent.
empty())
1317 while (++i < std::size(Found) && Found[i])
1321 if (!CurrentComponent.
empty())
1325 while (++Idx < std::size(Found) && Found[Idx])
1327 }
while (Idx < Pos);
1329 assert(Pos < Components.
size() && Components[Pos] == Comp &&
1330 "Component moved wrong!");
1338 if (Found[0] && !Found[1] && !Found[2] && Found[3] &&
1339 Components[1] ==
"none" && Components[2].
empty())
1340 std::swap(Components[1], Components[2]);
1349 std::string NormalizedEnvironment;
1352 StringRef AndroidVersion = Components[3].drop_front(strlen(
"androideabi"));
1353 if (AndroidVersion.
empty()) {
1354 Components[3] =
"android";
1356 NormalizedEnvironment =
Twine(
"android", AndroidVersion).
str();
1357 Components[3] = NormalizedEnvironment;
1363 Components[3] =
"gnueabihf";
1367 Components[2] =
"windows";
1370 Components[3] =
"msvc";
1374 }
else if (IsMinGW32) {
1376 Components[2] =
"windows";
1377 Components[3] =
"gnu";
1378 }
else if (IsCygwin) {
1380 Components[2] =
"windows";
1381 Components[3] =
"cygnus";
1383 if (IsMinGW32 || IsCygwin ||
1396 if (Components[0] ==
"dxil") {
1397 if (Components.
size() > 4) {
1407 if ((Components.
size() > 2) && (Components[2] ==
"firmware") &&
1408 (Components[1] !=
"apple"))
1410 "the firmware target os is only supported for the apple vendor");
1419 Components.
resize(
static_cast<unsigned>(Form),
"unknown");
1425 return join(Components,
"-");
1434 return Tmp.
split(
'-').first;
1439 Tmp = Tmp.
split(
'-').second;
1440 return Tmp.
split(
'-').first;
1445 Tmp = Tmp.
split(
'-').second;
1446 return Tmp.
split(
'-').second;
1451 return Tmp.
split(
'-').second;
1457 return Version.withoutBuild();
1469 if (EnvironmentName ==
"none")
1475 if (EnvironmentName.
contains(
"-")) {
1480 const std::string tmp = (
Twine(
"-") + ObjectFormatTypeName).
str();
1484 return EnvironmentName;
1515 if (
Version.getMajor() <= 19) {
1517 }
else if (
Version.getMajor() < 25) {
1520 }
else if ((
Version.getMajor() == 25) || (
Version.getMajor() == 26)) {
1530 if (
Version.getMajor() == 0) {
1532 }
else if (
Version.getMajor() < 10) {
1642 return Version.withMajorReplaced(19);
1664 if (ValidVersionMap.
contains(VulkanVersion) &&
1665 (ValidVersionMap.
lookup(VulkanVersion) == SpirvVersion ||
1667 return VulkanVersion;
1678 Arch.consume_front(
"dxilv");
2339 unsigned Micro)
const {
2349 assert(Major >= 11 &&
"Unexpected major version");
2394 bool IsInValidRange) {
2395 const unsigned MacOSRangeBump = 10;
2396 const unsigned IOSRangeBump = 7;
2397 const unsigned XROSRangeBump = 23;
2398 const unsigned WatchOSRangeBump = 14;
2407 if (!IsInValidRange)
2408 return Version.withMajorReplaced(
Version.getMajor() + MacOSRangeBump);
2416 if (!IsInValidRange)
2417 return Version.withMajorReplaced(
Version.getMajor() + IOSRangeBump);
2424 if (!IsInValidRange)
2425 return Version.withMajorReplaced(
Version.getMajor() + XROSRangeBump);
2432 if (!IsInValidRange)
2433 return Version.withMajorReplaced(
Version.getMajor() + WatchOSRangeBump);
2438 if (
Version.getMajor() == 26U)
2439 return Version.withMajorReplaced(27);
2452 auto IsValid = [&](
const VersionTuple &StartingVersion) {
2453 return !((
Version > StartingVersion) && (
Version < CommonVersion));
2458 return IsValid(StartingWatchOS);
2463 return IsValid(StartingIOS);
2467 return IsValid(StartingMacOS);
2471 return IsValid(StartingXROS);
2638 "incorrect HLSL stage order");
2640 "incorrect HLSL stage order");
2643 "incorrect HLSL stage order");
2645 "incorrect HLSL stage order");
2647 "incorrect HLSL stage order");
2649 "incorrect HLSL stage order");
2651 "incorrect HLSL stage order");
2653 "incorrect HLSL stage order");
2655 "incorrect HLSL stage order");
2658 "incorrect HLSL stage order");
2661 "incorrect HLSL stage order");
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
This file defines the DenseMap class.
This file implements the StringSwitch template, which mimics a switch() statement whose cases are str...
static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName)
static FloatABI::ABIType getARMDefaultFloatABI(const Triple &T, StringRef ABIName)
static VersionTuple parseVersionFromName(StringRef Name)
static Triple::ObjectFormatType getDefaultFormat(const Triple &T)
static Triple::ArchType parseARMArch(StringRef ArchName)
static Triple::OSType parseOS(StringRef OSName)
static StringRef getDXILArchNameFromShaderModel(StringRef ShaderModelStr)
static Triple::ArchType parseBPFArch(StringRef ArchName)
static Triple::ObjectFormatType parseFormat(StringRef EnvironmentName)
static Triple::VendorType parseVendor(StringRef VendorName)
Defines the llvm::VersionTuple class, which represents a version in the form major[....
bool contains(const_arg_type_t< KeyT > Val) const
Return true if the specified key is in the map, false otherwise.
ValueT lookup(const_arg_type_t< KeyT > Val) const
Return the entry for the specified key, or a default constructed value if no such entry exists.
void push_back(const T &Elt)
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Represent a constant reference to a string, i.e.
std::pair< StringRef, StringRef > split(char Separator) const
Split into two substrings around the first occurrence of a separator character.
bool consume_back(StringRef Suffix)
Returns true if this StringRef has the given suffix and removes that suffix.
constexpr StringRef substr(size_t Start, size_t N=npos) const
Return a reference to the substring from [Start, Start + N).
bool starts_with(StringRef Prefix) const
Check if this string starts with the given Prefix.
constexpr bool empty() const
Check if the string is empty.
StringRef drop_front(size_t N=1) const
Return a StringRef equal to 'this' but with the first N elements dropped.
constexpr size_t size() const
Get the string size.
bool contains(StringRef Other) const
Return true if the given string is a substring of *this, and false otherwise.
bool ends_with(StringRef Suffix) const
Check if this string ends with the given Suffix.
bool consume_front(char Prefix)
Returns true if this StringRef has the given prefix and removes that prefix.
A switch()-like statement whose cases are string literals.
StringSwitch & Case(StringLiteral S, T Value)
StringSwitch & StartsWith(StringLiteral S, T Value)
StringSwitch & EndsWith(StringLiteral S, T Value)
StringSwitch & Cases(std::initializer_list< StringLiteral > CaseStrings, T Value)
Triple - Helper class for working with autoconf configuration names.
LLVM_ABI bool isMacOSXVersionLT(unsigned Major, unsigned Minor=0, unsigned Micro=0) const
Comparison function for checking OS X version compatibility, which handles supporting skewed version ...
LLVM_ABI VersionTuple getOSVersion() const
Parse the version number from the OS name component of the triple, if present.
bool isPPC() const
Tests whether the target is PowerPC (32- or 64-bit LE or BE).
LLVM_ABI StringRef getVendorName() const
Get the vendor (second) component of the triple.
LLVM_ABI VersionTuple getWatchOSVersion() const
Parse the version number as with getOSVersion.
LLVM_ABI void setArchName(StringRef Str)
Set the architecture (first) component of the triple by name.
LLVM_ABI DebuggerKind getDefaultDebuggerTuning() const
Returns the default debugger tuning for this target triple, i.e.
LLVM_ABI void setObjectFormat(ObjectFormatType Kind)
Set the object file format.
LLVM_ABI llvm::Triple get32BitArchVariant() const
Form a triple with a 32-bit variant of the current architecture.
bool isOSCygMing() const
Tests for either Cygwin or MinGW OS.
Triple()=default
Default constructor is the same as an empty string and leaves all triple fields unknown.
bool isThumb() const
Tests whether the target is Thumb (little and big endian).
bool isX86_64() const
Tests whether the target is x86 (64-bit).
static LLVM_ABI VersionTuple getCanonicalVersionForOS(OSType OSKind, const VersionTuple &Version, bool IsInValidRange)
Returns a canonicalized OS version number for the specified OS.
CanonicalForm
Canonical form.
LLVM_ABI bool operator<(const Triple &Other) const
unsigned getArchPointerBitWidth() const
Returns the pointer width of this architecture.
LLVM_ABI llvm::Triple getLittleEndianArchVariant() const
Form a triple with a little endian variant of the current architecture.
bool isBPF() const
Tests whether the target is eBPF.
static LLVM_ABI StringRef getVendorTypeName(VendorType Kind)
Get the canonical name for the Kind vendor.
ObjectFormatType getObjectFormat() const
Get the object format for this triple.
SubArchType getSubArch() const
get the parsed subarchitecture type for this triple.
bool isX86() const
Tests whether the target is x86 (32- or 64-bit).
bool isArm64e() const
Tests whether the target is the Apple "arm64e" AArch64 subarch.
bool isOSBinFormatGOFF() const
Tests whether the OS uses the GOFF binary format.
bool isWindowsGNUEnvironment() const
LLVM_ABI void setVendorName(StringRef Str)
Set the vendor (second) component of the triple by name.
LLVM_ABI void setOSAndEnvironmentName(StringRef Str)
Set the operating system and optional environment components with a single string.
bool isAndroid() const
Tests whether the target is Android.
LLVM_ABI llvm::Triple get64BitArchVariant() const
Form a triple with a 64-bit variant of the current architecture.
LLVM_ABI FloatABI::ABIType getDefaultFloatABI(StringRef ABIName="") const
Returns the default floating-point ABI for this target triple, i.e.
LLVM_ABI bool isLittleEndian() const
Tests whether the target triple is little endian.
LLVM_ABI void setEnvironment(EnvironmentType Kind)
Set the environment (fourth) component of the triple to a known type.
LLVM_ABI StringRef getOSName() const
Get the operating system (third) component of the triple.
bool isSPIROrSPIRV() const
LLVM_ABI ExceptionHandling getDefaultExceptionHandling() const
LLVM_ABI ThreadModel getDefaultThreadModel() const
Returns the default threading model for this target triple, i.e.
LLVM_ABI void setTriple(const Twine &Str)
Set all components to the new triple Str.
OSType getOS() const
Get the parsed operating system type of this triple.
LLVM_ABI VersionTuple getEnvironmentVersion() const
Parse the version number from the OS name component of the triple, if present.
static LLVM_ABI std::string normalize(StringRef Str, CanonicalForm Form=CanonicalForm::ANY)
Turn an arbitrary machine specification into the canonical triple form (or something sensible that th...
static LLVM_ABI ArchType getArchTypeForLLVMName(StringRef Str)
The canonical type for the given LLVM architecture name (e.g., "x86").
bool isPPC32() const
Tests whether the target is 32-bit PowerPC (little and big endian).
ArchType getArch() const
Get the parsed architecture type of this triple.
LLVM_ABI bool operator==(const Triple &Other) const
LLVM_ABI unsigned getTrampolineSize() const
Returns the trampoline size in bytes for this configuration.
bool isOSBinFormatCOFF() const
Tests whether the OS uses the COFF binary format.
LLVM_ABI StringRef getEnvironmentName() const
Get the optional environment (fourth) component of the triple, or "" if empty.
bool isSimulatorEnvironment() const
LLVM_ABI VersionTuple getDXILVersion() const
Parse the DXIL version number from the OSVersion and DXIL version (SubArch).
const std::string & str() const
bool isOHOSFamily() const
Tests whether the target is OHOS LiteOS default enviroment is also OHOS, but omited on triple.
EnvironmentType getEnvironment() const
Get the parsed environment type of this triple.
LLVM_ABI VersionTuple getVulkanVersion() const
Parse the Vulkan version number from the OSVersion and SPIR-V version (SubArch).
LLVM_ABI VersionTuple getDriverKitVersion() const
Parse the version number as with getOSVersion.
static LLVM_ABI ArchType parseArch(StringRef Str)
Parse anything recognized as an architecture for the first field of the triple.
bool isUEFI() const
Tests whether the OS is UEFI.
bool isOSWindows() const
Tests whether the OS is Windows.
bool isMusl() const
Tests whether the environment is musl-libc.
LLVM_ABI LongDoubleFormat getDefaultLongDoubleFormat() const
Returns the default floating-point format for the "long double" type.
bool isOSWindowsOrUEFI() const
Tests whether the OS is Windows or UEFI.
static LLVM_ABI StringRef getArchTypeName(ArchType Kind)
Get the canonical name for the Kind architecture.
bool isOSBinFormatXCOFF() const
Tests whether the OS uses the XCOFF binary format.
static LLVM_ABI StringRef getOSTypeName(OSType Kind)
Get the canonical name for the Kind operating system.
bool isARM() const
Tests whether the target is ARM (little and big endian).
LLVM_ABI std::string merge(const Triple &Other) const
Merge target triples.
bool isOSLinux() const
Tests whether the OS is Linux.
static LLVM_ABI SubArchType parseSubArch(StringRef Str)
Parse the subarchitecture encoded in the first (architecture) field of the triple (e....
bool isRISCV() const
Tests whether the target is RISC-V (32- and 64-bit).
bool isAMDGCN() const
Tests whether the target is AMDGCN.
bool isNVPTX() const
Tests whether the target is NVPTX (32- or 64-bit).
bool isOSAIX() const
Tests whether the OS is AIX.
LLVM_ABI VersionTuple getMinimumSupportedOSVersion() const
Some platforms have different minimum supported OS versions that varies by the architecture specified...
LLVM_ABI bool isArch64Bit() const
Test whether the architecture is 64-bit.
LLVM_ABI StringRef getOSAndEnvironmentName() const
Get the operating system and optional environment components as a single string (separated by a '-' i...
@ ARMSubArch_v8m_mainline
@ ARMSubArch_v8m_baseline
@ AArch64SubArch_arm64e_x1
@ ARMSubArch_v8_1m_mainline
LLVM_ABI bool getMacOSXVersion(VersionTuple &Version) const
Parse the version number as with getOSVersion and then translate generic "darwin" versions to the cor...
static LLVM_ABI bool isValidVersionForOS(OSType OSKind, const VersionTuple &Version)
Returns whether an OS version is invalid and would not map to an Apple OS.
bool isMacOSX() const
Is this a Mac OS X triple.
LLVM_ABI void setEnvironmentName(StringRef Str)
Set the optional environment (fourth) component of the triple by name.
LLVM_ABI void setOS(OSType Kind)
Set the operating system (third) component of the triple to a known type.
LLVM_ABI void setOSName(StringRef Str)
Set the operating system (third) component of the triple by name.
VendorType getVendor() const
Get the parsed vendor type of this triple.
bool isSPARC() const
Tests whether the target is SPARC.
bool isOSDarwin() const
Is this a "Darwin" OS (macOS, iOS, tvOS, watchOS, DriverKit, XROS, or bridgeOS).
static LLVM_ABI StringRef getEnvironmentTypeName(EnvironmentType Kind)
Get the canonical name for the Kind environment.
bool isOSVersionLT(unsigned Major, unsigned Minor=0, unsigned Micro=0) const
Helper function for doing comparisons against version numbers included in the target triple.
bool empty() const
Whether the triple is empty / default constructed.
bool isMIPS() const
Tests whether the target is MIPS (little and big endian, 32- or 64-bit).
bool isPS() const
Tests whether the target is the PS4 or PS5 platform.
bool isWasm() const
Tests whether the target is wasm (32- and 64-bit).
LLVM_ABI StringRef getArchName() const
Get the architecture (first) component of the triple.
bool isMacCatalystEnvironment() const
bool isAArch64() const
Tests whether the target is AArch64 (little and big endian).
static LLVM_ABI StringRef getObjectFormatTypeName(ObjectFormatType ObjectFormat)
Get the name for the Object format.
LLVM_ABI bool isArch16Bit() const
Test whether the architecture is 16-bit.
LLVM_ABI llvm::Triple getBigEndianArchVariant() const
Form a triple with a big endian variant of the current architecture.
LLVM_ABI VersionTuple getiOSVersion() const
Parse the version number as with getOSVersion.
LLVM_ABI StringRef getEnvironmentVersionString() const
Get the version component of the environment component as a single string (the version after the envi...
LLVM_ABI bool isArch32Bit() const
Test whether the architecture is 32-bit.
LLVM_ABI bool isCompatibleWith(const Triple &Other) const
Test whether target triples are compatible.
bool isOSBinFormatELF() const
Tests whether the OS uses the ELF binary format.
bool isWindowsMSVCEnvironment() const
Checks if the environment could be MSVC.
bool hasEnvironment() const
Does this triple have the optional environment (fourth) component?
LLVM_ABI unsigned getDefaultWCharSize() const
Returns the default wchar_t size (in bytes) for this target triple.
static LLVM_ABI StringRef getArchTypePrefix(ArchType Kind)
Get the "prefix" canonical name for the Kind architecture.
LLVM_ABI void setArch(ArchType Kind, SubArchType SubArch=NoSubArch)
Set the architecture (first) component of the triple to a known type.
LLVM_ABI void setVendor(VendorType Kind)
Set the vendor (second) component of the triple to a known type.
bool isLoongArch() const
Tests whether the target is LoongArch (32- and 64-bit).
bool isWindowsItaniumEnvironment() const
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
LLVM_ABI std::string str() const
Return the twine contents as a std::string.
Represents a version number in the form major[.minor[.subminor[.build]]].
unsigned getMajor() const
Retrieve the major version number.
LLVM_ABI bool tryParse(StringRef string)
Try to parse the given string as a version number.
bool empty() const
Determine whether this version information is empty (e.g., all version components are zero).
std::optional< unsigned > getMinor() const
Retrieve the minor version number, if provided.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
LLVM_ABI std::string mergeSubArch(const Triple &A, const Triple &B)
Returns the effective triple appropriate to use when linking B into A by merging the subarches in cas...
LLVM_ABI bool isSubArchCompatible(const Triple &A, const Triple &B)
Return true if subarch A is compatible with subarch B, i.e.
LLVM_ABI StringRef getSubArchName(Triple::SubArchType SubArch)
Returns the triple subarch name for an AMDGPU subarch, e.g.
LLVM_ABI StringRef getCanonicalArchName(StringRef Arch)
MArch is expected to be of the form (arm|thumb)?(eb)?(v.
LLVM_ABI ISAKind parseArchISA(StringRef Arch)
LLVM_ABI LLVM_READONLY ARMABI computeTargetABI(const Triple &TT, StringRef ABIName="")
LLVM_ABI ArchKind parseArch(StringRef Arch)
LLVM_ABI ProfileKind parseArchProfile(StringRef Arch)
LLVM_ABI unsigned parseArchVersion(StringRef Arch)
LLVM_ABI EndianKind parseArchEndian(StringRef Arch)
constexpr bool IsLittleEndianHost
This is an optimization pass for GlobalISel generic memory operations.
LongDoubleFormat
The floating-point format used for the target's "long double" type.
LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)
std::string join(IteratorT Begin, IteratorT End, StringRef Separator)
Joins the strings in the range [Begin, End), adding Separator between the elements.
ThreadModel
The threading model to assume for lowering, e.g. of atomics.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
@ SjLj
setjmp/longjmp based exceptions
@ ZOS
z/OS MVS Exception Handling.
@ None
No exception support.
@ AIX
AIX Exception Handling.
@ DwarfCFI
DWARF-like instruction based exceptions.
@ WinEH
Windows Exception Handling.
DebuggerKind
Identify a debugger for "tuning" the debug info.
@ SCE
Tune debug info for SCE targets (e.g. PS4).
@ DBX
Tune debug info for dbx.
@ GDB
Tune debug info for gdb.
@ LLDB
Tune debug info for lldb.
LLVM_ABI void reportFatalUsageError(Error Err)
Report a fatal error that does not indicate a bug in LLVM.
Implement std::hash so that hash_code can be used in STL containers.
void swap(llvm::BitVector &LHS, llvm::BitVector &RHS)
Implement std::swap in terms of BitVector swap.