# Immediate Tables
Tables that are used by
-`fmvtg[s][.]`/`fmvfg[s]`/`fcvttg[o][.]`/`fcvtfg[s][.]`:
+`mffpr[s][.]`/`mtfpr[s]`/`cffpr[o][.]`/`ctfpr[s][.]`:
## `IT` -- Integer Type
## Floating Move To GPR
```
- fmvtg RT, FRB
- fmvtg. RT, FRB
+ mffpr RT, FRB
+ mffpr. RT, FRB
```
| 0-5 | 6-10 | 11-15 | 16-20 | 21-30 | 31 | Form |
Move a 64-bit float from a FPR to a GPR, just copying bits of the IEEE 754
representation directly. This is equivalent to `stfd` followed by `ld`.
-As `fmvtg` is just copying bits, `FPSCR` is not affected in any way. `fmvtg` is
+As `mffpr` is just copying bits, `FPSCR` is not affected in any way. `mffpr` is
similar to `mfvsrd`, except doesn't require VSX, which is useful for SFFS
implementations.
## Floating Move To GPR Single
```
- fmvtgs RT, FRB
- fmvtgs. RT, FRB
+ mffprs RT, FRB
+ mffprs. RT, FRB
```
| 0-5 | 6-10 | 11-15 | 16-20 | 21-30 | 31 | Form |
Move a BFP32 from a FPR to a GPR, by using `SINGLE` to extract the standard
`BFP32` form from FRB and zero-extending the result to 64-bits and storing to
RT. This is equivalent to `stfs` followed by `lwz`.
-As `fmvtgs` is just copying the BFP32 form, `FPSCR` is not affected in any way.
+As `mffprs` is just copying the BFP32 form, `FPSCR` is not affected in any way.
Rc=1 tests RT and sets CR0, exactly like all other Scalar Fixed-Point
operations.
## Double-Precision Floating Move From GPR
```
- fmvfg FRT, RB
+ mtfpr FRT, RB
```
| 0-5 | 6-10 | 11-15 | 16-20 | 21-30 | 31 | Form |
move a 64-bit float from a GPR to a FPR, just copying bits of the IEEE 754
representation directly. This is equivalent to `std` followed by `lfd`.
-As `fmvfg` is just copying bits, `FPSCR` is not affected in any way. `fmvfg` is
+As `mtfpr` is just copying bits, `FPSCR` is not affected in any way. `mtfpr` is
similar to `mtvsrd`, except doesn't require VSX, which is useful for SFFS
implementations.
## Floating Move From GPR Single
```
- fmvfgs FRT, RB
+ mtfprs FRT, RB
```
| 0-5 | 6-10 | 11-15 | 16-20 | 21-30 | 31 | Form |
Move a BFP32 from a GPR to a FPR, by using `DOUBLE` on the least significant
32-bits of RB to do the standard BFP32 in BFP64 trick and store the result in
FRT. This is equivalent to `stw` followed by `lfs`.
-As `fmvfgs` is just copying the BFP32 form, `FPSCR` is not affected in any way.
+As `mtfprs` is just copying the BFP32 form, `FPSCR` is not affected in any way.
Special Registers altered:
## Double-Precision Floating Convert From Integer In GPR
```
- fcvtfg FRT, RB, IT
- fcvtfg. FRT, RB, IT
+ ctfpr FRT, RB, IT
+ ctfpr. FRT, RB, IT
```
| 0-5 | 6-10 | 11-12 | 13-15 | 16-20 | 21-30 | 31 | Form |
| Assembly Alias | Full Instruction |
|----------------------|----------------------|
-| `fcvtfgw FRT, RB` | `fcvtfg FRT, RB, 0` |
-| `fcvtfgw. FRT, RB` | `fcvtfg. FRT, RB, 0` |
-| `fcvtfguw FRT, RB` | `fcvtfg FRT, RB, 1` |
-| `fcvtfguw. FRT, RB` | `fcvtfg. FRT, RB, 1` |
-| `fcvtfgd FRT, RB` | `fcvtfg FRT, RB, 2` |
-| `fcvtfgd. FRT, RB` | `fcvtfg. FRT, RB, 2` |
-| `fcvtfgud FRT, RB` | `fcvtfg FRT, RB, 3` |
-| `fcvtfgud. FRT, RB` | `fcvtfg. FRT, RB, 3` |
+| `ctfprw FRT, RB` | `ctfpr FRT, RB, 0` |
+| `ctfprw. FRT, RB` | `ctfpr. FRT, RB, 0` |
+| `ctfpruw FRT, RB` | `ctfpr FRT, RB, 1` |
+| `ctfpruw. FRT, RB` | `ctfpr. FRT, RB, 1` |
+| `ctfprd FRT, RB` | `ctfpr FRT, RB, 2` |
+| `ctfprd. FRT, RB` | `ctfpr. FRT, RB, 2` |
+| `ctfprud FRT, RB` | `ctfpr FRT, RB, 3` |
+| `ctfprud. FRT, RB` | `ctfpr. FRT, RB, 3` |
----------
## Floating Convert From Integer In GPR Single
```
- fcvtfgs FRT, RB, IT
- fcvtfgs. FRT, RB, IT
+ ctfprs FRT, RB, IT
+ ctfprs. FRT, RB, IT
```
| 0-5 | 6-10 | 11-12 | 13-15 | 16-20 | 21-30 | 31 | Form |
| Assembly Alias | Full Instruction |
|----------------------|----------------------|
-| `fcvtfgws FRT, RB` | `fcvtfg FRT, RB, 0` |
-| `fcvtfgws. FRT, RB` | `fcvtfg. FRT, RB, 0` |
-| `fcvtfguws FRT, RB` | `fcvtfg FRT, RB, 1` |
-| `fcvtfguws. FRT, RB` | `fcvtfg. FRT, RB, 1` |
-| `fcvtfgds FRT, RB` | `fcvtfg FRT, RB, 2` |
-| `fcvtfgds. FRT, RB` | `fcvtfg. FRT, RB, 2` |
-| `fcvtfguds FRT, RB` | `fcvtfg FRT, RB, 3` |
-| `fcvtfguds. FRT, RB` | `fcvtfg. FRT, RB, 3` |
+| `ctfprws FRT, RB` | `ctfpr FRT, RB, 0` |
+| `ctfprws. FRT, RB` | `ctfpr. FRT, RB, 0` |
+| `ctfpruws FRT, RB` | `ctfpr FRT, RB, 1` |
+| `ctfpruws. FRT, RB` | `ctfpr. FRT, RB, 1` |
+| `ctfprds FRT, RB` | `ctfpr FRT, RB, 2` |
+| `ctfprds. FRT, RB` | `ctfpr. FRT, RB, 2` |
+| `ctfpruds FRT, RB` | `ctfpr FRT, RB, 3` |
+| `ctfpruds. FRT, RB` | `ctfpr. FRT, RB, 3` |
----------
## Double-Precision Floating Convert To Integer In GPR
```
- fcvttg RT, FRB, CVM, IT
- fcvttg. RT, FRB, CVM, IT
- fcvttgo RT, FRB, CVM, IT
- fcvttgo. RT, FRB, CVM, IT
+ cffpr RT, FRB, CVM, IT
+ cffpr. RT, FRB, CVM, IT
+ cffpro RT, FRB, CVM, IT
+ cffpro. RT, FRB, CVM, IT
```
| 0-5 | 6-10 | 11-12 | 13-15 | 16-20 | 21 | 22-30 | 31 | Form |
| Assembly Alias | Full Instruction |
|---------------------------|----------------------------|
-| `fcvttgw RT, FRB, CVM` | `fcvttg RT, FRB, CVM, 0` |
-| `fcvttgw. RT, FRB, CVM` | `fcvttg. RT, FRB, CVM, 0` |
-| `fcvttgwo RT, FRB, CVM` | `fcvttgo RT, FRB, CVM, 0` |
-| `fcvttgwo. RT, FRB, CVM` | `fcvttgo. RT, FRB, CVM, 0` |
-| `fcvttguw RT, FRB, CVM` | `fcvttg RT, FRB, CVM, 1` |
-| `fcvttguw. RT, FRB, CVM` | `fcvttg. RT, FRB, CVM, 1` |
-| `fcvttguwo RT, FRB, CVM` | `fcvttgo RT, FRB, CVM, 1` |
-| `fcvttguwo. RT, FRB, CVM` | `fcvttgo. RT, FRB, CVM, 1` |
-| `fcvttgd RT, FRB, CVM` | `fcvttg RT, FRB, CVM, 2` |
-| `fcvttgd. RT, FRB, CVM` | `fcvttg. RT, FRB, CVM, 2` |
-| `fcvttgdo RT, FRB, CVM` | `fcvttgo RT, FRB, CVM, 2` |
-| `fcvttgdo. RT, FRB, CVM` | `fcvttgo. RT, FRB, CVM, 2` |
-| `fcvttgud RT, FRB, CVM` | `fcvttg RT, FRB, CVM, 3` |
-| `fcvttgud. RT, FRB, CVM` | `fcvttg. RT, FRB, CVM, 3` |
-| `fcvttgudo RT, FRB, CVM` | `fcvttgo RT, FRB, CVM, 3` |
-| `fcvttgudo. RT, FRB, CVM` | `fcvttgo. RT, FRB, CVM, 3` |
+| `cffprw RT, FRB, CVM` | `cffpr RT, FRB, CVM, 0` |
+| `cffprw. RT, FRB, CVM` | `cffpr. RT, FRB, CVM, 0` |
+| `cffprwo RT, FRB, CVM` | `cffpro RT, FRB, CVM, 0` |
+| `cffprwo. RT, FRB, CVM` | `cffpro. RT, FRB, CVM, 0` |
+| `cffpruw RT, FRB, CVM` | `cffpr RT, FRB, CVM, 1` |
+| `cffpruw. RT, FRB, CVM` | `cffpr. RT, FRB, CVM, 1` |
+| `cffpruwo RT, FRB, CVM` | `cffpro RT, FRB, CVM, 1` |
+| `cffpruwo. RT, FRB, CVM` | `cffpro. RT, FRB, CVM, 1` |
+| `cffprd RT, FRB, CVM` | `cffpr RT, FRB, CVM, 2` |
+| `cffprd. RT, FRB, CVM` | `cffpr. RT, FRB, CVM, 2` |
+| `cffprdo RT, FRB, CVM` | `cffpro RT, FRB, CVM, 2` |
+| `cffprdo. RT, FRB, CVM` | `cffpro. RT, FRB, CVM, 2` |
+| `cffprud RT, FRB, CVM` | `cffpr RT, FRB, CVM, 3` |
+| `cffprud. RT, FRB, CVM` | `cffpr. RT, FRB, CVM, 3` |
+| `cffprudo RT, FRB, CVM` | `cffpro RT, FRB, CVM, 3` |
+| `cffprudo. RT, FRB, CVM` | `cffpro. RT, FRB, CVM, 3` |
# fclass (Scalar variant of xvtstdcsp)
fptstp(s), TBD, high, 10, yes, EXT0xx, no, sv/fclass, 1R1w, SFFS, TODO
# INT<->FP mv, TBD
-fmvtg(s), ls006.fpintmv, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w, SFFS, TODO
-fmvfg(s), ls006.fpintmv, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w, SFFS, TODO
-fcvtfg(s), ls006.fpintmv, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w, SFFS, TODO
-fcvttg(o), ls006.fpintmv, high, 9, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w, SFFS, TODO
+mffpr(s), ls006.fpintmv, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w, SFFS, TODO
+mtfpr(s), ls006.fpintmv, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w, SFFS, TODO
+ctfpr(s), ls006.fpintmv, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w, SFFS, TODO
+cffpr(o), ls006.fpintmv, high, 9, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w, SFFS, TODO
# Big-Integer Chained 3-in 2-out (64-bit Carry)
dsld, ls003.bignum, high, 5, yes, EXT0xx, no, sv/biginteger, 3R2W1w, SFFS, yes
dsrd, ls003.bignum, high, 5, yes, EXT0xx, no, sv/biginteger, 3R2W1w, SFFS, yes