Is FMVH.X.D an FCVT conversion?
No. It only copies the bit pattern and does not interpret and convert the numeric value.
On RV32, copy the high 32 bits of a double floating-point register to an integer register.
FMVH.X.D is a Zfa bit-move instruction for RV32+D that copies bits 63:32 of f[rs1] into x[rd]. Together with FMV.X.W it can split a double-precision encoding into two integer registers; this is a bit copy, not a numeric conversion.
Shows the Zfa + D (RV32 only)-extension FMVH.X.D 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.
FMVH.X.D is defined only for RV32+D+Zfa and copies f[rs1] bits 63:32 to x[rd]; paired with FMV.X.W, it transfers a double-precision bit pattern.
This animation shows only Zfa + D (RV32 only)-extension FMV ISA-visible encoding and bit-pattern movement; it does not model FPU pipelines, numeric FP interpretation, exception handling, or microarchitecture.
FMVH.X.D fills the RV32 path for moving a 64-bit double encoding through 32-bit integer registers. The key points are bit order and that it is not numeric conversion.
Understand this scenario with real code like «fmvh.x.d x10, f11 ; x10 = f11[63:32] (RV32 only)».
Understand this scenario with real code like «fmvh.x.d x10, f11 ; x10 = f11[63:32] (RV32 only)».
No. It only copies the bit pattern and does not interpret and convert the numeric value.
Because RV32 integer registers are only 32 bits wide, so a 64-bit double encoding must be moved in a pair.