LLVM  14.0.0git
Classes | Enumerations | Functions | Variables
llvm::AArch64 Namespace Reference

Classes

struct  ParsedBranchProtection
 

Enumerations

enum  ArchExtKind : uint64_t {
  AEK_INVALID = 0, AEK_NONE = 1, AEK_CRC = 1 << 1, AEK_CRYPTO = 1 << 2,
  AEK_FP = 1 << 3, AEK_SIMD = 1 << 4, AEK_FP16 = 1 << 5, AEK_PROFILE = 1 << 6,
  AEK_RAS = 1 << 7, AEK_LSE = 1 << 8, AEK_SVE = 1 << 9, AEK_DOTPROD = 1 << 10,
  AEK_RCPC = 1 << 11, AEK_RDM = 1 << 12, AEK_SM4 = 1 << 13, AEK_SHA3 = 1 << 14,
  AEK_SHA2 = 1 << 15, AEK_AES = 1 << 16, AEK_FP16FML = 1 << 17, AEK_RAND = 1 << 18,
  AEK_MTE = 1 << 19, AEK_SSBS = 1 << 20, AEK_SB = 1 << 21, AEK_PREDRES = 1 << 22,
  AEK_SVE2 = 1 << 23, AEK_SVE2AES = 1 << 24, AEK_SVE2SM4 = 1 << 25, AEK_SVE2SHA3 = 1 << 26,
  AEK_SVE2BITPERM = 1 << 27, AEK_TME = 1 << 28, AEK_BF16 = 1 << 29, AEK_I8MM = 1 << 30,
  AEK_F32MM = 1ULL << 31, AEK_F64MM = 1ULL << 32, AEK_LS64 = 1ULL << 33, AEK_BRBE = 1ULL << 34,
  AEK_PAUTH = 1ULL << 35, AEK_FLAGM = 1ULL << 36, AEK_SME = 1ULL << 37, AEK_SMEF64 = 1ULL << 38,
  AEK_SMEI64 = 1ULL << 39
}
 
enum  ArchKind { ArchKind::AARCH64_ARCH }
 
enum  ElementSizeType {
  ElementSizeMask = TSFLAG_ELEMENT_SIZE_TYPE(0x7), ElementSizeNone = TSFLAG_ELEMENT_SIZE_TYPE(0x0), ElementSizeB = TSFLAG_ELEMENT_SIZE_TYPE(0x1), ElementSizeH = TSFLAG_ELEMENT_SIZE_TYPE(0x2),
  ElementSizeS = TSFLAG_ELEMENT_SIZE_TYPE(0x3), ElementSizeD = TSFLAG_ELEMENT_SIZE_TYPE(0x4)
}
 
enum  DestructiveInstType {
  DestructiveInstTypeMask = TSFLAG_DESTRUCTIVE_INST_TYPE(0xf), NotDestructive = TSFLAG_DESTRUCTIVE_INST_TYPE(0x0), DestructiveOther = TSFLAG_DESTRUCTIVE_INST_TYPE(0x1), DestructiveUnary = TSFLAG_DESTRUCTIVE_INST_TYPE(0x2),
  DestructiveBinaryImm = TSFLAG_DESTRUCTIVE_INST_TYPE(0x3), DestructiveBinaryShImmUnpred = TSFLAG_DESTRUCTIVE_INST_TYPE(0x4), DestructiveBinary = TSFLAG_DESTRUCTIVE_INST_TYPE(0x5), DestructiveBinaryComm = TSFLAG_DESTRUCTIVE_INST_TYPE(0x6),
  DestructiveBinaryCommWithRev = TSFLAG_DESTRUCTIVE_INST_TYPE(0x7), DestructiveTernaryCommWithRev = TSFLAG_DESTRUCTIVE_INST_TYPE(0x8), DestructiveUnaryPassthru = TSFLAG_DESTRUCTIVE_INST_TYPE(0x9)
}
 
