Can FMV.X.D be used on RV32?
No. The official D extension defines FMV.X.D / FMV.D.X 64-bit integer/FP register moves only when XLEN>=64.
RV64 double-precision bit-pattern move from FP to integer register, with no numeric conversion.
FMV.X.D moves the IEEE 754 double-precision 64-bit encoding between integer and floating-point registers. It does not modify transferred bits and preserves non-canonical NaN payloads; this form is defined only when XLEN>=64. It writes the double-precision encoding from f[rs1] to x[rd] and sets no FP exception flags.
Shows the D-extension FMV bit-pattern move: decode OP-FP fields, read the source bit pattern, then write the destination without numeric conversion.
The word is split as an R-type OP-FP instruction; FMV bit moves use opcode 1010011.
FMV.X.D is defined only when XLEN>=64 and writes the 64-bit double-precision encoding unchanged to the integer register without setting fflags.
This animation shows only D-extension FMV ISA-visible encoding and bit-pattern movement; it does not model FPU pipelines, numeric FP interpretation, exception handling, or microarchitecture.
FMV.X.D is defined only when XLEN>=64 and moves the 64-bit double-precision encoding unchanged into an integer register. It does not convert a double to an integer value and does not canonicalize NaN payloads.
Understand this scenario with real code like «fmv.x.d x10, f0 # x10 = bits of f0 (RV64)».
Understand this scenario with real code like «fmv.x.d x10, f0 # x10 = bits of f0 (RV64)».
Understand this scenario with real code like «fmv.x.d x10, f0 # x10 = bits of f0 (RV64)».
No. The official D extension defines FMV.X.D / FMV.D.X 64-bit integer/FP register moves only when XLEN>=64.
FMV.X.D preserves the 64-bit encoding bits; FCVT.L.D performs double-to-64-bit-integer numeric conversion, which can round and set fflags.