LLVM 22.0.0git
ARMTargetParser.h File Reference
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/ARMBuildAttributes.h"
#include "llvm/Support/Compiler.h"
#include "llvm/TargetParser/ARMTargetParserCommon.h"
#include <vector>
#include "ARMTargetParser.def"
#include "llvm/TargetParser/ARMTargetParser.def"

Go to the source code of this file.

Classes

struct  llvm::ARM::ExtName
struct  llvm::ARM::CpuNames
struct  llvm::ARM::FPUName
struct  llvm::ARM::ArchNames

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
namespace  llvm::ARM
 Define some predicates that are used for node matching.

Macros

#define ARM_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE)
#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION)
#define ARM_ARCH(NAME, ID, CPU_ATTR, ARCH_FEATURE, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT)
#define ARM_HW_DIV_NAME(NAME, ID)
#define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT)
#define ARM_HW_DIV_NAME(NAME, ID)
#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION)
#define ARM_ARCH(NAME, ID, CPU_ATTR, ARCH_FEATURE, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT)
#define ARM_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE)
#define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT)
#define ARM_ARCH(NAME, ID, CPU_ATTR, ARCH_FEATURE, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT)
#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION)
#define ARM_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE)
#define ARM_HW_DIV_NAME(NAME, ID)
#define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT)
#define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT)
#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION)
#define ARM_ARCH(NAME, ID, CPU_ATTR, ARCH_FEATURE, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT)
#define ARM_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE)
#define ARM_HW_DIV_NAME(NAME, ID)
#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION)
#define ARM_ARCH(NAME, ID, CPU_ATTR, ARCH_FEATURE, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT)
#define ARM_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE)
#define ARM_HW_DIV_NAME(NAME, ID)
#define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT)
#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION)
#define ARM_ARCH(NAME, ID, CPU_ATTR, ARCH_FEATURE, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT)

Enumerations

enum  llvm::ARM::ARMABI { llvm::ARM::ARM_ABI_UNKNOWN , llvm::ARM::ARM_ABI_APCS , llvm::ARM::ARM_ABI_AAPCS , llvm::ARM::ARM_ABI_AAPCS16 }
enum  llvm::ARM::ArchExtKind : uint64_t {
  llvm::ARM::AEK_INVALID = 0 , llvm::ARM::AEK_NONE = 1 , llvm::ARM::AEK_CRC = 1 << 1 , llvm::ARM::AEK_CRYPTO = 1 << 2 ,
  llvm::ARM::AEK_FP = 1 << 3 , llvm::ARM::AEK_HWDIVTHUMB = 1 << 4 , llvm::ARM::AEK_HWDIVARM = 1 << 5 , llvm::ARM::AEK_MP = 1 << 6 ,
  llvm::ARM::AEK_SIMD = 1 << 7 , llvm::ARM::AEK_SEC = 1 << 8 , llvm::ARM::AEK_VIRT = 1 << 9 , llvm::ARM::AEK_DSP = 1 << 10 ,
  llvm::ARM::AEK_FP16 = 1 << 11 , llvm::ARM::AEK_RAS = 1 << 12 , llvm::ARM::AEK_DOTPROD = 1 << 13 , llvm::ARM::AEK_SHA2 = 1 << 14 ,
  llvm::ARM::AEK_AES = 1 << 15 , llvm::ARM::AEK_FP16FML = 1 << 16 , llvm::ARM::AEK_SB = 1 << 17 , llvm::ARM::AEK_FP_DP = 1 << 18 ,
  llvm::ARM::AEK_LOB = 1 << 19 , llvm::ARM::AEK_BF16 = 1 << 20 , llvm::ARM::AEK_I8MM = 1 << 21 , llvm::ARM::AEK_CDECP0 = 1 << 22 ,
  llvm::ARM::AEK_CDECP1 = 1 << 23 , llvm::ARM::AEK_CDECP2 = 1 << 24 , llvm::ARM::AEK_CDECP3 = 1 << 25 , llvm::ARM::AEK_CDECP4 = 1 << 26 ,
  llvm::ARM::AEK_CDECP5 = 1 << 27 , llvm::ARM::AEK_CDECP6 = 1 << 28 , llvm::ARM::AEK_CDECP7 = 1 << 29 , llvm::ARM::AEK_PACBTI = 1 << 30 ,
  llvm::ARM::AEK_MVE = 1ULL << 31 , llvm::ARM::AEK_OS = 1ULL << 59 , llvm::ARM::AEK_IWMMXT = 1ULL << 60 , llvm::ARM::AEK_IWMMXT2 = 1ULL << 61 ,
  llvm::ARM::AEK_MAVERICK = 1ULL << 62 , llvm::ARM::AEK_XSCALE = 1ULL << 63
}
enum class  llvm::ARM::ArchKind { llvm::ARM::ARM_FPU }
enum  llvm::ARM::FPUKind { llvm::ARM::ARM_FPU , llvm::ARM::ARM_FPU }
enum class  llvm::ARM::FPUVersion {
  llvm::ARM::NONE , llvm::ARM::VFPV2 , llvm::ARM::VFPV3 , llvm::ARM::VFPV3_FP16 ,
  llvm::ARM::VFPV4 , llvm::ARM::VFPV5 , llvm::ARM::VFPV5_FULLFP16
}
enum class  llvm::ARM::FPURestriction { llvm::ARM::None = 0 , llvm::ARM::D16 , llvm::ARM::SP_D16 }
enum class  llvm::ARM::NeonSupportLevel { llvm::ARM::None = 0 , llvm::ARM::Neon , llvm::ARM::Crypto }
enum class  llvm::ARM::ProfileKind { llvm::ARM::INVALID = 0 , llvm::ARM::A , llvm::ARM::R , llvm::ARM::M }

