This is the version V1.2.0
release.
This 1.2.0 version will no longer support old gcc 10 verison, and it now only support Nuclei Toolchain 2023.10
(gcc13 and clang17) or later. The major changes that can be felt are as follows:The prefix of toolchain has changed from
riscv-nuclei-elf-
toriscv64-unknown-elf-
The
-march
option has changed a lot, see riscv-non-isa/riscv-toolchain-conventions#26, for examples:
b
extension changed to_zba_zbb_zbc_zbs
extension,p
extension changed to_xxldsp
,_xxldspn1x
,_xxldspn2x
,_xxldspn3x
extensions which means
stardard DSP extension, Nuclei N1, N2, N3 DSP extensionsv
extension changed tov
,_zve32f
,_zve64f
extensionsThese extensions also can be combined in a certain order, please be cautious
The name of Libraries has changed with
-march
, for examples, the library namedlibnmsis_dsp_rv32imacb.a
is now named
libnmsis_dsp_rv32imac_zba_zbb_zbc_zbs.a
sinceb
extension changed to_zba_zbb_zbc_zbs
NMSIS v1.2.0 should be used with Nuclei SDK v0.5.0 or later
RVV intrinsic APIs is update to v0.12.0, please visit
rvv-intrinsic-doc <https://github.com/riscv-non-isa/rvv-intrinsic-doc/releases/tag/v0.12.0>
_
Please create issue if you are facing issues using NMSIS, see https://github.com/Nuclei-Software/NMSIS/issues
-
NMSIS-Core
- Add more Nuclei DSP N1/N2/N3 intrinsic APIs and fix some intrinsic API definition and descriptions in
core_feature_dsp.h
- Add basic IAR support for NMSIS Core header files and device template, for sample usage, see Nuclei SDK 0.5.0 release
- Fix missing break in
__set_hpm_event
function API in core_feature_base.h, which affected the nmsis_bench.h - Use IAR custom instruction and IAR P-ext 0.5.0 support to support Nuclei DSP extension based on P-ext 0.5.4, see changes maded in
core_feature_dsp.h
, only Xxldsp is supported, no N1/N2/N3 supported, and some instructions can't be supported using custom instruction, but in future, we will cooperate with IAR to do full Nuclei DSP support - Add more CSRs definition according to Nuclei ISA updates such as Zc/stack check
- No more bitmanip extension intrinsic header <rvintrin.h> for gcc13
- Fix __RV_CLAMP macro and add __MACHINE/SUPERVISOR/USER_INTERRUPT macros
- Add __get_hart_index and SysTimer_GetHartID and modify __get_hart_id API
- In <Device.h>, we introduced __HARTID_OFFSET and __SYSTIMER_HARTID macro to represent timer hart index relation with cpu hartid for AMP SoC
- Clean compiler warning of NMSIS-Core header files
- Fix Cache CCM API missing return value in some case
- Add more Nuclei DSP N1/N2/N3 intrinsic APIs and fix some intrinsic API definition and descriptions in
-
NMSIS-DSP
- Defined
NUCLEI_DSP_DEFAULT
,NUCLEI_DSP_N1
,NUCLEI_DSP_N2
,NUCLEI_DSP_N3
inriscv_math_types.h
according to gcc options. This means that if compile with--march=rv32imafc_xxldspn1x
, theNUCLEI_DSP_N1
will defined,
if compile with--march=rv32imafc_xxldspn2x
, theNUCLEI_DSP_N1
andNUCLEI_DSP_N2
will defined, and so on - Optimize some functions with DSP N1/N2/N3 (such as FilteringFunctions, TransformFunctions, ComplexMathFunctions)
- RVV intrinsic APIs is update to v0.12.0
- Add f16 support(include f16 rvv extension support)
- Fix the use of expd80 instruction(Nuclei default dsp instruction)
- Fix some testcases bugs(such as MatrixFunctions, TransformFunctions)
- Defined
-
NMSIS-NN
- Defined
NUCLEI_DSP_DEFAULT
,NUCLEI_DSP_N1
,NUCLEI_DSP_N2
,NUCLEI_DSP_N3
inriscv_nn_math_types.h
according to gcc options - RVV intrinsic APIs is update to v0.12.0
- Clean code(nnref lib)
- Defined
-
Build System
- Toolchain change to gcc13, The prefix of toolchain has changed to
riscv64-unknown-elf-
, old gcc10riscv-nuclei-elf-gcc
changed to gcc 13riscv64-unknown-elf-gcc
- Add ci configurations to support different instruction combinations, please check
Scripts/Build/nmsis_dsp.json
andScripts/Build/nmsis_nn.json
- Library naming scheme changed due to march changes, which means the library name will not be compatiable with previous release, check dsp/nn get started guide for details
- F16 library build is supported now when zfh/zvfh extension enabled
- Toolchain change to gcc13, The prefix of toolchain has changed to
-
CI
- Change NMSIS to use Nuclei SDK evalsoc as ci run target, demosoc is removed in 0.5.0 Nuclei SDK release.
- Spilt DSP and NN test jobs to reduce ci running time
- Build DSP/NN library in one job now, since N1/N2/N3 library naming are different, and library build speed for risc-v vector increased now
Full Changelog: 1.1.1...1.2.0