6.8 KiB
Executable File
6.8 KiB
Executable File
目前进度
完成 cache 上板测试,测试通过 n58,tlb 未添加。
指令完成情况
未更新
最新 op 划分不在遵循下列方式,请参考 chiplab/mycpu 中的划分方式。
op6
0 1 0开头,0 1 1-1 1 1。共 5 项:jirl, b, bl, beq, bne0 1 1开头,0 0 0-0 1 1。共 4 项:blt, bge, bltu, bgeu
op7
0 0 0 1开头,0 1 0,1 1 0。共 2 项:lu12i.w, pcaddu12i
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.w0 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.wu0 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.wu0 0 0 0 0 0 0 0 0 1 0 0开头,0 0-1 0+0 0 1。共 3 项:slli.w, srli.w, srai.w0 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
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0开头。共 3 项:rdcntid.w, rdcntvl.w, rdcntvh.w
测试目前使用 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 |
原子访存指令
| × | 指令 | 格式 | 说明 |
|---|---|---|---|
| LL.W | |||
| SC.W |
栅障指令
| × | 指令 | 格式 | 说明 |
|---|---|---|---|
| DBAR | |||
| IBAR |
其他杂项指令
| √ | 指令 | 格式 | 说明 |
|---|---|---|---|
| √ | SYSCALL | ||
| √ | BREAK | ||
| √ | RDTIMEL.W | ||
| √ | RDTIMEH.W | ||
| √ | RDCNTID |
特权类最开始没写进来,等啥时候勤快了在写进来。
特权类指令进度可以看测试点进行对照参考。