Functions

bool llvm::ARM::isDoublePrecision (const FPURestriction restriction)
bool llvm::ARM::has32Regs (const FPURestriction restriction)
ArchKindllvm::ARM::operator-- (ArchKind &Kind)
LLVM_ABI StringRef llvm::ARM::getFPUName (FPUKind FPUKind)
LLVM_ABI FPUVersion llvm::ARM::getFPUVersion (FPUKind FPUKind)
LLVM_ABI NeonSupportLevel llvm::ARM::getFPUNeonSupportLevel (FPUKind FPUKind)
LLVM_ABI FPURestriction llvm::ARM::getFPURestriction (FPUKind FPUKind)
LLVM_ABI bool llvm::ARM::getFPUFeatures (FPUKind FPUKind, std::vector< StringRef > &Features)
LLVM_ABI bool llvm::ARM::getHWDivFeatures (uint64_t HWDivKind, std::vector< StringRef > &Features)
LLVM_ABI bool llvm::ARM::getExtensionFeatures (uint64_t Extensions, std::vector< StringRef > &Features)
LLVM_ABI StringRef llvm::ARM::getArchName (ArchKind AK)
LLVM_ABI unsigned llvm::ARM::getArchAttr (ArchKind AK)
LLVM_ABI StringRef llvm::ARM::getCPUAttr (ArchKind AK)
LLVM_ABI StringRef llvm::ARM::getSubArch (ArchKind AK)
LLVM_ABI StringRef llvm::ARM::getArchExtName (uint64_t ArchExtKind)
LLVM_ABI StringRef llvm::ARM::getArchExtFeature (StringRef ArchExt)
LLVM_ABI bool llvm::ARM::appendArchExtFeatures (StringRef CPU, ARM::ArchKind AK, StringRef ArchExt, std::vector< StringRef > &Features, FPUKind &ArgFPUKind)
LLVM_ABI ArchKind llvm::ARM::convertV9toV8 (ArchKind AK)
LLVM_ABI FPUKind llvm::ARM::getDefaultFPU (StringRef CPU, ArchKind AK)
LLVM_ABI uint64_t llvm::ARM::getDefaultExtensions (StringRef CPU, ArchKind AK)
LLVM_ABI StringRef llvm::ARM::getDefaultCPU (StringRef Arch)
LLVM_ABI StringRef llvm::ARM::getFPUSynonym (StringRef FPU)
LLVM_ABI uint64_t llvm::ARM::parseHWDiv (StringRef HWDiv)
LLVM_ABI FPUKind llvm::ARM::parseFPU (StringRef FPU)
LLVM_ABI ArchKind llvm::ARM::parseArch (StringRef Arch)
LLVM_ABI uint64_t llvm::ARM::parseArchExt (StringRef ArchExt)
LLVM_ABI ArchKind llvm::ARM::parseCPUArch (StringRef CPU)
LLVM_ABI ProfileKind llvm::ARM::parseArchProfile (StringRef Arch)
LLVM_ABI unsigned llvm::ARM::parseArchVersion (StringRef Arch)
LLVM_ABI void llvm::ARM::fillValidCPUArchList (SmallVectorImpl< StringRef > &Values)
LLVM_ABI LLVM_READONLY StringRef llvm::ARM::computeDefaultTargetABI (const Triple &TT)
LLVM_ABI LLVM_READONLY ARMABI llvm::ARM::computeTargetABI (const Triple &TT, StringRef ABIName="")
LLVM_ABI StringRef llvm::ARM::getARMCPUForArch (const llvm::Triple &Triple, StringRef MArch={})
 Get the (LLVM) name of the minimum ARM CPU for the arch we are targeting.
