When does rm matter for fcvt.l.h?
When conversion requires rounding, rm or dynamic frm selects the rounding direction; out-of-range or NaN inputs follow the official invalid-conversion rule.
Convert half-precision FP to a signed 64-bit integer [RV64], rounding according to rm or frm.
rd selects integer x0–x31, with x0 discarding results; rs1 selects FP f0–f31; rs2 is a format selector, not a second source register.
32-bit OP-FP: funct5=11000, fmt=10, rs2=00010, opcode=1010011; no immediate.
RV64 Zfh only; enable required extensions and FP state. Optional rm defaults to dyn, using frm; static 101/110 and dynamic frm=101–111 have reserved behavior.
FP sources narrower than FLEN require NaN-boxing checks; an invalid box is treated as a canonical source-format NaN. Integer results need no NaN-boxing. Applicable exceptions accrue in fflags; setting a flag does not itself cause an FP trap.
On RV64, fcvt.l.h converts the half-precision value in f[rs1] to a signed 64-bit integer in x[rd]. Its OP-FP encoding uses funct5=11000, fmt=H (10), and rs2=L (00010), then rounds according to rm or dynamic frm. An out-of-range value, infinity, or NaN follows the official invalid-conversion endpoint rule and sets NV.
Shows the Zfh-extension FCVT flow: decode OP-FP fields, fmt/rs2 conversion selection, the rm rounding field, read the floating-point source, then write the integer destination.
Leave rm empty for the assembly default dyn (111); this DYN example fixes frm=RNE. Use lowercase rne/rtz/rdn/rup/rmm/dyn only.
Assume required extensions and FP state are enabled, applicable source NaN-boxing is valid, and initial fflags=0. Results preview the current input; Writeback represents commit.
The word is split as an R-type OP-FP instruction; FCVT uses opcode 1010011.
The current example rounds to a 64-bit integer according to rm and shows NX because the source has a fractional part.
The current example rounds to a 64-bit integer according to rm and shows NX because the source has a fractional part.
This animation shows only Zfh-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.
On RV64, fcvt.l.h rounds the half-precision value in f[rs1] to a signed 64-bit integer according to rm or dynamic frm, then writes x[rd].
Understand this scenario with real code like «fcvt.l.h x10, f0, rtz # x10 = -42; NX; RV64, Zfh/FP state enabled; f0 holds H value -42.75».
When conversion requires rounding, rm or dynamic frm selects the rounding direction; out-of-range or NaN inputs follow the official invalid-conversion rule.
It differs by source/destination format, integer signedness, RV64 restrictions, and whether rounding or invalid conversion can occur.