- Category pages linked each family as `<slug>.md`, relative to categories/, where no family page lives. They now link `../<category>/<slug>.md`. - Form pages linked a member into its *own* category directory, so every VMX128 sibling (`vsldoi128`) pointed at vmx128/ although its family page is under vmx/. They now link into the family's directory. - Hand-written "Related" and sibling mentions linked other categories' pages as if they were in the same directory. 109 are retargeted through the page index; 29 that pointed a family page at itself (`vrefp128` on vrefp.md) and 6 naming instructions the manual has no page for are plain text now. Regenerated at the existing Canary pin (f21ebd49e): upstream has moved on, and re-pinning belongs in its own change. The generator reports 0 family pages changed and is idempotent; the only dead links left are TEMPLATE.md's placeholders. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
61 lines
3.9 KiB
Markdown
61 lines
3.9 KiB
Markdown
# Form `VX128` — VX128 — VMX128 3-operand (register-fused)
|
||
|
||
## Bit Layout
|
||
|
||
| Bits | Field | Meaning |
|
||
| --- | --- | --- |
|
||
| 0–5 | `OPCD` | primary opcode (4 or 5) |
|
||
| 6–10 | `VD128l` | destination low 5 bits |
|
||
| 11–15 | `VA128l` | source A low 5 bits |
|
||
| 16–20 | `VB128l` | source B low 5 bits |
|
||
| 21 | `VA128H` | source A high bit |
|
||
| 22 | `—` | reserved |
|
||
| 23–25 | `VC` | optional VC / XO sub-field |
|
||
| 26 | `VA128h` | source A middle bit |
|
||
| 27 | `—` | reserved |
|
||
| 28–29 | `VD128h` | destination high 2 bits |
|
||
| 30–31 | `VB128h` | source B high 2 bits |
|
||
|
||
## Instructions Using This Form
|
||
|
||
<!-- GENERATED: BEGIN -->
|
||
|
||
| Mnemonic | Opcode | Group | Description |
|
||
| --- | --- | --- | --- |
|
||
| [`vaddfp128`](../vmx/vaddfp.md) | `0x14000010` | vmx | Vector128 Add Floating Point |
|
||
| [`vsubfp128`](../vmx/vsubfp.md) | `0x14000050` | vmx | Vector128 Subtract Floating Point |
|
||
| [`vmulfp128`](../vmx128/vmulfp128.md) | `0x14000090` | vmx | Vector128 Multiply Floating-Point |
|
||
| [`vmaddfp128`](../vmx/vmaddfp.md) | `0x140000d0` | vmx | Vector128 Multiply Add Floating Point |
|
||
| [`vmaddcfp128`](../vmx128/vmaddcfp128.md) | `0x14000110` | vmx | Vector128 Multiply Add Floating Point |
|
||
| [`vnmsubfp128`](../vmx/vnmsubfp.md) | `0x14000150` | vmx | Vector128 Negative Multiply-Subtract Floating Point |
|
||
| [`vmsum3fp128`](../vmx128/vmsum3fp128.md) | `0x14000190` | vmx | Vector128 Multiply Sum 3-way Floating Point |
|
||
| [`vmsum4fp128`](../vmx128/vmsum4fp128.md) | `0x140001d0` | vmx | Vector128 Multiply Sum 4-way Floating-Point |
|
||
| [`vpkshss128`](../vmx/vpkshss.md) | `0x14000200` | vmx | Vector128 Pack Signed Half Word Signed Saturate |
|
||
| [`vand128`](../vmx/vand.md) | `0x14000210` | vmx | Vector128 Logical AND |
|
||
| [`vpkshus128`](../vmx/vpkshus.md) | `0x14000240` | vmx | Vector128 Pack Signed Half Word Unsigned Saturate |
|
||
| [`vandc128`](../vmx/vandc.md) | `0x14000250` | vmx | Vector128 Logical AND with Complement |
|
||
| [`vpkswss128`](../vmx/vpkswss.md) | `0x14000280` | vmx | Vector128 Pack Signed Word Signed Saturate |
|
||
| [`vnor128`](../vmx/vnor.md) | `0x14000290` | vmx | Vector128 Logical NOR |
|
||
| [`vpkswus128`](../vmx/vpkswus.md) | `0x140002c0` | vmx | Vector128 Pack Signed Word Unsigned Saturate |
|
||
| [`vor128`](../vmx/vor.md) | `0x140002d0` | vmx | Vector128 Logical OR |
|
||
| [`vpkuhum128`](../vmx/vpkuhum.md) | `0x14000300` | vmx | Vector128 Pack Unsigned Half Word Unsigned Modulo |
|
||
| [`vxor128`](../vmx/vxor.md) | `0x14000310` | vmx | Vector128 Logical XOR |
|
||
| [`vpkuhus128`](../vmx/vpkuhus.md) | `0x14000340` | vmx | Vector128 Pack Unsigned Half Word Unsigned Saturate |
|
||
| [`vsel128`](../vmx/vsel.md) | `0x14000350` | vmx | Vector128 Conditional Select |
|
||
| [`vpkuwum128`](../vmx/vpkuwum.md) | `0x14000380` | vmx | Vector128 Pack Unsigned Word Unsigned Modulo |
|
||
| [`vslo128`](../vmx/vslo.md) | `0x14000390` | vmx | Vector128 Shift Left Octet |
|
||
| [`vpkuwus128`](../vmx/vpkuwus.md) | `0x140003c0` | vmx | Vector128 Pack Unsigned Word Unsigned Saturate |
|
||
| [`vsro128`](../vmx/vsro.md) | `0x140003d0` | vmx | Vector128 Shift Right Octet |
|
||
| [`vrlw128`](../vmx/vrlw.md) | `0x18000050` | vmx | Vector128 Rotate Left Word |
|
||
| [`vslw128`](../vmx/vslw.md) | `0x180000d0` | vmx | Vector128 Shift Left Integer Word |
|
||
| [`vsraw128`](../vmx/vsraw.md) | `0x18000150` | vmx | Vector128 Shift Right Arithmetic Word |
|
||
| [`vsrw128`](../vmx/vsrw.md) | `0x180001d0` | vmx | Vector128 Shift Right Word |
|
||
| [`vmaxfp128`](../vmx/vmaxfp.md) | `0x18000280` | vmx | Vector128 Maximum Floating Point |
|
||
| [`vminfp128`](../vmx/vminfp.md) | `0x180002c0` | vmx | Vector128 Minimum Floating Point |
|
||
| [`vmrghw128`](../vmx/vmrghw.md) | `0x18000300` | vmx | Vector128 Merge High Word |
|
||
| [`vmrglw128`](../vmx/vmrglw.md) | `0x18000340` | vmx | Vector128 Merge Low Word |
|
||
| [`vupkhsb128`](../vmx/vupkhsb.md) | `0x18000380` | vmx | Vector128 Unpack High Signed Byte |
|
||
| [`vupklsb128`](../vmx/vupklsb.md) | `0x180003c0` | vmx | Vector128 Unpack Low Signed Byte |
|
||
|
||
<!-- GENERATED: END -->
|