When does rm matter for fcvt.d.s?
It does not matter for the numeric result. This form is an exact widening conversion and does not require rounding.
Convert single to double: f[rd] = (double)f[rs1]. Never rounds.
fcvt.d.s converts a single-precision source operand to a wider double-precision result. This floating-point widening conversion is exact and does not round.
fcvt.d.s converts a single-precision source operand to a wider double-precision result. This floating-point widening conversion is exact and does not round.
Understand this scenario with real code like «fcvt.d.s f0, f1 # f0 = (double)(float)f1».
It does not matter for the numeric result. This form is an exact widening conversion and does not require rounding.
It differs by source/destination format, integer signedness, RV64 restrictions, and whether rounding or invalid conversion can occur.