fsh
Half-precision floating-point store
The fsh instruction stores a half-precision floating-point value from register xd to memory at address xs1 + imm.
fsh does not modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved.
fsh ignores all but the lower 16 bits in fs2.
fsh is only guaranteed to execute atomically if the effective address is naturally aligned.
Decode Variables
signed Bits<12> imm = sext({$encoding[31:25], $encoding[11:7]}, 12);
Bits<5> xs1 = $encoding[19:15];
Bits<5> fs2 = $encoding[24:20];
Execution
check_f_ok($encoding);
XReg virtual_address = X[xs1] + $signed(imm);
Bits<16> hp_value = F[fs2][15:0];
write_memory(16, virtual_address, hp_value, $encoding);