LLVM  8.0.0svn
Namespaces | Enumerations | Functions | Variables
llvm::ARM Namespace Reference

Define some predicates that are used for node matching. More...

Namespaces

 EHABI
 
 WinEH
 

Enumerations

enum  FPUVersion {
  FPUVersion::NONE, FPUVersion::VFPV2, FPUVersion::VFPV3, FPUVersion::VFPV3_FP16,
  FPUVersion::VFPV4, FPUVersion::VFPV5
}
 
enum  FPURestriction { FPURestriction::None = 0, FPURestriction::D16, FPURestriction::SP_D16 }
 
enum  NeonSupportLevel { NeonSupportLevel::None = 0, NeonSupportLevel::Neon, NeonSupportLevel::Crypto }
 
enum  FPUKind { ARM_FPU, ARM_FPU }
 
enum  ArchKind { ArchKind::ARM_ARCH, ArchKind::ARM_FPU, ArchKind::ARM_FPU }
 
enum  ArchExtKind : unsigned {
  AEK_INVALID = 0, AEK_NONE = 1, AEK_CRC = 1 << 1, AEK_CRYPTO = 1 << 2,
  AEK_FP = 1 << 3, AEK_HWDIVTHUMB = 1 << 4, AEK_HWDIVARM = 1 << 5, AEK_MP = 1 << 6,
  AEK_SIMD = 1 << 7, AEK_SEC = 1 << 8, AEK_VIRT = 1 << 9, AEK_DSP = 1 << 10,
  AEK_FP16 = 1 << 11, AEK_RAS = 1 << 12, AEK_SVE = 1 << 13, AEK_DOTPROD = 1 << 14,
  AEK_SHA2 = 1 << 15, AEK_AES = 1 << 16, AEK_FP16FML = 1 << 17, AEK_OS = 0x8000000,
  AEK_IWMMXT = 0x10000000, AEK_IWMMXT2 = 0x20000000, AEK_MAVERICK = 0x40000000, AEK_XSCALE = 0x80000000
}
 
enum  ISAKind { ISAKind::INVALID = 0, ISAKind::ARM, ISAKind::THUMB, ISAKind::AARCH64 }
 
enum  EndianKind { EndianKind::INVALID = 0, EndianKind::LITTLE, EndianKind::BIG }
 
enum  ProfileKind { ProfileKind::INVALID = 0, ProfileKind::A, ProfileKind::R, ProfileKind::M }
 
enum  DW_ISA { DW_ISA_ARM_thumb = 1, DW_ISA_ARM_arm = 2 }
 
enum  PartialMappingIdx { PMI_GPR, PMI_SPR, PMI_DPR, PMI_Min = PMI_GPR }
 
enum  ValueMappingIdx { InvalidIdx = 0, GPR3OpsIdx = 1, SPR3OpsIdx = 4, DPR3OpsIdx = 7 }
 
enum  Fixups {
  fixup_arm_ldst_pcrel_12 = FirstTargetFixupKind, fixup_t2_ldst_pcrel_12, fixup_arm_pcrel_10_unscaled, fixup_arm_pcrel_10,
  fixup_t2_pcrel_10, fixup_arm_pcrel_9, fixup_t2_pcrel_9, fixup_thumb_adr_pcrel_10,
  fixup_arm_adr_pcrel_12, fixup_t2_adr_pcrel_12, fixup_arm_condbranch, fixup_arm_uncondbranch,
  fixup_t2_condbranch, fixup_t2_uncondbranch, fixup_arm_thumb_br, fixup_arm_uncondbl,
  fixup_arm_condbl, fixup_arm_blx, fixup_arm_thumb_bl, fixup_arm_thumb_blx,
  fixup_arm_thumb_cb, fixup_arm_thumb_cp, fixup_arm_thumb_bcc, fixup_arm_movt_hi16,
  fixup_arm_movw_lo16, fixup_t2_movt_hi16, fixup_t2_movw_lo16, fixup_arm_mod_imm,
  fixup_t2_so_imm, LastTargetFixupKind, NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
}
 

Functions

StringRef getCanonicalArchName (StringRef Arch)
 
StringRef getFPUName (unsigned FPUKind)
 
FPUVersion getFPUVersion (unsigned FPUKind)
 
NeonSupportLevel getFPUNeonSupportLevel (unsigned FPUKind)
 
FPURestriction getFPURestriction (unsigned FPUKind)
 
bool getFPUFeatures (unsigned FPUKind, std::vector< StringRef > &Features)
 
bool getHWDivFeatures (unsigned HWDivKind, std::vector< StringRef > &Features)
 
bool getExtensionFeatures (unsigned Extensions, std::vector< StringRef > &Features)
 
StringRef getArchName (ArchKind AK)
 
