Add new multi-format DivSqrt unit from openC910 (FP64, FP32, FP16 + SIMD support)
Created by: lucabertaccini
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:
FP64
FP32
FP16
-
SIMD
operations
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:
-
PULP
to select the PULP DivSqrt unit, which supportsFP64
,FP32
,FP16
,FP16ALT
,FP8
andSIMD
operations -
TH32
to select the E906 DivSqrt unit, which supports onlyFP32
scalar operations (noSIMD
support) -
THMULTI
to select the the C910 DivSqrt unit, which supportsFP64
,FP32
,FP16
andSIMD
operations
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.