From: lkcl Date: Mon, 3 Oct 2022 20:16:45 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls005_v1~218 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c39e86e1a267272b2810dc677a15d3951cf60acb;p=libreriscv.git --- diff --git a/openpower/sv/rfc/ls002.mdwn b/openpower/sv/rfc/ls002.mdwn index 888b9c405..23a3d3e02 100644 --- a/openpower/sv/rfc/ls002.mdwn +++ b/openpower/sv/rfc/ls002.mdwn @@ -109,7 +109,7 @@ fmvis f4, 0xFF80 # writes -Infinity to f4 fmvis f4, 0x3FFF # writes +1.9921875 to f4 ``` -# Float Immediate Second-Half Move +# Floating-Point Immediate Second-Half Move `fishmv FRS, D` @@ -130,19 +130,22 @@ Special registers altered: None -Strategically similar to how `oris` is used to construct -32-bit Integers, an additional 16-bits of immediate is +An additional 16-bits of immediate is inserted into `FRS` to extend its accuracy to -a full FP32 (stored as usual in FP64 Format within the FPR). -If a prior `fmvis` instruction had been used to -set the upper 16-bits from an FP32 value, `fishmv` contains the -lower 16-bits. +a full FP32, which is then stored in the usual FP64 Format within the FPR. **This instruction performs a Read-Modify-Write.** *FRS is read, the additional 16 bit immediate inserted, and the result also written to FRS. +This is strategically similar to how `li` combined with `oris` is +used to construct 32-bit Integers. `fishmv` may be macro-op-fused with `fmvis`* +Programmer's note: +If a prior `fmvis` instruction had been used to +set the upper 16-bits from an FP32 value, `fishmv` may be used +to set the +lower 16-bits. Example: ```