目前进度
完成 cache 上板测试,测试通过 n58,tlb 未添加。
指令完成情况

未更新
最新 op 划分不在遵循下列方式,请参考 chiplab/mycpu 中的划分方式。
op6
op7
op10
-
0 0 0 0 0 0 1 开头, 0 0 0 - 1 1 1 中间有缺项。 共 6 项:slti, sltui, addi.w andi, ori, xori
-
0 0 1 0 1 0 0 开头,0 0 0 - 1 1 0。共 6 项:ld.b, ld.h, ld.w, st.b, st.h, st.w
-
0 0 1 0 1 0 1 开头,0 0 0 - 0 0 1。共 3 项:ld.bu, ld.hu, preld
op17
0 0 0 0 0 0 0 0 0 0 0 1 开头,0 0 0 0 0 - 1 0 0 0 0 中间有缺项。共 11 项:add.w, sub.w, slt, sltu, nor, and, or, xor, sll.w, srl.w, sra.w
0 0 0 0 0 0 0 0 0 0 0 1 开头,1 1 0 0 0 - 1 1 0 1 0 。共 3 项:mul.w, mulh.w, mulh.wu
0 0 0 0 0 0 0 0 0 0 1 0 开头,0 0 0 0 0 - 0 0 0 1 1。共 4 项:div.w, mod.w, div.wu, mod.wu
0 0 0 0 0 0 0 0 0 1 0 0 开头,0 0 - 1 0 + 0 0 1。共 3 项:slli.w, srli.w, srai.w
0 0 1 1 1 0 0 0 0 1 1 1 开头,0 0 1 0 0 - 0 0 1 0 1 。共 2 项:dbar, ibar
op22
测试目前使用 CDP_EDE_local 进行,已测试通过 func 的 n1~n58
简单整理
算数运算类
| √ |
指令 |
格式 |
说明 |
| √ |
ADD.W |
add.w rd, rj, rk |
|
| √ |
SUB.W |
sub.w rd, rj, rk |
|
| √ |
ADDI.W |
addi.w rd, rj, si12 |
si12 符号扩展 32 位 |
| √ |
LU12I.W |
lu12i.w rd, si20 |
将 si20 最低位连接 12'b0 符号扩展 |
| √ |
SLT |
slt rd, rj, rk |
如果前者小于后者 GR[rd] 置 1 |
| √ |
SLTU |
sltu rd, rj, rk |
|
| √ |
SLTI |
slt i rd, rj, si12 |
|
| √ |
SLTUI |
sltu i rd, rj, si12 |
|
| √ |
PCADDU12I |
pcaddu12i rd, si20 |
最低位连接 12'b0 |
| √ |
AND |
and rd, rj, rk |
|
| √ |
OR |
or rd, rj, rk |
|
| √ |
NOR |
nor rd, rj, rk |
|
| √ |
XOR |
xor rd, rj, rk |
|
| √ |
ANDI |
and i rd, rj, ui12 |
ui12 立即数零扩展 |
| √ |
ORI |
ori rd, rj, ui 12 |
|
| √ |
XORI |
xori rd, rj, ui12 |
|
| √ |
NOP |
andi r0, r0, 0 |
|
| √ |
MUL.W |
mul.w rd, rj, rk |
操作数视为有符号数,结果符号扩展 |
| √ |
MULH.W |
mulh.w rd, rj, rk |
操作数视为有符号数,结果的 [63:32] 符号扩展 |
| √ |
MULH.WU |
mulh.wu rd, rj, rk |
操作数视为无符号数 |
| √ |
DIV.W |
div.w rd, rj, rk |
操作数视为有符号数,结果符号扩展 |
| √ |
MOD.W |
mod.w rd, rj, rk |
|
| √ |
DIV.WU |
div.wu rd, rj, rk |
操作数视为无符号数 |
| √ |
MOD,WU |
mod.wu rd, rj, rk |
|
移位运算类
| √ |
指令 |
格式 |
说明 |
| √ |
SLL.W |
sll.w rd, rj, rk |
逻辑左移,结果符号扩展,GR[rk][4:0] |
| √ |
SRL.W |
srl.w r d, rj, rk |
|
| √ |
SRA.W |
sra.w rd, rj, rk |
算数右移,结果符号扩展 |
| √ |
SLLI.W |
slli.w rd, rj, ui5 |
|
| √ |
SRLI.W |
srli.w rd, rj, ui5 |
|
| √ |
SRAI.W |
srai.w rd, rj, ui5 |
|
转移指令
| √ |
指令 |
格式 |
说明 |
| √ |
BEQ |
beq rj, rd, offs16 |
|
| √ |
BNE |
bne rj, rd, offs16 |
|
| √ |
BLT |
blt rj, rd, offs16 |
操作数视为有符号数 |
| √ |
BGE |
bge rj, rd, offs16 |
操作数视为有符号数 |
| √ |
BLTU |
bltu rj, rd, of fs16 |
|
| √ |
BGEU |
bgeu rj, rd, offs16 |
|
| √ |
B |
|
|
| √ |
BL |
|
|
| √ |
JIRL |
|
|
访存指令
| × |
指令 |
格式 |
说明 |
| √ |
LD.B |
|
|
| √ |
LD.H |
|
|
| √ |
LD.W |
|
|
| √ |
LD.BU |
|
|
| √ |
LD.HU |
|
|
| √ |
ST.B |
|
|
| √ |
ST.H |
|
|
| √ |
ST.W |
|
|
|
PRELD |
|
|
原子访存指令
栅障指令
其他杂项指令
| √ |
指令 |
格式 |
说明 |
| √ |
SYSCALL |
|
|
| √ |
BREAK |
|
|
| √ |
RDTIMEL.W |
|
|
| √ |
RDTIMEH.W |
|
|
| √ |
RDCNTID |
|
|
特权类最开始没写进来,等啥时候勤快了在写进来。
特权类指令进度可以看测试点进行对照参考。