Add new multi-format DivSqrt unit from openC910 (FP64, FP32, FP16 + SIMD support)
This PR adds a new multi-format DivSqrt unit leveraging the DivSqrt module included in the open-source T-Head openC910 core. The DivSqrt operation group block leveraging the openC910 DivSqrt unit supports:
FP64FP32FP16-
SIMDoperations
The unit from the openC910 is vendorized in the vendor/openc910 folder.
To choose among the three supported dividers, the PulpDivsqrt top-level parameter has been replaced with the DivSqrtSel parameter that can be set to:
-
PULPto select the PULP DivSqrt unit, which supportsFP64,FP32,FP16,FP16ALT,FP8andSIMDoperations -
TH32to select the E906 DivSqrt unit, which supports onlyFP32scalar operations (noSIMDsupport) -
THMULTIto select the the C910 DivSqrt unit, which supportsFP64,FP32,FP16andSIMDoperations
The default choice is set to THMULTI. The THMULTI option is supported even when enabling FP16ALT and/or FP8, from the FPU top level, but the related DivSqrt modules will not be instantiated.