LLVM: llvm::Triple Class Reference (original) (raw)

Triple - Helper class for working with autoconf configuration names. More...

#include "[llvm/TargetParser/Triple.h](Triple%5F8h%5Fsource.html)"

Public Types
enum ArchType { UnknownArch, arm, armeb, aarch64, aarch64_be, aarch64_32, arc, avr, bpfel, bpfeb, csky, dxil, hexagon, loongarch32, loongarch64, m68k, mips, mipsel, mips64, mips64el, msp430, ppc, ppcle, ppc64, ppc64le, r600, amdgcn, riscv32, riscv64, riscv32be, riscv64be, sparc, sparcv9, sparcel, systemz, tce, tcele, thumb, thumbeb, x86, x86_64, xcore, xtensa, nvptx, nvptx64, amdil, amdil64, hsail, hsail64, spir, spir64, spirv, spirv32, spirv64, kalimba, shave, lanai, wasm32, wasm64, renderscript32, renderscript64, ve, LastArchType = ve }
enum SubArchType { NoSubArch, ARMSubArch_v9_7a, ARMSubArch_v9_6a, ARMSubArch_v9_5a, ARMSubArch_v9_4a, ARMSubArch_v9_3a, ARMSubArch_v9_2a, ARMSubArch_v9_1a, ARMSubArch_v9, ARMSubArch_v8_9a, ARMSubArch_v8_8a, ARMSubArch_v8_7a, ARMSubArch_v8_6a, ARMSubArch_v8_5a, ARMSubArch_v8_4a, ARMSubArch_v8_3a, ARMSubArch_v8_2a, ARMSubArch_v8_1a, ARMSubArch_v8, ARMSubArch_v8r, ARMSubArch_v8m_baseline, ARMSubArch_v8m_mainline, ARMSubArch_v8_1m_mainline, ARMSubArch_v7, ARMSubArch_v7em, ARMSubArch_v7m, ARMSubArch_v7s, ARMSubArch_v7k, ARMSubArch_v7ve, ARMSubArch_v6, ARMSubArch_v6m, ARMSubArch_v6k, ARMSubArch_v6t2, ARMSubArch_v5, ARMSubArch_v5te, ARMSubArch_v4t, AArch64SubArch_arm64e, AArch64SubArch_arm64ec, KalimbaSubArch_v3, KalimbaSubArch_v4, KalimbaSubArch_v5, MipsSubArch_r6, PPCSubArch_spe, SPIRVSubArch_v10, SPIRVSubArch_v11, SPIRVSubArch_v12, SPIRVSubArch_v13, SPIRVSubArch_v14, SPIRVSubArch_v15, SPIRVSubArch_v16, DXILSubArch_v1_0, DXILSubArch_v1_1, DXILSubArch_v1_2, DXILSubArch_v1_3, DXILSubArch_v1_4, DXILSubArch_v1_5, DXILSubArch_v1_6, DXILSubArch_v1_7, DXILSubArch_v1_8, DXILSubArch_v1_9, LatestDXILSubArch = DXILSubArch_v1_9 }
enum VendorType { UnknownVendor, Apple, PC, SCEI, Freescale, IBM, ImaginationTechnologies, MipsTechnologies, NVIDIA, CSR, AMD, Mesa, SUSE, OpenEmbedded, Intel, Meta, LastVendorType = Meta }
enum OSType { UnknownOS, Darwin, DragonFly, FreeBSD, Fuchsia, IOS, KFreeBSD, Linux, Lv2, MacOSX, Managarm, NetBSD, OpenBSD, Solaris, UEFI, Win32, ZOS, Haiku, RTEMS, AIX, CUDA, NVCL, AMDHSA, PS4, PS5, ELFIAMCU, TvOS, WatchOS, BridgeOS, DriverKit, XROS, Mesa3D, AMDPAL, HermitCore, Hurd, WASI, Emscripten, ShaderModel, LiteOS, Serenity, Vulkan, CheriotRTOS, LastOSType = CheriotRTOS }
enum EnvironmentType { UnknownEnvironment, GNU, GNUT64, GNUABIN32, GNUABI64, GNUEABI, GNUEABIT64, GNUEABIHF, GNUEABIHFT64, GNUF32, GNUF64, GNUSF, GNUX32, GNUILP32, CODE16, EABI, EABIHF, Android, Musl, MuslABIN32, MuslABI64, MuslEABI, MuslEABIHF, MuslF32, MuslSF, MuslX32, MuslWALI, LLVM, MSVC, Itanium, Cygnus, CoreCLR, Simulator, MacABI, Pixel, Vertex, Geometry, Hull, Domain, Compute, Library, RayGeneration, Intersection, AnyHit, ClosestHit, Miss, Callable, Mesh, Amplification, RootSignature, OpenCL, OpenHOS, Mlibc, PAuthTest, MTIA, LastEnvironmentType = MTIA }
enum ObjectFormatType { UnknownObjectFormat, COFF, DXContainer, ELF, GOFF, MachO, SPIRV, Wasm, XCOFF }
Public Member Functions
LLVM_ABI ExceptionHandling getDefaultExceptionHandling () const
LLVM_ABI std::string computeDataLayout (StringRef ABIName="") const
Compute the LLVM IR data layout string based on the triple.
Constructors
Triple ()=default
Default constructor is the same as an empty string and leaves all triple fields unknown.
LLVM_ABI Triple (std::string &&Str)
Construct a triple from the string representation provided.
Triple (StringRef Str)
Triple (const char *Str)
Triple (const std::string &Str)
LLVM_ABI Triple (const Twine &Str)
LLVM_ABI Triple (const Twine &ArchStr, const Twine &VendorStr, const Twine &OSStr)
Construct a triple from string representations of the architecture, vendor, and OS.
LLVM_ABI Triple (const Twine &ArchStr, const Twine &VendorStr, const Twine &OSStr, const Twine &EnvironmentStr)
Construct a triple from string representations of the architecture, vendor, OS, and environment.
bool operator== (const Triple &Other) const
bool operator!= (const Triple &Other) const
Typed Component Access
ArchType getArch () const
Get the parsed architecture type of this triple.
SubArchType getSubArch () const
get the parsed subarchitecture type for this triple.
VendorType getVendor () const
Get the parsed vendor type of this triple.
OSType getOS () const
Get the parsed operating system type of this triple.
bool hasEnvironment () const
Does this triple have the optional environment (fourth) component?
EnvironmentType getEnvironment () const
Get the parsed environment type of this triple.
LLVM_ABI VersionTuple getEnvironmentVersion () const
Parse the version number from the OS name component of the triple, if present.
ObjectFormatType getObjectFormat () const
Get the object format for this triple.
LLVM_ABI VersionTuple getOSVersion () const
Parse the version number from the OS name component of the triple, if present.
unsigned getOSMajorVersion () const
Return just the major version number, this is specialized because it is a common query.
LLVM_ABI bool getMacOSXVersion (VersionTuple &Version) const
Parse the version number as with getOSVersion and then translate generic "darwin" versions to the corresponding OS X versions.
LLVM_ABI VersionTuple getiOSVersion () const
Parse the version number as with getOSVersion.
LLVM_ABI VersionTuple getWatchOSVersion () const
Parse the version number as with getOSVersion.
LLVM_ABI VersionTuple getDriverKitVersion () const
Parse the version number as with getOSVersion.
LLVM_ABI VersionTuple getVulkanVersion () const
Parse the Vulkan version number from the OSVersion and SPIR-V version (SubArch).
LLVM_ABI VersionTuple getDXILVersion () const
Parse the DXIL version number from the OSVersion and DXIL version (SubArch).
Direct Component Access
const std::string & str () const
const std::string & getTriple () const
bool empty () const
Whether the triple is empty / default constructed.
LLVM_ABI StringRef getArchName () const
Get the architecture (first) component of the triple.
LLVM_ABI StringRef getVendorName () const
Get the vendor (second) component of the triple.
LLVM_ABI StringRef getOSName () const
Get the operating system (third) component of the triple.
LLVM_ABI StringRef getEnvironmentName () const
Get the optional environment (fourth) component of the triple, or "" if empty.
LLVM_ABI StringRef getOSAndEnvironmentName () const
Get the operating system and optional environment components as a single string (separated by a '-' if the environment component is present).
LLVM_ABI StringRef getEnvironmentVersionString () const
Get the version component of the environment component as a single string (the version after the environment).
Mutators
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.
LLVM_ABI void setOS (OSType Kind)
Set the operating system (third) component of the triple to a known type.
LLVM_ABI void setEnvironment (EnvironmentType Kind)
Set the environment (fourth) component of the triple to a known type.
LLVM_ABI void setObjectFormat (ObjectFormatType Kind)
Set the object file format.
LLVM_ABI void setTriple (const Twine &Str)
Set all components to the new triple Str.
LLVM_ABI void setArchName (StringRef Str)
Set the architecture (first) component of the triple by name.
LLVM_ABI void setVendorName (StringRef Str)
Set the vendor (second) component of the triple by name.
LLVM_ABI void setOSName (StringRef Str)
Set the operating system (third) component of the triple by name.
LLVM_ABI void setEnvironmentName (StringRef Str)
Set the optional environment (fourth) component of the triple by name.
LLVM_ABI void setOSAndEnvironmentName (StringRef Str)
Set the operating system and optional environment components with a single string.
Helpers to build variants of a particular triple.
LLVM_ABI llvm::Triple get32BitArchVariant () const
Form a triple with a 32-bit variant of the current architecture.
LLVM_ABI llvm::Triple get64BitArchVariant () const
Form a triple with a 64-bit variant of the current architecture.
LLVM_ABI llvm::Triple getBigEndianArchVariant () const
Form a triple with a big endian variant of the current architecture.
LLVM_ABI llvm::Triple getLittleEndianArchVariant () const
Form a triple with a little endian variant of the current architecture.
LLVM_ABI bool isLittleEndian () const
Tests whether the target triple is little endian.
LLVM_ABI bool isCompatibleWith (const Triple &Other) const
Test whether target triples are compatible.
bool isGPU () const
Test whether the target triple is for a GPU.
LLVM_ABI std::string merge (const Triple &Other) const
Merge target triples.
LLVM_ABI VersionTuple getMinimumSupportedOSVersion () const
Some platforms have different minimum supported OS versions that varies by the architecture specified in the triple.
Static Public Member Functions
static LLVM_ABI VersionTuple getCanonicalVersionForOS (OSType OSKind, const VersionTuple &Version, bool IsInValidRange)
Returns a canonicalized OS version number for the specified OS.
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.
Static helpers for IDs.
static LLVM_ABI StringRef getArchTypeName (ArchType Kind)
Get the canonical name for the Kind architecture.
static LLVM_ABI StringRef getArchName (ArchType Kind, SubArchType SubArch=NoSubArch)
Get the architecture name based on Kind and SubArch.
static LLVM_ABI StringRef getArchTypePrefix (ArchType Kind)
Get the "prefix" canonical name for the Kind architecture.
static LLVM_ABI StringRef getVendorTypeName (VendorType Kind)
Get the canonical name for the Kind vendor.
static LLVM_ABI StringRef getOSTypeName (OSType Kind)
Get the canonical name for the Kind operating system.
static LLVM_ABI StringRef getEnvironmentTypeName (EnvironmentType Kind)
Get the canonical name for the Kind environment.
static LLVM_ABI StringRef getObjectFormatTypeName (ObjectFormatType ObjectFormat)
Get the name for the Object format.
Static helpers for converting alternate architecture names.
static LLVM_ABI ArchType getArchTypeForLLVMName (StringRef Str)
The canonical type for the given LLVM architecture name (e.g., "x86").
Normalization
enum class CanonicalForm { ANY = 0 , THREE_IDENT = 3 , FOUR_IDENT = 4 , FIVE_IDENT = 5 }
Canonical form. More...
std::string normalize (CanonicalForm Form=CanonicalForm::ANY) const
Return the normalized form of this triple's string.
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 the Triple class understands if nothing better can reasonably be done).
Convenience Predicates
unsigned getArchPointerBitWidth () const
Returns the pointer width of this architecture.
LLVM_ABI unsigned getTrampolineSize () const
Returns the trampoline size in bytes for this configuration.
LLVM_ABI bool isArch64Bit () const
Test whether the architecture is 64-bit.
LLVM_ABI bool isArch32Bit () const
Test whether the architecture is 32-bit.
LLVM_ABI bool isArch16Bit () const
Test whether the architecture is 16-bit.
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 isOSVersionGE (unsigned Major, unsigned Minor=0, unsigned Micro=0) const
bool isOSVersionLT (const Triple &Other) const
bool isOSVersionGE (const Triple &Other) const
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 numbering schemes used by the "darwin" triples.
bool isMacOSXVersionGE (unsigned Major, unsigned Minor=0, unsigned Micro=0) const
bool isMacOSX () const
Is this a Mac OS X triple.
bool isiOS () const
Is this an iOS triple.
bool isTvOS () const
Is this an Apple tvOS triple.
bool isWatchOS () const
Is this an Apple watchOS triple.
bool isWatchABI () const
bool isXROS () const
Is this an Apple XROS triple.
bool isBridgeOS () const
Is this an Apple BridgeOS triple.
bool isDriverKit () const
Is this an Apple DriverKit triple.
bool isOSzOS () const
bool isAppleMachO () const
Is this an Apple MachO triple.
bool isOSDarwin () const
Is this a "Darwin" OS (macOS, iOS, tvOS, watchOS, DriverKit, XROS, or bridgeOS).
bool isSimulatorEnvironment () const
bool isMacCatalystEnvironment () const
bool isTargetMachineMac () const
Returns true for targets that run on a macOS machine.
bool isOSNetBSD () const
bool isOSOpenBSD () const
bool isOSFreeBSD () const
bool isOSFuchsia () const
bool isOSDragonFly () const
bool isOSSolaris () const
bool isOSIAMCU () const
bool isOSUnknown () const
bool isGNUEnvironment () const
bool isOSHaiku () const
Tests whether the OS is Haiku.
bool isUEFI () const
Tests whether the OS is UEFI.
bool isOSWindows () const
Tests whether the OS is Windows.
bool isKnownWindowsMSVCEnvironment () const
Checks if the environment is MSVC.
bool isWindowsMSVCEnvironment () const
Checks if the environment could be MSVC.
bool isWindowsArm64EC () const
bool isWindowsCoreCLREnvironment () const
bool isWindowsItaniumEnvironment () const
bool isWindowsCygwinEnvironment () const
bool isWindowsGNUEnvironment () const
bool isOSCygMing () const
Tests for either Cygwin or MinGW OS.
bool isOSMSVCRT () const
Is this a "Windows" OS targeting a "MSVCRT.dll" environment.
bool isOSLinux () const
Tests whether the OS is Linux.
bool isOSKFreeBSD () const
Tests whether the OS is kFreeBSD.
bool isOSHurd () const
Tests whether the OS is Hurd.
bool isOSWASI () const
Tests whether the OS is WASI.
bool isOSEmscripten () const
Tests whether the OS is Emscripten.
bool isOSGlibc () const
Tests whether the OS uses glibc.
bool isOSAIX () const
Tests whether the OS is AIX.
bool isOSSerenity () const
bool isOSBinFormatELF () const
Tests whether the OS uses the ELF binary format.
bool isOSBinFormatCOFF () const
Tests whether the OS uses the COFF binary format.
bool isOSBinFormatGOFF () const
Tests whether the OS uses the GOFF binary format.
bool isOSBinFormatMachO () const
Tests whether the environment is MachO.
bool isOSBinFormatWasm () const
Tests whether the OS uses the Wasm binary format.
bool isOSBinFormatXCOFF () const
Tests whether the OS uses the XCOFF binary format.
bool isOSBinFormatDXContainer () const
Tests whether the OS uses the DXContainer binary format.
bool isWALI () const
Tests whether the target uses WALI Wasm.
bool isPS4 () const
Tests whether the target is the PS4 platform.
bool isPS5 () const
Tests whether the target is the PS5 platform.
bool isPS () const
Tests whether the target is the PS4 or PS5 platform.
bool isAndroid () const
Tests whether the target is Android.
bool isAndroidVersionLT (unsigned Major) const
bool isMusl () const
Tests whether the environment is musl-libc.
bool isOHOSFamily () const
Tests whether the target is OHOS LiteOS default enviroment is also OHOS, but omited on triple.
bool isOpenHOS () const
bool isOSLiteOS () const
bool isDXIL () const
Tests whether the target is DXIL.
bool isShaderModelOS () const
bool isVulkanOS () const
bool isOSManagarm () const
bool isShaderStageEnvironment () const
bool isSPIR () const
Tests whether the target is SPIR (32- or 64-bit).
bool isSPIRV () const
Tests whether the target is SPIR-V (32/64-bit/Logical).
bool isSPIROrSPIRV () const
bool isSPIRVLogical () const
Tests whether the target is SPIR-V Logical.
bool isNVPTX () const
Tests whether the target is NVPTX (32- or 64-bit).
bool isAMDGCN () const
Tests whether the target is AMDGCN.
bool isAMDGPU () const
bool isThumb () const
Tests whether the target is Thumb (little and big endian).
bool isARM () const
Tests whether the target is ARM (little and big endian).
bool isTargetEHABICompatible () const
Tests whether the target supports the EHABI exception handling standard.
bool isTargetAEABI () const
bool isTargetGNUAEABI () const
bool isTargetMuslAEABI () const
bool isArmT32 () const
Tests whether the target is T32.
bool isArmMClass () const
Tests whether the target is an M-class.
bool isAArch64 () const
Tests whether the target is AArch64 (little and big endian).
bool isAArch64 (int PointerWidth) const
Tests whether the target is AArch64 and pointers are the size specified by PointerWidth.
bool isLoongArch32 () const
Tests whether the target is 32-bit LoongArch.
bool isLoongArch64 () const
Tests whether the target is 64-bit LoongArch.
bool isLoongArch () const
Tests whether the target is LoongArch (32- and 64-bit).
bool isMIPS32 () const
Tests whether the target is MIPS 32-bit (little and big endian).
bool isMIPS64 () const
Tests whether the target is MIPS 64-bit (little and big endian).
bool isMIPS () const
Tests whether the target is MIPS (little and big endian, 32- or 64-bit).
bool isPPC () const
Tests whether the target is PowerPC (32- or 64-bit LE or BE).
bool isPPC32 () const
Tests whether the target is 32-bit PowerPC (little and big endian).
bool isPPC64 () const
Tests whether the target is 64-bit PowerPC (little and big endian).
bool isPPC64ELFv2ABI () const
Tests whether the target 64-bit PowerPC big endian ABI is ELFv2.
bool isPPC32SecurePlt () const
Tests whether the target 32-bit PowerPC uses Secure PLT.
bool isRISCV32 () const
Tests whether the target is 32-bit RISC-V.
bool isRISCV64 () const
Tests whether the target is 64-bit RISC-V.
bool isRISCV () const
Tests whether the target is RISC-V (32- and 64-bit).
bool isSPARC32 () const
Tests whether the target is 32-bit SPARC (little and big endian).
bool isSPARC64 () const
Tests whether the target is 64-bit SPARC (big endian).
bool isSPARC () const
Tests whether the target is SPARC.
bool isSystemZ () const
Tests whether the target is SystemZ.
bool isX86 () const
Tests whether the target is x86 (32- or 64-bit).
bool isX86_32 () const
Tests whether the target is x86 (32-bit).
bool isX86_64 () const
Tests whether the target is x86 (64-bit).
bool isVE () const
Tests whether the target is VE.
bool isWasm () const
Tests whether the target is wasm (32- and 64-bit).
bool isCSKY () const
bool isArm64e () const
Tests whether the target is the Apple "arm64e" AArch64 subarch.
bool isABIN32 () const
bool isX32 () const
Tests whether the target is X32.
bool isBPF () const
Tests whether the target is eBPF.
bool isTime64ABI () const
Tests if the target forces 64-bit time_t on a 32-bit architecture.
bool isHardFloatABI () const
Tests if the target forces hardfloat.
bool supportsCOMDAT () const
Tests whether the target supports comdat.
bool hasDefaultEmulatedTLS () const
Tests whether the target uses emulated TLS as default.
bool hasDefaultTLSDESC () const
True if the target uses TLSDESC by default.
bool hasDefaultDataSections () const
Tests whether the target uses -data-sections as default.
bool hasDLLImportExport () const
Tests if the environment supports dllimport/export annotations.
static LLVM_ABI unsigned getArchPointerBitWidth (llvm::Triple::ArchType Arch)
Returns the pointer width of this architecture.

