fmsub.s

Floating-Point Multiply-Subtract Single-Precision

The fmsub.s multiplies the values in fs1 and fs2, subtracts the value in fs3, and writes the final result to fd.

Assembly format

fmsub.s fd, fs1, fs2, fs3, rm

Decode Variables

Bits<5> fs3 = $encoding[31:27];
Bits<5> fs2 = $encoding[24:20];
Bits<5> fs1 = $encoding[19:15];
Bits<3> rm = $encoding[14:12];
Bits<5> fd = $encoding[11:7];

Execution

check_f_ok($encoding);
RoundingMode mode = rm_to_mode(rm, $encoding);
F[fd] = f32_muladd(F[fs1], F[fs2], F[fs3], F32MulAddOp::Softfloat_mulAdd_subC, mode);
mark_f_state_dirty();

Exceptions

This instruction may result in the following synchronous exceptions:

  • IllegalInstruction

Encoding

svg

Defining extension

F

Access

M

Always

Containing profiles

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

  • Optional: RVI20U32, RVI20U64