feature: add pipe-maps for RISC-V instructions Pipe-maps are JSON files that map opcodes to functional units. The commit also includes the script import-riscv-opcodes.py which can create a new pipe-map, or update an existing one, based on the opcodes from the riscv-opcodes repo (new opcodes are mapped to "UNKNOWN", old opcodes keep their old mapping, or dropped if they no longer exist). Change-Id: I9e28ae1497448bb851f5833b40b59e28156d4738
diff --git a/README.md b/README.md index c8c7457..a1690b6 100644 --- a/README.md +++ b/README.md
@@ -7,8 +7,9 @@ - tbm/gentrace-spike.py - reads a Spike trace and reformat it. We expect to support other functional simulators, each of those will have its own gentrace-*.py file. -- tbm/tbm.py - runs a trace in TBM; the main tool here. +- tbm/import-riscv-opcodes.py - create and update pipe-maps. - tbm/merge-counters.py - merges results from multiple runs of TBM. +- tbm/tbm.py - runs a trace in TBM; the main tool here. ### Python modules: @@ -45,3 +46,4 @@ - config/uarch.schema.json - JSON schema for uArch configuration files. - config/rvv-simple.yaml - a uArch configuration example. +- pipe_maps/riscv/*.json - pipe-maps, mapping RISC-V opcodes to functional units.
diff --git a/pipe_maps/riscv/custom.json b/pipe_maps/riscv/custom.json new file mode 100644 index 0000000..72efa45 --- /dev/null +++ b/pipe_maps/riscv/custom.json
@@ -0,0 +1,27 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "custom0": "UNKNOWN", + "custom0.rs1": "UNKNOWN", + "custom0.rs1.rs2": "UNKNOWN", + "custom0.rd": "UNKNOWN", + "custom0.rd.rs1": "UNKNOWN", + "custom0.rd.rs1.rs2": "UNKNOWN", + "custom1": "UNKNOWN", + "custom1.rs1": "UNKNOWN", + "custom1.rs1.rs2": "UNKNOWN", + "custom1.rd": "UNKNOWN", + "custom1.rd.rs1": "UNKNOWN", + "custom1.rd.rs1.rs2": "UNKNOWN", + "custom2": "UNKNOWN", + "custom2.rs1": "UNKNOWN", + "custom2.rs1.rs2": "UNKNOWN", + "custom2.rd": "UNKNOWN", + "custom2.rd.rs1": "UNKNOWN", + "custom2.rd.rs1.rs2": "UNKNOWN", + "custom3": "vnimp", + "custom3.rs1": "UNKNOWN", + "custom3.rs1.rs2": "vnimp", + "custom3.rd": "UNKNOWN", + "custom3.rd.rs1": "UNKNOWN", + "custom3.rd.rs1.rs2": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/missing.json b/pipe_maps/riscv/missing.json new file mode 100644 index 0000000..95dab3f --- /dev/null +++ b/pipe_maps/riscv/missing.json
@@ -0,0 +1,56 @@ +{ + "sbu": "lsu", + "shu": "lsu", + "csrr": "csr", + "csrw": "csr", + "csrs": "csr", + "csrsi": "csr", + "csrci": "csr", + "csrwi": "csr", + "zext.b": "alu", + "zext.h": "alu", + "flb": "lsu", + "fsb": "lsu", + "fmv": "fpu", + "fcvt": "fpu", + "feq": "fpu", + "flt": "fpu", + "fle": "fpu", + "fadd": "fpu", + "fsub": "fpu", + "fmul": "fpu", + "fmadd": "fpu", + "fmsub": "fpu", + "fnmadd": "fpu", + "fnmsub": "fpu", + "fmax": "fpu", + "fmin": "fpu", + "fdiv": "fspecial", + "fsqrt": "fspecial", + "vsetvxi": "vctrl", + "vmclr.m": "vmask", + "vmmv.m": "vmask", + "vmnot.m": "vmask", + "vmset.m": "vmask", + "li": "alu", + "mv": "alu", + "snez": "alu", + "seqz": "alu", + "slez": "alu", + "sgez": "alu", + "sltz": "alu", + "sgtz": "alu", + "neg": "alu", + "not": "alu", + "bnez": "branch", + "beqz": "branch", + "blez": "branch", + "bgez": "branch", + "bltz": "branch", + "bgtz": "branch", + "bleu": "branch", + "bgtu": "branch", + "j": "branch", + "jr": "branch", + "ret": "branch" +}
diff --git a/pipe_maps/riscv/pseudo.json b/pipe_maps/riscv/pseudo.json new file mode 100644 index 0000000..4fcffc2 --- /dev/null +++ b/pipe_maps/riscv/pseudo.json
@@ -0,0 +1,26 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "slli.rv32": "UNKNOWN", + "srli.rv32": "UNKNOWN", + "srai.rv32": "UNKNOWN", + "frflags": "UNKNOWN", + "fsflags": "UNKNOWN", + "fsflagsi": "UNKNOWN", + "frrm": "UNKNOWN", + "fsrm": "UNKNOWN", + "fsrmi": "UNKNOWN", + "fscsr": "UNKNOWN", + "frcsr": "UNKNOWN", + "rdcycle": "UNKNOWN", + "rdtime": "UNKNOWN", + "rdinstret": "UNKNOWN", + "rdcycleh": "UNKNOWN", + "rdtimeh": "UNKNOWN", + "rdinstreth": "UNKNOWN", + "scall": "UNKNOWN", + "sbreak": "UNKNOWN", + "fmv.x.s": "UNKNOWN", + "fmv.s.x": "UNKNOWN", + "fence.tso": "UNKNOWN", + "pause": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv32a.json b/pipe_maps/riscv/rv32a.json new file mode 100644 index 0000000..4e48df2 --- /dev/null +++ b/pipe_maps/riscv/rv32a.json
@@ -0,0 +1,14 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "amoadd.w": "lsu", + "amoxor.w": "lsu", + "amoor.w": "lsu", + "amoand.w": "lsu", + "amomin.w": "lsu", + "amomax.w": "lsu", + "amominu.w": "lsu", + "amomaxu.w": "lsu", + "amoswap.w": "lsu", + "lr.w": "lsu", + "sc.w": "lsu" +}
diff --git a/pipe_maps/riscv/rv32a.json.good b/pipe_maps/riscv/rv32a.json.good new file mode 100644 index 0000000..600ff6f --- /dev/null +++ b/pipe_maps/riscv/rv32a.json.good
@@ -0,0 +1,14 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "amoadd.w": "lsu", + "amoxor.w": "lsu", + "amoor.w": "lsu", + "amoand.w": "lsu", + "amomin.w": "lsu", + "amomax.w": "lsu", + "amominu.w": "lsu", + "amomaxu.w": "lsu", + "amoswap.w": "lsu", + "lr.w": "lsu", + "sc.w": "lsu" +} \ No newline at end of file
diff --git a/pipe_maps/riscv/rv32b.json b/pipe_maps/riscv/rv32b.json new file mode 100644 index 0000000..bc6aea2 --- /dev/null +++ b/pipe_maps/riscv/rv32b.json
@@ -0,0 +1,64 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "andn": "UNKNOWN", + "orn": "UNKNOWN", + "xnor": "UNKNOWN", + "slo": "UNKNOWN", + "sro": "UNKNOWN", + "rol": "UNKNOWN", + "ror": "UNKNOWN", + "bclr": "UNKNOWN", + "bset": "UNKNOWN", + "binv": "UNKNOWN", + "bext": "UNKNOWN", + "gorc": "UNKNOWN", + "grev": "UNKNOWN", + "sloi": "UNKNOWN", + "sroi": "UNKNOWN", + "rori": "UNKNOWN", + "bclri": "UNKNOWN", + "bseti": "UNKNOWN", + "binvi": "UNKNOWN", + "bexti": "UNKNOWN", + "gorci": "UNKNOWN", + "grevi": "UNKNOWN", + "cmix": "UNKNOWN", + "cmov": "UNKNOWN", + "fsl": "UNKNOWN", + "fsr": "UNKNOWN", + "fsri": "UNKNOWN", + "clz": "UNKNOWN", + "ctz": "UNKNOWN", + "cpop": "UNKNOWN", + "sext.b": "UNKNOWN", + "sext.h": "UNKNOWN", + "crc32.b": "UNKNOWN", + "crc32.h": "UNKNOWN", + "crc32.w": "UNKNOWN", + "crc32c.b": "UNKNOWN", + "crc32c.h": "UNKNOWN", + "crc32c.w": "UNKNOWN", + "sh1add": "UNKNOWN", + "sh2add": "UNKNOWN", + "sh3add": "UNKNOWN", + "clmul": "UNKNOWN", + "clmulr": "UNKNOWN", + "clmulh": "UNKNOWN", + "min": "UNKNOWN", + "minu": "UNKNOWN", + "max": "UNKNOWN", + "maxu": "UNKNOWN", + "shfl": "UNKNOWN", + "unshfl": "UNKNOWN", + "bcompress": "UNKNOWN", + "bdecompress": "UNKNOWN", + "pack": "UNKNOWN", + "packu": "UNKNOWN", + "packh": "UNKNOWN", + "bfp": "UNKNOWN", + "shfli": "UNKNOWN", + "unshfli": "UNKNOWN", + "xperm4": "UNKNOWN", + "xperm8": "UNKNOWN", + "xperm16": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv32c.json b/pipe_maps/riscv/rv32c.json new file mode 100644 index 0000000..fd3fcec --- /dev/null +++ b/pipe_maps/riscv/rv32c.json
@@ -0,0 +1,6 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "c.srli.rv32": "UNKNOWN", + "c.srai.rv32": "UNKNOWN", + "c.slli.rv32": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv32d-zfh.json b/pipe_maps/riscv/rv32d-zfh.json new file mode 100644 index 0000000..c3a68f7 --- /dev/null +++ b/pipe_maps/riscv/rv32d-zfh.json
@@ -0,0 +1,5 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fcvt.h.d": "UNKNOWN", + "fcvt.d.h": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv32d.json b/pipe_maps/riscv/rv32d.json new file mode 100644 index 0000000..4efde0b --- /dev/null +++ b/pipe_maps/riscv/rv32d.json
@@ -0,0 +1,29 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fadd.d": "fpu", + "fsub.d": "fpu", + "fmul.d": "fpu", + "fdiv.d": "fpu", + "fsgnj.d": "fpu", + "fsgnjn.d": "fpu", + "fsgnjx.d": "fpu", + "fmin.d": "fpu", + "fmax.d": "fpu", + "fcvt.s.d": "fpu", + "fcvt.d.s": "fpu", + "fsqrt.d": "fpu", + "fle.d": "fpu", + "flt.d": "fpu", + "feq.d": "fpu", + "fcvt.w.d": "fpu", + "fcvt.wu.d": "fpu", + "fclass.d": "fpu", + "fcvt.d.w": "fpu", + "fcvt.d.wu": "fpu", + "fld": "lsu", + "fsd": "lsu", + "fmadd.d": "fpu", + "fmsub.d": "fpu", + "fnmsub.d": "fpu", + "fnmadd.d": "fpu" +}
diff --git a/pipe_maps/riscv/rv32f.json b/pipe_maps/riscv/rv32f.json new file mode 100644 index 0000000..352a9e3 --- /dev/null +++ b/pipe_maps/riscv/rv32f.json
@@ -0,0 +1,29 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fadd.s": "fpu", + "fsub.s": "fpu", + "fmul.s": "fpu", + "fdiv.s": "fpu", + "fsgnj.s": "fpu", + "fsgnjn.s": "fpu", + "fsgnjx.s": "fpu", + "fmin.s": "fpu", + "fmax.s": "fpu", + "fsqrt.s": "fpu", + "fle.s": "fpu", + "flt.s": "fpu", + "feq.s": "fpu", + "fcvt.w.s": "fpu", + "fcvt.wu.s": "fpu", + "fmv.x.w": "fpu", + "fclass.s": "fpu", + "fcvt.s.w": "fpu", + "fcvt.s.wu": "fpu", + "fmv.w.x": "fpu", + "flw": "lsu", + "fsw": "lsu", + "fmadd.s": "fpu", + "fmsub.s": "fpu", + "fnmsub.s": "fpu", + "fnmadd.s": "fpu" +}
diff --git a/pipe_maps/riscv/rv32h.json b/pipe_maps/riscv/rv32h.json new file mode 100644 index 0000000..3f2a4ad --- /dev/null +++ b/pipe_maps/riscv/rv32h.json
@@ -0,0 +1,15 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "hfence.vvma": "UNKNOWN", + "hfence.gvma": "UNKNOWN", + "hlv.b": "lsu", + "hlv.bu": "lsu", + "hlv.h": "lsu", + "hlv.hu": "lsu", + "hlvx.hu": "lsu", + "hlv.w": "lsu", + "hlvx.wu": "lsu", + "hsv.b": "lsu", + "hsv.h": "lsu", + "hsv.w": "lsu" +}
diff --git a/pipe_maps/riscv/rv32i.json b/pipe_maps/riscv/rv32i.json new file mode 100644 index 0000000..2d93721 --- /dev/null +++ b/pipe_maps/riscv/rv32i.json
@@ -0,0 +1,39 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "beq": "branch", + "bne": "branch", + "blt": "branch", + "bge": "branch", + "bltu": "branch", + "bgeu": "branch", + "jalr": "branch", + "jal": "branch", + "lui": "alu", + "auipc": "alu", + "addi": "alu", + "slti": "alu", + "sltiu": "alu", + "xori": "alu", + "ori": "alu", + "andi": "alu", + "add": "alu", + "sub": "alu", + "sll": "alu", + "slt": "alu", + "sltu": "alu", + "xor": "alu", + "srl": "alu", + "sra": "alu", + "or": "alu", + "and": "alu", + "lb": "lsu", + "lh": "lsu", + "lw": "lsu", + "lbu": "lsu", + "lhu": "lsu", + "sb": "lsu", + "sh": "lsu", + "sw": "lsu", + "fence": "UNKNOWN", + "fence.i": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv32k.json b/pipe_maps/riscv/rv32k.json new file mode 100644 index 0000000..eb88ebc --- /dev/null +++ b/pipe_maps/riscv/rv32k.json
@@ -0,0 +1,13 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "aes32esmi": "UNKNOWN", + "aes32esi": "UNKNOWN", + "aes32dsmi": "UNKNOWN", + "aes32dsi": "UNKNOWN", + "sha512sum0r": "UNKNOWN", + "sha512sum1r": "UNKNOWN", + "sha512sig0l": "UNKNOWN", + "sha512sig0h": "UNKNOWN", + "sha512sig1l": "UNKNOWN", + "sha512sig1h": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv32m.json b/pipe_maps/riscv/rv32m.json new file mode 100644 index 0000000..8f08be3 --- /dev/null +++ b/pipe_maps/riscv/rv32m.json
@@ -0,0 +1,11 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "mul": "mul", + "mulh": "mul", + "mulhsu": "mul", + "mulhu": "mul", + "div": "div", + "divu": "div", + "rem": "div", + "remu": "div" +}
diff --git a/pipe_maps/riscv/rv32q-zfh.json b/pipe_maps/riscv/rv32q-zfh.json new file mode 100644 index 0000000..f325e77 --- /dev/null +++ b/pipe_maps/riscv/rv32q-zfh.json
@@ -0,0 +1,5 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fcvt.h.q": "UNKNOWN", + "fcvt.q.h": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv32q.json b/pipe_maps/riscv/rv32q.json new file mode 100644 index 0000000..c5f0d5a --- /dev/null +++ b/pipe_maps/riscv/rv32q.json
@@ -0,0 +1,31 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fadd.q": "fpu", + "fsub.q": "fpu", + "fmul.q": "fpu", + "fdiv.q": "fpu", + "fsgnj.q": "fpu", + "fsgnjn.q": "fpu", + "fsgnjx.q": "fpu", + "fmin.q": "fpu", + "fmax.q": "fpu", + "fcvt.s.q": "fpu", + "fcvt.q.s": "fpu", + "fcvt.d.q": "fpu", + "fcvt.q.d": "fpu", + "fsqrt.q": "fpu", + "fle.q": "fpu", + "flt.q": "fpu", + "feq.q": "fpu", + "fcvt.w.q": "fpu", + "fcvt.wu.q": "fpu", + "fclass.q": "fpu", + "fcvt.q.w": "fpu", + "fcvt.q.wu": "fpu", + "flq": "lsu", + "fsq": "lsu", + "fmadd.q": "fpu", + "fmsub.q": "fpu", + "fnmsub.q": "fpu", + "fnmadd.q": "fpu" +}
diff --git a/pipe_maps/riscv/rv32zfh.json b/pipe_maps/riscv/rv32zfh.json new file mode 100644 index 0000000..83a1550 --- /dev/null +++ b/pipe_maps/riscv/rv32zfh.json
@@ -0,0 +1,31 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fadd.h": "fpu", + "fsub.h": "fpu", + "fmul.h": "fpu", + "fdiv.h": "fpu", + "fsgnj.h": "fpu", + "fsgnjn.h": "fpu", + "fsgnjx.h": "fpu", + "fmin.h": "fpu", + "fmax.h": "fpu", + "fcvt.h.s": "fpu", + "fcvt.s.h": "fpu", + "fsqrt.h": "fpu", + "fle.h": "fpu", + "flt.h": "fpu", + "feq.h": "fpu", + "fcvt.w.h": "fpu", + "fcvt.wu.h": "fpu", + "fmv.x.h": "fpu", + "fclass.h": "fpu", + "fcvt.h.w": "fpu", + "fcvt.h.wu": "fpu", + "fmv.h.x": "fpu", + "flh": "lsu", + "fsh": "lsu", + "fmadd.h": "fpu", + "fmsub.h": "fpu", + "fnmsub.h": "fpu", + "fnmadd.h": "fpu" +}
diff --git a/pipe_maps/riscv/rv64a.json b/pipe_maps/riscv/rv64a.json new file mode 100644 index 0000000..c76b753 --- /dev/null +++ b/pipe_maps/riscv/rv64a.json
@@ -0,0 +1,14 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "amoadd.d": "lsu", + "amoxor.d": "lsu", + "amoor.d": "lsu", + "amoand.d": "lsu", + "amomin.d": "lsu", + "amomax.d": "lsu", + "amominu.d": "lsu", + "amomaxu.d": "lsu", + "amoswap.d": "lsu", + "lr.d": "lsu", + "sc.d": "lsu" +}
diff --git a/pipe_maps/riscv/rv64b.json b/pipe_maps/riscv/rv64b.json new file mode 100644 index 0000000..d782f9b --- /dev/null +++ b/pipe_maps/riscv/rv64b.json
@@ -0,0 +1,45 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "bmatflip": "UNKNOWN", + "crc32.d": "UNKNOWN", + "crc32c.d": "UNKNOWN", + "bmator": "UNKNOWN", + "bmatxor": "UNKNOWN", + "slli.uw": "UNKNOWN", + "add.uw": "UNKNOWN", + "slow": "UNKNOWN", + "srow": "UNKNOWN", + "rolw": "UNKNOWN", + "rorw": "UNKNOWN", + "sbclrw": "UNKNOWN", + "sbsetw": "UNKNOWN", + "sbinvw": "UNKNOWN", + "sbextw": "UNKNOWN", + "gorcw": "UNKNOWN", + "grevw": "UNKNOWN", + "sloiw": "UNKNOWN", + "sroiw": "UNKNOWN", + "roriw": "UNKNOWN", + "sbclriw": "UNKNOWN", + "sbsetiw": "UNKNOWN", + "sbinviw": "UNKNOWN", + "gorciw": "UNKNOWN", + "greviw": "UNKNOWN", + "fslw": "UNKNOWN", + "fsrw": "UNKNOWN", + "fsriw": "UNKNOWN", + "clzw": "UNKNOWN", + "ctzw": "UNKNOWN", + "cpopw": "UNKNOWN", + "sh1add.uw": "UNKNOWN", + "sh2add.uw": "UNKNOWN", + "sh3add.uw": "UNKNOWN", + "shflw": "UNKNOWN", + "unshflw": "UNKNOWN", + "bcompressw": "UNKNOWN", + "bdecompressw": "UNKNOWN", + "packw": "UNKNOWN", + "packuw": "UNKNOWN", + "bfpw": "UNKNOWN", + "xperm32": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv64c.json b/pipe_maps/riscv/rv64c.json new file mode 100644 index 0000000..1974cca --- /dev/null +++ b/pipe_maps/riscv/rv64c.json
@@ -0,0 +1,10 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "c.ld": "UNKNOWN", + "c.sd": "UNKNOWN", + "c.subw": "UNKNOWN", + "c.addw": "UNKNOWN", + "c.addiw": "UNKNOWN", + "c.ldsp": "UNKNOWN", + "c.sdsp": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv64d.json b/pipe_maps/riscv/rv64d.json new file mode 100644 index 0000000..42a7f36 --- /dev/null +++ b/pipe_maps/riscv/rv64d.json
@@ -0,0 +1,9 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fcvt.l.d": "fpu", + "fcvt.lu.d": "fpu", + "fmv.x.d": "fpu", + "fcvt.d.l": "fpu", + "fcvt.d.lu": "fpu", + "fmv.d.x": "fpu" +}
diff --git a/pipe_maps/riscv/rv64f.json b/pipe_maps/riscv/rv64f.json new file mode 100644 index 0000000..443f03c --- /dev/null +++ b/pipe_maps/riscv/rv64f.json
@@ -0,0 +1,7 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fcvt.l.s": "fpu", + "fcvt.lu.s": "fpu", + "fcvt.s.l": "fpu", + "fcvt.s.lu": "fpu" +}
diff --git a/pipe_maps/riscv/rv64h.json b/pipe_maps/riscv/rv64h.json new file mode 100644 index 0000000..52d47c9 --- /dev/null +++ b/pipe_maps/riscv/rv64h.json
@@ -0,0 +1,6 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "hlv.wu": "lsu", + "hlv.d": "lsu", + "hsv.d": "lsu" +}
diff --git a/pipe_maps/riscv/rv64i.json b/pipe_maps/riscv/rv64i.json new file mode 100644 index 0000000..37a3771 --- /dev/null +++ b/pipe_maps/riscv/rv64i.json
@@ -0,0 +1,18 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "addiw": "alu", + "slliw": "alu", + "srliw": "alu", + "sraiw": "alu", + "addw": "alu", + "subw": "alu", + "sllw": "alu", + "srlw": "alu", + "sraw": "alu", + "ld": "lsu", + "lwu": "lsu", + "sd": "lsu", + "slli": "alu", + "srli": "alu", + "srai": "alu" +}
diff --git a/pipe_maps/riscv/rv64k.json b/pipe_maps/riscv/rv64k.json new file mode 100644 index 0000000..c8d39f9 --- /dev/null +++ b/pipe_maps/riscv/rv64k.json
@@ -0,0 +1,14 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "aes64ks1i": "UNKNOWN", + "aes64im": "UNKNOWN", + "aes64ks2": "UNKNOWN", + "aes64esm": "UNKNOWN", + "aes64es": "UNKNOWN", + "aes64dsm": "UNKNOWN", + "aes64ds": "UNKNOWN", + "sha512sum0": "UNKNOWN", + "sha512sum1": "UNKNOWN", + "sha512sig0": "UNKNOWN", + "sha512sig1": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rv64m.json b/pipe_maps/riscv/rv64m.json new file mode 100644 index 0000000..90d551d --- /dev/null +++ b/pipe_maps/riscv/rv64m.json
@@ -0,0 +1,8 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "mulw": "mul", + "divw": "div", + "divuw": "div", + "remw": "div", + "remuw": "div" +}
diff --git a/pipe_maps/riscv/rv64q.json b/pipe_maps/riscv/rv64q.json new file mode 100644 index 0000000..2afa606 --- /dev/null +++ b/pipe_maps/riscv/rv64q.json
@@ -0,0 +1,7 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fcvt.l.q": "fpu", + "fcvt.lu.q": "fpu", + "fcvt.q.l": "fpu", + "fcvt.q.lu": "fpu" +}
diff --git a/pipe_maps/riscv/rv64zfh.json b/pipe_maps/riscv/rv64zfh.json new file mode 100644 index 0000000..3af18b5 --- /dev/null +++ b/pipe_maps/riscv/rv64zfh.json
@@ -0,0 +1,7 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "fcvt.l.h": "UNKNOWN", + "fcvt.lu.h": "UNKNOWN", + "fcvt.h.l": "UNKNOWN", + "fcvt.h.lu": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rvc.json b/pipe_maps/riscv/rvc.json new file mode 100644 index 0000000..5774838 --- /dev/null +++ b/pipe_maps/riscv/rvc.json
@@ -0,0 +1,38 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "c.nop": "UNKNOWN", + "c.addi16sp": "UNKNOWN", + "c.jr": "UNKNOWN", + "c.jalr": "UNKNOWN", + "c.ebreak": "UNKNOWN", + "c.addi4spn": "UNKNOWN", + "c.fld": "UNKNOWN", + "c.lw": "UNKNOWN", + "c.flw": "UNKNOWN", + "c.fsd": "UNKNOWN", + "c.sw": "UNKNOWN", + "c.fsw": "UNKNOWN", + "c.addi": "UNKNOWN", + "c.jal": "UNKNOWN", + "c.li": "UNKNOWN", + "c.lui": "UNKNOWN", + "c.srli": "UNKNOWN", + "c.srai": "UNKNOWN", + "c.andi": "UNKNOWN", + "c.sub": "UNKNOWN", + "c.xor": "UNKNOWN", + "c.or": "UNKNOWN", + "c.and": "UNKNOWN", + "c.j": "UNKNOWN", + "c.beqz": "UNKNOWN", + "c.bnez": "UNKNOWN", + "c.slli": "UNKNOWN", + "c.fldsp": "UNKNOWN", + "c.lwsp": "UNKNOWN", + "c.flwsp": "UNKNOWN", + "c.mv": "UNKNOWN", + "c.add": "UNKNOWN", + "c.fsdsp": "UNKNOWN", + "c.swsp": "UNKNOWN", + "c.fswsp": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rvk.json b/pipe_maps/riscv/rvk.json new file mode 100644 index 0000000..0d3b6ee --- /dev/null +++ b/pipe_maps/riscv/rvk.json
@@ -0,0 +1,11 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "sm4ed": "UNKNOWN", + "sm4ks": "UNKNOWN", + "sm3p0": "UNKNOWN", + "sm3p1": "UNKNOWN", + "sha256sum0": "UNKNOWN", + "sha256sum1": "UNKNOWN", + "sha256sig0": "UNKNOWN", + "sha256sig1": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rvp.json b/pipe_maps/riscv/rvp.json new file mode 100644 index 0000000..575f5ea --- /dev/null +++ b/pipe_maps/riscv/rvp.json
@@ -0,0 +1,329 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "add8": "UNKNOWN", + "add16": "UNKNOWN", + "add64": "UNKNOWN", + "ave": "UNKNOWN", + "bitrev": "UNKNOWN", + "bitrevi": "UNKNOWN", + "bpick": "UNKNOWN", + "clrs8": "UNKNOWN", + "clrs16": "UNKNOWN", + "clrs32": "UNKNOWN", + "clo8": "UNKNOWN", + "clo16": "UNKNOWN", + "clo32": "UNKNOWN", + "clz8": "UNKNOWN", + "clz16": "UNKNOWN", + "clz32": "UNKNOWN", + "cmpeq8": "UNKNOWN", + "cmpeq16": "UNKNOWN", + "cras16": "UNKNOWN", + "crsa16": "UNKNOWN", + "insb": "UNKNOWN", + "kabs8": "UNKNOWN", + "kabs16": "UNKNOWN", + "kabsw": "UNKNOWN", + "kadd8": "UNKNOWN", + "kadd16": "UNKNOWN", + "kadd64": "UNKNOWN", + "kaddh": "UNKNOWN", + "kaddw": "UNKNOWN", + "kcras16": "UNKNOWN", + "kcrsa16": "UNKNOWN", + "kdmbb": "UNKNOWN", + "kdmbt": "UNKNOWN", + "kdmtt": "UNKNOWN", + "kdmabb": "UNKNOWN", + "kdmabt": "UNKNOWN", + "kdmatt": "UNKNOWN", + "khm8": "UNKNOWN", + "khmx8": "UNKNOWN", + "khm16": "UNKNOWN", + "khmx16": "UNKNOWN", + "khmbb": "UNKNOWN", + "khmbt": "UNKNOWN", + "khmtt": "UNKNOWN", + "kmabb": "UNKNOWN", + "kmabt": "UNKNOWN", + "kmatt": "UNKNOWN", + "kmada": "UNKNOWN", + "kmaxda": "UNKNOWN", + "kmads": "UNKNOWN", + "kmadrs": "UNKNOWN", + "kmaxds": "UNKNOWN", + "kmar64": "UNKNOWN", + "kmda": "UNKNOWN", + "kmxda": "UNKNOWN", + "kmmac": "UNKNOWN", + "kmmac.u": "UNKNOWN", + "kmmawb": "UNKNOWN", + "kmmawb.u": "UNKNOWN", + "kmmawb2": "UNKNOWN", + "kmmawb2.u": "UNKNOWN", + "kmmawt": "UNKNOWN", + "kmmawt.u": "UNKNOWN", + "kmmawt2": "UNKNOWN", + "kmmawt2.u": "UNKNOWN", + "kmmsb": "UNKNOWN", + "kmmsb.u": "UNKNOWN", + "kmmwb2": "UNKNOWN", + "kmmwb2.u": "UNKNOWN", + "kmmwt2": "UNKNOWN", + "kmmwt2.u": "UNKNOWN", + "kmsda": "UNKNOWN", + "kmsxda": "UNKNOWN", + "kmsr64": "UNKNOWN", + "ksllw": "UNKNOWN", + "kslliw": "UNKNOWN", + "ksll8": "UNKNOWN", + "kslli8": "UNKNOWN", + "ksll16": "UNKNOWN", + "kslli16": "UNKNOWN", + "kslra8": "UNKNOWN", + "kslra8.u": "UNKNOWN", + "kslra16": "UNKNOWN", + "kslra16.u": "UNKNOWN", + "kslraw": "UNKNOWN", + "kslraw.u": "UNKNOWN", + "kstas16": "UNKNOWN", + "kstsa16": "UNKNOWN", + "ksub8": "UNKNOWN", + "ksub16": "UNKNOWN", + "ksub64": "UNKNOWN", + "ksubh": "UNKNOWN", + "ksubw": "UNKNOWN", + "kwmmul": "UNKNOWN", + "kwmmul.u": "UNKNOWN", + "maddr32": "UNKNOWN", + "maxw": "UNKNOWN", + "minw": "UNKNOWN", + "msubr32": "UNKNOWN", + "mulr64": "UNKNOWN", + "mulsr64": "UNKNOWN", + "pbsad": "UNKNOWN", + "pbsada": "UNKNOWN", + "pkbb16": "UNKNOWN", + "pkbt16": "UNKNOWN", + "pktt16": "UNKNOWN", + "pktb16": "UNKNOWN", + "radd8": "UNKNOWN", + "radd16": "UNKNOWN", + "radd64": "UNKNOWN", + "raddw": "UNKNOWN", + "rcras16": "UNKNOWN", + "rcrsa16": "UNKNOWN", + "rstas16": "UNKNOWN", + "rstsa16": "UNKNOWN", + "rsub8": "UNKNOWN", + "rsub16": "UNKNOWN", + "rsub64": "UNKNOWN", + "rsubw": "UNKNOWN", + "sclip8": "UNKNOWN", + "sclip16": "UNKNOWN", + "sclip32": "UNKNOWN", + "scmple8": "UNKNOWN", + "scmple16": "UNKNOWN", + "scmplt8": "UNKNOWN", + "scmplt16": "UNKNOWN", + "sll8": "UNKNOWN", + "slli8": "UNKNOWN", + "sll16": "UNKNOWN", + "slli16": "UNKNOWN", + "smal": "UNKNOWN", + "smalbb": "UNKNOWN", + "smalbt": "UNKNOWN", + "smaltt": "UNKNOWN", + "smalda": "UNKNOWN", + "smalxda": "UNKNOWN", + "smalds": "UNKNOWN", + "smaldrs": "UNKNOWN", + "smalxds": "UNKNOWN", + "smar64": "UNKNOWN", + "smaqa": "UNKNOWN", + "smaqa.su": "UNKNOWN", + "smax8": "UNKNOWN", + "smax16": "UNKNOWN", + "smbb16": "UNKNOWN", + "smbt16": "UNKNOWN", + "smtt16": "UNKNOWN", + "smds": "UNKNOWN", + "smdrs": "UNKNOWN", + "smxds": "UNKNOWN", + "smin8": "UNKNOWN", + "smin16": "UNKNOWN", + "smmul": "UNKNOWN", + "smmul.u": "UNKNOWN", + "smmwb": "UNKNOWN", + "smmwb.u": "UNKNOWN", + "smmwt": "UNKNOWN", + "smmwt.u": "UNKNOWN", + "smslda": "UNKNOWN", + "smslxda": "UNKNOWN", + "smsr64": "UNKNOWN", + "smul8": "UNKNOWN", + "smulx8": "UNKNOWN", + "smul16": "UNKNOWN", + "smulx16": "UNKNOWN", + "sra.u": "UNKNOWN", + "srai.u": "UNKNOWN", + "sra8": "UNKNOWN", + "sra8.u": "UNKNOWN", + "srai8": "UNKNOWN", + "srai8.u": "UNKNOWN", + "sra16": "UNKNOWN", + "sra16.u": "UNKNOWN", + "srai16": "UNKNOWN", + "srai16.u": "UNKNOWN", + "srl8": "UNKNOWN", + "srl8.u": "UNKNOWN", + "srli8": "UNKNOWN", + "srli8.u": "UNKNOWN", + "srl16": "UNKNOWN", + "srl16.u": "UNKNOWN", + "srli16": "UNKNOWN", + "srli16.u": "UNKNOWN", + "stas16": "UNKNOWN", + "stsa16": "UNKNOWN", + "sub8": "UNKNOWN", + "sub16": "UNKNOWN", + "sub64": "UNKNOWN", + "sunpkd810": "UNKNOWN", + "sunpkd820": "UNKNOWN", + "sunpkd830": "UNKNOWN", + "sunpkd831": "UNKNOWN", + "sunpkd832": "UNKNOWN", + "swap8": "UNKNOWN", + "uclip8": "UNKNOWN", + "uclip16": "UNKNOWN", + "uclip32": "UNKNOWN", + "ucmple8": "UNKNOWN", + "ucmple16": "UNKNOWN", + "ucmplt8": "UNKNOWN", + "ucmplt16": "UNKNOWN", + "ukadd8": "UNKNOWN", + "ukadd16": "UNKNOWN", + "ukadd64": "UNKNOWN", + "ukaddh": "UNKNOWN", + "ukaddw": "UNKNOWN", + "ukcras16": "UNKNOWN", + "ukcrsa16": "UNKNOWN", + "ukmar64": "UNKNOWN", + "ukmsr64": "UNKNOWN", + "ukstas16": "UNKNOWN", + "ukstsa16": "UNKNOWN", + "uksub8": "UNKNOWN", + "uksub16": "UNKNOWN", + "uksub64": "UNKNOWN", + "uksubh": "UNKNOWN", + "uksubw": "UNKNOWN", + "umar64": "UNKNOWN", + "umaqa": "UNKNOWN", + "umax8": "UNKNOWN", + "umax16": "UNKNOWN", + "umin8": "UNKNOWN", + "umin16": "UNKNOWN", + "umsr64": "UNKNOWN", + "umul8": "UNKNOWN", + "umulx8": "UNKNOWN", + "umul16": "UNKNOWN", + "umulx16": "UNKNOWN", + "uradd8": "UNKNOWN", + "uradd16": "UNKNOWN", + "uradd64": "UNKNOWN", + "uraddw": "UNKNOWN", + "urcras16": "UNKNOWN", + "urcrsa16": "UNKNOWN", + "urstas16": "UNKNOWN", + "urstsa16": "UNKNOWN", + "ursub8": "UNKNOWN", + "ursub16": "UNKNOWN", + "ursub64": "UNKNOWN", + "ursubw": "UNKNOWN", + "wexti": "UNKNOWN", + "wext": "UNKNOWN", + "zunpkd810": "UNKNOWN", + "zunpkd820": "UNKNOWN", + "zunpkd830": "UNKNOWN", + "zunpkd831": "UNKNOWN", + "zunpkd832": "UNKNOWN", + "add32": "UNKNOWN", + "cras32": "UNKNOWN", + "crsa32": "UNKNOWN", + "kabs32": "UNKNOWN", + "kadd32": "UNKNOWN", + "kcras32": "UNKNOWN", + "kcrsa32": "UNKNOWN", + "kdmbb16": "UNKNOWN", + "kdmbt16": "UNKNOWN", + "kdmtt16": "UNKNOWN", + "kdmabb16": "UNKNOWN", + "kdmabt16": "UNKNOWN", + "kdmatt16": "UNKNOWN", + "khmbb16": "UNKNOWN", + "khmbt16": "UNKNOWN", + "khmtt16": "UNKNOWN", + "kmabb32": "UNKNOWN", + "kmabt32": "UNKNOWN", + "kmatt32": "UNKNOWN", + "kmaxda32": "UNKNOWN", + "kmda32": "UNKNOWN", + "kmxda32": "UNKNOWN", + "kmads32": "UNKNOWN", + "kmadrs32": "UNKNOWN", + "kmaxds32": "UNKNOWN", + "kmsda32": "UNKNOWN", + "kmsxda32": "UNKNOWN", + "ksll32": "UNKNOWN", + "kslli32": "UNKNOWN", + "kslra32": "UNKNOWN", + "kslra32.u": "UNKNOWN", + "kstas32": "UNKNOWN", + "kstsa32": "UNKNOWN", + "ksub32": "UNKNOWN", + "pkbb32": "UNKNOWN", + "pkbt32": "UNKNOWN", + "pktt32": "UNKNOWN", + "pktb32": "UNKNOWN", + "radd32": "UNKNOWN", + "rcras32": "UNKNOWN", + "rcrsa32": "UNKNOWN", + "rstas32": "UNKNOWN", + "rstsa32": "UNKNOWN", + "rsub32": "UNKNOWN", + "sll32": "UNKNOWN", + "slli32": "UNKNOWN", + "smax32": "UNKNOWN", + "smbt32": "UNKNOWN", + "smtt32": "UNKNOWN", + "smds32": "UNKNOWN", + "smdrs32": "UNKNOWN", + "smxds32": "UNKNOWN", + "smin32": "UNKNOWN", + "sra32": "UNKNOWN", + "sra32.u": "UNKNOWN", + "srai32": "UNKNOWN", + "srai32.u": "UNKNOWN", + "sraiw.u": "UNKNOWN", + "srl32": "UNKNOWN", + "srl32.u": "UNKNOWN", + "srli32": "UNKNOWN", + "srli32.u": "UNKNOWN", + "stas32": "UNKNOWN", + "stsa32": "UNKNOWN", + "sub32": "UNKNOWN", + "ukadd32": "UNKNOWN", + "ukcras32": "UNKNOWN", + "ukcrsa32": "UNKNOWN", + "ukstas32": "UNKNOWN", + "ukstsa32": "UNKNOWN", + "uksub32": "UNKNOWN", + "umax32": "UNKNOWN", + "umin32": "UNKNOWN", + "uradd32": "UNKNOWN", + "urcras32": "UNKNOWN", + "urcrsa32": "UNKNOWN", + "urstas32": "UNKNOWN", + "urstsa32": "UNKNOWN", + "ursub32": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/rvv-pseudo.json b/pipe_maps/riscv/rvv-pseudo.json new file mode 100644 index 0000000..b7c8335 --- /dev/null +++ b/pipe_maps/riscv/rvv-pseudo.json
@@ -0,0 +1,13 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "vmvnfr.v": "UNKNOWN", + "vl1r.v": "UNKNOWN", + "vl2r.v": "UNKNOWN", + "vl4r.v": "UNKNOWN", + "vl8r.v": "UNKNOWN", + "vle1.v": "UNKNOWN", + "vse1.v": "UNKNOWN", + "vfredsum.vs": "UNKNOWN", + "vfwredsum.vs": "UNKNOWN", + "vpopc.m": "vmask" +}
diff --git a/pipe_maps/riscv/rvv.json b/pipe_maps/riscv/rvv.json new file mode 100644 index 0000000..691a79b --- /dev/null +++ b/pipe_maps/riscv/rvv.json
@@ -0,0 +1,450 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "vsetivli": "vctrl", + "vsetvli": "vctrl", + "vsetvl": "vctrl", + "vlm.v": "vlsu", + "vsm.v": "vlsu", + "vle8.v": "vlsu", + "vle16.v": "vlsu", + "vle32.v": "vlsu", + "vle64.v": "vlsu", + "vle128.v": "vlsu", + "vle256.v": "vlsu", + "vle512.v": "vlsu", + "vle1024.v": "vlsu", + "vse8.v": "vlsu", + "vse16.v": "vlsu", + "vse32.v": "vlsu", + "vse64.v": "vlsu", + "vse128.v": "vlsu", + "vse256.v": "vlsu", + "vse512.v": "vlsu", + "vse1024.v": "vlsu", + "vluxei8.v": "vlsu", + "vluxei16.v": "vlsu", + "vluxei32.v": "vlsu", + "vluxei64.v": "vlsu", + "vluxei128.v": "UNKNOWN", + "vluxei256.v": "UNKNOWN", + "vluxei512.v": "UNKNOWN", + "vluxei1024.v": "UNKNOWN", + "vsuxei8.v": "vlsu", + "vsuxei16.v": "vlsu", + "vsuxei32.v": "vlsu", + "vsuxei64.v": "vlsu", + "vsuxei128.v": "UNKNOWN", + "vsuxei256.v": "UNKNOWN", + "vsuxei512.v": "UNKNOWN", + "vsuxei1024.v": "UNKNOWN", + "vlse8.v": "vlsu", + "vlse16.v": "vlsu", + "vlse32.v": "vlsu", + "vlse64.v": "vlsu", + "vlse128.v": "vlsu", + "vlse256.v": "vlsu", + "vlse512.v": "vlsu", + "vlse1024.v": "vlsu", + "vsse8.v": "vlsu", + "vsse16.v": "vlsu", + "vsse32.v": "vlsu", + "vsse64.v": "vlsu", + "vsse128.v": "vlsu", + "vsse256.v": "vlsu", + "vsse512.v": "vlsu", + "vsse1024.v": "vlsu", + "vloxei8.v": "vlsu", + "vloxei16.v": "vlsu", + "vloxei32.v": "vlsu", + "vloxei64.v": "vlsu", + "vloxei128.v": "UNKNOWN", + "vloxei256.v": "UNKNOWN", + "vloxei512.v": "UNKNOWN", + "vloxei1024.v": "UNKNOWN", + "vsoxei8.v": "vlsu", + "vsoxei16.v": "vlsu", + "vsoxei32.v": "vlsu", + "vsoxei64.v": "vlsu", + "vsoxei128.v": "UNKNOWN", + "vsoxei256.v": "UNKNOWN", + "vsoxei512.v": "UNKNOWN", + "vsoxei1024.v": "UNKNOWN", + "vle8ff.v": "vlsu", + "vle16ff.v": "vlsu", + "vle32ff.v": "vlsu", + "vle64ff.v": "vlsu", + "vle128ff.v": "vlsu", + "vle256ff.v": "vlsu", + "vle512ff.v": "vlsu", + "vle1024ff.v": "vlsu", + "vl1re8.v": "vlsu", + "vl1re16.v": "vlsu", + "vl1re32.v": "vlsu", + "vl1re64.v": "vlsu", + "vl2re8.v": "vlsu", + "vl2re16.v": "vlsu", + "vl2re32.v": "vlsu", + "vl2re64.v": "vlsu", + "vl4re8.v": "vlsu", + "vl4re16.v": "vlsu", + "vl4re32.v": "vlsu", + "vl4re64.v": "vlsu", + "vl8re8.v": "vlsu", + "vl8re16.v": "vlsu", + "vl8re32.v": "vlsu", + "vl8re64.v": "vlsu", + "vs1r.v": "vlsu", + "vs2r.v": "vlsu", + "vs4r.v": "vlsu", + "vs8r.v": "vlsu", + "vfadd.vf": "valu", + "vfsub.vf": "valu", + "vfmin.vf": "valu", + "vfmax.vf": "valu", + "vfsgnj.vf": "valu", + "vfsgnjn.vf": "valu", + "vfsgnjx.vf": "valu", + "vfslide1up.vf": "vperm", + "vfslide1down.vf": "vperm", + "vfmv.s.f": "vmv", + "vfmerge.vfm": "vmv", + "vfmv.v.f": "vmv", + "vmfeq.vf": "valu", + "vmfle.vf": "valu", + "vmflt.vf": "valu", + "vmfne.vf": "valu", + "vmfgt.vf": "valu", + "vmfge.vf": "valu", + "vfdiv.vf": "vfspecial", + "vfrdiv.vf": "vfspecial", + "vfmul.vf": "valu", + "vfrsub.vf": "valu", + "vfmadd.vf": "valu", + "vfnmadd.vf": "valu", + "vfmsub.vf": "valu", + "vfnmsub.vf": "valu", + "vfmacc.vf": "valu", + "vfnmacc.vf": "valu", + "vfmsac.vf": "valu", + "vfnmsac.vf": "valu", + "vfwadd.vf": "valu", + "vfwsub.vf": "valu", + "vfwadd.wf": "valu", + "vfwsub.wf": "valu", + "vfwmul.vf": "valu", + "vfwmacc.vf": "valu", + "vfwnmacc.vf": "valu", + "vfwmsac.vf": "valu", + "vfwnmsac.vf": "valu", + "vfadd.vv": "valu", + "vfredusum.vs": "valu", + "vfsub.vv": "valu", + "vfredosum.vs": "valu", + "vfmin.vv": "valu", + "vfredmin.vs": "valu", + "vfmax.vv": "valu", + "vfredmax.vs": "valu", + "vfsgnj.vv": "valu", + "vfsgnjn.vv": "valu", + "vfsgnjx.vv": "valu", + "vfmv.f.s": "vmv", + "vmfeq.vv": "valu", + "vmfle.vv": "valu", + "vmflt.vv": "valu", + "vmfne.vv": "valu", + "vfdiv.vv": "vfspecial", + "vfmul.vv": "valu", + "vfmadd.vv": "valu", + "vfnmadd.vv": "valu", + "vfmsub.vv": "valu", + "vfnmsub.vv": "valu", + "vfmacc.vv": "valu", + "vfnmacc.vv": "valu", + "vfmsac.vv": "valu", + "vfnmsac.vv": "valu", + "vfcvt.xu.f.v": "valu", + "vfcvt.x.f.v": "valu", + "vfcvt.f.xu.v": "valu", + "vfcvt.f.x.v": "valu", + "vfcvt.rtz.xu.f.v": "valu", + "vfcvt.rtz.x.f.v": "valu", + "vfwcvt.xu.f.v": "valu", + "vfwcvt.x.f.v": "valu", + "vfwcvt.f.xu.v": "valu", + "vfwcvt.f.x.v": "valu", + "vfwcvt.f.f.v": "valu", + "vfwcvt.rtz.xu.f.v": "valu", + "vfwcvt.rtz.x.f.v": "valu", + "vfncvt.xu.f.w": "valu", + "vfncvt.x.f.w": "valu", + "vfncvt.f.xu.w": "valu", + "vfncvt.f.x.w": "valu", + "vfncvt.f.f.w": "valu", + "vfncvt.rod.f.f.w": "valu", + "vfncvt.rtz.xu.f.w": "valu", + "vfncvt.rtz.x.f.w": "valu", + "vfsqrt.v": "vfspecial", + "vfrsqrt7.v": "vfspecial", + "vfrec7.v": "UNKNOWN", + "vfclass.v": "valu", + "vfwadd.vv": "valu", + "vfwredusum.vs": "valu", + "vfwsub.vv": "valu", + "vfwredosum.vs": "valu", + "vfwadd.wv": "valu", + "vfwsub.wv": "valu", + "vfwmul.vv": "valu", + "vfwmacc.vv": "valu", + "vfwnmacc.vv": "valu", + "vfwmsac.vv": "valu", + "vfwnmsac.vv": "valu", + "vadd.vx": "valu", + "vsub.vx": "valu", + "vrsub.vx": "valu", + "vminu.vx": "valu", + "vmin.vx": "valu", + "vmaxu.vx": "valu", + "vmax.vx": "valu", + "vand.vx": "valu", + "vor.vx": "valu", + "vxor.vx": "valu", + "vrgather.vx": "vperm", + "vslideup.vx": "vperm", + "vslidedown.vx": "vperm", + "vadc.vxm": "valu", + "vmadc.vxm": "valu", + "vmadc.vx": "valu", + "vsbc.vxm": "valu", + "vmsbc.vxm": "valu", + "vmsbc.vx": "valu", + "vmerge.vxm": "vmv", + "vmv.v.x": "vmv", + "vmseq.vx": "valu", + "vmsne.vx": "valu", + "vmsltu.vx": "valu", + "vmslt.vx": "valu", + "vmsleu.vx": "valu", + "vmsle.vx": "valu", + "vmsgtu.vx": "valu", + "vmsgt.vx": "valu", + "vsaddu.vx": "valu", + "vsadd.vx": "valu", + "vssubu.vx": "valu", + "vssub.vx": "valu", + "vsll.vx": "valu", + "vsmul.vx": "vmac", + "vsrl.vx": "valu", + "vsra.vx": "valu", + "vssrl.vx": "valu", + "vssra.vx": "valu", + "vnsrl.wx": "valu", + "vnsra.wx": "valu", + "vnclipu.wx": "valu", + "vnclip.wx": "valu", + "vadd.vv": "valu", + "vsub.vv": "valu", + "vminu.vv": "valu", + "vmin.vv": "valu", + "vmaxu.vv": "valu", + "vmax.vv": "valu", + "vand.vv": "valu", + "vor.vv": "valu", + "vxor.vv": "valu", + "vrgather.vv": "vperm", + "vrgatherei16.vv": "vperm", + "vadc.vvm": "valu", + "vmadc.vvm": "valu", + "vmadc.vv": "valu", + "vsbc.vvm": "valu", + "vmsbc.vvm": "valu", + "vmsbc.vv": "valu", + "vmerge.vvm": "vmv", + "vmv.v.v": "vmv", + "vmseq.vv": "valu", + "vmsne.vv": "valu", + "vmsltu.vv": "valu", + "vmslt.vv": "valu", + "vmsleu.vv": "valu", + "vmsle.vv": "valu", + "vsaddu.vv": "valu", + "vsadd.vv": "valu", + "vssubu.vv": "valu", + "vssub.vv": "valu", + "vsll.vv": "valu", + "vsmul.vv": "vmac", + "vsrl.vv": "valu", + "vsra.vv": "valu", + "vssrl.vv": "valu", + "vssra.vv": "valu", + "vnsrl.wv": "valu", + "vnsra.wv": "valu", + "vnclipu.wv": "valu", + "vnclip.wv": "valu", + "vwredsumu.vs": "vred", + "vwredsum.vs": "vred", + "vadd.vi": "valu", + "vrsub.vi": "valu", + "vand.vi": "valu", + "vor.vi": "valu", + "vxor.vi": "valu", + "vrgather.vi": "vperm", + "vslideup.vi": "vperm", + "vslidedown.vi": "vperm", + "vadc.vim": "valu", + "vmadc.vim": "valu", + "vmadc.vi": "valu", + "vmerge.vim": "vmv", + "vmv.v.i": "vmv", + "vmseq.vi": "valu", + "vmsne.vi": "valu", + "vmsleu.vi": "valu", + "vmsle.vi": "valu", + "vmsgtu.vi": "valu", + "vmsgt.vi": "valu", + "vsaddu.vi": "valu", + "vsadd.vi": "valu", + "vsll.vi": "valu", + "vmv1r.v": "vmv", + "vmv2r.v": "vmv", + "vmv4r.v": "vmv", + "vmv8r.v": "vmv", + "vsrl.vi": "valu", + "vsra.vi": "valu", + "vssrl.vi": "valu", + "vssra.vi": "valu", + "vnsrl.wi": "valu", + "vnsra.wi": "valu", + "vnclipu.wi": "valu", + "vnclip.wi": "valu", + "vredsum.vs": "vred", + "vredand.vs": "vred", + "vredor.vs": "vred", + "vredxor.vs": "vred", + "vredminu.vs": "vred", + "vredmin.vs": "vred", + "vredmaxu.vs": "vred", + "vredmax.vs": "vred", + "vaaddu.vv": "valu", + "vaadd.vv": "valu", + "vasubu.vv": "valu", + "vasub.vv": "valu", + "vmv.x.s": "vmv", + "vzext.vf8": "valu", + "vsext.vf8": "valu", + "vzext.vf4": "valu", + "vsext.vf4": "valu", + "vzext.vf2": "valu", + "vsext.vf2": "valu", + "vcompress.vm": "vperm", + "vmandnot.mm": "vmsk", + "vmand.mm": "vmsk", + "vmor.mm": "vmsk", + "vmxor.mm": "vmsk", + "vmornot.mm": "vmsk", + "vmnand.mm": "vmsk", + "vmnor.mm": "vmsk", + "vmxnor.mm": "vmsk", + "vmsbf.m": "vmsk", + "vmsof.m": "vmsk", + "vmsif.m": "vmsk", + "viota.m": "vmv", + "vid.v": "vmv", + "vcpop.m": "UNKNOWN", + "vfirst.m": "vmsk", + "vdivu.vv": "vdiv", + "vdiv.vv": "vdiv", + "vremu.vv": "vdiv", + "vrem.vv": "vdiv", + "vmulhu.vv": "vmac", + "vmul.vv": "vmac", + "vmulhsu.vv": "vmac", + "vmulh.vv": "vmac", + "vmadd.vv": "vmac", + "vnmsub.vv": "vmac", + "vmacc.vv": "vmac", + "vnmsac.vv": "vmac", + "vwaddu.vv": "valu", + "vwadd.vv": "valu", + "vwsubu.vv": "valu", + "vwsub.vv": "valu", + "vwaddu.wv": "valu", + "vwadd.wv": "valu", + "vwsubu.wv": "valu", + "vwsub.wv": "valu", + "vwmulu.vv": "vmac", + "vwmulsu.vv": "vmac", + "vwmul.vv": "vmac", + "vwmaccu.vv": "vmac", + "vwmacc.vv": "vmac", + "vwmaccsu.vv": "vmac", + "vaaddu.vx": "valu", + "vaadd.vx": "valu", + "vasubu.vx": "valu", + "vasub.vx": "valu", + "vmv.s.x": "vmv", + "vslide1up.vx": "vperm", + "vslide1down.vx": "vperm", + "vdivu.vx": "vdiv", + "vdiv.vx": "vdiv", + "vremu.vx": "vdiv", + "vrem.vx": "vdiv", + "vmulhu.vx": "vmac", + "vmul.vx": "vmac", + "vmulhsu.vx": "vmac", + "vmulh.vx": "vmac", + "vmadd.vx": "vmac", + "vnmsub.vx": "vmac", + "vmacc.vx": "vmac", + "vnmsac.vx": "vmac", + "vwaddu.vx": "valu", + "vwadd.vx": "valu", + "vwsubu.vx": "valu", + "vwsub.vx": "valu", + "vwaddu.wx": "valu", + "vwadd.wx": "valu", + "vwsubu.wx": "valu", + "vwsub.wx": "valu", + "vwmulu.vx": "vmac", + "vwmulsu.vx": "vmac", + "vwmul.vx": "vmac", + "vwmaccu.vx": "vmac", + "vwmacc.vx": "vmac", + "vwmaccus.vx": "vmac", + "vwmaccsu.vx": "vmac", + "vamoswapei8.v": "UNKNOWN", + "vamoaddei8.v": "UNKNOWN", + "vamoxorei8.v": "UNKNOWN", + "vamoandei8.v": "UNKNOWN", + "vamoorei8.v": "UNKNOWN", + "vamominei8.v": "UNKNOWN", + "vamomaxei8.v": "UNKNOWN", + "vamominuei8.v": "UNKNOWN", + "vamomaxuei8.v": "UNKNOWN", + "vamoswapei16.v": "UNKNOWN", + "vamoaddei16.v": "UNKNOWN", + "vamoxorei16.v": "UNKNOWN", + "vamoandei16.v": "UNKNOWN", + "vamoorei16.v": "UNKNOWN", + "vamominei16.v": "UNKNOWN", + "vamomaxei16.v": "UNKNOWN", + "vamominuei16.v": "UNKNOWN", + "vamomaxuei16.v": "UNKNOWN", + "vamoswapei32.v": "UNKNOWN", + "vamoaddei32.v": "UNKNOWN", + "vamoxorei32.v": "UNKNOWN", + "vamoandei32.v": "UNKNOWN", + "vamoorei32.v": "UNKNOWN", + "vamominei32.v": "UNKNOWN", + "vamomaxei32.v": "UNKNOWN", + "vamominuei32.v": "UNKNOWN", + "vamomaxuei32.v": "UNKNOWN", + "vamoswapei64.v": "UNKNOWN", + "vamoaddei64.v": "UNKNOWN", + "vamoxorei64.v": "UNKNOWN", + "vamoandei64.v": "UNKNOWN", + "vamoorei64.v": "UNKNOWN", + "vamominei64.v": "UNKNOWN", + "vamomaxei64.v": "UNKNOWN", + "vamominuei64.v": "UNKNOWN", + "vamomaxuei64.v": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/springbok.json b/pipe_maps/riscv/springbok.json new file mode 100644 index 0000000..8bc243b --- /dev/null +++ b/pipe_maps/riscv/springbok.json
@@ -0,0 +1,6 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "simprint": "UNKNOWN", + "hostreq": "UNKNOWN", + "finish": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/svinval.json b/pipe_maps/riscv/svinval.json new file mode 100644 index 0000000..045cfdb --- /dev/null +++ b/pipe_maps/riscv/svinval.json
@@ -0,0 +1,8 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "sinval.vma": "UNKNOWN", + "sfence.w.inval": "UNKNOWN", + "sfence.inval.ir": "UNKNOWN", + "hinval.vvma": "UNKNOWN", + "hinval.gvma": "UNKNOWN" +}
diff --git a/pipe_maps/riscv/system.json b/pipe_maps/riscv/system.json new file mode 100644 index 0000000..f98c55c --- /dev/null +++ b/pipe_maps/riscv/system.json
@@ -0,0 +1,16 @@ +{ + "__comment__": "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!", + "ecall": "branch", + "ebreak": "branch", + "sret": "branch", + "mret": "branch", + "dret": "UNKNOWN", + "sfence.vma": "UNKNOWN", + "wfi": "UNKNOWN", + "csrrw": "csr", + "csrrs": "csr", + "csrrc": "csr", + "csrrwi": "csr", + "csrrsi": "csr", + "csrrci": "csr" +}
diff --git a/tbm/import-riscv-opcodes.py b/tbm/import-riscv-opcodes.py new file mode 100755 index 0000000..9284665 --- /dev/null +++ b/tbm/import-riscv-opcodes.py
@@ -0,0 +1,106 @@ +#! /usr/bin/env python3 +"""Generate a pipe-map json file from RISC-V opcodes file. + +Generate a new pipe-map json file, with all the opcodes from OPFILE. OPFILE is +a file from the riscv-opcodes repo. Entries are created in the new map file +only for opcodes from the OPFILE file. If an opcode also has an entry in the +old map file, the pipe for this opcode will be copied to the new map file, +otherwise it will be set to "UNKNOWN". +""" + +import argparse +import json +import logging +import sys +from typing import Sequence + + +import utilities + + +logger = logging.getLogger(__name__) + + +def main(argv: Sequence[str]) -> int: + parser = argparse.ArgumentParser( + description=__doc__, + formatter_class=argparse.ArgumentDefaultsHelpFormatter + ) + + parser.add_argument("-m", "--oldmap", + help="The old pipe-map file", + metavar="JSON") + + parser.add_argument("-n", "--newmap", + required=True, + help="Output pipe-map file", + metavar="JSON") + + # The -v flag is setup so that verbose holds the number of times the flag + # was used. This is the standard way to use -v, even though at the moment + # we have only two levels of verbosity: warning (the default, with no -v), + # and info. + parser.add_argument("-v", "--verbose", + default=0, + action="count", + help="Increase the verbosity level. By default only" + " errors and warnings will show. Use '-v' to also show" + " information messages.") + + parser.add_argument("opcodes_file", + help="Opcode file", + metavar="OPFILE") + + args = parser.parse_args(argv) + + log_level = logging.WARNING + if args.verbose > 0: + log_level = logging.INFO + + utilities.logging_config(log_level) + + if args.oldmap: + with open(args.oldmap, "r", encoding="ascii") as oldmap_io: + old_map = json.load(oldmap_io) + else: + old_map = {} + + new_map = { + "__comment__": + "AUTO-GENERATED FILE, DO NOT ADD NEW KEYS (it's ok to change values)!" + } + + with open(args.opcodes_file, "r", encoding="ascii") as opcodes_io: + for line in opcodes_io: + line = line.partition("#") + tokens = line[0].split() + + if not tokens: + continue + + name = tokens[0] + pseudo = name[0] == "@" + if pseudo: + name = name[1:] + + if name in old_map: + new_map[name] = old_map[name] + else: + logger.info("Adding a new opcode: '%s': 'UNKNOWN'.", name) + new_map[name] = "UNKNOWN" + + with open(args.newmap, "w", encoding="ascii") as newmap_io: + json.dump(new_map, newmap_io, indent=2) + newmap_io.write("\n") + + old_keys = old_map.keys() - new_map.keys() + if old_keys: + logger.warning("Some opcodes from the old map were dropped (%d): %s", + len(old_keys), + ", ".join(old_keys)) + + return 0 + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:]))