LLVM 19.0.0git
Classes | Namespaces | Typedefs | Enumerations | Functions | Variables
AArch64TargetParser.h File Reference
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/Bitset.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/VersionTuple.h"
#include <array>
#include <vector>

Go to the source code of this file.

Classes

struct  llvm::AArch64::ExtensionInfo
 
struct  llvm::AArch64::ExtensionSet
 
struct  llvm::AArch64::ExtensionDependency
 
struct  llvm::AArch64::ArchInfo
 
struct  llvm::AArch64::CpuInfo
 
struct  llvm::AArch64::Alias
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
namespace  llvm::AArch64
 

Typedefs

using llvm::AArch64::ExtensionBitset = Bitset< AEK_NUM_EXTENSIONS >
 

Enumerations

enum  llvm::AArch64::CPUFeatures {
  llvm::AArch64::FEAT_RNG , llvm::AArch64::FEAT_FLAGM , llvm::AArch64::FEAT_FLAGM2 , llvm::AArch64::FEAT_FP16FML ,
  llvm::AArch64::FEAT_DOTPROD , llvm::AArch64::FEAT_SM4 , llvm::AArch64::FEAT_RDM , llvm::AArch64::FEAT_LSE ,
  llvm::AArch64::FEAT_FP , llvm::AArch64::FEAT_SIMD , llvm::AArch64::FEAT_CRC , llvm::AArch64::FEAT_SHA1 ,
  llvm::AArch64::FEAT_SHA2 , llvm::AArch64::FEAT_SHA3 , llvm::AArch64::FEAT_AES , llvm::AArch64::FEAT_PMULL ,
  llvm::AArch64::FEAT_FP16 , llvm::AArch64::FEAT_DIT , llvm::AArch64::FEAT_DPB , llvm::AArch64::FEAT_DPB2 ,
  llvm::AArch64::FEAT_JSCVT , llvm::AArch64::FEAT_FCMA , llvm::AArch64::FEAT_RCPC , llvm::AArch64::FEAT_RCPC2 ,
  llvm::AArch64::FEAT_FRINTTS , llvm::AArch64::FEAT_DGH , llvm::AArch64::FEAT_I8MM , llvm::AArch64::FEAT_BF16 ,
  llvm::AArch64::FEAT_EBF16 , llvm::AArch64::FEAT_RPRES , llvm::AArch64::FEAT_SVE , llvm::AArch64::FEAT_SVE_BF16 ,
  llvm::AArch64::FEAT_SVE_EBF16 , llvm::AArch64::FEAT_SVE_I8MM , llvm::AArch64::FEAT_SVE_F32MM , llvm::AArch64::FEAT_SVE_F64MM ,
  llvm::AArch64::FEAT_SVE2 , llvm::AArch64::FEAT_SVE_AES , llvm::AArch64::FEAT_SVE_PMULL128 , llvm::AArch64::FEAT_SVE_BITPERM ,
  llvm::AArch64::FEAT_SVE_SHA3 , llvm::AArch64::FEAT_SVE_SM4 , llvm::AArch64::FEAT_SME , llvm::AArch64::FEAT_MEMTAG ,
  llvm::AArch64::FEAT_MEMTAG2 , llvm::AArch64::FEAT_MEMTAG3 , llvm::AArch64::FEAT_SB , llvm::AArch64::FEAT_PREDRES ,
  llvm::AArch64::FEAT_SSBS , llvm::AArch64::FEAT_SSBS2 , llvm::AArch64::FEAT_BTI , llvm::AArch64::FEAT_LS64 ,
  llvm::AArch64::FEAT_LS64_V , llvm::AArch64::FEAT_LS64_ACCDATA , llvm::AArch64::FEAT_WFXT , llvm::AArch64::FEAT_SME_F64 ,
  llvm::AArch64::FEAT_SME_I64 , llvm::AArch64::FEAT_SME2 , llvm::AArch64::FEAT_RCPC3 , llvm::AArch64::FEAT_MOPS ,
  llvm::AArch64::FEAT_MAX , llvm::AArch64::FEAT_EXT = 62 , llvm::AArch64::FEAT_INIT
}
 
