With the exception of frem, this patch supports the current set of VP
floating-point binary intrinsics by lowering them to to RVV instructions. It
does so by using the existing RISCVISD *_VL custom nodes as an intermediate
layer. Both scalable and fixed-length vectors are supported by using this
method.
The frem node is unsupported due to a lack of available instructions. For
fixed-length vectors we could scalarize but that option is not (currently)
available for scalable-vector types. The support is intentionally left out so
it equivalent for both vector types.
The matching of vector/scalar forms is currently lacking, as scalable vector
types do not lower to the custom VFMV_V_F_VL node. We could either make
floating-point scalable vector splats lower to this node, or support the
matching of multiple kinds of splat via a ComplexPattern, much like we do for
integer types.