When does rm matter for fcvt.d.w?
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 signed int32 to double: f[rd] = (double)rs1. Always exact.
fcvt.d.w converts a signed 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.w converts a signed 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.w f0, x10 # f0 = (double)(int)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.