unsigned getArchAttr (ArchKind AK)
 
StringRef getCPUAttr (ArchKind AK)
 
StringRef getSubArch (ArchKind AK)
 
StringRef getArchExtName (unsigned ArchExtKind)
 
StringRef getArchExtFeature (StringRef ArchExt)
 
StringRef getHWDivName (unsigned HWDivKind)
 
unsigned getDefaultFPU (StringRef CPU, ArchKind AK)
 
unsigned getDefaultExtensions (StringRef CPU, ArchKind AK)
 
StringRef getDefaultCPU (StringRef Arch)
 
unsigned parseHWDiv (StringRef HWDiv)
 
unsigned parseFPU (StringRef FPU)
 
ArchKind parseArch (StringRef Arch)
 
unsigned parseArchExt (StringRef ArchExt)
 
ArchKind parseCPUArch (StringRef CPU)
 
void fillValidCPUArchList (SmallVectorImpl< StringRef > &Values)
 
ISAKind parseArchISA (StringRef Arch)
 
EndianKind parseArchEndian (StringRef Arch)
 
ProfileKind parseArchProfile (StringRef Arch)
 
unsigned parseArchVersion (StringRef Arch)
 
StringRef computeDefaultTargetABI (const Triple &TT, StringRef CPU)
 
bool isBitFieldInvertedMask (unsigned v)
 
FastISelcreateFastISel (FunctionLoweringInfo &funcInfo, const TargetLibraryInfo *libInfo)
 
static bool checkPartMapping (const RegisterBankInfo::PartialMapping &PM, unsigned Start, unsigned Length, unsigned RegBankID)
 
static void checkPartialMappings ()
 
static bool checkValueMapping (const RegisterBankInfo::ValueMapping &VM, RegisterBankInfo::PartialMapping *BreakDown)
 
static void checkValueMappings ()
 

Variables

RegisterBankInfo::PartialMapping PartMappings []
 
RegisterBankInfo::ValueMapping ValueMappings []
 

Detailed Description

Define some predicates that are used for node matching.

Enumeration Type Documentation

◆ ArchExtKind

Enumerator
AEK_INVALID 
AEK_NONE 
AEK_CRC 
AEK_CRYPTO 
AEK_FP 
AEK_HWDIVTHUMB 
AEK_HWDIVARM 
AEK_MP 
AEK_SIMD 
AEK_SEC 
AEK_VIRT 
AEK_DSP 
AEK_FP16 
AEK_RAS 
AEK_SVE 
AEK_DOTPROD 
AEK_SHA2 
AEK_AES 
AEK_FP16FML 
AEK_OS 
AEK_IWMMXT 
AEK_IWMMXT2 
AEK_MAVERICK 
AEK_XSCALE 

Definition at line 72 of file TargetParser.h.

◆ ArchKind

enum llvm::ARM::ArchKind
strong
Enumerator
ARM_ARCH 
ARM_FPU 
ARM_FPU 

Definition at line 66 of file TargetParser.h.

◆ DW_ISA

Enumerator
DW_ISA_ARM_thumb 
DW_ISA_ARM_arm 

Definition at line 26 of file ARMAsmPrinter.h.

◆ EndianKind

enum llvm::ARM::EndianKind
strong
Enumerator
INVALID 
LITTLE 
BIG 

Definition at line 105 of file TargetParser.h.

◆ Fixups

Enumerator
fixup_arm_ldst_pcrel_12 
fixup_t2_ldst_pcrel_12 
fixup_arm_pcrel_10_unscaled 
fixup_arm_pcrel_10 
fixup_t2_pcrel_10 
fixup_arm_pcrel_9 
fixup_t2_pcrel_9 
fixup_thumb_adr_pcrel_10 
fixup_arm_adr_pcrel_12 
fixup_t2_adr_pcrel_12 
fixup_arm_condbranch 
fixup_arm_uncondbranch 
fixup_t2_condbranch 
fixup_t2_uncondbranch 
fixup_arm_thumb_br 
fixup_arm_uncondbl 
fixup_arm_condbl 
fixup_arm_blx 
fixup_arm_thumb_bl 
fixup_arm_thumb_blx 
fixup_arm_thumb_cb 
fixup_arm_thumb_cp 
fixup_arm_thumb_bcc 
fixup_arm_movt_hi16 
fixup_arm_movw_lo16 
fixup_t2_movt_hi16 
fixup_t2_movw_lo16 
fixup_arm_mod_imm 
fixup_t2_so_imm 
LastTargetFixupKind 
NumTargetFixupKinds 

Definition at line 17 of file ARMFixupKinds.h.

◆ FPUKind

Enumerator
ARM_FPU 
ARM_FPU 

Definition at line 59 of file TargetParser.h.

◆ FPURestriction

