sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

r5900_mmi_0.inc (4977B)


      1 /* SPDX-FileCopyrightText: © 2022 Decompollaborate */
      2 /* SPDX-License-Identifier: MIT */
      3 
      4 /*
      5     31---------26------------------------------10--------6-5--------0
      6     |          |                              |function  |   MMI0   |
      7     ------6----------------------------------------------------6-----
      8     |---00--|---01--|---10--|---11--| lo
      9 000 |PADDW  | PSUBW | PCGTW | PMAXW |
     10 001 |PADDH  | PSUBH | PCGTH | PMAXH |
     11 010 |PADDB  | PSUBB | PCGTB |  ---  |
     12 011 | ---   | ---   |  ---  |  ---  |
     13 100 |PADDSW |PSUBSW |PEXTLW | PPACW |
     14 101 |PADDSH |PSUBSH |PEXTLH | PPACH |
     15 110 |PADDSB |PSUBSB |PEXTLB | PPACB |
     16 111 | ---   |  ---  | PEXT5 | PPAC5 |
     17  hi |-------|-------|-------|-------|
     18 */
     19 
     20 RABBITIZER_DEF_INSTR_ID(r5900, 0x00, paddw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Word
     21 RABBITIZER_DEF_INSTR_ID(r5900, 0x01, psubw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Word
     22 RABBITIZER_DEF_INSTR_ID(r5900, 0x02, pcgtw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for Greater Than Word
     23 RABBITIZER_DEF_INSTR_ID(r5900, 0x03, pmaxw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel MAXimum Word
     24 
     25 RABBITIZER_DEF_INSTR_ID(r5900, 0x04, paddh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Halfword
     26 RABBITIZER_DEF_INSTR_ID(r5900, 0x05, psubh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Halfword
     27 RABBITIZER_DEF_INSTR_ID(r5900, 0x06, pcgth,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for Greater Than Halfword
     28 RABBITIZER_DEF_INSTR_ID(r5900, 0x07, pmaxh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel MAXimum Halfword
     29 
     30 RABBITIZER_DEF_INSTR_ID(r5900, 0x08, paddb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Byte
     31 RABBITIZER_DEF_INSTR_ID(r5900, 0x09, psubb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Byte
     32 RABBITIZER_DEF_INSTR_ID(r5900, 0x0A, pcgtb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for Greater Than Byte
     33 
     34 RABBITIZER_DEF_INSTR_ID(r5900, 0x10, paddsw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD with Signed saturation Word
     35 RABBITIZER_DEF_INSTR_ID(r5900, 0x11, psubsw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract with Signed saturation Word
     36 RABBITIZER_DEF_INSTR_ID(r5900, 0x12, pextlw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Lower from Word
     37 RABBITIZER_DEF_INSTR_ID(r5900, 0x13, ppacw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel PACk to Word
     38 
     39 RABBITIZER_DEF_INSTR_ID(r5900, 0x14, paddsh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD with Signed saturation Halfword
     40 RABBITIZER_DEF_INSTR_ID(r5900, 0x15, psubsh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract with Signed saturation Halfword
     41 RABBITIZER_DEF_INSTR_ID(r5900, 0x16, pextlh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Lower from Halfword
     42 RABBITIZER_DEF_INSTR_ID(r5900, 0x17, ppach,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel PACk to Halfword
     43 
     44 RABBITIZER_DEF_INSTR_ID(r5900, 0x18, paddsb,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD with Signed saturation Bytes
     45 RABBITIZER_DEF_INSTR_ID(r5900, 0x19, psubsb,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract with Signed saturation Bytes
     46 RABBITIZER_DEF_INSTR_ID(r5900, 0x1A, pextlb,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Lower from Bytes
     47 RABBITIZER_DEF_INSTR_ID(r5900, 0x1B, ppacb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel PACk to Bytes
     48 
     49 RABBITIZER_DEF_INSTR_ID(r5900, 0x1E, pext5,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend from 5-bits
     50 RABBITIZER_DEF_INSTR_ID(r5900, 0x1F, ppac5,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel PACk to 5-bits