Skip to content

Commit 96b67d0

Browse files
Bhe6669Khao7342huxuan0307Ziyue-ZhangMrLinWang
committed
[RISCV] Add processor definition for XiangShan-KunMingHu
This pull request adds definitions for the XiangShan-KunMingHu processor. "XiangShan" is a high-performance open-source RISC-V processor project, and "KunMingHu" architecture is its third generation. Official documentation can be found at: [documentation](https://xiangshan-doc.readthedocs.io/zh-cn/latest/). Currently, the KunMingHu core supports"RV64IMAFDCV_zba_zbb_zbc_zbs_zbkb_zbkc_zbkx_zknd_zkne_zknh_zksed_zksh_svinval_zicbom_zicboz_zicsr_zifencei". The scheduler model and other components will be submitted in subsequent patches. Co-authored-by: Chen Jian<[email protected]> Lv Fang<[email protected]> Co-Authored-By: Khao7342 <[email protected]> Co-Authored-By: huxuan0307 <[email protected]> Co-Authored-By: Ziyue-Zhang <[email protected]> Co-Authored-By: Lin Wang <[email protected]> Co-Authored-By: ict-ql <[email protected]> Co-Authored-By: bdne159 <[email protected]> Co-Authored-By: Zhuke-bosc <[email protected]> Co-Authored-By: 雷电霸王龙 <[email protected]>
1 parent 0a0f1f9 commit 96b67d0

File tree

3 files changed

+67
-2
lines changed

3 files changed

+67
-2
lines changed

clang/test/Driver/riscv-cpus.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,40 @@
3131
// MCPU-XIANGSHAN-NANHU-SAME: "-target-feature" "+zks" "-target-feature" "+zksed" "-target-feature" "+zksh" "-target-feature" "+svinval"
3232
// MCPU-XIANGSHAN-NANHU-SAME: "-target-abi" "lp64d"
3333

34+
// RUN: %clang --target=riscv64 -### -c %s 2>&1 -mcpu=xiangshan-kunminghu | FileCheck -check-prefix=MCPU-XIANGSHAN-KUNMINGHU %s
35+
// MCPU-XIANGSHAN-KUNMINGHU: "-nostdsysteminc" "-target-cpu" "xiangshan-kunminghu"
36+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+m"
37+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+a"
38+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+f"
39+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+d"
40+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+c"
41+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+v"
42+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zicbom"
43+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zicboz"
44+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zicsr"
45+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zifencei"
46+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zba"
47+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zbb"
48+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zbc"
49+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zbkb"
50+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zbkc"
51+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zbkx"
52+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zbs"
53+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zkn"
54+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zknd"
55+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zkne"
56+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zknh"
57+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zve32f"
58+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zve32x"
59+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zve64d"
60+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zve64f"
61+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zve64x"
62+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zvl128b"
63+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zvl32b"
64+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-feature" "+zvl64b"
65+
// MCPU-XIANGSHAN-KUNMINGHU-SAME: "-target-abi" "lp64d"
66+
67+
3468
// We cannot check much for -mcpu=native, but it should be replaced by a valid CPU string.
3569
// RUN: %clang --target=riscv64 -### -c %s -mcpu=native 2> %t.err || true
3670
// RUN: FileCheck --input-file=%t.err -check-prefix=MCPU-NATIVE %s
@@ -76,6 +110,9 @@
76110
// RUN: %clang --target=riscv64 -### -c %s 2>&1 -mtune=xiangshan-nanhu | FileCheck -check-prefix=MTUNE-XIANGSHAN-NANHU %s
77111
// MTUNE-XIANGSHAN-NANHU: "-tune-cpu" "xiangshan-nanhu"
78112

113+
// RUN: %clang --target=riscv64 -### -c %s 2>&1 -mtune=xiangshan-kunminghu | FileCheck -check-prefix=MTUNE-XIANGSHAN-KUNMINGHU %s
114+
// MTUNE-XIANGSHAN-KUNMINGHU: "-tune-cpu" "xiangshan-kunminghu"
115+
79116
// Check mtune alias CPU has resolved to the right CPU according XLEN.
80117
// RUN: %clang --target=riscv32 -### -c %s 2>&1 -mtune=generic | FileCheck -check-prefix=MTUNE-GENERIC-32 %s
81118
// MTUNE-GENERIC-32: "-tune-cpu" "generic"

clang/test/Misc/target-invalid-cpu-note.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@
8585

8686
// RUN: not %clang_cc1 -triple riscv64 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV64
8787
// RISCV64: error: unknown target CPU 'not-a-cpu'
88-
// RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu{{$}}
88+
// RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-kunminghu, xiangshan-nanhu{{$}}
8989

9090
// RUN: not %clang_cc1 -triple riscv32 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV32
9191
// TUNE-RISCV32: error: unknown target CPU 'not-a-cpu'
9292
// TUNE-RISCV32-NEXT: note: valid target CPU values are: generic-rv32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max, generic, rocket, sifive-7-series{{$}}
9393

9494
// RUN: not %clang_cc1 -triple riscv64 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV64
9595
// TUNE-RISCV64: error: unknown target CPU 'not-a-cpu'
96-
// TUNE-RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu, generic, rocket, sifive-7-series{{$}}
96+
// TUNE-RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-kunminghu, xiangshan-nanhu, generic, rocket, sifive-7-series{{$}}

llvm/lib/Target/RISCV/RISCVProcessors.td

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,3 +378,31 @@ def XIANGSHAN_NANHU : RISCVProcessorModel<"xiangshan-nanhu",
378378
TuneZExtHFusion,
379379
TuneZExtWFusion,
380380
TuneShiftedZExtWFusion]>;
381+
382+
def XIANGSHAN_KUNMINGHU : RISCVProcessorModel<"xiangshan-kunminghu",
383+
NoSchedModel,
384+
[Feature64Bit,
385+
FeatureStdExtI,
386+
FeatureStdExtZicsr,
387+
FeatureStdExtZifencei,
388+
FeatureStdExtM,
389+
FeatureStdExtA,
390+
FeatureStdExtF,
391+
FeatureStdExtD,
392+
FeatureStdExtC,
393+
FeatureStdExtZba,
394+
FeatureStdExtZbb,
395+
FeatureStdExtZbc,
396+
FeatureStdExtZbs,
397+
FeatureStdExtZkn,
398+
FeatureStdExtZksed,
399+
FeatureStdExtZksh,
400+
FeatureStdExtSvinval,
401+
FeatureStdExtZicbom,
402+
FeatureStdExtZicboz,
403+
FeatureStdExtV,
404+
FeatureStdExtZvl128b],
405+
[TuneNoDefaultUnroll,
406+
TuneZExtHFusion,
407+
TuneZExtWFusion,
408+
TuneShiftedZExtWFusion]>;

0 commit comments

Comments
 (0)