320 lines
17 KiB
Plaintext
320 lines
17 KiB
Plaintext
# Syntax:
|
|
# <thing---->: a field occupying so many bits.
|
|
# T: a field occupying one bit.
|
|
# Undefined bits end up as 0.
|
|
#
|
|
# This is intended to be compatible with MIPS release 5, integer instructions
|
|
# only. It's based on the MIPS32 Instruction Set v5.04 manual (available from
|
|
# https://www.mips.com/products/architectures/mips32-2/).
|
|
|
|
# Useful pseudoops.
|
|
|
|
# beq zero, offset
|
|
<OFF---------------->00000111101 "b" OFF=offset21
|
|
|
|
# jalr zero, lr, 0
|
|
00000000000000001111100000111000 "ret"
|
|
|
|
# jalr zero, RA, 0
|
|
0000000000000000<RA->00000111000 "jr" RA=gpr
|
|
|
|
# add RA, RB, zero LSH 0
|
|
0111000000000000<RB-><RA->111001 "mov" RA=gpr ',' RB=gpr
|
|
|
|
# addi RA, zero, imm
|
|
<IMM----------->00000<RA->111100 "li" RA=gpr ',' IMM=e16
|
|
|
|
# addi zero, zero, 0
|
|
00000000000000000000000000111100 "nop"
|
|
|
|
# Condition code tokens; these have to be defined here because .f overlaps with
|
|
# a format code.
|
|
|
|
%token .f
|
|
%token .un
|
|
%token .eq
|
|
%token .ueq
|
|
%token .olt
|
|
%token .ult
|
|
%token .ole
|
|
%token .ule
|
|
%token .sf
|
|
%token .ngle
|
|
%token .seq
|
|
%token .ngl
|
|
%token .lt
|
|
%token .nge
|
|
%token .le
|
|
%token .ngt
|
|
|
|
# Core ALU instructions.
|
|
|
|
<OFF------------------------>111 "jal" OFF=offset29
|
|
<OFF------------------------>110 "j" OFF=offset29
|
|
<OFF----------------><RA->111101 "beq" RA=gpr ',' OFF=offset21
|
|
<OFF----------------><RA->110101 "bne" RA=gpr ',' OFF=offset21
|
|
<OFF----------------><RA->101101 "blt" RA=gpr ',' OFF=offset21
|
|
<OFF----------------><RA->100101 "bgt" RA=gpr ',' OFF=offset21
|
|
<OFF----------------><RA->011101 "ble" RA=gpr ',' OFF=offset21
|
|
<OFF----------------><RA->010101 "bge" RA=gpr ',' OFF=offset21
|
|
<OFF----------------><RA->001101 "bpe" RA=gpr ',' OFF=offset21
|
|
<OFF----------------><RA->000101 "bpo" RA=gpr ',' OFF=offset21
|
|
<IMM-----------><RB-><RA->111100 "addi" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
<IMM-----------><RB-><RA->110100 "subi" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
<IMM-----------><RB-><RA->101100 "slti" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
<IMM-----------><RB-><RA->100100 "slti" "signed" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
<IMM-----------><RB-><RA->011100 "andi" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
<IMM-----------><RB-><RA->010100 "xori" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
<IMM-----------><RB-><RA->001100 "ori" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
<IMM-----------><RA-><RB->000100 "lui" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
<IMM-----------><RA-><RB->111011 "mov" RA=gpr ',' "byte" '[' RB=gpr '+' IMM=e16 ']'
|
|
<IMM-----------><RA-><RB->110011 "mov" RA=gpr ',' "int" '[' RB=gpr '+' IMM=e16 ']'
|
|
<IMM-----------><RA-><RB->101011 "mov" RA=gpr ',' "long" '[' RB=gpr '+' IMM=e16 ']'
|
|
<IMM-----------><RA-><RB->111010 "mov" "byte" '[' RA=gpr '+' IMM=e16 ']' ',' RB=gpr
|
|
<IMM-----------><RA-><RB->110010 "mov" "int" '[' RA=gpr '+' IMM=e16 ']' ',' RB=gpr
|
|
<IMM-----------><RA-><RB->101010 "mov" "long" '[' RA=gpr '+' IMM=e16 ']' ',' RB=gpr
|
|
<IMM-----------><RA-><I-->011010 "mov" "byte" '[' RA=gpr '+' IMM=e16 ']' ',' I=u5
|
|
<IMM-----------><RA-><I-->010010 "mov" "int" '[' RA=gpr '+' IMM=e16 ']' ',' I=u5
|
|
<IMM-----------><RA-><I-->001010 "mov" "long" '[' RA=gpr '+' IMM=e16 ']' ',' I=u5
|
|
<IMM-----------><RA-><RB->111000 "jalr" RA=gpr ',' RB=gpr ',' IMM=e16
|
|
|
|
|
|
000000<RS-><RT-><RD->00000100000 "add" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
001000<RS-><RT-><IMM-----------> "addi" RT=gpr ',' RS=gpr ',' IMM=e16
|
|
001001<RS-><RT-><IMM-----------> "addiu" RT=gpr ',' RS=gpr ',' IMM=e16
|
|
000000<RS-><RT-><RD->00000100001 "addu" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
000000<RS-><RT-><RD->00000100100 "and" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
001100<RS-><RT-><IMM-----------> "andi" RT=gpr ',' RS=gpr ',' IMM=e16
|
|
0001000000000000<OFF-----------> "b" OFF=offset16
|
|
0000010000010001<OFF-----------> "bal" OFF=offset16
|
|
000100<RS-><RT-><OFF-----------> "beq" RS=gpr ',' RT=gpr ',' OFF=offset16
|
|
010100<RS-><RT-><OFF-----------> "beql" RS=gpr ',' RT=gpr ',' OFF=offset16
|
|
000001<RS->00001<OFF-----------> "bgez" RS=gpr ',' OFF=offset16
|
|
000001<RS->10001<OFF-----------> "bgezal" RS=gpr ',' OFF=offset16
|
|
000001<RS->10011<OFF-----------> "bgezall" RS=gpr ',' OFF=offset16
|
|
000001<RS->00011<OFF-----------> "bgezl" RS=gpr ',' OFF=offset16
|
|
000111<RS->00000<OFF-----------> "bgtz" RS=gpr ',' OFF=offset16
|
|
010111<RS->00000<OFF-----------> "bgtzl" RS=gpr ',' OFF=offset16
|
|
000110<RS->00000<OFF-----------> "blez" RS=gpr ',' OFF=offset16
|
|
010110<RS->00000<OFF-----------> "blezl" RS=gpr ',' OFF=offset16
|
|
000001<RS->00000<OFF-----------> "bltz" RS=gpr ',' OFF=offset16
|
|
000001<RS->10000<OFF-----------> "bltzal" RS=gpr ',' OFF=offset16
|
|
000001<RS->10010<OFF-----------> "bltzall" RS=gpr ',' OFF=offset16
|
|
000001<RS->00010<OFF-----------> "bltzl" RS=gpr ',' OFF=offset16
|
|
000101<RS-><RT-><OFF-----------> "bne" RS=gpr ',' RT=gpr ',' OFF=offset16
|
|
010101<RS-><RT-><OFF-----------> "bnel" RS=gpr ',' RT=gpr ',' OFF=offset16
|
|
101111<RS-><OP-><OFF-----------> "cache" OP=u5 ',' OFF=e16 '(' RS=gpr ')'
|
|
011111<RS-><OP-><OFF---->0011011 "cachee" OP=u5 ',' OFF=e9 '(' RS=gpr ')'
|
|
011100<RS-><RT-><RD->00000100001 "clo" RD=RT=gpr ',' RS=gpr
|
|
011100<RS-><RT-><RD->00000100000 "clz" RD=RT=gpr ',' RS=gpr
|
|
01000010000000000000000000011111 "deret"
|
|
01000001011<RT->0110000000000000 "di" RT=gpr
|
|
01000001011000000110000000000000 "di"
|
|
000000<RS-><RT->0000000000011010 "div" RS=gpr ',' RT=gpr
|
|
000000<RS-><RT->0000000000011011 "divu" RS=gpr ',' RT=gpr
|
|
00000000000000000000000011000000 "ehb"
|
|
01000001011<RT->0110000000100000 "ei" RT=gpr
|
|
01000001011000000110000000100000 "ei"
|
|
011111<RS-><RT-><MSBLSB-->000000 "ext" RT=gpr ',' RS=gpr ',' extmsblsb
|
|
011111<RS-><RT-><MSBLSB-->000100 "ins" RT=gpr ',' RS=gpr ',' insmsblsb
|
|
000010<ABS---------------------> "j" ABS=abs26
|
|
000011<ABS---------------------> "jal" ABS=abs26
|
|
000000<RS->00000<RD->00000001001 "jalr" RD=gpr ',' RS=gpr
|
|
000000<RS->000001111100000001001 "jalr" RS=gpr
|
|
000000<RS->00000<RD->10000001001 "jalr.hb" RD=gpr ',' RS=gpr
|
|
000000<RS->000001111110000001001 "jalr.hb" RS=gpr
|
|
011101<ABS---------------------> "jalx" ABS=abs26
|
|
000000<RS->000000000000000001000 "jr" RS=gpr
|
|
000000<RS->000000000010000001000 "jr.hb" RS=gpr
|
|
100000<RS-><RT-><IMM-----------> "lb" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0101100 "lbe" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
100100<RS-><RT-><IMM-----------> "lbu" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0101000 "lbue" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
100001<RS-><RT-><IMM-----------> "lh" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0101101 "lhe" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
100101<RS-><RT-><IMM-----------> "lhu" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0101001 "lhue" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
110000<RS-><RT-><IMM-----------> "ll" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0101110 "lle" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
00111100000<RT-><IMM-----------> "lui" RT=gpr ',' IMM=e16
|
|
100011<RS-><RT-><IMM-----------> "lw" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0101111 "lwe" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
100010<RS-><RT-><IMM-----------> "lwl" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0011001 "lwle" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
100110<RS-><RT-><IMM-----------> "lwr" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0011010 "lwre" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
011100<RS-><RT->0000000000000000 "madd" RS=gpr ',' RT=gpr
|
|
011100<RS-><RT->0000000000000001 "maddu" RS=gpr ',' RT=gpr
|
|
0000000000000000<RD->00000010000 "mfhi" RD=gpr
|
|
0000000000000000<RD->00000010010 "mflo" RD=gpr
|
|
000000<RS-><RT-><RD->00000001011 "movn" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
000000<RS-><RT-><RD->00000001010 "movz" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
011100<RS-><RT->0000000000000100 "msub" RS=gpr ',' RT=gpr
|
|
011100<RS-><RT->0000000000000101 "msubu" RS=gpr ',' RT=gpr
|
|
000000<RS->000000000000000010001 "mthi" RS=gpr
|
|
000000<RS->000000000000000010011 "mtlo" RS=gpr
|
|
011100<RS-><RT-><RD->00000000010 "mul" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
000000<RS-><RT->0000000000011000 "mult" RS=gpr ',' RT=gpr
|
|
000000<RS-><RT->0000000000000001 "multu" RS=gpr ',' RT=gpr
|
|
000000<RS-><RT-><RD->00000100111 "nor" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
000000<RS-><RT-><RD->00000100101 "or" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
001101<RS-><RT-><IMM-----------> "ori" RT=gpr ',' RS=gpr ',' IMM=e16
|
|
00000000000000000000000101000000 "pause"
|
|
110011<RS-><H--><IMM-----------> "pref" H=u5 ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><H--><IMM---->0100011 "prefe" H=u5 ',' IMM=e9 '(' RS=gpr ')'
|
|
010011<RS-><RT-><H-->00000001111 "prefx" H=u5 ',' RT=gpr '(' RS=gpr ')'
|
|
01111100000<RT-><RD->00000111011 "rdhwr" RT=gpr ',' RD=gpr
|
|
01000001010<RT-><RD->00000000000 "rdpgpr" RD=gpr ',' RT=gpr
|
|
00000000001<RT-><RD-><SA->000010 "rotr" RD=gpr ',' RT=gpr ',' SA=u5
|
|
000000<RS-><RT-><RD->00001000110 "rotrv" RD=gpr ',' RT=gpr ',' RS=gpr
|
|
101000<RS-><RT-><IMM-----------> "sb" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0011100 "sbe" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
111000<RS-><RT-><IMM-----------> "sc" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0011110 "sce" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
011100<CODE-------------->111111 "sdbbp" CODE=u20
|
|
01111100000<RT-><RD->10000100000 "seb" RD=gpr ',' RT=gpr
|
|
01111100000<RT-><RD->11000100000 "seh" RD=gpr ',' RT=gpr
|
|
101001<RS-><RT-><IMM-----------> "sh" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0011101 "she" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
00000000000<RT-><RD-><SA->000000 "sll" RD=gpr ',' RT=gpr ',' SA=u5
|
|
000000<RS-><RT-><RD->00000000100 "sllv" RD=gpr ',' RT=gpr ',' RS=gpr
|
|
000000<RS-><RT-><RD->00000101010 "slt" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
001010<RS-><RT-><IMM-----------> "slti" RT=gpr ',' RS=gpr ',' IMM=e16
|
|
001011<RS-><RT-><IMM-----------> "sltiu" RT=gpr ',' RS=gpr ',' IMM=e16
|
|
000000<RS-><RT-><RD->00000101011 "sltu" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
00000000000<RT-><RD-><SA->000011 "sra" RD=gpr ',' RT=gpr ',' SA=u5
|
|
000000<RS-><RT-><RD->00000000111 "srav" RD=gpr ',' RT=gpr ',' RS=gpr
|
|
00000000000<RT-><RD-><SA->000010 "srl" RD=gpr ',' RT=gpr ',' SA=u5
|
|
000000<RS-><RT-><RD->00000000110 "srlv" RD=gpr ',' RT=gpr ',' RS=gpr
|
|
00000000000000000000000001000000 "ssnop"
|
|
000000<RS-><RT-><RD->00000100010 "sub" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
000000<RS-><RT-><RD->00000100011 "subu" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
101011<RS-><RT-><IMM-----------> "sw" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0011111 "swe" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
101010<RS-><RT-><IMM-----------> "swl" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0010001 "swle" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
101110<RS-><RT-><IMM-----------> "swr" RT=gpr ',' IMM=e16 '(' RS=gpr ')'
|
|
011111<RS-><RT-><IMM---->0100010 "swre" RT=gpr ',' IMM=e9 '(' RS=gpr ')'
|
|
000001<RS->11111<IMM-----------> "synci" IMM=e16 '(' RS=gpr ')'
|
|
000000<CODE-------------->001100 "syscall" CODE=u20
|
|
000000<RS-><RT->0000000000110100 "teq" RS=gpr ',' RT=gpr
|
|
000001<RS->01100<IMM-----------> "teqi" RS=gpr ',' IMM=e16
|
|
000000<RS-><RT->0000000000110000 "tge" RS=gpr ',' RT=gpr
|
|
000001<RS->01000<IMM-----------> "tgei" RS=gpr ',' IMM=e16
|
|
000001<RS->01001<IMM-----------> "tgeiu" RS=gpr ',' IMM=e16
|
|
000000<RS-><RT->0000000000110001 "tgeu" RS=gpr ',' RT=gpr
|
|
01000010000000000000000000000011 "tlbinv"
|
|
01000010000000000000000000000100 "tlbinvf"
|
|
01000010000000000000000000001000 "tlbp"
|
|
01000010000000000000000000000001 "tlbr"
|
|
01000010000000000000000000000010 "tlbwi"
|
|
01000010000000000000000000000110 "tlbwr"
|
|
000000<RS-><RT->0000000000110010 "tlt" RS=gpr ',' RT=gpr
|
|
000001<RS->01010<IMM-----------> "tlti" RS=gpr ',' IMM=e16
|
|
000001<RS->01011<IMM-----------> "tltiu" RS=gpr ',' IMM=e16
|
|
000000<RS-><RT->0000000000110011 "tltu" RS=gpr ',' RT=gpr
|
|
000000<RS-><RT->0000000000110110 "tne" RS=gpr ',' RT=gpr
|
|
000001<RS->01110<IMM-----------> "tnei" RS=gpr ',' IMM=e16
|
|
01000010000000000000000000100000 "wait"
|
|
01000001110<RT-><RD->00000000000 "wrpgpr" RD=gpr ',' RT=gpr
|
|
01111100000<RT-><RD->00010100000 "wsbh" RD=gpr ',' RT=gpr
|
|
000000<RS-><RT-><RD->00000100110 "xor" RD=gpr ',' RS=gpr ',' RT=gpr
|
|
001110<RS-><RT-><IMM-----------> "xori" RT=gpr ',' RS=gpr ',' IMM=e16
|
|
|
|
# FPU instructions.
|
|
|
|
010001<F-->00000<FS-><FD->000101 "abs" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F--><FT-><FS-><FD->000000 "add" F=fmt FD=fpr ',' FS=fpr ',' FT=fpr
|
|
010011<RS-><FT-><FS-><FD->011110 "alnv" ".ps" FD=fpr ',' FS=fpr ',' FT=fpr ',' RS=gpr
|
|
010001<F--><FT-><FS-><C>0011<CO> "c" CO=fcond F=fmt C=u3 ',' FS=fpr ',' FT=fpr
|
|
010001<F-->00000<FS-><FD->001010 "ceil" ".l" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->001110 "ceil" ".w" F=fmt FD=fpr ',' FS=fpr
|
|
01000100010<RT-><FS->00000000000 "cfc1" RT=gpr ',' FS=fpr
|
|
01000100110<RT-><FS->00000000000 "ctc1" RT=gpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->100001 "cvt" ".d" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->100101 "cvt" ".l" F=fmt FD=fpr ',' FS=fpr
|
|
01000110000<FT-><FS-><FD->100110 "cvt" ".ps" ".s" FD=fpr ',' FS=fpr ',' FT=fpr
|
|
010001<F-->00000<FS-><FD->100000 "cvt" ".s" F=fmt FD=fpr ',' FS=fpr
|
|
0100011011000000<FS-><FD->101000 "cvt" ".s" ".pl" FS=fpr ',' FD=fpr
|
|
0100011011000000<FS-><FD->100000 "cvt" ".s" ".pu" FS=fpr ',' FD=fpr
|
|
010001<F-->00000<FS-><FD->100100 "cvt" ".w" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F--><FT-><FS-><FD->000011 "div" F=fmt FD=fpr ',' FS=fpr ',' FT=fpr
|
|
010001<F-->00000<FS-><FD->001011 "floor" ".l" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->001111 "floor" ".w" F=fmt FD=fpr ',' FS=fpr
|
|
110101<RS-><FT-><IMM-----------> "ldc1" FT=fpr ',' IMM=e16 '(' RS=gpr ')'
|
|
010011<RS-><RT->00000<FD->000001 "ldxc1" FD=fpr ',' RT=gpr '(' RS=gpr ')'
|
|
010011<RS-><RT->00000<FD->000101 "luxc1" FD=fpr ',' RT=gpr '(' RS=gpr ')'
|
|
110001<RS-><FT-><IMM-----------> "lwc1" FT=fpr ',' IMM=e16 '(' RS=gpr ')'
|
|
010011<RS-><RT->00000<FD->000000 "lwxc1" FD=fpr ',' RT=gpr '(' RS=gpr ')'
|
|
010011<FR-><FT-><FS-><FD->100<F> "madd" F=fmt3 FD=fpr ',' FR=fpr ',' FS=fpr ',' FT=fpr
|
|
01000100000<RT-><FS->00000000000 "mfc1" RT=gpr ',' FS=fpr
|
|
01000100011<RT-><FS->00000000000 "mfhc1" RT=gpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->000110 "mov" F=fmt FD=fpr ',' FS=fpr
|
|
000000<RS-><C>00<RD->00000000001 "movf" RD=gpr ',' RS=gpr ',' C=u3
|
|
010001<F--><C>00<FS-><FD->010001 "movf" F=fmt FD=fpr ',' FS=fpr ',' C=u3
|
|
010001<F--><RT-><FS-><FD->010011 "movn" F=fmt FD=fpr ',' FS=fpr ',' RT=gpr
|
|
000000<RS-><C>01<RD->00000000001 "movt" RD=gpr ',' RS=gpr ',' C=u3
|
|
010001<F--><C>01<FS-><FD->010001 "movt" F=fmt FD=fpr ',' FS=fpr ',' C=u3
|
|
010001<F--><RT-><FS-><FD->010010 "movz" F=fmt FD=fpr ',' FS=fpr ',' RT=gpr
|
|
010011<FR-><FT-><FS-><FD->101<F> "msub" F=fmt3 FD=fpr ',' FR=fpr ',' FS=fpr ',' FT=fpr
|
|
01000100100<RT-><FS->00000000000 "mtc1" RT=gpr ',' FS=fpr
|
|
01000100111<RT-><FS->00000000000 "mthc1" RT=gpr ',' FS=fpr
|
|
010001<F--><FT-><FS-><FD->000010 "mul" F=fmt FD=fpr ',' FS=fpr ',' FT=fpr
|
|
010001<F-->00000<FS-><FD->000111 "neg" F=fmt FD=fpr ',' FS=fpr
|
|
010011<FR-><FT-><FS-><FD->110<F> "nmadd" F=fmt3 FD=fpr ',' FR=fpr ',' FS=fpr ',' FT=fpr
|
|
010011<FR-><FT-><FS-><FD->111<F> "nmsub" F=fmt3 FD=fpr ',' FR=fpr ',' FS=fpr ',' FT=fpr
|
|
01000110110<FT-><FS-><FD->101100 "pll" ".ps" FD=fpr ',' FS=fpr ',' FT=fpr
|
|
01000110110<FT-><FS-><FD->101101 "plu" ".ps" FD=fpr ',' FS=fpr ',' FT=fpr
|
|
01000110110<FT-><FS-><FD->101110 "pul" ".ps" FD=fpr ',' FS=fpr ',' FT=fpr
|
|
01000110110<FT-><FS-><FD->101111 "puu" ".ps" FD=fpr ',' FS=fpr ',' FT=fpr
|
|
010001<F-->00000<FS-><FD->010101 "recip." F=fmt FD=fpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->001000 "round" ".l" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->001100 "round" ".w" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->010110 "rsqrt" F=fmt FD=fpr ',' FS=fpr
|
|
111101<RS-><FT-><IMM-----------> "sdc1" FT=fpr ',' IMM=e16 '(' RS=gpr ')'
|
|
010011<RS-><RT->00000<FD->001001 "sdxc1" FD=fpr ',' RT=gpr '(' RS=gpr ')'
|
|
010001<F-->00000<FS-><FD->000100 "sqrt" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F--><FT-><FS-><FD->000001 "sub" F=fmt FD=fpr ',' FS=fpr ',' FT=fpr
|
|
010011<RS-><RT->00000<FD->001101 "suxc1" FD=fpr ',' RT=gpr '(' RS=gpr ')'
|
|
111001<RS-><FT-><IMM-----------> "swc1" FT=fpr ',' IMM=e16 '(' RS=gpr ')'
|
|
010011<RS-><RT->00000<FD->001000 "swxc1" FD=fpr ',' RT=gpr '(' RS=gpr ')'
|
|
010001<F-->00000<FS-><FD->001001 "trunc" ".l" F=fmt FD=fpr ',' FS=fpr
|
|
010001<F-->00000<FS-><FD->001101 "trunc" ".w" F=fmt FD=fpr ',' FS=fpr
|
|
|
|
# Generic coprocessor instructions.
|
|
|
|
01000101000<C>00<OFF-----------> "bc1f" C=u3 ',' OFF=offset16
|
|
0100010100000000<OFF-----------> "bc1f" OFF=offset16
|
|
01000101000<C>10<OFF-----------> "bc1fl" C=u3 ',' OFF=offset16
|
|
0100010100000010<OFF-----------> "bc1fl" OFF=offset16
|
|
01000101000<C>01<OFF-----------> "bc1t" C=u3 ',' OFF=offset16
|
|
0100010100000001<OFF-----------> "bc1t" OFF=offset16
|
|
01000101000<C>11<OFF-----------> "bc1tl" C=u3 ',' OFF=offset16
|
|
0100010100000011<OFF-----------> "bc1tl" OFF=offset16
|
|
01001001000<C>00<OFF-----------> "bc2f" C=u3 ',' OFF=offset16
|
|
0100100100000000<OFF-----------> "bc2f" OFF=offset16
|
|
01001001000<C>10<OFF-----------> "bc2fl" C=u3 ',' OFF=offset16
|
|
0100100100000010<OFF-----------> "bc2fl" OFF=offset16
|
|
01001001000<C>01<OFF-----------> "bc2t" C=u3 ',' OFF=offset16
|
|
0100100100000001<OFF-----------> "bc2t" OFF=offset16
|
|
01001001000<C>11<OFF-----------> "bc2tl" C=u3 ',' OFF=offset16
|
|
0100100100000011<OFF-----------> "bc2tl" OFF=offset16
|
|
01001000010<RT-><IMM-----------> "cfc2" RT=gpr ',' IMM=u16
|
|
01001000110<RT-><IMM-----------> "ctc2" RT=gpr ',' IMM=u16
|
|
0100101<FUN--------------------> "cop2" FUN=u25
|
|
110110<RS-><RT-><IMM-----------> "ldc2" RT=u5 ',' IMM=e16 '(' RS=gpr ')'
|
|
110010<RS-><RT-><IMM-----------> "lwc2" RT=u5 ',' IMM=e16 '(' RS=gpr ')'
|
|
01000000000<RT-><RD->00000000<S> "mfc0" RT=gpr ',' RD=u5 ',' S=u3
|
|
01001000000<RT-><IMM-----------> "mfc2" RT=gpr ',' IMM=u16
|
|
01000000010<RT-><RD->00000000<S> "mfhc0" RT=gpr ',' RD=u5 ',' S=u3
|
|
01001000011<RT-><IMM-----------> "mfhc2" RT=gpr ',' IMM=u16
|
|
01000000100<RT-><RD->00000000<S> "mtc0" RT=gpr ',' RD=u5 ',' S=u3
|
|
01001000100<RT-><IMM-----------> "mtc2" RT=gpr ',' IMM=u16
|
|
01000000110<RT-><RD->00000000<S> "mthc0" RT=gpr ',' RD=u5 ',' S=u3
|
|
01001000111<RT-><IMM-----------> "mthc2" RT=gpr ',' IMM=u16
|
|
111110<RS-><RT-><IMM-----------> "sdc2" RT=u5 ',' IMM=e16 '(' RS=gpr ')'
|
|
111010<RS-><RT-><IMM-----------> "swc2" RT=u5 ',' IMM=e16 '(' RS=gpr ')'
|
|
|
|
|
|
|