RABBITIZER_DEF_INSTR_ID(rsp,jalr,.operands={RABBITIZER_OPERAND_TYPE_rs},.instrType=RABBITIZER_INSTR_TYPE_R,.isJump=true,.modifiesRd=true,.doesLink=true),// Jump And Link Register
RABBITIZER_DEF_INSTR_ID_ALTNAME(rsp,jalr_rd,jalr,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs},.instrType=RABBITIZER_INSTR_TYPE_R,.isJump=true,.modifiesRd=true,.doesLink=true),// Jump And Link Register // Special case for rd != 31
RABBITIZER_DEF_INSTR_ID(rsp,movz,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// MOVe conditional on Zero
RABBITIZER_DEF_INSTR_ID(rsp,movn,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// MOVe conditional on Not zero
RABBITIZER_DEF_INSTR_ID(rsp,add,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true,.notEmitedByCompilers=true),// ADD word
RABBITIZER_DEF_INSTR_ID(rsp,addu,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// ADD Unsigned word
RABBITIZER_DEF_INSTR_ID(rsp,sub,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Subtract word
RABBITIZER_DEF_INSTR_ID(rsp,subu,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// SUBtract Unsigned word
RABBITIZER_DEF_INSTR_ID(rsp,and,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// AND
RABBITIZER_DEF_INSTR_ID(rsp,or,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// OR
RABBITIZER_DEF_INSTR_ID(rsp,xor,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// eXclusive OR
RABBITIZER_DEF_INSTR_ID(rsp,nor,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Not OR
RABBITIZER_DEF_INSTR_ID(rsp,slt,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Set on Less Than
RABBITIZER_DEF_INSTR_ID(rsp,sltu,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Set on Less Than Unsigned
RABBITIZER_DEF_INSTR_ID(rsp,sllv,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Shift word Left Logical Variable
RABBITIZER_DEF_INSTR_ID(rsp,srlv,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Shift word Right Logical Variable
RABBITIZER_DEF_INSTR_ID(rsp,srav,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Shift word Right Arithmetic Variable
RABBITIZER_DEF_INSTR_ID(rsp,sll,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_sa},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Shift word Left Logical
RABBITIZER_DEF_INSTR_ID(rsp,srl,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_sa},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Shift word Right Logical
RABBITIZER_DEF_INSTR_ID(rsp,sra,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_sa},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Shift word Right Arithmetic
RABBITIZER_DEF_INSTR_ID(rsp,bltz,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true),// Branch on Less Than Zero
RABBITIZER_DEF_INSTR_ID(rsp,bgez,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true),// Branch on Greater than or Equal to Zero
RABBITIZER_DEF_INSTR_ID(rsp,bltzal,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true,.doesLink=true),// Branch on Less Than Zero and Link
RABBITIZER_DEF_INSTR_ID(rsp,bgezal,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true,.doesLink=true),// Branch on Greater Than or Equal to Zero and Link
RABBITIZER_DEF_INSTR_ID(rsp,jal,.operands={RABBITIZER_OPERAND_TYPE_LABEL},.instrType=RABBITIZER_INSTR_TYPE_J,.isJump=true,.doesLink=true),// Jump And Link
RABBITIZER_DEF_INSTR_ID(rsp,beq,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true),// Branch on EQual
RABBITIZER_DEF_INSTR_ID(rsp,bne,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true),// Branch on Not Equal
RABBITIZER_DEF_INSTR_ID(rsp,blez,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true),// Branch on Less than or Equal to Zero
RABBITIZER_DEF_INSTR_ID(rsp,bgtz,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true),// Branch on Greater Than Zero
RABBITIZER_DEF_INSTR_ID(rsp,andi,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_I,.isUnsigned=true,.modifiesRt=true),// And Immediate
RABBITIZER_DEF_INSTR_ID(rsp,ori,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_I,.isUnsigned=true,.modifiesRt=true,.canBeLo=true),// Or Immediate
RABBITIZER_DEF_INSTR_ID(rsp,xori,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_I,.isUnsigned=true,.modifiesRt=true),// eXclusive OR Immediate
RABBITIZER_DEF_INSTR_ID(rsp,addiu,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_I,.modifiesRt=true,.canBeLo=true),// Add Immediate Unsigned Word
RABBITIZER_DEF_INSTR_ID(rsp,slti,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_I,.modifiesRt=true),// Set on Less Than Immediate
RABBITIZER_DEF_INSTR_ID(rsp,sltiu,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_I,.modifiesRt=true),// Set on Less Than Immediate Unsigned
RABBITIZER_DEF_INSTR_ID(rsp,lw,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_IMM_base},.instrType=RABBITIZER_INSTR_TYPE_I,.modifiesRt=true,.canBeLo=true,.doesDereference=true,.doesLoad=true,.architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I),// Load Word
RABBITIZER_DEF_INSTR_ID(rsp,sb,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_IMM_base},.instrType=RABBITIZER_INSTR_TYPE_I,.canBeLo=true,.doesDereference=true,.doesStore=true,.architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I),// Store Byte
RABBITIZER_DEF_INSTR_ID(rsp,sh,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_IMM_base},.instrType=RABBITIZER_INSTR_TYPE_I,.canBeLo=true,.doesDereference=true,.doesStore=true,.architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I),// Store Halfword
RABBITIZER_DEF_INSTR_ID(rsp,sw,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_IMM_base},.instrType=RABBITIZER_INSTR_TYPE_I,.canBeLo=true,.doesDereference=true,.doesStore=true,.architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I),// Store Word
RABBITIZER_DEF_INSTR_ID(rsp,lwc1,.operands={RABBITIZER_OPERAND_TYPE_ft,RABBITIZER_OPERAND_TYPE_IMM_base},.instrType=RABBITIZER_INSTR_TYPE_I,.isFloat=true,.canBeLo=true,.doesDereference=true,.doesLoad=true,.architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I),// Load Word to Coprocessor z
RABBITIZER_DEF_INSTR_ID(rsp,swc1,.operands={RABBITIZER_OPERAND_TYPE_ft,RABBITIZER_OPERAND_TYPE_IMM_base},.instrType=RABBITIZER_INSTR_TYPE_I,.isFloat=true,.canBeLo=true,.doesDereference=true,.doesStore=true,.architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I),// Store Word from Coprocessor z
RABBITIZER_DEF_INSTR_ID(rsp,mfc0,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_cop0d},.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,.modifiesRt=true,.notEmitedByCompilers=true),// Move word From CP0
RABBITIZER_DEF_INSTR_ID(rsp,mtc0,.operands={RABBITIZER_OPERAND_TYPE_rt,RABBITIZER_OPERAND_TYPE_cop0d},.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,.notEmitedByCompilers=true),// Move word to CP0
RABBITIZER_DEF_INSTR_ID(rsp,beqz,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true),// Branch on EQual Zero
RABBITIZER_DEF_INSTR_ID(rsp,bnez,.operands={RABBITIZER_OPERAND_TYPE_rs,RABBITIZER_OPERAND_TYPE_IMM},.instrType=RABBITIZER_INSTR_TYPE_REGIMM,.isBranch=true),// Branch on Not Equal Zero
RABBITIZER_DEF_INSTR_ID(rsp,not,.operands={RABBITIZER_OPERAND_TYPE_rd,RABBITIZER_OPERAND_TYPE_rs},.instrType=RABBITIZER_INSTR_TYPE_R,.modifiesRd=true),// Not