Is FCVT.S.LU available on RV32?
No. The official F/D conversion rules define the L/LU 64-bit integer forms as RV64-only.
RV64 unsigned 64-bit integer-to-single precision conversion, rounded by rm/frm and written to FP rd.
FCVT.S.LU is an RV64-only integer-to-floating-point conversion. It converts the unsigned 64-bit integer in x[rs1] according to rm to single precision and writes f[rd]; NX is set when the target FP format cannot represent the value exactly.
Shows the F-extension FCVT flow: decode OP-FP fields, fmt/rs2 conversion selection, rm rounding, read the integer source, then write the floating-point destination.
The word is split as an R-type OP-FP instruction; FCVT conversion instructions use opcode 1010011.
The current 64-bit integer example is not exactly representable as S format, so the rounded example shows NX.
The current 64-bit integer example is not exactly representable as S format, so the rounded example shows NX.
This animation shows only F-extension FCVT ISA-visible encoding, source/destination register direction, rounding field, and example fflags; it does not model FPU pipelines, exception handling, NaN payloads, or microarchitecture.
fcvt.s.lu is an RV64-only FCVT.S.LU form: it reads an unsigned 64-bit integer from integer rs1, converts according to rm/frm to single precision, and writes FP rd.
Understand this scenario with real code like «fcvt.s.lu f0, x10, rne # f0 = (float)(ulong)x10 (RV64)».
No. The official F/D conversion rules define the L/LU 64-bit integer forms as RV64-only.
This is an integer-to-FP conversion: rd is an FP register and rs1 is an integer register.
The rs2 field selects the LU unsigned 64-bit integer format; it is not a second source operand in assembly syntax.