summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inst.v9
-rw-r--r--instr-table.tex42
-rw-r--r--opcodes13
3 files changed, 50 insertions, 14 deletions
diff --git a/inst.v b/inst.v
index 49f712c..e67f502 100644
--- a/inst.v
+++ b/inst.v
@@ -83,6 +83,9 @@
`define FENCE 32'b?????_?????_????????????_010_0101111
`define SYSCALL 32'b00000_00000_00000_0000000000_1110111
`define BREAK 32'b00000_00000_00000_0000000001_1110111
+`define RDCYCLE 32'b?????_00000_00000_0000000100_1110111
+`define RDTIME 32'b?????_00000_00000_0000001100_1110111
+`define RDINSTRET 32'b?????_00000_00000_0000010100_1110111
`define FENCE_L_V 32'b?????_?????_????????????_100_0101111
`define FENCE_G_V 32'b?????_?????_????????????_101_0101111
`define FENCE_L_CV 32'b?????_?????_????????????_110_0101111
@@ -125,10 +128,10 @@
`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_01110_000_01_1010011
-`define FCVT_D_WU 32'b?????_?????_00000_01111_000_01_1010011
+`define FCVT_D_W 32'b?????_?????_00000_01110_???_01_1010011
+`define FCVT_D_WU 32'b?????_?????_00000_01111_???_01_1010011
`define FCVT_S_D 32'b?????_?????_00000_10001_???_00_1010011
-`define FCVT_D_S 32'b?????_?????_00000_10000_000_01_1010011
+`define FCVT_D_S 32'b?????_?????_00000_10000_???_01_1010011
`define FEQ_S 32'b?????_?????_?????_10101_000_00_1010011
`define FLT_S 32'b?????_?????_?????_10110_000_00_1010011
`define FLE_S 32'b?????_?????_?????_10111_000_00_1010011
diff --git a/instr-table.tex b/instr-table.tex
index a248e85..3ccc735 100644
--- a/instr-table.tex
+++ b/instr-table.tex
@@ -1518,9 +1518,9 @@
\multicolumn{1}{c|}{rs1} &
\multicolumn{1}{c|}{00000} &
\multicolumn{3}{c|}{10000} &
-\multicolumn{2}{c|}{000} &
+\multicolumn{2}{c|}{rm} &
\multicolumn{1}{c|}{01} &
-\multicolumn{1}{c|}{1010011} & FCVT.D.S rd,rs1 \\
+\multicolumn{1}{c|}{1010011} & FCVT.D.S rd,rs1[,rm] \\
\cline{2-11}
@@ -1602,9 +1602,9 @@
\multicolumn{1}{c|}{rs1} &
\multicolumn{1}{c|}{00000} &
\multicolumn{3}{c|}{01110} &
-\multicolumn{2}{c|}{000} &
+\multicolumn{2}{c|}{rm} &
\multicolumn{1}{c|}{01} &
-\multicolumn{1}{c|}{1010011} & FCVT.D.W rd,rs1 \\
+\multicolumn{1}{c|}{1010011} & FCVT.D.W rd,rs1[,rm] \\
\cline{2-11}
@@ -1613,9 +1613,9 @@
\multicolumn{1}{c|}{rs1} &
\multicolumn{1}{c|}{00000} &
\multicolumn{3}{c|}{01111} &
-\multicolumn{2}{c|}{000} &
+\multicolumn{2}{c|}{rm} &
\multicolumn{1}{c|}{01} &
-\multicolumn{1}{c|}{1010011} & FCVT.D.WU rd,rs1 \\
+\multicolumn{1}{c|}{1010011} & FCVT.D.WU rd,rs1[,rm] \\
\cline{2-11}
@@ -2021,6 +2021,36 @@
&
+\multicolumn{1}{|c|}{rd} &
+\multicolumn{1}{c|}{00000} &
+\multicolumn{1}{c|}{00000} &
+\multicolumn{4}{c|}{0000000} &
+\multicolumn{2}{c|}{100} &
+\multicolumn{1}{c|}{1110111} & RDCYCLE rd \\
+\cline{2-11}
+
+
+&
+\multicolumn{1}{|c|}{rd} &
+\multicolumn{1}{c|}{00000} &
+\multicolumn{1}{c|}{00000} &
+\multicolumn{4}{c|}{0000001} &
+\multicolumn{2}{c|}{100} &
+\multicolumn{1}{c|}{1110111} & RDTIME rd \\
+\cline{2-11}
+
+
+&
+\multicolumn{1}{|c|}{rd} &
+\multicolumn{1}{c|}{00000} &
+\multicolumn{1}{c|}{00000} &
+\multicolumn{4}{c|}{0000010} &
+\multicolumn{2}{c|}{100} &
+\multicolumn{1}{c|}{1110111} & RDINSTRET rd \\
+\cline{2-11}
+
+
+&
\multicolumn{1}{|c|}{00000} &
\multicolumn{1}{c|}{00000} &
\multicolumn{1}{c|}{00000} &
diff --git a/opcodes b/opcodes
index 96d8eea..82eafc9 100644
--- a/opcodes
+++ b/opcodes
@@ -107,8 +107,11 @@ amomaxu.d rd rs1 rs2 16..10=7 9..7=3 6..2=0x0A 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
-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
+syscall 31..27=0 26..22=0 21..17=0 16..10=0 9..7=0 6..2=0x1D 1..0=3
+break 31..27=0 26..22=0 21..17=0 16..10=0 9..7=1 6..2=0x1D 1..0=3
+rdcycle rd 26..22=0 21..17=0 16..10=0 9..7=4 6..2=0x1D 1..0=3
+rdtime rd 26..22=0 21..17=0 16..10=1 9..7=4 6..2=0x1D 1..0=3
+rdinstret rd 26..22=0 21..17=0 16..10=2 9..7=4 6..2=0x1D 1..0=3
# vector fence instructions
fence.l.v rd rs1 imm12 9..7=4 6..2=0x0B 1..0=3
@@ -164,11 +167,11 @@ 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=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.d.w rd rs1 21..17=0 16..12=0xE rm 8..7=1 6..2=0x14 1..0=3
+fcvt.d.wu rd rs1 21..17=0 16..12=0xF rm 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 11..9=0 8..7=1 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=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