Triple - Helper class for working with autoconf configuration names.

For historical reasons, we also call these 'triples' (they used to contain exactly three fields).

Configuration names are strings in the canonical form: ARCHITECTURE-VENDOR-OPERATING_SYSTEM or ARCHITECTURE-VENDOR-OPERATING_SYSTEM-ENVIRONMENT

This class is used for clients which want to support arbitrary configuration names, but also want to implement certain special behavior for particular configurations. This class isolates the mapping from the components of the configuration name to well known IDs.

At its core the Triple class is designed to be a wrapper for a triple string; the constructor does not change or normalize the triple string. Clients that need to handle the non-canonical triples that users often specify should use the normalize method.

See autoconf/config.guess for a glimpse into what configuration names look like in practice.

Definition at line 47 of file Triple.h.

ArchType

Enumerator
UnknownArch
arm
armeb
aarch64
aarch64_be
aarch64_32
arc
avr
bpfel
bpfeb
csky
dxil
hexagon
loongarch32
loongarch64
m68k
mips
mipsel
mips64
mips64el
msp430
ppc
ppcle
ppc64
ppc64le
r600
amdgcn
riscv32
riscv64
riscv32be
riscv64be
sparc
sparcv9
sparcel
systemz
tce
tcele
thumb
thumbeb
x86
x86_64
xcore
xtensa
nvptx
nvptx64
amdil
amdil64
hsail
hsail64
spir
spir64
spirv
spirv32
spirv64
kalimba
shave
lanai
wasm32
wasm64
renderscript32
renderscript64
ve
LastArchType