LLVM_ABI void llvm::ARM::PrintSupportedExtensions (StringMap< StringRef > DescMap)

Variables

constexpr ExtName llvm::ARM::ARCHExtNames []
struct { 
   StringRef   llvm::ARM::Name 
   uint64_t   llvm::ARM::ID 
llvm::ARM::HWDivNames []
constexpr CpuNames llvm::ARM::CPUNames []
static constexpr FPUName llvm::ARM::FPUNames []
static constexpr ArchNames llvm::ARM::ARMArchNames []

Macro Definition Documentation

◆ ARM_ARCH [1/6]

#define ARM_ARCH ( NAME,
ID,
CPU_ATTR,
ARCH_FEATURE,
ARCH_ATTR,
ARCH_FPU,
ARCH_BASE_EXT )

Definition at line 107 of file ARMTargetParser.h.

◆ ARM_ARCH [2/6]

#define ARM_ARCH ( NAME,
ID,
CPU_ATTR,
ARCH_FEATURE,
ARCH_ATTR,
ARCH_FPU,
ARCH_BASE_EXT )

Definition at line 107 of file ARMTargetParser.h.

◆ ARM_ARCH [3/6]

#define ARM_ARCH ( NAME,
ID,
CPU_ATTR,
ARCH_FEATURE,
ARCH_ATTR,
ARCH_FPU,
ARCH_BASE_EXT )

Definition at line 107 of file ARMTargetParser.h.

◆ ARM_ARCH [4/6]

#define ARM_ARCH ( NAME,
ID,
CPU_ATTR,
ARCH_FEATURE,
ARCH_ATTR,
ARCH_FPU,
ARCH_BASE_EXT )

Definition at line 107 of file ARMTargetParser.h.

◆ ARM_ARCH [5/6]

#define ARM_ARCH ( NAME,
ID,
CPU_ATTR,
ARCH_FEATURE,
ARCH_ATTR,
ARCH_FPU,
ARCH_BASE_EXT )
Value:
ID,

Definition at line 107 of file ARMTargetParser.h.

◆ ARM_ARCH [6/6]

#define ARM_ARCH ( NAME,
ID,
CPU_ATTR,
ARCH_FEATURE,
ARCH_ATTR,
ARCH_FPU,
ARCH_BASE_EXT )
Value:
{NAME, CPU_ATTR, ARCH_FEATURE, ARCH_FPU, \
ARCH_BASE_EXT, ArchKind::ID, ARCH_ATTR},

Definition at line 107 of file ARMTargetParser.h.

◆ ARM_ARCH_EXT_NAME [1/5]

