llvm-capstone/llvm/lib/Support
Craig Topper 8dc92142e3 [X86] Replace PROC macros with an enum and a lookup table of processor information.
This patch removes the PROC macro in favor of CPUKind enum and a
table that contains information about CPUs.

The current information in the table is the CPU name, CPUKind enum
value, key feature for target multiversioning, and Is64Bit capable.
For the strings that are aliases, I've duplicated the information
in the table. This means there are more rows in the table than
CPUKind enums.

This replaces multiple StringSwitch's with loops through the table.
They are linear searches due to the table being more logically
ordered than alphabetical. The StringSwitch's would have also been
linear. I've used StringLiteral on the strings in the table so we
can quickly check the length while searching.

I contemplated having a CPUKind for each string so there was a 1:1
mapping, but didn't want to spread more names to the places that
use the enum.

My ultimate goal here is to store the features for each CPU as a
bitset within the table. Hoping to use constexpr to make this
composable so we can group features and inherit them. After the
table lookup we can turn the bitset into a list of strings for the
frontend. The current switch we have for selecting features for
CPUs has become difficult to maintain while trying to express
inheritance relationships.

Differential Revision: https://reviews.llvm.org/D82414
2020-06-24 10:46:25 -07:00
..
Unix [Support] Get process statistics in ExecuteAndWait and Wait 2020-06-17 13:39:59 +07:00
Windows [Support] Fix building for mingw on a case sensitive file system 2020-06-20 00:39:22 +03:00
AArch64TargetParser.cpp AArch6/ARMTargetParser.h - move Triple.h dependency down to cpp file. NFC. 2020-05-08 11:10:28 +01:00
ABIBreak.cpp
Allocator.cpp
AMDGPUMetadata.cpp
APFloat.cpp Fix convertBFloatAPFloatToAPInt for NaN/Inf values 2020-06-05 17:22:43 -07:00
APInt.cpp [ADT] Mix the bit width into APInt's hash_value 2020-04-14 18:16:15 +02:00
APSInt.cpp ADT: Fix that APSInt's string constructor claims it requires 5 bits to store a zero 2020-06-10 16:36:33 +02:00
ARMAttributeParser.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
ARMBuildAttrs.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
ARMTargetParser.cpp AArch6/ARMTargetParser.h - move Triple.h dependency down to cpp file. NFC. 2020-05-08 11:10:28 +01:00
ARMWinEH.cpp
Atomic.cpp
BinaryStreamError.cpp
BinaryStreamReader.cpp
BinaryStreamRef.cpp
BinaryStreamWriter.cpp
BlockFrequency.cpp
BranchProbability.cpp Make some static class members constexpr 2020-04-22 12:25:01 +02:00
BuryPointer.cpp
CachePruning.cpp CachePruning.h - reduce StringRef.h to Optional.h include. NFC 2020-05-08 14:06:53 +01:00
Chrono.cpp
circular_raw_ostream.cpp
CMakeLists.txt [X86] Move CPUKind enum from clang to llvm/lib/Support. NFCI 2020-06-09 12:52:41 -07:00
CodeGenCoverage.cpp Introduce llvm::sys::Process::getProcessId() and adopt it 2020-04-16 15:05:37 +03:00
COM.cpp
CommandLine.cpp [llvm] [CommandLine] Do not suggest really hidden opts in nearest lookup 2020-06-17 19:00:26 +02:00
Compression.cpp [Support] Don't initialize buffer allocated by zlib::uncompress 2020-05-03 15:01:52 +02:00
ConvertUTF.cpp
ConvertUTFWrapper.cpp
COPYRIGHT.regex
CrashRecoveryContext.cpp
CRC.cpp Revert abb00753 "build: reduce CMake handling for zlib" (PR44780) 2020-03-03 11:03:09 +01:00
DAGDeltaAlgorithm.cpp
DataExtractor.cpp [Support] Make DataExtractor error messages more clear 2020-06-02 12:57:51 +02:00
Debug.cpp
DebugCounter.cpp
DeltaAlgorithm.cpp
DJB.cpp
DynamicLibrary.cpp
ELFAttributeParser.cpp [RISCV] Support RISC-V ELF attributes sections in llvm-readobj. 2020-04-01 21:50:11 +08:00
ELFAttributes.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
Errno.cpp
Error.cpp
ErrorHandling.cpp
ExtensibleRTTI.cpp [Support] Add missing files from e823068306. 2020-04-13 13:30:45 -07:00
FileCheck.cpp [FileCheck] Implement * and / operators for ExpressionValue. 2020-06-17 09:39:17 +00:00
FileCheckImpl.h [FileCheck] Implement * and / operators for ExpressionValue. 2020-06-17 09:39:17 +00:00
FileCollector.cpp [FileCollector] move Root creation 2020-04-29 11:47:23 -07:00
FileOutputBuffer.cpp FileOutputBuffer.h - remove unused includes. NFC. 2020-05-28 14:38:12 +01:00
FileUtilities.cpp std::isspace -> llvm::isSpace (where locale should be ignored) 2020-05-02 15:36:04 +02:00
FoldingSet.cpp [Support] FoldingSetNodeID::AddString(): reserve memory 2020-06-08 23:26:54 +03:00
FormattedStream.cpp Revert "[llvm-objdump] Display locations of variables alongside disassembly" 2020-03-16 14:04:25 -04:00
FormatVariadic.cpp [FormatVariadic] Reduce allocations 2020-04-11 14:54:32 +02:00
GlobPattern.cpp Revert rGca18ce1a00cd8b7cb7ce0e130440f5ae1ffe86ee "GlobPattern.h - remove unnecessary BitVector.h/StringRef.h includes. NFC" 2020-05-17 18:51:21 +01:00
GraphWriter.cpp Fix SelectionDAG Graph Printing on Windows 2020-05-05 17:01:05 -07:00
Hashing.cpp
Host.cpp Recommit "[X86] Calculate the needed size of the feature arrays in _cpu_indicator_init and getHostCPUName using the size of the feature enum." 2020-06-22 13:32:03 -07:00
InitLLVM.cpp
IntEqClasses.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
IntervalMap.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
ItaniumManglingCanonicalizer.cpp ItaniumManglingCanonicalizer - reduce StringRef.h include to forward declaration + remove duplicate includes. NFC 2020-05-08 14:06:53 +01:00
JSON.cpp
KnownBits.cpp [KnownBits] Move AND, OR and XOR logic into KnownBits 2020-04-09 10:10:37 +01:00
LEB128.cpp
LineIterator.cpp
LLVMBuild.txt
Locale.cpp
LockFileManager.cpp Introduce llvm::sys::Process::getProcessId() and adopt it 2020-04-16 15:05:37 +03:00
LowLevelType.cpp
ManagedStatic.cpp
MathExtras.cpp
MD5.cpp
MemAlloc.cpp Replicate attributes on definition to make MSVC less noisy 2020-04-25 02:02:00 +02:00
Memory.cpp
MemoryBuffer.cpp [Clang] Expose RequiresNullTerminator in FileManager. 2020-04-15 14:17:51 -07:00
NativeFormatting.cpp NativeFormatting.h - reduce raw_ostream.h include to forward declaration. NFC. 2020-05-09 13:32:14 +01:00
OptimizedStructLayout.cpp Rename OptimalLayout to OptimizedStructLayout at Chris's request. 2020-04-10 00:14:20 -04:00
Optional.cpp
Parallel.cpp [lld][COFF][ELF][WebAssembly] Replace --[no-]threads /threads[:no] with --threads={1,2,...} /threads:{1,2,...} 2020-03-31 08:46:12 -07:00
Path.cpp [Clang] Restore replace_path_prefix instead of startswith 2020-05-13 13:49:14 -04:00
PluginLoader.cpp
PrettyStackTrace.cpp Move setBugReportMsg() out from under a conditional 2020-03-26 16:39:03 -07:00
Process.cpp
Program.cpp [Clang] Move clang::Job::printArg to llvm::sys::printArg. NFCI. 2020-06-18 09:17:13 -04:00
RandomNumberGenerator.cpp
raw_os_ostream.cpp
raw_ostream.cpp [Support] Don't tie errs() to outs() by default 2020-06-11 15:19:56 -07:00
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
regexec.c
regfree.c
regstrlcpy.c
regutils.h
RISCVAttributeParser.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
RISCVAttributes.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
RWMutex.cpp
ScaledNumber.cpp
ScopedPrinter.cpp
SHA1.cpp SHA1.h - remove unnecessary ArrayRef.h/StringRef.h includes. NFC. 2020-04-21 15:12:17 +01:00
Signals.cpp
Signposts.cpp
SmallPtrSet.cpp
SmallVector.cpp [NFC] Add include cstdint for SIZE_MAX. 2020-04-30 17:24:05 -07:00
SourceMgr.cpp [Support] Replace 'DisableColors' boolean with 'ColorMode' enum 2020-06-08 09:48:47 -07:00
SpecialCaseList.cpp As part of using inclusive language within the llvm project, 2020-06-20 00:24:57 -07:00
Statistic.cpp Fix "Statistics are disabled" 2020-06-03 16:10:09 -07:00
StringExtras.cpp [llvm][StringExtras] Add missing include of cctype 2020-04-14 19:29:54 -07:00
StringMap.cpp Refactor StringMap.h, splitting StringMapEntry out to its own header. 2020-04-12 08:25:17 -07:00
StringRef.cpp [StringRef] Use some trickery to avoid initializing the std::string returned by upper()/lower() 2020-05-21 16:03:09 +02:00
StringSaver.cpp Temporarily Revert "[Support] Make UniqueStringSaver wrap a StringSet" 2020-05-14 19:18:20 -07:00
SuffixTree.cpp [SuffixTree][MachOpt] Factoring out Suffix Tree and adding Unit Tests 2020-06-08 12:44:18 -07:00
SymbolRemappingReader.cpp
SystemUtils.cpp
TargetParser.cpp [AMDGPU] Add gfx1030 target 2020-06-15 16:18:05 -07:00
TargetRegistry.cpp
TarWriter.cpp Reland D78945 TarWriter: Only use 137 of the 155 prefix bytes. 2020-04-27 10:37:23 -07:00
Threading.cpp [llvm-cov] Prevent llvm-cov from using too many threads 2020-04-24 15:28:25 -04:00
ThreadLocal.cpp
ThreadPool.cpp [Support] Simplify and optimize ThreadPool 2020-04-28 12:20:42 -07:00
TimeProfiler.cpp [TimeProfiler] Emit clock synchronization point 2020-04-23 01:09:31 +03:00
Timer.cpp [Clang][Driver] In -fintegrated-cc1 mode, avoid crashing on exit after a compiler crash 2020-03-13 08:15:35 -04:00
ToolOutputFile.cpp [Support] Use outs() in ToolOutputFile 2020-06-04 14:56:35 +02:00
TrigramIndex.cpp TrigramIndex.h - remove unnecessary StringMap.h include. NFC 2020-04-12 14:30:52 +01:00
Triple.cpp [Triple] support macOS 11 os version number 2020-06-22 23:03:47 -07:00
Twine.cpp
Unicode.cpp
UnicodeCaseFold.cpp
Valgrind.cpp
VersionTuple.cpp VersionTuple.h - reduce includes to forward declarations. NFC. 2020-06-08 11:08:44 +01:00
VirtualFileSystem.cpp [YAMLVFSWriter] Fix for delimiters 2020-05-12 15:43:10 -07:00
Watchdog.cpp
WithColor.cpp WithColor.h - reduce CommandLine.h include to forward declaration. NFC. 2020-06-23 17:07:53 +01:00
X86TargetParser.cpp [X86] Replace PROC macros with an enum and a lookup table of processor information. 2020-06-24 10:46:25 -07:00
xxhash.cpp
YAMLParser.cpp [YAMLParser] Scanner::setError - ensure we use the StringRef::iterator argument (PR45043) 2020-04-03 18:55:38 +01:00
YAMLTraits.cpp [yaml2obj][MachO] - Fix PubName/PubType handling. 2020-06-12 12:03:51 +03:00
Z3Solver.cpp Fix Z3 function calls regarding arithmetic operations 2020-05-14 15:46:13 +02:00