enum  llvm::AArch64::ArchExtKind : unsigned {
  llvm::AArch64::AEK_NONE = 1 , llvm::AArch64::AEK_CRC = 2 , llvm::AArch64::AEK_CRYPTO = 3 , llvm::AArch64::AEK_FP = 4 ,
  llvm::AArch64::AEK_SIMD = 5 , llvm::AArch64::AEK_FP16 = 6 , llvm::AArch64::AEK_PROFILE = 7 , llvm::AArch64::AEK_RAS = 8 ,
  llvm::AArch64::AEK_LSE = 9 , llvm::AArch64::AEK_SVE = 10 , llvm::AArch64::AEK_DOTPROD = 11 , llvm::AArch64::AEK_RCPC = 12 ,
  llvm::AArch64::AEK_RDM = 13 , llvm::AArch64::AEK_SM4 = 14 , llvm::AArch64::AEK_SHA3 = 15 , llvm::AArch64::AEK_SHA2 = 16 ,
  llvm::AArch64::AEK_AES = 17 , llvm::AArch64::AEK_FP16FML = 18 , llvm::AArch64::AEK_RAND = 19 , llvm::AArch64::AEK_MTE = 20 ,
  llvm::AArch64::AEK_SSBS = 21 , llvm::AArch64::AEK_SB = 22 , llvm::AArch64::AEK_PREDRES = 23 , llvm::AArch64::AEK_SVE2 = 24 ,
  llvm::AArch64::AEK_SVE2AES = 25 , llvm::AArch64::AEK_SVE2SM4 = 26 , llvm::AArch64::AEK_SVE2SHA3 = 27 , llvm::AArch64::AEK_SVE2BITPERM = 28 ,
  llvm::AArch64::AEK_TME = 29 , llvm::AArch64::AEK_BF16 = 30 , llvm::AArch64::AEK_I8MM = 31 , llvm::AArch64::AEK_F32MM = 32 ,
  llvm::AArch64::AEK_F64MM = 33 , llvm::AArch64::AEK_LS64 = 34 , llvm::AArch64::AEK_BRBE = 35 , llvm::AArch64::AEK_PAUTH = 36 ,
  llvm::AArch64::AEK_FLAGM = 37 , llvm::AArch64::AEK_SME = 38 , llvm::AArch64::AEK_SMEF64F64 = 39 , llvm::AArch64::AEK_SMEI16I64 = 40 ,
  llvm::AArch64::AEK_HBC = 41 , llvm::AArch64::AEK_MOPS = 42 , llvm::AArch64::AEK_PERFMON = 43 , llvm::AArch64::AEK_SME2 = 44 ,
  llvm::AArch64::AEK_SVE2p1 = 45 , llvm::AArch64::AEK_SME2p1 = 46 , llvm::AArch64::AEK_B16B16 = 47 , llvm::AArch64::AEK_SMEF16F16 = 48 ,
  llvm::AArch64::AEK_CSSC = 49 , llvm::AArch64::AEK_RCPC3 = 50 , llvm::AArch64::AEK_THE = 51 , llvm::AArch64::AEK_D128 = 52 ,
  llvm::AArch64::AEK_LSE128 = 53 , llvm::AArch64::AEK_SPECRES2 = 54 , llvm::AArch64::AEK_RASv2 = 55 , llvm::AArch64::AEK_ITE = 56 ,
  llvm::AArch64::AEK_GCS = 57 , llvm::AArch64::AEK_FPMR = 58 , llvm::AArch64::AEK_FP8 = 59 , llvm::AArch64::AEK_FAMINMAX = 60 ,
  llvm::AArch64::AEK_FP8FMA = 61 , llvm::AArch64::AEK_SSVE_FP8FMA = 62 , llvm::AArch64::AEK_FP8DOT2 = 63 , llvm::AArch64::AEK_SSVE_FP8DOT2 = 64 ,
  llvm::AArch64::AEK_FP8DOT4 = 65 , llvm::AArch64::AEK_SSVE_FP8DOT4 = 66 , llvm::AArch64::AEK_LUT = 67 , llvm::AArch64::AEK_SME_LUTv2 = 68 ,
  llvm::AArch64::AEK_SMEF8F16 = 69 , llvm::AArch64::AEK_SMEF8F32 = 70 , llvm::AArch64::AEK_SMEFA64 = 71 , llvm::AArch64::AEK_CPA = 72 ,
  llvm::AArch64::AEK_PAUTHLR = 73 , llvm::AArch64::AEK_TLBIW = 74 , llvm::AArch64::AEK_JSCVT = 75 , llvm::AArch64::AEK_FCMA = 76 ,
  llvm::AArch64::AEK_NUM_EXTENSIONS
}
 
