aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inst.v67
-rw-r--r--instr-table.tex107
-rw-r--r--opcodes80
-rwxr-xr-xparse-opcodes5
4 files changed, 181 insertions, 78 deletions
diff --git a/inst.v b/inst.v
index ddea342..43ae5f8 100644
--- a/inst.v
+++ b/inst.v
@@ -4,6 +4,7 @@
`define JALR_C 32'b?????_?????_????????????_000_1101011
`define JALR_R 32'b?????_?????_????????????_001_1101011
`define JALR_J 32'b?????_?????_????????????_010_1101011
+`define RDNPC 32'b?????_00000_000000000000_100_1101011
`define BEQ 32'b?????_?????_?????_???????_000_1100011
`define BNE 32'b?????_?????_?????_???????_001_1100011
`define BLT 32'b?????_?????_?????_???????_100_1100011
@@ -79,31 +80,31 @@
`define AMOMAX_D 32'b?????_?????_?????_00001_010_11_1000011
`define AMOMINU_D 32'b?????_?????_?????_00001_100_11_1000011
`define AMOMAXU_D 32'b?????_?????_?????_00001_110_11_1000011
-`define RDNPC 32'b?????_00000_00000_0000000000_0010111
-`define SYNCI 32'b00000_00000_00000_0000000001_0010111
-`define SYNC 32'b00000_00000_00000_0000000010_0010111
-`define SYSCALL 32'b00000_00000_????????????_011_0010111
-`define EI 32'b?????_00000_00000_0000000000_1111111
-`define DI 32'b?????_00000_00000_0000001000_1111111
-`define MFPCR 32'b?????_00000_?????_0000000001_1111111
-`define MTPCR 32'b00000_?????_?????_0000001001_1111111
-`define ERET 32'b00000_00000_00000_0000000010_1111111
+`define FENCE_I 32'b?????_?????_????????????_001_0101111
+`define FENCE 32'b?????_?????_????????????_010_0101111
+`define SYSCALL 32'b00000_00000_00000_0000000000_1110111
+`define BREAK 32'b00000_00000_00000_0000000001_1110111
+`define EI 32'b?????_00000_00000_0000000000_1111011
+`define DI 32'b?????_00000_00000_0000000001_1111011
+`define MFPCR 32'b?????_00000_?????_0000000010_1111011
+`define MTPCR 32'b00000_?????_?????_0000000011_1111011
+`define ERET 32'b00000_00000_00000_0000000100_1111011
`define FADD_S 32'b?????_?????_?????_00000_???_00_1010011
`define FSUB_S 32'b?????_?????_?????_00001_???_00_1010011
`define FMUL_S 32'b?????_?????_?????_00010_???_00_1010011
`define FDIV_S 32'b?????_?????_?????_00011_???_00_1010011
`define FSQRT_S 32'b?????_?????_00000_00100_???_00_1010011
-`define FSGNJ_S 32'b?????_?????_?????_0010111100_1010011
-`define FSGNJN_S 32'b?????_?????_?????_0011011100_1010011
-`define FSGNJX_S 32'b?????_?????_?????_0011111100_1010011
+`define FSGNJ_S 32'b?????_?????_?????_0010100000_1010011
+`define FSGNJN_S 32'b?????_?????_?????_0011000000_1010011
+`define FSGNJX_S 32'b?????_?????_?????_0011100000_1010011
`define FADD_D 32'b?????_?????_?????_00000_???_01_1010011
`define FSUB_D 32'b?????_?????_?????_00001_???_01_1010011
`define FMUL_D 32'b?????_?????_?????_00010_???_01_1010011
`define FDIV_D 32'b?????_?????_?????_00011_???_01_1010011
`define FSQRT_D 32'b?????_?????_00000_00100_???_01_1010011
-`define FSGNJ_D 32'b?????_?????_?????_0010111101_1010011
-`define FSGNJN_D 32'b?????_?????_?????_0011011101_1010011
-`define FSGNJX_D 32'b?????_?????_?????_0011111101_1010011
+`define FSGNJ_D 32'b?????_?????_?????_0010100001_1010011
+`define FSGNJN_D 32'b?????_?????_?????_0011000001_1010011
+`define FSGNJX_D 32'b?????_?????_?????_0011100001_1010011
`define FCVT_L_S 32'b?????_?????_00000_01000_???_00_1010011
`define FCVT_LU_S 32'b?????_?????_00000_01001_???_00_1010011
`define FCVT_W_S 32'b?????_?????_00000_01010_???_00_1010011
@@ -118,22 +119,30 @@
`define FCVT_S_WU 32'b?????_?????_00000_01111_???_00_1010011
`define FCVT_D_L 32'b?????_?????_00000_01100_???_01_1010011
`define FCVT_D_LU 32'b?????_?????_00000_01101_???_01_1010011
-`define FCVT_D_W 32'b?????_?????_00000_0111011101_1010011
-`define FCVT_D_WU 32'b?????_?????_00000_0111111101_1010011
+`define FCVT_D_W 32'b?????_?????_00000_0111000001_1010011
+`define FCVT_D_WU 32'b?????_?????_00000_0111100001_1010011
`define FCVT_S_D 32'b?????_?????_00000_10001_???_00_1010011
`define FCVT_D_S 32'b?????_?????_00000_10000_???_01_1010011
-`define FEQ_S 32'b?????_?????_?????_1010111100_1010011
-`define FLT_S 32'b?????_?????_?????_1011011100_1010011
-`define FLE_S 32'b?????_?????_?????_1011111100_1010011
-`define FEQ_D 32'b?????_?????_?????_1010111101_1010011
-`define FLT_D 32'b?????_?????_?????_1011011101_1010011
-`define FLE_D 32'b?????_?????_?????_1011111101_1010011
-`define MFTX_S 32'b?????_00000_?????_1100011100_1010011
-`define MFTX_D 32'b?????_00000_?????_1100011101_1010011
-`define MFFSR 32'b?????_00000_00000_1101111100_1010011
-`define MXTF_S 32'b?????_?????_00000_1110011100_1010011
-`define MXTF_D 32'b?????_?????_00000_1110011101_1010011
-`define MTFSR 32'b00000_?????_00000_1110111100_1010011
+`define FEQ_S 32'b?????_?????_?????_1010100000_1010011
+`define FLT_S 32'b?????_?????_?????_1011000000_1010011
+`define FLE_S 32'b?????_?????_?????_1011100000_1010011
+`define FEQ_D 32'b?????_?????_?????_1010100001_1010011
+`define FLT_D 32'b?????_?????_?????_1011000001_1010011
+`define FLE_D 32'b?????_?????_?????_1011100001_1010011
+`define FMIN_S 32'b?????_?????_?????_1100000000_1010011
+`define FMAX_S 32'b?????_?????_?????_1100100000_1010011
+`define FMINMAG_S 32'b?????_?????_?????_1101000000_1010011
+`define FMAXMAG_S 32'b?????_?????_?????_1101100000_1010011
+`define FMIN_D 32'b?????_?????_?????_1100000001_1010011
+`define FMAX_D 32'b?????_?????_?????_1100100001_1010011
+`define FMINMAG_D 32'b?????_?????_?????_1101000001_1010011
+`define FMAXMAG_D 32'b?????_?????_?????_1101100001_1010011
+`define MFTX_S 32'b?????_00000_?????_1110000000_1010011
+`define MFTX_D 32'b?????_00000_?????_1110000001_1010011
+`define MFFSR 32'b?????_00000_00000_1110100000_1010011
+`define MXTF_S 32'b?????_?????_00000_1111000000_1010011
+`define MXTF_D 32'b?????_?????_00000_1111000001_1010011
+`define MTFSR 32'b?????_?????_00000_1111100000_1010011
`define FLW 32'b?????_?????_????????????_010_0000111
`define FLD 32'b?????_?????_????????????_011_0000111
`define FSW 32'b?????_?????_?????_???????_010_0100111
diff --git a/instr-table.tex b/instr-table.tex
index ade746c..90453d8 100644
--- a/instr-table.tex
+++ b/instr-table.tex
@@ -121,6 +121,15 @@
&
\multicolumn{1}{|c|}{0000000} &
\multicolumn{2}{c|}{000} &
+\multicolumn{4}{c|}{000000000000} &
+\multicolumn{1}{c|}{00000} &
+\multicolumn{1}{c|}{rd} & RDNPC rd \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{2}{c|}{000} &
\multicolumn{3}{c|}{imm12hi} &
\multicolumn{1}{c|}{rs2} &
\multicolumn{1}{c|}{rs1} &
@@ -828,19 +837,19 @@
&
\multicolumn{1}{|c|}{0000000} &
-\multicolumn{5}{c|}{0000000000} &
-\multicolumn{1}{c|}{00000} &
-\multicolumn{1}{c|}{00000} &
-\multicolumn{1}{c|}{rd} & RDNPC rd \\
+\multicolumn{2}{c|}{000} &
+\multicolumn{4}{c|}{imm12} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FENCE.I rd,rs1,imm12 \\
\cline{2-10}
&
\multicolumn{1}{|c|}{0000000} &
-\multicolumn{5}{c|}{0000000000} &
-\multicolumn{1}{c|}{00000} &
-\multicolumn{1}{c|}{00000} &
-\multicolumn{1}{c|}{00000} & SYNCI \\
+\multicolumn{2}{c|}{000} &
+\multicolumn{4}{c|}{imm12} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FENCE rd,rs1,imm12 \\
\cline{2-10}
@@ -849,16 +858,16 @@
\multicolumn{5}{c|}{0000000000} &
\multicolumn{1}{c|}{00000} &
\multicolumn{1}{c|}{00000} &
-\multicolumn{1}{c|}{00000} & SYNC \\
+\multicolumn{1}{c|}{00000} & SYSCALL \\
\cline{2-10}
&
\multicolumn{1}{|c|}{0000000} &
-\multicolumn{2}{c|}{000} &
-\multicolumn{4}{c|}{imm12} &
+\multicolumn{5}{c|}{0000000000} &
+\multicolumn{1}{c|}{00000} &
\multicolumn{1}{c|}{00000} &
-\multicolumn{1}{c|}{00000} & SYSCALL imm12 \\
+\multicolumn{1}{c|}{00000} & BREAK \\
\cline{2-10}
@@ -1323,6 +1332,78 @@
\multicolumn{1}{|c|}{0000000} &
\multicolumn{5}{c|}{0000000011} &
\multicolumn{1}{c|}{rs2} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FMIN.S rd,rs1,rs2 \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{5}{c|}{0000000011} &
+\multicolumn{1}{c|}{rs2} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FMAX.S rd,rs1,rs2 \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{5}{c|}{0000000011} &
+\multicolumn{1}{c|}{rs2} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FMINMAG.S rd,rs1,rs2 \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{5}{c|}{0000000011} &
+\multicolumn{1}{c|}{rs2} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FMAXMAG.S rd,rs1,rs2 \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{5}{c|}{0000000011} &
+\multicolumn{1}{c|}{rs2} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FMIN.D rd,rs1,rs2 \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{5}{c|}{0000000011} &
+\multicolumn{1}{c|}{rs2} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FMAX.D rd,rs1,rs2 \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{5}{c|}{0000000011} &
+\multicolumn{1}{c|}{rs2} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FMINMAG.D rd,rs1,rs2 \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{5}{c|}{0000000011} &
+\multicolumn{1}{c|}{rs2} &
+\multicolumn{1}{c|}{rs1} &
+\multicolumn{1}{c|}{rd} & FMAXMAG.D rd,rs1,rs2 \\
+\cline{2-10}
+
+
+&
+\multicolumn{1}{|c|}{0000000} &
+\multicolumn{5}{c|}{0000000011} &
+\multicolumn{1}{c|}{rs2} &
\multicolumn{1}{c|}{00000} &
\multicolumn{1}{c|}{rd} & MFTX.S rd,rs2 \\
\cline{2-10}
@@ -1369,7 +1450,7 @@
\multicolumn{5}{c|}{0000000011} &
\multicolumn{1}{c|}{00000} &
\multicolumn{1}{c|}{rs1} &
-\multicolumn{1}{c|}{00000} & MTFSR rs1 \\
+\multicolumn{1}{c|}{rd} & MTFSR rd,rs1 \\
\cline{2-10}
diff --git a/opcodes b/opcodes
index 6a002fe..5511ae7 100644
--- a/opcodes
+++ b/opcodes
@@ -11,9 +11,10 @@ unimp 31..0=0
j imm25 6..2=0x19 1..0=3
jal imm25 6..2=0x1B 1..0=3
-jalr.c rd rs1 imm12 9..7=0 6..2=0x1A 1..0=3
-jalr.r rd rs1 imm12 9..7=1 6..2=0x1A 1..0=3
-jalr.j rd rs1 imm12 9..7=2 6..2=0x1A 1..0=3
+jalr.c rd rs1 imm12 9..7=0 6..2=0x1A 1..0=3
+jalr.r rd rs1 imm12 9..7=1 6..2=0x1A 1..0=3
+jalr.j rd rs1 imm12 9..7=2 6..2=0x1A 1..0=3
+rdnpc rd 26..22=0 21..10=0 9..7=4 6..2=0x1A 1..0=3
beq imm12hi rs1 rs2 imm12lo 9..7=0 6..2=0x18 1..0=3
bne imm12hi rs1 rs2 imm12lo 9..7=1 6..2=0x18 1..0=3
@@ -105,16 +106,17 @@ amomax.d rd rs1 rs2 16..10=5 9..7=3 6..2=0x10 1..0=3
amominu.d rd rs1 rs2 16..10=6 9..7=3 6..2=0x10 1..0=3
amomaxu.d rd rs1 rs2 16..10=7 9..7=3 6..2=0x10 1..0=3
-rdnpc rd 26..22=0 21..17=0 16..10=0 9..7=0 6..2=0x05 1..0=3
-synci 31..27=0 26..22=0 21..17=0 16..10=0 9..7=1 6..2=0x05 1..0=3
-sync 31..27=0 26..22=0 21..17=0 16..10=0 9..7=2 6..2=0x05 1..0=3
-syscall 31..27=0 26..22=0 imm12 9..7=3 6..2=0x05 1..0=3
+fence.i rd rs1 imm12 9..7=1 6..2=0x0B 1..0=3
+fence rd rs1 imm12 9..7=2 6..2=0x0B 1..0=3
-ei rd 26..22=0 21..17=0 16..10=0 9..7=0 6..2=0x1F 1..0=3
-di rd 26..22=0 21..17=0 16..10=1 9..7=0 6..2=0x1F 1..0=3
-mfpcr rd 26..22=0 rs2 16..10=0 9..7=1 6..2=0x1F 1..0=3
-mtpcr 31..27=0 rs1 rs2 16..10=1 9..7=1 6..2=0x1F 1..0=3
-eret 31..27=0 26..22=0 21..17=0 16..10=0 9..7=2 6..2=0x1F 1..0=3
+syscall 31..27=0 26..22=0 21..17=0 16..7=0 6..2=0x1D 1..0=3
+break 31..27=0 26..22=0 21..17=0 16..7=1 6..2=0x1D 1..0=3
+
+ei rd 26..22=0 21..17=0 16..7=0 6..2=0x1E 1..0=3
+di rd 26..22=0 21..17=0 16..7=1 6..2=0x1E 1..0=3
+mfpcr rd 26..22=0 rs2 16..7=2 6..2=0x1E 1..0=3
+mtpcr 31..27=0 rs1 rs2 16..7=3 6..2=0x1E 1..0=3
+eret 31..27=0 26..22=0 21..17=0 16..7=4 6..2=0x1E 1..0=3
# 0x7C-0x7F are reserved for >32b instructions
@@ -123,18 +125,18 @@ fsub.s rd rs1 rs2 16..12=1 rm 8..7=0 6..2=0x14 1..0=3
fmul.s rd rs1 rs2 16..12=2 rm 8..7=0 6..2=0x14 1..0=3
fdiv.s rd rs1 rs2 16..12=3 rm 8..7=0 6..2=0x14 1..0=3
fsqrt.s rd rs1 21..17=0 16..12=4 rm 8..7=0 6..2=0x14 1..0=3
-fsgnj.s rd rs1 rs2 16..12=5 11..9=7 8..7=0 6..2=0x14 1..0=3
-fsgnjn.s rd rs1 rs2 16..12=6 11..9=7 8..7=0 6..2=0x14 1..0=3
-fsgnjx.s rd rs1 rs2 16..12=7 11..9=7 8..7=0 6..2=0x14 1..0=3
+fsgnj.s rd rs1 rs2 16..12=5 11..9=0 8..7=0 6..2=0x14 1..0=3
+fsgnjn.s rd rs1 rs2 16..12=6 11..9=0 8..7=0 6..2=0x14 1..0=3
+fsgnjx.s rd rs1 rs2 16..12=7 11..9=0 8..7=0 6..2=0x14 1..0=3
fadd.d rd rs1 rs2 16..12=0x0 rm 8..7=1 6..2=0x14 1..0=3
fsub.d rd rs1 rs2 16..12=0x1 rm 8..7=1 6..2=0x14 1..0=3
fmul.d rd rs1 rs2 16..12=0x2 rm 8..7=1 6..2=0x14 1..0=3
fdiv.d rd rs1 rs2 16..12=0x3 rm 8..7=1 6..2=0x14 1..0=3
fsqrt.d rd rs1 21..17=0 16..12=0x4 rm 8..7=1 6..2=0x14 1..0=3
-fsgnj.d rd rs1 rs2 16..12=0x5 11..9=7 8..7=1 6..2=0x14 1..0=3
-fsgnjn.d rd rs1 rs2 16..12=0x6 11..9=7 8..7=1 6..2=0x14 1..0=3
-fsgnjx.d rd rs1 rs2 16..12=0x7 11..9=7 8..7=1 6..2=0x14 1..0=3
+fsgnj.d rd rs1 rs2 16..12=0x5 11..9=0 8..7=1 6..2=0x14 1..0=3
+fsgnjn.d rd rs1 rs2 16..12=0x6 11..9=0 8..7=1 6..2=0x14 1..0=3
+fsgnjx.d rd rs1 rs2 16..12=0x7 11..9=0 8..7=1 6..2=0x14 1..0=3
fcvt.l.s rd rs1 21..17=0 16..12=0x8 rm 8..7=0 6..2=0x14 1..0=3
fcvt.lu.s rd rs1 21..17=0 16..12=0x9 rm 8..7=0 6..2=0x14 1..0=3
@@ -153,26 +155,36 @@ fcvt.s.wu rd rs1 21..17=0 16..12=0xF rm 8..7=0 6..2=0x14 1..0=3
fcvt.d.l rd rs1 21..17=0 16..12=0xC rm 8..7=1 6..2=0x14 1..0=3
fcvt.d.lu rd rs1 21..17=0 16..12=0xD rm 8..7=1 6..2=0x14 1..0=3
-fcvt.d.w rd rs1 21..17=0 16..12=0xE 11..9=7 8..7=1 6..2=0x14 1..0=3
-fcvt.d.wu rd rs1 21..17=0 16..12=0xF 11..9=7 8..7=1 6..2=0x14 1..0=3
+fcvt.d.w rd rs1 21..17=0 16..12=0xE 11..9=0 8..7=1 6..2=0x14 1..0=3
+fcvt.d.wu rd rs1 21..17=0 16..12=0xF 11..9=0 8..7=1 6..2=0x14 1..0=3
fcvt.s.d rd rs1 21..17=0 16..14=0x4 13..12=1 rm 8..7=0 6..2=0x14 1..0=3
fcvt.d.s rd rs1 21..17=0 16..14=0x4 13..12=0 rm 8..7=1 6..2=0x14 1..0=3
-feq.s rd rs1 rs2 16..12=0x15 11..9=7 8..7=0 6..2=0x14 1..0=3
-flt.s rd rs1 rs2 16..12=0x16 11..9=7 8..7=0 6..2=0x14 1..0=3
-fle.s rd rs1 rs2 16..12=0x17 11..9=7 8..7=0 6..2=0x14 1..0=3
-
-feq.d rd rs1 rs2 16..12=0x15 11..9=7 8..7=1 6..2=0x14 1..0=3
-flt.d rd rs1 rs2 16..12=0x16 11..9=7 8..7=1 6..2=0x14 1..0=3
-fle.d rd rs1 rs2 16..12=0x17 11..9=7 8..7=1 6..2=0x14 1..0=3
-
-mftx.s rd 26..22=0 rs2 16..12=0x18 11..9=7 8..7=0 6..2=0x14 1..0=3
-mftx.d rd 26..22=0 rs2 16..12=0x18 11..9=7 8..7=1 6..2=0x14 1..0=3
-mffsr rd 26..22=0 21..17=0 16..12=0x1B 11..9=7 8..7=0 6..2=0x14 1..0=3
-mxtf.s rd rs1 21..17=0 16..12=0x1C 11..9=7 8..7=0 6..2=0x14 1..0=3
-mxtf.d rd rs1 21..17=0 16..12=0x1C 11..9=7 8..7=1 6..2=0x14 1..0=3
-mtfsr 31..27=0 rs1 21..17=0 16..12=0x1D 11..9=7 8..7=0 6..2=0x14 1..0=3
+feq.s rd rs1 rs2 16..12=0x15 11..9=0 8..7=0 6..2=0x14 1..0=3
+flt.s rd rs1 rs2 16..12=0x16 11..9=0 8..7=0 6..2=0x14 1..0=3
+fle.s rd rs1 rs2 16..12=0x17 11..9=0 8..7=0 6..2=0x14 1..0=3
+
+feq.d rd rs1 rs2 16..12=0x15 11..9=0 8..7=1 6..2=0x14 1..0=3
+flt.d rd rs1 rs2 16..12=0x16 11..9=0 8..7=1 6..2=0x14 1..0=3
+fle.d rd rs1 rs2 16..12=0x17 11..9=0 8..7=1 6..2=0x14 1..0=3
+
+fmin.s rd rs1 rs2 16..12=0x18 11..9=0 8..7=0 6..2=0x14 1..0=3
+fmax.s rd rs1 rs2 16..12=0x19 11..9=0 8..7=0 6..2=0x14 1..0=3
+fminmag.s rd rs1 rs2 16..12=0x1A 11..9=0 8..7=0 6..2=0x14 1..0=3
+fmaxmag.s rd rs1 rs2 16..12=0x1B 11..9=0 8..7=0 6..2=0x14 1..0=3
+
+fmin.d rd rs1 rs2 16..12=0x18 11..9=0 8..7=1 6..2=0x14 1..0=3
+fmax.d rd rs1 rs2 16..12=0x19 11..9=0 8..7=1 6..2=0x14 1..0=3
+fminmag.d rd rs1 rs2 16..12=0x1A 11..9=0 8..7=1 6..2=0x14 1..0=3
+fmaxmag.d rd rs1 rs2 16..12=0x1B 11..9=0 8..7=1 6..2=0x14 1..0=3
+
+mftx.s rd 26..22=0 rs2 16..12=0x1C 11..9=0 8..7=0 6..2=0x14 1..0=3
+mftx.d rd 26..22=0 rs2 16..12=0x1C 11..9=0 8..7=1 6..2=0x14 1..0=3
+mffsr rd 26..22=0 21..17=0 16..12=0x1D 11..9=0 8..7=0 6..2=0x14 1..0=3
+mxtf.s rd rs1 21..17=0 16..12=0x1E 11..9=0 8..7=0 6..2=0x14 1..0=3
+mxtf.d rd rs1 21..17=0 16..12=0x1E 11..9=0 8..7=1 6..2=0x14 1..0=3
+mtfsr rd rs1 21..17=0 16..12=0x1F 11..9=0 8..7=0 6..2=0x14 1..0=3
flw rd rs1 imm12 9..7=2 6..2=0x01 1..0=3
fld rd rs1 imm12 9..7=3 6..2=0x01 1..0=3
diff --git a/parse-opcodes b/parse-opcodes
index 3f9f958..ad07965 100755
--- a/parse-opcodes
+++ b/parse-opcodes
@@ -38,7 +38,8 @@ typelut[0x3B] = 4
typelut[0x03] = 3
typelut[0x23] = 10
typelut[0x27] = 4
-typelut[0x17] = 4
+typelut[0x2F] = 4
+typelut[0x77] = 4
typelut[0x07] = 3
typelut[0x27] = 10
typelut[0x53] = 4
@@ -46,7 +47,7 @@ typelut[0x43] = 5
typelut[0x47] = 5
typelut[0x4B] = 5
typelut[0x4F] = 5
-typelut[0x7F] = 4
+typelut[0x7B] = 4
def binary(n, digits=0):
rep = bin(n)[2:]