enum  FalseLaneType { FalseLanesMask = TSFLAG_FALSE_LANE_TYPE(0x3), FalseLanesZero = TSFLAG_FALSE_LANE_TYPE(0x1), FalseLanesUndef = TSFLAG_FALSE_LANE_TYPE(0x2) }
 
enum  Rounding {
  RN = 0, RP = 1, RM = 2, RZ = 3,
  rmMask = 3
}
 Possible values of current rounding mode, which is specified in bits 23:22 of FPCR. More...
 
enum  Fixups {
  fixup_aarch64_pcrel_adr_imm21 = FirstTargetFixupKind, fixup_aarch64_pcrel_adrp_imm21, fixup_aarch64_add_imm12, fixup_aarch64_ldst_imm12_scale1,
  fixup_aarch64_ldst_imm12_scale2, fixup_aarch64_ldst_imm12_scale4, fixup_aarch64_ldst_imm12_scale8, fixup_aarch64_ldst_imm12_scale16,
  fixup_aarch64_ldr_pcrel_imm19, fixup_aarch64_movw, fixup_aarch64_pcrel_branch14, fixup_aarch64_pcrel_branch19,
  fixup_aarch64_pcrel_branch26, fixup_aarch64_pcrel_call26, LastTargetFixupKind, NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
}
 

Functions

bool getExtensionFeatures (uint64_t Extensions, std::vector< StringRef > &Features)
 
bool getArchFeatures (ArchKind AK, 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)
 
unsigned getDefaultFPU (StringRef CPU, ArchKind AK)
 
uint64_t getDefaultExtensions (StringRef CPU, ArchKind AK)
 
StringRef getDefaultCPU (StringRef Arch)
 
ArchKind getCPUArchKind (StringRef CPU)
 
ArchKind parseArch (StringRef Arch)
 
ArchExtKind parseArchExt (StringRef ArchExt)
 
ArchKind parseCPUArch (StringRef CPU)
 
void fillValidCPUArchList (SmallVectorImpl< StringRef > &Values)
 
bool isX18ReservedByDefault (const Triple &TT)
 
bool parseBranchProtection (StringRef Spec, ParsedBranchProtection &PBP, StringRef &Err)
 
int getSVEPseudoMap (uint16_t Opcode)
 
int getSVERevInstr (uint16_t Opcode)
 
int getSVENonRevInstr (uint16_t Opcode)
 
FastISelcreateFastISel (FunctionLoweringInfo &funcInfo, const TargetLibraryInfo *libInfo)
 

Variables

const ARM::ArchNames< ArchKindAArch64ARCHNames []
 
const ARM::ExtName AArch64ARCHExtNames []
 
const ARM::CpuNames< ArchKindAArch64CPUNames []
 
const ArchKind ArchKinds []
 
static const uint64_t InstrFlagIsWhile = TSFLAG_INSTR_FLAGS(0x1)
 
static const uint64_t InstrFlagIsPTestLike = TSFLAG_INSTR_FLAGS(0x2)
 
const unsigned RoundingBitsPos = 22
 
static constexpr unsigned SVEBitsPerBlock = 128
 
static constexpr unsigned SVEMaxBitsPerVector = 2048
 
const unsigned NeonBitsPerVector = 128
 

Enumeration Type Documentation

◆ ArchExtKind

Enumerator
AEK_INVALID 
AEK_NONE 
AEK_CRC 
AEK_CRYPTO 
AEK_FP 
AEK_SIMD 
AEK_FP16 
AEK_PROFILE 
AEK_RAS 
AEK_LSE 
AEK_SVE 
AEK_DOTPROD 
AEK_RCPC 
AEK_RDM 
AEK_SM4 
AEK_SHA3 
AEK_SHA2 
AEK_AES 
AEK_FP16FML 
AEK_RAND 
AEK_MTE 
AEK_SSBS 
AEK_SB 
AEK_PREDRES 
AEK_SVE2 
AEK_SVE2AES 
AEK_SVE2SM4 
AEK_SVE2SHA3 
AEK_SVE2BITPERM 
AEK_TME 
AEK_BF16 
AEK_I8MM 
AEK_F32MM 
AEK_F64MM 
AEK_LS64 
AEK_BRBE 
AEK_PAUTH 
AEK_FLAGM 
AEK_SME 
AEK_SMEF64 
AEK_SMEI64 

