LLVM 18.0.0git
|
#include "llvm/Support/RISCVISAInfo.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 (const std::string Name, const std::string Version, const std::string Description) |
static bool | stripExperimentalPrefix (StringRef &Ext) |
static size_t | findLastNonVersionCharacter (StringRef Ext) |
static std::optional< RISCVExtensionVersion > | findDefaultVersion (StringRef ExtName) |
static StringRef | getExtensionTypeDesc (StringRef Ext) |
static StringRef | getExtensionType (StringRef Ext) |
static std::optional< RISCVExtensionVersion > | isExperimentalExtension (StringRef Ext) |
static unsigned | singleLetterExtensionRank (char Ext) |
static unsigned | getExtensionRank (const std::string &ExtName) |
static Error | getExtensionVersion (StringRef Ext, StringRef In, unsigned &Major, unsigned &Minor, unsigned &ConsumeLength, bool EnableExperimentalExtension, bool ExperimentalExtensionVersionCheck) |
Variables | |
static constexpr StringLiteral | AllStdExts = "mafdqlcbkjtpvnh" |
static const char * | RISCVGImplications [] |
static const RISCVSupportedExtension | SupportedExtensions [] |
static const RISCVSupportedExtension | SupportedExperimentalExtensions [] |
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 [] = {"zve32f", "zvfbfmin"} |
static const char * | ImpliedExtsXsfvqmaccdod [] = {"zve32x"} |
static const char * | ImpliedExtsXsfvqmaccqoq [] = {"zve32x"} |
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 * | ImpliedExtsZcmp [] = {"zca"} |
static const char * | ImpliedExtsZcmt [] = {"zca"} |
static const char * | ImpliedExtsZdinx [] = {"zfinx"} |
static const char * | ImpliedExtsZfa [] = {"f"} |
static const char * | ImpliedExtsZfbfmin [] = {"f"} |
static const char * | ImpliedExtsZfh [] = {"f"} |
static const char * | ImpliedExtsZfhmin [] = {"f"} |
static const char * | ImpliedExtsZfinx [] = {"zicsr"} |
static const char * | ImpliedExtsZhinx [] = {"zfinx"} |
static const char * | ImpliedExtsZhinxmin [] = {"zfinx"} |
static const char * | ImpliedExtsZicntr [] = {"zicsr"} |
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", "zfbfmin"} |
static const char * | ImpliedExtsZvfbfwma [] = {"zvfbfmin"} |
static const char * | ImpliedExtsZvfh [] = {"zve32f", "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 402 of file RISCVISAInfo.cpp.
|
static |
Definition at line 291 of file RISCVISAInfo.cpp.
References I, llvm::lower_bound(), SupportedExperimentalExtensions, and SupportedExtensions.
Referenced by getExtensionVersion(), and llvm::RISCVISAInfo::parseArchString().
|
static |
Definition at line 264 of file RISCVISAInfo.cpp.
References assert(), and isDigit().
Referenced by llvm::RISCVISAInfo::getTargetFeatureForExtension(), llvm::RISCVISAInfo::isSupportedExtensionWithVersion(), and llvm::RISCVISAInfo::parseArchString().
Definition at line 430 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 324 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::parseArchString(), and performMemPairCombine().
Definition at line 314 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::parseArchString().
|
static |
Definition at line 499 of file RISCVISAInfo.cpp.
References llvm::createStringError(), llvm::StringRef::empty(), findDefaultVersion(), llvm::StringRef::getAsInteger(), llvm::invalid_argument, isDigit(), isExperimentalExtension(), llvm::RISCVISAInfo::isSupportedExtension(), llvm::StringRef::size(), llvm::StringRef::str(), and llvm::Error::success().
Referenced by llvm::RISCVISAInfo::isSupportedExtensionWithVersion(), and llvm::RISCVISAInfo::parseArchString().
|
static |
Definition at line 335 of file RISCVISAInfo.cpp.
References I, llvm::lower_bound(), and SupportedExperimentalExtensions.
Referenced by getExtensionVersion(), llvm::RISCVISAInfo::getTargetFeatureForExtension(), llvm::RISCVISAInfo::toFeatures(), and llvm::RISCVISAInfo::toFeatureVector().
|
static |
Definition at line 218 of file RISCVISAInfo.cpp.
References llvm::format(), Name, and llvm::outs().
Referenced by llvm::riscvExtensionsHelp().
Definition at line 410 of file RISCVISAInfo.cpp.
References AllStdExts, assert(), llvm::StringRef::find(), llvm::StringRef::npos, and llvm::StringRef::size().
Referenced by getExtensionRank().
Definition at line 253 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::hasExtension(), llvm::RISCVISAInfo::isSupportedExtensionFeature(), and llvm::RISCVISAInfo::parseFeatures().
|
static |
Definition at line 205 of file RISCVISAInfo.cpp.
References assert(), llvm::is_sorted(), SupportedExperimentalExtensions, and SupportedExtensions.
Referenced by llvm::RISCVISAInfo::isSupportedExtension().
|
staticconstexpr |
Definition at line 45 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::parseArchString(), and singleLetterExtensionRank().
|
staticconstexpr |
Definition at line 1173 of file RISCVISAInfo.cpp.
|
staticconstexpr |
Definition at line 1065 of file RISCVISAInfo.cpp.
Referenced by llvm::AArch64::CpuInfo::getImpliedExtensions().
Definition at line 994 of file RISCVISAInfo.cpp.
Definition at line 995 of file RISCVISAInfo.cpp.
Definition at line 996 of file RISCVISAInfo.cpp.
Definition at line 998 of file RISCVISAInfo.cpp.
Definition at line 999 of file RISCVISAInfo.cpp.
Definition at line 1000 of file RISCVISAInfo.cpp.
Definition at line 1001 of file RISCVISAInfo.cpp.
Definition at line 1002 of file RISCVISAInfo.cpp.
Definition at line 997 of file RISCVISAInfo.cpp.
Definition at line 1003 of file RISCVISAInfo.cpp.
Definition at line 1004 of file RISCVISAInfo.cpp.
Definition at line 1005 of file RISCVISAInfo.cpp.
Definition at line 1006 of file RISCVISAInfo.cpp.
Definition at line 1007 of file RISCVISAInfo.cpp.
Definition at line 1008 of file RISCVISAInfo.cpp.
Definition at line 1009 of file RISCVISAInfo.cpp.
Definition at line 1010 of file RISCVISAInfo.cpp.
Definition at line 1011 of file RISCVISAInfo.cpp.
Definition at line 1012 of file RISCVISAInfo.cpp.
Definition at line 1013 of file RISCVISAInfo.cpp.
Definition at line 1014 of file RISCVISAInfo.cpp.
Definition at line 1015 of file RISCVISAInfo.cpp.
Definition at line 1016 of file RISCVISAInfo.cpp.
Definition at line 1017 of file RISCVISAInfo.cpp.
Definition at line 1018 of file RISCVISAInfo.cpp.
Definition at line 1019 of file RISCVISAInfo.cpp.
Definition at line 1020 of file RISCVISAInfo.cpp.
Definition at line 1021 of file RISCVISAInfo.cpp.
Definition at line 1023 of file RISCVISAInfo.cpp.
Definition at line 1024 of file RISCVISAInfo.cpp.
Definition at line 1025 of file RISCVISAInfo.cpp.
Definition at line 1026 of file RISCVISAInfo.cpp.
Definition at line 1027 of file RISCVISAInfo.cpp.
Definition at line 1028 of file RISCVISAInfo.cpp.
Definition at line 1029 of file RISCVISAInfo.cpp.
Definition at line 1030 of file RISCVISAInfo.cpp.
Definition at line 1031 of file RISCVISAInfo.cpp.
Definition at line 1032 of file RISCVISAInfo.cpp.
Definition at line 1033 of file RISCVISAInfo.cpp.
Definition at line 1034 of file RISCVISAInfo.cpp.
Definition at line 1035 of file RISCVISAInfo.cpp.
Definition at line 1036 of file RISCVISAInfo.cpp.
Definition at line 1037 of file RISCVISAInfo.cpp.
Definition at line 1038 of file RISCVISAInfo.cpp.
Definition at line 1039 of file RISCVISAInfo.cpp.
Definition at line 1040 of file RISCVISAInfo.cpp.
Definition at line 1041 of file RISCVISAInfo.cpp.
Definition at line 1042 of file RISCVISAInfo.cpp.
Definition at line 1043 of file RISCVISAInfo.cpp.
Definition at line 1044 of file RISCVISAInfo.cpp.
Definition at line 1045 of file RISCVISAInfo.cpp.
Definition at line 1046 of file RISCVISAInfo.cpp.
Definition at line 1047 of file RISCVISAInfo.cpp.
Definition at line 1048 of file RISCVISAInfo.cpp.
Definition at line 1049 of file RISCVISAInfo.cpp.
Definition at line 1050 of file RISCVISAInfo.cpp.
Definition at line 1051 of file RISCVISAInfo.cpp.
Definition at line 47 of file RISCVISAInfo.cpp.
Referenced by llvm::RISCVISAInfo::parseArchString().
|
static |
Definition at line 172 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 52 of file RISCVISAInfo.cpp.
Referenced by findDefaultVersion(), llvm::RISCVISAInfo::isSupportedExtension(), llvm::RISCVISAInfo::isSupportedExtensionFeature(), llvm::RISCVISAInfo::parseFeatures(), llvm::riscvExtensionsHelp(), llvm::RISCVISAInfo::toFeatures(), and verifyTables().