LLVM 22.0.0git
RISCVISAInfo.cpp File Reference
#include "llvm/TargetParser/RISCVISAInfo.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Errc.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/raw_ostream.h"
#include <array>
#include <atomic>
#include <optional>
#include <string>
#include <vector>
#include "llvm/TargetParser/RISCVTargetParserDef.inc"

Go to the source code of this file.

Classes

struct  ImpliedExtsEntry
struct  RISCVExtBit
struct  RISCVExtensionBitmask

Macros

#define GET_SUPPORTED_EXTENSIONS
#define GET_SUPPORTED_PROFILES
#define GET_IMPLIED_EXTENSIONS
#define GET_RISCVExtensionBitmaskTable_IMPL

Functions

static void verifyTables ()
static void PrintExtension (StringRef Name, StringRef Version, StringRef Description)
static bool stripExperimentalPrefix (StringRef &Ext)
static size_t findLastNonVersionCharacter (StringRef Ext)
static std::optional< RISCVISAUtils::ExtensionVersionfindDefaultVersion (StringRef ExtName)
static StringRef getExtensionTypeDesc (StringRef Ext)
static StringRef getExtensionType (StringRef Ext)
static std::optional< RISCVISAUtils::ExtensionVersionisExperimentalExtension (StringRef Ext)
static Error getError (const Twine &Message)
static Error getErrorForInvalidExt (StringRef ExtName)
static Error getExtensionVersion (StringRef Ext, StringRef In, unsigned &Major, unsigned &Minor, unsigned &ConsumeLength, bool EnableExperimentalExtension, bool ExperimentalExtensionVersionCheck)
static Error getIncompatibleError (StringRef Ext1, StringRef Ext2)
static Error getExtensionRequiresError (StringRef Ext, StringRef ReqExt)
static bool operator< (const ImpliedExtsEntry &LHS, StringRef RHS)
static bool operator< (StringRef LHS, const ImpliedExtsEntry &RHS)

Variables

static const charRISCVGImplications [] = {"i", "m", "a", "f", "d"}
static const charRISCVGImplicationsZi [] = {"zicsr", "zifencei"}
static constexpr StringLiteral CombineIntoExts []

Macro Definition Documentation

◆ GET_IMPLIED_EXTENSIONS

#define GET_IMPLIED_EXTENSIONS

Definition at line 827 of file RISCVISAInfo.cpp.

◆ GET_RISCVExtensionBitmaskTable_IMPL

#define GET_RISCVExtensionBitmaskTable_IMPL

Definition at line 1067 of file RISCVISAInfo.cpp.

◆ GET_SUPPORTED_EXTENSIONS

#define GET_SUPPORTED_EXTENSIONS

Definition at line 51 of file RISCVISAInfo.cpp.

◆ GET_SUPPORTED_PROFILES

#define GET_SUPPORTED_PROFILES

Definition at line 54 of file RISCVISAInfo.cpp.

Function Documentation

◆ findDefaultVersion()

std::optional< RISCVISAUtils::ExtensionVersion > findDefaultVersion ( StringRef ExtName)
static

◆ findLastNonVersionCharacter()

◆ getError()

◆ getErrorForInvalidExt()

Error getErrorForInvalidExt ( StringRef ExtName)
static

◆ getExtensionRequiresError()

Error getExtensionRequiresError ( StringRef Ext,
StringRef ReqExt )
static

Definition at line 734 of file RISCVISAInfo.cpp.

References getError().

◆ getExtensionType()

StringRef getExtensionType ( StringRef Ext)
static

Definition at line 219 of file RISCVISAInfo.cpp.

Referenced by llvm::RISCVISAInfo::parseArchString(), and performMemPairCombine().

◆ getExtensionTypeDesc()

StringRef getExtensionTypeDesc ( StringRef Ext)
static

Definition at line 209 of file RISCVISAInfo.cpp.

Referenced by getErrorForInvalidExt(), and llvm::RISCVISAInfo::parseArchString().

◆ getExtensionVersion()

◆ getIncompatibleError()

Error getIncompatibleError ( StringRef Ext1,
StringRef Ext2 )
static

Definition at line 729 of file RISCVISAInfo.cpp.

References getError().

◆ isExperimentalExtension()

std::optional< RISCVISAUtils::ExtensionVersion > isExperimentalExtension ( StringRef Ext)
static

◆ operator<() [1/2]

bool operator< ( const ImpliedExtsEntry & LHS,
StringRef RHS )
static

Definition at line 819 of file RISCVISAInfo.cpp.

References LHS, and RHS.

◆ operator<() [2/2]

bool operator< ( StringRef LHS,
const ImpliedExtsEntry & RHS )
static

Definition at line 823 of file RISCVISAInfo.cpp.

References LHS, and RHS.

◆ PrintExtension()

◆ stripExperimentalPrefix()

◆ verifyTables()

void verifyTables ( )
static

Definition at line 57 of file RISCVISAInfo.cpp.

References assert(), and llvm::is_sorted().

Variable Documentation

◆ CombineIntoExts

StringLiteral CombineIntoExts[]
staticconstexpr
Initial value:
= {
{"b"}, {"zk"}, {"zkn"}, {"zks"}, {"zvkn"},
{"zvknc"}, {"zvkng"}, {"zvks"}, {"zvksc"}, {"zvksg"},
}

Definition at line 889 of file RISCVISAInfo.cpp.

◆ RISCVGImplications

const char* RISCVGImplications[] = {"i", "m", "a", "f", "d"}
static

Definition at line 48 of file RISCVISAInfo.cpp.

Referenced by llvm::RISCVISAInfo::parseArchString().

◆ RISCVGImplicationsZi

const char* RISCVGImplicationsZi[] = {"zicsr", "zifencei"}
static

Definition at line 49 of file RISCVISAInfo.cpp.

Referenced by llvm::RISCVISAInfo::parseArchString().