Does FSGNJX.Q change the NaN payload?
It does not canonicalize NaNs; except for the sign bit rule, the remaining rs1 bits are preserved.
The result keeps rs1 magnitude bits and takes its sign from the XOR of rs1 and rs2 signs.
FSGNJX.Q only recombines the sign bit of a quad-precision floating-point encoding: exponent and significand fields come from rs1, while the sign is produced from the XOR of rs1 and rs2 signs. It performs no floating-point arithmetic, does not round, sets no floating-point exception flags, and does not canonicalize NaNs.
FSGNJX.Q answers searches such as why floating negate/absolute/copy does not raise exceptions. It only manipulates sign-bit information and leaves rs1 exponent and significand bits unchanged.
Understand this scenario with real code like «fsgnjx.q f0, f1, f2 # f0 = f1 XOR sign of f2».
Understand this scenario with real code like «fsgnjx.q f0, f1, f2 # f0 = f1 XOR sign of f2».
It does not canonicalize NaNs; except for the sign bit rule, the remaining rs1 bits are preserved.
No. It is a bit-level sign operation inside floating-point registers.