fmv.x.h

Move half-precision value from floating-point to integer register

Moves the half-precision value in floating-point register fs1 represented in IEEE 754-2008 encoding to the lower 16 bits of integer register xd.

The bits are not modified in the transfer, and in particular, the payloads of non-canonical NaNs are preserved.

The highest XLEN-16 bits of the destination register are filled with copies of the floating-point number’s sign bit.

Assembly format

fmv.x.h xd, fs1

Decode Variables

Bits<5> fs1 = $encoding[19:15];
Bits<5> xd = $encoding[11:7];

Execution

check_f_ok($encoding);
X[xd] = sext(F[fs1][15:0], 16);

Exceptions

This instruction may result in the following synchronous exceptions:

  • IllegalInstruction

Encoding

svg

Defining extension

Access

M

Always

Containing profiles

  • Mandatory: RVA20S64, RVA20U64, RVA22S64, RVA22U64, RVA23S64, RVA23U64, RVB23S64, RVB23U64

  • Optional: RVI20U32, RVI20U64