aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/TargetParser/RISCVTargetParser.cpp
diff options
context:
space:
mode:
authorWang Pengcheng <wangpengcheng.pp@bytedance.com>2024-11-19 13:52:49 +0800
committerWang Pengcheng <wangpengcheng.pp@bytedance.com>2024-11-19 13:52:49 +0800
commita2d65ca78e2d80362eb0631715fb95492402495c (patch)
treeda7ed6c8c13166661fe9a917fb9029432f6c417e /llvm/lib/TargetParser/RISCVTargetParser.cpp
parent6721bcfd1b6494e9643a04a13144f282979544ad (diff)
downloadllvm-users/wangpc-pp/spr/main.mimplid-mimpid.zip
llvm-users/wangpc-pp/spr/main.mimplid-mimpid.tar.gz
llvm-users/wangpc-pp/spr/main.mimplid-mimpid.tar.bz2
[𝘀𝗽𝗿] changes to main this commit is based onusers/wangpc-pp/spr/main.mimplid-mimpid
Created using spr 1.3.6-beta.1 [skip ci]
Diffstat (limited to 'llvm/lib/TargetParser/RISCVTargetParser.cpp')
-rw-r--r--llvm/lib/TargetParser/RISCVTargetParser.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/llvm/lib/TargetParser/RISCVTargetParser.cpp b/llvm/lib/TargetParser/RISCVTargetParser.cpp
index 49a35bf..2d407f6 100644
--- a/llvm/lib/TargetParser/RISCVTargetParser.cpp
+++ b/llvm/lib/TargetParser/RISCVTargetParser.cpp
@@ -22,24 +22,22 @@ namespace RISCV {
enum CPUKind : unsigned {
#define PROC(ENUM, NAME, DEFAULT_MARCH, FAST_SCALAR_UNALIGN, \
- FAST_VECTOR_UNALIGN) \
+ FAST_VECTOR_UNALIGN, MVENDORID, MARCHID, MIMPID) \
CK_##ENUM,
#define TUNE_PROC(ENUM, NAME) CK_##ENUM,
#include "llvm/TargetParser/RISCVTargetParserDef.inc"
};
-struct CPUInfo {
- StringLiteral Name;
- StringLiteral DefaultMarch;
- bool FastScalarUnalignedAccess;
- bool FastVectorUnalignedAccess;
- bool is64Bit() const { return DefaultMarch.starts_with("rv64"); }
-};
-
constexpr CPUInfo RISCVCPUInfo[] = {
#define PROC(ENUM, NAME, DEFAULT_MARCH, FAST_SCALAR_UNALIGN, \
- FAST_VECTOR_UNALIGN) \
- {NAME, DEFAULT_MARCH, FAST_SCALAR_UNALIGN, FAST_VECTOR_UNALIGN},
+ FAST_VECTOR_UNALIGN, MVENDORID, MARCHID, MIMPID) \
+ { \
+ NAME, \
+ DEFAULT_MARCH, \
+ FAST_SCALAR_UNALIGN, \
+ FAST_VECTOR_UNALIGN, \
+ {MVENDORID, MARCHID, MIMPID}, \
+ },
#include "llvm/TargetParser/RISCVTargetParserDef.inc"
};
@@ -60,6 +58,19 @@ bool hasFastVectorUnalignedAccess(StringRef CPU) {
return Info && Info->FastVectorUnalignedAccess;
}
+bool hasValidCPUModel(StringRef CPU) {
+ const CPUModel CPUModel = getCPUModel(CPU);
+ return CPUModel.MVendorID != 0 && CPUModel.MArchID != 0 &&
+ CPUModel.MImpID != 0;
+}
+
+CPUModel getCPUModel(StringRef CPU) {
+ const CPUInfo *Info = getCPUInfoByName(CPU);
+ if (!Info)
+ return {0, 0, 0};
+ return Info->CPUModel;
+}
+
bool parseCPU(StringRef CPU, bool IsRV64) {
const CPUInfo *Info = getCPUInfoByName(CPU);