Definition at line 49 of file Triple.h.

CanonicalForm

Canonical form.

Enumerator
ANY
THREE_IDENT
FOUR_IDENT
FIVE_IDENT

Definition at line 388 of file Triple.h.

EnvironmentType

Enumerator
UnknownEnvironment
GNU
GNUT64
GNUABIN32
GNUABI64
GNUEABI
GNUEABIT64
GNUEABIHF
GNUEABIHFT64
GNUF32
GNUF64
GNUSF
GNUX32
GNUILP32
CODE16
EABI
EABIHF
Android
Musl
MuslABIN32
MuslABI64
MuslEABI
MuslEABIHF
MuslF32
MuslSF
MuslX32
MuslWALI
LLVM
MSVC
Itanium
Cygnus
CoreCLR
Simulator
MacABI
Pixel
Vertex
Geometry
Hull
Domain
Compute
Library
RayGeneration
Intersection
AnyHit
ClosestHit
Miss
Callable
Mesh
Amplification
RootSignature
OpenCL
OpenHOS
Mlibc
PAuthTest
MTIA
LastEnvironmentType

Definition at line 253 of file Triple.h.

ObjectFormatType

Enumerator
UnknownObjectFormat
COFF
DXContainer
ELF
GOFF
MachO
SPIRV
Wasm
XCOFF

Definition at line 319 of file Triple.h.

OSType

Enumerator
UnknownOS
Darwin
DragonFly
FreeBSD
Fuchsia
IOS
KFreeBSD
Linux
Lv2
MacOSX
Managarm
NetBSD
OpenBSD
Solaris
UEFI
Win32
ZOS
Haiku
RTEMS
AIX
CUDA
NVCL
AMDHSA
PS4
PS5
ELFIAMCU
TvOS
WatchOS
BridgeOS
DriverKit
XROS
Mesa3D
AMDPAL
HermitCore
Hurd
WASI
Emscripten
ShaderModel
LiteOS
Serenity
Vulkan
CheriotRTOS
LastOSType

Definition at line 207 of file Triple.h.

SubArchType

Enumerator
NoSubArch
ARMSubArch_v9_7a
ARMSubArch_v9_6a
ARMSubArch_v9_5a
ARMSubArch_v9_4a
ARMSubArch_v9_3a
ARMSubArch_v9_2a
ARMSubArch_v9_1a
ARMSubArch_v9
ARMSubArch_v8_9a
ARMSubArch_v8_8a
ARMSubArch_v8_7a
ARMSubArch_v8_6a
ARMSubArch_v8_5a
ARMSubArch_v8_4a
ARMSubArch_v8_3a
ARMSubArch_v8_2a
ARMSubArch_v8_1a
ARMSubArch_v8
ARMSubArch_v8r
ARMSubArch_v8m_baseline
ARMSubArch_v8m_mainline
ARMSubArch_v8_1m_mainline
ARMSubArch_v7
ARMSubArch_v7em
ARMSubArch_v7m
ARMSubArch_v7s
ARMSubArch_v7k
ARMSubArch_v7ve
ARMSubArch_v6
ARMSubArch_v6m
ARMSubArch_v6k
ARMSubArch_v6t2
ARMSubArch_v5
ARMSubArch_v5te
ARMSubArch_v4t
AArch64SubArch_arm64e
AArch64SubArch_arm64ec
KalimbaSubArch_v3
KalimbaSubArch_v4
KalimbaSubArch_v5
MipsSubArch_r6
PPCSubArch_spe
SPIRVSubArch_v10
SPIRVSubArch_v11
SPIRVSubArch_v12
SPIRVSubArch_v13
SPIRVSubArch_v14
SPIRVSubArch_v15
SPIRVSubArch_v16
DXILSubArch_v1_0
DXILSubArch_v1_1
DXILSubArch_v1_2
DXILSubArch_v1_3
DXILSubArch_v1_4
DXILSubArch_v1_5
DXILSubArch_v1_6
DXILSubArch_v1_7
DXILSubArch_v1_8
DXILSubArch_v1_9
LatestDXILSubArch

Definition at line 115 of file Triple.h.

VendorType

Enumerator
UnknownVendor
Apple
PC
SCEI
Freescale
IBM
ImaginationTechnologies
MipsTechnologies
NVIDIA
CSR
AMD
Mesa
SUSE
OpenEmbedded
Intel
Meta
LastVendorType

Definition at line 187 of file Triple.h.

Triple() [1/8]

llvm::Triple::Triple ( ) default

Default constructor is the same as an empty string and leaves all triple fields unknown.

References LLVM_ABI.

Referenced by get32BitArchVariant(), get64BitArchVariant(), getBigEndianArchVariant(), getLittleEndianArchVariant(), isCompatibleWith(), isOSVersionGE(), isOSVersionLT(), merge(), operator!=(), operator==(), setTriple(), Triple(), Triple(), Triple(), Triple(), and Triple().

Triple() [2/8]

Triple::Triple ( std::string && Str) explicit

Construct a triple from the string representation provided.

This stores the string representation and parses the various pieces into enum members.

Definition at line 1055 of file Triple.cpp.

