LLVM 19.0.0git
|
#include "llvm/Support/RISCVISAInfo.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SetVector.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>
Go to the source code of this file.
Classes | |
struct | ImpliedExtsEntry |
struct | CombinedExtsEntry |
Enumerations | |
enum | RankFlags { RF_Z_EXTENSION = 1 << 6 , RF_S_EXTENSION = 1 << 7 , RF_X_EXTENSION = 1 << 8 } |
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< RISCVISAInfo::ExtensionVersion > | findDefaultVersion (StringRef ExtName) |
static StringRef | getExtensionTypeDesc (StringRef Ext) |
static StringRef | getExtensionType (StringRef Ext) |
static std::optional< RISCVISAInfo::ExtensionVersion > | isExperimentalExtension (StringRef Ext) |
static unsigned | singleLetterExtensionRank (char Ext) |
static unsigned | getExtensionRank (const std::string &ExtName) |
static Error | getStringErrorForInvalidExt (std::string_view ExtName) |
static Error | getExtensionVersion (StringRef Ext, StringRef In, unsigned &Major, unsigned &Minor, unsigned &ConsumeLength, bool EnableExperimentalExtension, bool ExperimentalExtensionVersionCheck) |
static Error | splitExtsByUnderscore (StringRef Exts, std::vector< std::string > &SplitExts) |
static Error | processMultiLetterExtension (StringRef RawExt, MapVector< std::string, RISCVISAInfo::ExtensionVersion, std::map< std::string, unsigned > > &SeenExtMap, bool IgnoreUnknown, bool EnableExperimentalExtension, bool ExperimentalExtensionVersionCheck) |
static Error | processSingleLetterExtension (StringRef &RawExt, MapVector< std::string, RISCVISAInfo::ExtensionVersion, std::map< std::string, unsigned > > &SeenExtMap, bool IgnoreUnknown, bool EnableExperimentalExtension, bool ExperimentalExtensionVersionCheck) |
Variables | |
static constexpr StringLiteral | AllStdExts = "mafdqlcbkjtpvnh" |
static const char * | RISCVGImplications [] |
static const RISCVSupportedExtension | SupportedExtensions [] |
static const RISCVSupportedExtension | SupportedExperimentalExtensions [] |
static constexpr RISCVProfile | SupportedProfiles [] |
static const char * | ImpliedExtsD [] = {"f"} |
static const char * | ImpliedExtsF [] = {"zicsr"} |
static const char * | ImpliedExtsV [] = {"zvl128b", "zve64d"} |
static const char * | ImpliedExtsXTHeadVdot [] = {"v"} |
static const char * | ImpliedExtsXSfvcp [] = {"zve32x"} |
static const char * | ImpliedExtsXSfvfnrclipxfqf [] = {"zve32f"} |
static const char * | ImpliedExtsXSfvfwmaccqqq [] = {"zvfbfmin"} |
static const char * | ImpliedExtsXSfvqmaccdod [] = {"zve32x"} |
static const char * | ImpliedExtsXSfvqmaccqoq [] = {"zve32x"} |
static const char * | ImpliedExtsZabha [] = {"a"} |
static const char * | ImpliedExtsZacas [] = {"a"} |
static const char * | ImpliedExtsZcb [] = {"zca"} |
static const char * | ImpliedExtsZcd [] = {"d", "zca"} |
static const char * | ImpliedExtsZce [] = {"zcb", "zcmp", "zcmt"} |
static const char * | ImpliedExtsZcf [] = {"f", "zca"} |
static const char * | ImpliedExtsZcmop [] = {"zca"} |
static const char * | ImpliedExtsZcmp [] = {"zca"} |
static const char * | ImpliedExtsZcmt [] = {"zca", "zicsr"} |
static const char * | ImpliedExtsZdinx [] = {"zfinx"} |
static const char * | ImpliedExtsZfa [] = {"f"} |
static const char * | ImpliedExtsZfbfmin [] = {"f"} |
static const char * | ImpliedExtsZfh [] = {"zfhmin"} |
static const char * | ImpliedExtsZfhmin [] = {"f"} |
static const char * | ImpliedExtsZfinx [] = {"zicsr"} |
static const char * | ImpliedExtsZhinx [] = {"zhinxmin"} |
static const char * | ImpliedExtsZhinxmin [] = {"zfinx"} |
static const char * | ImpliedExtsZicntr [] = {"zicsr"} |
static const char * | ImpliedExtsZicfiss [] = {"zicsr", "zimop"} |
static const char * | ImpliedExtsZihpm [] = {"zicsr"} |
static const char * | ImpliedExtsZk [] = {"zkn", "zkt", "zkr"} |
static const char * | ImpliedExtsZkn [] |
static const char * | ImpliedExtsZks [] = {"zbkb", "zbkc", "zbkx", "zksed", "zksh"} |
static const char * | ImpliedExtsZvbb [] = {"zvkb"} |
static const char * | ImpliedExtsZve32f [] = {"zve32x", "f"} |
static const char * | ImpliedExtsZve32x [] = {"zvl32b", "zicsr"} |
static const char * | ImpliedExtsZve64d [] = {"zve64f", "d"} |
static const char * | ImpliedExtsZve64f [] = {"zve64x", "zve32f"} |
static const char * | ImpliedExtsZve64x [] = {"zve32x", "zvl64b"} |
static const char * | ImpliedExtsZvfbfmin [] = {"zve32f"} |
static const char * | ImpliedExtsZvfbfwma [] = {"zvfbfmin", "zfbfmin"} |
static const char * | ImpliedExtsZvfh [] = {"zvfhmin", "zfhmin"} |
static const char * | ImpliedExtsZvfhmin [] = {"zve32f"} |
static const char * | ImpliedExtsZvkn [] = {"zvkb", "zvkned", "zvknhb", "zvkt"} |
static const char * | ImpliedExtsZvknc [] = {"zvbc", "zvkn"} |
static const char * | ImpliedExtsZvkng [] = {"zvkg", "zvkn"} |
static const char * | ImpliedExtsZvknhb [] = {"zve64x"} |
static const char * | ImpliedExtsZvks [] = {"zvkb", "zvksed", "zvksh", "zvkt"} |
static const char * | ImpliedExtsZvksc [] = {"zvbc", "zvks"} |
static const char * | ImpliedExtsZvksg [] = {"zvkg", "zvks"} |
static const char * | ImpliedExtsZvl1024b [] = {"zvl512b"} |
static const char * | ImpliedExtsZvl128b [] = {"zvl64b"} |
static const char * | ImpliedExtsZvl16384b [] = {"zvl8192b"} |
static const char * | ImpliedExtsZvl2048b [] = {"zvl1024b"} |
static const char * | ImpliedExtsZvl256b [] = {"zvl128b"} |
static const char * | ImpliedExtsZvl32768b [] = {"zvl16384b"} |
static const char * | ImpliedExtsZvl4096b [] = {"zvl2048b"} |
static const char * | ImpliedExtsZvl512b [] = {"zvl256b"} |
static const char * | ImpliedExtsZvl64b [] = {"zvl32b"} |
static const char * | ImpliedExtsZvl65536b [] = {"zvl32768b"} |
static const char * | ImpliedExtsZvl8192b [] = {"zvl4096b"} |
static constexpr ImpliedExtsEntry | ImpliedExts [] |
static constexpr CombinedExtsEntry | CombineIntoExts [] |
enum RankFlags |
Enumerator | |
---|---|
RF_Z_EXTENSION | |
RF_S_EXTENSION | |
RF_X_EXTENSION |
Definition at line 483 of file RISCVISAInfo.cpp.
|
static |
Definition at line 375 of file RISCVISAInfo.cpp.
References I, llvm::lower_bound(), SupportedExperimentalExtensions, and SupportedExtensions.
Referenced by getExtensionVersion(), and llvm::RISCVISAInfo::parseArchString().
|
static |
Definition at line 348 of file RISCVISAInfo.cpp.
References assert(), and isDigit().
Referenced by llvm::RISCVISAInfo::getTargetFeatureForExtension(), llvm::RISCVISAInfo::isSupportedExtensionWithVersion(), and processMultiLetterExtension().
Definition at line 511 of file RISCVISAInfo.cpp.
References assert(), RF_S_EXTENSION, RF_X_EXTENSION, RF_Z_EXTENSION, and singleLetterExtensionRank().
Referenced by llvm::RISCVISAInfo::compareExtension().
Definition at line 405 of file RISCVISAInfo.cpp.
Referenced by performMemPairCombine(), and processMultiLetterExtension().
Definition at line 395 of file RISCVISAInfo.cpp.
Referenced by getStringErrorForInvalidExt(), and processMultiLetterExtension().
|
static |
Definition at line 594 of file RISCVISAInfo.cpp.
References llvm::createStringError(), llvm::StringRef::empty(), findDefaultVersion(), llvm::StringRef::getAsInteger(), getStringErrorForInvalidExt(), llvm::invalid_argument, isDigit(), isExperimentalExtension(), llvm::RISCVISAInfo::isSupportedExtension(), llvm::StringRef::size(), llvm::StringRef::str(), and llvm::Error::success().
Referenced by llvm::RISCVISAInfo::isSupportedExtensionWithVersion(), llvm::RISCVISAInfo::parseArchString(), processMultiLetterExtension(), and processSingleLetterExtension().
|
static |
Definition at line 578 of file RISCVISAInfo.cpp.
References llvm::createStringError(), getExtensionTypeDesc(), and llvm::invalid_argument.
Referenced by getExtensionVersion(), and llvm::RISCVISAInfo::parseArchString().
|
static |
Definition at line 416 of file RISCVISAInfo.cpp.
References I, llvm::lower_bound(), and SupportedExperimentalExtensions.
Referenced by getExtensionVersion(), llvm::RISCVISAInfo::getTargetFeatureForExtension(), and llvm::RISCVISAInfo::toFeatures().
Definition at line 301 of file RISCVISAInfo.cpp.
References llvm::StringRef::empty(), llvm::raw_ostream::indent(), llvm::left_justify(), Name, and llvm::outs().
Referenced by llvm::riscvExtensionsHelp().
|
static |
Definition at line 810 of file RISCVISAInfo.cpp.
References llvm::consumeError(), llvm::createStringError(), findLastNonVersionCharacter(), getExtensionType(), getExtensionTypeDesc(), getExtensionVersion(), llvm::invalid_argument, llvm::RISCVISAInfo::isSupportedExtension(), Name, llvm::StringRef::substr(), and llvm::Error::success().
Referenced by llvm::RISCVISAInfo::parseArchString().
|
static |
Definition at line 856 of file RISCVISAInfo.cpp.
References llvm::StringRef::consume_front(), llvm::consumeError(), llvm::createStringError(), getExtensionVersion(), llvm::invalid_argument, llvm::RISCVISAInfo::isSupportedExtension(), Name, llvm::StringRef::substr(), llvm::Error::success(), and llvm::StringRef::take_front().
Referenced by llvm::RISCVISAInfo::parseArchString().
Definition at line 491 of file RISCVISAInfo.cpp.
References AllStdExts, assert(), llvm::StringRef::find(), llvm::StringRef::npos, and llvm::StringRef::size().
Referenced by getExtensionRank().
|
static |
Definition at line 792 of file RISCVISAInfo.cpp.
References llvm::createStringError(), llvm::StringRef::empty(), llvm::invalid_argument, llvm::StringRef::split(), and llvm::Error::success().
Referenced by llvm::RISCVISAInfo::parseArchString().
Definition at line 337 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::hasExtension(), llvm::RISCVISAInfo::isSupportedExtensionFeature(), and llvm::RISCVISAInfo::parseFeatures().
|
static |
Definition at line 288 of file RISCVISAInfo.cpp.
References assert(), llvm::is_sorted(), SupportedExperimentalExtensions, and SupportedExtensions.
Referenced by llvm::RISCVISAInfo::isSupportedExtension().
|
staticconstexpr |
Definition at line 46 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::parseArchString(), and singleLetterExtensionRank().
|
staticconstexpr |
Definition at line 1296 of file RISCVISAInfo.cpp.
|
staticconstexpr |
Definition at line 1185 of file RISCVISAInfo.cpp.
Referenced by llvm::AArch64::CpuInfo::getImpliedExtensions().
Definition at line 1111 of file RISCVISAInfo.cpp.
Definition at line 1112 of file RISCVISAInfo.cpp.
Definition at line 1113 of file RISCVISAInfo.cpp.
Definition at line 1115 of file RISCVISAInfo.cpp.
Definition at line 1116 of file RISCVISAInfo.cpp.
Definition at line 1117 of file RISCVISAInfo.cpp.
Definition at line 1118 of file RISCVISAInfo.cpp.
Definition at line 1119 of file RISCVISAInfo.cpp.
Definition at line 1114 of file RISCVISAInfo.cpp.
Definition at line 1120 of file RISCVISAInfo.cpp.
Definition at line 1121 of file RISCVISAInfo.cpp.
Definition at line 1122 of file RISCVISAInfo.cpp.
Definition at line 1123 of file RISCVISAInfo.cpp.
Definition at line 1124 of file RISCVISAInfo.cpp.
Definition at line 1125 of file RISCVISAInfo.cpp.
Definition at line 1126 of file RISCVISAInfo.cpp.
Definition at line 1127 of file RISCVISAInfo.cpp.
Definition at line 1128 of file RISCVISAInfo.cpp.
Definition at line 1129 of file RISCVISAInfo.cpp.
Definition at line 1130 of file RISCVISAInfo.cpp.
Definition at line 1131 of file RISCVISAInfo.cpp.
Definition at line 1132 of file RISCVISAInfo.cpp.
Definition at line 1133 of file RISCVISAInfo.cpp.
Definition at line 1134 of file RISCVISAInfo.cpp.
Definition at line 1135 of file RISCVISAInfo.cpp.
Definition at line 1136 of file RISCVISAInfo.cpp.
Definition at line 1138 of file RISCVISAInfo.cpp.
Definition at line 1137 of file RISCVISAInfo.cpp.
Definition at line 1139 of file RISCVISAInfo.cpp.
Definition at line 1140 of file RISCVISAInfo.cpp.
Definition at line 1141 of file RISCVISAInfo.cpp.
Definition at line 1143 of file RISCVISAInfo.cpp.
Definition at line 1144 of file RISCVISAInfo.cpp.
Definition at line 1145 of file RISCVISAInfo.cpp.
Definition at line 1146 of file RISCVISAInfo.cpp.
Definition at line 1147 of file RISCVISAInfo.cpp.
Definition at line 1148 of file RISCVISAInfo.cpp.
Definition at line 1149 of file RISCVISAInfo.cpp.
Definition at line 1150 of file RISCVISAInfo.cpp.
Definition at line 1151 of file RISCVISAInfo.cpp.
Definition at line 1152 of file RISCVISAInfo.cpp.
Definition at line 1153 of file RISCVISAInfo.cpp.
Definition at line 1154 of file RISCVISAInfo.cpp.
Definition at line 1155 of file RISCVISAInfo.cpp.
Definition at line 1156 of file RISCVISAInfo.cpp.
Definition at line 1157 of file RISCVISAInfo.cpp.
Definition at line 1158 of file RISCVISAInfo.cpp.
Definition at line 1159 of file RISCVISAInfo.cpp.
Definition at line 1160 of file RISCVISAInfo.cpp.
Definition at line 1161 of file RISCVISAInfo.cpp.
Definition at line 1162 of file RISCVISAInfo.cpp.
Definition at line 1163 of file RISCVISAInfo.cpp.
Definition at line 1164 of file RISCVISAInfo.cpp.
Definition at line 1165 of file RISCVISAInfo.cpp.
Definition at line 1166 of file RISCVISAInfo.cpp.
Definition at line 1167 of file RISCVISAInfo.cpp.
Definition at line 1168 of file RISCVISAInfo.cpp.
Definition at line 1169 of file RISCVISAInfo.cpp.
Definition at line 1170 of file RISCVISAInfo.cpp.
Definition at line 1171 of file RISCVISAInfo.cpp.
Definition at line 48 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::parseArchString().
|
static |
Definition at line 223 of file RISCVISAInfo.cpp.
Referenced by findDefaultVersion(), isExperimentalExtension(), llvm::RISCVISAInfo::isSupportedExtension(), llvm::RISCVISAInfo::isSupportedExtensionFeature(), llvm::RISCVISAInfo::parseFeatures(), llvm::riscvExtensionsHelp(), llvm::RISCVISAInfo::toFeatures(), and verifyTables().
|
static |
Definition at line 53 of file RISCVISAInfo.cpp.
Referenced by findDefaultVersion(), llvm::RISCVISAInfo::isSupportedExtension(), llvm::RISCVISAInfo::isSupportedExtensionFeature(), llvm::RISCVISAInfo::parseFeatures(), llvm::riscvExtensionsHelp(), llvm::RISCVISAInfo::toFeatures(), and verifyTables().
|
staticconstexpr |
Definition at line 252 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::parseArchString().