When does rm matter for fcvt.d.wu?
It does not matter for the numeric result. The source integer is exactly representable in the destination floating-point format, so rm does not cause rounding.
Convert unsigned int32 to double: f[rd] = (double)(uint32_t)rs1. Always exact.
fcvt.d.wu converts an unsigned 32-bit integer source to a double-precision floating-point result. This conversion is exact, so the encoded rounding mode does not change the numeric result.
fcvt.d.wu converts an unsigned 32-bit integer source to a double-precision floating-point result. This conversion is exact, so the encoded rounding mode does not change the numeric result.
Understand this scenario with real code like «fcvt.d.wu f0, x10 # f0 = (double)(unsigned)x10».
It does not matter for the numeric result. The source integer is exactly representable in the destination floating-point format, so rm does not cause rounding.
It differs by source/destination format, integer signedness, RV64 restrictions, and whether rounding or invalid conversion can occur.