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
|
@@ -15,34 +15,60 @@ definedBy:
|
|
|
15
15
|
length: SXLEN
|
|
16
16
|
description: Supervisor interrupt-enable register.
|
|
17
17
|
writable: true
|
|
18
|
+
sw_read(): |
|
|
19
|
+
return $bits(CSR[mie]) & $bits(CSR[mideleg]);
|
|
18
20
|
fields:
|
|
19
21
|
SSIE:
|
|
20
22
|
location: 1
|
|
21
23
|
alias: mie.SSIE
|
|
22
24
|
description: |
|
|
23
25
|
Supervisor Software Interrupt Enable
|
|
24
|
-
type: RW
|
|
26
|
+
type: RW-R
|
|
27
|
+
sw_write(csr_value): |
|
|
28
|
+
if (CSR[mideleg].SSI == 1'b1) {
|
|
29
|
+
CSR[mie].SSIE = csr_value.SSIE;
|
|
30
|
+
return csr_value.SSIE;
|
|
31
|
+
}
|
|
32
|
+
return 1'b0;
|
|
25
33
|
reset_value: UNDEFINED_LEGAL
|
|
26
34
|
STIE:
|
|
27
35
|
location: 5
|
|
28
36
|
alias: mie.STIE
|
|
29
37
|
description: |
|
|
30
38
|
Supervisor Timer Interrupt Enable
|
|
31
|
-
type: RW
|
|
39
|
+
type: RW-R
|
|
40
|
+
sw_write(csr_value): |
|
|
41
|
+
if (CSR[mideleg].STI == 1'b1) {
|
|
42
|
+
CSR[mie].STIE = csr_value.STIE;
|
|
43
|
+
return csr_value.STIE;
|
|
44
|
+
}
|
|
45
|
+
return 1'b0;
|
|
32
46
|
reset_value: UNDEFINED_LEGAL
|
|
33
47
|
SEIE:
|
|
34
48
|
location: 9
|
|
35
49
|
alias: mie.SEIE
|
|
36
50
|
description: |
|
|
37
51
|
Supervisor External Interrupt Enable
|
|
38
|
-
type: RW
|
|
52
|
+
type: RW-R
|
|
53
|
+
sw_write(csr_value): |
|
|
54
|
+
if (CSR[mideleg].SEI == 1'b1) {
|
|
55
|
+
CSR[mie].SEIE = csr_value.SEIE;
|
|
56
|
+
return csr_value.SEIE;
|
|
57
|
+
}
|
|
58
|
+
return 1'b0;
|
|
39
59
|
reset_value: UNDEFINED_LEGAL
|
|
40
60
|
LCOFIE:
|
|
41
61
|
location: 13
|
|
42
62
|
alias: mie.LCOFIE
|
|
43
63
|
description: |
|
|
44
64
|
Local Counter Overflow Interrupt Enable
|
|
45
|
-
type: RW
|
|
65
|
+
type: RW-R
|
|
66
|
+
sw_write(csr_value): |
|
|
67
|
+
if (CSR[mideleg].LCOFI == 1'b1) {
|
|
68
|
+
CSR[mie].LCOFIE = csr_value.LCOFIE;
|
|
69
|
+
return csr_value.LCOFIE;
|
|
70
|
+
}
|
|
71
|
+
return 1'b0;
|
|
46
72
|
reset_value: UNDEFINED_LEGAL
|
|
47
73
|
definedBy:
|
|
48
74
|
extension:
|
|
@@ -19,6 +19,8 @@ length: 64
|
|
|
19
19
|
definedBy:
|
|
20
20
|
extension:
|
|
21
21
|
name: S
|
|
22
|
+
sw_read(): |
|
|
23
|
+
return $bits(CSR[mip]) & $bits(CSR[mideleg]);
|
|
22
24
|
fields:
|
|
23
25
|
SSIP:
|
|
24
26
|
location: 1
|
|
@@ -59,7 +61,13 @@ fields:
|
|
|
59
61
|
! 0 ! read-only 0
|
|
60
62
|
! 1 ! writable alias of `mip.SSIP` <% if ext?(:Smaia) %>and `mvip.SSIP`<% end %>
|
|
61
63
|
!===
|
|
62
|
-
type: RW
|
|
64
|
+
type: RW-R
|
|
65
|
+
sw_write(csr_value): |
|
|
66
|
+
if (CSR[mideleg].SSI == 1'b1) {
|
|
67
|
+
CSR[mip].SSIP = csr_value.SSIP;
|
|
68
|
+
return csr_value.SSIP;
|
|
69
|
+
}
|
|
70
|
+
return 1'b0;
|
|
63
71
|
reset_value: UNDEFINED_LEGAL
|
|
64
72
|
definedBy:
|
|
65
73
|
extension:
|
|
@@ -153,7 +161,13 @@ fields:
|
|
|
153
161
|
! 1
|
|
154
162
|
a! writable alias of `mip.LCOFIP` (and `vsip.LCOFIP` when `hideleg.LCOFI` is set)
|
|
155
163
|
!===
|
|
156
|
-
type: RW-
|
|
164
|
+
type: RW-RH
|
|
165
|
+
sw_write(csr_value): |
|
|
166
|
+
if (CSR[mideleg].LCOFI == 1'b1) {
|
|
167
|
+
CSR[mip].LCOFIP = csr_value.LCOFIP;
|
|
168
|
+
return csr_value.LCOFIP;
|
|
169
|
+
}
|
|
170
|
+
return 1'b0;
|
|
157
171
|
reset_value: UNDEFINED_LEGAL
|
|
158
172
|
definedBy:
|
|
159
173
|
extension:
|
|
@@ -19,10 +19,10 @@ fields:
|
|
|
19
19
|
BASE:
|
|
20
20
|
location: 63-2
|
|
21
21
|
description: |
|
|
22
|
-
<%- va_size = ext?(:Sv57) ? 57 : (ext?(:Sv48) ?
|
|
23
|
-
|
|
22
|
+
<%- va_size = ext?(:Sv57) ? 57 : (ext?(:Sv48) ? 48 : 39) -%>
|
|
23
|
+
Bits 63:2 of the virtual address of the exception vector for any trap taken into S-mode.
|
|
24
24
|
|
|
25
|
-
If the base address is written with a non-
|
|
25
|
+
If the base address is written with a non-canonical address (_i.e._, bits 63:<%= va_size %> do not match bit <%= va_size-1 %>),
|
|
26
26
|
the write should be ignored.
|
|
27
27
|
|
|
28
28
|
type: RW-R
|
|
@@ -41,14 +41,13 @@ fields:
|
|
|
41
41
|
|
|
42
42
|
When Direct, all synchronous exceptions and asynchronous interrupts jump to (`stvec.BASE` << 2).
|
|
43
43
|
|
|
44
|
-
When Vectored, asynchronous interrupts jump to (`stvec.BASE` << 2 + `scause.
|
|
45
|
-
type:
|
|
44
|
+
When Vectored, asynchronous interrupts jump to (`stvec.BASE` << 2 + `scause.CODE`*4) while synchronous exceptions continue to jump to (`stvec.BASE` << 2).
|
|
45
|
+
type(): |
|
|
46
|
+
return ($array_size(STVEC_MODES) == 1) ? CsrFieldType::RO : CsrFieldType::RWR;
|
|
46
47
|
sw_write(csr_value): |
|
|
47
|
-
if (
|
|
48
|
-
return
|
|
49
|
-
} else if (STVEC_MODE_VECTORED && csr_value.MODE == 1) {
|
|
50
|
-
return 1;
|
|
51
|
-
} else {
|
|
52
|
-
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
48
|
+
if ($array_includes?(STVEC_MODES, csr_value.MODE)) {
|
|
49
|
+
return csr_value.MODE;
|
|
53
50
|
}
|
|
54
|
-
|
|
51
|
+
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
52
|
+
reset_value(): |
|
|
53
|
+
return ($array_size(STVEC_MODES) == 1) ? STVEC_MODES[0] : UNDEFINED_LEGAL;
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
$schema: "csr_schema.json#"
|
|
7
7
|
kind: csr
|
|
8
8
|
name: vstvec
|
|
9
|
-
long_name: Supervisor Trap Vector
|
|
9
|
+
long_name: Virtual Supervisor Trap Vector
|
|
10
10
|
address: 0x205
|
|
11
11
|
writable: true
|
|
12
12
|
virtual_address: 0x105
|
|
13
|
-
priv_mode:
|
|
13
|
+
priv_mode: VS
|
|
14
14
|
length: 64
|
|
15
15
|
description: Controls where traps jump.
|
|
16
16
|
definedBy:
|
|
@@ -20,17 +20,17 @@ fields:
|
|
|
20
20
|
BASE:
|
|
21
21
|
location: 63-2
|
|
22
22
|
description: |
|
|
23
|
-
<%- va_size = ext?(:Sv57) ? 57 : (ext?(:Sv48) ?
|
|
24
|
-
|
|
23
|
+
<%- va_size = ext?(:Sv57) ? 57 : (ext?(:Sv48) ? 48 : 39) -%>
|
|
24
|
+
Bits 63:2 of the virtual address of the exception vector for any trap taken into VS-mode.
|
|
25
25
|
|
|
26
|
-
If the base address is written with a non-
|
|
26
|
+
If the base address is written with a non-canonical address (_i.e._, bits 63:<%= va_size %> do not match bit <%= va_size-1 %>),
|
|
27
27
|
the write should be ignored.
|
|
28
28
|
|
|
29
29
|
type: RW-R
|
|
30
30
|
sw_write(csr_value): |
|
|
31
31
|
# Base spec says that BASE must be 4-byte aligned, which will always be the case
|
|
32
32
|
# implementations may put further constraints on BASE when MODE != Direct
|
|
33
|
-
# If that is the case,
|
|
33
|
+
# If that is the case, vstvec should have an override for the implementation
|
|
34
34
|
return csr_value.BASE;
|
|
35
35
|
reset_value: 0
|
|
36
36
|
MODE:
|
|
@@ -42,14 +42,13 @@ fields:
|
|
|
42
42
|
|
|
43
43
|
When Direct, all synchronous exceptions and asynchronous interrupts jump to (`vstvec.BASE` << 2).
|
|
44
44
|
|
|
45
|
-
When Vectored, asynchronous interrupts jump to (`vstvec.BASE` << 2 + `vscause.
|
|
46
|
-
type:
|
|
45
|
+
When Vectored, asynchronous interrupts jump to (`vstvec.BASE` << 2 + `vscause.CODE`*4) while synchronous exceptions continue to jump to (`vstvec.BASE` << 2).
|
|
46
|
+
type(): |
|
|
47
|
+
return ($array_size(VSTVEC_MODES) == 1) ? CsrFieldType::RO : CsrFieldType::RWR;
|
|
47
48
|
sw_write(csr_value): |
|
|
48
|
-
if (
|
|
49
|
-
return
|
|
50
|
-
} else if (VSTVEC_MODE_VECTORED && csr_value.MODE == 1) {
|
|
51
|
-
return 1;
|
|
52
|
-
} else {
|
|
53
|
-
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
49
|
+
if ($array_includes?(VSTVEC_MODES, csr_value.MODE)) {
|
|
50
|
+
return csr_value.MODE;
|
|
54
51
|
}
|
|
55
|
-
|
|
52
|
+
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
53
|
+
reset_value(): |
|
|
54
|
+
return ($array_size(VSTVEC_MODES) == 1) ? VSTVEC_MODES[0] : UNDEFINED_LEGAL;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../schemas/ext_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "ext_schema.json#"
|
|
7
|
+
kind: extension
|
|
8
|
+
name: Shlcofideleg
|
|
9
|
+
long_name: Hypervisor local counter overflow interrupt delegation
|
|
10
|
+
description: |
|
|
11
|
+
Shlcofideleg supports delegating Local Counter Overflow Interrupts
|
|
12
|
+
(LCOFIs) to VS-mode.
|
|
13
|
+
|
|
14
|
+
When Shlcofideleg is implemented, `hideleg` bit 13 is writable.
|
|
15
|
+
type: privileged
|
|
16
|
+
versions:
|
|
17
|
+
- version: "1.0.0"
|
|
18
|
+
state: ratified
|
|
19
|
+
ratification_date: 2024-10
|
|
20
|
+
requirements:
|
|
21
|
+
extension:
|
|
22
|
+
allOf:
|
|
23
|
+
- name: H
|
|
24
|
+
- name: Sscofpmf
|
|
@@ -21,3 +21,20 @@ versions:
|
|
|
21
21
|
- version: "1.0.0"
|
|
22
22
|
state: ratified
|
|
23
23
|
ratification_date: 2024-10
|
|
24
|
+
requirements:
|
|
25
|
+
allOf:
|
|
26
|
+
- extension:
|
|
27
|
+
name: U
|
|
28
|
+
- if:
|
|
29
|
+
extension:
|
|
30
|
+
name: S
|
|
31
|
+
then:
|
|
32
|
+
extension:
|
|
33
|
+
name: Ssnpm
|
|
34
|
+
- if:
|
|
35
|
+
not:
|
|
36
|
+
extension:
|
|
37
|
+
name: S
|
|
38
|
+
then:
|
|
39
|
+
extension:
|
|
40
|
+
name: Smnpm
|
|
@@ -12,8 +12,8 @@ description: |
|
|
|
12
12
|
It enables BF16 as an interchange format as it provides conversion between BF16 values and
|
|
13
13
|
FP32 values.
|
|
14
14
|
|
|
15
|
-
This extension
|
|
16
|
-
|
|
15
|
+
This extension includes the `flh`, `fsh`, `fmv.x.h`, and `fmv.h.x`
|
|
16
|
+
instructions defined in the `Zfh` extension.
|
|
17
17
|
|
|
18
18
|
type: unprivileged
|
|
19
19
|
versions:
|
|
@@ -22,6 +22,4 @@ versions:
|
|
|
22
22
|
ratification_date: 2024-06
|
|
23
23
|
requirements:
|
|
24
24
|
extension:
|
|
25
|
-
|
|
26
|
-
- name: F
|
|
27
|
-
- name: Zfh
|
|
25
|
+
name: F
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../schemas/ext_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "ext_schema.json#"
|
|
7
|
+
kind: extension
|
|
8
|
+
name: Ziccid
|
|
9
|
+
long_name: Instruction/Data Coherence and Consistency
|
|
10
|
+
description: |
|
|
11
|
+
The `Ziccid` extension mandates more stringent requirements for consistency
|
|
12
|
+
between instruction fetches and other memory accesses than those imposed by
|
|
13
|
+
the base ISA.
|
|
14
|
+
|
|
15
|
+
`Ziccid` guarantees that a hart's instruction fetches appear to occur in
|
|
16
|
+
program order with respect to each other, and that stores eventually become
|
|
17
|
+
visible to all harts' instruction fetches.
|
|
18
|
+
|
|
19
|
+
[NOTE]
|
|
20
|
+
The primary intent of the `Ziccid` extension is to accelerate JIT compilation
|
|
21
|
+
in multiprocessor systems.
|
|
22
|
+
type: unprivileged
|
|
23
|
+
versions:
|
|
24
|
+
- version: "1.0.0"
|
|
25
|
+
state: ratified
|
|
26
|
+
ratification_date: 2026-06
|
|
27
|
+
requirements:
|
|
28
|
+
extension:
|
|
29
|
+
name: Ziccif
|
|
@@ -8,9 +8,13 @@ kind: extension
|
|
|
8
8
|
name: Zicfilp
|
|
9
9
|
long_name: Landing Pad
|
|
10
10
|
description: |
|
|
11
|
-
|
|
11
|
+
The Zicfilp extension introduces a landing-pad instruction and related
|
|
12
|
+
execution state to enforce forward-edge control-flow integrity.
|
|
12
13
|
type: unprivileged
|
|
13
14
|
versions:
|
|
14
15
|
- version: "1.0.0"
|
|
15
16
|
state: ratified
|
|
16
17
|
ratification_date: 2024-07
|
|
18
|
+
requirements:
|
|
19
|
+
extension:
|
|
20
|
+
name: Zicsr
|
|
@@ -8,9 +8,28 @@ kind: extension
|
|
|
8
8
|
name: Zicfiss
|
|
9
9
|
long_name: Shadow Stack
|
|
10
10
|
description: |
|
|
11
|
-
|
|
11
|
+
The Zicfiss extension introduces a shadow stack to enforce
|
|
12
|
+
backward-edge control-flow integrity.
|
|
13
|
+
|
|
14
|
+
The extension provides instructions to store and load the link register
|
|
15
|
+
to and from the shadow stack, check the integrity of the return address,
|
|
16
|
+
read the shadow stack pointer, and perform atomic swaps on shadow stack
|
|
17
|
+
locations.
|
|
12
18
|
type: unprivileged
|
|
13
19
|
versions:
|
|
14
20
|
- version: "1.0.0"
|
|
15
21
|
state: ratified
|
|
16
22
|
ratification_date: 2024-07
|
|
23
|
+
requirements:
|
|
24
|
+
allOf:
|
|
25
|
+
- extension:
|
|
26
|
+
allOf:
|
|
27
|
+
- name: Zicsr
|
|
28
|
+
- name: Zimop
|
|
29
|
+
- name: Zaamo
|
|
30
|
+
- if:
|
|
31
|
+
extension:
|
|
32
|
+
name: U
|
|
33
|
+
then:
|
|
34
|
+
extension:
|
|
35
|
+
name: S
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../schemas/ext_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "ext_schema.json#"
|
|
7
|
+
kind: extension
|
|
8
|
+
name: Zilx
|
|
9
|
+
long_name: Indexed Integer Load Instructions
|
|
10
|
+
description: |
|
|
11
|
+
The Zilx extension provides integer load instructions that compute their
|
|
12
|
+
effective address from a base register and an index register. The extension
|
|
13
|
+
defines unscaled indexed loads and scaled indexed loads. On RV64, the
|
|
14
|
+
extension also defines scaled loads that zero-extend the low 32 bits of the
|
|
15
|
+
index register before scaling and forming the effective address.
|
|
16
|
+
|
|
17
|
+
Each Zilx instruction uses `xs1` as the index operand and `xs2` as the base
|
|
18
|
+
operand, computes an effective address, loads a byte, halfword, word, or
|
|
19
|
+
doubleword from memory, and writes the extended load result to `xd`. The
|
|
20
|
+
operand roles match the shift-add instructions of the `Zba` extension, in
|
|
21
|
+
which the shifted operand is `xs1` and the added base is `xs2`.
|
|
22
|
+
|
|
23
|
+
Effective addresses are computed using XLEN-bit two's-complement address
|
|
24
|
+
arithmetic, and address arithmetic overflow is ignored:
|
|
25
|
+
|
|
26
|
+
* For an unscaled indexed load, the effective address is the low XLEN bits of
|
|
27
|
+
`X[xs2] + X[xs1]`.
|
|
28
|
+
* For a scaled indexed load, the effective address is the low XLEN bits of
|
|
29
|
+
`X[xs2] + (X[xs1] << log2(access-size))`, where _access-size_ is the number
|
|
30
|
+
of bytes loaded by the instruction.
|
|
31
|
+
* For a scaled unsigned-word-index load (mnemonic prefix `lxsuw`), the index
|
|
32
|
+
operand is zero-extended from `X[xs1][31:0]` to 64 bits before scaling.
|
|
33
|
+
These instructions are defined only for RV64.
|
|
34
|
+
|
|
35
|
+
Byte loads are provided only as scaled forms (mnemonic prefixes `lxs` and
|
|
36
|
+
`lxsuw`). Because the scale factor for a byte access is 1, an unscaled byte
|
|
37
|
+
load would be identical to the scaled byte load, so no unscaled byte load is
|
|
38
|
+
defined. For convenience, `lxb` and `lxbu` are provided as assembler
|
|
39
|
+
pseudoinstructions for `lxsb` and `lxsbu`, respectively.
|
|
40
|
+
|
|
41
|
+
Zilx adds no architectural state, CSRs, or memory-ordering rules. Except for
|
|
42
|
+
the effective-address calculation, each Zilx instruction behaves as the
|
|
43
|
+
corresponding base integer load of the same access size and signedness, and
|
|
44
|
+
follows the same exception, address-alignment, access-fault, page-fault, PMP,
|
|
45
|
+
PMA, privilege, atomicity, and memory-ordering rules.
|
|
46
|
+
|
|
47
|
+
Zilx instructions reuse the `AMO` major opcode. The access width and
|
|
48
|
+
signedness are encoded in _funct3_ using the same encoding as base integer
|
|
49
|
+
loads, and the addressing mode is encoded in _funct5_. For all Zilx
|
|
50
|
+
instructions the _aq_ and _rl_ bits must be 0; encodings with _aq_ or _rl_
|
|
51
|
+
set are reserved.
|
|
52
|
+
type: unprivileged
|
|
53
|
+
versions:
|
|
54
|
+
- version: "0.1.0"
|
|
55
|
+
state: development
|
|
56
|
+
repositories:
|
|
57
|
+
- url: https://github.com/riscv/riscv-zilx
|
|
58
|
+
branch: main
|
|
@@ -203,6 +203,21 @@ description: |
|
|
|
203
203
|
| | ✓ | sraw _rd_, _rs1_, _rs2_ | 'sraw'
|
|
204
204
|
|===
|
|
205
205
|
|
|
206
|
+
=== Zicond (Conditional Zero)
|
|
207
|
+
|
|
208
|
+
All instructions are included.
|
|
209
|
+
|
|
210
|
+
[%header,cols="^1,^1,4,8"]
|
|
211
|
+
|===
|
|
212
|
+
|RV32
|
|
213
|
+
|RV64
|
|
214
|
+
|Mnemonic
|
|
215
|
+
|Instruction
|
|
216
|
+
|
|
217
|
+
| ✓ | ✓ | czero.eqz _rd_, _rs1_, _rs2_ | 'czero.eqz'
|
|
218
|
+
| ✓ | ✓ | czero.nez _rd_, _rs1_, _rs2_ | 'czero.nez'
|
|
219
|
+
|===
|
|
220
|
+
|
|
206
221
|
=== RVM (Multiply)
|
|
207
222
|
|
|
208
223
|
Multiplication is included; division and remaindering excluded.
|
|
@@ -221,7 +236,7 @@ description: |
|
|
|
221
236
|
| | ✓ | mulw _rd_, _rs1_, _rs2_ | 'mulw'
|
|
222
237
|
|===
|
|
223
238
|
|
|
224
|
-
===
|
|
239
|
+
=== Zca (Compressed)
|
|
225
240
|
|
|
226
241
|
Same criteria as in RVI. Organised by quadrants.
|
|
227
242
|
|
|
@@ -250,6 +265,23 @@ description: |
|
|
|
250
265
|
| ✓ | ✓ | c.add | 'c_add'
|
|
251
266
|
|===
|
|
252
267
|
|
|
268
|
+
=== Zcb Extension
|
|
269
|
+
|
|
270
|
+
These instructions are compressed versions of `I` and `M` instructions that are
|
|
271
|
+
included in `Zkt`.
|
|
272
|
+
|
|
273
|
+
[%header,cols="^1,^1,4,8"]
|
|
274
|
+
|===
|
|
275
|
+
|RV32
|
|
276
|
+
|RV64
|
|
277
|
+
|Mnemonic
|
|
278
|
+
|Instruction
|
|
279
|
+
|
|
280
|
+
| ✓ | ✓ | c.mul | 'c_mul'
|
|
281
|
+
| ✓ | ✓ | c.not | 'c_not'
|
|
282
|
+
| ✓ | ✓ | c.zext.b | 'c_zext_b'
|
|
283
|
+
|===
|
|
284
|
+
|
|
253
285
|
=== RVK (Scalar Cryptography)
|
|
254
286
|
|
|
255
287
|
All K-specific instructions are included.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Copyright (c) Alibaba Damo Academy
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../schemas/ext_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "ext_schema.json#"
|
|
7
|
+
kind: extension
|
|
8
|
+
name: Zvabd
|
|
9
|
+
long_name: Vector Integer Absolute Difference
|
|
10
|
+
description: |
|
|
11
|
+
The Zvabd extension defines element-wise absolute difference instructions for
|
|
12
|
+
vectors of integers, including widening absolute-difference-and-accumulate
|
|
13
|
+
variants. These operations are widely used in image registration, object
|
|
14
|
+
recognition, motion estimation, and loop filters for video workloads.
|
|
15
|
+
type: unprivileged
|
|
16
|
+
versions:
|
|
17
|
+
- version: "0.7.0"
|
|
18
|
+
state: frozen
|
|
19
|
+
requirements:
|
|
20
|
+
extension:
|
|
21
|
+
name: Zve32x
|
|
@@ -16,17 +16,15 @@ definedBy:
|
|
|
16
16
|
- name: Zbb
|
|
17
17
|
- name: Zbkb
|
|
18
18
|
assembly: xd, xs1, xs2
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
value: 0b111
|
|
29
|
-
opcode: { $inherits: inst_opcode/OP.yaml#/data }
|
|
19
|
+
encoding:
|
|
20
|
+
match: 0100000----------111-----0110011
|
|
21
|
+
variables:
|
|
22
|
+
- name: xs2
|
|
23
|
+
location: 24-20
|
|
24
|
+
- name: xs1
|
|
25
|
+
location: 19-15
|
|
26
|
+
- name: xd
|
|
27
|
+
location: 11-7
|
|
30
28
|
access:
|
|
31
29
|
s: always
|
|
32
30
|
u: always
|
|
@@ -38,4 +36,4 @@ operation(): |
|
|
|
38
36
|
raise (ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
39
37
|
}
|
|
40
38
|
|
|
41
|
-
X[xd] = X[
|
|
39
|
+
X[xd] = X[xs1] & ~X[xs2];
|