Rc=1 tests RT and sets CR0, exactly like all other Scalar Fixed-Point
operations.
+Special Registers altered:
+
+ CR0 (if Rc=1)
+
+## FPR to GPR move
+
+`fmvtg RT, FRB, RCS`
+
+| 0-5 | 6-10 | 11-15 | 16-20 | 21-29 | 30-31 | Form |
+|-----|------|-------|-------|-------|-------|--------|
+| PO | RT | 0 | FRB | XO | RCS | X-Form |
+
+```
+ if RCS[0] = 1 then # if Single mode
+ RT <- [0] * 32 || SINGLE((FRB)) # SINGLE since that's what stfs uses
+ else
+ RT <- (FRB)
+```
+
+Move a 32/64-bit float from a FPR to a GPR, just copying bits of the
+IEEE 754 representation directly. This is equivalent to `stfs` followed
+by `lwz` or equivalent to `stfd` followed by `ld`. As `fmvtg` is just
+copying bits, `FPSCR` is not affected in any way.
+
+Rc=1 tests RT and sets CR0, exactly like all other Scalar Fixed-Point
+operations.
+
Special Registers altered:
CR0 (if Rc=1)
Rc=1 tests FRT and sets CR1, exactly like all other Scalar Floating-Point
operations.
+Special Registers altered:
+
+ CR1 (if Rc=1)
+
+## GPR to FPR move
+
+`fmvfg FRT, RB, RCS`
+
+| 0-5 | 6-10 | 11-15 | 16-20 | 21-29 | 30-31 | Form |
+|-----|------|-------|-------|-------|-------|--------|
+| PO | FRT | 0 | RB | XO | RCS | X-Form |
+
+```
+ if RCS[0] = 1 then # if Single mode
+ FRT <- DOUBLE((RB)[32:63]) # DOUBLE since that's what lfs uses
+ else
+ FRT <- (RB)
+```
+
+move a 32/64-bit float from a GPR to a FPR, just copying bits of the IEEE
+754 representation directly. This is equivalent to `stw` followed by `lfs`
+or equivalent to `std` followed by `lfd`. As `fmvfg` is just copying bits,
+`FPSCR` is not affected in any way.
+
+Rc=1 tests FRT and sets CR1, exactly like all other Scalar Floating-Point
+operations.
+
Special Registers altered:
CR1 (if Rc=1)
[Java/Saturating semantics]: #fp-to-int-java-saturating-conversion-semantics
[JavaScript semantics]: #fp-to-int-javascript-conversion-semantics
+----------
+
+\newpage{}
+
+## FPR to GPR move
+
+`fmvtg RT, FRB, RCS`
+
+| 0-5 | 6-10 | 11-15 | 16-20 | 21-29 | 30-31 | Form |
+|-----|------|-------|-------|-------|-------|--------|
+| PO | RT | 0 | FRB | XO | RCS | X-Form |
+
+```
+ if RCS[0] = 1 then # if Single mode
+ RT <- [0] * 32 || SINGLE((FRB)) # SINGLE since that's what stfs uses
+ else
+ RT <- (FRB)
+```
+
+Move a 32/64-bit float from a FPR to a GPR, just copying bits of the
+IEEE 754 representation directly. This is equivalent to `stfs` followed
+by `lwz` or equivalent to `stfd` followed by `ld`. As `fmvtg` is just
+copying bits, `FPSCR` is not affected in any way.
+
+Rc=1 tests RT and sets CR0, exactly like all other Scalar Fixed-Point
+operations.
+
+Special Registers altered:
+
+ CR0 (if Rc=1)
+
+
----------
\newpage{}
| `fmvtgs. RT, FRB` | `fmvtg RT, FRB, 3` |
+----------
+
+\newpage{}
+
+## GPR to FPR move
+
+`fmvfg FRT, RB, RCS`
+
+| 0-5 | 6-10 | 11-15 | 16-20 | 21-29 | 30-31 | Form |
+|-----|------|-------|-------|-------|-------|--------|
+| PO | FRT | 0 | RB | XO | RCS | X-Form |
+
+```
+ if RCS[0] = 1 then # if Single mode
+ FRT <- DOUBLE((RB)[32:63]) # DOUBLE since that's what lfs uses
+ else
+ FRT <- (RB)
+```
+
+move a 32/64-bit float from a GPR to a FPR, just copying bits of the IEEE
+754 representation directly. This is equivalent to `stw` followed by `lfs`
+or equivalent to `std` followed by `lfd`. As `fmvfg` is just copying bits,
+`FPSCR` is not affected in any way.
+
+Rc=1 tests FRT and sets CR1, exactly like all other Scalar Floating-Point
+operations.
+
+Special Registers altered:
+
+ CR1 (if Rc=1)
+
----------
\newpage{}