Enumerator
None 

No restriction.

D16 

Only 16 D registers.

SP_D16 

Only single-precision instructions, with 16 D registers.

Definition at line 45 of file TargetParser.h.

◆ FPUVersion

enum llvm::ARM::FPUVersion
strong
Enumerator
NONE 
VFPV2 
VFPV3 
VFPV3_FP16 
VFPV4 
VFPV5 

Definition at line 35 of file TargetParser.h.

◆ ISAKind

enum llvm::ARM::ISAKind
strong
Enumerator
INVALID 
ARM 
THUMB 
AARCH64 

Definition at line 101 of file TargetParser.h.

◆ NeonSupportLevel

Enumerator
None 

No Neon.

Neon 

Neon.

Crypto 

Neon with Crypto.

Definition at line 52 of file TargetParser.h.

◆ PartialMappingIdx

Enumerator
PMI_GPR 
PMI_SPR 
PMI_DPR 
PMI_Min 

Definition at line 32 of file ARMRegisterBankInfo.cpp.

◆ ProfileKind

Enumerator
INVALID 

Definition at line 108 of file TargetParser.h.

◆ ValueMappingIdx

Enumerator
InvalidIdx 
GPR3OpsIdx 
SPR3OpsIdx 
DPR3OpsIdx 

Definition at line 69 of file ARMRegisterBankInfo.cpp.

Function Documentation

◆ checkPartialMappings()

static void llvm::ARM::checkPartialMappings ( )
static

◆ checkPartMapping()

static bool llvm::ARM::checkPartMapping ( const RegisterBankInfo::PartialMapping PM,
unsigned  Start,
unsigned  Length,
unsigned  RegBankID 
)
static

Definition at line 49 of file ARMRegisterBankInfo.cpp.

Referenced by checkPartialMappings().

◆ checkValueMapping()

static bool llvm::ARM::checkValueMapping ( const RegisterBankInfo::ValueMapping VM,
RegisterBankInfo::PartialMapping BreakDown 
)
static

◆ checkValueMappings()

static void llvm::ARM::checkValueMappings ( )
static

◆ computeDefaultTargetABI()

StringRef llvm::ARM::computeDefaultTargetABI ( const Triple TT,
StringRef  CPU 
)

◆ createFastISel()

FastISel * llvm::ARM::createFastISel ( FunctionLoweringInfo funcInfo,
const TargetLibraryInfo libInfo 
)

◆ fillValidCPUArchList()

void llvm::AArch64::fillValidCPUArchList ( SmallVectorImpl< StringRef > &  Values)

◆ getArchAttr()

unsigned llvm::ARM::getArchAttr ( ArchKind  AK)

Definition at line 351 of file TargetParser.cpp.

Referenced by GetAEABIUnwindPersonalityName().

◆ getArchExtFeature()

StringRef llvm::AArch64::getArchExtFeature ( StringRef  ArchExt)

Definition at line 363 of file TargetParser.cpp.

References llvm::StringRef::startswith(), and llvm::StringRef::substr().

◆ getArchExtName()

StringRef llvm::AArch64::getArchExtName ( unsigned  ArchExtKind)

Definition at line 355 of file TargetParser.cpp.

Referenced by GetAEABIUnwindPersonalityName().

◆ getArchName()

StringRef llvm::ARM::getArchName ( ArchKind  AK)

◆ getCanonicalArchName()

StringRef llvm::AArch64::getCanonicalArchName ( StringRef  Arch)

◆ getCPUAttr()

StringRef llvm::ARM::getCPUAttr ( ArchKind  AK)

Definition at line 343 of file TargetParser.cpp.

Referenced by GetAEABIUnwindPersonalityName(), and llvm::AArch64::getCPUAttr().

◆ getDefaultCPU()

StringRef llvm::AArch64::getDefaultCPU ( StringRef  Arch)

◆ getDefaultExtensions()

unsigned llvm::ARM::getDefaultExtensions ( StringRef  CPU,
ArchKind  AK 
)

Definition at line 192 of file TargetParser.cpp.

References AEK_INVALID, and ARM_CPU_NAME.

◆ getDefaultFPU()

unsigned llvm::ARM::getDefaultFPU ( StringRef  CPU,
ArchKind  AK 
)

Definition at line 181 of file TargetParser.cpp.

References ARM_CPU_NAME.

◆ getExtensionFeatures()

bool llvm::AArch64::getExtensionFeatures ( unsigned  Extensions,
std::vector< StringRef > &  Features 
)

◆ getFPUFeatures()

bool llvm::AArch64::getFPUFeatures ( unsigned  FPUKind,
std::vector< StringRef > &  Features 
)

Definition at line 257 of file TargetParser.cpp.

