{ "schema": "psxrecomp-v4 phase1b instruction_coverage v1", "inventory_source": "generated/instruction_inventory.json", "translator_source": "recompiler/src/strict_translator.cpp", "totals": { "inventory_buckets": 56, "implemented": 54, "missing": 0, "deferred": 2, "implemented_but_unused_in_inventory": 2 }, "rows": [ { "bucket_key": "17|none|0", "primary_opcode_hex": "0x11", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "COP1", "category": "PRIVILEGED_OR_DATA", "count": 17, "first_example": "0xbfc0233c", "status": "deferred", "reason": "FPU; PS1 has no COP1 hardware. Decide after Phase 1c reachability proves whether the BIOS atof routines are live." }, { "bucket_key": "49|none|0", "primary_opcode_hex": "0x31", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LWC1", "category": "PRIVILEGED_OR_DATA", "count": 2, "first_example": "0xbfc02544", "status": "deferred", "reason": "FPU load; same rationale as COP1." }, { "bucket_key": "16|rs_cop0|0", "primary_opcode_hex": "0x10", "sub_kind": "rs_cop0", "sub_value_hex": "0x00", "mnemonic": "MFC0", "category": "COP0", "count": 2, "first_example": "0xbfc01920", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x10 rs 0x00 (gpr[rt] = cop0[rd]; respects $zero via emit_gpr_write; no SR-write hooks)" }, { "bucket_key": "16|rs_cop0|4", "primary_opcode_hex": "0x10", "sub_kind": "rs_cop0", "sub_value_hex": "0x04", "mnemonic": "MTC0", "category": "COP0", "count": 13, "first_example": "0xbfc0023c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x10 rs 0x04 (cop0[rd] = gpr[rt]; cop0[0] is Index, not zero; no IRQ delivery)" }, { "bucket_key": "0|funct|32", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x20", "mnemonic": "ADD", "category": "CPU", "count": 1, "first_example": "0xbfc03d40", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x20 (overflow-checked, calls psx_arith_overflow on trap)" }, { "bucket_key": "8|none|0", "primary_opcode_hex": "0x08", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "ADDI", "category": "CPU", "count": 13, "first_example": "0xbfc00274", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x08 (overflow-checked, calls psx_arith_overflow on trap)" }, { "bucket_key": "9|none|0", "primary_opcode_hex": "0x09", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "ADDIU", "category": "CPU", "count": 7237, "first_example": "0xbfc00014", "status": "implemented", "source": "recompiler/src/strict_translator.cpp:141-151" }, { "bucket_key": "0|funct|33", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x21", "mnemonic": "ADDU", "category": "CPU", "count": 3806, "first_example": "0xbfc003dc", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x21" }, { "bucket_key": "0|funct|36", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x24", "mnemonic": "AND", "category": "CPU", "count": 165, "first_example": "0xbfc0128c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x24" }, { "bucket_key": "12|none|0", "primary_opcode_hex": "0x0C", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "ANDI", "category": "CPU", "count": 634, "first_example": "0xbfc0081c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x0C (zero-extended imm)" }, { "bucket_key": "4|none|0", "primary_opcode_hex": "0x04", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "BEQ", "category": "CPU", "count": 2768, "first_example": "0xbfc00970", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x04 (terminator; PC-relative target = pc+4+simm*4)" }, { "bucket_key": "1|rt|1", "primary_opcode_hex": "0x01", "sub_kind": "rt", "sub_value_hex": "0x01", "mnemonic": "BGEZ", "category": "CPU", "count": 181, "first_example": "0xbfc00ed8", "status": "implemented", "source": "recompiler/src/strict_translator.cpp REGIMM rt 0x01 (terminator; signed compare against 0)" }, { "bucket_key": "7|none|0", "primary_opcode_hex": "0x07", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "BGTZ", "category": "CPU", "count": 49, "first_example": "0xbfc01ab8", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x07 (terminator; signed compare against 0)" }, { "bucket_key": "6|none|0", "primary_opcode_hex": "0x06", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "BLEZ", "category": "CPU", "count": 131, "first_example": "0xbfc0151c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x06 (terminator; signed compare against 0)" }, { "bucket_key": "1|rt|0", "primary_opcode_hex": "0x01", "sub_kind": "rt", "sub_value_hex": "0x00", "mnemonic": "BLTZ", "category": "CPU", "count": 25, "first_example": "0xbfc0113c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp REGIMM rt 0x00 (terminator; signed compare against 0)" }, { "bucket_key": "5|none|0", "primary_opcode_hex": "0x05", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "BNE", "category": "CPU", "count": 1463, "first_example": "0xbfc00270", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x05 (terminator; PC-relative target = pc+4+simm*4)" }, { "bucket_key": "0|funct|13", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x0D", "mnemonic": "BREAK", "category": "CPU", "count": 93, "first_example": "0xbfc012cc", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x0D (non-terminator; calls psx_break(cpu, code, pc) then return; no exception model)" }, { "bucket_key": "0|funct|26", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x1A", "mnemonic": "DIV", "category": "CPU", "count": 73, "first_example": "0xbfc07c7c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x1A (signed; guards div-by-zero and INT32_MIN/-1 to match R3000A)" }, { "bucket_key": "0|funct|27", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x1B", "mnemonic": "DIVU", "category": "CPU", "count": 18, "first_example": "0xbfc012a8", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x1B (unsigned; guards div-by-zero to match R3000A)" }, { "bucket_key": "2|none|0", "primary_opcode_hex": "0x02", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "J", "category": "CPU", "count": 2, "first_example": "0xbfc00070", "status": "implemented", "source": "recompiler/src/strict_translator.cpp:112-123" }, { "bucket_key": "3|none|0", "primary_opcode_hex": "0x03", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "JAL", "category": "CPU", "count": 2606, "first_example": "0xbfc00680", "status": "implemented", "source": "recompiler/src/strict_translator.cpp:126-138" }, { "bucket_key": "0|funct|9", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x09", "mnemonic": "JALR", "category": "CPU", "count": 73, "first_example": "0xbfc02d5c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x09" }, { "bucket_key": "0|funct|8", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x08", "mnemonic": "JR", "category": "CPU", "count": 716, "first_example": "0xbfc00454", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x08" }, { "bucket_key": "32|none|0", "primary_opcode_hex": "0x20", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LB", "category": "CPU", "count": 261, "first_example": "0xbfc00960", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x20 (sign-extended byte; $zero variant uses (void) to keep the read side effect; no alignment requirement)" }, { "bucket_key": "36|none|0", "primary_opcode_hex": "0x24", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LBU", "category": "CPU", "count": 457, "first_example": "0xbfc00cc4", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x24 (zero-extended byte; $zero variant keeps read side effect; no alignment requirement)" }, { "bucket_key": "33|none|0", "primary_opcode_hex": "0x21", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LH", "category": "CPU", "count": 527, "first_example": "0xbfc01040", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x21 (sign-extended halfword; 2-aligned; addr & 1 -> psx_unaligned_access)" }, { "bucket_key": "37|none|0", "primary_opcode_hex": "0x25", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LHU", "category": "CPU", "count": 150, "first_example": "0xbfc08e44", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x25 (zero-extended halfword; 2-aligned; addr & 1 -> psx_unaligned_access)" }, { "bucket_key": "15|none|0", "primary_opcode_hex": "0x0F", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LUI", "category": "CPU", "count": 4122, "first_example": "0xbfc00000", "status": "implemented", "source": "recompiler/src/strict_translator.cpp:166-174" }, { "bucket_key": "35|none|0", "primary_opcode_hex": "0x23", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LW", "category": "CPU", "count": 5482, "first_example": "0xbfc00334", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x23 (32-bit word; 4-aligned; addr & 3 -> psx_unaligned_access)" }, { "bucket_key": "34|none|0", "primary_opcode_hex": "0x22", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LWL", "category": "CPU", "count": 6, "first_example": "0xbfc19598", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x22 (little-endian unaligned high-bytes load; merges with old rt; no alignment fault by design)" }, { "bucket_key": "38|none|0", "primary_opcode_hex": "0x26", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "LWR", "category": "CPU", "count": 6, "first_example": "0xbfc1959c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x26 (little-endian unaligned low-bytes load; merges with old rt; no alignment fault by design)" }, { "bucket_key": "0|funct|16", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x10", "mnemonic": "MFHI", "category": "CPU", "count": 45, "first_example": "0xbfc012b0", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x10 (read cpu->hi)" }, { "bucket_key": "0|funct|18", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x12", "mnemonic": "MFLO", "category": "CPU", "count": 172, "first_example": "0xbfc012bc", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x12 (read cpu->lo)" }, { "bucket_key": "0|funct|25", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x19", "mnemonic": "MULTU", "category": "CPU", "count": 115, "first_example": "0xbfc026e4", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x19 (uint64 product into HI:LO)" }, { "bucket_key": "NOP|none|0", "primary_opcode_hex": "NOP", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "NOP", "category": "CPU", "count": 3884, "first_example": "0xbfc00010", "status": "implemented", "source": "recompiler/src/strict_translator.cpp:54-59" }, { "bucket_key": "0|funct|39", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x27", "mnemonic": "NOR", "category": "CPU", "count": 7, "first_example": "0xbfc11f40", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x27" }, { "bucket_key": "0|funct|37", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x25", "mnemonic": "OR", "category": "CPU", "count": 126, "first_example": "0xbfc001b0", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x25" }, { "bucket_key": "13|none|0", "primary_opcode_hex": "0x0D", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "ORI", "category": "CPU", "count": 485, "first_example": "0xbfc00004", "status": "implemented", "source": "recompiler/src/strict_translator.cpp:154-163" }, { "bucket_key": "40|none|0", "primary_opcode_hex": "0x28", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "SB", "category": "CPU", "count": 703, "first_example": "0xbfc008d4", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x28 (byte store; no alignment requirement)" }, { "bucket_key": "41|none|0", "primary_opcode_hex": "0x29", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "SH", "category": "CPU", "count": 693, "first_example": "0xbfc0040c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x29 (halfword store; 2-aligned; addr & 1 -> psx_unaligned_access)" }, { "bucket_key": "0|funct|0", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x00", "mnemonic": "SLL", "category": "CPU", "count": 1680, "first_example": "0xbfc00820", "status": "implemented", "source": "recompiler/src/strict_translator.cpp:72-78" }, { "bucket_key": "0|funct|4", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x04", "mnemonic": "SLLV", "category": "CPU", "count": 10, "first_example": "0xbfc11f2c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x04 (variable shift, rs[4:0] via & 0x1Fu mask)" }, { "bucket_key": "0|funct|42", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x2A", "mnemonic": "SLT", "category": "CPU", "count": 166, "first_example": "0xbfc01180", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x2A" }, { "bucket_key": "10|none|0", "primary_opcode_hex": "0x0A", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "SLTI", "category": "CPU", "count": 235, "first_example": "0xbfc02444", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x0A" }, { "bucket_key": "11|none|0", "primary_opcode_hex": "0x0B", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "SLTIU", "category": "CPU", "count": 79, "first_example": "0xbfc00f00", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x0B (sign-extends imm then unsigned-compares)" }, { "bucket_key": "0|funct|43", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x2B", "mnemonic": "SLTU", "category": "CPU", "count": 130, "first_example": "0xbfc003c0", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x2B" }, { "bucket_key": "0|funct|3", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x03", "mnemonic": "SRA", "category": "CPU", "count": 300, "first_example": "0xbfc016bc", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x03 (arithmetic right shift via int32_t cast, literal shamt)" }, { "bucket_key": "0|funct|7", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x07", "mnemonic": "SRAV", "category": "CPU", "count": 5, "first_example": "0xbfc3c8f8", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x07 (variable arithmetic right, rs[4:0] via & 0x1Fu mask)" }, { "bucket_key": "0|funct|2", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x02", "mnemonic": "SRL", "category": "CPU", "count": 94, "first_example": "0xbfc01ce4", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x02 (logical right shift, literal shamt)" }, { "bucket_key": "0|funct|35", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x23", "mnemonic": "SUBU", "category": "CPU", "count": 517, "first_example": "0xbfc00ee0", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x23" }, { "bucket_key": "43|none|0", "primary_opcode_hex": "0x2B", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "SW", "category": "CPU", "count": 4037, "first_example": "0xbfc0000c", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x2B (4-aligned; addr & 3 -> psx_unaligned_access)" }, { "bucket_key": "42|none|0", "primary_opcode_hex": "0x2A", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "SWL", "category": "CPU", "count": 6, "first_example": "0xbfc195a4", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x2A (unaligned high-bytes word store; no alignment fault by design)" }, { "bucket_key": "46|none|0", "primary_opcode_hex": "0x2E", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "SWR", "category": "CPU", "count": 6, "first_example": "0xbfc195a8", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x2E (unaligned low-bytes word store; no alignment fault by design)" }, { "bucket_key": "0|funct|12", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x0C", "mnemonic": "SYSCALL", "category": "CPU", "count": 2, "first_example": "0xbfc0d8c4", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x0C (non-terminator; calls psx_syscall(cpu, gpr[2]) then return; no exception model)" }, { "bucket_key": "0|funct|38", "primary_opcode_hex": "0x00", "sub_kind": "funct", "sub_value_hex": "0x26", "mnemonic": "XOR", "category": "CPU", "count": 28, "first_example": "0xbfc07528", "status": "implemented", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x26" }, { "bucket_key": "14|none|0", "primary_opcode_hex": "0x0E", "sub_kind": "none", "sub_value_hex": "0x00", "mnemonic": "XORI", "category": "CPU", "count": 5, "first_example": "0xbfc14104", "status": "implemented", "source": "recompiler/src/strict_translator.cpp primary 0x0E (zero-extended imm)" } ], "implemented_but_unused": [ { "bucket_key": "0|funct|6", "mnemonic": "SRLV", "source": "recompiler/src/strict_translator.cpp SPECIAL funct 0x06 (variable logical right, rs[4:0] via & 0x1Fu mask; ISA-completeness exception, zero inventory hits)", "note": "Implemented in strict_translator but not observed in any walked BIOS function. May be needed for code that lives in copy-to-RAM bytes (exception handler) \u2014 re-evaluate after Phase 1e relocation work." }, { "bucket_key": "16|rfe|0", "mnemonic": "RFE", "source": "recompiler/src/strict_translator.cpp:191-205", "note": "Implemented in strict_translator but not observed in any walked BIOS function. May be needed for code that lives in copy-to-RAM bytes (exception handler) \u2014 re-evaluate after Phase 1e relocation work." } ] }