fsgnjx.s

Floating-Point Sign-Inject XOR Single-Precision

This instruction is defined by:

Encoding

svg

Synopsis

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.

Access

M HS U VS VU

Always

Always

Always

Always

Always

Decode Variables

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

Execution

  • Pruned, XLEN == 64

  • Original

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