Definition at line 30 of file AArch64TargetParser.h.

◆ ArchKind

Enumerator
AARCH64_ARCH 

Definition at line 74 of file AArch64TargetParser.h.

◆ DestructiveInstType

Enumerator
DestructiveInstTypeMask 
NotDestructive 
DestructiveOther 
DestructiveUnary 
DestructiveBinaryImm 
DestructiveBinaryShImmUnpred 
DestructiveBinary 
DestructiveBinaryComm 
DestructiveBinaryCommWithRev 
DestructiveTernaryCommWithRev 
DestructiveUnaryPassthru 

Definition at line 474 of file AArch64InstrInfo.h.

◆ ElementSizeType

Enumerator
ElementSizeMask 
ElementSizeNone 
ElementSizeB 
ElementSizeH 
ElementSizeS 
ElementSizeD 

Definition at line 465 of file AArch64InstrInfo.h.

◆ FalseLaneType

Enumerator
FalseLanesMask 
FalseLanesZero 
FalseLanesUndef 

Definition at line 488 of file AArch64InstrInfo.h.

◆ Fixups

Enumerator
fixup_aarch64_pcrel_adr_imm21 
fixup_aarch64_pcrel_adrp_imm21 
fixup_aarch64_add_imm12 
fixup_aarch64_ldst_imm12_scale1 
fixup_aarch64_ldst_imm12_scale2 
fixup_aarch64_ldst_imm12_scale4 
fixup_aarch64_ldst_imm12_scale8 
fixup_aarch64_ldst_imm12_scale16 
fixup_aarch64_ldr_pcrel_imm19 
fixup_aarch64_movw 
fixup_aarch64_pcrel_branch14 
fixup_aarch64_pcrel_branch19 
fixup_aarch64_pcrel_branch26 
fixup_aarch64_pcrel_call26 
LastTargetFixupKind 
NumTargetFixupKinds 

Definition at line 17 of file AArch64FixupKinds.h.

◆ Rounding

Possible values of current rounding mode, which is specified in bits 23:22 of FPCR.

Enumerator
RN 
RP 
RM 
RZ 
rmMask 

Definition at line 473 of file AArch64ISelLowering.h.

Function Documentation

◆ createFastISel()

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

Definition at line 5103 of file AArch64FastISel.cpp.

Referenced by llvm::AArch64TargetLowering::createFastISel().

◆ fillValidCPUArchList()

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

Definition at line 201 of file AArch64TargetParser.cpp.

References AArch64CPUNames.

◆ getArchAttr()

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

Definition at line 161 of file AArch64TargetParser.cpp.

References AArch64ARCHNames.

◆ getArchExtFeature()

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

◆ getArchExtName()

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

Definition at line 165 of file AArch64TargetParser.cpp.

References AArch64ARCHExtNames.

◆ getArchFeatures()

bool llvm::AArch64::getArchFeatures ( AArch64::ArchKind  AK,
std::vector< StringRef > &  Features 
)

Definition at line 121 of file AArch64TargetParser.cpp.

◆ getArchName()

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

◆ getCPUArchKind()

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

Definition at line 51 of file AArch64TargetParser.cpp.

References llvm::StringSwitch< T, R >::Default().

◆ getCPUAttr()

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

Definition at line 153 of file AArch64TargetParser.cpp.

References AArch64ARCHNames.

Referenced by llvm::ARM::getCPUAttr().

◆ getDefaultCPU()

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

Definition at line 187 of file AArch64TargetParser.cpp.

References AArch64CPUNames, and parseArch().

◆ getDefaultExtensions()

uint64_t llvm::AArch64::getDefaultExtensions ( StringRef  CPU,
AArch64::ArchKind  AK 
)

◆ getDefaultFPU()

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

◆ getExtensionFeatures()

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

◆ getSubArch()

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

Definition at line 157 of file AArch64TargetParser.cpp.

