udb 0.1.17 → 0.1.18
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 +140 -5
- data/.data/cfgs/profile/RVA23S64.yaml +1 -1
- data/.data/cfgs/profile/RVA23p1S64.yaml +217 -0
- data/.data/cfgs/profile/RVB23S64.yaml +1 -1
- data/.data/cfgs/profile/RVB23p1S64.yaml +179 -0
- data/.data/cfgs/rv32-riscv-tests.yaml +134 -0
- data/.data/cfgs/rv32-vector.yaml +134 -0
- data/.data/cfgs/rv64-riscv-tests.yaml +134 -0
- data/.data/cfgs/rv64-vector.yaml +134 -0
- data/.data/spec/schemas/schema_defs.json +4 -1
- data/.data/spec/std/isa/csr/I/mcounteren.layout +7 -0
- data/.data/spec/std/isa/csr/I/mcounteren.yaml +7 -0
- data/.data/spec/std/isa/csr/Smcdeleg/scountinhibit.layout +111 -0
- data/.data/spec/std/isa/csr/Smcdeleg/scountinhibit.yaml +840 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +2 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +2 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +2 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +2 -0
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +7 -0
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +7 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent10.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent11.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent12.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent13.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent14.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent15.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent16.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent17.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent18.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent19.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent20.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent21.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent22.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent23.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent24.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent25.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent26.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent27.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent28.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent29.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent3.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent30.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent31.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent4.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent5.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent6.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent7.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent8.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent9.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmeventN.layout +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmeventNh.layout +4 -4
- data/.data/spec/std/isa/csr/Zkr/seed.yaml +75 -0
- data/.data/spec/std/isa/csr/hcontext.yaml +4 -4
- data/.data/spec/std/isa/csr/mcontext.yaml +4 -4
- data/.data/spec/std/isa/csr/mcycle.yaml +2 -0
- data/.data/spec/std/isa/csr/mcycleh.yaml +2 -0
- data/.data/spec/std/isa/csr/medeleg.yaml +72 -36
- data/.data/spec/std/isa/csr/menvcfg.yaml +12 -1
- data/.data/spec/std/isa/csr/menvcfgh.yaml +12 -0
- data/.data/spec/std/isa/csr/mideleg.yaml +13 -36
- data/.data/spec/std/isa/csr/mie.yaml +3 -6
- data/.data/spec/std/isa/csr/minstret.yaml +2 -0
- data/.data/spec/std/isa/csr/minstreth.yaml +2 -0
- data/.data/spec/std/isa/csr/mip.yaml +3 -6
- data/.data/spec/std/isa/csr/misa.yaml +3 -23
- data/.data/spec/std/isa/csr/mseccfg.yaml +27 -1
- data/.data/spec/std/isa/csr/mstatus.yaml +8 -2
- data/.data/spec/std/isa/csr/scontext.yaml +8 -4
- data/.data/spec/std/isa/csr/tcontrol.yaml +6 -2
- data/.data/spec/std/isa/csr/tdata2.yaml +6 -2
- data/.data/spec/std/isa/csr/tdata3.yaml +6 -2
- data/.data/spec/std/isa/ext/Sdext.yaml +58 -2
- data/.data/spec/std/isa/ext/Sm.yaml +2 -2
- data/.data/spec/std/isa/ext/Smcdeleg.yaml +7 -0
- data/.data/spec/std/isa/ext/Smmpm.yaml +8 -0
- data/.data/spec/std/isa/ext/Smnpm.yaml +19 -0
- data/.data/spec/std/isa/ext/Smpmpdeleg.yaml +33 -0
- data/.data/spec/std/isa/ext/Ssccfg.yaml +7 -0
- data/.data/spec/std/isa/ext/Ssnpm.yaml +8 -0
- data/.data/spec/std/isa/ext/Sspmp.yaml +44 -0
- data/.data/spec/std/isa/ext/Sspmpen.yaml +30 -0
- data/.data/spec/std/isa/ext/Zvabd.yaml +5 -1
- data/.data/spec/std/isa/ext/Zvfbdota32f.yaml +23 -0
- data/.data/spec/std/isa/ext/Zvzip.yaml +24 -0
- data/.data/spec/std/isa/inst/C/c.bnez.yaml +2 -2
- data/.data/spec/std/isa/inst/H/hlv.b.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.bu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.d.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.h.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.hu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.w.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.wu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlvx.hu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlvx.wu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hsv.b.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hsv.d.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hsv.h.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hsv.w.yaml +1 -1
- data/.data/spec/std/isa/inst/I/ld.yaml +9 -8
- data/.data/spec/std/isa/inst/I/sd.yaml +9 -8
- data/.data/spec/std/isa/inst/Q/fcvt.q.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Q/flq.yaml +1 -1
- data/.data/spec/std/isa/inst/Sdext/dret.yaml +72 -6
- data/.data/spec/std/isa/inst/V/vfncvt.f.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.f.x.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.x.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclip.wi.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclip.wv.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclip.wx.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclipu.wi.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclipu.wv.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclipu.wx.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsra.wi.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsra.wv.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsra.wx.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsrl.wi.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsrl.wv.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +2 -2
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +28 -20
- data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +35 -20
- data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +3 -3
- data/.data/spec/std/isa/inst/Zvabd/vabd.vx.yaml +69 -0
- data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +3 -3
- data/.data/spec/std/isa/inst/Zvabd/{vabs.v.yaml → vabdu.vx.yaml} +17 -11
- data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/Zvabd/vwabda.vx.yaml +73 -0
- data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/Zvabd/vwabdau.vx.yaml +74 -0
- data/.data/spec/std/isa/inst/Zvfbdota32f/vfbdota.vv.yaml +68 -0
- data/.data/spec/std/isa/inst/Zvzip/vpaire.vv.yaml +36 -0
- data/.data/spec/std/isa/inst/Zvzip/vpairo.vv.yaml +37 -0
- data/.data/spec/std/isa/inst/Zvzip/vunzipe.v.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvzip/vunzipo.v.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvzip/vzip.vv.yaml +37 -0
- data/.data/spec/std/isa/isa/builtin_functions.idl +51 -0
- data/.data/spec/std/isa/isa/globals.isa +117 -5
- data/.data/spec/std/isa/param/HCONTEXT_IMPLEMENTED.yaml +29 -0
- data/.data/spec/std/isa/param/{MCONTEXT_AVAILABLE.yaml → MCONTEXT_IMPLEMENTED.yaml} +3 -3
- data/.data/spec/std/isa/param/MEDELEG_DELEGATABLE.yaml +121 -0
- data/.data/spec/std/isa/param/MEI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/MIDELEG_DELEGATABLE.yaml +177 -0
- data/.data/spec/std/isa/param/MSI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/MTI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/SCONTEXT_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/SDTRIG_BREAKPOINT_REENTRANCY.yaml +45 -0
- data/.data/spec/std/isa/param/SDTRIG_ETRIGGER_SUPPORTED_EXCEPTIONS.yaml +37 -0
- data/.data/spec/std/isa/param/SDTRIG_ETRIGGER_SUPPORTED_TRIGGERS.yaml +25 -0
- data/.data/spec/std/isa/param/SDTRIG_ICOUNT_COUNT_HARDWIRED_1.yaml +23 -0
- data/.data/spec/std/isa/param/SDTRIG_ICOUNT_SELF_WRITE_SETS_PENDING.yaml +23 -0
- data/.data/spec/std/isa/param/SDTRIG_ICOUNT_SUPPORTED_TRIGGERS.yaml +25 -0
- data/.data/spec/std/isa/param/SDTRIG_ITRIGGER_SUPPORTED_INTERRUPTS.yaml +37 -0
- data/.data/spec/std/isa/param/SDTRIG_ITRIGGER_SUPPORTED_TRIGGERS.yaml +25 -0
- data/.data/spec/std/isa/param/SDTRIG_MAX_CHAIN_LENGTH.yaml +33 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_EXECUTE_WRITABLE.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_LOAD_WRITABLE.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_MASKMAX6.yaml +26 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_MATCH_LEGAL_VALUES.yaml +41 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SELECT_WRITABLE.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SIZE_LEGAL_VALUES.yaml +38 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_STORE_WRITABLE.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SUPPORTED_TRIGGERS.yaml +25 -0
- data/.data/spec/std/isa/param/SDTRIG_M_WRITABLE.yaml +17 -0
- data/.data/spec/std/isa/param/SDTRIG_NUM_TRIGGERS.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_S_WRITABLE.yaml +19 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHSELECT_MCONTEXT_MATCH.yaml +24 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHSELECT_VMID_MATCH.yaml +23 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHVALUE_LEN.yaml +26 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SSELECT_ASID_MATCH.yaml +23 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SSELECT_SCONTEXT_MATCH.yaml +26 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SVALUE_LEN.yaml +26 -0
- data/.data/spec/std/isa/param/SDTRIG_U_WRITABLE.yaml +19 -0
- data/.data/spec/std/isa/param/SDTRIG_VS_WRITABLE.yaml +19 -0
- data/.data/spec/std/isa/param/SDTRIG_VU_WRITABLE.yaml +19 -0
- data/.data/spec/std/isa/param/SEI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/SSEED_READ_ONLY_ZERO.yaml +28 -0
- data/.data/spec/std/isa/param/SSI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/STI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/TCONTROL_IMPLEMENTED.yaml +16 -0
- data/.data/spec/std/isa/param/TDATA2_IMPLEMENTED.yaml +26 -0
- data/.data/spec/std/isa/param/TDATA3_IMPLEMENTED.yaml +29 -0
- data/.data/spec/std/isa/param/USEED_READ_ONLY_ZERO.yaml +28 -0
- data/.data/spec/std/isa/profile/RVA23p1S64.yaml +37 -0
- data/.data/spec/std/isa/profile/RVB23p1S64.yaml +39 -0
- data/.data/spec/std/isa/profile_family/RVA.yaml +3 -1
- data/.data/spec/std/isa/profile_family/RVB.yaml +3 -1
- data/.data/spec/std/isa/profile_release/RVA23p1.yaml +30 -0
- data/.data/spec/std/isa/profile_release/RVB23p1.yaml +30 -0
- data/lib/udb/version.rb +1 -1
- metadata +65 -8
- data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +0 -19
- data/.data/spec/std/isa/param/VSEI_INTR_IMPL.yaml +0 -28
- data/.data/spec/std/isa/param/VSSI_INTR_IMPL.yaml +0 -28
- data/.data/spec/std/isa/param/VSTI_INTR_IMPL.yaml +0 -33
|
@@ -0,0 +1,69 @@
|
|
|
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.vx
|
|
9
|
+
long_name: Vector Single-Width Signed Integer Absolute Difference with Scalar
|
|
10
|
+
description: |
|
|
11
|
+
Computes the element-wise absolute difference of signed integer operands from
|
|
12
|
+
vector register vs2 and scalar register xs1, and writes the SEW-bit results to
|
|
13
|
+
vd according to mask vm. The scalar is sign-extended or truncated to SEW.
|
|
14
|
+
|
|
15
|
+
Supports SEW of 8, 16, and 32, and SEW of 64 when Zve64x is implemented.
|
|
16
|
+
definedBy:
|
|
17
|
+
extension:
|
|
18
|
+
name: Zvabd
|
|
19
|
+
assembly: vd, vs2, xs1, vm
|
|
20
|
+
encoding:
|
|
21
|
+
match: 010101-----------110-----1010111
|
|
22
|
+
variables:
|
|
23
|
+
- name: vm
|
|
24
|
+
location: 25
|
|
25
|
+
- name: vs2
|
|
26
|
+
location: 24-20
|
|
27
|
+
- name: xs1
|
|
28
|
+
location: 19-15
|
|
29
|
+
- name: vd
|
|
30
|
+
location: 11-7
|
|
31
|
+
access:
|
|
32
|
+
s: always
|
|
33
|
+
u: always
|
|
34
|
+
vs: always
|
|
35
|
+
vu: always
|
|
36
|
+
pseudoinstructions:
|
|
37
|
+
- when: xs1 == 0
|
|
38
|
+
to: vabs.v vd, vs2, vm
|
|
39
|
+
operation(): |
|
|
40
|
+
VectorState state = vector_state();
|
|
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
|
+
Bits<64> scalar = $signed(X[xs1]);
|
|
53
|
+
|
|
54
|
+
for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
|
|
55
|
+
U32 start_bit_pos = i * state.sew;
|
|
56
|
+
U32 end_bit_pos = start_bit_pos + state.sew - 1;
|
|
57
|
+
if (vm == 1'b1 || V[0][i:i] == 1'b1) {
|
|
58
|
+
# active element
|
|
59
|
+
if ($signed(V[vs2][end_bit_pos:start_bit_pos]) >= $signed(scalar[state.sew-1:0])) {
|
|
60
|
+
V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos] - scalar[state.sew-1:0];
|
|
61
|
+
} else {
|
|
62
|
+
V[vd][end_bit_pos:start_bit_pos] = scalar[state.sew-1:0] - V[vs2][end_bit_pos:start_bit_pos];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
# inactive element: handled according to vtype.VMA policy
|
|
66
|
+
}
|
|
67
|
+
# tail elements (i >= vl): handled according to vtype.VTA policy
|
|
68
|
+
|
|
69
|
+
CSR[vstart].VALUE = 0;
|
|
@@ -11,13 +11,13 @@ description: |
|
|
|
11
11
|
Computes the element-wise absolute difference of two unsigned integer SEW-bit
|
|
12
12
|
source operands vs1 and vs2 and writes the result to vd according to mask vm.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Supports SEW of 8, 16, and 32. If the Zve64x extension is supported, SEW 64 is also supported.
|
|
15
15
|
definedBy:
|
|
16
16
|
extension:
|
|
17
17
|
name: Zvabd
|
|
18
18
|
assembly: vd, vs2, vs1, vm
|
|
19
19
|
encoding:
|
|
20
|
-
match:
|
|
20
|
+
match: 010110-----------010-----1010111
|
|
21
21
|
variables:
|
|
22
22
|
- name: vm
|
|
23
23
|
location: 25
|
|
@@ -35,7 +35,7 @@ access:
|
|
|
35
35
|
operation(): |
|
|
36
36
|
VectorState state = vector_state();
|
|
37
37
|
|
|
38
|
-
if (
|
|
38
|
+
if (!implemented?(ExtensionName::Zve64x) && state.sew > 32) {
|
|
39
39
|
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -5,25 +5,28 @@
|
|
|
5
5
|
|
|
6
6
|
$schema: "inst_schema.json#"
|
|
7
7
|
kind: instruction
|
|
8
|
-
name:
|
|
9
|
-
long_name: Vector Single-Width
|
|
8
|
+
name: vabdu.vx
|
|
9
|
+
long_name: Vector Single-Width Unsigned Integer Absolute Difference with Scalar
|
|
10
10
|
description: |
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
Computes the element-wise absolute difference of unsigned integer operands
|
|
12
|
+
from vector register vs2 and scalar register xs1, and writes the SEW-bit
|
|
13
|
+
results to vd according to mask vm. The scalar is sign-extended or truncated
|
|
14
|
+
to SEW before being interpreted as an unsigned value.
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
When Zve64x is implemented, vabs.v also supports SEW of 64.
|
|
16
|
+
Supports SEW of 8, 16, and 32, and SEW of 64 when Zve64x is implemented.
|
|
16
17
|
definedBy:
|
|
17
18
|
extension:
|
|
18
19
|
name: Zvabd
|
|
19
|
-
assembly: vd, vs2, vm
|
|
20
|
+
assembly: vd, vs2, xs1, vm
|
|
20
21
|
encoding:
|
|
21
|
-
match:
|
|
22
|
+
match: 010110-----------110-----1010111
|
|
22
23
|
variables:
|
|
23
24
|
- name: vm
|
|
24
25
|
location: 25
|
|
25
26
|
- name: vs2
|
|
26
27
|
location: 24-20
|
|
28
|
+
- name: xs1
|
|
29
|
+
location: 19-15
|
|
27
30
|
- name: vd
|
|
28
31
|
location: 11-7
|
|
29
32
|
access:
|
|
@@ -33,6 +36,7 @@ access:
|
|
|
33
36
|
vu: always
|
|
34
37
|
operation(): |
|
|
35
38
|
VectorState state = vector_state();
|
|
39
|
+
|
|
36
40
|
VectorLmulType lmul_type = state.lmul_type;
|
|
37
41
|
|
|
38
42
|
XReg vlen = VLEN;
|
|
@@ -43,15 +47,17 @@ operation(): |
|
|
|
43
47
|
vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
|
|
44
48
|
}
|
|
45
49
|
|
|
50
|
+
Bits<64> scalar = $signed(X[xs1]);
|
|
51
|
+
|
|
46
52
|
for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
|
|
47
53
|
U32 start_bit_pos = i * state.sew;
|
|
48
54
|
U32 end_bit_pos = start_bit_pos + state.sew - 1;
|
|
49
55
|
if (vm == 1'b1 || V[0][i:i] == 1'b1) {
|
|
50
56
|
# active element
|
|
51
|
-
if (V[vs2][end_bit_pos:
|
|
52
|
-
V[vd][end_bit_pos:start_bit_pos] =
|
|
57
|
+
if (V[vs2][end_bit_pos:start_bit_pos] >= scalar[state.sew-1:0]) {
|
|
58
|
+
V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos] - scalar[state.sew-1:0];
|
|
53
59
|
} else {
|
|
54
|
-
V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos];
|
|
60
|
+
V[vd][end_bit_pos:start_bit_pos] = scalar[state.sew-1:0] - V[vs2][end_bit_pos:start_bit_pos];
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
63
|
# inactive element: handled according to vtype.VMA policy
|
|
@@ -0,0 +1,73 @@
|
|
|
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: vwabda.vx
|
|
9
|
+
long_name: Vector Widening Signed Integer Absolute Difference and Accumulate with Scalar
|
|
10
|
+
description: |
|
|
11
|
+
Computes the element-wise absolute difference of signed integer operands from
|
|
12
|
+
vector register vs2 and scalar register xs1, and accumulates the results into
|
|
13
|
+
the 2*SEW-bit elements of vd. The scalar is sign-extended or truncated to SEW.
|
|
14
|
+
|
|
15
|
+
Reserved when SEW is neither 8 nor 16.
|
|
16
|
+
definedBy:
|
|
17
|
+
extension:
|
|
18
|
+
name: Zvabd
|
|
19
|
+
assembly: vd, vs2, xs1, vm
|
|
20
|
+
encoding:
|
|
21
|
+
match: 111101-----------100-----1010111
|
|
22
|
+
variables:
|
|
23
|
+
- name: vm
|
|
24
|
+
location: 25
|
|
25
|
+
- name: vs2
|
|
26
|
+
location: 24-20
|
|
27
|
+
- name: xs1
|
|
28
|
+
location: 19-15
|
|
29
|
+
- name: vd
|
|
30
|
+
location: 11-7
|
|
31
|
+
access:
|
|
32
|
+
s: always
|
|
33
|
+
u: always
|
|
34
|
+
vs: always
|
|
35
|
+
vu: always
|
|
36
|
+
operation(): |
|
|
37
|
+
VectorState state = vector_state();
|
|
38
|
+
|
|
39
|
+
if (state.sew != 8 && state.sew != 16) {
|
|
40
|
+
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
VectorLmulType lmul_type = state.lmul_type;
|
|
44
|
+
|
|
45
|
+
XReg vlen = VLEN;
|
|
46
|
+
XReg vlmax;
|
|
47
|
+
if (lmul_type == VectorLmulType::Multiply) {
|
|
48
|
+
vlmax = (vlen << state.log2_lmul) >> state.log2_sew;
|
|
49
|
+
} else {
|
|
50
|
+
vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
Bits<64> scalar = $signed(X[xs1]);
|
|
54
|
+
U32 sew2 = state.sew + state.sew;
|
|
55
|
+
|
|
56
|
+
for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
|
|
57
|
+
U32 src_start = i * state.sew;
|
|
58
|
+
U32 src_end = src_start + state.sew - 1;
|
|
59
|
+
U32 dst_start = i * sew2;
|
|
60
|
+
U32 dst_end = dst_start + sew2 - 1;
|
|
61
|
+
if (vm == 1'b1 || V[0][i:i] == 1'b1) {
|
|
62
|
+
# active element
|
|
63
|
+
if ($signed(V[vs2][src_end:src_start]) >= $signed(scalar[state.sew-1:0])) {
|
|
64
|
+
V[vd][dst_end:dst_start] = V[vd][dst_end:dst_start] + (V[vs2][src_end:src_start] - scalar[state.sew-1:0]);
|
|
65
|
+
} else {
|
|
66
|
+
V[vd][dst_end:dst_start] = V[vd][dst_end:dst_start] + (scalar[state.sew-1:0] - V[vs2][src_end:src_start]);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
# inactive element: handled according to vtype.VMA policy
|
|
70
|
+
}
|
|
71
|
+
# tail elements (i >= vl): handled according to vtype.VTA policy
|
|
72
|
+
|
|
73
|
+
CSR[vstart].VALUE = 0;
|
|
@@ -0,0 +1,74 @@
|
|
|
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: vwabdau.vx
|
|
9
|
+
long_name: Vector Widening Unsigned Integer Absolute Difference and Accumulate with Scalar
|
|
10
|
+
description: |
|
|
11
|
+
Computes the element-wise absolute difference of unsigned integer operands
|
|
12
|
+
from vector register vs2 and scalar register xs1, and accumulates the results
|
|
13
|
+
into the 2*SEW-bit elements of vd. The scalar is sign-extended or truncated
|
|
14
|
+
to SEW before being interpreted as an unsigned value.
|
|
15
|
+
|
|
16
|
+
Reserved when SEW is neither 8 nor 16.
|
|
17
|
+
definedBy:
|
|
18
|
+
extension:
|
|
19
|
+
name: Zvabd
|
|
20
|
+
assembly: vd, vs2, xs1, vm
|
|
21
|
+
encoding:
|
|
22
|
+
match: 111110-----------100-----1010111
|
|
23
|
+
variables:
|
|
24
|
+
- name: vm
|
|
25
|
+
location: 25
|
|
26
|
+
- name: vs2
|
|
27
|
+
location: 24-20
|
|
28
|
+
- name: xs1
|
|
29
|
+
location: 19-15
|
|
30
|
+
- name: vd
|
|
31
|
+
location: 11-7
|
|
32
|
+
access:
|
|
33
|
+
s: always
|
|
34
|
+
u: always
|
|
35
|
+
vs: always
|
|
36
|
+
vu: always
|
|
37
|
+
operation(): |
|
|
38
|
+
VectorState state = vector_state();
|
|
39
|
+
|
|
40
|
+
if (state.sew != 8 && state.sew != 16) {
|
|
41
|
+
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
VectorLmulType lmul_type = state.lmul_type;
|
|
45
|
+
|
|
46
|
+
XReg vlen = VLEN;
|
|
47
|
+
XReg vlmax;
|
|
48
|
+
if (lmul_type == VectorLmulType::Multiply) {
|
|
49
|
+
vlmax = (vlen << state.log2_lmul) >> state.log2_sew;
|
|
50
|
+
} else {
|
|
51
|
+
vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Bits<64> scalar = $signed(X[xs1]);
|
|
55
|
+
U32 sew2 = state.sew + state.sew;
|
|
56
|
+
|
|
57
|
+
for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
|
|
58
|
+
U32 src_start = i * state.sew;
|
|
59
|
+
U32 src_end = src_start + state.sew - 1;
|
|
60
|
+
U32 dst_start = i * sew2;
|
|
61
|
+
U32 dst_end = dst_start + sew2 - 1;
|
|
62
|
+
if (vm == 1'b1 || V[0][i:i] == 1'b1) {
|
|
63
|
+
# active element
|
|
64
|
+
if (V[vs2][src_end:src_start] >= scalar[state.sew-1:0]) {
|
|
65
|
+
V[vd][dst_end:dst_start] = V[vd][dst_end:dst_start] + (V[vs2][src_end:src_start] - scalar[state.sew-1:0]);
|
|
66
|
+
} else {
|
|
67
|
+
V[vd][dst_end:dst_start] = V[vd][dst_end:dst_start] + (scalar[state.sew-1:0] - V[vs2][src_end:src_start]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
# inactive element: handled according to vtype.VMA policy
|
|
71
|
+
}
|
|
72
|
+
# tail elements (i >= vl): handled according to vtype.VTA policy
|
|
73
|
+
|
|
74
|
+
CSR[vstart].VALUE = 0;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
$schema: "inst_schema.json#"
|
|
5
|
+
kind: instruction
|
|
6
|
+
name: vfbdota.vv
|
|
7
|
+
long_name: Vector FP32 Batched Dot Product Accumulate
|
|
8
|
+
description: |
|
|
9
|
+
Performs a batched
|
|
10
|
+
dot-product operation on FP32 vectors, accumulating into FP32. The
|
|
11
|
+
instruction is reserved unless `SEW=32` and `LMUL=1`. The `vs1`, `vs2`, and
|
|
12
|
+
`vd` operands all have `EEW=SEW`.
|
|
13
|
+
|
|
14
|
+
The batched dot-product family treats `vs1` as an EMUL=1 vector register
|
|
15
|
+
group and `vs2` as an EMUL=8 vector register group, computing eight
|
|
16
|
+
independent dot products and accumulating the results into `vd`. `vl` sets
|
|
17
|
+
the length of each dot product. Tail elements are substituted with the bit
|
|
18
|
+
pattern of all zeros, then the computation is performed as though
|
|
19
|
+
`vl=VLMAX`.
|
|
20
|
+
|
|
21
|
+
For long-vector implementations with `VLEN > 8*EEW`, `ci` is a 3-bit
|
|
22
|
+
scaled-by-8 immediate indicating which eight elements of `vd` are read and
|
|
23
|
+
written. The `ci` field is encoded in `vs2[2:0]`; those bits are not needed
|
|
24
|
+
for the register address because `vs2` addresses an EMUL=8 register group.
|
|
25
|
+
The instruction is reserved if `ci >= VLEN/(8*EEW)`. Destination elements
|
|
26
|
+
at or beyond `ci+8` are tail elements, elements below `ci` are prestart
|
|
27
|
+
elements, and the remaining elements are body elements. The destination
|
|
28
|
+
vector register group cannot overlap either source vector register group.
|
|
29
|
+
Masked-off body elements follow the current mask agnostic or undisturbed
|
|
30
|
+
policy, and the instruction is reserved when `vstart` is nonzero; exceptions
|
|
31
|
+
are always reported with `vstart=0`.
|
|
32
|
+
|
|
33
|
+
The FP32 products are first computed to full precision, setting the invalid
|
|
34
|
+
operation exception flag as appropriate. The products are then optionally
|
|
35
|
+
rounded to FP32 according to the dynamic rounding mode, setting the inexact,
|
|
36
|
+
overflow, and underflow exception flags as appropriate. The sum of these
|
|
37
|
+
products and the accumulator is then computed as though by `vfredusum.vs`
|
|
38
|
+
with `SEW=32`, including the setting of exception flags.
|
|
39
|
+
|
|
40
|
+
This formulation allows significant implementation flexibility while being
|
|
41
|
+
sufficiently precise to implement SGEMM. The algorithm used by
|
|
42
|
+
`vfredusum.vs` offers several implementation choices; implementations are
|
|
43
|
+
not required to use the same algorithm configuration for `vfbdota.vv` as for
|
|
44
|
+
`vfredusum.vs`.
|
|
45
|
+
definedBy:
|
|
46
|
+
extension:
|
|
47
|
+
name: Zvfbdota32f
|
|
48
|
+
assembly: vd, vs2, vs1, ci, vm
|
|
49
|
+
encoding:
|
|
50
|
+
match: 101011-----------001-----1110111
|
|
51
|
+
variables:
|
|
52
|
+
- name: vm
|
|
53
|
+
location: 25-25
|
|
54
|
+
- name: vs2
|
|
55
|
+
location: 24-23
|
|
56
|
+
- name: ci
|
|
57
|
+
location: 22-20
|
|
58
|
+
- name: vs1
|
|
59
|
+
location: 19-15
|
|
60
|
+
- name: vd
|
|
61
|
+
location: 11-7
|
|
62
|
+
access:
|
|
63
|
+
s: always
|
|
64
|
+
u: always
|
|
65
|
+
vs: always
|
|
66
|
+
vu: always
|
|
67
|
+
data_independent_timing: false
|
|
68
|
+
operation(): |
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
4
|
+
$schema: "inst_schema.json#"
|
|
5
|
+
kind: instruction
|
|
6
|
+
name: vpaire.vv
|
|
7
|
+
long_name: Vector pair even
|
|
8
|
+
description: |
|
|
9
|
+
Interleaves even-indexed elements of two source vector register groups into
|
|
10
|
+
the destination. All operands have EMUL=LMUL. For destination index `i`,
|
|
11
|
+
even indices read `vs2[i]` and odd indices read `vs1[i-1]`, producing
|
|
12
|
+
`[vs2[0], vs1[0], vs2[2], vs1[2], ...]`. Standard vector masking,
|
|
13
|
+
prestart, inactive, and tail handling applies. The destination may not
|
|
14
|
+
overlap either source group.
|
|
15
|
+
definedBy:
|
|
16
|
+
extension:
|
|
17
|
+
name: Zvzip
|
|
18
|
+
assembly: vd, vs2, vs1, vm
|
|
19
|
+
encoding:
|
|
20
|
+
match: 001111-----------000-----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
|
+
data_independent_timing: true
|
|
36
|
+
operation(): |
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
4
|
+
$schema: "inst_schema.json#"
|
|
5
|
+
kind: instruction
|
|
6
|
+
name: vpairo.vv
|
|
7
|
+
long_name: Vector pair odd
|
|
8
|
+
description: |
|
|
9
|
+
Interleaves odd-indexed elements of two source vector register groups into
|
|
10
|
+
the destination. All operands have EMUL=LMUL. For destination index `i`,
|
|
11
|
+
even indices read `vs2[i+1]` and odd indices read `vs1[i]`, producing
|
|
12
|
+
`[vs2[1], vs1[1], vs2[3], vs1[3], ...]`. When `vl` is odd, the final
|
|
13
|
+
out-of-range source position contributes zero; no source at or above `vl`
|
|
14
|
+
is read. Standard vector masking, prestart, inactive, and tail handling
|
|
15
|
+
applies. The destination may not overlap either source group.
|
|
16
|
+
definedBy:
|
|
17
|
+
extension:
|
|
18
|
+
name: Zvzip
|
|
19
|
+
assembly: vd, vs2, vs1, vm
|
|
20
|
+
encoding:
|
|
21
|
+
match: 001111-----------010-----1010111
|
|
22
|
+
variables:
|
|
23
|
+
- name: vm
|
|
24
|
+
location: 25
|
|
25
|
+
- name: vs2
|
|
26
|
+
location: 24-20
|
|
27
|
+
- name: vs1
|
|
28
|
+
location: 19-15
|
|
29
|
+
- name: vd
|
|
30
|
+
location: 11-7
|
|
31
|
+
access:
|
|
32
|
+
s: always
|
|
33
|
+
u: always
|
|
34
|
+
vs: always
|
|
35
|
+
vu: always
|
|
36
|
+
data_independent_timing: true
|
|
37
|
+
operation(): |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
4
|
+
$schema: "inst_schema.json#"
|
|
5
|
+
kind: instruction
|
|
6
|
+
name: vunzipe.v
|
|
7
|
+
long_name: Vector unzip even
|
|
8
|
+
description: |
|
|
9
|
+
Extracts even-indexed elements from source vector register group `vs2`,
|
|
10
|
+
with EMUL=2*LMUL, into destination `vd`, with EMUL=LMUL. For `0 <= i < vl`,
|
|
11
|
+
`vd[i] = vs2[2*i]`; source indices below `2*vl` may be read. `LMUL=8`
|
|
12
|
+
and masked encodings (`vm=0`) are illegal. Destination/source overlap is
|
|
13
|
+
allowed only when `vd` equals `vs2`, as for narrowing instructions.
|
|
14
|
+
definedBy:
|
|
15
|
+
extension:
|
|
16
|
+
name: Zvzip
|
|
17
|
+
assembly: vd, vs2, vm
|
|
18
|
+
encoding:
|
|
19
|
+
match: 010010------01011010-----1010111
|
|
20
|
+
variables:
|
|
21
|
+
- name: vm
|
|
22
|
+
location: 25
|
|
23
|
+
- name: vs2
|
|
24
|
+
location: 24-20
|
|
25
|
+
- name: vd
|
|
26
|
+
location: 11-7
|
|
27
|
+
access:
|
|
28
|
+
s: always
|
|
29
|
+
u: always
|
|
30
|
+
vs: always
|
|
31
|
+
vu: always
|
|
32
|
+
data_independent_timing: true
|
|
33
|
+
operation(): |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
4
|
+
$schema: "inst_schema.json#"
|
|
5
|
+
kind: instruction
|
|
6
|
+
name: vunzipo.v
|
|
7
|
+
long_name: Vector unzip odd
|
|
8
|
+
description: |
|
|
9
|
+
Extracts odd-indexed elements from source vector register group `vs2`,
|
|
10
|
+
with EMUL=2*LMUL, into destination `vd`, with EMUL=LMUL. For `0 <= i < vl`,
|
|
11
|
+
`vd[i] = vs2[2*i+1]`; source indices below `2*vl` may be read. `LMUL=8`
|
|
12
|
+
and masked encodings (`vm=0`) are illegal. Destination/source overlap is
|
|
13
|
+
allowed only when `vd` equals `vs2`, as for narrowing instructions.
|
|
14
|
+
definedBy:
|
|
15
|
+
extension:
|
|
16
|
+
name: Zvzip
|
|
17
|
+
assembly: vd, vs2, vm
|
|
18
|
+
encoding:
|
|
19
|
+
match: 010010------01111010-----1010111
|
|
20
|
+
variables:
|
|
21
|
+
- name: vm
|
|
22
|
+
location: 25
|
|
23
|
+
- name: vs2
|
|
24
|
+
location: 24-20
|
|
25
|
+
- name: vd
|
|
26
|
+
location: 11-7
|
|
27
|
+
access:
|
|
28
|
+
s: always
|
|
29
|
+
u: always
|
|
30
|
+
vs: always
|
|
31
|
+
vu: always
|
|
32
|
+
data_independent_timing: true
|
|
33
|
+
operation(): |
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
4
|
+
$schema: "inst_schema.json#"
|
|
5
|
+
kind: instruction
|
|
6
|
+
name: vzip.vv
|
|
7
|
+
long_name: Vector zip
|
|
8
|
+
description: |
|
|
9
|
+
Interleaves source vector register groups `vs2` and `vs1`, each with
|
|
10
|
+
EMUL=LMUL/2, into destination `vd` with EMUL=LMUL. For destination index
|
|
11
|
+
`i`, even indices read `vs2[i/2]` and odd indices read `vs1[i/2]`.
|
|
12
|
+
Standard vector masking, prestart, inactive, and tail handling applies.
|
|
13
|
+
The source and destination groups may overlap only when source EMUL is at
|
|
14
|
+
least 1 and their highest-numbered registers coincide. The encoding is
|
|
15
|
+
illegal when `2*SEW > LMUL * ELEN` or overlap rules are violated.
|
|
16
|
+
definedBy:
|
|
17
|
+
extension:
|
|
18
|
+
name: Zvzip
|
|
19
|
+
assembly: vd, vs2, vs1, vm
|
|
20
|
+
encoding:
|
|
21
|
+
match: 111110-----------010-----1010111
|
|
22
|
+
variables:
|
|
23
|
+
- name: vm
|
|
24
|
+
location: 25
|
|
25
|
+
- name: vs2
|
|
26
|
+
location: 24-20
|
|
27
|
+
- name: vs1
|
|
28
|
+
location: 19-15
|
|
29
|
+
- name: vd
|
|
30
|
+
location: 11-7
|
|
31
|
+
access:
|
|
32
|
+
s: always
|
|
33
|
+
u: always
|
|
34
|
+
vs: always
|
|
35
|
+
vu: always
|
|
36
|
+
data_independent_timing: true
|
|
37
|
+
operation(): |
|
|
@@ -656,6 +656,38 @@ builtin function atomically_set_pte_a_d {
|
|
|
656
656
|
}
|
|
657
657
|
}
|
|
658
658
|
|
|
659
|
+
builtin function atomic_read_modify_write_8 {
|
|
660
|
+
returns Bits<8>
|
|
661
|
+
arguments
|
|
662
|
+
Bits<PHYS_ADDR_WIDTH> phys_addr,
|
|
663
|
+
Bits<8> value,
|
|
664
|
+
AmoOperation op
|
|
665
|
+
description {
|
|
666
|
+
Atomically read-modify-write 8-bits starting at phys_address using +value+ and +op+.
|
|
667
|
+
|
|
668
|
+
Return the original (unmodified) read value.
|
|
669
|
+
|
|
670
|
+
All access checks/alignment checks/etc. should be done before calling this function;
|
|
671
|
+
it's assumed the RMW is OK to proceed.
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
builtin function atomic_read_modify_write_16 {
|
|
676
|
+
returns Bits<16>
|
|
677
|
+
arguments
|
|
678
|
+
Bits<PHYS_ADDR_WIDTH> phys_addr,
|
|
679
|
+
Bits<16> value,
|
|
680
|
+
AmoOperation op
|
|
681
|
+
description {
|
|
682
|
+
Atomically read-modify-write 16-bits starting at phys_address using +value+ and +op+.
|
|
683
|
+
|
|
684
|
+
Return the original (unmodified) read value.
|
|
685
|
+
|
|
686
|
+
All access checks/alignment checks/etc. should be done before calling this function;
|
|
687
|
+
it's assumed the RMW is OK to proceed.
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
|
|
659
691
|
builtin function atomic_read_modify_write_32 {
|
|
660
692
|
returns Bits<32>
|
|
661
693
|
arguments
|
|
@@ -687,3 +719,22 @@ builtin function atomic_read_modify_write_64 {
|
|
|
687
719
|
it's assumed the RMW is OK to proceed.
|
|
688
720
|
}
|
|
689
721
|
}
|
|
722
|
+
builtin function read_seed {
|
|
723
|
+
returns Bits<32>
|
|
724
|
+
description {
|
|
725
|
+
Poll the implementation's entropy source and return the 32-bit seed value.
|
|
726
|
+
Bits 31:30 hold the OPST status and bits 15:0 hold the entropy, which is
|
|
727
|
+
only meaningful when OPST is ES16. Each poll returns unique randomness,
|
|
728
|
+
even if its numerical value happens to match a previous poll.
|
|
729
|
+
A single call represents one complete poll, so the status and the entropy
|
|
730
|
+
it returns describe the same state of the source.
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
builtin function write_seed {
|
|
734
|
+
description {
|
|
735
|
+
Signal a write to the seed CSR.
|
|
736
|
+
The written value is ignored; the write exists to signal polling and
|
|
737
|
+
flushing, so an implementation may use this to advance the state of its
|
|
738
|
+
entropy source.
|
|
739
|
+
}
|
|
740
|
+
}
|