References llvm::StringSwitch< T, R >::Cases(), llvm::Default, getDefaultFormat(), GNU, GNUABI64, GNUABIN32, llvm::move(), parseArch(), parseEnvironment(), parseFormat(), parseOS(), parseSubArch(), parseVendor(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::StringRef::split(), llvm::StringSwitch< T, R >::StartsWith(), UnknownEnvironment, and UnknownObjectFormat.

Triple() [3/8]

llvm::Triple::Triple ( StringRef Str) inlineexplicit

Triple() [4/8]

llvm::Triple::Triple ( const char * Str) inlineexplicit

Triple() [5/8]

llvm::Triple::Triple ( const std::string & Str) inlineexplicit

Triple() [6/8]

Triple() [7/8]

Triple() [8/8]

Construct a triple from string representations of the architecture, vendor, OS, and environment.

This joins each argument into a canonical string representation and parses them into enum members.

Definition at line 1109 of file Triple.cpp.

References getDefaultFormat(), parseArch(), parseEnvironment(), parseFormat(), parseOS(), parseSubArch(), parseVendor(), str(), and UnknownObjectFormat.

computeDataLayout()

std::string Triple::computeDataLayout ( StringRef ABIName = "" ) const

Compute the LLVM IR data layout string based on the triple.

Some targets customize the layout based on the ABIName string.

Definition at line 530 of file TargetDataLayout.cpp.

References aarch64, aarch64_32, aarch64_be, amdgcn, amdil, amdil64, arc, arm, armeb, avr, bpfeb, bpfel, computeAArch64DataLayout(), computeAMDDataLayout(), computeARMDataLayout(), computeBPFDataLayout(), computeCSKYDataLayout(), computeLanaiDataLayout(), computeLoongArchDataLayout(), computeM68kDataLayout(), computeMipsDataLayout(), computeNVPTXDataLayout(), computePowerDataLayout(), computeRISCVDataLayout(), computeSparcDataLayout(), computeSPIRVDataLayout(), computeSystemZDataLayout(), computeVEDataLayout(), computeWebAssemblyDataLayout(), computeX86DataLayout(), csky, dxil, getArch(), hexagon, hsail, hsail64, kalimba, lanai, llvm_unreachable, loongarch32, loongarch64, m68k, mips, mips64, mips64el, mipsel, msp430, nvptx, nvptx64, ppc, ppc64, ppc64le, ppcle, r600, renderscript32, renderscript64, riscv32, riscv32be, riscv64, riscv64be, shave, sparc, sparcel, sparcv9, spir, spir64, spirv, spirv32, spirv64, systemz, tce, tcele, thumb, thumbeb, UnknownArch, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

empty()

bool llvm::Triple::empty ( ) const inline

get32BitArchVariant()

Triple Triple::get32BitArchVariant ( ) const

Form a triple with a 32-bit variant of the current architecture.

This can be used to move across "families" of architectures where useful.

Returns

A new triple with a 32-bit architecture or an unknown architecture if no such variant can be found.

Definition at line 1803 of file Triple.cpp.

References aarch64, aarch64_32, aarch64_be, amdgcn, amdil, amdil64, arc, arm, armeb, avr, bpfeb, bpfel, csky, dxil, getArch(), getSubArch(), hexagon, hsail, hsail64, kalimba, lanai, loongarch32, loongarch64, m68k, mips, mips64, mips64el, mipsel, msp430, nvptx, nvptx64, ppc, ppc64, ppc64le, ppcle, r600, renderscript32, renderscript64, riscv32, riscv32be, riscv64, riscv64be, shave, sparc, sparcel, sparcv9, spir, spir64, spirv, spirv32, spirv64, systemz, T, tce, tcele, thumb, thumbeb, Triple(), UnknownArch, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

Referenced by llvm::sys::getProcessTriple().

get64BitArchVariant()

Triple Triple::get64BitArchVariant ( ) const

Form a triple with a 64-bit variant of the current architecture.

This can be used to move across "families" of architectures where useful.

Returns

A new triple with a 64-bit architecture or an unknown architecture if no such variant can be found.

Definition at line 1886 of file Triple.cpp.

References aarch64, aarch64_32, aarch64_be, amdgcn, amdil, amdil64, arc, arm, armeb, avr, bpfeb, bpfel, csky, dxil, getArch(), getSubArch(), hexagon, hsail, hsail64, kalimba, lanai, loongarch32, loongarch64, m68k, mips, mips64, mips64el, mipsel, msp430, nvptx, nvptx64, ppc, ppc64, ppc64le, ppcle, r600, renderscript32, renderscript64, riscv32, riscv32be, riscv64, riscv64be, shave, sparc, sparcel, sparcv9, spir, spir64, spirv, spirv32, spirv64, systemz, T, tce, tcele, thumb, thumbeb, Triple(), UnknownArch, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

Referenced by llvm::sys::getProcessTriple().

getArch()

ArchType llvm::Triple::getArch ( ) const inline

Get the parsed architecture type of this triple.

Definition at line 413 of file Triple.h.

Referenced by llvm::TargetLibraryInfoImpl::addVectorizableFunctionsFromVecLib(), adjustInlineAsm(), llvm::ARMELFMCAsmInfo::ARMELFMCAsmInfo(), llvm::ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin(), computeDataLayout(), createAArch64MCAsmInfo(), createPPCMCAsmInfo(), CreateVarArgHelper(), emplace(), llvm::X86_MC::X86MCInstrAnalysis::findPltEntries(), get32BitArchVariant(), get64BitArchVariant(), getArchPointerBitWidth(), getBigEndianArchVariant(), getCOFFSectionFlags(), getDefaultExceptionHandling(), llvm::SubtargetFeatures::getDefaultSubtargetFeatures(), getDXILVersion(), getiOSVersion(), getLittleEndianArchVariant(), llvm::AMDGPUMCAsmInfo::getMaxInstLength(), llvm::AMDGPU::getMCReg(), getMinimumSupportedOSVersion(), llvm::memtag::getPC(), llvm::object::ELFObjectFileBase::getPltEntries(), getShadowMapping(), llvm::getSubDirectoryPath(), llvm::lto::getThinLTODefaultCPU(), getTrampolineSize(), getVulkanVersion(), llvm::TargetLoweringObjectFileELF::Initialize(), isAArch64(), isAArch64(), isAlignmentPreservedForAddrCast(), isAMDGCN(), isAMDGPU(), isArch16Bit(), isArch32Bit(), isArch64Bit(), llvm::orc::ObjectFileLoader::isArchitectureCompatible(), isARM(), isArm64e(), isBPF(), isCompatibleWith(), isCSKY(), isDXIL(), isLittleEndian(), isLoongArch32(), isLoongArch64(), isMIPS32(), isMIPS64(), isNVPTX(), isPPC(), isPPC32(), isPPC32SecurePlt(), isPPC64(), isPPC64ELFv2ABI(), isPS4(), isPS5(), isRISCV32(), isRISCV64(), isSPARC32(), isSPARC64(), isSPIR(), isSPIRV(), isSPIRVLogical(), isSystemZ(), isThumb(), isVE(), isWALI(), isWasm(), isWindowsArm64EC(), isX86(), isX86_32(), isX86_64(), llvm::jitlink::LinkGraph::LinkGraph(), llvm::NVPTXMCAsmInfo::NVPTXMCAsmInfo(), llvm::omp::OMPContext::OMPContext(), llvm::ifs::parseTriple(), runImpl(), llvm::FastISel::selectXRayCustomEvent(), llvm::FastISel::selectXRayTypedEvent(), llvm::setGlobalVariableLargeSection(), llvm::BasicTTIImplBase< BasicTTIImpl >::shouldBuildRelLookupTables(), and llvm::SparcELFMCAsmInfo::SparcELFMCAsmInfo().

getArchName() [1/2]

getArchName() [2/2]

Get the architecture name based on Kind and SubArch.

Definition at line 96 of file Triple.cpp.

References aarch64, AArch64SubArch_arm64e, AArch64SubArch_arm64ec, dxil, DXILSubArch_v1_0, DXILSubArch_v1_1, DXILSubArch_v1_2, DXILSubArch_v1_3, DXILSubArch_v1_4, DXILSubArch_v1_5, DXILSubArch_v1_6, DXILSubArch_v1_7, DXILSubArch_v1_8, DXILSubArch_v1_9, getArchTypeName(), mips, mips64, mips64el, mipsel, MipsSubArch_r6, NoSubArch, spirv, SPIRVSubArch_v10, SPIRVSubArch_v11, SPIRVSubArch_v12, SPIRVSubArch_v13, SPIRVSubArch_v14, SPIRVSubArch_v15, and SPIRVSubArch_v16.

getArchPointerBitWidth() [1/2]

unsigned llvm::Triple::getArchPointerBitWidth ( ) const inline

getArchPointerBitWidth() [2/2]

unsigned Triple::getArchPointerBitWidth ( llvm::Triple::ArchType Arch) static

Returns the pointer width of this architecture.

Definition at line 1698 of file Triple.cpp.

References aarch64, aarch64_32, aarch64_be, amdgcn, amdil, amdil64, arc, arm, armeb, avr, bpfeb, bpfel, csky, dxil, hexagon, hsail, hsail64, kalimba, lanai, llvm_unreachable, loongarch32, loongarch64, m68k, mips, mips64, mips64el, mipsel, msp430, nvptx, nvptx64, ppc, ppc64, ppc64le, ppcle, r600, renderscript32, renderscript64, riscv32, riscv32be, riscv64, riscv64be, shave, sparc, sparcel, sparcv9, spir, spir64, spirv, spirv32, spirv64, systemz, tce, tcele, thumb, thumbeb, UnknownArch, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

Referenced by llvm::jitlink::LinkGraph::LinkGraph().

getArchTypeForLLVMName()

Triple::ArchType Triple::getArchTypeForLLVMName ( StringRef Str) static

The canonical type for the given LLVM architecture name (e.g., "x86").

Definition at line 444 of file Triple.cpp.

References aarch64, aarch64_32, aarch64_be, amdgcn, amdil, amdil64, arc, arm, armeb, avr, llvm::StringSwitch< T, R >::Case(), csky, llvm::StringSwitch< T, R >::Default(), dxil, hexagon, hsail, hsail64, kalimba, lanai, loongarch32, loongarch64, m68k, mips, mips64, mips64el, mipsel, msp430, nvptx, nvptx64, parseBPFArch(), ppc, ppc64, ppc64le, ppcle, r600, renderscript32, renderscript64, riscv32, riscv32be, riscv64, riscv64be, shave, sparc, sparcel, sparcv9, spir, spir64, spirv, spirv32, spirv64, llvm::StringSwitch< T, R >::StartsWith(), systemz, tce, tcele, thumb, thumbeb, UnknownArch, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

Referenced by llvm::TargetRegistry::lookupTarget(), and llvm::EngineBuilder::selectTarget().

getArchTypeName()

StringRef Triple::getArchTypeName ( ArchType Kind) static

Get the canonical name for the Kind architecture.

Definition at line 24 of file Triple.cpp.

References aarch64, aarch64_32, aarch64_be, amdgcn, amdil, amdil64, arc, arm, armeb, avr, bpfeb, bpfel, csky, dxil, hexagon, hsail, hsail64, kalimba, lanai, llvm_unreachable, loongarch32, loongarch64, m68k, mips, mips64, mips64el, mipsel, msp430, nvptx, nvptx64, ppc, ppc64, ppc64le, ppcle, r600, renderscript32, renderscript64, riscv32, riscv32be, riscv64, riscv64be, shave, sparc, sparcel, sparcv9, spir, spir64, spirv, spirv32, spirv64, systemz, tce, tcele, thumb, thumbeb, UnknownArch, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

Referenced by llvm::orc::checkMachORelocatableObject(), getArchName(), and llvm::dwarf::parseRows().

getArchTypePrefix()

StringRef Triple::getArchTypePrefix ( ArchType Kind) static

Get the "prefix" canonical name for the Kind architecture.

This is the prefix used by the architecture specific builtins, and is suitable for passing to

See also

Intrinsic::getIntrinsicForClangBuiltin().

Returns

- The architecture prefix, or 0 if none is defined.

Definition at line 173 of file Triple.cpp.

References aarch64, aarch64_32, aarch64_be, amdgcn, amdil, amdil64, arc, arm, armeb, avr, bpfeb, bpfel, csky, dxil, hexagon, hsail, hsail64, kalimba, lanai, loongarch32, loongarch64, m68k, mips, mips64, mips64el, mipsel, nvptx, nvptx64, ppc, ppc64, ppc64le, ppcle, r600, riscv32, riscv32be, riscv64, riscv64be, shave, sparc, sparcel, sparcv9, spir, spir64, spirv, spirv32, spirv64, systemz, thumb, thumbeb, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

getBigEndianArchVariant()

Triple Triple::getBigEndianArchVariant ( ) const

Form a triple with a big endian variant of the current architecture.

This can be used to move across "families" of architectures where useful.

Returns

A new triple with a big endian architecture or an unknown architecture if no such variant can be found.

Definition at line 1969 of file Triple.cpp.

References aarch64, aarch64_be, amdgcn, amdil, amdil64, arm, avr, bpfeb, bpfel, csky, dxil, getArch(), getSubArch(), hexagon, hsail, hsail64, isLittleEndian(), kalimba, llvm_unreachable, loongarch32, loongarch64, mips, mips64, mips64el, mipsel, msp430, nvptx, nvptx64, ppc, ppc64, ppc64le, ppcle, r600, renderscript32, renderscript64, riscv32, riscv32be, riscv64, riscv64be, shave, sparc, sparcel, spir, spir64, spirv, spirv32, spirv64, T, tce, tcele, thumb, Triple(), UnknownArch, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

getCanonicalVersionForOS()

getDefaultExceptionHandling()

Definition at line 2314 of file Triple.cpp.

References llvm::AIX, arc, llvm::ARM, csky, llvm::DwarfCFI, getArch(), getOS(), hexagon, isAArch64(), isAMDGPU(), isARM(), isBPF(), isLoongArch(), isMIPS(), isNVPTX(), isOSBinFormatCOFF(), isOSBinFormatELF(), isOSBinFormatGOFF(), isOSBinFormatXCOFF(), isOSCygMing(), isOSDarwin(), isPPC(), isRISCV(), isSPARC(), isSPIROrSPIRV(), isThumb(), isWasm(), isWatchABI(), isWindowsItaniumEnvironment(), isX86(), lanai, m68k, msp430, NetBSD, llvm::None, llvm::SjLj, systemz, llvm::WinEH, x86, xcore, xtensa, and llvm::ZOS.

getDriverKitVersion()

getDXILVersion()

Parse the DXIL version number from the OSVersion and DXIL version (SubArch).

This should only be called with DXIL triples.

Definition at line 1628 of file Triple.cpp.

References dxil, getArch(), getArchName(), getDXILArchNameFromShaderModel(), getOS(), getOSName(), getSubArch(), llvm_unreachable, NoSubArch, parseVersionFromName(), and ShaderModel.

getEnvironment()

EnvironmentType llvm::Triple::getEnvironment ( ) const inline

Get the parsed environment type of this triple.

Definition at line 430 of file Triple.h.

Referenced by llvm::createAArch64beAsmBackend(), llvm::createAArch64leAsmBackend(), emplace(), llvm::ARM::getARMCPUForArch(), getEnvironmentVersionString(), isAArch64(), isABIN32(), isAndroid(), llvm::orc::ObjectFileLoader::isArchitectureCompatible(), isCompatibleWith(), isGNUEnvironment(), isHardFloatABI(), isKnownWindowsMSVCEnvironment(), isMacCatalystEnvironment(), isMusl(), isOpenHOS(), isShaderStageEnvironment(), isSimulatorEnvironment(), isTargetAEABI(), isTargetEHABICompatible(), isTargetGNUAEABI(), isTargetMuslAEABI(), isTime64ABI(), isWALI(), isWindowsCoreCLREnvironment(), isWindowsCygwinEnvironment(), isWindowsGNUEnvironment(), isWindowsItaniumEnvironment(), isWindowsMSVCEnvironment(), and isX32().

getEnvironmentName()

StringRef Triple::getEnvironmentName ( ) const

getEnvironmentTypeName()

StringRef Triple::getEnvironmentTypeName ( EnvironmentType Kind) static

Get the canonical name for the Kind environment.

Definition at line 341 of file Triple.cpp.

References Amplification, Android, AnyHit, Callable, ClosestHit, CODE16, Compute, CoreCLR, Cygnus, Domain, EABI, EABIHF, Geometry, GNU, GNUABI64, GNUABIN32, GNUEABI, GNUEABIHF, GNUEABIHFT64, GNUEABIT64, GNUF32, GNUF64, GNUILP32, GNUSF, GNUT64, GNUX32, Hull, Intersection, Itanium, Library, LLVM, llvm_unreachable, MacABI, Mesh, Miss, Mlibc, MSVC, MTIA, Musl, MuslABI64, MuslABIN32, MuslEABI, MuslEABIHF, MuslF32, MuslSF, MuslWALI, MuslX32, OpenCL, OpenHOS, PAuthTest, Pixel, RayGeneration, RootSignature, Simulator, UnknownEnvironment, and Vertex.

Referenced by getEnvironmentVersionString(), llvm::dxil::ModuleMetadataInfo::print(), setEnvironment(), setObjectFormat(), and translateGlobalMetadata().

getEnvironmentVersion()

getEnvironmentVersionString()

StringRef Triple::getEnvironmentVersionString ( ) const

Get the version component of the environment component as a single string (the version after the environment).

For example, "fooos1.2.3" would return "1.2.3".

Definition at line 1432 of file Triple.cpp.

References llvm::StringRef::consume_back(), llvm::StringRef::consume_front(), llvm::StringRef::contains(), getEnvironment(), getEnvironmentName(), getEnvironmentTypeName(), getObjectFormat(), getObjectFormatTypeName(), str(), and UnknownObjectFormat.

Referenced by getEnvironmentVersion().

getiOSVersion()

Parse the version number as with getOSVersion.

This should only be called with IOS or generic triples.

Definition at line 1517 of file Triple.cpp.

References aarch64, BridgeOS, Darwin, DriverKit, getArch(), getCanonicalVersionForOS(), getOS(), getOSVersion(), IOS, isValidVersionForOS(), llvm_unreachable, MacOSX, TvOS, llvm::Version, WatchOS, and XROS.

getLittleEndianArchVariant()

Triple Triple::getLittleEndianArchVariant ( ) const

Form a triple with a little endian variant of the current architecture.

This can be used to move across "families" of architectures where useful.

Returns

A new triple with a little endian architecture or an unknown architecture if no such variant can be found.

Definition at line 2039 of file Triple.cpp.

References aarch64, aarch64_be, armeb, bpfeb, bpfel, getArch(), getSubArch(), isLittleEndian(), lanai, llvm_unreachable, m68k, mips, mips64, mips64el, mipsel, ppc, ppc64, ppc64le, ppcle, riscv32, riscv32be, riscv64, riscv64be, sparc, sparcel, sparcv9, systemz, T, tce, tcele, thumbeb, Triple(), and UnknownArch.

getMacOSXVersion()

Parse the version number as with getOSVersion and then translate generic "darwin" versions to the corresponding OS X versions.

This may also be called with IOS triples but the OS X version number is just set to a constant 10.4.0 in that case. Returns true if successful.

Definition at line 1469 of file Triple.cpp.

References Darwin, DriverKit, getOS(), getOSVersion(), IOS, llvm_unreachable, MacOSX, TvOS, llvm::Version, WatchOS, and XROS.

getMinimumSupportedOSVersion()

Some platforms have different minimum supported OS versions that varies by the architecture specified in the triple.

This function returns the minimum supported OS version for this triple if one an exists, or an invalid version tuple if this triple doesn't have one.

Definition at line 2195 of file Triple.cpp.

References aarch64, aarch64_32, Apple, assert(), DriverKit, getArch(), getOS(), getVendor(), IOS, isArm64e(), isMacCatalystEnvironment(), isSimulatorEnvironment(), MacOSX, TvOS, and WatchOS.

Referenced by llvm::MachO::mapToSupportedOSVersion().

getObjectFormat()

ObjectFormatType llvm::Triple::getObjectFormat ( ) const inline

Get the object format for this triple.

Definition at line 439 of file Triple.h.

Referenced by createARMAsmBackend(), getEnvironmentVersionString(), isCompatibleWith(), isOSBinFormatCOFF(), isOSBinFormatDXContainer(), isOSBinFormatELF(), isOSBinFormatGOFF(), isOSBinFormatMachO(), isOSBinFormatWasm(), isOSBinFormatXCOFF(), llvm::MCContext::MCContext(), llvm::orc::GDBJITDebugInfoRegistrationPlugin::modifyPassConfig(), and llvm::setGlobalVariableLargeSection().

getObjectFormatTypeName()

StringRef Triple::getObjectFormatTypeName ( ObjectFormatType ObjectFormat) static

Get the name for the Object format.

Definition at line 414 of file Triple.cpp.

References COFF, DXContainer, ELF, GOFF, llvm_unreachable, MachO, SPIRV, UnknownObjectFormat, Wasm, and XCOFF.

Referenced by llvm::orc::enableDebuggerSupport(), getEnvironmentVersionString(), normalize(), setEnvironment(), and setObjectFormat().

getOS()

OSType llvm::Triple::getOS ( ) const inline

Get the parsed operating system type of this triple.

Definition at line 422 of file Triple.h.

Referenced by llvm::ARMELFMCAsmInfo::ARMELFMCAsmInfo(), llvm::createAArch64beAsmBackend(), llvm::createAArch64leAsmBackend(), createARMAsmBackend(), llvm::createAVRAsmBackend(), llvm::createM68kAsmBackend(), llvm::createSparcAsmBackend(), llvm::createSystemZMCAsmBackend(), llvm::createVEAsmBackend(), llvm::createX86_32AsmBackend(), llvm::createX86_64AsmBackend(), llvm::createXtensaAsmBackend(), llvm::AMDGPUAsmPrinter::doFinalization(), emplace(), llvm::ARM::getARMCPUForArch(), getDefaultExceptionHandling(), getDriverKitVersion(), getDXILVersion(), getiOSVersion(), getMacOSXVersion(), getMinimumSupportedOSVersion(), getOSVersion(), getVulkanVersion(), getWatchOSVersion(), llvm::orc::ObjectFileLoader::isArchitectureCompatible(), isBridgeOS(), isCompatibleWith(), isDriverKit(), llvm::AMDGPU::isHsaAbi(), isiOS(), isMacOSX(), isMacOSXVersionLT(), isOSAIX(), isOSDragonFly(), isOSEmscripten(), isOSFreeBSD(), isOSFuchsia(), isOSGlibc(), isOSHaiku(), isOSHurd(), isOSIAMCU(), isOSKFreeBSD(), isOSLinux(), isOSLiteOS(), isOSManagarm(), isOSNetBSD(), isOSOpenBSD(), isOSSerenity(), isOSSolaris(), isOSUnknown(), isOSWASI(), isOSWindows(), isOSzOS(), isPPC32SecurePlt(), isPPC64ELFv2ABI(), isPS4(), isPS5(), isShaderModelOS(), isTvOS(), isUEFI(), isVulkanOS(), isWatchOS(), isXROS(), llvm::MachO::mapToSupportedOSVersion(), llvm::AMDGPUResourceUsageAnalysis::run(), and llvm::SITargetLowering::shouldUseLDSConstAddress().

getOSAndEnvironmentName()

StringRef Triple::getOSAndEnvironmentName ( ) const

getOSMajorVersion()

unsigned llvm::Triple::getOSMajorVersion ( ) const inline

getOSName()

getOSTypeName()

Get the canonical name for the Kind operating system.

Definition at line 289 of file Triple.cpp.

References AIX, AMDHSA, AMDPAL, BridgeOS, CheriotRTOS, CUDA, Darwin, DragonFly, DriverKit, ELFIAMCU, Emscripten, FreeBSD, Fuchsia, Haiku, HermitCore, Hurd, IOS, KFreeBSD, Linux, LiteOS, llvm_unreachable, Lv2, MacOSX, Managarm, Mesa3D, NetBSD, NVCL, OpenBSD, PS4, PS5, RTEMS, Serenity, ShaderModel, Solaris, TvOS, UEFI, UnknownOS, Vulkan, WASI, WatchOS, Win32, XROS, and ZOS.

Referenced by getOSVersion(), and setOS().

getOSVersion()

Parse the version number from the OS name component of the triple, if present.

For example, "fooos1.2.3" would return (1, 2, 3).

Definition at line 1455 of file Triple.cpp.

References llvm::StringRef::consume_front(), getOS(), getOSName(), getOSTypeName(), MacOSX, parseVersionFromName(), llvm::StringRef::size(), llvm::StringRef::starts_with(), and llvm::StringRef::substr().

Referenced by getDriverKitVersion(), getiOSVersion(), getMacOSXVersion(), getOSMajorVersion(), getVulkanVersion(), getWatchOSVersion(), isOSVersionGE(), isOSVersionLT(), isOSVersionLT(), isPPC32SecurePlt(), isPPC64ELFv2ABI(), and llvm::MachO::mapToSupportedOSVersion().

getSubArch()

SubArchType llvm::Triple::getSubArch ( ) const inline

get the parsed subarchitecture type for this triple.

Definition at line 416 of file Triple.h.

Referenced by get32BitArchVariant(), get64BitArchVariant(), getBigEndianArchVariant(), getDXILVersion(), getLittleEndianArchVariant(), getVulkanVersion(), isArm64e(), isArmMClass(), isArmT32(), isCompatibleWith(), isWatchABI(), isWindowsArm64EC(), and llvm::object::ELFObjectFileBase::setARMSubArch().

getTrampolineSize()

unsigned Triple::getTrampolineSize ( ) const

getTriple()

const std::string & llvm::Triple::getTriple ( ) const inline

getVendor()

VendorType llvm::Triple::getVendor ( ) const inline

getVendorName()

getVendorTypeName()

StringRef Triple::getVendorTypeName ( VendorType Kind) static

Get the canonical name for the Kind vendor.

Definition at line 263 of file Triple.cpp.

References AMD, Apple, CSR, Freescale, IBM, ImaginationTechnologies, Intel, llvm_unreachable, Mesa, Meta, MipsTechnologies, NVIDIA, OpenEmbedded, PC, SCEI, SUSE, and UnknownVendor.

Referenced by setVendor().

getVulkanVersion()

Parse the Vulkan version number from the OSVersion and SPIR-V version (SubArch).

This should only be called with Vulkan SPIR-V triples.

Definition at line 1603 of file Triple.cpp.

References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::contains(), getArch(), getOS(), getOSVersion(), getSubArch(), llvm_unreachable, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup(), NoSubArch, spirv, SPIRVSubArch_v15, SPIRVSubArch_v16, and Vulkan.

getWatchOSVersion()

hasDefaultDataSections()

bool llvm::Triple::hasDefaultDataSections ( ) const inline

hasDefaultEmulatedTLS()

bool llvm::Triple::hasDefaultEmulatedTLS ( ) const inline

hasDefaultTLSDESC()

bool llvm::Triple::hasDefaultTLSDESC ( ) const inline

hasDLLImportExport()

bool llvm::Triple::hasDLLImportExport ( ) const inline

hasEnvironment()

bool llvm::Triple::hasEnvironment ( ) const inline

isAArch64() [1/2]

bool llvm::Triple::isAArch64 ( ) const inline

isAArch64() [2/2]

bool llvm::Triple::isAArch64 ( int PointerWidth) const inline

isABIN32()

bool llvm::Triple::isABIN32 ( ) const inline

isAMDGCN()

bool llvm::Triple::isAMDGCN ( ) const inline

isAMDGPU()

bool llvm::Triple::isAMDGPU ( ) const inline

isAndroid()

bool llvm::Triple::isAndroid ( ) const inline

isAndroidVersionLT()

bool llvm::Triple::isAndroidVersionLT ( unsigned Major) const inline

isAppleMachO()

bool llvm::Triple::isAppleMachO ( ) const inline

isArch16Bit()

bool Triple::isArch16Bit ( ) const

isArch32Bit()

bool Triple::isArch32Bit ( ) const

isArch64Bit()

bool Triple::isArch64Bit ( ) const

Test whether the architecture is 64-bit.

Note that this tests for 64-bit pointer width, and nothing else. Note that we intentionally expose only three predicates, 64-bit, 32-bit, and 16-bit. The inner details of pointer width for particular architectures is not summed up in the triple, and so only a coarse grained predicate system is provided.

Definition at line 1791 of file Triple.cpp.

References getArch(), and getArchPointerBitWidth().

Referenced by llvm::RISCVTargetStreamer::emitNoteGnuPropertySection(), llvm::WebAssembly::getOrCreateFunctionTableSymbol(), llvm::sys::getProcessTriple(), llvm::object::IRObjectFile::is64Bit(), isAndroidVersionLT(), llvm::ifs::parseTriple(), and llvm::BasicTTIImplBase< BasicTTIImpl >::shouldBuildRelLookupTables().

isARM()

bool llvm::Triple::isARM ( ) const inline

isArm64e()

bool llvm::Triple::isArm64e ( ) const inline

isArmMClass()

bool llvm::Triple::isArmMClass ( ) const inline

isArmT32()

bool llvm::Triple::isArmT32 ( ) const inline

Tests whether the target is T32.

Definition at line 987 of file Triple.h.

References ARMSubArch_v4t, ARMSubArch_v5, ARMSubArch_v5te, ARMSubArch_v6, ARMSubArch_v6k, ARMSubArch_v6m, ARMSubArch_v6t2, ARMSubArch_v7k, ARMSubArch_v7s, ARMSubArch_v7ve, ARMSubArch_v8m_baseline, and getSubArch().

isBPF()

bool llvm::Triple::isBPF ( ) const inline

isBridgeOS()

bool llvm::Triple::isBridgeOS ( ) const inline

isCompatibleWith()

Test whether target triples are compatible.

Definition at line 2134 of file Triple.cpp.

References Apple, arm, armeb, getArch(), getEnvironment(), getObjectFormat(), getOS(), getSubArch(), getVendor(), isWindowsGNUEnvironment(), llvm::Other, thumb, thumbeb, and Triple().

isCSKY()

bool llvm::Triple::isCSKY ( ) const inline

isDriverKit()

bool llvm::Triple::isDriverKit ( ) const inline

isDXIL()

bool llvm::Triple::isDXIL ( ) const inline

isGNUEnvironment()

bool llvm::Triple::isGNUEnvironment ( ) const inline

Definition at line 674 of file Triple.h.

References getEnvironment(), GNU, GNUABI64, GNUABIN32, GNUEABI, GNUEABIHF, GNUEABIHFT64, GNUEABIT64, GNUF32, GNUF64, GNUSF, GNUT64, and GNUX32.

isGPU()

bool llvm::Triple::isGPU ( ) const inline

isHardFloatABI()

bool llvm::Triple::isHardFloatABI ( ) const inline

isiOS()

bool llvm::Triple::isiOS ( ) const inline

Is this an iOS triple.

Note: This identifies tvOS as a variant of iOS. If that ever changes, i.e., if the two operating systems diverge or their version numbers get out of sync, that will need to be changed. watchOS has completely different version numbers so it is not included.

Definition at line 591 of file Triple.h.

References getOS(), IOS, and isTvOS().

Referenced by getShadowMapping(), and isOSDarwin().

isKnownWindowsMSVCEnvironment()

bool llvm::Triple::isKnownWindowsMSVCEnvironment ( ) const inline

isLittleEndian()

bool Triple::isLittleEndian ( ) const

Tests whether the target triple is little endian.

Returns

true if the triple is little endian, false otherwise.

Definition at line 2082 of file Triple.cpp.

References aarch64, aarch64_32, amdgcn, amdil, amdil64, arm, avr, bpfel, csky, dxil, getArch(), hexagon, hsail, hsail64, kalimba, loongarch32, loongarch64, mips64el, mipsel, msp430, nvptx, nvptx64, ppc64le, ppcle, r600, renderscript32, renderscript64, riscv32, riscv64, shave, sparcel, spir, spir64, spirv, spirv32, spirv64, tcele, thumb, ve, wasm32, wasm64, x86, x86_64, xcore, and xtensa.

Referenced by getBigEndianArchVariant(), getLittleEndianArchVariant(), lowerMSASplatZExt(), llvm::MipsELFMCAsmInfo::MipsELFMCAsmInfo(), llvm::ifs::parseTriple(), and truncateVecElts().

isLoongArch()

bool llvm::Triple::isLoongArch ( ) const inline

isLoongArch32()

bool llvm::Triple::isLoongArch32 ( ) const inline

isLoongArch64()

bool llvm::Triple::isLoongArch64 ( ) const inline

isMacCatalystEnvironment()

bool llvm::Triple::isMacCatalystEnvironment ( ) const inline

isMacOSX()

bool llvm::Triple::isMacOSX ( ) const inline

isMacOSXVersionGE()

isMacOSXVersionLT()

isMIPS()

bool llvm::Triple::isMIPS ( ) const inline

isMIPS32()

bool llvm::Triple::isMIPS32 ( ) const inline

isMIPS64()

bool llvm::Triple::isMIPS64 ( ) const inline

isMusl()

bool llvm::Triple::isMusl ( ) const inline

Tests whether the environment is musl-libc.

Definition at line 856 of file Triple.h.

References getEnvironment(), isOSLiteOS(), Musl, MuslABI64, MuslABIN32, MuslEABI, MuslEABIHF, MuslF32, MuslSF, MuslWALI, MuslX32, and OpenHOS.

Referenced by isPPC32SecurePlt(), and isPPC64ELFv2ABI().

isNVPTX()

bool llvm::Triple::isNVPTX ( ) const inline

isOHOSFamily()

bool llvm::Triple::isOHOSFamily ( ) const inline

isOpenHOS()

bool llvm::Triple::isOpenHOS ( ) const inline

isOSAIX()

bool llvm::Triple::isOSAIX ( ) const inline

isOSBinFormatCOFF()

bool llvm::Triple::isOSBinFormatCOFF ( ) const inline

Tests whether the OS uses the COFF binary format.

Definition at line 790 of file Triple.h.

References COFF, and getObjectFormat().

Referenced by adjustFixupValue(), llvm::ARMAsmBackend::adjustFixupValue(), llvm::createAArch64leAsmBackend(), createAArch64MCAsmInfo(), llvm::createMipsAsmBackend(), createMipsObjectTargetStreamer(), llvm::createX86_32AsmBackend(), llvm::createX86_64AsmBackend(), llvm::createX86ObjectTargetStreamer(), llvm::offloading::emitOffloadingEntry(), llvm::RISCVTargetLowering::expandIndirectJTBranch(), llvm::TargetLowering::expandIndirectJTBranch(), llvm::X86TargetLowering::expandIndirectJTBranch(), getDefaultExceptionHandling(), llvm::AArch64MCInstLower::GetGlobalValueSymbol(), and llvm::offloading::getOffloadEntryArray().

isOSBinFormatDXContainer()

bool llvm::Triple::isOSBinFormatDXContainer ( ) const inline

isOSBinFormatELF()

bool llvm::Triple::isOSBinFormatELF ( ) const inline

Tests whether the OS uses the ELF binary format.

Definition at line 785 of file Triple.h.

References ELF, and getObjectFormat().

Referenced by llvm::lto::LTO::add(), llvm::ARMAsmBackend::adjustFixupValue(), llvm::createAArch64beAsmBackend(), llvm::createAArch64leAsmBackend(), createAArch64MCAsmInfo(), createARMAsmBackend(), createLoongArchObjectTargetStreamer(), createX86MCAsmInfo(), getDefaultExceptionHandling(), llvm::offloading::getOffloadEntryArray(), hasELFSignedGOTHelper(), isTargetEHABICompatible(), ProcessThinLTOModule(), and runImpl().

isOSBinFormatGOFF()

bool llvm::Triple::isOSBinFormatGOFF ( ) const inline

isOSBinFormatMachO()

bool llvm::Triple::isOSBinFormatMachO ( ) const inline

Tests whether the environment is MachO.

Definition at line 798 of file Triple.h.

References getObjectFormat(), and MachO.

Referenced by llvm::createAArch64leAsmBackend(), createAArch64MCAsmInfo(), createARMMCAsmInfo(), llvm::createX86_32AsmBackend(), llvm::createX86_64AsmBackend(), createX86MCAsmInfo(), isAppleMachO(), llvm::orc::EHFrameRegistrationPlugin::modifyPassConfig(), llvm::orc::SelfExecutorProcessControl::SelfExecutorProcessControl(), llvm::orc::LLJIT::setUpGenericLLVMIRPlatform, and supportsCOMDAT().

isOSBinFormatWasm()

bool llvm::Triple::isOSBinFormatWasm ( ) const inline

isOSBinFormatXCOFF()

bool llvm::Triple::isOSBinFormatXCOFF ( ) const inline

isOSCygMing()

bool llvm::Triple::isOSCygMing ( ) const inline

isOSDarwin()

bool llvm::Triple::isOSDarwin ( ) const inline

Is this a "Darwin" OS (macOS, iOS, tvOS, watchOS, DriverKit, XROS, or bridgeOS).

Definition at line 627 of file Triple.h.

References isBridgeOS(), isDriverKit(), isiOS(), isMacOSX(), isWatchOS(), and isXROS().

Referenced by llvm::ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin(), createARMMCAsmInfo(), llvm::TargetInstrInfo::duplicate(), getDefaultExceptionHandling(), llvm::lto::getThinLTODefaultCPU(), isTargetAEABI(), isTargetGNUAEABI(), isTargetMachineMac(), isTargetMuslAEABI(), llvm::orc::LLJIT::setUpGenericLLVMIRPlatform, llvm::BasicTTIImplBase< BasicTTIImpl >::shouldBuildRelLookupTables(), shouldLowerMemFuncForSize(), shouldLowerMemFuncForSize(), and llvm::TailDuplicator::shouldTailDuplicate().

isOSDragonFly()

bool llvm::Triple::isOSDragonFly ( ) const inline

isOSEmscripten()

bool llvm::Triple::isOSEmscripten ( ) const inline

isOSFreeBSD()

bool llvm::Triple::isOSFreeBSD ( ) const inline

isOSFuchsia()

bool llvm::Triple::isOSFuchsia ( ) const inline

isOSGlibc()

bool llvm::Triple::isOSGlibc ( ) const inline

isOSHaiku()

bool llvm::Triple::isOSHaiku ( ) const inline

isOSHurd()

bool llvm::Triple::isOSHurd ( ) const inline

isOSIAMCU()

bool llvm::Triple::isOSIAMCU ( ) const inline

isOSKFreeBSD()

bool llvm::Triple::isOSKFreeBSD ( ) const inline

isOSLinux()

bool llvm::Triple::isOSLinux ( ) const inline

isOSLiteOS()

bool llvm::Triple::isOSLiteOS ( ) const inline

isOSManagarm()

bool llvm::Triple::isOSManagarm ( ) const inline

isOSMSVCRT()

bool llvm::Triple::isOSMSVCRT ( ) const inline

isOSNetBSD()

bool llvm::Triple::isOSNetBSD ( ) const inline

isOSOpenBSD()

bool llvm::Triple::isOSOpenBSD ( ) const inline

isOSSerenity()

bool llvm::Triple::isOSSerenity ( ) const inline

isOSSolaris()

bool llvm::Triple::isOSSolaris ( ) const inline

isOSUnknown()

bool llvm::Triple::isOSUnknown ( ) const inline

isOSVersionGE() [1/2]

isOSVersionGE() [2/2]

isOSVersionLT() [1/2]

isOSVersionLT() [2/2]

isOSWASI()

bool llvm::Triple::isOSWASI ( ) const inline

isOSWindows()

bool llvm::Triple::isOSWindows ( ) const inline

Tests whether the OS is Windows.

Definition at line 695 of file Triple.h.

References getOS(), and Win32.

Referenced by createARMAsmBackend(), createARMMCAsmInfo(), llvm::createMipsAsmBackend(), llvm::createX86_32AsmBackend(), llvm::createX86_64AsmBackend(), llvm::X86FrameLowering::emitEpilogue(), llvm::X86AsmPrinter::emitKCFITypeId(), llvm::AArch64MCInstLower::GetGlobalValueSymbol(), getShadowMapping(), hasDLLImportExport(), isKnownWindowsMSVCEnvironment(), isTargetAEABI(), isTargetGNUAEABI(), isTargetMuslAEABI(), isWindowsCoreCLREnvironment(), isWindowsCygwinEnvironment(), isWindowsGNUEnvironment(), isWindowsItaniumEnvironment(), isWindowsMSVCEnvironment(), ShouldSignWithBKey(), and llvm::X86MCAsmInfoGNUCOFF::X86MCAsmInfoGNUCOFF().

isOSzOS()

bool llvm::Triple::isOSzOS ( ) const inline

isPPC()

bool llvm::Triple::isPPC ( ) const inline

isPPC32()

bool llvm::Triple::isPPC32 ( ) const inline

isPPC32SecurePlt()

bool llvm::Triple::isPPC32SecurePlt ( ) const inline

Tests whether the target 32-bit PowerPC uses Secure PLT.

Definition at line 1088 of file Triple.h.

References empty(), FreeBSD, getArch(), getOS(), getOSMajorVersion(), getOSVersion(), isMusl(), NetBSD, OpenBSD, ppc, and ppcle.

isPPC64()

bool llvm::Triple::isPPC64 ( ) const inline

isPPC64ELFv2ABI()

bool llvm::Triple::isPPC64ELFv2ABI ( ) const inline

isPS()

bool llvm::Triple::isPS ( ) const inline

isPS4()

bool llvm::Triple::isPS4 ( ) const inline

isPS5()

bool llvm::Triple::isPS5 ( ) const inline

isRISCV()

bool llvm::Triple::isRISCV ( ) const inline

isRISCV32()

bool llvm::Triple::isRISCV32 ( ) const inline

isRISCV64()

bool llvm::Triple::isRISCV64 ( ) const inline

isShaderModelOS()

bool llvm::Triple::isShaderModelOS ( ) const inline

isShaderStageEnvironment()

bool llvm::Triple::isShaderStageEnvironment ( ) const inline

Definition at line 890 of file Triple.h.

References Amplification, AnyHit, Callable, ClosestHit, Compute, Domain, Geometry, getEnvironment(), Hull, Intersection, Library, Mesh, Miss, Pixel, RayGeneration, RootSignature, and Vertex.

isSimulatorEnvironment()

bool llvm::Triple::isSimulatorEnvironment ( ) const inline

isSPARC()

bool llvm::Triple::isSPARC ( ) const inline

isSPARC32()

bool llvm::Triple::isSPARC32 ( ) const inline

isSPARC64()

bool llvm::Triple::isSPARC64 ( ) const inline

isSPIR()

bool llvm::Triple::isSPIR ( ) const inline

isSPIROrSPIRV()

bool llvm::Triple::isSPIROrSPIRV ( ) const inline

isSPIRV()

bool llvm::Triple::isSPIRV ( ) const inline

isSPIRVLogical()

bool llvm::Triple::isSPIRVLogical ( ) const inline

isSystemZ()

bool llvm::Triple::isSystemZ ( ) const inline

isTargetAEABI()

bool llvm::Triple::isTargetAEABI ( ) const inline

isTargetEHABICompatible()

bool llvm::Triple::isTargetEHABICompatible ( ) const inline

Tests whether the target supports the EHABI exception handling standard.

Definition at line 943 of file Triple.h.

References EABI, EABIHF, getEnvironment(), GNUEABI, GNUEABIHF, GNUEABIHFT64, GNUEABIT64, isAndroid(), isARM(), isOSBinFormatELF(), isOSFuchsia(), isOSNetBSD(), isThumb(), MuslEABI, MuslEABIHF, and OpenHOS.

isTargetGNUAEABI()

bool llvm::Triple::isTargetGNUAEABI ( ) const inline

isTargetMachineMac()

bool llvm::Triple::isTargetMachineMac ( ) const inline

isTargetMuslAEABI()

bool llvm::Triple::isTargetMuslAEABI ( ) const inline

isThumb()

bool llvm::Triple::isThumb ( ) const inline

isTime64ABI()

bool llvm::Triple::isTime64ABI ( ) const inline

isTvOS()

bool llvm::Triple::isTvOS ( ) const inline

isUEFI()

bool llvm::Triple::isUEFI ( ) const inline

isValidVersionForOS()

isVE()

bool llvm::Triple::isVE ( ) const inline

isVulkanOS()

bool llvm::Triple::isVulkanOS ( ) const inline

isWALI()

bool llvm::Triple::isWALI ( ) const inline

isWasm()

bool llvm::Triple::isWasm ( ) const inline

isWatchABI()

bool llvm::Triple::isWatchABI ( ) const inline

isWatchOS()

bool llvm::Triple::isWatchOS ( ) const inline

isWindowsArm64EC()

bool llvm::Triple::isWindowsArm64EC ( ) const inline

isWindowsCoreCLREnvironment()

bool llvm::Triple::isWindowsCoreCLREnvironment ( ) const inline

isWindowsCygwinEnvironment()

bool llvm::Triple::isWindowsCygwinEnvironment ( ) const inline

isWindowsGNUEnvironment()

bool llvm::Triple::isWindowsGNUEnvironment ( ) const inline

isWindowsItaniumEnvironment()

bool llvm::Triple::isWindowsItaniumEnvironment ( ) const inline

isWindowsMSVCEnvironment()

bool llvm::Triple::isWindowsMSVCEnvironment ( ) const inline

isX32()

bool llvm::Triple::isX32 ( ) const inline

isX86()

bool llvm::Triple::isX86 ( ) const inline

isX86_32()

bool llvm::Triple::isX86_32 ( ) const inline

isX86_64()

bool llvm::Triple::isX86_64 ( ) const inline

isXROS()

bool llvm::Triple::isXROS ( ) const inline

merge()

std::string Triple::merge ( const Triple & Other ) const

normalize() [1/2]

std::string llvm::Triple::normalize ( CanonicalForm Form = CanonicalForm::ANY) const inline

Return the normalized form of this triple's string.

Definition at line 404 of file Triple.h.

References ANY, and normalize().

normalize() [2/2]

Turn an arbitrary machine specification into the canonical triple form (or something sensible that the Triple class understands if nothing better can reasonably be done).

In particular, it handles the common case in which otherwise valid components are in the wrong order. Form is used to specify the output canonical form.

Definition at line 1172 of file Triple.cpp.

References Android, ANY, assert(), llvm::CallingConv::C, COFF, llvm::StringRef::empty(), empty(), FIVE_IDENT, FOUR_IDENT, getDXILArchNameFromShaderModel(), getObjectFormatTypeName(), GNUEABI, llvm::join(), llvm_unreachable, parseArch(), parseEnvironment(), parseFormat(), parseOS(), parseVendor(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::resize(), ShaderModel, llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::StringRef::starts_with(), starts_with(), llvm::Twine::str(), SUSE, std::swap(), THREE_IDENT, UnknownArch, UnknownEnvironment, UnknownObjectFormat, UnknownOS, UnknownVendor, and Win32.

Referenced by llvm::sys::getProcessTriple(), LLVMNormalizeTargetTriple(), normalize(), and llvm::SPIRVTranslateModule().

operator!=()

operator==()

setArch()

void Triple::setArch ( ArchType Kind,
SubArchType SubArch = NoSubArch )

setArchName()

setEnvironment()

void Triple::setEnvironment ( EnvironmentType Kind )

setEnvironmentName()

void Triple::setEnvironmentName ( StringRef Str )

setObjectFormat()

void Triple::setObjectFormat ( ObjectFormatType Kind )

setOS()

void Triple::setOS ( OSType Kind )

setOSAndEnvironmentName()

void Triple::setOSAndEnvironmentName ( StringRef Str )

setOSName()

setTriple()

setVendor()

void Triple::setVendor ( VendorType Kind )

setVendorName()

str()

const std::string & llvm::Triple::str ( ) const inline

Definition at line 480 of file Triple.h.

Referenced by llvm::jitlink::LinkGraph::dump(), llvm::orc::getDylibInterfaceFromDylib(), llvm::orc::getDylibInterfaceFromTapiFile(), getEnvironmentVersionString(), llvm::sys::getProcessTriple(), llvm::orc::ObjectFileLoader::isArchitectureCompatible(), LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator(), merge(), llvm::orc::GDBJITDebugInfoRegistrationPlugin::modifyPassConfig(), setEnvironment(), setObjectFormat(), Triple(), Triple(), Triple(), and Triple().

supportsCOMDAT()

bool llvm::Triple::supportsCOMDAT ( ) const inline

The documentation for this class was generated from the following files: