vrsave, vscr (fixed)
sfp (fixed)
+# Demo of encoding that's backward-compatible with PowerISA v3.1 in both LE and BE mode
+
+## Assumed instruction encodings for this encoding demo
+
+Bits numbered using MSB0. Ranges are inclusive.
+
+### Small Register Field Encoding
+
+| Encoding | Register |
+|----------|----------|
+| 0 | R3 |
+| 1 | R4 |
+| 2 | R5 |
+| 3 | R6 |
+| 4 | R28 |
+| 5 | R29 |
+| 6 | R30 |
+| 7 | R31 |
+
+### Instruction Fields
+
+| Name | Range | Standard | Description |
+|------|--------------|---------------|-----------------------------------------------------|
+| PO | 0:5 | PowerISA v3.0 | Primary Opcode |
+| XO | 21:30 | PowerISA v3.0 | Extended Opcode |
+| SCM | 15 | New | Swap between Compressed & standard Mode |
+| SCMT | 0 | New | Swap between Compressed & standard Mode Temporarily |
+| SI | 16:31 | PowerISA v3.0 | Signed Immediate |
+| si0 | prefix 14:31 | PowerISA v3.1 | upper 18 bits Signed Immediate |
+| si1 | suffix 16:31 | PowerISA v3.1 | lower 16 bits Signed Immediate |
+| SO | 6:8 | New | Small Opcode for 16-bit instructions |
+| SOH | 1:5 | New | Small Opcode High bits for 16-bit instructions |
+| SRS | 12:14 | New | Small Source Register for 16-bit instructions |
+| SRT | 9:11 | New | Small Target Register for 16-bit instructions |
+
+### Mnemonic Prefixes
+
+| Prefix | Mode | Next Mode | Next Next Mode | Instruction Width | Example | Comment |
+|------------|------------|------------|----------------|-------------------|-------------------------|------------------------------------------------|
+| _\<None\>_ | Standard | Standard | - | 32-bit | `addi R3, R3, 0x15` | Defined by PowerISA v3.0 |
+| `p` | Standard | Standard | - | 64-bit | `paddi R3, R3, 0x12345` | Defined by PowerISA v3.1 |
+| `x.` | Standard | Standard | - | 48-bit | `x.placeholder` | `x` means heXa-byte |
+| `h.` | Standard | Standard | - | 16-bit | `h.add R3, R4` | `h` means Half-word |
+| `hs.` | Standard | Compressed | - | 16-bit | `hs.add R3, R4` | `hs` means Half-word & Swap mode |
+| `c.` | Compressed | Compressed | - | 16-bit | `c.addi R3, R4, 0x5` | `c` means Compressed |
+| `cs.` | Compressed | Standard | - | 16-bit | `cs.add R3, R4` | `cs` means Compressed & Swap mode |
+| `cst.` | Compressed | Standard | Compressed | 16-bit | `cst.add R3, R4` | `cst` means Compressed & Swap mode Temporarily |
+
+### Standard Mode
+
+#### Standard Mode 32-bit Instructions (PowerISA v3.0)
+
+| Mnemonic | PO (0:5) | RT (6:10) | RA (11:15) | SI (16:31) | Operation |
+|----------------------|----------|-----------|------------|------------|--------------------------------|
+| `addi RT, RA, immed` | 14 | RT | RA | SI | RT <- (RA|0) + EXTS64(SI) |
+
+#### Standard Mode 64-bit Instructions (PowerISA v3.1)
+
+Note that bit numbering goes from 0 to 31 in the prefix, then 0 to 31 in the suffix -- following the numbering in the PowerISA v3.1 spec.
+
+| Field | Value |
+|-------------|------------------------------------------------|
+| Mnemonic | `paddi RT, RA, immed` |
+| PO (0:5) | 14 |
+| (6:7) | 2 |
+| (8) | 0 |
+| (9:10) | // |
+| R (11) | 0 |
+| (12:13) | // |
+| si0 (14:31) | si0 |
+| PO (0:5) | 14 |
+| RT (6:10) | RT |
+| RA (11:15) | RA |
+| si1 (16:31) | si1 |
+| Operation | RT <- (RA|0) + EXTS64(si0||si1) |
+
+#### Standard Mode 16-bit Instructions (New)
+
+| Mnemonic | PO (0:5) | SO (6:8) | SRT (9:11) | SRS (12:14) | SCM (15) | Operation |
+|---------------|----------|----------|------------|-------------|----------|---------------------------------------------|
+| h.add RT, RS | 5 | 0 | RT | RS | 0 | RT <- RT + RS |
+| hs.add RT, RS | 5 | 0 | RT | RS | 1 | RT <- RT + RS <br/> Swap to Compressed Mode |
+
+#### Standard Mode 48-bit Instructions (New; Placeholder)
+
+| Mnemonic | PO (0:5) | placeholder (6:20) | XO (21:30) | placeholder (31:47) | Operation |
+|---------------|----------|--------------------|------------|---------------------|-------------|
+| x.placeholder | 0 | placeholder | != 256 | placeholder | placeholder |
+
+### Compressed Mode
+
+#### Compressed Mode 16-bit Instructions (New)
+
+| Mnemonic | SCMT (0) | SOH (1:5) | SO (6:8) | SRT (9:11) | SRS (12:14) | SCM (15) | Operation |
+|----------------|----------|-----------|----------|------------|-------------|----------|---------------------------------------------------------|
+| c.add RT, RS | 0 | 1 | 0 | RT | RS | 0 | RT <- RT + RS |
+| cs.add RT, RS | 0 | 1 | 0 | RT | RS | 1 | RT <- RT + RS <br/> Swap to Compressed Mode |
+| cst.add RT, RS | 1 | 1 | 0 | RT | RS | 1 | RT <- RT + RS <br/> Swap to Compressed Mode Temporarily |
+
+## LE mode
+
+TODO(programmerjake): finish
+
+| Address | Byte | Description |
+|---------|------|-------------|
+| 0x1000 | | |
+| 0x1001 | | |
+
+## BE mode
+
+TODO(programmerjake): finish
+
+| Address | Byte | Description |
+|---------|------|-------------|
+| 0x1000 | | |
+| 0x1001 | | |
+