References Crypto, D16, Neon, NONE, None, SP_D16, VFPV2, VFPV3, VFPV3_FP16, VFPV4, and VFPV5.

Referenced by llvm::AArch64::getCPUArchKind(), and llvm::IsCPSRDead< MCInst >().

◆ getFPUName()

StringRef llvm::AArch64::getFPUName ( unsigned  FPUKind)

Definition at line 157 of file TargetParser.cpp.

Referenced by GetAEABIUnwindPersonalityName(), and getDefaultCPU().

◆ getFPUNeonSupportLevel()

ARM::NeonSupportLevel llvm::AArch64::getFPUNeonSupportLevel ( unsigned  FPUKind)

Definition at line 169 of file TargetParser.cpp.

References None.

Referenced by getDefaultCPU().

◆ getFPURestriction()

ARM::FPURestriction llvm::AArch64::getFPURestriction ( unsigned  FPUKind)

Definition at line 175 of file TargetParser.cpp.

References None.

Referenced by getDefaultCPU().

◆ getFPUVersion()

ARM::FPUVersion llvm::AArch64::getFPUVersion ( unsigned  FPUKind)

Definition at line 163 of file TargetParser.cpp.

References NONE.

Referenced by getDefaultCPU().

◆ getHWDivFeatures()

bool llvm::ARM::getHWDivFeatures ( unsigned  HWDivKind,
std::vector< StringRef > &  Features 
)

Definition at line 204 of file TargetParser.cpp.

References AEK_HWDIVARM, AEK_HWDIVTHUMB, and AEK_INVALID.

Referenced by getExtensionFeatures().

◆ getHWDivName()

StringRef llvm::ARM::getHWDivName ( unsigned  HWDivKind)

Definition at line 379 of file TargetParser.cpp.

References D.

◆ getSubArch()

StringRef llvm::ARM::getSubArch ( ArchKind  AK)

Definition at line 347 of file TargetParser.cpp.

Referenced by llvm::AArch64::getSubArch().

◆ isBitFieldInvertedMask()

bool llvm::ARM::isBitFieldInvertedMask ( unsigned  v)

Definition at line 14188 of file ARMISelLowering.cpp.

References llvm::isShiftedMask_32().

Referenced by PerformORCombineToBFI().

◆ parseArch()

AArch64::ArchKind llvm::AArch64::parseArch ( StringRef  Arch)

◆ parseArchEndian()

ARM::EndianKind llvm::AArch64::parseArchEndian ( StringRef  Arch)

◆ parseArchExt()

AArch64::ArchExtKind llvm::AArch64::parseArchExt ( StringRef  ArchExt)

Definition at line 702 of file TargetParser.cpp.

References A, and AEK_INVALID.

◆ parseArchISA()

ARM::ISAKind llvm::AArch64::parseArchISA ( StringRef  Arch)

◆ parseArchProfile()

ARM::ProfileKind llvm::AArch64::parseArchProfile ( StringRef  Arch)

Definition at line 762 of file TargetParser.cpp.

References A, getCanonicalArchName(), INVALID, llvm_unreachable, M, parseArch(), and R.

Referenced by computeDefaultTargetABI(), and parseARMArch().

◆ parseArchVersion()

unsigned llvm::AArch64::parseArchVersion ( StringRef  Arch)

Definition at line 808 of file TargetParser.cpp.

References getCanonicalArchName(), INVALID, llvm_unreachable, and parseArch().

Referenced by computeDefaultTargetABI(), and parseARMArch().

◆ parseCPUArch()

AArch64::ArchKind llvm::AArch64::parseCPUArch ( StringRef  CPU)

Definition at line 710 of file TargetParser.cpp.

References C, llvm::Value::getName(), and INVALID.

Referenced by computeDefaultTargetABI().

◆ parseFPU()

unsigned llvm::AArch64::parseFPU ( StringRef  FPU)

Definition at line 682 of file TargetParser.cpp.

References F(), and getFPUSynonym().

Referenced by computeDefaultTargetABI(), and llvm::IsCPSRDead< MCInst >().

◆ parseHWDiv()

unsigned llvm::ARM::parseHWDiv ( StringRef  HWDiv)

Definition at line 673 of file TargetParser.cpp.

References AEK_INVALID, D, and getHWDivSynonym().

Variable Documentation

◆ PartMappings

RegisterBankInfo::PartialMapping llvm::ARM::PartMappings[]
Initial value:
{
{0, 32, GPRRegBank},
{0, 32, FPRRegBank},
{0, 64, FPRRegBank},
}

Definition at line 39 of file ARMRegisterBankInfo.cpp.

Referenced by checkPartialMappings(), and checkValueMappings().

◆ ValueMappings

RegisterBankInfo::ValueMapping llvm::ARM::ValueMappings[]