LLVM  15.0.0git
Enumerations | Functions | Variables
llvm::AArch64 Namespace Reference

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, AEK_HBC = 1ULL << 40, AEK_MOPS = 1ULL << 41, AEK_PERFMON = 1ULL << 42
}
 
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
}
 
enum  OperandType { OPERAND_IMPLICIT_IMM_0 = MCOI::OPERAND_FIRST_TARGET }
 

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

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 
AEK_HBC 
AEK_MOPS 
AEK_PERFMON 

Definition at line 29 of file AArch64TargetParser.h.

◆ ArchKind

Enumerator
AARCH64_ARCH 

Definition at line 76 of file AArch64TargetParser.h.

◆ DestructiveInstType

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

Definition at line 514 of file AArch64InstrInfo.h.

◆ ElementSizeType

Enumerator
ElementSizeMask 
ElementSizeNone 
ElementSizeB 
ElementSizeH 
ElementSizeS 
ElementSizeD 

Definition at line 505 of file AArch64InstrInfo.h.

◆ FalseLaneType

Enumerator
FalseLanesMask 
FalseLanesZero 
FalseLanesUndef 

Definition at line 528 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.

◆ OperandType

Enumerator
OPERAND_IMPLICIT_IMM_0 

Definition at line 69 of file AArch64MCTargetDesc.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 478 of file AArch64ISelLowering.h.

Function Documentation

◆ createFastISel()

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

Definition at line 5111 of file AArch64FastISel.cpp.

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

◆ fillValidCPUArchList()

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

Definition at line 165 of file AArch64TargetParser.cpp.

References AArch64CPUNames.

◆ getArchAttr()

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

Definition at line 125 of file AArch64TargetParser.cpp.

References AArch64ARCHNames.

◆ getArchExtFeature()

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

◆ getArchExtName()

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

Definition at line 129 of file AArch64TargetParser.cpp.

References AArch64ARCHExtNames.

◆ getArchFeatures()

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

Definition at line 79 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 117 of file AArch64TargetParser.cpp.

References AArch64ARCHNames.

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

◆ getDefaultCPU()

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

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

Definition at line 62 of file AArch64TargetParser.cpp.

References AEK_INVALID.

◆ getSubArch()

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

Definition at line 121 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 172 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 191 of file AArch64TargetParser.cpp.

References AArch64ARCHExtNames, and AEK_INVALID.

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

◆ parseCPUArch()

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

Definition at line 199 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 97 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 81 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 103 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 109 of file AArch64TargetParser.h.

◆ InstrFlagIsPTestLike

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

Definition at line 536 of file AArch64InstrInfo.h.

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

◆ InstrFlagIsWhile

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

Definition at line 535 of file AArch64InstrInfo.h.

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

◆ RoundingBitsPos

const unsigned llvm::AArch64::RoundingBitsPos = 22

Definition at line 487 of file AArch64ISelLowering.h.

◆ SVEBitsPerBlock

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

◆ SVEMaxBitsPerVector

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

Definition at line 761 of file AArch64BaseInfo.h.

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