@@ -39,40 +39,39 @@ constexpr CPUInfo RISCVCPUInfo[] = {
39
39
#include " llvm/TargetParser/RISCVTargetParserDef.inc"
40
40
};
41
41
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 ;
47
47
}
48
48
49
49
bool parseCPU (StringRef CPU, bool IsRV64) {
50
- CPUKind Kind = getCPUByName (CPU);
50
+ const CPUInfo *Info = getCPUInfoByName (CPU);
51
51
52
- if (Kind == CK_INVALID )
52
+ if (!Info )
53
53
return false ;
54
- return RISCVCPUInfo[ static_cast < unsigned >(Kind)]. is64Bit () == IsRV64;
54
+ return Info-> is64Bit () == IsRV64;
55
55
}
56
56
57
57
bool parseTuneCPU (StringRef TuneCPU, bool IsRV64) {
58
58
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"
62
61
.Default (CK_INVALID);
63
62
64
- if (Kind == CK_INVALID)
65
- return false ;
66
- #define TUNE_PROC (ENUM, NAME ) \
67
- if (Kind == CK_##ENUM) \
63
+ if (Kind != CK_INVALID)
68
64
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);
71
68
}
72
69
73
70
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 ;
76
75
}
77
76
78
77
void fillValidCPUArchList (SmallVectorImpl<StringRef> &Values, bool IsRV64) {
0 commit comments