udb 0.1.14 → 0.1.16
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 +6 -6
- data/.data/cfgs/mc100-32-full-example.yaml +3 -2
- data/.data/cfgs/profile/RVA20S64.yaml +2 -0
- data/.data/cfgs/profile/RVA20U64.yaml +2 -0
- data/.data/cfgs/profile/RVA22S64.yaml +2 -0
- data/.data/cfgs/profile/RVA22U64.yaml +2 -0
- data/.data/cfgs/profile/RVA23S64.yaml +2 -0
- data/.data/cfgs/profile/RVA23U64.yaml +2 -0
- data/.data/cfgs/profile/RVB23S64.yaml +2 -0
- data/.data/cfgs/profile/RVB23U64.yaml +2 -0
- data/.data/cfgs/qc_iu.yaml +3 -2
- data/.data/cfgs/rv32-riscv-tests.yaml +5 -4
- data/.data/cfgs/rv32-vector.yaml +5 -4
- data/.data/cfgs/rv64-riscv-tests.yaml +5 -4
- data/.data/cfgs/rv64-vector.yaml +5 -4
- data/.data/spec/schemas/README.adoc +3 -0
- data/.data/spec/schemas/schema_defs.json +3 -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 +1 -1
- data/.data/spec/std/isa/csr/H/htimedeltah.yaml +1 -1
- 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/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/Smctr/vsctrctl.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/hstateen0h.yaml +1 -1
- data/.data/spec/std/isa/csr/hstateen1h.yaml +1 -1
- data/.data/spec/std/isa/csr/hstateen2h.yaml +1 -1
- data/.data/spec/std/isa/csr/hstateen3h.yaml +1 -1
- data/.data/spec/std/isa/csr/hstatus.yaml +1 -1
- data/.data/spec/std/isa/csr/instreth.yaml +1 -3
- data/.data/spec/std/isa/csr/mcycle.yaml +6 -6
- data/.data/spec/std/isa/csr/minstret.yaml +3 -3
- data/.data/spec/std/isa/csr/minstreth.yaml +2 -2
- data/.data/spec/std/isa/csr/mstatus.yaml +14 -20
- data/.data/spec/std/isa/csr/mstatush.yaml +1 -1
- data/.data/spec/std/isa/csr/mtvec.yaml +16 -57
- data/.data/spec/std/isa/csr/senvcfg.yaml +1 -1
- data/.data/spec/std/isa/csr/sepc.yaml +4 -3
- data/.data/spec/std/isa/csr/sie.yaml +30 -4
- data/.data/spec/std/isa/csr/sip.yaml +17 -3
- data/.data/spec/std/isa/csr/sscratch.yaml +3 -2
- data/.data/spec/std/isa/csr/stval.yaml +3 -2
- data/.data/spec/std/isa/csr/stvec.yaml +14 -14
- data/.data/spec/std/isa/csr/time.yaml +1 -1
- data/.data/spec/std/isa/csr/timeh.yaml +1 -1
- data/.data/spec/std/isa/csr/vsepc.yaml +6 -5
- data/.data/spec/std/isa/csr/vstval.yaml +1 -1
- data/.data/spec/std/isa/csr/vstvec.yaml +17 -17
- data/.data/spec/std/isa/ext/M.yaml +4 -0
- data/.data/spec/std/isa/ext/Q.yaml +1 -1
- data/.data/spec/std/isa/ext/Shgatpa.yaml +1 -0
- 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/Zibi.yaml +29 -0
- 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/roriw.yaml +1 -1
- data/.data/spec/std/isa/inst/B/rorw.yaml +1 -1
- 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.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/flt.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 +4 -1
- data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +4 -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/sd.yaml +1 -1
- data/.data/spec/std/isa/inst/M/mul.yaml +1 -3
- data/.data/spec/std/isa/inst/M/mulh.yaml +1 -3
- data/.data/spec/std/isa/inst/M/mulhsu.yaml +1 -3
- data/.data/spec/std/isa/inst/M/mulhu.yaml +1 -3
- data/.data/spec/std/isa/inst/M/mulw.yaml +1 -3
- 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/flq.yaml +1 -0
- data/.data/spec/std/isa/inst/Q/fsq.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +1 -0
- data/.data/spec/std/isa/inst/Zbb/ctzw.yaml +6 -1
- 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/{Q → Zfa}/fleq.q.yaml +0 -1
- data/.data/spec/std/isa/inst/{F → Zfa}/fleq.s.yaml +1 -1
- data/.data/spec/std/isa/inst/{Q → Zfa}/fli.q.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/fli.s.yaml +1 -1
- data/.data/spec/std/isa/inst/{Q → Zfa}/fltq.q.yaml +2 -3
- data/.data/spec/std/isa/inst/{F → Zfa}/fltq.s.yaml +1 -1
- data/.data/spec/std/isa/inst/{Q → Zfa}/fmaxm.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Zfa/fmaxm.s.yaml +1 -1
- data/.data/spec/std/isa/inst/{Q → Zfa}/fminm.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Zfa/fminm.s.yaml +1 -1
- data/.data/spec/std/isa/inst/{Q → Zfa}/fmvp.q.x.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/Zibi/beqi.yaml +45 -0
- data/.data/spec/std/isa/inst/Zibi/bnei.yaml +45 -0
- data/.data/spec/std/isa/inst/Zicbom/cbo.inval.yaml +1 -1
- 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/Zicfiss/ssamoswap.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicfiss/sspopchk.yaml +63 -0
- data/.data/spec/std/isa/inst/Zicfiss/sspush.yaml +63 -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/Zimop/mop.r.28.yaml +1 -2
- data/.data/spec/std/isa/inst/Zimop/mop.r.N.layout +1 -2
- data/.data/spec/std/isa/inst/Zimop/mop.rr.7.yaml +1 -2
- data/.data/spec/std/isa/inst/Zimop/mop.rr.N.layout +1 -2
- 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/inst/{Zvbb → Zvkb}/vandn.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vandn.vx.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vbrev8.v.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrev8.v.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrol.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrol.vx.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vi.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vx.yaml +1 -1
- data/.data/spec/std/isa/isa/fp.idl +42 -18
- data/.data/spec/std/isa/isa/globals.isa +1 -1
- data/.data/spec/std/isa/isa/util.idl +3 -3
- data/.data/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml +70 -6
- data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +9 -0
- data/.data/spec/std/isa/param/ELEN.yaml +27 -5
- data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +1 -1
- 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/MCOUNTENABLE_EN.yaml +8 -0
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +71 -65
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +71 -65
- data/.data/spec/std/isa/param/MUTABLE_MISA_H.yaml +1 -1
- data/.data/spec/std/isa/param/MUTABLE_MISA_S.yaml +1 -1
- 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/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/lib/udb/Z3_VERSION +1 -1
- data/lib/udb/config.rb +1 -1
- 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/version.rb +1 -1
- data/lib/udb/version_spec.rb +1 -1
- data/lib/udb/z3.rb +29 -7
- metadata +80 -50
- data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml +0 -25
- data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml +0 -25
- data/.data/spec/std/isa/inst/Zicfiss/sspush.x1.yaml +0 -25
- data/.data/spec/std/isa/inst/Zicfiss/sspush.x5.yaml +0 -25
- data/.data/spec/std/isa/param/STVEC_MODE_DIRECT.yaml +0 -21
- data/.data/spec/std/isa/param/STVEC_MODE_VECTORED.yaml +0 -19
- data/.data/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml +0 -21
- data/.data/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml +0 -21
- /data/.data/spec/std/isa/inst/{Smdbltrp → Smctr}/sctrclr.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fcvtmod.w.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fleq.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fleq.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fli.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fli.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fltq.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fltq.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fmaxm.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fmaxm.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fminm.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fminm.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fmvh.x.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fmvh.x.q.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fmvp.d.x.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fround.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fround.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fround.q.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/froundnx.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/froundnx.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/froundnx.q.yaml +0 -0
|
@@ -13,13 +13,12 @@ description: |
|
|
|
13
13
|
|
|
14
14
|
`fltq.q` is defined like `flt.q`, except that quiet _NaN_ inputs do not cause the invalid
|
|
15
15
|
operation exception flag to be set.
|
|
16
|
-
This instruction is encoded like its `fle` counterpart, but with instruction bit 14 set to 1.
|
|
17
16
|
definedBy:
|
|
18
17
|
extension:
|
|
19
18
|
allOf:
|
|
20
19
|
- name: Q
|
|
21
20
|
- name: Zfa
|
|
22
|
-
assembly:
|
|
21
|
+
assembly: xd, fs1, fs2
|
|
23
22
|
encoding:
|
|
24
23
|
match: 1010011----------101-----1010011
|
|
25
24
|
variables:
|
|
@@ -27,7 +26,7 @@ encoding:
|
|
|
27
26
|
location: 24-20
|
|
28
27
|
- name: fs1
|
|
29
28
|
location: 19-15
|
|
30
|
-
- name:
|
|
29
|
+
- name: xd
|
|
31
30
|
location: 11-7
|
|
32
31
|
access:
|
|
33
32
|
s: always
|
|
@@ -13,7 +13,6 @@ description: |
|
|
|
13
13
|
If both inputs are _NaN_s, the result is the canonical _NaN_.
|
|
14
14
|
If either input is _NaN_, the result is the canonical _NaN_.
|
|
15
15
|
Signaling _NaN_ inputs set the invalid operation exception flag, even when the result is not _NaN_.
|
|
16
|
-
This instruction is encoded like its `fminm.q` counterpart, but with instruction bit 14 set to 1.
|
|
17
16
|
definedBy:
|
|
18
17
|
extension:
|
|
19
18
|
allOf:
|
|
@@ -13,7 +13,6 @@ description: |
|
|
|
13
13
|
If both inputs are _NaN_s, the result is the canonical _NaN_.
|
|
14
14
|
If either input is _NaN_, the result is the canonical _NaN_.
|
|
15
15
|
Signaling _NaN_ inputs set the invalid operation exception flag, even when the result is not _NaN_.
|
|
16
|
-
This instruction is encoded like its `fminm.q` counterpart, but with instruction bit 14 set to 1.
|
|
17
16
|
definedBy:
|
|
18
17
|
extension:
|
|
19
18
|
allOf:
|
|
@@ -8,7 +8,7 @@ kind: instruction
|
|
|
8
8
|
name: fmvp.q.x
|
|
9
9
|
long_name: Floating-Point Move Pair from Integer Registers to Quad-Precision Register
|
|
10
10
|
description: |
|
|
11
|
-
The `fmvp.q.x` instruction moves a
|
|
11
|
+
The `fmvp.q.x` instruction moves a quad-precision number from a pair of integer registers into
|
|
12
12
|
a floating-point register.
|
|
13
13
|
Integer registers `xs1` and `xs2` supply bits 63:0 and 127:64, respectively; the result is written to
|
|
14
14
|
floating-point register `fd`.
|
|
@@ -8,7 +8,7 @@ kind: instruction
|
|
|
8
8
|
name: flh
|
|
9
9
|
long_name: Half-precision floating-point load
|
|
10
10
|
description: |
|
|
11
|
-
The `flh` instruction loads a
|
|
11
|
+
The `flh` instruction loads a half-precision floating-point value from memory at address _xs1_ + _imm_ into floating-point register _xd_.
|
|
12
12
|
|
|
13
13
|
`flh` does not modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved.
|
|
14
14
|
|
|
@@ -16,13 +16,16 @@ description: |
|
|
|
16
16
|
|
|
17
17
|
definedBy:
|
|
18
18
|
extension:
|
|
19
|
-
|
|
19
|
+
anyOf:
|
|
20
|
+
- name: Zfhmin
|
|
21
|
+
- name: Zfbfmin
|
|
20
22
|
assembly: fd, imm(xs1)
|
|
21
23
|
encoding:
|
|
22
24
|
match: "-----------------001-----0000111"
|
|
23
25
|
variables:
|
|
24
26
|
- name: imm
|
|
25
27
|
location: 31-20
|
|
28
|
+
sign_extend: true
|
|
26
29
|
- name: xs1
|
|
27
30
|
location: 19-15
|
|
28
31
|
- name: fd
|
|
@@ -9,7 +9,9 @@ name: fmv.x.h
|
|
|
9
9
|
long_name: Move half-precision value from floating-point to integer register
|
|
10
10
|
definedBy:
|
|
11
11
|
extension:
|
|
12
|
-
|
|
12
|
+
anyOf:
|
|
13
|
+
- name: Zfhmin
|
|
14
|
+
- name: Zfbfmin
|
|
13
15
|
assembly: xd, fs1
|
|
14
16
|
description: |
|
|
15
17
|
Moves the half-precision value in floating-point register fs1 represented in IEEE 754-2008
|
|
@@ -19,13 +19,16 @@ description: |
|
|
|
19
19
|
|
|
20
20
|
definedBy:
|
|
21
21
|
extension:
|
|
22
|
-
|
|
22
|
+
anyOf:
|
|
23
|
+
- name: Zfhmin
|
|
24
|
+
- name: Zfbfmin
|
|
23
25
|
assembly: fs2, imm(xs1)
|
|
24
26
|
encoding:
|
|
25
27
|
match: "-----------------001-----0100111"
|
|
26
28
|
variables:
|
|
27
29
|
- name: imm
|
|
28
30
|
location: 31-25|11-7
|
|
31
|
+
sign_extend: true
|
|
29
32
|
- name: xs1
|
|
30
33
|
location: 19-15
|
|
31
34
|
- name: fs2
|
|
@@ -0,0 +1,45 @@
|
|
|
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: beqi
|
|
9
|
+
long_name: Branch if equal immediate
|
|
10
|
+
description: |
|
|
11
|
+
Branch to PC + offset if the value in register xs1 is equal to the XLEN-bit
|
|
12
|
+
comparison constant decoded from cimm.
|
|
13
|
+
|
|
14
|
+
The cimm field is not sign-extended: cimm == 0 encodes the value -1, and
|
|
15
|
+
cimm values 1 through 31 encode the corresponding positive integer values.
|
|
16
|
+
|
|
17
|
+
Raise a `MisalignedAddress` exception if the branch is taken and PC + offset is
|
|
18
|
+
misaligned.
|
|
19
|
+
definedBy:
|
|
20
|
+
extension:
|
|
21
|
+
name: Zibi
|
|
22
|
+
assembly: xs1, cimm, offset
|
|
23
|
+
encoding:
|
|
24
|
+
match: "-----------------010-----1100011"
|
|
25
|
+
variables:
|
|
26
|
+
- name: offset
|
|
27
|
+
location: 31|7|30-25|11-8
|
|
28
|
+
left_shift: 1
|
|
29
|
+
sign_extend: true
|
|
30
|
+
- name: cimm
|
|
31
|
+
location: 24-20
|
|
32
|
+
- name: xs1
|
|
33
|
+
location: 19-15
|
|
34
|
+
access:
|
|
35
|
+
s: always
|
|
36
|
+
u: always
|
|
37
|
+
vs: always
|
|
38
|
+
vu: always
|
|
39
|
+
operation(): |
|
|
40
|
+
XReg lhs = X[xs1];
|
|
41
|
+
XReg rhs = (cimm == 0) ? {MXLEN{1'b1}} : cimm;
|
|
42
|
+
|
|
43
|
+
if (lhs == rhs) {
|
|
44
|
+
jump_halfword($pc + $signed(offset));
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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: bnei
|
|
9
|
+
long_name: Branch if not equal immediate
|
|
10
|
+
description: |
|
|
11
|
+
Branch to PC + offset if the value in register xs1 is not equal to the XLEN-bit
|
|
12
|
+
comparison constant decoded from cimm.
|
|
13
|
+
|
|
14
|
+
The cimm field is not sign-extended: cimm == 0 encodes the value -1, and
|
|
15
|
+
cimm values 1 through 31 encode the corresponding positive integer values.
|
|
16
|
+
|
|
17
|
+
Raise a `MisalignedAddress` exception if the branch is taken and PC + offset is
|
|
18
|
+
misaligned.
|
|
19
|
+
definedBy:
|
|
20
|
+
extension:
|
|
21
|
+
name: Zibi
|
|
22
|
+
assembly: xs1, cimm, offset
|
|
23
|
+
encoding:
|
|
24
|
+
match: "-----------------011-----1100011"
|
|
25
|
+
variables:
|
|
26
|
+
- name: offset
|
|
27
|
+
location: 31|7|30-25|11-8
|
|
28
|
+
left_shift: 1
|
|
29
|
+
sign_extend: true
|
|
30
|
+
- name: cimm
|
|
31
|
+
location: 24-20
|
|
32
|
+
- name: xs1
|
|
33
|
+
location: 19-15
|
|
34
|
+
access:
|
|
35
|
+
s: always
|
|
36
|
+
u: always
|
|
37
|
+
vs: always
|
|
38
|
+
vu: always
|
|
39
|
+
operation(): |
|
|
40
|
+
XReg lhs = X[xs1];
|
|
41
|
+
XReg rhs = (cimm == 0) ? {MXLEN{1'b1}} : cimm;
|
|
42
|
+
|
|
43
|
+
if (lhs != rhs) {
|
|
44
|
+
jump_halfword($pc + $signed(offset));
|
|
45
|
+
}
|
|
@@ -52,7 +52,7 @@ description: |
|
|
|
52
52
|
`cbo.inval` is ordered by `FENCE` instructions but not `FENCE.I` or `SFENCE.VMA`.
|
|
53
53
|
|
|
54
54
|
<%- if CACHE_BLOCK_SIZE.bit_length > [PMP_GRANULARITY, PMA_GRANULARITY].min -%>
|
|
55
|
-
Both PMP and PMA access control must be the same for all bytes in the block; otherwise, `cbo.
|
|
55
|
+
Both PMP and PMA access control must be the same for all bytes in the block; otherwise, `cbo.inval` has UNSPECIFIED behavior.
|
|
56
56
|
<%- end -%>
|
|
57
57
|
|
|
58
58
|
Invalidate operations are treated as stores for page and access permissions. If permission checks fail,
|
|
@@ -0,0 +1,30 @@
|
|
|
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/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: inst_schema.json#
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: c.sspopchk
|
|
9
|
+
long_name: Compressed Shadow Stack Pop and Check
|
|
10
|
+
description: |
|
|
11
|
+
C.SSPOPCHK pops a value from the shadow stack and checks it against link
|
|
12
|
+
register `x5`.
|
|
13
|
+
|
|
14
|
+
This instruction uses the `c.mop.5` codepoint provided by Zcmop and expands
|
|
15
|
+
to `sspopchk x5`.
|
|
16
|
+
definedBy:
|
|
17
|
+
extension:
|
|
18
|
+
allOf:
|
|
19
|
+
- name: Zicfiss
|
|
20
|
+
- name: Zcmop
|
|
21
|
+
assembly: x5
|
|
22
|
+
encoding:
|
|
23
|
+
match: "0110001010000001"
|
|
24
|
+
access:
|
|
25
|
+
s: always
|
|
26
|
+
u: always
|
|
27
|
+
vs: always
|
|
28
|
+
vu: always
|
|
29
|
+
data_independent_timing: false
|
|
30
|
+
operation(): |
|
|
@@ -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/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: inst_schema.json#
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: c.sspush
|
|
9
|
+
long_name: Compressed Shadow Stack Push
|
|
10
|
+
description: |
|
|
11
|
+
C.SSPUSH pushes link register `x1` to the shadow stack.
|
|
12
|
+
|
|
13
|
+
This instruction uses the `c.mop.1` codepoint provided by Zcmop and expands
|
|
14
|
+
to `sspush x1`.
|
|
15
|
+
definedBy:
|
|
16
|
+
extension:
|
|
17
|
+
allOf:
|
|
18
|
+
- name: Zicfiss
|
|
19
|
+
- name: Zcmop
|
|
20
|
+
assembly: x1
|
|
21
|
+
encoding:
|
|
22
|
+
match: "0110000010000001"
|
|
23
|
+
access:
|
|
24
|
+
s: always
|
|
25
|
+
u: always
|
|
26
|
+
vs: always
|
|
27
|
+
vu: always
|
|
28
|
+
data_independent_timing: false
|
|
29
|
+
operation(): |
|
|
@@ -0,0 +1,63 @@
|
|
|
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/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: inst_schema.json#
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: sspopchk
|
|
9
|
+
long_name: Shadow Stack Pop and Check
|
|
10
|
+
description: |
|
|
11
|
+
SSPOPCHK pops a value from the shadow stack and checks it against link
|
|
12
|
+
register `xs1`. The encoding restricts `xs1` to `x1` or `x5`.
|
|
13
|
+
|
|
14
|
+
This instruction uses the `mop.r.28` codepoint provided by Zimop.
|
|
15
|
+
definedBy:
|
|
16
|
+
extension:
|
|
17
|
+
name: Zicfiss
|
|
18
|
+
assembly: xs1
|
|
19
|
+
encoding:
|
|
20
|
+
match: "110011011100-----100000001110011"
|
|
21
|
+
variables:
|
|
22
|
+
- name: xs1
|
|
23
|
+
location: 19-15
|
|
24
|
+
not:
|
|
25
|
+
[
|
|
26
|
+
0,
|
|
27
|
+
2,
|
|
28
|
+
3,
|
|
29
|
+
4,
|
|
30
|
+
6,
|
|
31
|
+
7,
|
|
32
|
+
8,
|
|
33
|
+
9,
|
|
34
|
+
10,
|
|
35
|
+
11,
|
|
36
|
+
12,
|
|
37
|
+
13,
|
|
38
|
+
14,
|
|
39
|
+
15,
|
|
40
|
+
16,
|
|
41
|
+
17,
|
|
42
|
+
18,
|
|
43
|
+
19,
|
|
44
|
+
20,
|
|
45
|
+
21,
|
|
46
|
+
22,
|
|
47
|
+
23,
|
|
48
|
+
24,
|
|
49
|
+
25,
|
|
50
|
+
26,
|
|
51
|
+
27,
|
|
52
|
+
28,
|
|
53
|
+
29,
|
|
54
|
+
30,
|
|
55
|
+
31,
|
|
56
|
+
]
|
|
57
|
+
access:
|
|
58
|
+
s: always
|
|
59
|
+
u: always
|
|
60
|
+
vs: always
|
|
61
|
+
vu: always
|
|
62
|
+
data_independent_timing: false
|
|
63
|
+
operation(): |
|
|
@@ -0,0 +1,63 @@
|
|
|
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/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: inst_schema.json#
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: sspush
|
|
9
|
+
long_name: Shadow Stack Push
|
|
10
|
+
description: |
|
|
11
|
+
SSPUSH pushes the value of link register `xs2` to the shadow stack.
|
|
12
|
+
The encoding restricts `xs2` to `x1` or `x5`.
|
|
13
|
+
|
|
14
|
+
This instruction uses the `mop.rr.7` codepoint provided by Zimop.
|
|
15
|
+
definedBy:
|
|
16
|
+
extension:
|
|
17
|
+
name: Zicfiss
|
|
18
|
+
assembly: xs2
|
|
19
|
+
encoding:
|
|
20
|
+
match: "1100111-----00000100000001110011"
|
|
21
|
+
variables:
|
|
22
|
+
- name: xs2
|
|
23
|
+
location: 24-20
|
|
24
|
+
not:
|
|
25
|
+
[
|
|
26
|
+
0,
|
|
27
|
+
2,
|
|
28
|
+
3,
|
|
29
|
+
4,
|
|
30
|
+
6,
|
|
31
|
+
7,
|
|
32
|
+
8,
|
|
33
|
+
9,
|
|
34
|
+
10,
|
|
35
|
+
11,
|
|
36
|
+
12,
|
|
37
|
+
13,
|
|
38
|
+
14,
|
|
39
|
+
15,
|
|
40
|
+
16,
|
|
41
|
+
17,
|
|
42
|
+
18,
|
|
43
|
+
19,
|
|
44
|
+
20,
|
|
45
|
+
21,
|
|
46
|
+
22,
|
|
47
|
+
23,
|
|
48
|
+
24,
|
|
49
|
+
25,
|
|
50
|
+
26,
|
|
51
|
+
27,
|
|
52
|
+
28,
|
|
53
|
+
29,
|
|
54
|
+
30,
|
|
55
|
+
31,
|
|
56
|
+
]
|
|
57
|
+
access:
|
|
58
|
+
s: always
|
|
59
|
+
u: always
|
|
60
|
+
vs: always
|
|
61
|
+
vu: always
|
|
62
|
+
data_independent_timing: false
|
|
63
|
+
operation(): |
|
|
@@ -34,6 +34,18 @@ access:
|
|
|
34
34
|
vs: always
|
|
35
35
|
vu: always
|
|
36
36
|
pseudoinstructions:
|
|
37
|
+
- when: xd == 0 && csr == 0x001
|
|
38
|
+
to: fsflags xs1
|
|
39
|
+
- when: xd == 0 && csr == 0x002
|
|
40
|
+
to: fsrm xs1
|
|
41
|
+
- when: xd == 0 && csr == 0x003
|
|
42
|
+
to: fscsr xs1
|
|
43
|
+
- when: csr == 0x001
|
|
44
|
+
to: fsflags xd, xs1
|
|
45
|
+
- when: csr == 0x002
|
|
46
|
+
to: fsrm xd, xs1
|
|
47
|
+
- when: csr == 0x003
|
|
48
|
+
to: fscsr xd, xs1
|
|
37
49
|
- when: xd == 0
|
|
38
50
|
to: csrw csr, xs1
|
|
39
51
|
operation(): |
|
|
@@ -0,0 +1,38 @@
|
|
|
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: lxd
|
|
9
|
+
long_name: Load indexed doubleword
|
|
10
|
+
description: |
|
|
11
|
+
Load 64 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
|
+
|
|
14
|
+
This instruction is defined only for RV64.
|
|
15
|
+
definedBy:
|
|
16
|
+
allOf:
|
|
17
|
+
- xlen: 64
|
|
18
|
+
- extension:
|
|
19
|
+
name: Zilx
|
|
20
|
+
assembly: xd, (xs2), xs1
|
|
21
|
+
encoding:
|
|
22
|
+
match: 1001000----------011-----0101111
|
|
23
|
+
variables:
|
|
24
|
+
- name: xs2
|
|
25
|
+
location: 24-20
|
|
26
|
+
- name: xs1
|
|
27
|
+
location: 19-15
|
|
28
|
+
- name: xd
|
|
29
|
+
location: 11-7
|
|
30
|
+
access:
|
|
31
|
+
s: always
|
|
32
|
+
u: always
|
|
33
|
+
vs: always
|
|
34
|
+
vu: always
|
|
35
|
+
operation(): |
|
|
36
|
+
XReg virtual_address = X[xs2] + X[xs1];
|
|
37
|
+
|
|
38
|
+
X[xd] = read_memory(64, 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: lxh
|
|
9
|
+
long_name: Load indexed halfword
|
|
10
|
+
description: |
|
|
11
|
+
Load 16 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
|
+
Sign extend the result to XLEN.
|
|
14
|
+
definedBy:
|
|
15
|
+
extension:
|
|
16
|
+
name: Zilx
|
|
17
|
+
assembly: xd, (xs2), xs1
|
|
18
|
+
encoding:
|
|
19
|
+
match: 1001000----------001-----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(16, virtual_address, $encoding), 16);
|
|
@@ -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: lxhu
|
|
9
|
+
long_name: Load indexed halfword unsigned
|
|
10
|
+
description: |
|
|
11
|
+
Load 16 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 XLEN.
|
|
14
|
+
definedBy:
|
|
15
|
+
extension:
|
|
16
|
+
name: Zilx
|
|
17
|
+
assembly: xd, (xs2), xs1
|
|
18
|
+
encoding:
|
|
19
|
+
match: 1001000----------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];
|
|
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: lxsb
|
|
9
|
+
long_name: Load scaled indexed byte
|
|
10
|
+
description: |
|
|
11
|
+
Load 8 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
|
+
Sign extend the result to XLEN.
|
|
14
|
+
|
|
15
|
+
The `lxb` mnemonic is an assembler pseudoinstruction for `lxsb`.
|
|
16
|
+
definedBy:
|
|
17
|
+
extension:
|
|
18
|
+
name: Zilx
|
|
19
|
+
assembly: xd, (xs2), xs1
|
|
20
|
+
encoding:
|
|
21
|
+
match: 1101000----------000-----0101111
|
|
22
|
+
variables:
|
|
23
|
+
- name: xs2
|
|
24
|
+
location: 24-20
|
|
25
|
+
- name: xs1
|
|
26
|
+
location: 19-15
|
|
27
|
+
- name: xd
|
|
28
|
+
location: 11-7
|
|
29
|
+
access:
|
|
30
|
+
s: always
|
|
31
|
+
u: always
|
|
32
|
+
vs: always
|
|
33
|
+
vu: always
|
|
34
|
+
pseudoinstructions:
|
|
35
|
+
- when: "true"
|
|
36
|
+
to: lxb xd, (xs2), xs1
|
|
37
|
+
operation(): |
|
|
38
|
+
XReg virtual_address = X[xs2] + X[xs1];
|
|
39
|
+
|
|
40
|
+
X[xd] = sext(read_memory(8, virtual_address, $encoding), 8);
|