From 2983e55547558ab4ca2865c9ecd517e077695730 Mon Sep 17 00:00:00 2001 From: Yunsup Lee Date: Tue, 29 Oct 2013 00:57:54 -0700 Subject: changes to the instr-table --- instr-table.tex | 100 ++++++++++++++++++++++++++++++++++++++------------------ parse-opcodes | 30 +++++++++-------- 2 files changed, 85 insertions(+), 45 deletions(-) diff --git a/instr-table.tex b/instr-table.tex index 3893683..c6c5ddb 100644 --- a/instr-table.tex +++ b/instr-table.tex @@ -4,13 +4,15 @@ \begin{table}[p] \begin{small} \begin{center} -\begin{tabular}{rccccccccccl} +\begin{tabular}{p{0in}p{0.4in}p{0.05in}p{0.05in}p{0.05in}p{0.05in}p{0.4in}p{0.6in}p{0.4in}p{0.6in}p{0.7in}l} +& & & & & & & & & & \\ & \multicolumn{1}{l}{\instbit{31}} & \multicolumn{1}{r}{\instbit{27}} & \instbit{26} & \instbit{25} & -\multicolumn{2}{c}{\instbitrange{24}{20}} & +\multicolumn{1}{l}{\instbit{24}} & +\multicolumn{1}{r}{\instbit{20}} & \instbitrange{19}{15} & \instbitrange{14}{12} & \instbitrange{11}{7} & @@ -41,18 +43,18 @@ \multicolumn{4}{|c|}{imm[11:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & -\multicolumn{1}{c|}{imm[4:0]} & \multicolumn{1}{c|}{funct3} & +\multicolumn{1}{c|}{imm[4:0]} & \multicolumn{1}{c|}{opcode} & S-type \\ \cline{2-11} & -\multicolumn{4}{|c|}{imm[12, 10:5]} & +\multicolumn{4}{|c|}{imm[12$\vert$10:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{funct3} & -\multicolumn{1}{c|}{imm[4:1, 11]} & +\multicolumn{1}{c|}{imm[4:1$\vert$11]} & \multicolumn{1}{c|}{opcode} & SB-type \\ \cline{2-11} @@ -65,7 +67,7 @@ & -\multicolumn{8}{|c|}{imm[20, 10:1, 11, 19:12]} & +\multicolumn{8}{|c|}{imm[20$\vert$10:1$\vert$11$\vert$19:12]} & \multicolumn{1}{c|}{rd} & \multicolumn{1}{c|}{opcode} & UJ-type \\ \cline{2-11} @@ -93,7 +95,7 @@ & -\multicolumn{8}{|c|}{imm[20, 10:1, 11, 19:12]} & +\multicolumn{8}{|c|}{imm[20$\vert$10:1$\vert$11$\vert$19:12]} & \multicolumn{1}{c|}{rd} & \multicolumn{1}{c|}{1100111} & JAL rd,imm \\ \cline{2-11} @@ -109,61 +111,61 @@ & -\multicolumn{4}{|c|}{imm[12, 10:5]} & +\multicolumn{4}{|c|}{imm[12$\vert$10:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{000} & -\multicolumn{1}{c|}{imm[4:1, 11]} & +\multicolumn{1}{c|}{imm[4:1$\vert$11]} & \multicolumn{1}{c|}{1100011} & BEQ rs1,rs2,imm \\ \cline{2-11} & -\multicolumn{4}{|c|}{imm[12, 10:5]} & +\multicolumn{4}{|c|}{imm[12$\vert$10:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{001} & -\multicolumn{1}{c|}{imm[4:1, 11]} & +\multicolumn{1}{c|}{imm[4:1$\vert$11]} & \multicolumn{1}{c|}{1100011} & BNE rs1,rs2,imm \\ \cline{2-11} & -\multicolumn{4}{|c|}{imm[12, 10:5]} & +\multicolumn{4}{|c|}{imm[12$\vert$10:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{100} & -\multicolumn{1}{c|}{imm[4:1, 11]} & +\multicolumn{1}{c|}{imm[4:1$\vert$11]} & \multicolumn{1}{c|}{1100011} & BLT rs1,rs2,imm \\ \cline{2-11} & -\multicolumn{4}{|c|}{imm[12, 10:5]} & +\multicolumn{4}{|c|}{imm[12$\vert$10:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{101} & -\multicolumn{1}{c|}{imm[4:1, 11]} & +\multicolumn{1}{c|}{imm[4:1$\vert$11]} & \multicolumn{1}{c|}{1100011} & BGE rs1,rs2,imm \\ \cline{2-11} & -\multicolumn{4}{|c|}{imm[12, 10:5]} & +\multicolumn{4}{|c|}{imm[12$\vert$10:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{110} & -\multicolumn{1}{c|}{imm[4:1, 11]} & +\multicolumn{1}{c|}{imm[4:1$\vert$11]} & \multicolumn{1}{c|}{1100011} & BLTU rs1,rs2,imm \\ \cline{2-11} & -\multicolumn{4}{|c|}{imm[12, 10:5]} & +\multicolumn{4}{|c|}{imm[12$\vert$10:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{111} & -\multicolumn{1}{c|}{imm[4:1, 11]} & +\multicolumn{1}{c|}{imm[4:1$\vert$11]} & \multicolumn{1}{c|}{1100011} & BGEU rs1,rs2,imm \\ \cline{2-11} @@ -428,8 +430,8 @@ & -\multicolumn{1}{|c|}{0000} & -\multicolumn{4}{c|}{~~~pred~~~~} & +\multicolumn{2}{|c|}{0000} & +\multicolumn{3}{c|}{pred} & \multicolumn{1}{c|}{succ} & \multicolumn{1}{c|}{00000} & \multicolumn{1}{c|}{000} & @@ -439,8 +441,8 @@ & -\multicolumn{1}{|c|}{0000} & -\multicolumn{4}{c|}{0000} & +\multicolumn{2}{|c|}{0000} & +\multicolumn{3}{c|}{0000} & \multicolumn{1}{c|}{0000} & \multicolumn{1}{c|}{00000} & \multicolumn{1}{c|}{001} & @@ -512,13 +514,15 @@ \begin{table}[p] \begin{small} \begin{center} -\begin{tabular}{rccccccccccl} +\begin{tabular}{p{0in}p{0.4in}p{0.05in}p{0.05in}p{0.05in}p{0.05in}p{0.4in}p{0.6in}p{0.4in}p{0.6in}p{0.7in}l} +& & & & & & & & & & \\ & \multicolumn{1}{l}{\instbit{31}} & \multicolumn{1}{r}{\instbit{27}} & \instbit{26} & \instbit{25} & -\multicolumn{2}{c}{\instbitrange{24}{20}} & +\multicolumn{1}{l}{\instbit{24}} & +\multicolumn{1}{r}{\instbit{20}} & \instbitrange{19}{15} & \instbitrange{14}{12} & \instbitrange{11}{7} & @@ -549,8 +553,8 @@ \multicolumn{4}{|c|}{imm[11:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & -\multicolumn{1}{c|}{imm[4:0]} & \multicolumn{1}{c|}{funct3} & +\multicolumn{1}{c|}{imm[4:0]} & \multicolumn{1}{c|}{opcode} & S-type \\ \cline{2-11} @@ -975,13 +979,15 @@ \begin{table}[p] \begin{small} \begin{center} -\begin{tabular}{rccccccccccl} +\begin{tabular}{p{0in}p{0.4in}p{0.05in}p{0.05in}p{0.05in}p{0.05in}p{0.4in}p{0.6in}p{0.4in}p{0.6in}p{0.7in}l} +& & & & & & & & & & \\ & \multicolumn{1}{l}{\instbit{31}} & \multicolumn{1}{r}{\instbit{27}} & \instbit{26} & \instbit{25} & -\multicolumn{2}{c}{\instbitrange{24}{20}} & +\multicolumn{1}{l}{\instbit{24}} & +\multicolumn{1}{r}{\instbit{20}} & \instbitrange{19}{15} & \instbitrange{14}{12} & \instbitrange{11}{7} & @@ -999,6 +1005,17 @@ \cline{2-11} +& +\multicolumn{2}{|c|}{rs3} & +\multicolumn{2}{c|}{funct2} & +\multicolumn{2}{c|}{rs2} & +\multicolumn{1}{c|}{rs1} & +\multicolumn{1}{c|}{funct3} & +\multicolumn{1}{c|}{rd} & +\multicolumn{1}{c|}{opcode} & R4-type \\ +\cline{2-11} + + & \multicolumn{6}{|c|}{imm[11:0]} & \multicolumn{1}{c|}{rs1} & @@ -1012,8 +1029,8 @@ \multicolumn{4}{|c|}{imm[11:5]} & \multicolumn{2}{c|}{rs2} & \multicolumn{1}{c|}{rs1} & -\multicolumn{1}{c|}{imm[4:0]} & \multicolumn{1}{c|}{funct3} & +\multicolumn{1}{c|}{imm[4:0]} & \multicolumn{1}{c|}{opcode} & S-type \\ \cline{2-11} @@ -1450,13 +1467,15 @@ \begin{table}[p] \begin{small} \begin{center} -\begin{tabular}{rccccccccccl} +\begin{tabular}{p{0in}p{0.4in}p{0.05in}p{0.05in}p{0.05in}p{0.05in}p{0.4in}p{0.6in}p{0.4in}p{0.6in}p{0.7in}l} +& & & & & & & & & & \\ & \multicolumn{1}{l}{\instbit{31}} & \multicolumn{1}{r}{\instbit{27}} & \instbit{26} & \instbit{25} & -\multicolumn{2}{c}{\instbitrange{24}{20}} & +\multicolumn{1}{l}{\instbit{24}} & +\multicolumn{1}{r}{\instbit{20}} & \instbitrange{19}{15} & \instbitrange{14}{12} & \instbitrange{11}{7} & @@ -1485,6 +1504,25 @@ \cline{2-11} +& +\multicolumn{6}{|c|}{imm[11:0]} & +\multicolumn{1}{c|}{rs1} & +\multicolumn{1}{c|}{funct3} & +\multicolumn{1}{c|}{rd} & +\multicolumn{1}{c|}{opcode} & I-type \\ +\cline{2-11} + + +& +\multicolumn{4}{|c|}{imm[11:5]} & +\multicolumn{2}{c|}{rs2} & +\multicolumn{1}{c|}{rs1} & +\multicolumn{1}{c|}{funct3} & +\multicolumn{1}{c|}{imm[4:0]} & +\multicolumn{1}{c|}{opcode} & S-type \\ +\cline{2-11} + + & \multicolumn{10}{c}{} & \\ & diff --git a/parse-opcodes b/parse-opcodes index d46861d..b5f3cf3 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -140,7 +140,7 @@ def print_uj_type(name,match,arguments): \\cline{2-11} """ % \ ( \ - str_arg('jimm20','imm[20, 10:1, 11, 19:12]',match,arguments), \ + str_arg('jimm20','imm[20$\\vert$10:1$\\vert$11$\\vert$19:12]',match,arguments), \ str_arg('rd','',match,arguments), \ binary(yank(match,opcode_base,opcode_size),opcode_size), \ str_inst(name,arguments) \ @@ -179,11 +179,11 @@ def print_sb_type(name,match,arguments): \\cline{2-11} """ % \ ( \ - str_arg('bimm12hi','imm[12, 10:5]',match,arguments), \ + str_arg('bimm12hi','imm[12$\\vert$10:5]',match,arguments), \ str_arg('rs2','',match,arguments), \ str_arg('rs1','',match,arguments), \ binary(yank(match,funct_base,funct_size),funct_size), \ - str_arg('bimm12lo','imm[4:1, 11]',match,arguments), \ + str_arg('bimm12lo','imm[4:1$\\vert$11]',match,arguments), \ binary(yank(match,opcode_base,opcode_size),opcode_size), \ str_inst(name,arguments) \ ) @@ -319,8 +319,8 @@ def print_amo_type(name,match,arguments): def print_fence_type(name,match,arguments): print """ & -\\multicolumn{1}{|c|}{%s} & -\\multicolumn{4}{c|}{%s} & +\\multicolumn{2}{|c|}{%s} & +\\multicolumn{3}{c|}{%s} & \\multicolumn{1}{c|}{%s} & \\multicolumn{1}{c|}{%s} & \\multicolumn{1}{c|}{%s} & @@ -330,7 +330,7 @@ def print_fence_type(name,match,arguments): """ % \ ( \ binary(yank(match,28,4),4), \ - str_arg('pred','~~~pred~~~~',match,arguments), \ + str_arg('pred','pred',match,arguments), \ str_arg('succ','',match,arguments), \ str_arg('rs1','',match,arguments), \ binary(yank(match,funct_base,funct_size),funct_size), \ @@ -346,13 +346,15 @@ def print_header(*types): \\begin{table}[p] \\begin{small} \\begin{center} -\\begin{tabular}{rccccccccccl} +\\begin{tabular}{p{0in}p{0.4in}p{0.05in}p{0.05in}p{0.05in}p{0.05in}p{0.4in}p{0.6in}p{0.4in}p{0.6in}p{0.7in}l} +& & & & & & & & & & \\\\ & \\multicolumn{1}{l}{\\instbit{31}} & \\multicolumn{1}{r}{\\instbit{27}} & \\instbit{26} & \\instbit{25} & -\\multicolumn{2}{c}{\\instbitrange{24}{20}} & +\\multicolumn{1}{l}{\\instbit{24}} & +\\multicolumn{1}{r}{\\instbit{20}} & \\instbitrange{19}{15} & \\instbitrange{14}{12} & \\instbitrange{11}{7} & @@ -398,19 +400,19 @@ def print_header(*types): \\multicolumn{4}{|c|}{imm[11:5]} & \\multicolumn{2}{c|}{rs2} & \\multicolumn{1}{c|}{rs1} & -\\multicolumn{1}{c|}{imm[4:0]} & \\multicolumn{1}{c|}{funct3} & +\\multicolumn{1}{c|}{imm[4:0]} & \\multicolumn{1}{c|}{opcode} & S-type \\\\ \\cline{2-11} """ if 'sb' in types: print """ & -\\multicolumn{4}{|c|}{imm[12, 10:5]} & +\\multicolumn{4}{|c|}{imm[12$\\vert$10:5]} & \\multicolumn{2}{c|}{rs2} & \\multicolumn{1}{c|}{rs1} & \\multicolumn{1}{c|}{funct3} & -\\multicolumn{1}{c|}{imm[4:1, 11]} & +\\multicolumn{1}{c|}{imm[4:1$\\vert$11]} & \\multicolumn{1}{c|}{opcode} & SB-type \\\\ \\cline{2-11} """ @@ -425,7 +427,7 @@ def print_header(*types): if 'uj' in types: print """ & -\\multicolumn{8}{|c|}{imm[20, 10:1, 11, 19:12]} & +\\multicolumn{8}{|c|}{imm[20$\\vert$10:1$\\vert$11$\\vert$19:12]} & \\multicolumn{1}{c|}{rd} & \\multicolumn{1}{c|}{opcode} & UJ-type \\\\ \\cline{2-11} @@ -507,7 +509,7 @@ def make_latex_table(): print_insts('amomin.w', 'amomax.w', 'amominu.w', 'amomaxu.w') print_footer(0) - print_header('r','a','i','s') + print_header('r','r4','i','s') print_subtitle('RV64A Standard Extension (in addition to RV32A)') print_insts('lr.d', 'sc.d') print_insts('amoswap.d') @@ -524,7 +526,7 @@ def make_latex_table(): print_insts('fssr', 'frsr') print_footer(0) - print_header('r','r4') + print_header('r','r4','i','s') print_subtitle('RV64F Standard Extension (in addition to RV32F)') print_insts('fcvt.s.l', 'fcvt.s.lu') print_insts('fcvt.l.s', 'fcvt.lu.s') -- cgit v1.2.3 From e9ad4cabe84d3f235278c8e2f920d9e776db21f7 Mon Sep 17 00:00:00 2001 From: Yunsup Lee Date: Thu, 21 Nov 2013 14:40:33 -0800 Subject: fix slli/slliw encoding bug --- Makefile | 3 ++- inst.chisel | 4 ++-- instr-table.tex | 4 ++-- opcodes | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 6034644..c2b134f 100644 --- a/Makefile +++ b/Makefile @@ -13,9 +13,10 @@ $(PK_H): opcodes parse-opcodes $(GAS_H): opcodes opcodes-hwacha opcodes-rvc opcodes-custom parse-opcodes ./parse-opcodes -disasm < $< > $@ - #./parse-opcodes -disasm < opcodes-hwacha >> $@ ./parse-opcodes -disasm < opcodes-rvc >> $@ ./parse-opcodes -disasm < opcodes-custom >> $@ + ./parse-opcodes -disasm < opcodes-hwacha >> $@ + ./parse-opcodes -disasm < opcodes-hwacha-pseudo >> $@ $(XCC_H): opcodes parse-opcodes ./parse-opcodes -disasm < $< > $@ diff --git a/inst.chisel b/inst.chisel index b77863a..abda1c6 100644 --- a/inst.chisel +++ b/inst.chisel @@ -10,7 +10,7 @@ def LUI = Bits("b?????????????????????????0110111") def AUIPC = Bits("b?????????????????????????0010111") def ADDI = Bits("b?????????????????000?????0010011") - def SLLI = Bits("b010000???????????001?????0010011") + def SLLI = Bits("b000000???????????001?????0010011") def SLTI = Bits("b?????????????????010?????0010011") def SLTIU = Bits("b?????????????????011?????0010011") def XORI = Bits("b?????????????????100?????0010011") @@ -37,7 +37,7 @@ def REM = Bits("b0000001??????????110?????0110011") def REMU = Bits("b0000001??????????111?????0110011") def ADDIW = Bits("b?????????????????000?????0011011") - def SLLIW = Bits("b0100000??????????001?????0011011") + def SLLIW = Bits("b0000000??????????001?????0011011") def SRLIW = Bits("b0000000??????????101?????0011011") def SRAIW = Bits("b0100000??????????101?????0011011") def ADDW = Bits("b0000000??????????000?????0111011") diff --git a/instr-table.tex b/instr-table.tex index c6c5ddb..efea3ac 100644 --- a/instr-table.tex +++ b/instr-table.tex @@ -300,7 +300,7 @@ & -\multicolumn{3}{|c|}{010000} & +\multicolumn{3}{|c|}{000000} & \multicolumn{3}{c|}{shamt} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{001} & @@ -604,7 +604,7 @@ & -\multicolumn{4}{|c|}{0100000} & +\multicolumn{4}{|c|}{0000000} & \multicolumn{2}{c|}{shamt} & \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{001} & diff --git a/opcodes b/opcodes index 44490c5..62efae9 100644 --- a/opcodes +++ b/opcodes @@ -22,7 +22,7 @@ lui rd imm20 6..2=0x0D 1..0=3 auipc rd imm20 6..2=0x05 1..0=3 addi rd rs1 imm12 14..12=0 6..2=0x04 1..0=3 -slli rd rs1 31..26=16 shamt 14..12=1 6..2=0x04 1..0=3 +slli rd rs1 31..26=0 shamt 14..12=1 6..2=0x04 1..0=3 slti rd rs1 imm12 14..12=2 6..2=0x04 1..0=3 sltiu rd rs1 imm12 14..12=3 6..2=0x04 1..0=3 xori rd rs1 imm12 14..12=4 6..2=0x04 1..0=3 @@ -52,7 +52,7 @@ rem rd rs1 rs2 31..25=1 14..12=6 6..2=0x0C 1..0=3 remu rd rs1 rs2 31..25=1 14..12=7 6..2=0x0C 1..0=3 addiw rd rs1 imm12 14..12=0 6..2=0x06 1..0=3 -slliw rd rs1 31..25=32 shamtw 14..12=1 6..2=0x06 1..0=3 +slliw rd rs1 31..25=0 shamtw 14..12=1 6..2=0x06 1..0=3 srliw rd rs1 31..25=0 shamtw 14..12=5 6..2=0x06 1..0=3 sraiw rd rs1 31..25=32 shamtw 14..12=5 6..2=0x06 1..0=3 -- cgit v1.2.3 From bc445390566f8831dd8bb34bcc05d80c7401296a Mon Sep 17 00:00:00 2001 From: Yunsup Lee Date: Fri, 22 Nov 2013 14:06:49 -0800 Subject: add missing imm for stores --- instr-table.tex | 12 ++++++------ parse-opcodes | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/instr-table.tex b/instr-table.tex index efea3ac..70d5157 100644 --- a/instr-table.tex +++ b/instr-table.tex @@ -221,7 +221,7 @@ \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{000} & \multicolumn{1}{c|}{imm[4:0]} & -\multicolumn{1}{c|}{0100011} & SB rs1,rs2 \\ +\multicolumn{1}{c|}{0100011} & SB rs1,rs2,imm \\ \cline{2-11} @@ -231,7 +231,7 @@ \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{001} & \multicolumn{1}{c|}{imm[4:0]} & -\multicolumn{1}{c|}{0100011} & SH rs1,rs2 \\ +\multicolumn{1}{c|}{0100011} & SH rs1,rs2,imm \\ \cline{2-11} @@ -241,7 +241,7 @@ \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{010} & \multicolumn{1}{c|}{imm[4:0]} & -\multicolumn{1}{c|}{0100011} & SW rs1,rs2 \\ +\multicolumn{1}{c|}{0100011} & SW rs1,rs2,imm \\ \cline{2-11} @@ -590,7 +590,7 @@ \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{011} & \multicolumn{1}{c|}{imm[4:0]} & -\multicolumn{1}{c|}{0100011} & SD rs1,rs2 \\ +\multicolumn{1}{c|}{0100011} & SD rs1,rs2,imm \\ \cline{2-11} @@ -1196,7 +1196,7 @@ \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{010} & \multicolumn{1}{c|}{imm[4:0]} & -\multicolumn{1}{c|}{0100111} & FSW rs1,rs2 \\ +\multicolumn{1}{c|}{0100111} & FSW rs1,rs2,imm \\ \cline{2-11} @@ -1592,7 +1592,7 @@ \multicolumn{1}{c|}{rs1} & \multicolumn{1}{c|}{011} & \multicolumn{1}{c|}{imm[4:0]} & -\multicolumn{1}{c|}{0100111} & FSD rs1,rs2 \\ +\multicolumn{1}{c|}{0100111} & FSD rs1,rs2,imm \\ \cline{2-11} diff --git a/parse-opcodes b/parse-opcodes index b5f3cf3..3117b8e 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -77,6 +77,7 @@ def str_inst(name,arguments): if 'imm12hi' in arguments and 'imm12lo' in arguments: arguments.remove('imm12hi') arguments.remove('imm12lo') + arguments.append('imm') if 'bimm12hi' in arguments and 'bimm12lo' in arguments: arguments.remove('bimm12hi') arguments.remove('bimm12lo') -- cgit v1.2.3