.macro RegReg insn \insn r31, r0, r0 \insn r0, r31, r0 \insn r0, r0, r31 \insn r1, r2, r3 .endm .macro RegImm insn \insn r0, r0, 0 \insn r0, r0, -32768 \insn r0, r0, 32767 \insn r0, r31, 0 \insn r0, r31, -32768 \insn r0, r31, 32767 \insn r31, r0, 0 \insn r31, r0, -32768 \insn r31, r0, 32767 .endm .macro RegUImm insn \insn r0, r0, 0 \insn r0, r0, 65535 \insn r0, r31, 0 \insn r0, r31, 65535 \insn r31, r0, 0 \insn r31, r0, 65535 .endm RegReg add RegImm addi RegReg and RegUImm andi RegUImm andhi andhi r0, r0, hi(0x0000ffff) andhi r0, r0, hi(0xffff0000) bi label b r0 b r31 be r0, r0, label be r1, r2, label bg r0, r0, label bg r1, r2, label bge r0, r0, label bge r1, r2, label bgeu r0, r0, label bgeu r1, r2, label bgu r0, r0, label bgu r1, r2, label bne r0, r0, label bne r1, r2, label calli label call r0 call r31 RegReg cmpe RegImm cmpei RegReg cmpg RegImm cmpgi RegReg cmpge RegImm cmpgei RegReg cmpgeu RegUImm cmpgeui RegReg cmpgu RegUImm cmpgui RegReg cmpne RegImm cmpnei RegReg divu RegReg modu RegReg mul RegImm muli RegReg nor RegUImm nori RegReg or RegUImm ori ori r0, r0, lo(0xffff0000) ori r0, r0, lo(0x0000ffff) RegUImm orhi orhi r0, r0, hi(0x0000ffff) orhi r0, r0, hi(0xffff0000) RegReg sl RegReg sr RegReg sru sli r0, r0, 0 sli r0, r0, 31 sri r0, r0, 0 sri r0, r0, 31 srui r0, r0, 0 srui r0, r0, 31 RegReg sub RegReg xnor RegUImm xnori RegReg xor RegUImm xori sextb r0, r0 sextb r31, r0 sextb r0, r31 sextb r2, r1 sexth r0, r0 sexth r31, r0 sexth r0, r31 sexth r2, r1 lb r0, (r0+0) lb r1, (r2+3) lbu r0, (r0+0) lbu r1, (r2+3) lh r0, (r0+0) lh r1, (r2+3) lhu r0, (r0+0) lhu r1, (r2+3) lw r0, (r0+0) lw r1, (r2+3) sb (r0+0), r0 sb (r1+2), r3 sh (r0+0), r0 sh (r1+2), r3 sw (r0+0), r0 sw (r1+2), r3 break scall eret bret ret mvi r0, 0 mv r0, r0 mvhi r0, 0 mvhi r0, hi(0) not r0, r0