Does FSGNJN.D 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 opposite of rs2 sign.
FSGNJN.D only recombines the sign bit of a double-precision floating-point encoding: exponent and significand fields come from rs1, while the sign is produced from the opposite of rs2 sign. It performs no floating-point arithmetic, does not round, sets no floating-point exception flags, and does not canonicalize NaNs.
FSGNJN.D 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 «fsgnjn.d f0, f1, f1 # FNEG.D: f0 = -f1 (sign flip only)».
Understand this scenario with real code like «fsgnjn.d f0, f1, f1 # FNEG.D: f0 = -f1 (sign flip only)».
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.