References AArch64ARCHNames.

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

◆ getSVENonRevInstr()

int llvm::AArch64::getSVENonRevInstr ( uint16_t  Opcode)

◆ getSVEPseudoMap()

int llvm::AArch64::getSVEPseudoMap ( uint16_t  Opcode)

◆ getSVERevInstr()

int llvm::AArch64::getSVERevInstr ( uint16_t  Opcode)

◆ isX18ReservedByDefault()

bool llvm::AArch64::isX18ReservedByDefault ( const Triple TT)

Definition at line 208 of file AArch64TargetParser.cpp.

Referenced by llvm::AArch64Subtarget::AArch64Subtarget().

◆ parseArch()

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

◆ parseArchExt()

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

Definition at line 227 of file AArch64TargetParser.cpp.

References AArch64ARCHExtNames, and AEK_INVALID.

Referenced by llvm::ARM::appendArchExtFeatures().

◆ parseBranchProtection()

bool llvm::AArch64::parseBranchProtection ( StringRef  Spec,
ParsedBranchProtection PBP,
StringRef Err 
)

Definition at line 248 of file AArch64TargetParser.cpp.

◆ parseCPUArch()

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

Definition at line 235 of file AArch64TargetParser.cpp.

References AArch64CPUNames.

Referenced by llvm::ARM::computeDefaultTargetABI().

Variable Documentation

◆ AArch64ARCHExtNames

const ARM::ExtName llvm::AArch64::AArch64ARCHExtNames[]
Initial value:
= {
#define AARCH64_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE)
}

Definition at line 95 of file AArch64TargetParser.h.

Referenced by getArchExtFeature(), getArchExtName(), and parseArchExt().

◆ AArch64ARCHNames

const ARM::ArchNames<ArchKind> llvm::AArch64::AArch64ARCHNames[]
Initial value:
= {
#define AARCH64_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT)
}

Definition at line 79 of file AArch64TargetParser.h.

Referenced by getArchAttr(), getArchName(), getCPUAttr(), getDefaultExtensions(), getDefaultFPU(), getSubArch(), and parseArch().

◆ AArch64CPUNames

const ARM::CpuNames<ArchKind> llvm::AArch64::AArch64CPUNames[]
Initial value:
= {
#define AARCH64_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT)
}

Definition at line 101 of file AArch64TargetParser.h.

Referenced by fillValidCPUArchList(), getDefaultCPU(), and parseCPUArch().

◆ ArchKinds

const ArchKind llvm::AArch64::ArchKinds[]
Initial value:
= {
#define AARCH64_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT)
}

Definition at line 107 of file AArch64TargetParser.h.

◆ InstrFlagIsPTestLike

const uint64_t llvm::AArch64::InstrFlagIsPTestLike = TSFLAG_INSTR_FLAGS(0x2)
static

Definition at line 496 of file AArch64InstrInfo.h.

Referenced by llvm::AArch64InstrInfo::isPTestLikeOpcode().

◆ InstrFlagIsWhile

const uint64_t llvm::AArch64::InstrFlagIsWhile = TSFLAG_INSTR_FLAGS(0x1)
static

Definition at line 495 of file AArch64InstrInfo.h.

Referenced by llvm::AArch64InstrInfo::isWhileOpcode().

◆ NeonBitsPerVector

const unsigned llvm::AArch64::NeonBitsPerVector = 128

Definition at line 759 of file AArch64BaseInfo.h.

◆ RoundingBitsPos

const unsigned llvm::AArch64::RoundingBitsPos = 22

Definition at line 482 of file AArch64ISelLowering.h.

◆ SVEBitsPerBlock

constexpr unsigned llvm::AArch64::SVEBitsPerBlock = 128
staticconstexpr

◆ SVEMaxBitsPerVector

constexpr unsigned llvm::AArch64::SVEMaxBitsPerVector = 2048
staticconstexpr

Definition at line 758 of file AArch64BaseInfo.h.

Referenced by llvm::AArch64InstrInfo::getMemOpInfo().