udb 0.1.0 → 0.1.2
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/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.nest.yaml +21 -21
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.yaml +21 -21
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mileaveret.yaml +19 -19
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lb.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lbu.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lh.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lhu.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lw.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sb.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sh.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sw.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrb.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrbu.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrh.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrhu.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrw.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lwm.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lwmi.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.setwm.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.setwmi.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srb.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srh.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srw.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.swm.yaml +1 -1
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.swmi.yaml +1 -1
- data/.data/spec/schemas/README.adoc +6 -3
- data/.data/spec/schemas/csr_schema.json +1 -5
- data/.data/spec/std/isa/csr/Smrnmi/mnstatus.yaml +0 -11
- data/.data/spec/std/isa/csr/hstatus.yaml +0 -2
- data/.data/spec/std/isa/csr/mconfigptr.yaml +0 -3
- data/.data/spec/std/isa/csr/misa.yaml +0 -4
- data/.data/spec/std/isa/csr/mstatus.yaml +0 -13
- data/.data/spec/std/isa/csr/schema.adoc +0 -6
- data/.data/spec/std/isa/inst/C/c.ld.yaml +2 -2
- data/.data/spec/std/isa/inst/C/c.ldsp.yaml +1 -1
- data/.data/spec/std/isa/inst/C/c.lw.yaml +1 -1
- data/.data/spec/std/isa/inst/C/c.lwsp.yaml +1 -1
- data/.data/spec/std/isa/inst/C/c.sd.yaml +2 -2
- data/.data/spec/std/isa/inst/C/c.sdsp.yaml +2 -2
- data/.data/spec/std/isa/inst/C/c.sw.yaml +1 -1
- data/.data/spec/std/isa/inst/C/c.swsp.yaml +1 -1
- data/.data/spec/std/isa/inst/F/flw.yaml +2 -2
- data/.data/spec/std/isa/inst/F/fmv.w.x.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/fsw.yaml +1 -1
- data/.data/spec/std/isa/inst/I/lb.yaml +1 -1
- data/.data/spec/std/isa/inst/I/lbu.yaml +1 -1
- data/.data/spec/std/isa/inst/I/ld.yaml +2 -2
- data/.data/spec/std/isa/inst/I/lh.yaml +1 -1
- data/.data/spec/std/isa/inst/I/lhu.yaml +1 -1
- data/.data/spec/std/isa/inst/I/lw.yaml +1 -1
- data/.data/spec/std/isa/inst/I/lwu.yaml +1 -1
- data/.data/spec/std/isa/inst/I/sb.yaml +1 -1
- data/.data/spec/std/isa/inst/I/sd.yaml +1 -1
- data/.data/spec/std/isa/inst/I/sh.yaml +1 -1
- data/.data/spec/std/isa/inst/I/sw.yaml +1 -1
- data/.data/spec/std/isa/inst/V/vle8.v.yaml +1 -1
- data/.data/spec/std/isa/inst/V/vse8.v.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoadd.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoand.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomax.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amomin.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amominu.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoor.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoswap.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.SIZE.AQRL.layout +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.d.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.d.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.d.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.w.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.w.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.w.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zaamo/amoxor.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoadd.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoadd.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoadd.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoadd.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoadd.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoadd.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoadd.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoadd.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoand.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoand.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoand.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoand.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoand.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoand.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoand.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoand.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomax.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomax.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomax.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomax.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomax.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomax.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomax.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomax.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomaxu.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomaxu.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomaxu.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomaxu.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomaxu.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomaxu.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomaxu.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomaxu.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomin.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomin.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomin.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomin.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomin.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomin.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomin.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amomin.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amominu.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amominu.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amominu.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amominu.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amominu.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amominu.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amominu.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amominu.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoor.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoor.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoor.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoor.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoor.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoor.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoor.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoor.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoswap.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoswap.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoswap.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoswap.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoswap.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoswap.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoswap.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoswap.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoxor.b.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoxor.b.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoxor.b.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoxor.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoxor.h.aq.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoxor.h.aqrl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoxor.h.rl.yaml +1 -1
- data/.data/spec/std/isa/inst/Zabha/amoxor.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zalrsc/lr.SIZE.AQRL.layout +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/lr.d.aq.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/lr.d.aqrl.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/lr.d.rl.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/lr.d.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/lr.w.aq.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/lr.w.aqrl.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/lr.w.rl.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/lr.w.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.SIZE.AQRL.layout +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.d.aq.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.d.aqrl.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.d.rl.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.d.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.w.aq.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.w.aqrl.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.w.rl.yaml +2 -2
- data/.data/spec/std/isa/inst/Zalrsc/sc.w.yaml +2 -2
- data/.data/spec/std/isa/inst/Zcb/c.lbu.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcb/c.lh.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcb/c.lhu.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcb/c.sb.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcb/c.sh.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcd/c.fsd.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcf/c.flw.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcf/c.fsw.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcmt/cm.jalt.yaml +2 -2
- data/.data/spec/std/isa/inst/Zcmt/cm.jt.yaml +2 -2
- data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +3 -3
- data/.data/spec/std/isa/inst/Zfh/flh.yaml +2 -2
- data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfh/fsh.yaml +1 -1
- data/.data/spec/std/isa/isa/builtin_functions.idl +3 -5
- data/.data/spec/std/isa/isa/fetch.idl +2 -2
- data/.data/spec/std/isa/isa/fp.idl +7 -8
- data/.data/spec/std/isa/isa/globals.isa +123 -118
- data/.data/spec/std/isa/isa/util.idl +6 -8
- data/lib/udb/cfg_arch.rb +36 -7
- data/lib/udb/doc_link.rb +16 -13
- data/lib/udb/idl/condition_to_udb.rb +7 -7
- data/lib/udb/obj/extension.rb +106 -67
- data/lib/udb/version.rb +2 -1
- data/lib/udb/yaml/yaml_resolver.rb +1 -1
- metadata +2 -27
- data/.data/spec/std/isa/ext/Xmock.yaml +0 -30
- data/.data/spec/std/isa/param/MOCK_1_BIT_INT.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_25_BIT_INT.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_2_BIT_INT.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_32_BIT_INT.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_64_BIT_INT.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE.yaml +0 -22
- data/.data/spec/std/isa/param/MOCK_ARRAY_INT_ENUM.yaml +0 -23
- data/.data/spec/std/isa/param/MOCK_ARRAY_MAX_ONLY.yaml +0 -21
- data/.data/spec/std/isa/param/MOCK_ARRAY_MIN_ONLY.yaml +0 -21
- data/.data/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM1.yaml +0 -21
- data/.data/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM2.yaml +0 -21
- data/.data/spec/std/isa/param/MOCK_BOOL_1.yaml +0 -15
- data/.data/spec/std/isa/param/MOCK_BOOL_2.yaml +0 -15
- data/.data/spec/std/isa/param/MOCK_ENUM_2_INTS.yaml +0 -18
- data/.data/spec/std/isa/param/MOCK_ENUM_2_STRINGS.yaml +0 -18
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_1023.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_127.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_128.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_2.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_999.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_1000_TO_2048.yaml +0 -17
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_1_TO_128.yaml +0 -17
- data/.data/spec/std/isa/proc_cert_class/MockProcessor.yaml +0 -13
- data/.data/spec/std/isa/profile_family/Mock.yaml +0 -24
data/lib/udb/cfg_arch.rb
CHANGED
|
@@ -182,6 +182,9 @@ module Udb
|
|
|
182
182
|
sig { returns(T::Array[Integer]) }
|
|
183
183
|
def possible_xlens = multi_xlen? ? [32, 64] : [mxlen]
|
|
184
184
|
|
|
185
|
+
sig { params(xlen: Integer).returns(T::Boolean) }
|
|
186
|
+
def possible_xlen?(xlen) = possible_xlens.include?(xlen)
|
|
187
|
+
|
|
185
188
|
# @api private
|
|
186
189
|
# hash for Hash lookup
|
|
187
190
|
sig { override.returns(Integer) }
|
|
@@ -1340,16 +1343,23 @@ module Udb
|
|
|
1340
1343
|
end
|
|
1341
1344
|
|
|
1342
1345
|
# @return List of all implemented instructions, sorted by name
|
|
1343
|
-
sig { returns(T::Array[Instruction]) }
|
|
1344
|
-
def implemented_instructions
|
|
1346
|
+
sig { params(show_progress: T::Boolean).returns(T::Array[Instruction]) }
|
|
1347
|
+
def implemented_instructions(show_progress: false)
|
|
1345
1348
|
unless fully_configured?
|
|
1346
1349
|
raise ArgumentError, "implemented_instructions is only defined for fully configured systems"
|
|
1347
1350
|
end
|
|
1348
1351
|
|
|
1349
1352
|
@implemented_instructions ||=
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
+
begin
|
|
1354
|
+
bar =
|
|
1355
|
+
if show_progress
|
|
1356
|
+
Udb.create_progressbar("determining implemented instructions [:bar] :current/:total", total: instructions.size)
|
|
1357
|
+
end
|
|
1358
|
+
instructions.select do |inst|
|
|
1359
|
+
bar.advance if show_progress
|
|
1360
|
+
inst.defined_by_condition.satisfiable_by_cfg_arch?(self)
|
|
1361
|
+
# inst.defined_by_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::Yes
|
|
1362
|
+
end
|
|
1353
1363
|
end
|
|
1354
1364
|
end
|
|
1355
1365
|
|
|
@@ -1382,11 +1392,11 @@ module Udb
|
|
|
1382
1392
|
|
|
1383
1393
|
@not_prohibited_instructions ||=
|
|
1384
1394
|
if @config.fully_configured?
|
|
1385
|
-
implemented_instructions
|
|
1395
|
+
implemented_instructions(show_progress:)
|
|
1386
1396
|
elsif @config.partially_configured?
|
|
1387
1397
|
bar =
|
|
1388
1398
|
if show_progress
|
|
1389
|
-
TTY::ProgressBar.new("determining possible instructions [:bar]", total: instructions.size,
|
|
1399
|
+
TTY::ProgressBar.new("determining possible instructions [:bar] :current/:total", total: instructions.size, clear: true)
|
|
1390
1400
|
end
|
|
1391
1401
|
instructions.select do |inst|
|
|
1392
1402
|
bar.advance if show_progress
|
|
@@ -1405,6 +1415,25 @@ module Udb
|
|
|
1405
1415
|
|
|
1406
1416
|
alias not_prohibited_instructions possible_instructions
|
|
1407
1417
|
|
|
1418
|
+
sig { params(show_progress: T::Boolean).returns(T::Array[Csr]) }
|
|
1419
|
+
def instructions_that_must_be_implemented(show_progress: false)
|
|
1420
|
+
@instructions_that_must_be_implemented ||=
|
|
1421
|
+
if @config.fully_configured?
|
|
1422
|
+
implemented_instructions
|
|
1423
|
+
elsif @config.partially_configured?
|
|
1424
|
+
bar =
|
|
1425
|
+
if show_progress
|
|
1426
|
+
Udb.create_progressbar("determining instructions that must be implemented [:bar]", total: instructions.size, clear: true)
|
|
1427
|
+
end
|
|
1428
|
+
instructions.select do |inst|
|
|
1429
|
+
bar.advance if show_progress
|
|
1430
|
+
(-inst.defined_by_condition).unsatisfiable_by_cfg_arch?(self)
|
|
1431
|
+
end
|
|
1432
|
+
else
|
|
1433
|
+
[]
|
|
1434
|
+
end
|
|
1435
|
+
end
|
|
1436
|
+
|
|
1408
1437
|
# @return [Integer] The largest instruction encoding in the config
|
|
1409
1438
|
sig { returns(Integer) }
|
|
1410
1439
|
def largest_encoding
|
data/lib/udb/doc_link.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: false
|
|
1
2
|
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
3
|
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
4
|
|
|
@@ -29,21 +30,23 @@
|
|
|
29
30
|
# where <id> is the ID of the normative rule
|
|
30
31
|
# IDL code idl:code:inst:<inst-name>:<location>
|
|
31
32
|
# TODO for CSR and CSR Fields
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
module Udb
|
|
34
|
+
class DocLink
|
|
35
|
+
# @param dst_link [String] The documentation link provided in the YAML
|
|
36
|
+
# @param db_obj [String] Database object
|
|
37
|
+
def initialize(dst_link, db_obj)
|
|
38
|
+
raise ArgumentError, "Need String but was passed a #{data.class}" unless dst_link.is_a?(String)
|
|
39
|
+
@dst_link = dst_link
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
raise ArgumentError, "Missing documentation link for #{db_obj.name} of kind #{db_obj.kind}" if @dst_link.nil?
|
|
42
|
+
end
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
# @return [String] Unique ID of the linked to normative rule
|
|
45
|
+
def dst_link = @dst_link
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
# @return [String] Asciidoc to create desired link.
|
|
48
|
+
def to_adoc
|
|
49
|
+
"<<#{@dst_link},#{@dst_link}>>"
|
|
50
|
+
end
|
|
48
51
|
end
|
|
49
52
|
end
|
|
@@ -163,24 +163,24 @@ module Idl
|
|
|
163
163
|
def to_udb_h(symtab)
|
|
164
164
|
case name
|
|
165
165
|
when "implemented?"
|
|
166
|
-
type_error "Bad argument to implemented?" unless
|
|
166
|
+
type_error "Bad argument to implemented?" unless arg_nodes.fetch(0).text_value =~ /^ExtensionName::[A-Z][a-z0-9]*$/
|
|
167
167
|
{
|
|
168
168
|
"extension" => {
|
|
169
|
-
"name" =>
|
|
169
|
+
"name" => arg_nodes.fetch(0).text_value.gsub("ExtensionName::", "")
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
when "implemented_version?"
|
|
173
|
-
type_error "Bad first argument to implemented_version?" unless
|
|
174
|
-
type_error "Bad second argument to implemented_version?" unless
|
|
173
|
+
type_error "Bad first argument to implemented_version?" unless arg_nodes.fetch(0).text_value =~ /^ExtensionName::[A-Z][a-z0-9]*$/
|
|
174
|
+
type_error "Bad second argument to implemented_version?" unless arg_nodes.fetch(1).text_value =~ /((?:>=)|(?:>)|(?:~>)|(?:<)|(?:<=)|(?:!=)|(?:=))\s*([0-9]+)(?:\.([0-9]+)(?:\.([0-9]+)(?:-(pre))?)?)?/
|
|
175
175
|
{
|
|
176
176
|
"extension" => {
|
|
177
|
-
"name" =>
|
|
178
|
-
"version" =>
|
|
177
|
+
"name" => arg_nodes.fetch(0).text_value.gsub("ExtensionName::", ""),
|
|
178
|
+
"version" => arg_nodes.fetch(1).text_value.gsub('"', "")
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
when "xlen"
|
|
182
182
|
{
|
|
183
|
-
"xlen" =>
|
|
183
|
+
"xlen" => arg_nodes.fetch(0).value(symtab)
|
|
184
184
|
}
|
|
185
185
|
else
|
|
186
186
|
type_error "unsupported function in an IDL condition: #{name}"
|
data/lib/udb/obj/extension.rb
CHANGED
|
@@ -207,45 +207,23 @@ module Udb
|
|
|
207
207
|
end
|
|
208
208
|
end
|
|
209
209
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
# implemented when just the extension's requirements are met
|
|
213
|
-
#
|
|
214
|
-
# In other words, direct is the set of instructions that are defined without transitivity
|
|
215
|
-
sig { returns(T::Array[Instruction]) }
|
|
216
|
-
def instructions
|
|
217
|
-
@instructions ||=
|
|
210
|
+
def all_instructions_that_must_be_implemented
|
|
211
|
+
@all_instructions_that_must_be_implemented ||=
|
|
218
212
|
begin
|
|
219
213
|
pb =
|
|
220
214
|
Udb.create_progressbar(
|
|
221
|
-
"Finding instructions for #{name} [:bar] :current/:total",
|
|
222
|
-
total:
|
|
215
|
+
"Finding all required instructions for #{name} [:bar] :current/:total",
|
|
216
|
+
total: @arch.instructions.size,
|
|
223
217
|
clear: true
|
|
224
218
|
)
|
|
225
|
-
|
|
219
|
+
@arch.instructions.select do |i|
|
|
226
220
|
pb.advance
|
|
227
|
-
inst_defined = i.defined_by_condition
|
|
228
|
-
next unless inst_defined.mentions?(self)
|
|
229
|
-
requirement_met = to_condition
|
|
230
|
-
preconditions_met = requirements_condition
|
|
231
221
|
|
|
232
|
-
|
|
233
|
-
(
|
|
234
|
-
(-inst_defined & requirement_met) # it must be defined when self is met, and
|
|
235
|
-
).unsatisfiable? &
|
|
236
|
-
(
|
|
237
|
-
(-inst_defined & preconditions_met) # it may not be defined when only self's requirements are met
|
|
238
|
-
).satisfiable?
|
|
222
|
+
(-i.defined_by_condition & to_condition).unsatisfiable_by_arch?(@arch)
|
|
239
223
|
end
|
|
240
224
|
end
|
|
241
225
|
end
|
|
242
226
|
|
|
243
|
-
# @api private
|
|
244
|
-
sig { returns(T::Set[Instruction]) }
|
|
245
|
-
def instructions_set
|
|
246
|
-
@instructions_set ||= Set.new(instructions)
|
|
247
|
-
end
|
|
248
|
-
|
|
249
227
|
# @return the list of instructions implemented *indirectly* by *any version* of this extension because
|
|
250
228
|
# a requirement of the extension directly defines the instruction
|
|
251
229
|
#
|
|
@@ -255,65 +233,87 @@ module Udb
|
|
|
255
233
|
# This list may be empty
|
|
256
234
|
sig { returns(T::Array[Instruction]) }
|
|
257
235
|
def implied_instructions
|
|
258
|
-
@
|
|
236
|
+
@implied_instructions ||=
|
|
259
237
|
begin
|
|
260
238
|
pb =
|
|
261
239
|
Udb.create_progressbar(
|
|
262
240
|
"Finding implied instructions for #{name} [:bar] :current/:total",
|
|
263
|
-
total:
|
|
241
|
+
total: @arch.instructions.size,
|
|
264
242
|
clear: true
|
|
265
243
|
)
|
|
266
|
-
|
|
244
|
+
@arch.instructions.select do |i|
|
|
267
245
|
pb.advance
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
preconditions_met = requirements_condition
|
|
271
|
-
|
|
272
|
-
# inst is defined transitively by self if:
|
|
273
|
-
(
|
|
274
|
-
(-inst_defined & preconditions_met) # it must be defined when preconditions are met, and
|
|
275
|
-
).unsatisfiable?
|
|
276
|
-
end
|
|
246
|
+
|
|
247
|
+
(-i.defined_by_condition & requirements_condition).unsatisfiable_by_arch?(@arch)
|
|
277
248
|
end
|
|
278
249
|
end
|
|
279
250
|
end
|
|
280
251
|
|
|
252
|
+
# @return the list of instructions implemented *directly* by *any version* of this extension (may be empty)
|
|
253
|
+
# Direct means that the instruction must be defined when the extension is implemented and may not be
|
|
254
|
+
# implemented when just the extension's requirements are met
|
|
255
|
+
#
|
|
256
|
+
# In other words, direct is the set of instructions that are defined without transitivity
|
|
257
|
+
sig { returns(T::Array[Instruction]) }
|
|
258
|
+
def instructions
|
|
259
|
+
@instructions ||= all_instructions_that_must_be_implemented - implied_instructions
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
# @api private
|
|
263
|
+
sig { returns(T::Set[Instruction]) }
|
|
264
|
+
def instructions_set
|
|
265
|
+
@instructions_set ||= Set.new(instructions)
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
|
|
281
269
|
# @api private
|
|
282
270
|
sig { returns(T::Set[Instruction]) }
|
|
283
271
|
def implied_instructions_set
|
|
284
272
|
@implied_instructions_set ||= Set.new(implied_instructions)
|
|
285
273
|
end
|
|
286
274
|
|
|
287
|
-
# @return the list of CSRs implemented by *any version* of this extension (may be empty),
|
|
288
|
-
# not including those defined by requirements of this extension
|
|
289
275
|
sig { returns(T::Array[Csr]) }
|
|
290
|
-
def
|
|
291
|
-
@
|
|
276
|
+
def all_csrs_that_must_be_implemented
|
|
277
|
+
@all_csrs_that_must_be_implemented ||=
|
|
292
278
|
begin
|
|
293
279
|
pb =
|
|
294
280
|
Udb.create_progressbar(
|
|
295
|
-
"Finding csrs for #{name} [:bar] :current/:total",
|
|
296
|
-
total:
|
|
281
|
+
"Finding all required csrs for #{name} [:bar] :current/:total",
|
|
282
|
+
total: @arch.csrs.size,
|
|
297
283
|
clear: true
|
|
298
284
|
)
|
|
299
|
-
|
|
285
|
+
@arch.csrs.select do |csr|
|
|
300
286
|
pb.advance
|
|
301
|
-
csr_defined = csr.defined_by_condition
|
|
302
|
-
next unless csr_defined.mentions?(self)
|
|
303
|
-
requirement_met = to_condition
|
|
304
|
-
preconditions_met = requirements_condition
|
|
305
287
|
|
|
306
|
-
|
|
307
|
-
(
|
|
308
|
-
(-csr_defined & requirement_met) # it must be defined when self is met, and
|
|
309
|
-
).unsatisfiable? &
|
|
310
|
-
(
|
|
311
|
-
(-csr_defined & preconditions_met) # it may not be defined when only self's requirements are met
|
|
312
|
-
).satisfiable?
|
|
288
|
+
(-csr.defined_by_condition & to_condition).unsatisfiable_by_arch?(@arch)
|
|
313
289
|
end
|
|
314
290
|
end
|
|
315
291
|
end
|
|
316
292
|
|
|
293
|
+
def implied_csrs
|
|
294
|
+
@implied_csrs ||=
|
|
295
|
+
begin
|
|
296
|
+
pb =
|
|
297
|
+
Udb.create_progressbar(
|
|
298
|
+
"Finding implied csrs for #{name} [:bar] :current/:total",
|
|
299
|
+
total: @arch.csrs.size,
|
|
300
|
+
clear: true
|
|
301
|
+
)
|
|
302
|
+
@arch.csrs.select do |csr|
|
|
303
|
+
pb.advance
|
|
304
|
+
|
|
305
|
+
(-csr.defined_by_condition & requirements_condition).unsatisfiable_by_arch?(@arch)
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
# @return the list of CSRs implemented by *any version* of this extension (may be empty),
|
|
311
|
+
# not including those defined by requirements of this extension
|
|
312
|
+
sig { returns(T::Array[Csr]) }
|
|
313
|
+
def csrs
|
|
314
|
+
@csrs ||= all_csrs_that_must_be_implemented - implied_csrs
|
|
315
|
+
end
|
|
316
|
+
|
|
317
317
|
# @return the list of csrs implemented *indirectly* by *any version* of this extension because
|
|
318
318
|
# a requirement of the extension directly defines the csr
|
|
319
319
|
#
|
|
@@ -388,13 +388,16 @@ module Udb
|
|
|
388
388
|
|
|
389
389
|
Udb.logger.info "Finding all reachable functions from extension #{name}"
|
|
390
390
|
|
|
391
|
+
cache = T.let({ 32 => {}, 64 => {}, nil => {} }, T::Hash[Integer, Idl::AstNode::ReachableFunctionCacheType])
|
|
392
|
+
|
|
391
393
|
instructions.each do |inst|
|
|
392
|
-
funcs += inst.reachable_functions(32) if inst.defined_in_base?(32)
|
|
393
|
-
funcs += inst.reachable_functions(64) if inst.defined_in_base?(64)
|
|
394
|
+
funcs += inst.reachable_functions(32, cache.fetch(32)) if inst.defined_in_base?(32)
|
|
395
|
+
funcs += inst.reachable_functions(64, cache.fetch(64)) if inst.defined_in_base?(64)
|
|
394
396
|
end
|
|
395
397
|
|
|
396
398
|
csrs.each do |csr|
|
|
397
|
-
funcs += csr.reachable_functions
|
|
399
|
+
funcs += csr.reachable_functions(32, cache) if csr.defined_in_base?(32)
|
|
400
|
+
funcs += csr.reachable_functions(64, cache) if csr.defined_in_base?(64)
|
|
398
401
|
end
|
|
399
402
|
|
|
400
403
|
@reachable_functions = funcs.uniq
|
|
@@ -506,6 +509,7 @@ module Udb
|
|
|
506
509
|
prop :unexpanded_ext_conflicts, T.nilable(T::Array[ConditionalExtensionRequirement])
|
|
507
510
|
prop :term, T.nilable(ExtensionTerm)
|
|
508
511
|
prop :condition, T.nilable(AbstractCondition)
|
|
512
|
+
prop :condition_exclusive, T.nilable(AbstractCondition)
|
|
509
513
|
prop :compatible_versions, T.nilable(T::Array[ExtensionVersion])
|
|
510
514
|
prop :key, T.nilable(Integer)
|
|
511
515
|
end
|
|
@@ -582,6 +586,22 @@ module Udb
|
|
|
582
586
|
Condition.new(condition_hash, @arch)
|
|
583
587
|
end
|
|
584
588
|
|
|
589
|
+
# condition that requires this version and prohibits any other version from the same extension
|
|
590
|
+
sig { returns(AbstractCondition) }
|
|
591
|
+
def to_condition_exclusive
|
|
592
|
+
@memo.condition_exclusive ||=
|
|
593
|
+
begin
|
|
594
|
+
other_versions = @ext.versions - [self]
|
|
595
|
+
if other_versions.empty?
|
|
596
|
+
to_condition
|
|
597
|
+
elsif other_versions.size == 1
|
|
598
|
+
to_condition & -other_versions.fetch(0).to_condition
|
|
599
|
+
else
|
|
600
|
+
to_condition & -Condition.disjunction(other_versions.map(&:to_condition), @arch)
|
|
601
|
+
end
|
|
602
|
+
end
|
|
603
|
+
end
|
|
604
|
+
|
|
585
605
|
sig { returns(T.any(T::Hash[String, T.untyped], FalseClass)) }
|
|
586
606
|
def condition_hash
|
|
587
607
|
{
|
|
@@ -1437,6 +1457,22 @@ module Udb
|
|
|
1437
1457
|
Condition.new(condition_hash, @arch)
|
|
1438
1458
|
end
|
|
1439
1459
|
|
|
1460
|
+
# returns a condition that meets the requirement _and_ exludes any other version
|
|
1461
|
+
# from the same extension
|
|
1462
|
+
sig { returns(AbstractCondition) }
|
|
1463
|
+
def to_condition_exclusive
|
|
1464
|
+
if (satisfying_versions.size == 0) || (extension.versions.size == satisfying_versions.size)
|
|
1465
|
+
to_condition
|
|
1466
|
+
else
|
|
1467
|
+
exclusions = extension.versions - satisfying_versions
|
|
1468
|
+
if exclusions.size == 1
|
|
1469
|
+
to_condition & -exclusions.fetch(0).to_condition
|
|
1470
|
+
else
|
|
1471
|
+
to_condition & -Condition.disjunction(exclusions.map(&:to_condition), @arch)
|
|
1472
|
+
end
|
|
1473
|
+
end
|
|
1474
|
+
end
|
|
1475
|
+
|
|
1440
1476
|
# return the UDB YAML representation of a Condition representing this ExtensionRequirement
|
|
1441
1477
|
sig { returns(T.any(T::Hash[String, T.untyped], FalseClass)) }
|
|
1442
1478
|
def condition_hash
|
|
@@ -1497,7 +1533,7 @@ module Udb
|
|
|
1497
1533
|
def instructions
|
|
1498
1534
|
@instructions ||=
|
|
1499
1535
|
extension.instructions.select do |inst|
|
|
1500
|
-
(inst.defined_by_condition & to_condition).
|
|
1536
|
+
(inst.defined_by_condition & to_condition).satisfiable_by_arch?(@arch)
|
|
1501
1537
|
end
|
|
1502
1538
|
end
|
|
1503
1539
|
|
|
@@ -1529,7 +1565,7 @@ module Udb
|
|
|
1529
1565
|
|
|
1530
1566
|
next if instructions_set.include?(i)
|
|
1531
1567
|
|
|
1532
|
-
(-i.defined_by_condition & to_condition).
|
|
1568
|
+
(-i.defined_by_condition & to_condition).unsatisfiable_by_arch?(@arch)
|
|
1533
1569
|
end
|
|
1534
1570
|
end
|
|
1535
1571
|
end
|
|
@@ -1552,7 +1588,7 @@ module Udb
|
|
|
1552
1588
|
def csrs
|
|
1553
1589
|
@csrs ||=
|
|
1554
1590
|
extension.csrs.select do |csr|
|
|
1555
|
-
(csr.defined_by_condition & to_condition).
|
|
1591
|
+
(csr.defined_by_condition & to_condition).satisfiable_by_arch?(@arch)
|
|
1556
1592
|
end
|
|
1557
1593
|
end
|
|
1558
1594
|
|
|
@@ -1564,15 +1600,18 @@ module Udb
|
|
|
1564
1600
|
|
|
1565
1601
|
bar = Udb.create_progressbar("Finding reachable functions for #{name} [:bar] :current/:total", total: instructions.size + csrs.size)
|
|
1566
1602
|
|
|
1603
|
+
cache = T.let({ 32 => {}, 64 => {}, nil => {} }, T::Hash[Integer, Idl::AstNode::ReachableFunctionCacheType])
|
|
1604
|
+
|
|
1567
1605
|
instructions.each do |inst|
|
|
1568
1606
|
bar.advance
|
|
1569
|
-
funcs += inst.reachable_functions(32) if inst.defined_in_base?(32)
|
|
1570
|
-
funcs += inst.reachable_functions(64) if inst.defined_in_base?(64)
|
|
1607
|
+
funcs += inst.reachable_functions(32, cache.fetch(32)) if inst.defined_in_base?(32)
|
|
1608
|
+
funcs += inst.reachable_functions(64, cache.fetch(32)) if inst.defined_in_base?(64)
|
|
1571
1609
|
end
|
|
1572
1610
|
|
|
1573
1611
|
csrs.each do |csr|
|
|
1574
1612
|
bar.advance
|
|
1575
|
-
funcs += csr.reachable_functions
|
|
1613
|
+
funcs += csr.reachable_functions(32, cache) if csr.defined_in_base?(32)
|
|
1614
|
+
funcs += csr.reachable_functions(64, cache) if csr.defined_in_base?(64)
|
|
1576
1615
|
end
|
|
1577
1616
|
|
|
1578
1617
|
@reachable_functions = funcs.uniq
|
data/lib/udb/version.rb
CHANGED
|
@@ -368,7 +368,7 @@ module Udb
|
|
|
368
368
|
raise TypeError, "Expected IDL body for #{(obj_path + [key]).join('.')} to be a String, got #{idl_source.class}"
|
|
369
369
|
end
|
|
370
370
|
|
|
371
|
-
key_minus_args = key.split("(")[0]
|
|
371
|
+
key_minus_args = key.split("(")[0] + "_ast"
|
|
372
372
|
source_loc = @current_comment_map&.get_source_location(obj_path + [key])
|
|
373
373
|
# :line is 1-based; set_input_file expects 0-based, so subtract 1
|
|
374
374
|
starting_line = source_loc ? source_loc[:line] - 1 : 0
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: udb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Derek Hower
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2026-03-
|
|
12
|
+
date: 2026-03-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|
|
@@ -1259,7 +1259,6 @@ files:
|
|
|
1259
1259
|
- ".data/spec/std/isa/ext/Svvptc.yaml"
|
|
1260
1260
|
- ".data/spec/std/isa/ext/U.yaml"
|
|
1261
1261
|
- ".data/spec/std/isa/ext/V.yaml"
|
|
1262
|
-
- ".data/spec/std/isa/ext/Xmock.yaml"
|
|
1263
1262
|
- ".data/spec/std/isa/ext/Za128rs.yaml"
|
|
1264
1263
|
- ".data/spec/std/isa/ext/Za64rs.yaml"
|
|
1265
1264
|
- ".data/spec/std/isa/ext/Zaamo.yaml"
|
|
@@ -2824,28 +2823,6 @@ files:
|
|
|
2824
2823
|
- ".data/spec/std/isa/param/MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE.yaml"
|
|
2825
2824
|
- ".data/spec/std/isa/param/MISALIGNED_SPLIT_STRATEGY.yaml"
|
|
2826
2825
|
- ".data/spec/std/isa/param/MISA_CSR_IMPLEMENTED.yaml"
|
|
2827
|
-
- ".data/spec/std/isa/param/MOCK_1_BIT_INT.yaml"
|
|
2828
|
-
- ".data/spec/std/isa/param/MOCK_25_BIT_INT.yaml"
|
|
2829
|
-
- ".data/spec/std/isa/param/MOCK_2_BIT_INT.yaml"
|
|
2830
|
-
- ".data/spec/std/isa/param/MOCK_32_BIT_INT.yaml"
|
|
2831
|
-
- ".data/spec/std/isa/param/MOCK_64_BIT_INT.yaml"
|
|
2832
|
-
- ".data/spec/std/isa/param/MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE.yaml"
|
|
2833
|
-
- ".data/spec/std/isa/param/MOCK_ARRAY_INT_ENUM.yaml"
|
|
2834
|
-
- ".data/spec/std/isa/param/MOCK_ARRAY_MAX_ONLY.yaml"
|
|
2835
|
-
- ".data/spec/std/isa/param/MOCK_ARRAY_MIN_ONLY.yaml"
|
|
2836
|
-
- ".data/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM1.yaml"
|
|
2837
|
-
- ".data/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM2.yaml"
|
|
2838
|
-
- ".data/spec/std/isa/param/MOCK_BOOL_1.yaml"
|
|
2839
|
-
- ".data/spec/std/isa/param/MOCK_BOOL_2.yaml"
|
|
2840
|
-
- ".data/spec/std/isa/param/MOCK_ENUM_2_INTS.yaml"
|
|
2841
|
-
- ".data/spec/std/isa/param/MOCK_ENUM_2_STRINGS.yaml"
|
|
2842
|
-
- ".data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_1023.yaml"
|
|
2843
|
-
- ".data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_127.yaml"
|
|
2844
|
-
- ".data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_128.yaml"
|
|
2845
|
-
- ".data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_2.yaml"
|
|
2846
|
-
- ".data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_999.yaml"
|
|
2847
|
-
- ".data/spec/std/isa/param/MOCK_INT_RANGE_1000_TO_2048.yaml"
|
|
2848
|
-
- ".data/spec/std/isa/param/MOCK_INT_RANGE_1_TO_128.yaml"
|
|
2849
2826
|
- ".data/spec/std/isa/param/MSTATEEN_AIA_TYPE.yaml"
|
|
2850
2827
|
- ".data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml"
|
|
2851
2828
|
- ".data/spec/std/isa/param/MSTATEEN_CSRIND_TYPE.yaml"
|
|
@@ -3005,7 +2982,6 @@ files:
|
|
|
3005
2982
|
- ".data/spec/std/isa/param/VU_MODE_ENDIANNESS.yaml"
|
|
3006
2983
|
- ".data/spec/std/isa/proc_cert_class/AC.yaml"
|
|
3007
2984
|
- ".data/spec/std/isa/proc_cert_class/MC.yaml"
|
|
3008
|
-
- ".data/spec/std/isa/proc_cert_class/MockProcessor.yaml"
|
|
3009
2985
|
- ".data/spec/std/isa/proc_cert_class/RVI.yaml"
|
|
3010
2986
|
- ".data/spec/std/isa/proc_cert_model/AC100.yaml"
|
|
3011
2987
|
- ".data/spec/std/isa/proc_cert_model/AC200.yaml"
|
|
@@ -3029,7 +3005,6 @@ files:
|
|
|
3029
3005
|
- ".data/spec/std/isa/profile/RVB23U64.yaml"
|
|
3030
3006
|
- ".data/spec/std/isa/profile/RVI20U32.yaml"
|
|
3031
3007
|
- ".data/spec/std/isa/profile/RVI20U64.yaml"
|
|
3032
|
-
- ".data/spec/std/isa/profile_family/Mock.yaml"
|
|
3033
3008
|
- ".data/spec/std/isa/profile_family/RVA.yaml"
|
|
3034
3009
|
- ".data/spec/std/isa/profile_family/RVB.yaml"
|
|
3035
3010
|
- ".data/spec/std/isa/profile_family/RVI.yaml"
|
|
@@ -1,30 +0,0 @@
|
|
|
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: Xmock
|
|
9
|
-
type: privileged
|
|
10
|
-
long_name: Mock Extension (for testing database)
|
|
11
|
-
description: This is just for testing
|
|
12
|
-
versions:
|
|
13
|
-
- version: "0.9.9"
|
|
14
|
-
state: development
|
|
15
|
-
- version: "1.0.0"
|
|
16
|
-
state: ratified
|
|
17
|
-
ratification_date: 2024-04
|
|
18
|
-
|
|
19
|
-
cert_normative_rules:
|
|
20
|
-
- id: ext.Xmock.cov1
|
|
21
|
-
name: Mock normative rule 1
|
|
22
|
-
description: Let's have fun with the `Xmock` extension
|
|
23
|
-
doc_links:
|
|
24
|
-
- manual:inst:mul:encoding
|
|
25
|
-
- udb:doc:inst:mock
|
|
26
|
-
- id: ext.Xmock.cov2
|
|
27
|
-
name: Mock normative rule 2
|
|
28
|
-
description: And some more fun!
|
|
29
|
-
doc_links:
|
|
30
|
-
- manual:csr:misa:disabling-extension
|
|
@@ -1,17 +0,0 @@
|
|
|
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/param_schema.json
|
|
5
|
-
|
|
6
|
-
$schema: param_schema.json#
|
|
7
|
-
kind: parameter
|
|
8
|
-
name: MOCK_1_BIT_INT
|
|
9
|
-
description: foo
|
|
10
|
-
long_name: TODO
|
|
11
|
-
schema:
|
|
12
|
-
type: integer
|
|
13
|
-
minimum: 0
|
|
14
|
-
maximum: 1
|
|
15
|
-
definedBy:
|
|
16
|
-
extension:
|
|
17
|
-
name: Xmock
|
|
@@ -1,17 +0,0 @@
|
|
|
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/param_schema.json
|
|
5
|
-
|
|
6
|
-
$schema: param_schema.json#
|
|
7
|
-
kind: parameter
|
|
8
|
-
name: MOCK_25_BIT_INT
|
|
9
|
-
description: foo
|
|
10
|
-
long_name: TODO
|
|
11
|
-
schema:
|
|
12
|
-
type: integer
|
|
13
|
-
minimum: 0
|
|
14
|
-
maximum: 33554431
|
|
15
|
-
definedBy:
|
|
16
|
-
extension:
|
|
17
|
-
name: Xmock
|
|
@@ -1,17 +0,0 @@
|
|
|
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/param_schema.json
|
|
5
|
-
|
|
6
|
-
$schema: param_schema.json#
|
|
7
|
-
kind: parameter
|
|
8
|
-
name: MOCK_2_BIT_INT
|
|
9
|
-
description: foo
|
|
10
|
-
long_name: TODO
|
|
11
|
-
schema:
|
|
12
|
-
type: integer
|
|
13
|
-
minimum: 0
|
|
14
|
-
maximum: 3
|
|
15
|
-
definedBy:
|
|
16
|
-
extension:
|
|
17
|
-
name: Xmock
|
|
@@ -1,17 +0,0 @@
|
|
|
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/param_schema.json
|
|
5
|
-
|
|
6
|
-
$schema: param_schema.json#
|
|
7
|
-
kind: parameter
|
|
8
|
-
name: MOCK_32_BIT_INT
|
|
9
|
-
description: foo
|
|
10
|
-
long_name: TODO
|
|
11
|
-
schema:
|
|
12
|
-
type: integer
|
|
13
|
-
minimum: 0
|
|
14
|
-
maximum: 4294967295
|
|
15
|
-
definedBy:
|
|
16
|
-
extension:
|
|
17
|
-
name: Xmock
|
|
@@ -1,17 +0,0 @@
|
|
|
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/param_schema.json
|
|
5
|
-
|
|
6
|
-
$schema: param_schema.json#
|
|
7
|
-
kind: parameter
|
|
8
|
-
name: MOCK_64_BIT_INT
|
|
9
|
-
description: foo
|
|
10
|
-
long_name: TODO
|
|
11
|
-
schema:
|
|
12
|
-
type: integer
|
|
13
|
-
minimum: 0
|
|
14
|
-
maximum: 18446744073709551615
|
|
15
|
-
definedBy:
|
|
16
|
-
extension:
|
|
17
|
-
name: Xmock
|