#define ARM_ARCH_EXT_NAME ( NAME,
ID,
FEATURE,
NEGFEATURE )

◆ ARM_ARCH_EXT_NAME [2/5]

#define ARM_ARCH_EXT_NAME ( NAME,
ID,
FEATURE,
NEGFEATURE )

◆ ARM_ARCH_EXT_NAME [3/5]

#define ARM_ARCH_EXT_NAME ( NAME,
ID,
FEATURE,
NEGFEATURE )

◆ ARM_ARCH_EXT_NAME [4/5]

#define ARM_ARCH_EXT_NAME ( NAME,
ID,
FEATURE,
NEGFEATURE )

◆ ARM_ARCH_EXT_NAME [5/5]

#define ARM_ARCH_EXT_NAME ( NAME,
ID,
FEATURE,
NEGFEATURE )
Value:
{NAME, ID, FEATURE, NEGFEATURE},

◆ ARM_CPU_NAME [1/5]

#define ARM_CPU_NAME ( NAME,
ID,
DEFAULT_FPU,
IS_DEFAULT,
DEFAULT_EXT )

◆ ARM_CPU_NAME [2/5]

#define ARM_CPU_NAME ( NAME,
ID,
DEFAULT_FPU,
IS_DEFAULT,
DEFAULT_EXT )

◆ ARM_CPU_NAME [3/5]

#define ARM_CPU_NAME ( NAME,
ID,
DEFAULT_FPU,
IS_DEFAULT,
DEFAULT_EXT )

◆ ARM_CPU_NAME [4/5]

#define ARM_CPU_NAME ( NAME,
ID,
DEFAULT_FPU,
IS_DEFAULT,
DEFAULT_EXT )

◆ ARM_CPU_NAME [5/5]

#define ARM_CPU_NAME ( NAME,
ID,
DEFAULT_FPU,
IS_DEFAULT,
DEFAULT_EXT )
Value:
{NAME, ARM::ArchKind::ID, IS_DEFAULT, DEFAULT_EXT},

◆ ARM_FPU [1/6]

#define ARM_FPU ( NAME,
KIND,
VERSION,
NEON_SUPPORT,
RESTRICTION )

Definition at line 126 of file ARMTargetParser.h.

◆ ARM_FPU [2/6]

#define ARM_FPU ( NAME,
KIND,
VERSION,
NEON_SUPPORT,
RESTRICTION )

Definition at line 126 of file ARMTargetParser.h.

◆ ARM_FPU [3/6]

#define ARM_FPU ( NAME,
KIND,
VERSION,
NEON_SUPPORT,
RESTRICTION )

Definition at line 126 of file ARMTargetParser.h.

◆ ARM_FPU [4/6]

#define ARM_FPU ( NAME,
KIND,
VERSION,
NEON_SUPPORT,
RESTRICTION )

Definition at line 126 of file ARMTargetParser.h.

◆ ARM_FPU [5/6]

#define ARM_FPU ( NAME,
KIND,
VERSION,
NEON_SUPPORT,
RESTRICTION )
Value:
#define KIND(ENUM, FIELD)
Definition LVSupport.h:116

Definition at line 126 of file ARMTargetParser.h.

◆ ARM_FPU [6/6]

#define ARM_FPU ( NAME,
KIND,
VERSION,
NEON_SUPPORT,
RESTRICTION )
Value:
{NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION},

Definition at line 126 of file ARMTargetParser.h.

◆ ARM_HW_DIV_NAME [1/5]

#define ARM_HW_DIV_NAME ( NAME,
ID )

◆ ARM_HW_DIV_NAME [2/5]

#define ARM_HW_DIV_NAME ( NAME,
ID )

◆ ARM_HW_DIV_NAME [3/5]

#define ARM_HW_DIV_NAME ( NAME,
ID )

◆ ARM_HW_DIV_NAME [4/5]

#define ARM_HW_DIV_NAME ( NAME,
ID )

◆ ARM_HW_DIV_NAME [5/5]

#define ARM_HW_DIV_NAME ( NAME,
ID )
Value:
{NAME, ID},