Skip to content

Commit d59a4ca

Browse files
asi-scdnpetrov-sc
andauthored
[RISCV] Add Syntacore SCR3 processor definition (#95953)
Syntacore SCR3 is a microcontroller-class processor core. Overview: https://syntacore.com/products/scr3 This PR introduces two CPUs: * 'syntacore-scr3-rv32' which is rv32imc * 'syntacore-scr3-rv64' which is rv64imac --------- Co-authored-by: Dmitrii Petrov <[email protected]>
1 parent 7c946f0 commit d59a4ca

File tree

4 files changed

+49
-4
lines changed

4 files changed

+49
-4
lines changed

clang/test/Driver/riscv-cpus.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,3 +358,26 @@
358358

359359
// RUN: not %clang --target=riscv32 -### -c %s 2>&1 -mcpu=generic-rv32 -march=rv64i | FileCheck -check-prefix=MISMATCH-ARCH %s
360360
// MISMATCH-ARCH: cpu 'generic-rv32' does not support rv64
361+
362+
// RUN: %clang --target=riscv32 -### -c %s 2>&1 -mcpu=syntacore-scr3-rv32 | FileCheck -check-prefix=MCPU-SYNTACORE-SCR3-RV32 %s
363+
// MCPU-SYNTACORE-SCR3-RV32: "-target-cpu" "syntacore-scr3-rv32"
364+
// MCPU-SYNTACORE-SCR3-RV32-SAME: "-target-feature" "+m"
365+
// MCPU-SYNTACORE-SCR3-RV32-SAME: "-target-feature" "+c"
366+
// MCPU-SYNTACORE-SCR3-RV32-SAME: "-target-feature" "+zicsr"
367+
// MCPU-SYNTACORE-SCR3-RV32-SAME: "-target-feature" "+zifencei"
368+
// MCPU-SYNTACORE-SCR3-RV32-SAME: "-target-abi" "ilp32"
369+
370+
// RUN: %clang --target=riscv32 -### -c %s 2>&1 -mtune=syntacore-scr3-rv32 | FileCheck -check-prefix=MTUNE-SYNTACORE-SCR3-RV32 %s
371+
// MTUNE-SYNTACORE-SCR3-RV32: "-tune-cpu" "syntacore-scr3-rv32"
372+
373+
// RUN: %clang --target=riscv64 -### -c %s 2>&1 -mcpu=syntacore-scr3-rv64 | FileCheck -check-prefix=MCPU-SYNTACORE-SCR3-RV64 %s
374+
// MCPU-SYNTACORE-SCR3-RV64: "-target-cpu" "syntacore-scr3-rv64"
375+
// MCPU-SYNTACORE-SCR3-RV64-SAME: "-target-feature" "+m"
376+
// MCPU-SYNTACORE-SCR3-RV64-SAME: "-target-feature" "+a"
377+
// MCPU-SYNTACORE-SCR3-RV64-SAME: "-target-feature" "+c"
378+
// MCPU-SYNTACORE-SCR3-RV64-SAME: "-target-feature" "+zicsr"
379+
// MCPU-SYNTACORE-SCR3-RV64-SAME: "-target-feature" "+zifencei"
380+
// MCPU-SYNTACORE-SCR3-RV64-SAME: "-target-abi" "lp64"
381+
382+
// RUN: %clang --target=riscv64 -### -c %s 2>&1 -mtune=syntacore-scr3-rv64 | FileCheck -check-prefix=MTUNE-SYNTACORE-SCR3-RV64 %s
383+
// MTUNE-SYNTACORE-SCR3-RV64: "-tune-cpu" "syntacore-scr3-rv64"

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,16 @@
8181

8282
// RUN: not %clang_cc1 -triple riscv32 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV32
8383
// RISCV32: error: unknown target CPU 'not-a-cpu'
84-
// 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{{$}}
84+
// 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, syntacore-scr3-rv32{{$}}
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, spacemit-x60, 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, spacemit-x60, syntacore-scr3-rv64, veyron-v1, 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'
92-
// 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{{$}}
92+
// 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, syntacore-scr3-rv32, 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, spacemit-x60, 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, spacemit-x60, syntacore-scr3-rv64, veyron-v1, xiangshan-nanhu, generic, rocket, sifive-7-series{{$}}

llvm/docs/ReleaseNotes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ Changes to the RISC-V Backend
183183
* Zabha is no longer experimental.
184184
* B (the collection of the Zba, Zbb, Zbs extensions) is supported.
185185
* Added smcdeleg, ssccfg, smcsrind, and sscsrind extensions to -march.
186+
* ``-mcpu=syntacore-scr3-rv32`` and ``-mcpu=syntacore-scr3-rv64`` were added.
186187

187188
Changes to the WebAssembly Backend
188189
----------------------------------

llvm/lib/Target/RISCV/RISCVProcessors.td

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,27 @@ def SYNTACORE_SCR1_MAX : RISCVProcessorModel<"syntacore-scr1-max",
326326
FeatureStdExtC],
327327
[TuneNoDefaultUnroll]>;
328328

329+
def SYNTACORE_SCR3_RV32 : RISCVProcessorModel<"syntacore-scr3-rv32",
330+
NoSchedModel,
331+
[Feature32Bit,
332+
FeatureStdExtI,
333+
FeatureStdExtZicsr,
334+
FeatureStdExtZifencei,
335+
FeatureStdExtM,
336+
FeatureStdExtC],
337+
[TuneNoDefaultUnroll, FeaturePostRAScheduler]>;
338+
339+
def SYNTACORE_SCR3_RV64 : RISCVProcessorModel<"syntacore-scr3-rv64",
340+
NoSchedModel,
341+
[Feature64Bit,
342+
FeatureStdExtI,
343+
FeatureStdExtZicsr,
344+
FeatureStdExtZifencei,
345+
FeatureStdExtM,
346+
FeatureStdExtA,
347+
FeatureStdExtC],
348+
[TuneNoDefaultUnroll, FeaturePostRAScheduler]>;
349+
329350
def VENTANA_VEYRON_V1 : RISCVProcessorModel<"veyron-v1",
330351
NoSchedModel,
331352
[Feature64Bit,

0 commit comments

Comments
 (0)