fsgnjx.s

Floating-Point Sign-Inject XOR Single-Precision

The fsgnjx.s instruction produces a result that takes all bits except the sign bit from fs1. The result’s sign bit is the XOR of sign bits of fs1 and fs2, and the result is written to the destination register fd. Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs.

Assembly format

fsgnjx.s fd, fs1, fs2

Decode Variables

Bits<5> fs2 = $encoding[24:20];
Bits<5> fs1 = $encoding[19:15];
Bits<5> fd = $encoding[11:7];

Execution

check_f_ok($encoding);
Bits<32> sp_value = {F[fs1][31] ^ F[fs2][31], F[fs1][30:0]};
if (implemented?(ExtensionName::D)) {
  F[fd] = nan_box(32, 64, sp_value);
} else {
  F[fd] = sp_value;
}
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