Work Stream - User Mode Instructions
Owner: TBD Duration: 12-16 weeks Priority: High
💬 Discuss WS1: Join #powercommons:matrix.org to discuss instruction implementation, bit manipulation strategies, and decoder modifications.
Objectives
Implement new user-mode instructions added since v2.06 and remove/relocate deprecated instructions.
Deliverables
- RTL for 40+ new instructions
- Decoder updates for new instruction encodings
- Test cases for all new instructions
- Removal/sandboxing of deprecated instructions
Roadmap
Phase 1: Analysis & Planning (Weeks 1-2)
- Review ISA specifications for all new instructions
- Identify decoder modifications needed
- Plan execution unit assignments
Phase 2: Basic Arithmetic/Logic (Weeks 3-5)
- Implement bit manipulation instructions
- Implement count/byte operations
Phase 3: Load/Store Extensions (Weeks 6-8)
- Implement quadword atomics
- Implement new synchronization
Phase 4: Floating Point (Weeks 9-11)
- Implement FP control instructions
- Implement FP merge operations
Phase 5: Cleanup & Verification (Weeks 12-16)
- Remove deprecated instructions
- Integration testing
- Performance validation
Dependencies
- Decoder infrastructure
- Execution unit availability
- Test framework
Risks
- Timing closure for complex bit manipulation instructions
- Integration conflicts with existing instructions
- Test coverage gaps
Success Criteria
- All 40+ new instructions functional
- All deprecated instructions removed/sandboxed
- 100% instruction decode coverage
- Pass ISA compliance tests for Book I
- No timing degradation
Issues
Status: 45 open, 0 closed (0/45 complete)
| # | Title | Category | Tags | Status | Priority | Assignee |
|---|---|---|---|---|---|---|
| #442 | Implement brd instruction | Instruction | bit-manipulation, instruction | ⬜ Open | 🟡 Medium | - |
| #443 | Implement brw instruction | Instruction | bit-manipulation, instruction | ⬜ Open | 🟡 Medium | - |
| #444 | Implement brh instruction | Instruction | bit-manipulation, instruction | ⬜ Open | 🟡 Medium | - |
| #445 | Implement cfuged instruction | Instruction | bit-manipulation, instruction | ⬜ Open | 🟡 Medium | - |
| #446 | Implement pdepd instruction | Instruction | bit-manipulation, instruction | ⬜ Open | 🟡 Medium | - |
| #447 | Implement pextd instruction | Instruction | bit-manipulation, instruction | ⬜ Open | 🟡 Medium | - |
| #448 | Implement cntlzdm instruction | Instruction | count-ops, instruction | ⬜ Open | 🟡 Medium | - |
| #449 | Implement cnttzdm instruction | Instruction | count-ops, instruction | ⬜ Open | 🟡 Medium | - |
| #450 | Implement cnttzd instruction | Instruction | count-ops, instruction | ⬜ Open | 🟡 Medium | - |
| #451 | Implement cnttzw instruction | Instruction | count-ops, instruction | ⬜ Open | 🟡 Medium | - |
| #452 | Implement setbr, setbcr, setnbc, setnbcr instructions | Instruction | compare, instruction | ⬜ Open | 🟡 Medium | - |
| #453 | Implement setb instruction | Instruction | compare, instruction | ⬜ Open | 🟡 Medium | - |
| #454 | Implement cmpeqb instruction | Instruction | compare, instruction | ⬜ Open | 🟡 Medium | - |
| #455 | Implement cmprb instruction | Instruction | compare, instruction | ⬜ Open | 🟡 Medium | - |
| #456 | Implement addex instruction | Instruction | arithmetic, instruction | ⬜ Open | 🟡 Medium | - |
| #457 | Implement maddld instruction | Instruction | arithmetic, instruction | ⬜ Open | 🟡 Medium | - |
| #458 | Implement maddhd instruction | Instruction | arithmetic, instruction | ⬜ Open | 🟡 Medium | - |
| #459 | Implement maddhdu instruction | Instruction | arithmetic, instruction | ⬜ Open | 🟡 Medium | - |
| #460 | Implement modulo instructions (modsd, modsw, modud, moduw) | Instruction | arithmetic, instruction | ⬜ Open | 🟡 Medium | - |
| #461 | Implement extswsli instruction | Instruction | arithmetic, instruction | ⬜ Open | 🟢 Low | - |
| #462 | Implement lq instruction | Instruction | atomic, instruction, load-store | ⬜ Open | 🟠 High | - |
| #463 | Implement stq instruction | Instruction | atomic, instruction, load-store | ⬜ Open | 🟠 High | - |
| #464 | Implement lqarx instruction | Instruction | atomic, instruction, load-store | ⬜ Open | 🟠 High | - |
| #465 | Implement stqcx instruction | Instruction | atomic, instruction, load-store | ⬜ Open | 🟠 High | - |
| #466 | Implement scv instruction | Instruction | instruction, system-call | ⬜ Open | 🟠 High | - |
| #467 | Implement bctar instruction | Instruction | branch, instruction | ⬜ Open | 🟡 Medium | - |
| #468 | Implement darn instruction | Instruction | instruction, random | ⬜ Open | 🟡 Medium | - |
| #469 | Implement addpcis instruction | Instruction | address, instruction | ⬜ Open | 🟢 Low | - |
| #470 | Implement mcrxrx instruction | Instruction | instruction, register | ⬜ Open | 🟢 Low | - |
| #471 | Implement icbt instruction | Instruction | cache-hint, instruction | ⬜ Open | 🟢 Low | - |
| #472 | Implement FP control instructions (mffscdrn, mffscdrni, mffsce, etc.) | Instruction | floating-point, instruction | ⬜ Open | 🟡 Medium | - |
| #473 | Implement fmrgew and fmrgow instructions | Instruction | floating-point, instruction | ⬜ Open | 🟡 Medium | - |
| #474 | Implement hashst instruction | Instruction | hash, instruction | ⬜ Open | 🟢 Low | - |
| #475 | Implement hashchk instruction | Instruction | hash, instruction | ⬜ Open | 🟢 Low | - |
| #476 | Remove/sandbox dcba instruction | Cleanup | cleanup, deprecated | ⬜ Open | 🟡 Medium | - |
| #477 | Remove/sandbox cache touch instructions (dcblc, dcbtls, dcbtsls, icblc, icbtls) | Cleanup | cleanup, deprecated | ⬜ Open | 🟡 Medium | - |
| #478 | Remove icswx instruction | Cleanup | cleanup, deprecated | ⬜ Open | 🟡 Medium | - |
| #479 | Remove ldawx, wchkall, wclr instructions | Cleanup | cleanup, deprecated | ⬜ Open | 🟡 Medium | - |
| #480 | Replace mbar with eieio | Cleanup | cleanup, deprecated, synchronization | ⬜ Open | 🟠 High | - |
| #481 | Remove mfdcrux and mtdcrux instructions | Cleanup | cleanup, deprecated | ⬜ Open | 🟡 Medium | - |
| #482 | Remove makeitso, replace with miso | Cleanup | cleanup, deprecated | ⬜ Open | 🟡 Medium | - |
| #483 | Remove/relocate SPRG4-7 registers | Cleanup | cleanup, deprecated, registers | ⬜ Open | 🟡 Medium | - |
| #484 | Update instruction decoder for all new instructions | Decoder | decoder, integration | ⬜ Open | 🟠 High | - |
| #485 | Create comprehensive instruction test suite | Verification | testing, verification | ⬜ Open | 🟠 High | - |
| #486 | Performance validation of new instructions | Performance | performance, verification | ⬜ Open | 🟡 Medium | - |
Last updated: 2025-12-05 16:48:17