Skip to content

Commit a5444d7

Browse files
committed
NMSIS: add V1.6.0 changelog entry
- Document Breaking Change for AMO 32-bit intrinsic APIs (concurrency issues, incorrect instruction suffixes) - Document Breaking Change for RISCV_MATH_VECTOR_FLOAT16 renamed to RISCV_MATH_VECTOR_ZVFH - Document fine-grained RVV macro control for DSP and NN - Document VPU agnostic RVV Intrinsic API changes - Document NMSIS-Core fixes for ECC, SMPCC, ECLIC, and Cache Signed-off-by: Huaqi Fang <578567190@qq.com>
1 parent f5f7efa commit a5444d7

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

NMSIS/doc/source/changelog.rst

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,67 @@
33
Changelog
44
=========
55

6+
V1.6.0
7+
------
8+
9+
This is the version of ``V1.6.0`` release.
10+
11+
.. important::
12+
13+
- **Breaking Change**: The 32-bit AMO intrinsic APIs in ``core_feature_base.h`` (``__AMOADD_W``, ``__AMOAND_W``,
14+
``__AMOOR_W``, ``__AMOXOR_W``, ``__AMOMAXU_W``, ``__AMOMAX_W``, ``__AMOMINU_W``, ``__AMOMIN_W``,
15+
``__AMOSWAP_W``, ``__CAS_W``) have been completely reimplemented. The previous implementation had concurrency
16+
issues (returning memory value instead of the result register) and incorrect instruction suffixes (``.d`` instead
17+
of ``.w``), which did not conform to the RISC-V intrinsic API semantics. The new implementation fixes all of
18+
these issues. Users relying on the old behavior should review and update their code accordingly.
19+
- **Breaking Change**: The ``RISCV_MATH_VECTOR_FLOAT16`` macro in ``riscv_math_types_f16.h`` has been
20+
renamed to ``RISCV_MATH_VECTOR_ZVFH``. Users who directly referenced the old macro name will need
21+
to update their code.
22+
- The RVV macro control has been refined. The single ``RISCV_MATH_VECTOR`` macro is now replaced by more
23+
fine-grained capability macros (``RISCV_MATH_VECTOR_ZVFH``, ``RISCV_MATH_VECTOR_ZVE32X``, etc.),
24+
which are derived from the ``__riscv_zvfh``, ``__riscv_zve32x``, etc. macros automatically defined
25+
by the compiler based on the ``--march`` option. See the **NMSIS-DSP** and **NMSIS-NN** sections below
26+
for details. All DSP and NN source files have been adapted to use the appropriate fine-grained macros.
27+
28+
.. warning::
29+
30+
**VPU agnostic change**: RVV Intrinsic APIs have been updated to adapt to the VPU agnostic feature.
31+
Pay attention to cases where tail elements and non-mask elements are used in RVV calculation.
32+
33+
* **NMSIS-Core**
34+
35+
- Completely reimplement 32-bit AMO intrinsic APIs in ``core_feature_base.h`` to fix concurrency issues and incorrect instruction suffixes (see important notice above)
36+
- Fix ``__ECLIC_SetModeIRQ`` in ``core_feature_eclic.h`` using wrong register (``ECLIC->SCTRL`` corrected to ``ECLIC->CTRL``)
37+
- Clear pending error status (RESC/FESC/BESC) before issuing Cluster Cache commands in ``MFlushCCache``, ``SFlushCCache``, and ``UFlushCCache`` in ``core_feature_cache.h``
38+
- Replace ``MLockDCacheLine`` with ``__LW`` + ``__RWMB`` in DCache ECC injection functions in ``core_feature_ecc.h``
39+
- Add precise ECC injection support in ``core_feature_iinfo.h``: new ``IINFO_ECC_INJ_WAY_Type`` union, ``IINFO_IsPreciseECCInjSupported()`` and ``IINFO_SetPreciseECCInjWay()`` APIs
40+
- Extend ``core_feature_smpcc.h`` with new SMPCC register types (``CC_INV_RANGE_Type``, ``CC_ECC_INJ_WAY_Type``, ``CC_ECC_INJ_ADDR_Type``, ``CC_ECC_INJ_DATA_Type``, ``IOCP_ATTR_RMP_Type``), new ``SMPCC_ClearBusErrPending()`` API, and update ``SMPCC_CCacheTramErrInject()`` / ``SMPCC_CCacheDramErrInject()`` to support precise ECC injection with an additional ``way`` parameter
41+
- Fix instruction descriptions in ``core_feature_dsp.h``
42+
43+
* **NMSIS-DSP**
44+
45+
- Introduce fine-grained RVV capability macros to replace the single ``RISCV_MATH_VECTOR`` macro:
46+
47+
- ``RISCV_MATH_VECTOR_ZVFH`` when ``defined(__riscv_zvfh)``
48+
- ``RISCV_MATH_VECTOR_ZVE32X`` when ``defined(__riscv_zve32x)``
49+
- ``RISCV_MATH_VECTOR_ZVE32F`` when ``defined(__riscv_zve32f)``
50+
- ``RISCV_MATH_VECTOR_ZVE64X`` when ``defined(__riscv_zve64x)``
51+
- ``RISCV_MATH_VECTOR_ZVE64F`` when ``defined(__riscv_zve64f)``
52+
- ``RISCV_MATH_VECTOR_ZVE64D`` when ``defined(__riscv_zve64d)``
53+
54+
- Add RVV optimization for fast functions, including ComplexMathFunctions, FilteringFunctions, and MatrixFunctions
55+
- Adapt all DSP source files (~325 files) to use the appropriate fine-grained RVV macros
56+
instead of the single ``RISCV_MATH_VECTOR`` macro, ensuring each function only compiles RVV
57+
code for the minimum required vector extension
58+
59+
* **NMSIS-NN**
60+
61+
- Add fine-grained RVV capability macros in ``riscv_nn_math_types.h``, consistent with NMSIS-DSP
62+
- Adapt all NN source files (~56 files) to use the appropriate fine-grained RVV macros
63+
- Narrow the RVV guard for ``riscv_nn_requantize`` RVV helper functions in ``riscv_nnsupportfunctions.h``
64+
from ``RISCV_MATH_VECTOR`` to ``RISCV_MATH_VECTOR_ZVE32X``, so these functions are only enabled
65+
when ZVE32X or higher is available
66+
667
V1.5.0
768
------
869

0 commit comments

Comments
 (0)