udb 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.data/cfgs/example_rv64_with_overlay.yaml +20 -24
- data/.data/cfgs/mc100-32-full-example.yaml +2 -2
- data/.data/cfgs/qc_iu.yaml +7 -3
- data/.data/cfgs/rv32-riscv-tests.yaml +8 -5
- data/.data/cfgs/rv32-vector.yaml +8 -5
- data/.data/cfgs/rv64-riscv-tests.yaml +8 -5
- data/.data/cfgs/rv64-vector.yaml +8 -5
- data/.data/spec/custom/isa/qc_iu/ext/Xqccmi.yaml +107 -36
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmi/qc.cm.ilut.yaml +52 -69
- data/.data/spec/custom/isa/qc_iu/isa/globals.isa +27 -5
- data/.data/spec/schemas/README.adoc +3 -0
- data/.data/spec/schemas/config_schema.json +1 -1
- data/.data/spec/schemas/mmr_schema.json +3 -3
- data/.data/spec/schemas/schema_defs.json +8 -3
- data/.data/spec/std/isa/csr/H/hcounteren.layout +3 -3
- data/.data/spec/std/isa/csr/H/hcounteren.yaml +31 -31
- data/.data/spec/std/isa/csr/H/henvcfg.yaml +25 -0
- data/.data/spec/std/isa/csr/H/htinst.yaml +3 -3
- data/.data/spec/std/isa/csr/H/htval.yaml +3 -3
- data/.data/spec/std/isa/csr/H/mtinst.yaml +1 -1
- data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddrN.layout +6 -4
- data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfgN.layout +15 -18
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +1 -1
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +1 -1
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +1 -1
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +1 -1
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +1 -1
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +29 -29
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +1 -1
- data/.data/spec/std/isa/csr/hstatus.yaml +1 -1
- data/.data/spec/std/isa/csr/jvt.yaml +1 -0
- data/.data/spec/std/isa/csr/mcycle.yaml +6 -6
- data/.data/spec/std/isa/csr/menvcfg.yaml +20 -0
- data/.data/spec/std/isa/csr/minstret.yaml +3 -3
- data/.data/spec/std/isa/csr/minstreth.yaml +1 -1
- data/.data/spec/std/isa/csr/mstatus.yaml +21 -25
- data/.data/spec/std/isa/csr/mtvec.yaml +16 -57
- data/.data/spec/std/isa/csr/senvcfg.yaml +26 -0
- data/.data/spec/std/isa/csr/sie.yaml +30 -4
- data/.data/spec/std/isa/csr/sip.yaml +16 -2
- data/.data/spec/std/isa/csr/stvec.yaml +11 -12
- data/.data/spec/std/isa/csr/vstval.yaml +1 -1
- data/.data/spec/std/isa/csr/vstvec.yaml +14 -15
- data/.data/spec/std/isa/ext/Q.yaml +1 -1
- data/.data/spec/std/isa/ext/Shlcofideleg.yaml +24 -0
- data/.data/spec/std/isa/ext/Shvstvecd.yaml +2 -2
- data/.data/spec/std/isa/ext/Sspm.yaml +5 -0
- data/.data/spec/std/isa/ext/Sstvecd.yaml +2 -2
- data/.data/spec/std/isa/ext/Sstvecv.yaml +2 -2
- data/.data/spec/std/isa/ext/Supm.yaml +17 -0
- data/.data/spec/std/isa/ext/Zcb.yaml +3 -0
- data/.data/spec/std/isa/ext/Zfbfmin.yaml +3 -5
- data/.data/spec/std/isa/ext/Ziccid.yaml +29 -0
- data/.data/spec/std/isa/ext/Zicfilp.yaml +5 -1
- data/.data/spec/std/isa/ext/Zicfiss.yaml +20 -1
- data/.data/spec/std/isa/ext/Zihpm.yaml +3 -0
- data/.data/spec/std/isa/ext/Zilx.yaml +58 -0
- data/.data/spec/std/isa/ext/Zkt.yaml +33 -1
- data/.data/spec/std/isa/ext/Zvabd.yaml +21 -0
- data/.data/spec/std/isa/ext/Zvbc.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvkb.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvkg.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvkned.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvknha.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvknhb.yaml +4 -2
- data/.data/spec/std/isa/ext/Zvksed.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvksh.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvkt.yaml +3 -0
- data/.data/spec/std/isa/inst/B/andn.yaml +10 -12
- data/.data/spec/std/isa/inst/B/clmul.yaml +9 -11
- data/.data/spec/std/isa/inst/B/clmulh.yaml +9 -11
- data/.data/spec/std/isa/inst/B/orn.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rev8.yaml +1 -1
- data/.data/spec/std/isa/inst/B/rol.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rolw.yaml +9 -11
- data/.data/spec/std/isa/inst/B/ror.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rorw.yaml +9 -11
- data/.data/spec/std/isa/inst/B/xnor.yaml +9 -11
- data/.data/spec/std/isa/inst/C/c.add.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.addw.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.and.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.ldsp.yaml +3 -3
- data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.nop.yaml +13 -2
- data/.data/spec/std/isa/inst/C/c.or.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.slli.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.srai.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.srli.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.sub.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.subw.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.xor.yaml +1 -0
- data/.data/spec/std/isa/inst/D/fld.yaml +1 -0
- data/.data/spec/std/isa/inst/D/fsd.yaml +1 -0
- data/.data/spec/std/isa/inst/F/fadd.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/feq.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fle.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fleq.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/flt.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fltq.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/flw.yaml +2 -1
- data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmax.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmin.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsw.yaml +2 -1
- data/.data/spec/std/isa/inst/I/addi.yaml +1 -0
- data/.data/spec/std/isa/inst/I/addiw.yaml +1 -0
- data/.data/spec/std/isa/inst/I/andi.yaml +1 -0
- data/.data/spec/std/isa/inst/I/auipc.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lb.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lbu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/ld.yaml +2 -0
- data/.data/spec/std/isa/inst/I/lh.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lhu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lui.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lw.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lwu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/ori.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sb.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sd.yaml +2 -1
- data/.data/spec/std/isa/inst/I/sh.yaml +1 -0
- data/.data/spec/std/isa/inst/I/slti.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sltiu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sw.yaml +1 -0
- data/.data/spec/std/isa/inst/I/xori.yaml +1 -0
- data/.data/spec/std/isa/inst/Q/fadd.q.yaml +2 -2
- data/.data/spec/std/isa/inst/Q/fclass.q.yaml +5 -5
- data/.data/spec/std/isa/inst/Q/fleq.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Q/fli.q.yaml +1 -1
- data/.data/spec/std/isa/inst/Q/flq.yaml +1 -0
- data/.data/spec/std/isa/inst/Q/fltq.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Q/fmaxm.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Q/fminm.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Q/fmvp.q.x.yaml +1 -1
- data/.data/spec/std/isa/inst/Q/fsq.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vadc.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vadd.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vand.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vle8.v.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vor.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vse8.v.yaml +1 -0
- data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +4 -2
- data/.data/spec/std/isa/inst/Zba/add.uw.yaml +9 -11
- data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +3 -3
- data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkb/zip.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +2 -2
- data/.data/spec/std/isa/inst/Zcb/c.mul.yaml +1 -0
- data/.data/spec/std/isa/inst/Zcb/c.not.yaml +1 -0
- data/.data/spec/std/isa/inst/Zcb/c.zext.b.yaml +2 -7
- data/.data/spec/std/isa/inst/Zcb/c.zext.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcmop/c.mop.1.yaml +2 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.5.yaml +2 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.N.layout +7 -0
- data/.data/spec/std/isa/inst/Zfa/fli.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/fmaxm.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/fminm.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/froundnx.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfh/flh.yaml +5 -2
- data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +3 -1
- data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +3 -1
- data/.data/spec/std/isa/inst/Zfh/fsh.yaml +4 -1
- data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicfiss/c.sspopchk.yaml +30 -0
- data/.data/spec/std/isa/inst/Zicfiss/c.sspush.yaml +29 -0
- data/.data/spec/std/isa/inst/Zicond/czero.eqz.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicond/czero.nez.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +12 -0
- data/.data/spec/std/isa/inst/Zilx/lxd.yaml +38 -0
- data/.data/spec/std/isa/inst/Zilx/lxh.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxhu.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxsb.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsbu.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsd.yaml +38 -0
- data/.data/spec/std/isa/inst/Zilx/lxsh.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxshu.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwb.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwbu.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwd.yaml +39 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwh.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwhu.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuww.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwwu.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsw.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxswu.yaml +39 -0
- data/.data/spec/std/isa/inst/Zilx/lxw.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxwu.yaml +39 -0
- data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +1 -1
- data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +67 -0
- data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +67 -0
- data/.data/spec/std/isa/inst/Zvabd/vabs.v.yaml +61 -0
- data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +72 -0
- data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +72 -0
- data/.data/spec/std/isa/isa/builtin_functions.idl +1 -0
- data/.data/spec/std/isa/isa/fp.idl +42 -18
- data/.data/spec/std/isa/isa/globals.isa +27 -7
- data/.data/spec/std/isa/isa/interrupts.idl +1 -0
- data/.data/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml +70 -6
- data/.data/spec/std/isa/param/ELEN.yaml +27 -5
- data/.data/spec/std/isa/param/HCOUNTENABLE_EN.yaml +13 -0
- data/.data/spec/std/isa/param/HPM_COUNTER_EN.yaml +13 -3
- data/.data/spec/std/isa/param/HPM_EVENTS.yaml +0 -3
- data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +1 -0
- data/.data/spec/std/isa/param/MCOUNTENABLE_EN.yaml +8 -0
- data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +1 -0
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +71 -64
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +71 -64
- data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +11 -22
- data/.data/spec/std/isa/param/NUM_USABLE_PMP_ENTRIES.yaml +35 -0
- data/.data/spec/std/isa/param/PMP_NA4_SUPPORTED.yaml +23 -0
- data/.data/spec/std/isa/param/{STVEC_MODE_VECTORED.yaml → PMP_NAPOT_SUPPORTED.yaml} +9 -9
- data/.data/spec/std/isa/param/{MSTATUS_TVM_IMPLEMENTED.yaml → PMP_TOR_SUPPORTED.yaml} +6 -6
- data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +1 -0
- data/.data/spec/std/isa/param/STVAL_WIDTH.yaml +3 -2
- data/.data/spec/std/isa/param/STVEC_BASE_ALIGNMENT_VECTORED.yaml +100 -0
- data/.data/spec/std/isa/param/STVEC_MODES.yaml +31 -0
- data/.data/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml +1 -1
- data/.data/spec/std/isa/param/SXLEN.yaml +2 -2
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml +1 -1
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml +1 -1
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml +1 -1
- data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml +1 -1
- data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml +1 -1
- data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +1 -0
- data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +1 -0
- data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +1 -0
- data/.data/spec/std/isa/param/UXLEN.yaml +1 -1
- data/.data/spec/std/isa/param/VLEN.yaml +16 -7
- data/.data/spec/std/isa/param/VSTVEC_MODES.yaml +31 -0
- data/.data/spec/std/isa/param/ZAWRS_NTO_IS_NOP.yaml +19 -0
- data/lib/udb/ESPRESSO_VERSION +1 -1
- data/lib/udb/Z3_VERSION +1 -1
- data/lib/udb/config.rb +14 -2
- data/lib/udb/doc_link.rb +3 -4
- data/lib/udb/obj/csr.rb +1 -1
- data/lib/udb/obj/csr_field.rb +1 -1
- data/lib/udb/obj/extension.rb +1 -1
- data/lib/udb/obj/instruction.rb +1 -1
- data/lib/udb/obj/non_isa_specification.rb +22 -100
- data/lib/udb/version.rb +1 -1
- data/lib/udb/version_spec.rb +1 -1
- data/lib/udb/z3.rb +31 -9
- metadata +42 -9
- data/.data/spec/std/isa/param/STVEC_MODE_DIRECT.yaml +0 -21
- data/.data/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml +0 -21
- data/.data/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml +0 -21
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxshu
|
|
9
|
+
long_name: Load scaled indexed halfword unsigned
|
|
10
|
+
description: |
|
|
11
|
+
Load 16 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + (X[xs1] << 1)`, where `xs2` is the base and `xs1` is the index.
|
|
13
|
+
Zero extend the result to XLEN.
|
|
14
|
+
definedBy:
|
|
15
|
+
extension:
|
|
16
|
+
name: Zilx
|
|
17
|
+
assembly: xd, (xs2), xs1
|
|
18
|
+
encoding:
|
|
19
|
+
match: 1101000----------101-----0101111
|
|
20
|
+
variables:
|
|
21
|
+
- name: xs2
|
|
22
|
+
location: 24-20
|
|
23
|
+
- name: xs1
|
|
24
|
+
location: 19-15
|
|
25
|
+
- name: xd
|
|
26
|
+
location: 11-7
|
|
27
|
+
access:
|
|
28
|
+
s: always
|
|
29
|
+
u: always
|
|
30
|
+
vs: always
|
|
31
|
+
vu: always
|
|
32
|
+
operation(): |
|
|
33
|
+
XReg virtual_address = X[xs2] + (X[xs1] `<< 1);
|
|
34
|
+
|
|
35
|
+
X[xd] = read_memory(16, virtual_address, $encoding);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxsuwb
|
|
9
|
+
long_name: Load scaled indexed byte with unsigned word index
|
|
10
|
+
description: |
|
|
11
|
+
Load 8 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + zext32(X[xs1])`, where `xs2` is the base and `xs1` is the index.
|
|
13
|
+
The index is zero-extended from `X[xs1][31:0]` before forming the address.
|
|
14
|
+
Sign extend the loaded byte to 64 bits.
|
|
15
|
+
|
|
16
|
+
This instruction is defined only for RV64.
|
|
17
|
+
definedBy:
|
|
18
|
+
allOf:
|
|
19
|
+
- xlen: 64
|
|
20
|
+
- extension:
|
|
21
|
+
name: Zilx
|
|
22
|
+
assembly: xd, (xs2), xs1
|
|
23
|
+
encoding:
|
|
24
|
+
match: 1111000----------000-----0101111
|
|
25
|
+
variables:
|
|
26
|
+
- name: xs2
|
|
27
|
+
location: 24-20
|
|
28
|
+
- name: xs1
|
|
29
|
+
location: 19-15
|
|
30
|
+
- name: xd
|
|
31
|
+
location: 11-7
|
|
32
|
+
access:
|
|
33
|
+
s: always
|
|
34
|
+
u: always
|
|
35
|
+
vs: always
|
|
36
|
+
vu: always
|
|
37
|
+
operation(): |
|
|
38
|
+
XReg virtual_address = X[xs2] + X[xs1][31:0];
|
|
39
|
+
|
|
40
|
+
X[xd] = sext(read_memory(8, virtual_address, $encoding), 8);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxsuwbu
|
|
9
|
+
long_name: Load scaled indexed byte unsigned with unsigned word index
|
|
10
|
+
description: |
|
|
11
|
+
Load 8 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + zext32(X[xs1])`, where `xs2` is the base and `xs1` is the index.
|
|
13
|
+
The index is zero-extended from `X[xs1][31:0]` before forming the address.
|
|
14
|
+
Zero extend the loaded byte to 64 bits.
|
|
15
|
+
|
|
16
|
+
This instruction is defined only for RV64.
|
|
17
|
+
definedBy:
|
|
18
|
+
allOf:
|
|
19
|
+
- xlen: 64
|
|
20
|
+
- extension:
|
|
21
|
+
name: Zilx
|
|
22
|
+
assembly: xd, (xs2), xs1
|
|
23
|
+
encoding:
|
|
24
|
+
match: 1111000----------100-----0101111
|
|
25
|
+
variables:
|
|
26
|
+
- name: xs2
|
|
27
|
+
location: 24-20
|
|
28
|
+
- name: xs1
|
|
29
|
+
location: 19-15
|
|
30
|
+
- name: xd
|
|
31
|
+
location: 11-7
|
|
32
|
+
access:
|
|
33
|
+
s: always
|
|
34
|
+
u: always
|
|
35
|
+
vs: always
|
|
36
|
+
vu: always
|
|
37
|
+
operation(): |
|
|
38
|
+
XReg virtual_address = X[xs2] + X[xs1][31:0];
|
|
39
|
+
|
|
40
|
+
X[xd] = read_memory(8, virtual_address, $encoding);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxsuwd
|
|
9
|
+
long_name: Load scaled indexed doubleword with unsigned word index
|
|
10
|
+
description: |
|
|
11
|
+
Load 64 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + (zext32(X[xs1]) << 3)`, where `xs2` is the base and `xs1` is the
|
|
13
|
+
index. The index is zero-extended from `X[xs1][31:0]` before scaling.
|
|
14
|
+
|
|
15
|
+
This instruction is defined only for RV64.
|
|
16
|
+
definedBy:
|
|
17
|
+
allOf:
|
|
18
|
+
- xlen: 64
|
|
19
|
+
- extension:
|
|
20
|
+
name: Zilx
|
|
21
|
+
assembly: xd, (xs2), xs1
|
|
22
|
+
encoding:
|
|
23
|
+
match: 1111000----------011-----0101111
|
|
24
|
+
variables:
|
|
25
|
+
- name: xs2
|
|
26
|
+
location: 24-20
|
|
27
|
+
- name: xs1
|
|
28
|
+
location: 19-15
|
|
29
|
+
- name: xd
|
|
30
|
+
location: 11-7
|
|
31
|
+
access:
|
|
32
|
+
s: always
|
|
33
|
+
u: always
|
|
34
|
+
vs: always
|
|
35
|
+
vu: always
|
|
36
|
+
operation(): |
|
|
37
|
+
XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 3);
|
|
38
|
+
|
|
39
|
+
X[xd] = read_memory(64, virtual_address, $encoding);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxsuwh
|
|
9
|
+
long_name: Load scaled indexed halfword with unsigned word index
|
|
10
|
+
description: |
|
|
11
|
+
Load 16 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + (zext32(X[xs1]) << 1)`, where `xs2` is the base and `xs1` is the
|
|
13
|
+
index. The index is zero-extended from `X[xs1][31:0]` before scaling.
|
|
14
|
+
Sign extend the loaded halfword to 64 bits.
|
|
15
|
+
|
|
16
|
+
This instruction is defined only for RV64.
|
|
17
|
+
definedBy:
|
|
18
|
+
allOf:
|
|
19
|
+
- xlen: 64
|
|
20
|
+
- extension:
|
|
21
|
+
name: Zilx
|
|
22
|
+
assembly: xd, (xs2), xs1
|
|
23
|
+
encoding:
|
|
24
|
+
match: 1111000----------001-----0101111
|
|
25
|
+
variables:
|
|
26
|
+
- name: xs2
|
|
27
|
+
location: 24-20
|
|
28
|
+
- name: xs1
|
|
29
|
+
location: 19-15
|
|
30
|
+
- name: xd
|
|
31
|
+
location: 11-7
|
|
32
|
+
access:
|
|
33
|
+
s: always
|
|
34
|
+
u: always
|
|
35
|
+
vs: always
|
|
36
|
+
vu: always
|
|
37
|
+
operation(): |
|
|
38
|
+
XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 1);
|
|
39
|
+
|
|
40
|
+
X[xd] = sext(read_memory(16, virtual_address, $encoding), 16);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxsuwhu
|
|
9
|
+
long_name: Load scaled indexed halfword unsigned with unsigned word index
|
|
10
|
+
description: |
|
|
11
|
+
Load 16 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + (zext32(X[xs1]) << 1)`, where `xs2` is the base and `xs1` is the
|
|
13
|
+
index. The index is zero-extended from `X[xs1][31:0]` before scaling.
|
|
14
|
+
Zero extend the loaded halfword to 64 bits.
|
|
15
|
+
|
|
16
|
+
This instruction is defined only for RV64.
|
|
17
|
+
definedBy:
|
|
18
|
+
allOf:
|
|
19
|
+
- xlen: 64
|
|
20
|
+
- extension:
|
|
21
|
+
name: Zilx
|
|
22
|
+
assembly: xd, (xs2), xs1
|
|
23
|
+
encoding:
|
|
24
|
+
match: 1111000----------101-----0101111
|
|
25
|
+
variables:
|
|
26
|
+
- name: xs2
|
|
27
|
+
location: 24-20
|
|
28
|
+
- name: xs1
|
|
29
|
+
location: 19-15
|
|
30
|
+
- name: xd
|
|
31
|
+
location: 11-7
|
|
32
|
+
access:
|
|
33
|
+
s: always
|
|
34
|
+
u: always
|
|
35
|
+
vs: always
|
|
36
|
+
vu: always
|
|
37
|
+
operation(): |
|
|
38
|
+
XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 1);
|
|
39
|
+
|
|
40
|
+
X[xd] = read_memory(16, virtual_address, $encoding);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxsuww
|
|
9
|
+
long_name: Load scaled indexed word with unsigned word index
|
|
10
|
+
description: |
|
|
11
|
+
Load 32 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + (zext32(X[xs1]) << 2)`, where `xs2` is the base and `xs1` is the
|
|
13
|
+
index. The index is zero-extended from `X[xs1][31:0]` before scaling.
|
|
14
|
+
Sign extend the loaded word to 64 bits.
|
|
15
|
+
|
|
16
|
+
This instruction is defined only for RV64.
|
|
17
|
+
definedBy:
|
|
18
|
+
allOf:
|
|
19
|
+
- xlen: 64
|
|
20
|
+
- extension:
|
|
21
|
+
name: Zilx
|
|
22
|
+
assembly: xd, (xs2), xs1
|
|
23
|
+
encoding:
|
|
24
|
+
match: 1111000----------010-----0101111
|
|
25
|
+
variables:
|
|
26
|
+
- name: xs2
|
|
27
|
+
location: 24-20
|
|
28
|
+
- name: xs1
|
|
29
|
+
location: 19-15
|
|
30
|
+
- name: xd
|
|
31
|
+
location: 11-7
|
|
32
|
+
access:
|
|
33
|
+
s: always
|
|
34
|
+
u: always
|
|
35
|
+
vs: always
|
|
36
|
+
vu: always
|
|
37
|
+
operation(): |
|
|
38
|
+
XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 2);
|
|
39
|
+
|
|
40
|
+
X[xd] = sext(read_memory(32, virtual_address, $encoding), 32);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxsuwwu
|
|
9
|
+
long_name: Load scaled indexed word unsigned with unsigned word index
|
|
10
|
+
description: |
|
|
11
|
+
Load 32 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + (zext32(X[xs1]) << 2)`, where `xs2` is the base and `xs1` is the
|
|
13
|
+
index. The index is zero-extended from `X[xs1][31:0]` before scaling.
|
|
14
|
+
Zero extend the loaded word to 64 bits.
|
|
15
|
+
|
|
16
|
+
This instruction is defined only for RV64.
|
|
17
|
+
definedBy:
|
|
18
|
+
allOf:
|
|
19
|
+
- xlen: 64
|
|
20
|
+
- extension:
|
|
21
|
+
name: Zilx
|
|
22
|
+
assembly: xd, (xs2), xs1
|
|
23
|
+
encoding:
|
|
24
|
+
match: 1111000----------110-----0101111
|
|
25
|
+
variables:
|
|
26
|
+
- name: xs2
|
|
27
|
+
location: 24-20
|
|
28
|
+
- name: xs1
|
|
29
|
+
location: 19-15
|
|
30
|
+
- name: xd
|
|
31
|
+
location: 11-7
|
|
32
|
+
access:
|
|
33
|
+
s: always
|
|
34
|
+
u: always
|
|
35
|
+
vs: always
|
|
36
|
+
vu: always
|
|
37
|
+
operation(): |
|
|
38
|
+
XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 2);
|
|
39
|
+
|
|
40
|
+
X[xd] = read_memory(32, virtual_address, $encoding);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxsw
|
|
9
|
+
long_name: Load scaled indexed word
|
|
10
|
+
description: |
|
|
11
|
+
Load 32 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + (X[xs1] << 2)`, where `xs2` is the base and `xs1` is the index.
|
|
13
|
+
On RV64, the loaded word is sign-extended to 64 bits.
|
|
14
|
+
definedBy:
|
|
15
|
+
extension:
|
|
16
|
+
name: Zilx
|
|
17
|
+
assembly: xd, (xs2), xs1
|
|
18
|
+
encoding:
|
|
19
|
+
match: 1101000----------010-----0101111
|
|
20
|
+
variables:
|
|
21
|
+
- name: xs2
|
|
22
|
+
location: 24-20
|
|
23
|
+
- name: xs1
|
|
24
|
+
location: 19-15
|
|
25
|
+
- name: xd
|
|
26
|
+
location: 11-7
|
|
27
|
+
access:
|
|
28
|
+
s: always
|
|
29
|
+
u: always
|
|
30
|
+
vs: always
|
|
31
|
+
vu: always
|
|
32
|
+
operation(): |
|
|
33
|
+
XReg virtual_address = X[xs2] + (X[xs1] `<< 2);
|
|
34
|
+
|
|
35
|
+
X[xd] = sext(read_memory(32, virtual_address, $encoding), 32);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxswu
|
|
9
|
+
long_name: Load scaled indexed word unsigned
|
|
10
|
+
description: |
|
|
11
|
+
Load 32 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + (X[xs1] << 2)`, where `xs2` is the base and `xs1` is the index.
|
|
13
|
+
Zero extend the result to 64 bits.
|
|
14
|
+
|
|
15
|
+
This instruction is defined only for RV64.
|
|
16
|
+
definedBy:
|
|
17
|
+
allOf:
|
|
18
|
+
- xlen: 64
|
|
19
|
+
- extension:
|
|
20
|
+
name: Zilx
|
|
21
|
+
assembly: xd, (xs2), xs1
|
|
22
|
+
encoding:
|
|
23
|
+
match: 1101000----------110-----0101111
|
|
24
|
+
variables:
|
|
25
|
+
- name: xs2
|
|
26
|
+
location: 24-20
|
|
27
|
+
- name: xs1
|
|
28
|
+
location: 19-15
|
|
29
|
+
- name: xd
|
|
30
|
+
location: 11-7
|
|
31
|
+
access:
|
|
32
|
+
s: always
|
|
33
|
+
u: always
|
|
34
|
+
vs: always
|
|
35
|
+
vu: always
|
|
36
|
+
operation(): |
|
|
37
|
+
XReg virtual_address = X[xs2] + (X[xs1] `<< 2);
|
|
38
|
+
|
|
39
|
+
X[xd] = read_memory(32, virtual_address, $encoding);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxw
|
|
9
|
+
long_name: Load indexed word
|
|
10
|
+
description: |
|
|
11
|
+
Load 32 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + X[xs1]`, where `xs2` is the base and `xs1` is the index.
|
|
13
|
+
On RV64, the loaded word is sign-extended to 64 bits.
|
|
14
|
+
definedBy:
|
|
15
|
+
extension:
|
|
16
|
+
name: Zilx
|
|
17
|
+
assembly: xd, (xs2), xs1
|
|
18
|
+
encoding:
|
|
19
|
+
match: 1001000----------010-----0101111
|
|
20
|
+
variables:
|
|
21
|
+
- name: xs2
|
|
22
|
+
location: 24-20
|
|
23
|
+
- name: xs1
|
|
24
|
+
location: 19-15
|
|
25
|
+
- name: xd
|
|
26
|
+
location: 11-7
|
|
27
|
+
access:
|
|
28
|
+
s: always
|
|
29
|
+
u: always
|
|
30
|
+
vs: always
|
|
31
|
+
vu: always
|
|
32
|
+
operation(): |
|
|
33
|
+
XReg virtual_address = X[xs2] + X[xs1];
|
|
34
|
+
|
|
35
|
+
X[xd] = sext(read_memory(32, virtual_address, $encoding), 32);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: lxwu
|
|
9
|
+
long_name: Load indexed word unsigned
|
|
10
|
+
description: |
|
|
11
|
+
Load 32 bits of data into register `xd` from the effective address
|
|
12
|
+
`X[xs2] + X[xs1]`, where `xs2` is the base and `xs1` is the index.
|
|
13
|
+
Zero extend the result to 64 bits.
|
|
14
|
+
|
|
15
|
+
This instruction is defined only for RV64.
|
|
16
|
+
definedBy:
|
|
17
|
+
allOf:
|
|
18
|
+
- xlen: 64
|
|
19
|
+
- extension:
|
|
20
|
+
name: Zilx
|
|
21
|
+
assembly: xd, (xs2), xs1
|
|
22
|
+
encoding:
|
|
23
|
+
match: 1001000----------110-----0101111
|
|
24
|
+
variables:
|
|
25
|
+
- name: xs2
|
|
26
|
+
location: 24-20
|
|
27
|
+
- name: xs1
|
|
28
|
+
location: 19-15
|
|
29
|
+
- name: xd
|
|
30
|
+
location: 11-7
|
|
31
|
+
access:
|
|
32
|
+
s: always
|
|
33
|
+
u: always
|
|
34
|
+
vs: always
|
|
35
|
+
vu: always
|
|
36
|
+
operation(): |
|
|
37
|
+
XReg virtual_address = X[xs2] + X[xs1];
|
|
38
|
+
|
|
39
|
+
X[xd] = read_memory(32, virtual_address, $encoding);
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Copyright (c) Alibaba Damo Academy
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: vabd.vv
|
|
9
|
+
long_name: Vector Single-Width Signed Integer Absolute Difference
|
|
10
|
+
description: |
|
|
11
|
+
Computes the element-wise absolute difference of two signed integer SEW-bit
|
|
12
|
+
source operands vs1 and vs2 and writes the result to vd according to mask vm.
|
|
13
|
+
|
|
14
|
+
Reserved when SEW is neither 8 nor 16.
|
|
15
|
+
definedBy:
|
|
16
|
+
extension:
|
|
17
|
+
name: Zvabd
|
|
18
|
+
assembly: vd, vs2, vs1, vm
|
|
19
|
+
encoding:
|
|
20
|
+
match: 010001-----------010-----1010111
|
|
21
|
+
variables:
|
|
22
|
+
- name: vm
|
|
23
|
+
location: 25
|
|
24
|
+
- name: vs2
|
|
25
|
+
location: 24-20
|
|
26
|
+
- name: vs1
|
|
27
|
+
location: 19-15
|
|
28
|
+
- name: vd
|
|
29
|
+
location: 11-7
|
|
30
|
+
access:
|
|
31
|
+
s: always
|
|
32
|
+
u: always
|
|
33
|
+
vs: always
|
|
34
|
+
vu: always
|
|
35
|
+
operation(): |
|
|
36
|
+
VectorState state = vector_state();
|
|
37
|
+
|
|
38
|
+
if (state.sew != 8 && state.sew != 16) {
|
|
39
|
+
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
VectorLmulType lmul_type = state.lmul_type;
|
|
43
|
+
|
|
44
|
+
XReg vlen = VLEN;
|
|
45
|
+
XReg vlmax;
|
|
46
|
+
if (lmul_type == VectorLmulType::Multiply) {
|
|
47
|
+
vlmax = (vlen << state.log2_lmul) >> state.log2_sew;
|
|
48
|
+
} else {
|
|
49
|
+
vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
|
|
53
|
+
U32 start_bit_pos = i * state.sew;
|
|
54
|
+
U32 end_bit_pos = start_bit_pos + state.sew - 1;
|
|
55
|
+
if (vm == 1'b1 || V[0][i:i] == 1'b1) {
|
|
56
|
+
# active element
|
|
57
|
+
if ($signed(V[vs2][end_bit_pos:start_bit_pos]) >= $signed(V[vs1][end_bit_pos:start_bit_pos])) {
|
|
58
|
+
V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos] - V[vs1][end_bit_pos:start_bit_pos];
|
|
59
|
+
} else {
|
|
60
|
+
V[vd][end_bit_pos:start_bit_pos] = V[vs1][end_bit_pos:start_bit_pos] - V[vs2][end_bit_pos:start_bit_pos];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
# inactive element: handled according to vtype.VMA policy
|
|
64
|
+
}
|
|
65
|
+
# tail elements (i >= vl): handled according to vtype.VTA policy
|
|
66
|
+
|
|
67
|
+
CSR[vstart].VALUE = 0;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Copyright (c) Alibaba Damo Academy
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: vabdu.vv
|
|
9
|
+
long_name: Vector Single-Width Unsigned Integer Absolute Difference
|
|
10
|
+
description: |
|
|
11
|
+
Computes the element-wise absolute difference of two unsigned integer SEW-bit
|
|
12
|
+
source operands vs1 and vs2 and writes the result to vd according to mask vm.
|
|
13
|
+
|
|
14
|
+
Reserved when SEW is neither 8 nor 16.
|
|
15
|
+
definedBy:
|
|
16
|
+
extension:
|
|
17
|
+
name: Zvabd
|
|
18
|
+
assembly: vd, vs2, vs1, vm
|
|
19
|
+
encoding:
|
|
20
|
+
match: 010011-----------010-----1010111
|
|
21
|
+
variables:
|
|
22
|
+
- name: vm
|
|
23
|
+
location: 25
|
|
24
|
+
- name: vs2
|
|
25
|
+
location: 24-20
|
|
26
|
+
- name: vs1
|
|
27
|
+
location: 19-15
|
|
28
|
+
- name: vd
|
|
29
|
+
location: 11-7
|
|
30
|
+
access:
|
|
31
|
+
s: always
|
|
32
|
+
u: always
|
|
33
|
+
vs: always
|
|
34
|
+
vu: always
|
|
35
|
+
operation(): |
|
|
36
|
+
VectorState state = vector_state();
|
|
37
|
+
|
|
38
|
+
if (state.sew != 8 && state.sew != 16) {
|
|
39
|
+
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
VectorLmulType lmul_type = state.lmul_type;
|
|
43
|
+
|
|
44
|
+
XReg vlen = VLEN;
|
|
45
|
+
XReg vlmax;
|
|
46
|
+
if (lmul_type == VectorLmulType::Multiply) {
|
|
47
|
+
vlmax = (vlen << state.log2_lmul) >> state.log2_sew;
|
|
48
|
+
} else {
|
|
49
|
+
vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
|
|
53
|
+
U32 start_bit_pos = i * state.sew;
|
|
54
|
+
U32 end_bit_pos = start_bit_pos + state.sew - 1;
|
|
55
|
+
if (vm == 1'b1 || V[0][i:i] == 1'b1) {
|
|
56
|
+
# active element
|
|
57
|
+
if (V[vs2][end_bit_pos:start_bit_pos] >= V[vs1][end_bit_pos:start_bit_pos]) {
|
|
58
|
+
V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos] - V[vs1][end_bit_pos:start_bit_pos];
|
|
59
|
+
} else {
|
|
60
|
+
V[vd][end_bit_pos:start_bit_pos] = V[vs1][end_bit_pos:start_bit_pos] - V[vs2][end_bit_pos:start_bit_pos];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
# inactive element: handled according to vtype.VMA policy
|
|
64
|
+
}
|
|
65
|
+
# tail elements (i >= vl): handled according to vtype.VTA policy
|
|
66
|
+
|
|
67
|
+
CSR[vstart].VALUE = 0;
|