enum  llvm::AArch64::ArchProfile { llvm::AArch64::AProfile = 'A' , llvm::AArch64::RProfile = 'R' , llvm::AArch64::InvalidProfile = '?' }
 

Functions

bool llvm::AArch64::getExtensionFeatures (const AArch64::ExtensionBitset &Extensions, std::vector< StringRef > &Features)
 
StringRef llvm::AArch64::getArchExtFeature (StringRef ArchExt)
 
StringRef llvm::AArch64::resolveCPUAlias (StringRef CPU)
 
StringRef llvm::AArch64::resolveExtAlias (StringRef ArchExt)
 
const ArchInfo * llvm::AArch64::getArchForCpu (StringRef CPU)
 
const ArchInfo * llvm::AArch64::parseArch (StringRef Arch)
 
std::optional< ExtensionInfo > llvm::AArch64::parseArchExtension (StringRef Extension)
 
std::optional< CpuInfo > llvm::AArch64::parseCpu (StringRef Name)
 
void llvm::AArch64::fillValidCPUArchList (SmallVectorImpl< StringRef > &Values)
 
bool llvm::AArch64::isX18ReservedByDefault (const Triple &TT)
 
uint64_t llvm::AArch64::getCpuSupportsMask (ArrayRef< StringRef > FeatureStrs)
 
void llvm::AArch64::PrintSupportedExtensions (StringMap< StringRef > DescMap)
 

Variables

constexpr ExtensionInfo llvm::AArch64::Extensions []
 
constexpr ExtensionDependency llvm::AArch64::ExtensionDependencies []
 
constexpr ArchInfo llvm::AArch64::ARMV8A
 
constexpr ArchInfo llvm::AArch64::ARMV8_1A
 
constexpr ArchInfo llvm::AArch64::ARMV8_2A
 
constexpr ArchInfo llvm::AArch64::ARMV8_3A
 
constexpr ArchInfo llvm::AArch64::ARMV8_4A
 
constexpr ArchInfo llvm::AArch64::ARMV8_5A = { VersionTuple{8, 5}, AProfile, "armv8.5-a", "+v8.5a", (ARMV8_4A.DefaultExts)}
 
constexpr ArchInfo llvm::AArch64::ARMV8_6A
 
constexpr ArchInfo llvm::AArch64::ARMV8_7A = { VersionTuple{8, 7}, AProfile, "armv8.7-a", "+v8.7a", (ARMV8_6A.DefaultExts)}
 
constexpr ArchInfo llvm::AArch64::ARMV8_8A
 
constexpr ArchInfo llvm::AArch64::ARMV8_9A
 
constexpr ArchInfo llvm::AArch64::ARMV9A
 
constexpr ArchInfo llvm::AArch64::ARMV9_1A
 
constexpr ArchInfo llvm::AArch64::ARMV9_2A = { VersionTuple{9, 2}, AProfile, "armv9.2-a", "+v9.2a", (ARMV9_1A.DefaultExts)}
 
constexpr ArchInfo llvm::AArch64::ARMV9_3A
 
constexpr ArchInfo llvm::AArch64::ARMV9_4A
 
constexpr ArchInfo llvm::AArch64::ARMV9_5A
 
constexpr ArchInfo llvm::AArch64::ARMV8R
 
static constexpr std::array< const ArchInfo *, 17 > llvm::AArch64::ArchInfos
 
constexpr CpuInfo llvm::AArch64::CpuInfos []
 
constexpr Alias llvm::AArch64::CpuAliases []
 
constexpr Alias llvm::AArch64::ExtAliases [] = {{"rdma", "rdm"}}