Skip to content

Commit ddafabe

Browse files
committed
[RISCV] Remove or simplify some StringSwitches in RISCVTargetParser.cpp. NFC
We can iterate over the RISCVCPUInfo table instead of using a separate StringSwitch.
1 parent 6c667ab commit ddafabe

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

llvm/lib/TargetParser/RISCVTargetParser.cpp

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,40 +39,39 @@ constexpr CPUInfo RISCVCPUInfo[] = {
3939
#include "llvm/TargetParser/RISCVTargetParserDef.inc"
4040
};
4141

42-
static CPUKind getCPUByName(StringRef CPU) {
43-
return llvm::StringSwitch<CPUKind>(CPU)
44-
#define PROC(ENUM, NAME, DEFAULT_MARCH) .Case(NAME, CK_##ENUM)
45-
#include "llvm/TargetParser/RISCVTargetParserDef.inc"
46-
.Default(CK_INVALID);
42+
static const CPUInfo *getCPUInfoByName(StringRef CPU) {
43+
for (auto &C : RISCVCPUInfo)
44+
if (C.Name == CPU)
45+
return &C;
46+
return nullptr;
4747
}
4848

4949
bool parseCPU(StringRef CPU, bool IsRV64) {
50-
CPUKind Kind = getCPUByName(CPU);
50+
const CPUInfo *Info = getCPUInfoByName(CPU);
5151

52-
if (Kind == CK_INVALID)
52+
if (!Info)
5353
return false;
54-
return RISCVCPUInfo[static_cast<unsigned>(Kind)].is64Bit() == IsRV64;
54+
return Info->is64Bit() == IsRV64;
5555
}
5656

5757
bool parseTuneCPU(StringRef TuneCPU, bool IsRV64) {
5858
CPUKind Kind = llvm::StringSwitch<CPUKind>(TuneCPU)
59-
#define PROC(ENUM, NAME, DEFAULT_MARCH) .Case(NAME, CK_##ENUM)
60-
#define TUNE_PROC(ENUM, NAME) .Case(NAME, CK_##ENUM)
61-
#include "llvm/TargetParser/RISCVTargetParserDef.inc"
59+
#define TUNE_PROC(ENUM, NAME) .Case(NAME, CK_##ENUM)
60+
#include "llvm/TargetParser/RISCVTargetParserDef.inc"
6261
.Default(CK_INVALID);
6362

64-
if (Kind == CK_INVALID)
65-
return false;
66-
#define TUNE_PROC(ENUM, NAME) \
67-
if (Kind == CK_##ENUM) \
63+
if (Kind != CK_INVALID)
6864
return true;
69-
#include "llvm/TargetParser/RISCVTargetParserDef.inc"
70-
return RISCVCPUInfo[static_cast<unsigned>(Kind)].is64Bit() == IsRV64;
65+
66+
// Fallback to parsing as a CPU.
67+
return parseCPU(TuneCPU, IsRV64);
7168
}
7269

7370
StringRef getMArchFromMcpu(StringRef CPU) {
74-
CPUKind Kind = getCPUByName(CPU);
75-
return RISCVCPUInfo[static_cast<unsigned>(Kind)].DefaultMarch;
71+
const CPUInfo *Info = getCPUInfoByName(CPU);
72+
if (!Info)
73+
return "";
74+
return Info->DefaultMarch;
7675
}
7776

7877
void fillValidCPUArchList(SmallVectorImpl<StringRef> &Values, bool IsRV64) {

0 commit comments

Comments
 (0)