**Summary**
-Instructions added
+Single-precision Instructions added:
-* `fmvtg` -- Floating Move To GPR
-* `fmvfg` -- Floating Move From GPR
-* `fcvttg` -- Floating Convert To Integer In GPR
-* `fcvtfg` -- Floating Convert From Integer In GPR
+* `fmvtgs` -- Single-Precision Floating Move To GPR
+* `fmvfgs` -- Single-Precision Floating Move From GPR
+* `fcvttgs` -- Single-Precision Floating Convert To Integer In GPR
+* `fcvtfgs` -- Single-Precision Floating Convert From Integer In GPR
+
+Identical (except Double-precision) Instructions added:
+
+* `fmvtg` -- Double-Precision Floating Move To GPR
+* `fmvfg` -- Double-Precision Floating Move From GPR
+* `fcvttg` -- Double-Precision Floating Convert To Integer In GPR
+* `fcvtfg` -- Double-Precision Floating Convert From Integer In GPR
**Submitter**: Luke Leighton (Libre-SOC)
**Impact on processor**:
-* Addition of five new GPR-FPR-based instructions
+* Addition of four new Single-Precision GPR-FPR-based instructions
+* Addition of four new Double-Precision GPR-FPR-based instructions
**Impact on software**:
* These instructions are present in many other ISAs.
* JavaScript rounding as one instruction saves 35 instructions including
six branches. (FIXME: disagrees with int_fp_mv and int_fp_mv/appendix)
+* Both sets are orthogonal (no difference except being Single/Double).
+ This allows IBM to follow the pre-existing precedent of allocating
+ separate Major Opcodes (PO) for Double-precision and Single-precision
+ respectively.
**Changes**
\newpage{}
-## Floating Move From GPR
+## Double-Precision Floating Move From GPR
```
fmvfg FRT, RB
\newpage{}
-## Floating Convert From Integer In GPR
+## Double-Precision Floating Convert From Integer In GPR
```
fcvtfg FRT, RB, IT
\newpage{}
-## Floating Convert To Integer In GPR
+## Double-Precision Floating Convert To Integer In GPR
```
fcvttg RT, FRB, CVM, IT