For the same reasons as D151284, this requires custom lowering of the truncate libcall on hard float ABIs (the normal libcall code path is used on soft ABIs).
The extend operation is implemented by a shift just as in the standard legalisation, but needs to be custom lowered because i32 isn't a legal type on RV64.
This patch aims to make the minimal changes that result in correct codegen for the bfloat.ll tests.
I think XLenVT here here should be Op.getOperand(0).getValueType() which probably is XLenVT, but it looks better to use the same VT for both.