|
3 | 3 | Changelog |
4 | 4 | ========= |
5 | 5 |
|
| 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 | + |
6 | 67 | V1.5.0 |
7 | 68 | ------ |
8 | 69 |
|
|
0 commit comments