首页/指令库/FMVP-D-X
FMVP.D.X

RISC-V FMVP.D.X 指令详解

指令手册R-type

在 RV32 上把两个整数寄存器拼成一个双精度浮点寄存器位模式。

指令语法

fmvp.d.x rd, rs1, rs2
操作数说明
rd/rs 字段按指令方向分别表示整数寄存器或浮点寄存器。
FMV 类指令复制位模式,不执行 FCVT 数值转换,也不使用 rm。
ZfaD数据移动

指令行为说明

FMVP.D.X 是 Zfa 为 RV32+D 提供的位移动指令,把 x[rs1] 作为低 32 位、x[rs2] 作为高 32 位组合后写入 f[rd]。这是位复制,不执行整数到浮点数值转换,也不设置浮点异常标志。

快速理解与检索要点

FMVP.D.X 用来补齐 RV32 上双精度 64 位编码和 32 位整数寄存器之间的位搬移路径。页面重点是位顺序和“不是数值转换”。

FMVH.X.D 取高 32 位;FMVP.D.X 用 rs1 提供低 32 位、rs2 提供高 32 位。
这些指令不使用 rm,也不会改变 NaN payload。

常见使用场景

浮点位移动

结合 «fmvp.d.x f10, x11, x12 ; f10 = {x12, x11} (RV32 double)» 等实际代码理解该场景。

RV32 双精度数据搬移

结合 «fmvp.d.x f10, x11, x12 ; f10 = {x12, x11} (RV32 double)» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 R-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

仅用于 RV32+D 的双精度位搬移场景;RV64 通常使用 FMV.X.D/FMV.D.X。
这是位复制,不是 FCVT 数值转换。
不会设置浮点异常标志。

常见问题

FMVP.D.X 是 FCVT 吗?

不是。它只复制位模式,不按数值解释并转换。

FMVP.D.X 为什么强调 RV32?

因为 RV32 整数寄存器只有 32 位,需要成对搬移 64 位双精度编码。