This as an alternative version of D120641. Starting from the code here
https://repo.hca.bsc.es/gitlab/rferrer/llvm-epi/-/raw/EPI/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
but with some modifications to how the interim types are calculated,
and adding support for f16.
Still need to add fptosi for mask vectors.
Lots of masked isel patterns added so we can pass the mask through
the type changes.
I feel like the Ops[0], Ops[1] style isn't very common for us. Could we perhaps just use SDValue Src, Mask, VL?