LLVM  6.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_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)
 
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_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 102 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 98 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 105 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

◆ 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 
)

◆ getArchAttr()

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

Definition at line 345 of file TargetParser.cpp.

Referenced by GetAEABIUnwindPersonalityName().

◆ getArchExtFeature()

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

Definition at line 357 of file TargetParser.cpp.

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

◆ getArchExtName()

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

Definition at line 349 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 337 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 191 of file TargetParser.cpp.

References AEK_INVALID, and ARM_CPU_NAME.

◆ getDefaultFPU()

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

Definition at line 180 of file TargetParser.cpp.

References ARM_CPU_NAME.

◆ getExtensionFeatures()

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

Definition at line 222 of file TargetParser.cpp.

References AEK_CRC, AEK_DOTPROD, AEK_DSP, AEK_INVALID, AEK_RAS, and getHWDivFeatures().

◆ getFPUFeatures()

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

◆ getFPUName()

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

Definition at line 156 of file TargetParser.cpp.

Referenced by GetAEABIUnwindPersonalityName(), and getDefaultCPU().

◆ getFPUNeonSupportLevel()

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

Definition at line 168 of file TargetParser.cpp.

References None.

Referenced by getDefaultCPU().

◆ getFPURestriction()

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

Definition at line 174 of file TargetParser.cpp.

References None.

Referenced by getDefaultCPU().

◆ getFPUVersion()

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

Definition at line 162 of file TargetParser.cpp.

References NONE.

Referenced by getDefaultCPU().

◆ getHWDivFeatures()

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

Definition at line 203 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 373 of file TargetParser.cpp.

References D.

◆ getSubArch()

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

Definition at line 341 of file TargetParser.cpp.

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

◆ isBitFieldInvertedMask()

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

Definition at line 13406 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()

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

Definition at line 677 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)

◆ parseArchVersion()

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

Definition at line 768 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 685 of file TargetParser.cpp.

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

Referenced by computeDefaultTargetABI().

◆ parseFPU()

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

Definition at line 657 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 648 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[]