WS7: VMX/VSX Implementation
Owner: TBD Duration: 24-32 weeks Priority: High (Critical for LCS Compliance)
💬 Discuss WS7: This is our most complex workstream! Join #powercommons:matrix.org to discuss VMX/VSX implementation strategies, share resources, or collaborate on this critical component.
Objectives
Implement VMX (AltiVec) and VSX (Vector-Scalar Extension) for Linux Compatible Subset (LCS) compliance.
Critical Importance
This is the largest and most resource-intensive workstream. Without VMX/VSX:
- ❌ Cannot run standard Linux distributions (Fedora, Ubuntu, RHEL)
- ❌ glibc requires VMX/VSX for optimized string and memory operations
- ❌ Many applications fail (compiled with
-mcpu=power8or later) - ❌ Only achieves SFFS (Server Floating Point Subset), not LCS
With VMX/VSX:
- ✅ LCS Compliance - industry standard for Linux on POWER
- ✅ Run unmodified distros - Fedora, Ubuntu, RHEL work out-of-box
- ✅ Application compatibility - vast majority of ppc64le software works
- ✅ Performance - SIMD operations for HPC, multimedia, crypto
Background
VMX (Vector Multimedia Extension)
Also known as AltiVec, VMX provides:
- 32 x 128-bit vector registers (VR0-VR31)
- SIMD operations on integer and floating-point data
- Data types: byte, halfword, word, single-precision float
- ~200 instructions for parallel processing
- Introduced in POWER6, based on original AltiVec
VSX (Vector-Scalar Extension)
VSX extends VMX with:
- 64 x 128-bit registers (VSR0-VSR63)
- VSR0-VSR31 overlay FPR0-FPR31 (scalar FP registers)
- VSR32-VSR63 overlay VR0-VR31 (VMX vector registers)
- Double-precision floating-point SIMD
- Scalar and vector operations in unified register file
- ~200 additional instructions
- Introduced in POWER7
Register File Organization
VSX View (64 x 128-bit registers):
┌─────────────────────────────────────────┐
│ VSR0-31 (overlay FPR0-31 in low 64b) │ ← Scalar FP + VSX
│ VSR32-63 (overlay VR0-31) │ ← VMX vectors
└─────────────────────────────────────────┘
Legacy View:
FPR0-31: 64-bit scalar floating-point (existing A2 registers)
VR0-31: 128-bit VMX vector registers (NEW)
Tasks
Phase 0: Planning and Architecture (Weeks 1-2)
Phase 1: Register File and Basic Infrastructure (Weeks 3-6)
Phase 2: VMX Integer Instructions (Weeks 7-12)
VMX Integer Arithmetic
VMX Integer Logic and Shift
VMX Integer Compare and Permute
Phase 3: VMX Floating-Point Instructions (Weeks 13-16)
Issues #262-283: VMX Single-Precision FP (22 instructions)
- Priority: High
- Duration: 15 days total
- Categories: Arithmetic, Compare, Convert, Rounding, Estimate
Key Instructions:
- Vector FP add/subtract:
vaddfp,vsubfp - Vector FP multiply-add:
vmaddfp - Vector FP compare:
vcmpeqfp,vcmpgtfp,vcmpgefp,vcmpbfp - Vector FP convert:
vcfsx,vcfux,vctsx,vctux - Vector FP rounding:
vrfin,vrfiz,vrfip,vrfim - Vector FP estimate:
vrefp,vrsqrtefp,vlogefp,vexptefp - Vector FP min/max:
vmaxfp,vminfp
Implementation Notes:
- Reuse existing FPU if possible
- May need 4-way SIMD FPU (expensive)
- Consider multi-cycle execution
- Ensure IEEE 754 compliance
- Labels:
phase:3-vmx-fp,category:fp-ops,precision:single
Phase 4: VMX Load/Store Instructions (Weeks 17-18)
Issues #284-315: VMX Memory Operations (32 instructions)
- Priority: High
- Duration: 10 days total
- Categories: Load, Store, Pack, Unpack
Key Instructions:
- Vector load:
lvx,lvxl(aligned) - Vector store:
stvx,stvxl(aligned) - Vector load element:
lvebx,lvehx,lvewx - Vector store element:
stvebx,stvehx,stvewx - Vector load splat:
lvsplatb,lvsplath,lvsplatw - Vector alignment:
lvsl,lvsr(load vector for shift left/right) - Pack/unpack:
vpkuhum,vpkuwum,vpkuhus,vpkuwus,vpkshss,vpkswss,vpkshus,vpkswus,vpkpx,vupkhsb,vupkhsh,vupklsb,vupklsh,vupkhpx,vupklpx
Implementation Notes:
- Most VMX loads/stores require 16-byte alignment
- Unaligned access requires multiple operations + permute
- Trap on misalignment or emulate in software
- Pack/unpack operations convert between widths with saturation
- Labels:
phase:4-vmx-load-store,category:memory,category:pack-unpack
Phase 5: VSX Scalar Instructions (Weeks 19-22)
Issues #316-367: VSX Scalar Double-Precision (52 instructions)
- Priority: High
- Duration: 20 days total
- Categories: Arithmetic, Compare, Convert, Estimate, Special
Key Instructions:
- Scalar FP add/subtract:
xsadddp,xssubdp - Scalar FP multiply/divide:
xsmuldp,xsdivdp - Scalar FP multiply-add:
xsmaddadp,xsmaddmdp,xsmsubadp,xsmsubmdp,xsnmaddadp,xsnmaddmdp,xsnmsubadp,xsnmsubmdp - Scalar FP compare:
xscmpudp,xscmpodp,xscmpeqdp,xscmpgtdp,xscmpgedp - Scalar FP convert:
xscvdpsp,xscvspdp,xscvdpsxds,xscvdpsxws,xscvdpuxds,xscvdpuxws,xscvsxddp,xscvuxddp,xscvsxdsp,xscvuxdsp - Scalar FP sqrt:
xssqrtdp - Scalar FP reciprocal estimate:
xsredp,xsrsqrtedp - Scalar FP abs/negate/copy sign:
xsabsdp,xsnabsdp,xsnegdp,xscpsgndp - Scalar FP max/min:
xsmaxdp,xsmindp - Scalar FP round/truncate:
xsrdpic,xsrdpim,xsrdpip,xsrdpiz,xsrdpi
Implementation Notes:
- VSX scalar ops use VSR0-63 (overlap with FPR0-31)
- Higher precision than VMX single-precision
- IEEE 754 compliance required
- Labels:
phase:5-vsx-scalar,category:fp-ops,precision:double
Phase 6: VSX Vector Instructions (Weeks 23-26)
Issues #368-456: VSX Vector Instructions (89 instructions)
- Priority: High
- Duration: 48 days total
- Categories: FP Arithmetic, FP Compare, FP Convert, Logical, Permute, Load/Store
VSX Vector FP Arithmetic (Double/Single Precision):
- Vector FP add/subtract:
xvadddp,xvaddsp,xvsubdp,xvsubsp - Vector FP multiply/divide:
xvmuldp,xvmulsp,xvdivdp,xvdivsp - Vector FP multiply-add:
xvmaddadp,xvmaddmdp,xvmsubadp,xvmsubmdp,xvnmaddadp,xvnmaddmdp,xvnmsubadp,xvnmsubmdp(both DP and SP variants) - Vector FP sqrt:
xvsqrtdp,xvsqrtsp - Vector FP reciprocal estimate:
xvredp,xvresp,xvrsqrtedp,xvrsqrtesp - Vector FP max/min:
xvmaxdp,xvmaxsp,xvmindp,xvminsp
VSX Vector FP Compare & Convert:
- Vector FP compare:
xvcmpeqdp,xvcmpeqsp,xvcmpgtdp,xvcmpgtsp,xvcmpgedp,xvcmpgesp - Vector FP convert:
xvcvdpsp,xvcvspdp,xvcvdpsxds,xvcvdpsxws,xvcvdpuxds,xvcvdpuxws,xvcvspsxds,xvcvspsxws,xvcvspuxds,xvcvspuxws,xvcvsxddp,xvcvsxdsp,xvcvsxwdp,xvcvsxwsp,xvcvuxddp,xvcvuxdsp,xvcvuxwdp,xvcvuxwsp - Vector FP round/truncate:
xvrdpic,xvrdpim,xvrdpip,xvrdpiz,xvrdpi,xvrspic,xvrspim,xvrspip,xvrspiz,xvrspi - Vector FP abs/negate/copy sign:
xvabsdp,xvabssp,xvnabsdp,xvnabssp,xvnegdp,xvnegsp,xvcpsgndp,xvcpsgnsp
VSX Permute & Logical Operations:
- Permute:
xxpermdi,xxsldwi - Select:
xxsel - Merge:
xxmrghw,xxmrglw - Splat:
xxspltw - Logical:
xxland,xxlandc,xxlor,xxlorc,xxlxor,xxlnor,xxleqv,xxlnand
VSX Load/Store Operations:
- Load/store doubleword:
lxsdx,stxsdx - Load/store word:
lxsiwax,lxsiwzx,stxsiwx - Load/store vector:
lxvd2x,lxvw4x,stxvd2x,stxvw4x,lxvdsx
Implementation Notes:
- VSX vector operations process 2x double-precision or 4x single-precision values in parallel
- Uses VSR0-63 (full 128-bit registers)
- Requires careful SIMD execution unit design
- Labels:
phase:6-vsx-vector,category:fp-ops,category:logical,category:permute,category:memory
Phase 7: Exception and Context Management (Weeks 27-28)
Issues #457-460: Exception and Context Management (4 issues)
- Priority: Critical
- Duration: 32 days total
- Categories: Exception handling, Context switching, Register coherency
Phase 8: Testing and Verification (Weeks 29-32)
Issues #461-464: Testing and Verification (4 issues)
- Priority: Critical
- Duration: 60 days total
- Categories: Unit testing, Integration testing, Performance testing
Instruction Count Summary
| Category | VMX Instructions | VSX Instructions | Total |
|---|---|---|---|
| Integer Arithmetic | 25 | 0 | 25 |
| Integer Logic/Shift | 25 | 0 | 25 |
| Integer Compare/Select | 25 | 0 | 25 |
| Integer Load/Store | 25 | 0 | 25 |
| FP Arithmetic (SP) | 25 | 0 | 25 |
| FP Convert/Round (SP) | 15 | 0 | 15 |
| Scalar FP (DP) | 0 | 50 | 50 |
| Vector FP (DP/SP) | 0 | 50 | 50 |
| Permute/Logical | 10 | 20 | 30 |
| Load/Store (VSX) | 0 | 30 | 30 |
| Miscellaneous | 20 | 20 | 40 |
| Total | ~170 | ~170 | ~340 |
Note: Actual count varies by ISA version, some instructions optional.
Integration with A2 Core
Pipeline Integration
┌─────────┐ ┌────────┐ ┌─────────┐ ┌────────┐ ┌──────────┐
│ I-Fetch │ → │ Decode │ → │ Issue │ → │ VMX/ │ → │ Write- │
│ │ │ │ │ │ │ VSX │ │ back │
│ │ │ │ │ │ │ EXU │ │ │
└─────────┘ └────────┘ └─────────┘ └────────┘ └──────────┘
↓
VR0-31, VSR0-63
Register File
Key Integration Points
- Instruction Decode: Recognize VMX/VSX opcodes
- Issue Logic: Schedule to VMX/VSX execution unit
- Register Renaming: Extend to vector registers (if applicable)
- Execution: New 128-bit datapath
- Writeback: Write 128-bit results to register file
- Load/Store Unit: Handle 16-byte vector operations
- Exception Logic: VMX/VSX unavailable exceptions
Potential Issues
- Frequency Impact: 128-bit datapath may slow critical path
- Area: Large register file (64 x 128-bit = 8KB)
- Power: Vector operations consume more power
- Verification: 400+ new instructions to verify
Dependencies
- WS1: Some VMX/VSX instructions depend on base ISA updates
- Parallel with WS2, WS3, WS4
- Must complete before WS9 (integration)
Success Criteria
- All mandatory LCS VMX/VSX instructions implemented
- Register file (64 x 128-bit) functional
- Exception handling (unavailable exception) works
- Context switching validated
- Pass ISA compliance VMX/VSX tests
- glibc test suite passes (critical for LCS)
- Linux boots with VMX/VSX enabled
- Standard Linux distributions (Fedora, Ubuntu) boot
Critical Risks
Risk 1: Schedule Overrun
Probability: High Impact: Critical Mitigation:
- Evaluate open source options early
- Consider phased approach (VMX first)
- Allocate contingency time
Risk 2: Frequency Degradation
Probability: Medium Impact: High Mitigation:
- Multi-cycle execution for complex operations
- Pipeline vector operations
- Careful physical design
Risk 3: Verification Complexity
Probability: High Impact: High Mitigation:
- Start verification early
- Reuse ISA compliance tests
- Automated test generation
Deliverables
- ✅ VMX/VSX architecture specification
- ✅ RTL implementation (all instructions)
- ✅ 64 x 128-bit register file
- ✅ Exception handling
- ✅ Test suite (unit and integration tests)
- ✅ Verification report (compliance test results)
- ✅ Integration guide
- ✅ Performance benchmarks
Timeline Visualization
Week Phase Key Deliverable
---- ----- ---------------
1-2 Planning ✓ Architecture spec
3-6 Register file ✓ VR0-31, VSR0-63
7-12 VMX integer ✓ ~75 instructions
13-16 VMX floating-point ✓ ~50 instructions
17-18 VMX load/store ✓ ~25 instructions
19-22 VSX scalar ✓ ~50 instructions
23-26 VSX vector ✓ ~100 instructions
27-28 Exception handling ✓ Context switching
29-32 Testing & integration ✓ LCS compliance
Risk Windows:
Week 3-6: High (register file area and timing)
Week 13-16: High (floating-point implementation complexity)
Week 29-32: Medium (verification and debugging)
References
- Power ISA v3.1C Book I, Chapters 6 & 7
- AltiVec Programming Interface Manual
- VSX Programming Guide
- glibc source:
sysdeps/powerpc/powerpc64/ - Linux kernel:
arch/powerpc/kernel/vector.S - OpenPOWER Foundation: VMX/VSX compliance tests
Status: Planning Next Step: Requirements analysis and open source evaluation (Issue #170)
Issues
Status: 295 open, 0 closed (0/295 complete)
| # | Title | Category | Tags | Status | Priority | Assignee |
|---|---|---|---|---|---|---|
| #147 | VMX/VSX requirements analysis | Analysis | - | ⬜ Open | 🔴 Critical | - |
| #148 | Design VMX/VSX execution unit | Architecture | - | ⬜ Open | 🔴 Critical | - |
| #149 | Implement 128-bit vector register file (VR0-31) | Register-file | - | ⬜ Open | 🔴 Critical | - |
| #150 | Implement VSX register extensions (VSR0-63) | Register-file | - | ⬜ Open | 🔴 Critical | - |
| #151 | Implement VSX register extensions (VSR0-63) | Register-file | - | ⬜ Open | 🔴 Critical | - |
| #152 | Implement VSCR register | Control-register | - | ⬜ Open | 🟠 High | - |
| #153 | Update MSR for VMX/VSX | Control-register | - | ⬜ Open | 🟠 High | - |
| #154 | Implement vaddubm instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #155 | Implement vadduhm instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #156 | Implement vadduwm instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #157 | Implement vaddudm instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #158 | Implement vsububm instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #159 | Implement vsubuhm instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #160 | Implement vsubuwm instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #161 | Implement vsubudm instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #162 | Implement vaddsbs instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #163 | Implement vaddshs instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #164 | Implement vaddsws instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #165 | Implement vaddubs instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #166 | Implement vadduhs instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #167 | Implement vadduws instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #168 | Implement vsubsbs instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #169 | Implement vsubshs instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #170 | Implement vsubsws instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #171 | Implement vsububs instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #172 | Implement vsubuhs instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #173 | Implement vsubuws instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #174 | Implement vavgub instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #175 | Implement vavguh instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #176 | Implement vavguw instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #177 | Implement vavgsb instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #178 | Implement vavgsh instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #179 | Implement vavgsw instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #180 | Implement vmaxsb instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #181 | Implement vmaxsh instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #182 | Implement vmaxsw instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #183 | Implement vmaxsd instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #184 | Implement vmaxub instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #185 | Implement vmaxuh instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #186 | Implement vmaxuw instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #187 | Implement vmaxud instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #188 | Implement vminsb instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #189 | Implement vminsh instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #190 | Implement vminsw instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #191 | Implement vminsd instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #192 | Implement vminub instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #193 | Implement vminuh instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #194 | Implement vminuw instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #195 | Implement vminud instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #196 | Implement vand instruction | Logic | - | ⬜ Open | 🟠 High | - |
| #197 | Implement vandc instruction | Logic | - | ⬜ Open | 🟠 High | - |
| #198 | Implement vor instruction | Logic | - | ⬜ Open | 🟠 High | - |
| #199 | Implement vorc instruction | Logic | - | ⬜ Open | 🟠 High | - |
| #200 | Implement vxor instruction | Logic | - | ⬜ Open | 🟠 High | - |
| #201 | Implement vnor instruction | Logic | - | ⬜ Open | 🟠 High | - |
| #202 | Implement vnot instruction | Logic | - | ⬜ Open | 🟠 High | - |
| #203 | Implement vslb instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #204 | Implement vslh instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #205 | Implement vslw instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #206 | Implement vsld instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #207 | Implement vsrb instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #208 | Implement vsrh instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #209 | Implement vsrw instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #210 | Implement vsrd instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #211 | Implement vsrab instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #212 | Implement vsrah instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #213 | Implement vsrad instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #214 | Implement vrlb instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #215 | Implement vrlh instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #216 | Implement vrlw instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #217 | Implement vrld instruction | Shift | - | ⬜ Open | 🟠 High | - |
| #218 | Implement vcmpequb instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #219 | Implement vcmpequh instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #220 | Implement vcmpequw instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #221 | Implement vcmpequd instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #222 | Implement vcmpgtsb instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #223 | Implement vcmpgtsh instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #224 | Implement vcmpgtsw instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #225 | Implement vcmpgtsd instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #226 | Implement vcmpgtub instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #227 | Implement vcmpgtuh instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #228 | Implement vcmpgtuw instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #229 | Implement vcmpgtud instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #230 | Implement vsel instruction | Permute | - | ⬜ Open | 🟠 High | - |
| #231 | Implement vperm instruction | Permute | - | ⬜ Open | 🟠 High | - |
| #232 | Implement vpermxor instruction | Permute | - | ⬜ Open | 🟠 High | - |
| #233 | Implement vmrghb instruction | Merge | - | ⬜ Open | 🟠 High | - |
| #234 | Implement vmrghh instruction | Merge | - | ⬜ Open | 🟠 High | - |
| #235 | Implement vmrghw instruction | Merge | - | ⬜ Open | 🟠 High | - |
| #236 | Implement vmrglb instruction | Merge | - | ⬜ Open | 🟠 High | - |
| #237 | Implement vmrglh instruction | Merge | - | ⬜ Open | 🟠 High | - |
| #238 | Implement vmrglw instruction | Merge | - | ⬜ Open | 🟠 High | - |
| #239 | Implement vaddfp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #240 | Implement vsubfp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #241 | Implement vmaddfp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #242 | Implement vmulfp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #243 | Implement vmaxfp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #244 | Implement vminfp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #245 | Implement vcmpeqfp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #246 | Implement vcmpgtfp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #247 | Implement vcmpgefp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #248 | Implement vcmpbfp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #249 | Implement vcfsx instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #250 | Implement vcfux instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #251 | Implement vctsx instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #252 | Implement vctux instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #253 | Implement vrfin instruction | Rounding | - | ⬜ Open | 🟠 High | - |
| #254 | Implement vrfiz instruction | Rounding | - | ⬜ Open | 🟠 High | - |
| #255 | Implement vrfip instruction | Rounding | - | ⬜ Open | 🟠 High | - |
| #256 | Implement vrfim instruction | Rounding | - | ⬜ Open | 🟠 High | - |
| #257 | Implement vrefp instruction | Estimate | - | ⬜ Open | 🟠 High | - |
| #258 | Implement vrsqrtefp instruction | Estimate | - | ⬜ Open | 🟠 High | - |
| #259 | Implement vlogefp instruction | Estimate | - | ⬜ Open | 🟠 High | - |
| #260 | Implement vexptefp instruction | Estimate | - | ⬜ Open | 🟠 High | - |
| #261 | Implement lvx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #262 | Implement lvxl instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #263 | Implement stvx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #264 | Implement stvxl instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #265 | Implement lvebx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #266 | Implement lvehx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #267 | Implement lvewx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #268 | Implement stvebx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #269 | Implement stvehx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #270 | Implement stvewx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #271 | Implement lvsl instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #272 | Implement lvsr instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #273 | Implement vpkuhum instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #274 | Implement vpkuwum instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #275 | Implement vpkudum instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #276 | Implement vpkuhus instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #277 | Implement vpkuwus instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #278 | Implement vpkudus instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #279 | Implement vpkshss instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #280 | Implement vpkswss instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #281 | Implement vpksdss instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #282 | Implement vpkshus instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #283 | Implement vpkswus instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #284 | Implement vpksdus instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #285 | Implement vupkhsb instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #286 | Implement vupkhsh instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #287 | Implement vupkhsw instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #288 | Implement vupklsb instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #289 | Implement vupklsh instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #290 | Implement vupklsw instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #291 | Implement vupkhpx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #292 | Implement vupklpx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #293 | Implement xsadddp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #294 | Implement xssubdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #295 | Implement xsmuldp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #296 | Implement xsdivdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #297 | Implement xssqrtdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #298 | Implement xsredp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #299 | Implement xsrsqrtedp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #300 | Implement xsmaddadp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #301 | Implement xsmaddmdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #302 | Implement xsmsubadp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #303 | Implement xsmsubmdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #304 | Implement xsnmaddadp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #305 | Implement xsnmaddmdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #306 | Implement xsnmsubadp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #307 | Implement xsnmsubmdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #308 | Implement xsmaxdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #309 | Implement xsmindp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #310 | Implement xsmaxcdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #311 | Implement xsmincdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #312 | Implement xscmpodp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #313 | Implement xscmpudp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #314 | Implement xscmpeqdp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #315 | Implement xscmpgtdp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #316 | Implement xscmpgedp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #317 | Implement xsaddsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #318 | Implement xssubsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #319 | Implement xsmulsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #320 | Implement xsdivsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #321 | Implement xssqrtsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #322 | Implement xsresp instruction | - | - | ⬜ Open | 🟠 High | - |
| #323 | Implement xsrsqrtesp instruction | - | - | ⬜ Open | 🟠 High | - |
| #324 | Implement xscvdpsp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #325 | Implement xscvspdp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #326 | Implement xscvdpsxds instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #327 | Implement xscvdpsxws instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #328 | Implement xscvdpuxds instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #329 | Implement xscvdpuxws instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #330 | Implement xscvsxddp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #331 | Implement xscvuxddp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #332 | Implement xscvsxdsp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #333 | Implement xscvuxdsp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #334 | Implement xsrdpi instruction | - | - | ⬜ Open | 🟠 High | - |
| #335 | Implement xsrdpic instruction | - | - | ⬜ Open | 🟠 High | - |
| #336 | Implement xsrdpim instruction | - | - | ⬜ Open | 🟠 High | - |
| #337 | Implement xsrdpip instruction | - | - | ⬜ Open | 🟠 High | - |
| #338 | Implement xsrdpiz instruction | - | - | ⬜ Open | 🟠 High | - |
| #339 | Implement xsabsdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #340 | Implement xsnabsdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #341 | Implement xsnegdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #342 | Implement xscpsgndp instruction | - | - | ⬜ Open | 🟠 High | - |
| #343 | Implement xstdivdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #344 | Implement xstsqrtdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #345 | Implement xvadddp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #346 | Implement xvsubdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #347 | Implement xvmuldp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #348 | Implement xvdivdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #349 | Implement xvsqrtdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #350 | Implement xvredp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #351 | Implement xvrsqrtedp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #352 | Implement xvmaddadp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #353 | Implement xvmaddmdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #354 | Implement xvmsubadp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #355 | Implement xvmsubmdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #356 | Implement xvnmaddadp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #357 | Implement xvnmaddmdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #358 | Implement xvnmsubadp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #359 | Implement xvnmsubmdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #360 | Implement xvmaxdp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #361 | Implement xvmindp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #362 | Implement xvcmpeqdp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #363 | Implement xvcmpgtdp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #364 | Implement xvcmpgedp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #365 | Implement xvaddsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #366 | Implement xvsubsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #367 | Implement xvmulsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #368 | Implement xvdivsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #369 | Implement xvsqrtsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #370 | Implement xvresp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #371 | Implement xvrsqrtesp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #372 | Implement xvmaddasp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #373 | Implement xvmaddmsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #374 | Implement xvmsubasp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #375 | Implement xvmsubmsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #376 | Implement xvnmaddasp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #377 | Implement xvnmaddmsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #378 | Implement xvnmsubasp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #379 | Implement xvnmsubmsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #380 | Implement xvmaxsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #381 | Implement xvminsp instruction | Arithmetic | - | ⬜ Open | 🟠 High | - |
| #382 | Implement xvcmpeqsp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #383 | Implement xvcmpgtsp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #384 | Implement xvcmpgesp instruction | Compare | - | ⬜ Open | 🟠 High | - |
| #385 | Implement xvcvdpsp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #386 | Implement xvcvspdp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #387 | Implement xvcvdpsxds instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #388 | Implement xvcvdpsxws instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #389 | Implement xvcvdpuxds instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #390 | Implement xvcvdpuxws instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #391 | Implement xvcvsxddp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #392 | Implement xvcvuxddp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #393 | Implement xvcvsxwdp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #394 | Implement xvcvuxwdp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #395 | Implement xvcvspsxds instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #396 | Implement xvcvspsxws instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #397 | Implement xvcvspuxds instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #398 | Implement xvcvspuxws instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #399 | Implement xvcvsxdsp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #400 | Implement xvcvuxdsp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #401 | Implement xvcvsxwsp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #402 | Implement xvcvuxwsp instruction | Convert | - | ⬜ Open | 🟠 High | - |
| #403 | Implement xvrdpi instruction | - | - | ⬜ Open | 🟠 High | - |
| #404 | Implement xvrdpic instruction | - | - | ⬜ Open | 🟠 High | - |
| #405 | Implement xvrdpim instruction | - | - | ⬜ Open | 🟠 High | - |
| #406 | Implement xvrdpip instruction | - | - | ⬜ Open | 🟠 High | - |
| #407 | Implement xvrdpiz instruction | - | - | ⬜ Open | 🟠 High | - |
| #408 | Implement xvrspi instruction | - | - | ⬜ Open | 🟠 High | - |
| #409 | Implement xvrspic instruction | - | - | ⬜ Open | 🟠 High | - |
| #410 | Implement xvrspim instruction | - | - | ⬜ Open | 🟠 High | - |
| #411 | Implement xvrspip instruction | - | - | ⬜ Open | 🟠 High | - |
| #412 | Implement xvrspiz instruction | - | - | ⬜ Open | 🟠 High | - |
| #413 | Implement xvabsdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #414 | Implement xvnabsdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #415 | Implement xvnegdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #416 | Implement xvcpsgndp instruction | - | - | ⬜ Open | 🟠 High | - |
| #417 | Implement xvabssp instruction | - | - | ⬜ Open | 🟠 High | - |
| #418 | Implement xvnabssp instruction | - | - | ⬜ Open | 🟠 High | - |
| #419 | Implement xvnegsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #420 | Implement xvcpsgnsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #421 | Implement xvtdivdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #422 | Implement xvtdivsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #423 | Implement xvtsqrtdp instruction | - | - | ⬜ Open | 🟠 High | - |
| #424 | Implement xvtsqrtsp instruction | - | - | ⬜ Open | 🟠 High | - |
| #425 | Implement lxvd2x instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #426 | Implement lxvw4x instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #427 | Implement stxvd2x instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #428 | Implement stxvw4x instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #429 | Implement lxsdx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #430 | Implement stxsdx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #431 | Implement lxvdsx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #432 | Implement lxsspx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #433 | Implement stxsspx instruction | Loadstore | - | ⬜ Open | 🟠 High | - |
| #434 | VMX/VSX exception handling | Exception-handling | - | ⬜ Open | 🟠 High | - |
| #435 | VMX/VSX context switching | Context-switch | - | ⬜ Open | 🟠 High | - |
| #436 | VMX/VSX unavailable interrupts | Interrupt | - | ⬜ Open | 🟠 High | - |
| #437 | FP/VMX/VSX register coherency | Register-coherency | - | ⬜ Open | 🟠 High | - |
| #438 | Unit tests for VMX instructions | Testing | - | ⬜ Open | 🔴 Critical | - |
| #439 | Unit tests for VSX instructions | Testing | - | ⬜ Open | 🔴 Critical | - |
| #440 | Comprehensive VMX/VSX test suite | Integration-testing | - | ⬜ Open | 🔴 Critical | - |
| #441 | VMX/VSX performance benchmarking | Performance | - | ⬜ Open | 🟠 High | - |
Last updated: 2025-12-05 16:48:17