udb 0.1.0
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 +7 -0
- data/.data/cfgs/MC100-32.yaml +23 -0
- data/.data/cfgs/_.yaml +8 -0
- data/.data/cfgs/example_rv64_with_overlay.yaml +618 -0
- data/.data/cfgs/mc100-32-full-example.yaml +91 -0
- data/.data/cfgs/memmap.json +76 -0
- data/.data/cfgs/prm_demo_rv32.yaml +28 -0
- data/.data/cfgs/profile/RVA20S64.yaml +73 -0
- data/.data/cfgs/profile/RVA20U64.yaml +53 -0
- data/.data/cfgs/profile/RVA22S64.yaml +123 -0
- data/.data/cfgs/profile/RVA22U64.yaml +85 -0
- data/.data/cfgs/profile/RVA23M64.yaml +161 -0
- data/.data/cfgs/profile/RVA23S64.yaml +151 -0
- data/.data/cfgs/profile/RVA23U64.yaml +131 -0
- data/.data/cfgs/profile/RVB23M64.yaml +151 -0
- data/.data/cfgs/profile/RVB23S64.yaml +147 -0
- data/.data/cfgs/profile/RVB23U64.yaml +141 -0
- data/.data/cfgs/profile/RVI20U32.yaml +41 -0
- data/.data/cfgs/profile/RVI20U64.yaml +41 -0
- data/.data/cfgs/qc_iu.yaml +153 -0
- data/.data/cfgs/regress.yaml +9 -0
- data/.data/cfgs/rv32-riscv-tests.yaml +208 -0
- data/.data/cfgs/rv32-vector.yaml +246 -0
- data/.data/cfgs/rv32.yaml +15 -0
- data/.data/cfgs/rv64-riscv-tests.yaml +202 -0
- data/.data/cfgs/rv64-vector.yaml +245 -0
- data/.data/cfgs/rv64.yaml +14 -0
- data/.data/spec/custom/isa/example/csr/marchid.yaml +8 -0
- data/.data/spec/custom/isa/example/csr/mcustom0.yaml +18 -0
- data/.data/spec/custom/isa/example/ext/Xcustom.yaml +15 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/gen_mcliciX.rb +188 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mcause.yaml +85 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie0.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie1.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie2.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie3.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie4.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie5.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie6.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie7.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl00.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl01.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl02.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl03.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl04.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl05.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl06.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl07.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl08.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl09.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl10.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl11.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl12.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl13.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl14.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl15.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl16.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl17.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl18.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl19.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl20.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl21.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl22.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl23.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl24.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl25.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl26.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl27.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl28.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl29.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl30.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl31.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip0.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip1.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip2.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip3.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip4.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip5.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip6.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip7.yaml +181 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mmcr.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mntvec.yaml +28 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mstkbottomaddr.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mstktopaddr.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mthreadptr.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr0.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr1.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr2.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr3.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr0.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr1.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr2.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr3.yaml +27 -0
- data/.data/spec/custom/isa/qc_iu/exception_code/ExecWatchpoint.yaml +13 -0
- data/.data/spec/custom/isa/qc_iu/exception_code/IllegalStackPointer.yaml +13 -0
- data/.data/spec/custom/isa/qc_iu/exception_code/ReadWatchpoint.yaml +13 -0
- data/.data/spec/custom/isa/qc_iu/exception_code/SpOutOfRange.yaml +13 -0
- data/.data/spec/custom/isa/qc_iu/exception_code/WriteWatchpoint.yaml +13 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqccmp.yaml +160 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqci.yaml +778 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcia.yaml +111 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqciac.yaml +66 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcibi.yaml +50 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcibm.yaml +146 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcicli.yaml +57 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcicm.yaml +50 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcics.yaml +44 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcicsr.yaml +68 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqciint.yaml +173 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqciio.yaml +32 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcilb.yaml +46 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcili.yaml +49 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcilia.yaml +47 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcilo.yaml +59 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcilsm.yaml +94 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcisim.yaml +48 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcisls.yaml +44 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqcisync.yaml +62 -0
- data/.data/spec/custom/isa/qc_iu/inst/C/c.slli.yaml +6 -0
- data/.data/spec/custom/isa/qc_iu/inst/C/c.srai.yaml +5 -0
- data/.data/spec/custom/isa/qc_iu/inst/C/c.srli.yaml +5 -0
- data/.data/spec/custom/isa/qc_iu/inst/I/slti.yaml +15 -0
- data/.data/spec/custom/isa/qc_iu/inst/I/sltiu.yaml +8 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mva01s.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mvsa01.yaml +38 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pop.yaml +87 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popret.yaml +88 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popretz.yaml +88 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.push.yaml +87 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pushfp.yaml +89 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.addsat.yaml +51 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.addusat.yaml +44 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.beqi.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.bgei.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.bgeui.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.blti.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.bltui.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.bnei.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.brev32.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bexti.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bseti.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.clrint.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.delay.yaml +31 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.di.yaml +30 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.dir.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ei.yaml +30 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.eir.yaml +35 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.extu.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.nest.yaml +61 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.yaml +59 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mileaveret.yaml +106 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mnret.yaml +50 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mret.yaml +53 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.muliadd.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mveqz.yaml +35 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ptrace.yaml +31 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.setint.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.sync.yaml +46 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncr.yaml +46 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwf.yaml +46 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwl.yaml +46 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.clo.yaml +38 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.clrinti.yaml +35 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.compress2.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.compress3.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwr.yaml +52 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwri.yaml +48 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.cto.yaml +38 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addai.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addi.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andai.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andi.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.beqi.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgei.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgeui.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.blti.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bltui.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bnei.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.j.yaml +32 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.jal.yaml +35 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lb.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lbu.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lh.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lhu.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.li.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lw.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.orai.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.ori.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sb.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sh.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sw.yaml +36 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xorai.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xori.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.expand2.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.expand3.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ext.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extd.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdpr.yaml +49 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdprh.yaml +49 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdr.yaml +49 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdu.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdupr.yaml +49 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extduprh.yaml +49 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdur.yaml +49 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extu.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insb.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbh.yaml +51 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbhr.yaml +53 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbi.yaml +43 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbpr.yaml +47 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbprh.yaml +47 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbr.yaml +47 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbri.yaml +48 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.inw.yaml +38 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.li.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lieq.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lieqi.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lige.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ligei.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeu.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeui.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lilt.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lilti.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.liltu.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.liltui.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.line.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.linei.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrb.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrbu.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrh.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrhu.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrw.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lwm.yaml +46 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lwmi.yaml +45 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.muliadd.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mveq.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mveqi.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvge.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgei.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeu.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeui.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlt.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlti.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltu.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltui.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvne.yaml +42 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvnei.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.norm.yaml +41 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.normeu.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.normu.yaml +40 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.outw.yaml +38 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pcoredump.yaml +32 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pexit.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ppreg.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ppregs.yaml +31 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pputc.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pputci.yaml +33 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pputs.yaml +34 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscall.yaml +34 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscalli.yaml +34 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selecteqi.yaml +44 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieq.yaml +44 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieqi.yaml +43 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiieq.yaml +43 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiine.yaml +43 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectine.yaml +44 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectinei.yaml +43 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectnei.yaml +44 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.setinti.yaml +35 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.setwm.yaml +45 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.setwmi.yaml +44 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.shladd.yaml +43 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.shlsat.yaml +48 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.shlusat.yaml +45 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srb.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srh.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srw.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.subsat.yaml +53 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.subusat.yaml +37 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.swm.yaml +46 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.swmi.yaml +45 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.sync.yaml +34 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.syncr.yaml +34 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwf.yaml +34 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwl.yaml +34 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.wrap.yaml +43 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.wrapi.yaml +47 -0
- data/.data/spec/custom/isa/qc_iu/isa/globals.isa +83 -0
- data/.data/spec/custom/isa/regress/manual_version/isa/regress/isa_regress.yaml +222 -0
- data/.data/spec/schemas/README.adoc +87 -0
- data/.data/spec/schemas/config_schema.json +198 -0
- data/.data/spec/schemas/csr_schema.json +319 -0
- data/.data/spec/schemas/exception_code_schema.json +33 -0
- data/.data/spec/schemas/ext_schema.json +168 -0
- data/.data/spec/schemas/inst_opcode_schema.json +37 -0
- data/.data/spec/schemas/inst_schema.json +503 -0
- data/.data/spec/schemas/inst_subtype_schema.json +190 -0
- data/.data/spec/schemas/inst_type_schema.json +69 -0
- data/.data/spec/schemas/inst_var_schema.json +93 -0
- data/.data/spec/schemas/inst_var_type_schema.json +45 -0
- data/.data/spec/schemas/inst_variable_metadatas.json +10 -0
- data/.data/spec/schemas/interrupt_code_schema.json +33 -0
- data/.data/spec/schemas/json-schema-draft-07.json +242 -0
- data/.data/spec/schemas/manual_schema.json +44 -0
- data/.data/spec/schemas/manual_version_schema.json +129 -0
- data/.data/spec/schemas/mmr_schema.json +74 -0
- data/.data/spec/schemas/non_isa_schema.json +102 -0
- data/.data/spec/schemas/param_schema.json +48 -0
- data/.data/spec/schemas/prm_schema.json +203 -0
- data/.data/spec/schemas/proc_cert_class_schema.json +35 -0
- data/.data/spec/schemas/proc_cert_model_schema.json +336 -0
- data/.data/spec/schemas/profile_family_schema.json +54 -0
- data/.data/spec/schemas/profile_release_schema.json +22 -0
- data/.data/spec/schemas/profile_schema.json +139 -0
- data/.data/spec/schemas/register_file_schema.json +123 -0
- data/.data/spec/schemas/schema_defs.json +905 -0
- data/.data/spec/std/isa/README.adoc +295 -0
- data/.data/spec/std/isa/csr/F/fcsr.yaml +190 -0
- data/.data/spec/std/isa/csr/F/fflags.yaml +95 -0
- data/.data/spec/std/isa/csr/F/frm.yaml +57 -0
- data/.data/spec/std/isa/csr/H/hcounteren.layout +178 -0
- data/.data/spec/std/isa/csr/H/hcounteren.yaml +1215 -0
- data/.data/spec/std/isa/csr/H/henvcfg.yaml +307 -0
- data/.data/spec/std/isa/csr/H/henvcfgh.yaml +120 -0
- data/.data/spec/std/isa/csr/H/hgatp.yaml +242 -0
- data/.data/spec/std/isa/csr/H/htimedelta.yaml +32 -0
- data/.data/spec/std/isa/csr/H/htimedeltah.yaml +32 -0
- data/.data/spec/std/isa/csr/H/htinst.yaml +50 -0
- data/.data/spec/std/isa/csr/H/htval.yaml +42 -0
- data/.data/spec/std/isa/csr/H/mtinst.yaml +50 -0
- data/.data/spec/std/isa/csr/H/mtval2.yaml +43 -0
- data/.data/spec/std/isa/csr/H/vsatp.yaml +149 -0
- data/.data/spec/std/isa/csr/I/mcounteren.layout +192 -0
- data/.data/spec/std/isa/csr/I/mcounteren.yaml +1061 -0
- data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +79 -0
- data/.data/spec/std/isa/csr/I/pmpaddrN.layout +81 -0
- data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +493 -0
- data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +255 -0
- data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +493 -0
- data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +255 -0
- data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +493 -0
- data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +255 -0
- data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +493 -0
- data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +255 -0
- data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +493 -0
- data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +255 -0
- data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +493 -0
- data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +255 -0
- data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +493 -0
- data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +255 -0
- data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +493 -0
- data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +255 -0
- data/.data/spec/std/isa/csr/I/pmpcfgN.layout +90 -0
- data/.data/spec/std/isa/csr/S/scounteren.layout +103 -0
- data/.data/spec/std/isa/csr/S/scounteren.yaml +692 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +97 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +69 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +94 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +69 -0
- data/.data/spec/std/isa/csr/Smcsrind/mireg.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/mireg2.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/mireg3.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/mireg4.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/mireg5.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/mireg6.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/miselect.yaml +47 -0
- data/.data/spec/std/isa/csr/Smcsrind/sireg.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/sireg2.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/sireg3.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/sireg4.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/sireg5.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/sireg6.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/siselect.yaml +41 -0
- data/.data/spec/std/isa/csr/Smcsrind/vsireg.yaml +63 -0
- data/.data/spec/std/isa/csr/Smcsrind/vsireg2.yaml +62 -0
- data/.data/spec/std/isa/csr/Smcsrind/vsireg3.yaml +61 -0
- data/.data/spec/std/isa/csr/Smcsrind/vsireg4.yaml +61 -0
- data/.data/spec/std/isa/csr/Smcsrind/vsireg5.yaml +62 -0
- data/.data/spec/std/isa/csr/Smcsrind/vsireg6.yaml +62 -0
- data/.data/spec/std/isa/csr/Smcsrind/vsiselect.yaml +47 -0
- data/.data/spec/std/isa/csr/Smctr/mctrctl.yaml +223 -0
- data/.data/spec/std/isa/csr/Smctr/sctrctl.yaml +224 -0
- data/.data/spec/std/isa/csr/Smctr/vsctrctl.yaml +228 -0
- data/.data/spec/std/isa/csr/Smrnmi/mncause.yaml +49 -0
- data/.data/spec/std/isa/csr/Smrnmi/mnepc.yaml +54 -0
- data/.data/spec/std/isa/csr/Smrnmi/mnscratch.yaml +26 -0
- data/.data/spec/std/isa/csr/Smrnmi/mnstatus.yaml +109 -0
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +64 -0
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +455 -0
- data/.data/spec/std/isa/csr/Ssqosid/srmcfg.yaml +116 -0
- data/.data/spec/std/isa/csr/V/vcsr.yaml +36 -0
- data/.data/spec/std/isa/csr/V/vl.yaml +33 -0
- data/.data/spec/std/isa/csr/V/vlenb.yaml +27 -0
- data/.data/spec/std/isa/csr/V/vstart.yaml +81 -0
- data/.data/spec/std/isa/csr/V/vtype.yaml +125 -0
- data/.data/spec/std/isa/csr/V/vxrm.yaml +48 -0
- data/.data/spec/std/isa/csr/V/vxsat.yaml +33 -0
- data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.layout +86 -0
- data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.yaml +507 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter10.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter10h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter11.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter11h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter12.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter12h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter13.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter13h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter14.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter14h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter15.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter15h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter16.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter16h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter17.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter17h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter18.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter18h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter19.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter19h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter20.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter20h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter21.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter21h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter22.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter22h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter23.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter23h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter24.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter24h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter25.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter25h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter26.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter26h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter27.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter27h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter28.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter28h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter29.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter29h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter3.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter30.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter30h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter31.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter31h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter3h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter4.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter4h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter5.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter5h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter6.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter6h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter7.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter7h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter8.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter8h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter9.yaml +67 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounter9h.yaml +69 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounterN.layout +65 -0
- data/.data/spec/std/isa/csr/Zihpm/hpmcounterNh.layout +67 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +106 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +85 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +104 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +83 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent10.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent11.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent12.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent13.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent14.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent15.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent16.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent17.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent18.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent19.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent20.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent21.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent22.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent23.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent24.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent25.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent26.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent27.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent28.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent29.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent3.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent30.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent31.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent4.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent5.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent6.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent7.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent8.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent9.yaml +170 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml +163 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmeventN.layout +168 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmeventNh.layout +161 -0
- data/.data/spec/std/isa/csr/cycle.yaml +79 -0
- data/.data/spec/std/isa/csr/cycleh.yaml +86 -0
- data/.data/spec/std/isa/csr/dcsr.yaml +293 -0
- data/.data/spec/std/isa/csr/dpc.yaml +45 -0
- data/.data/spec/std/isa/csr/dscratch0.yaml +28 -0
- data/.data/spec/std/isa/csr/dscratch1.yaml +28 -0
- data/.data/spec/std/isa/csr/hcontext.yaml +64 -0
- data/.data/spec/std/isa/csr/hedeleg.yaml +243 -0
- data/.data/spec/std/isa/csr/hedelegh.yaml +23 -0
- data/.data/spec/std/isa/csr/hstateen0.yaml +220 -0
- data/.data/spec/std/isa/csr/hstateen0h.yaml +159 -0
- data/.data/spec/std/isa/csr/hstateen1.yaml +70 -0
- data/.data/spec/std/isa/csr/hstateen1h.yaml +47 -0
- data/.data/spec/std/isa/csr/hstateen2.yaml +70 -0
- data/.data/spec/std/isa/csr/hstateen2h.yaml +47 -0
- data/.data/spec/std/isa/csr/hstateen3.yaml +70 -0
- data/.data/spec/std/isa/csr/hstateen3h.yaml +47 -0
- data/.data/spec/std/isa/csr/hstatus.yaml +246 -0
- data/.data/spec/std/isa/csr/instret.yaml +77 -0
- data/.data/spec/std/isa/csr/instreth.yaml +81 -0
- data/.data/spec/std/isa/csr/jvt.yaml +89 -0
- data/.data/spec/std/isa/csr/marchid.yaml +58 -0
- data/.data/spec/std/isa/csr/mcause.yaml +94 -0
- data/.data/spec/std/isa/csr/mconfigptr.yaml +61 -0
- data/.data/spec/std/isa/csr/mcontext.yaml +55 -0
- data/.data/spec/std/isa/csr/mcycle.yaml +67 -0
- data/.data/spec/std/isa/csr/mcycleh.yaml +40 -0
- data/.data/spec/std/isa/csr/medeleg.yaml +672 -0
- data/.data/spec/std/isa/csr/medelegh.yaml +22 -0
- data/.data/spec/std/isa/csr/menvcfg.yaml +305 -0
- data/.data/spec/std/isa/csr/menvcfgh.yaml +59 -0
- data/.data/spec/std/isa/csr/mepc.yaml +54 -0
- data/.data/spec/std/isa/csr/mhartid.yaml +26 -0
- data/.data/spec/std/isa/csr/mideleg.yaml +204 -0
- data/.data/spec/std/isa/csr/mie.yaml +105 -0
- data/.data/spec/std/isa/csr/mimpid.yaml +41 -0
- data/.data/spec/std/isa/csr/minstret.yaml +54 -0
- data/.data/spec/std/isa/csr/minstreth.yaml +39 -0
- data/.data/spec/std/isa/csr/mip.yaml +434 -0
- data/.data/spec/std/isa/csr/misa.yaml +263 -0
- data/.data/spec/std/isa/csr/mscontext.yaml +42 -0
- data/.data/spec/std/isa/csr/mscratch.yaml +24 -0
- data/.data/spec/std/isa/csr/mseccfg.yaml +25 -0
- data/.data/spec/std/isa/csr/mseccfgh.yaml +28 -0
- data/.data/spec/std/isa/csr/mstateen0.yaml +182 -0
- data/.data/spec/std/isa/csr/mstateen0h.yaml +151 -0
- data/.data/spec/std/isa/csr/mstateen1.yaml +65 -0
- data/.data/spec/std/isa/csr/mstateen1h.yaml +37 -0
- data/.data/spec/std/isa/csr/mstateen2.yaml +65 -0
- data/.data/spec/std/isa/csr/mstateen2h.yaml +37 -0
- data/.data/spec/std/isa/csr/mstateen3.yaml +65 -0
- data/.data/spec/std/isa/csr/mstateen3h.yaml +37 -0
- data/.data/spec/std/isa/csr/mstatus.yaml +626 -0
- data/.data/spec/std/isa/csr/mstatush.yaml +88 -0
- data/.data/spec/std/isa/csr/mtval.yaml +105 -0
- data/.data/spec/std/isa/csr/mtvec.yaml +111 -0
- data/.data/spec/std/isa/csr/mvendorid.yaml +28 -0
- data/.data/spec/std/isa/csr/satp.yaml +184 -0
- data/.data/spec/std/isa/csr/scause.yaml +96 -0
- data/.data/spec/std/isa/csr/schema.adoc +223 -0
- data/.data/spec/std/isa/csr/scontext.yaml +52 -0
- data/.data/spec/std/isa/csr/senvcfg.yaml +157 -0
- data/.data/spec/std/isa/csr/sepc.yaml +51 -0
- data/.data/spec/std/isa/csr/sie.yaml +49 -0
- data/.data/spec/std/isa/csr/sip.yaml +160 -0
- data/.data/spec/std/isa/csr/sscratch.yaml +23 -0
- data/.data/spec/std/isa/csr/sstateen0.yaml +134 -0
- data/.data/spec/std/isa/csr/sstateen1.yaml +96 -0
- data/.data/spec/std/isa/csr/sstateen2.yaml +96 -0
- data/.data/spec/std/isa/csr/sstateen3.yaml +96 -0
- data/.data/spec/std/isa/csr/sstatus.yaml +149 -0
- data/.data/spec/std/isa/csr/stval.yaml +103 -0
- data/.data/spec/std/isa/csr/stvec.yaml +54 -0
- data/.data/spec/std/isa/csr/tdata1.yaml +68 -0
- data/.data/spec/std/isa/csr/tdata2.yaml +32 -0
- data/.data/spec/std/isa/csr/tdata3.yaml +32 -0
- data/.data/spec/std/isa/csr/time.yaml +89 -0
- data/.data/spec/std/isa/csr/timeh.yaml +90 -0
- data/.data/spec/std/isa/csr/tselect.yaml +36 -0
- data/.data/spec/std/isa/csr/vscause.yaml +97 -0
- data/.data/spec/std/isa/csr/vsepc.yaml +52 -0
- data/.data/spec/std/isa/csr/vsstatus.yaml +232 -0
- data/.data/spec/std/isa/csr/vstval.yaml +105 -0
- data/.data/spec/std/isa/csr/vstvec.yaml +55 -0
- data/.data/spec/std/isa/exception_code/Breakpoint.yaml +13 -0
- data/.data/spec/std/isa/exception_code/DoubleTrap.yaml +13 -0
- data/.data/spec/std/isa/exception_code/HardwareError.yaml +14 -0
- data/.data/spec/std/isa/exception_code/IllegalInstruction.yaml +13 -0
- data/.data/spec/std/isa/exception_code/InstructionAccessFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/InstructionAddressMisaligned.yaml +13 -0
- data/.data/spec/std/isa/exception_code/InstructionGuestPageFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/InstructionPageFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/LoadAccessFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/LoadAddressMisaligned.yaml +13 -0
- data/.data/spec/std/isa/exception_code/LoadGuestPageFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/LoadPageFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/Mcall.yaml +13 -0
- data/.data/spec/std/isa/exception_code/Scall.yaml +13 -0
- data/.data/spec/std/isa/exception_code/SoftwareCheck.yaml +14 -0
- data/.data/spec/std/isa/exception_code/StoreAmoAccessFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/StoreAmoAddressMisaligned.yaml +13 -0
- data/.data/spec/std/isa/exception_code/StoreAmoGuestPageFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/StoreAmoPageFault.yaml +13 -0
- data/.data/spec/std/isa/exception_code/Ucall.yaml +13 -0
- data/.data/spec/std/isa/exception_code/VScall.yaml +13 -0
- data/.data/spec/std/isa/exception_code/VirtualInstruction.yaml +13 -0
- data/.data/spec/std/isa/ext/A.yaml +79 -0
- data/.data/spec/std/isa/ext/B.yaml +41 -0
- data/.data/spec/std/isa/ext/C.yaml +318 -0
- data/.data/spec/std/isa/ext/D.yaml +109 -0
- data/.data/spec/std/isa/ext/F.yaml +243 -0
- data/.data/spec/std/isa/ext/H.yaml +126 -0
- data/.data/spec/std/isa/ext/I.yaml +18 -0
- data/.data/spec/std/isa/ext/M.yaml +26 -0
- data/.data/spec/std/isa/ext/Q.yaml +26 -0
- data/.data/spec/std/isa/ext/S.yaml +41 -0
- data/.data/spec/std/isa/ext/Sdext.yaml +16 -0
- data/.data/spec/std/isa/ext/Sdtrig.yaml +33 -0
- data/.data/spec/std/isa/ext/Sha.yaml +69 -0
- data/.data/spec/std/isa/ext/Shcounterenw.yaml +29 -0
- data/.data/spec/std/isa/ext/Shgatpa.yaml +42 -0
- data/.data/spec/std/isa/ext/Shtvala.yaml +29 -0
- data/.data/spec/std/isa/ext/Shvsatpa.yaml +19 -0
- data/.data/spec/std/isa/ext/Shvstvala.yaml +61 -0
- data/.data/spec/std/isa/ext/Shvstvecd.yaml +26 -0
- data/.data/spec/std/isa/ext/Sm.yaml +104 -0
- data/.data/spec/std/isa/ext/Smaia.yaml +16 -0
- data/.data/spec/std/isa/ext/Smcdeleg.yaml +40 -0
- data/.data/spec/std/isa/ext/Smcntrpmf.yaml +16 -0
- data/.data/spec/std/isa/ext/Smcsrind.yaml +45 -0
- data/.data/spec/std/isa/ext/Smctr.yaml +58 -0
- data/.data/spec/std/isa/ext/Smdbltrp.yaml +25 -0
- data/.data/spec/std/isa/ext/Smepmp.yaml +36 -0
- data/.data/spec/std/isa/ext/Smhpm.yaml +29 -0
- data/.data/spec/std/isa/ext/Smmpm.yaml +16 -0
- data/.data/spec/std/isa/ext/Smnpm.yaml +17 -0
- data/.data/spec/std/isa/ext/Smpmp.yaml +42 -0
- data/.data/spec/std/isa/ext/Smrnmi.yaml +24 -0
- data/.data/spec/std/isa/ext/Smstateen.yaml +28 -0
- data/.data/spec/std/isa/ext/Ssaia.yaml +20 -0
- data/.data/spec/std/isa/ext/Ssccfg.yaml +16 -0
- data/.data/spec/std/isa/ext/Ssccptr.yaml +26 -0
- data/.data/spec/std/isa/ext/Sscofpmf.yaml +19 -0
- data/.data/spec/std/isa/ext/Sscounterenw.yaml +30 -0
- data/.data/spec/std/isa/ext/Sscsrind.yaml +48 -0
- data/.data/spec/std/isa/ext/Ssctr.yaml +23 -0
- data/.data/spec/std/isa/ext/Ssdbltrp.yaml +25 -0
- data/.data/spec/std/isa/ext/Ssnpm.yaml +17 -0
- data/.data/spec/std/isa/ext/Sspm.yaml +23 -0
- data/.data/spec/std/isa/ext/Ssqosid.yaml +40 -0
- data/.data/spec/std/isa/ext/Ssstateen.yaml +31 -0
- data/.data/spec/std/isa/ext/Ssstrict.yaml +52 -0
- data/.data/spec/std/isa/ext/Sstc.yaml +16 -0
- data/.data/spec/std/isa/ext/Sstvala.yaml +57 -0
- data/.data/spec/std/isa/ext/Sstvecd.yaml +29 -0
- data/.data/spec/std/isa/ext/Sstvecv.yaml +30 -0
- data/.data/spec/std/isa/ext/Ssu32xl.yaml +22 -0
- data/.data/spec/std/isa/ext/Ssu64xl.yaml +23 -0
- data/.data/spec/std/isa/ext/Ssube.yaml +25 -0
- data/.data/spec/std/isa/ext/Supm.yaml +23 -0
- data/.data/spec/std/isa/ext/Sv32.yaml +34 -0
- data/.data/spec/std/isa/ext/Sv39.yaml +34 -0
- data/.data/spec/std/isa/ext/Sv48.yaml +34 -0
- data/.data/spec/std/isa/ext/Sv57.yaml +34 -0
- data/.data/spec/std/isa/ext/Svade.yaml +53 -0
- data/.data/spec/std/isa/ext/Svadu.yaml +136 -0
- data/.data/spec/std/isa/ext/Svbare.yaml +28 -0
- data/.data/spec/std/isa/ext/Svinval.yaml +86 -0
- data/.data/spec/std/isa/ext/Svnapot.yaml +183 -0
- data/.data/spec/std/isa/ext/Svpbmt.yaml +29 -0
- data/.data/spec/std/isa/ext/Svrsw60t59b.yaml +39 -0
- data/.data/spec/std/isa/ext/Svvptc.yaml +37 -0
- data/.data/spec/std/isa/ext/U.yaml +17 -0
- data/.data/spec/std/isa/ext/V.yaml +21 -0
- data/.data/spec/std/isa/ext/Xmock.yaml +30 -0
- data/.data/spec/std/isa/ext/Za128rs.yaml +30 -0
- data/.data/spec/std/isa/ext/Za64rs.yaml +32 -0
- data/.data/spec/std/isa/ext/Zaamo.yaml +136 -0
- data/.data/spec/std/isa/ext/Zabha.yaml +19 -0
- data/.data/spec/std/isa/ext/Zacas.yaml +19 -0
- data/.data/spec/std/isa/ext/Zalasr.yaml +16 -0
- data/.data/spec/std/isa/ext/Zalrsc.yaml +316 -0
- data/.data/spec/std/isa/ext/Zama16b.yaml +24 -0
- data/.data/spec/std/isa/ext/Zawrs.yaml +25 -0
- data/.data/spec/std/isa/ext/Zba.yaml +66 -0
- data/.data/spec/std/isa/ext/Zbb.yaml +54 -0
- data/.data/spec/std/isa/ext/Zbc.yaml +54 -0
- data/.data/spec/std/isa/ext/Zbkb.yaml +18 -0
- data/.data/spec/std/isa/ext/Zbkc.yaml +23 -0
- data/.data/spec/std/isa/ext/Zbkx.yaml +24 -0
- data/.data/spec/std/isa/ext/Zbs.yaml +59 -0
- data/.data/spec/std/isa/ext/Zca.yaml +46 -0
- data/.data/spec/std/isa/ext/Zcb.yaml +45 -0
- data/.data/spec/std/isa/ext/Zcd.yaml +47 -0
- data/.data/spec/std/isa/ext/Zce.yaml +99 -0
- data/.data/spec/std/isa/ext/Zcf.yaml +46 -0
- data/.data/spec/std/isa/ext/Zclsd.yaml +28 -0
- data/.data/spec/std/isa/ext/Zcmop.yaml +58 -0
- data/.data/spec/std/isa/ext/Zcmp.yaml +100 -0
- data/.data/spec/std/isa/ext/Zcmt.yaml +75 -0
- data/.data/spec/std/isa/ext/Zdinx.yaml +49 -0
- data/.data/spec/std/isa/ext/Zfa.yaml +24 -0
- data/.data/spec/std/isa/ext/Zfbfmin.yaml +27 -0
- data/.data/spec/std/isa/ext/Zfh.yaml +24 -0
- data/.data/spec/std/isa/ext/Zfhmin.yaml +55 -0
- data/.data/spec/std/isa/ext/Zfinx.yaml +56 -0
- data/.data/spec/std/isa/ext/Zhinx.yaml +26 -0
- data/.data/spec/std/isa/ext/Zhinxmin.yaml +29 -0
- data/.data/spec/std/isa/ext/Zic64b.yaml +31 -0
- data/.data/spec/std/isa/ext/Zicbom.yaml +15 -0
- data/.data/spec/std/isa/ext/Zicbop.yaml +15 -0
- data/.data/spec/std/isa/ext/Zicboz.yaml +15 -0
- data/.data/spec/std/isa/ext/Ziccamoa.yaml +19 -0
- data/.data/spec/std/isa/ext/Ziccamoc.yaml +23 -0
- data/.data/spec/std/isa/ext/Ziccif.yaml +21 -0
- data/.data/spec/std/isa/ext/Zicclsm.yaml +31 -0
- data/.data/spec/std/isa/ext/Ziccrse.yaml +19 -0
- data/.data/spec/std/isa/ext/Zicfilp.yaml +16 -0
- data/.data/spec/std/isa/ext/Zicfiss.yaml +16 -0
- data/.data/spec/std/isa/ext/Zicntr.yaml +20 -0
- data/.data/spec/std/isa/ext/Zicond.yaml +24 -0
- data/.data/spec/std/isa/ext/Zicsr.yaml +15 -0
- data/.data/spec/std/isa/ext/Zifencei.yaml +75 -0
- data/.data/spec/std/isa/ext/Zihintntl.yaml +201 -0
- data/.data/spec/std/isa/ext/Zihintpause.yaml +76 -0
- data/.data/spec/std/isa/ext/Zihpm.yaml +18 -0
- data/.data/spec/std/isa/ext/Zilsd.yaml +20 -0
- data/.data/spec/std/isa/ext/Zimop.yaml +70 -0
- data/.data/spec/std/isa/ext/Zk.yaml +42 -0
- data/.data/spec/std/isa/ext/Zkn.yaml +57 -0
- data/.data/spec/std/isa/ext/Zknd.yaml +19 -0
- data/.data/spec/std/isa/ext/Zkne.yaml +19 -0
- data/.data/spec/std/isa/ext/Zknh.yaml +19 -0
- data/.data/spec/std/isa/ext/Zkr.yaml +20 -0
- data/.data/spec/std/isa/ext/Zks.yaml +53 -0
- data/.data/spec/std/isa/ext/Zksed.yaml +20 -0
- data/.data/spec/std/isa/ext/Zksh.yaml +19 -0
- data/.data/spec/std/isa/ext/Zkt.yaml +365 -0
- data/.data/spec/std/isa/ext/Zmmul.yaml +28 -0
- data/.data/spec/std/isa/ext/Ztso.yaml +23 -0
- data/.data/spec/std/isa/ext/Zvbb.yaml +20 -0
- data/.data/spec/std/isa/ext/Zvbc.yaml +19 -0
- data/.data/spec/std/isa/ext/Zve32f.yaml +34 -0
- data/.data/spec/std/isa/ext/Zve32x.yaml +38 -0
- data/.data/spec/std/isa/ext/Zve64d.yaml +35 -0
- data/.data/spec/std/isa/ext/Zve64f.yaml +33 -0
- data/.data/spec/std/isa/ext/Zve64x.yaml +35 -0
- data/.data/spec/std/isa/ext/Zvfbfmin.yaml +23 -0
- data/.data/spec/std/isa/ext/Zvfbfwma.yaml +23 -0
- data/.data/spec/std/isa/ext/Zvfh.yaml +43 -0
- data/.data/spec/std/isa/ext/Zvfhmin.yaml +26 -0
- data/.data/spec/std/isa/ext/Zvkb.yaml +16 -0
- data/.data/spec/std/isa/ext/Zvkg.yaml +26 -0
- data/.data/spec/std/isa/ext/Zvkn.yaml +32 -0
- data/.data/spec/std/isa/ext/Zvknc.yaml +27 -0
- data/.data/spec/std/isa/ext/Zvkned.yaml +22 -0
- data/.data/spec/std/isa/ext/Zvkng.yaml +27 -0
- data/.data/spec/std/isa/ext/Zvknha.yaml +17 -0
- data/.data/spec/std/isa/ext/Zvknhb.yaml +21 -0
- data/.data/spec/std/isa/ext/Zvks.yaml +32 -0
- data/.data/spec/std/isa/ext/Zvksc.yaml +27 -0
- data/.data/spec/std/isa/ext/Zvksed.yaml +24 -0
- data/.data/spec/std/isa/ext/Zvksg.yaml +27 -0
- data/.data/spec/std/isa/ext/Zvksh.yaml +20 -0
- data/.data/spec/std/isa/ext/Zvkt.yaml +28 -0
- data/.data/spec/std/isa/ext/Zvl1024b.yaml +30 -0
- data/.data/spec/std/isa/ext/Zvl128b.yaml +31 -0
- data/.data/spec/std/isa/ext/Zvl256b.yaml +30 -0
- data/.data/spec/std/isa/ext/Zvl32b.yaml +28 -0
- data/.data/spec/std/isa/ext/Zvl512b.yaml +30 -0
- data/.data/spec/std/isa/ext/Zvl64b.yaml +31 -0
- data/.data/spec/std/isa/inst/B/andn.yaml +69 -0
- data/.data/spec/std/isa/inst/B/clmul.yaml +66 -0
- data/.data/spec/std/isa/inst/B/clmulh.yaml +66 -0
- data/.data/spec/std/isa/inst/B/orn.yaml +68 -0
- data/.data/spec/std/isa/inst/B/rev8.yaml +77 -0
- data/.data/spec/std/isa/inst/B/rol.yaml +70 -0
- data/.data/spec/std/isa/inst/B/rolw.yaml +65 -0
- data/.data/spec/std/isa/inst/B/ror.yaml +70 -0
- data/.data/spec/std/isa/inst/B/rori.yaml +66 -0
- data/.data/spec/std/isa/inst/B/roriw.yaml +58 -0
- data/.data/spec/std/isa/inst/B/rorw.yaml +65 -0
- data/.data/spec/std/isa/inst/B/xnor.yaml +68 -0
- data/.data/spec/std/isa/inst/C/c.add.yaml +52 -0
- data/.data/spec/std/isa/inst/C/c.addi.yaml +38 -0
- data/.data/spec/std/isa/inst/C/c.addi16sp.yaml +36 -0
- data/.data/spec/std/isa/inst/C/c.addi4spn.yaml +38 -0
- data/.data/spec/std/isa/inst/C/c.addiw.yaml +39 -0
- data/.data/spec/std/isa/inst/C/c.addw.yaml +55 -0
- data/.data/spec/std/isa/inst/C/c.and.yaml +64 -0
- data/.data/spec/std/isa/inst/C/c.andi.yaml +53 -0
- data/.data/spec/std/isa/inst/C/c.beqz.yaml +75 -0
- data/.data/spec/std/isa/inst/C/c.bnez.yaml +75 -0
- data/.data/spec/std/isa/inst/C/c.ebreak.yaml +53 -0
- data/.data/spec/std/isa/inst/C/c.j.yaml +34 -0
- data/.data/spec/std/isa/inst/C/c.jal.yaml +39 -0
- data/.data/spec/std/isa/inst/C/c.jalr.yaml +37 -0
- data/.data/spec/std/isa/inst/C/c.jr.yaml +33 -0
- data/.data/spec/std/isa/inst/C/c.ld.yaml +101 -0
- data/.data/spec/std/isa/inst/C/c.ldsp.yaml +64 -0
- data/.data/spec/std/isa/inst/C/c.li.yaml +36 -0
- data/.data/spec/std/isa/inst/C/c.lui.yaml +38 -0
- data/.data/spec/std/isa/inst/C/c.lw.yaml +74 -0
- data/.data/spec/std/isa/inst/C/c.lwsp.yaml +41 -0
- data/.data/spec/std/isa/inst/C/c.mv.yaml +48 -0
- data/.data/spec/std/isa/inst/C/c.nop.yaml +26 -0
- data/.data/spec/std/isa/inst/C/c.or.yaml +64 -0
- data/.data/spec/std/isa/inst/C/c.sd.yaml +67 -0
- data/.data/spec/std/isa/inst/C/c.sdsp.yaml +63 -0
- data/.data/spec/std/isa/inst/C/c.slli.yaml +65 -0
- data/.data/spec/std/isa/inst/C/c.srai.yaml +66 -0
- data/.data/spec/std/isa/inst/C/c.srli.yaml +66 -0
- data/.data/spec/std/isa/inst/C/c.sub.yaml +64 -0
- data/.data/spec/std/isa/inst/C/c.subw.yaml +55 -0
- data/.data/spec/std/isa/inst/C/c.sw.yaml +41 -0
- data/.data/spec/std/isa/inst/C/c.swsp.yaml +39 -0
- data/.data/spec/std/isa/inst/C/c.xor.yaml +64 -0
- data/.data/spec/std/isa/inst/D/fadd.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fclass.d.yaml +53 -0
- data/.data/spec/std/isa/inst/D/fcvt.d.l.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fcvt.d.lu.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fcvt.d.s.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fcvt.d.w.yaml +35 -0
- data/.data/spec/std/isa/inst/D/fcvt.d.wu.yaml +35 -0
- data/.data/spec/std/isa/inst/D/fcvt.l.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fcvt.lu.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fcvt.s.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fcvt.w.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fcvt.wu.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fcvtmod.w.d.yaml +42 -0
- data/.data/spec/std/isa/inst/D/fdiv.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/feq.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fld.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fle.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fleq.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fli.d.yaml +32 -0
- data/.data/spec/std/isa/inst/D/flt.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fltq.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fmadd.d.yaml +37 -0
- data/.data/spec/std/isa/inst/D/fmax.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fmaxm.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fmin.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fminm.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fmsub.d.yaml +37 -0
- data/.data/spec/std/isa/inst/D/fmul.d.yaml +37 -0
- data/.data/spec/std/isa/inst/D/fmv.d.x.yaml +32 -0
- data/.data/spec/std/isa/inst/D/fmv.x.d.yaml +32 -0
- data/.data/spec/std/isa/inst/D/fmvh.x.d.yaml +35 -0
- data/.data/spec/std/isa/inst/D/fmvp.d.x.yaml +37 -0
- data/.data/spec/std/isa/inst/D/fnmadd.d.yaml +38 -0
- data/.data/spec/std/isa/inst/D/fnmsub.d.yaml +38 -0
- data/.data/spec/std/isa/inst/D/fround.d.yaml +38 -0
- data/.data/spec/std/isa/inst/D/froundnx.d.yaml +34 -0
- data/.data/spec/std/isa/inst/D/fsd.yaml +33 -0
- data/.data/spec/std/isa/inst/D/fsgnj.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fsgnjn.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fsgnjx.d.yaml +36 -0
- data/.data/spec/std/isa/inst/D/fsqrt.d.yaml +35 -0
- data/.data/spec/std/isa/inst/D/fsub.d.yaml +36 -0
- data/.data/spec/std/isa/inst/F/fadd.s.yaml +63 -0
- data/.data/spec/std/isa/inst/F/fclass.s.yaml +90 -0
- data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +56 -0
- data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +56 -0
- data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +56 -0
- data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +55 -0
- data/.data/spec/std/isa/inst/F/fcvt.s.w.yaml +67 -0
- data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +66 -0
- data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +85 -0
- data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +83 -0
- data/.data/spec/std/isa/inst/F/fdiv.s.yaml +60 -0
- data/.data/spec/std/isa/inst/F/feq.s.yaml +68 -0
- data/.data/spec/std/isa/inst/F/fle.s.yaml +68 -0
- data/.data/spec/std/isa/inst/F/fleq.s.yaml +50 -0
- data/.data/spec/std/isa/inst/F/flt.s.yaml +70 -0
- data/.data/spec/std/isa/inst/F/fltq.s.yaml +50 -0
- data/.data/spec/std/isa/inst/F/flw.yaml +80 -0
- data/.data/spec/std/isa/inst/F/fmadd.s.yaml +63 -0
- data/.data/spec/std/isa/inst/F/fmax.s.yaml +59 -0
- data/.data/spec/std/isa/inst/F/fmin.s.yaml +59 -0
- data/.data/spec/std/isa/inst/F/fmsub.s.yaml +63 -0
- data/.data/spec/std/isa/inst/F/fmul.s.yaml +60 -0
- data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +55 -0
- data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +48 -0
- data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +64 -0
- data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +64 -0
- data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +68 -0
- data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +67 -0
- data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +66 -0
- data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +53 -0
- data/.data/spec/std/isa/inst/F/fsub.s.yaml +61 -0
- data/.data/spec/std/isa/inst/F/fsw.yaml +82 -0
- data/.data/spec/std/isa/inst/H/hfence.gvma.yaml +33 -0
- data/.data/spec/std/isa/inst/H/hfence.vvma.yaml +34 -0
- data/.data/spec/std/isa/inst/H/hlv.b.yaml +30 -0
- data/.data/spec/std/isa/inst/H/hlv.bu.yaml +30 -0
- data/.data/spec/std/isa/inst/H/hlv.d.yaml +32 -0
- data/.data/spec/std/isa/inst/H/hlv.h.yaml +30 -0
- data/.data/spec/std/isa/inst/H/hlv.hu.yaml +30 -0
- data/.data/spec/std/isa/inst/H/hlv.w.yaml +30 -0
- data/.data/spec/std/isa/inst/H/hlv.wu.yaml +32 -0
- data/.data/spec/std/isa/inst/H/hlvx.hu.yaml +32 -0
- data/.data/spec/std/isa/inst/H/hlvx.wu.yaml +32 -0
- data/.data/spec/std/isa/inst/H/hsv.b.yaml +30 -0
- data/.data/spec/std/isa/inst/H/hsv.d.yaml +32 -0
- data/.data/spec/std/isa/inst/H/hsv.h.yaml +30 -0
- data/.data/spec/std/isa/inst/H/hsv.w.yaml +30 -0
- data/.data/spec/std/isa/inst/I/add.yaml +68 -0
- data/.data/spec/std/isa/inst/I/addi.yaml +58 -0
- data/.data/spec/std/isa/inst/I/addiw.yaml +50 -0
- data/.data/spec/std/isa/inst/I/addw.yaml +57 -0
- data/.data/spec/std/isa/inst/I/and.yaml +61 -0
- data/.data/spec/std/isa/inst/I/andi.yaml +54 -0
- data/.data/spec/std/isa/inst/I/auipc.yaml +47 -0
- data/.data/spec/std/isa/inst/I/beq.yaml +82 -0
- data/.data/spec/std/isa/inst/I/bge.yaml +84 -0
- data/.data/spec/std/isa/inst/I/bgeu.yaml +79 -0
- data/.data/spec/std/isa/inst/I/blt.yaml +84 -0
- data/.data/spec/std/isa/inst/I/bltu.yaml +79 -0
- data/.data/spec/std/isa/inst/I/bne.yaml +82 -0
- data/.data/spec/std/isa/inst/I/ebreak.yaml +50 -0
- data/.data/spec/std/isa/inst/I/ecall.yaml +81 -0
- data/.data/spec/std/isa/inst/I/fence.tso.yaml +52 -0
- data/.data/spec/std/isa/inst/I/fence.yaml +224 -0
- data/.data/spec/std/isa/inst/I/jal.yaml +69 -0
- data/.data/spec/std/isa/inst/I/jalr.yaml +79 -0
- data/.data/spec/std/isa/inst/I/lb.yaml +68 -0
- data/.data/spec/std/isa/inst/I/lbu.yaml +68 -0
- data/.data/spec/std/isa/inst/I/ld.yaml +98 -0
- data/.data/spec/std/isa/inst/I/lh.yaml +68 -0
- data/.data/spec/std/isa/inst/I/lhu.yaml +68 -0
- data/.data/spec/std/isa/inst/I/lui.yaml +45 -0
- data/.data/spec/std/isa/inst/I/lw.yaml +68 -0
- data/.data/spec/std/isa/inst/I/lwu.yaml +70 -0
- data/.data/spec/std/isa/inst/I/mret.yaml +61 -0
- data/.data/spec/std/isa/inst/I/or.yaml +61 -0
- data/.data/spec/std/isa/inst/I/ori.yaml +56 -0
- data/.data/spec/std/isa/inst/I/sb.yaml +82 -0
- data/.data/spec/std/isa/inst/I/sd.yaml +110 -0
- data/.data/spec/std/isa/inst/I/sh.yaml +82 -0
- data/.data/spec/std/isa/inst/I/sll.yaml +67 -0
- data/.data/spec/std/isa/inst/I/slli.yaml +66 -0
- data/.data/spec/std/isa/inst/I/slliw.yaml +53 -0
- data/.data/spec/std/isa/inst/I/sllw.yaml +53 -0
- data/.data/spec/std/isa/inst/I/slt.yaml +72 -0
- data/.data/spec/std/isa/inst/I/slti.yaml +54 -0
- data/.data/spec/std/isa/inst/I/sltiu.yaml +62 -0
- data/.data/spec/std/isa/inst/I/sltu.yaml +67 -0
- data/.data/spec/std/isa/inst/I/sra.yaml +67 -0
- data/.data/spec/std/isa/inst/I/srai.yaml +68 -0
- data/.data/spec/std/isa/inst/I/sraiw.yaml +54 -0
- data/.data/spec/std/isa/inst/I/sraw.yaml +56 -0
- data/.data/spec/std/isa/inst/I/srl.yaml +67 -0
- data/.data/spec/std/isa/inst/I/srli.yaml +65 -0
- data/.data/spec/std/isa/inst/I/srliw.yaml +55 -0
- data/.data/spec/std/isa/inst/I/srlw.yaml +53 -0
- data/.data/spec/std/isa/inst/I/sub.yaml +67 -0
- data/.data/spec/std/isa/inst/I/subw.yaml +60 -0
- data/.data/spec/std/isa/inst/I/sw.yaml +82 -0
- data/.data/spec/std/isa/inst/I/wfi.yaml +131 -0
- data/.data/spec/std/isa/inst/I/xor.yaml +61 -0
- data/.data/spec/std/isa/inst/I/xori.yaml +56 -0
- data/.data/spec/std/isa/inst/M/div.yaml +82 -0
- data/.data/spec/std/isa/inst/M/divu.yaml +71 -0
- data/.data/spec/std/isa/inst/M/divuw.yaml +78 -0
- data/.data/spec/std/isa/inst/M/divw.yaml +85 -0
- data/.data/spec/std/isa/inst/M/mul.yaml +95 -0
- data/.data/spec/std/isa/inst/M/mulh.yaml +80 -0
- data/.data/spec/std/isa/inst/M/mulhsu.yaml +77 -0
- data/.data/spec/std/isa/inst/M/mulhu.yaml +76 -0
- data/.data/spec/std/isa/inst/M/mulw.yaml +79 -0
- data/.data/spec/std/isa/inst/M/rem.yaml +76 -0
- data/.data/spec/std/isa/inst/M/remu.yaml +66 -0
- data/.data/spec/std/isa/inst/M/remuw.yaml +79 -0
- data/.data/spec/std/isa/inst/M/remw.yaml +84 -0
- data/.data/spec/std/isa/inst/Q/fadd.q.yaml +34 -0
- data/.data/spec/std/isa/inst/Q/fclass.q.yaml +53 -0
- data/.data/spec/std/isa/inst/Q/fcvt.d.q.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fcvt.h.q.yaml +33 -0
- data/.data/spec/std/isa/inst/Q/fcvt.l.q.yaml +33 -0
- data/.data/spec/std/isa/inst/Q/fcvt.lu.q.yaml +33 -0
- data/.data/spec/std/isa/inst/Q/fcvt.q.d.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fcvt.q.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Q/fcvt.q.l.yaml +33 -0
- data/.data/spec/std/isa/inst/Q/fcvt.q.lu.yaml +33 -0
- data/.data/spec/std/isa/inst/Q/fcvt.q.s.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fcvt.q.w.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fcvt.q.wu.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fcvt.s.q.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fcvt.w.q.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fcvt.wu.q.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fdiv.q.yaml +40 -0
- data/.data/spec/std/isa/inst/Q/feq.q.yaml +37 -0
- data/.data/spec/std/isa/inst/Q/fle.q.yaml +37 -0
- data/.data/spec/std/isa/inst/Q/fleq.q.yaml +38 -0
- data/.data/spec/std/isa/inst/Q/fli.q.yaml +33 -0
- data/.data/spec/std/isa/inst/Q/flq.yaml +37 -0
- data/.data/spec/std/isa/inst/Q/flt.q.yaml +38 -0
- data/.data/spec/std/isa/inst/Q/fltq.q.yaml +38 -0
- data/.data/spec/std/isa/inst/Q/fmadd.q.yaml +40 -0
- data/.data/spec/std/isa/inst/Q/fmax.q.yaml +35 -0
- data/.data/spec/std/isa/inst/Q/fmaxm.q.yaml +38 -0
- data/.data/spec/std/isa/inst/Q/fmin.q.yaml +35 -0
- data/.data/spec/std/isa/inst/Q/fminm.q.yaml +38 -0
- data/.data/spec/std/isa/inst/Q/fmsub.q.yaml +36 -0
- data/.data/spec/std/isa/inst/Q/fmul.q.yaml +33 -0
- data/.data/spec/std/isa/inst/Q/fmvh.x.q.yaml +37 -0
- data/.data/spec/std/isa/inst/Q/fmvp.q.x.yaml +39 -0
- data/.data/spec/std/isa/inst/Q/fnmadd.q.yaml +37 -0
- data/.data/spec/std/isa/inst/Q/fnmsub.q.yaml +37 -0
- data/.data/spec/std/isa/inst/Q/fround.q.yaml +38 -0
- data/.data/spec/std/isa/inst/Q/froundnx.q.yaml +34 -0
- data/.data/spec/std/isa/inst/Q/fsgnj.q.yaml +36 -0
- data/.data/spec/std/isa/inst/Q/fsgnjn.q.yaml +36 -0
- data/.data/spec/std/isa/inst/Q/fsgnjx.q.yaml +36 -0
- data/.data/spec/std/isa/inst/Q/fsq.yaml +36 -0
- data/.data/spec/std/isa/inst/Q/fsqrt.q.yaml +31 -0
- data/.data/spec/std/isa/inst/Q/fsub.q.yaml +34 -0
- data/.data/spec/std/isa/inst/README.md +78 -0
- data/.data/spec/std/isa/inst/S/sfence.vma.yaml +331 -0
- data/.data/spec/std/isa/inst/S/sret.yaml +166 -0
- data/.data/spec/std/isa/inst/Sdext/dret.yaml +25 -0
- data/.data/spec/std/isa/inst/Smdbltrp/sctrclr.yaml +47 -0
- data/.data/spec/std/isa/inst/Smrnmi/mnret.yaml +51 -0
- data/.data/spec/std/isa/inst/Svinval/hinval.gvma.yaml +91 -0
- data/.data/spec/std/isa/inst/Svinval/hinval.vvma.yaml +91 -0
- data/.data/spec/std/isa/inst/Svinval/sfence.inval.ir.yaml +44 -0
- data/.data/spec/std/isa/inst/Svinval/sfence.w.inval.yaml +45 -0
- data/.data/spec/std/isa/inst/Svinval/sinval.vma.yaml +102 -0
- data/.data/spec/std/isa/inst/V/vaadd.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vaadd.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vaaddu.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vaaddu.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vadc.vim.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vadc.vvm.yaml +76 -0
- data/.data/spec/std/isa/inst/V/vadc.vxm.yaml +76 -0
- data/.data/spec/std/isa/inst/V/vadd.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vadd.vv.yaml +158 -0
- data/.data/spec/std/isa/inst/V/vadd.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vand.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vand.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vand.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vasub.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vasub.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vasubu.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vasubu.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vcompress.vm.yaml +85 -0
- data/.data/spec/std/isa/inst/V/vcpop.m.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vdiv.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vdiv.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vdivu.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vdivu.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vfadd.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfadd.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfclass.v.yaml +97 -0
- data/.data/spec/std/isa/inst/V/vfcvt.f.x.v.yaml +122 -0
- data/.data/spec/std/isa/inst/V/vfcvt.f.xu.v.yaml +122 -0
- data/.data/spec/std/isa/inst/V/vfcvt.rtz.x.f.v.yaml +122 -0
- data/.data/spec/std/isa/inst/V/vfcvt.rtz.xu.f.v.yaml +122 -0
- data/.data/spec/std/isa/inst/V/vfcvt.x.f.v.yaml +122 -0
- data/.data/spec/std/isa/inst/V/vfcvt.xu.f.v.yaml +122 -0
- data/.data/spec/std/isa/inst/V/vfdiv.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfdiv.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfirst.m.yaml +66 -0
- data/.data/spec/std/isa/inst/V/vfmacc.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfmacc.vv.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfmadd.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfmadd.vv.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfmax.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfmax.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfmerge.vfm.yaml +78 -0
- data/.data/spec/std/isa/inst/V/vfmin.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfmin.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfmsac.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfmsac.vv.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfmsub.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfmsub.vv.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfmul.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfmul.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfmv.f.s.yaml +58 -0
- data/.data/spec/std/isa/inst/V/vfmv.s.f.yaml +71 -0
- data/.data/spec/std/isa/inst/V/vfmv.v.f.yaml +64 -0
- data/.data/spec/std/isa/inst/V/vfncvt.f.f.w.yaml +145 -0
- data/.data/spec/std/isa/inst/V/vfncvt.f.x.w.yaml +145 -0
- data/.data/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml +145 -0
- data/.data/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml +145 -0
- data/.data/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml +145 -0
- data/.data/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml +145 -0
- data/.data/spec/std/isa/inst/V/vfncvt.x.f.w.yaml +145 -0
- data/.data/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml +145 -0
- data/.data/spec/std/isa/inst/V/vfnmacc.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfnmacc.vv.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfnmadd.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfnmadd.vv.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfnmsac.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfnmsac.vv.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfnmsub.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfnmsub.vv.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfrdiv.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfrec7.v.yaml +97 -0
- data/.data/spec/std/isa/inst/V/vfredmax.vs.yaml +50 -0
- data/.data/spec/std/isa/inst/V/vfredmin.vs.yaml +50 -0
- data/.data/spec/std/isa/inst/V/vfredosum.vs.yaml +50 -0
- data/.data/spec/std/isa/inst/V/vfredusum.vs.yaml +50 -0
- data/.data/spec/std/isa/inst/V/vfrsqrt7.v.yaml +97 -0
- data/.data/spec/std/isa/inst/V/vfrsub.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfsgnj.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfsgnj.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfsgnjn.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfsgnjn.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfsgnjx.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfsgnjx.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfslide1down.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfslide1up.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfsqrt.v.yaml +97 -0
- data/.data/spec/std/isa/inst/V/vfsub.vf.yaml +92 -0
- data/.data/spec/std/isa/inst/V/vfsub.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfwadd.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfwadd.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfwadd.wf.yaml +78 -0
- data/.data/spec/std/isa/inst/V/vfwadd.wv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vfwcvt.f.f.v.yaml +137 -0
- data/.data/spec/std/isa/inst/V/vfwcvt.f.x.v.yaml +137 -0
- data/.data/spec/std/isa/inst/V/vfwcvt.f.xu.v.yaml +137 -0
- data/.data/spec/std/isa/inst/V/vfwcvt.rtz.x.f.v.yaml +137 -0
- data/.data/spec/std/isa/inst/V/vfwcvt.rtz.xu.f.v.yaml +137 -0
- data/.data/spec/std/isa/inst/V/vfwcvt.x.f.v.yaml +137 -0
- data/.data/spec/std/isa/inst/V/vfwcvt.xu.f.v.yaml +137 -0
- data/.data/spec/std/isa/inst/V/vfwmacc.vf.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfwmacc.vv.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vfwmsac.vf.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfwmsac.vv.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vfwmul.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfwmul.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfwnmacc.vf.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfwnmacc.vv.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vfwnmsac.vf.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfwnmsac.vv.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vfwredosum.vs.yaml +50 -0
- data/.data/spec/std/isa/inst/V/vfwredusum.vs.yaml +50 -0
- data/.data/spec/std/isa/inst/V/vfwsub.vf.yaml +80 -0
- data/.data/spec/std/isa/inst/V/vfwsub.vv.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vfwsub.wf.yaml +78 -0
- data/.data/spec/std/isa/inst/V/vfwsub.wv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vid.v.yaml +61 -0
- data/.data/spec/std/isa/inst/V/viota.m.yaml +69 -0
- data/.data/spec/std/isa/inst/V/vl1re16.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl1re32.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl1re64.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl1re8.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl2re16.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl2re32.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl2re64.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl2re8.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl4re16.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl4re32.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl4re64.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl4re8.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl8re16.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl8re32.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl8re64.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vl8re8.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vle16.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vle16ff.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vle32.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vle32ff.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vle64.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vle64ff.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vle8.v.yaml +64 -0
- data/.data/spec/std/isa/inst/V/vle8ff.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vlm.v.yaml +48 -0
- data/.data/spec/std/isa/inst/V/vloxei16.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vloxei32.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vloxei64.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vloxei8.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vloxseg2ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg2ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg2ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg2ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg3ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg3ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg3ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg3ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg4ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg4ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg4ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg4ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg5ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg5ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg5ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg5ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg6ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg6ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg6ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg6ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg7ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg7ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg7ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg7ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg8ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg8ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg8ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vloxseg8ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlse16.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vlse32.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vlse64.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vlse8.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vlseg2e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg2e16ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg2e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg2e32ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg2e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg2e64ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg2e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg2e8ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg3e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg3e16ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg3e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg3e32ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg3e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg3e64ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg3e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg3e8ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg4e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg4e16ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg4e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg4e32ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg4e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg4e64ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg4e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg4e8ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg5e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg5e16ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg5e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg5e32ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg5e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg5e64ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg5e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg5e8ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg6e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg6e16ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg6e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg6e32ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg6e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg6e64ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg6e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg6e8ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg7e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg7e16ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg7e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg7e32ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg7e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg7e64ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg7e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg7e8ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg8e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg8e16ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg8e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg8e32ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg8e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg8e64ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg8e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlseg8e8ff.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vlsseg2e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg2e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg2e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg2e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg3e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg3e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg3e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg3e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg4e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg4e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg4e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg4e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg5e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg5e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg5e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg5e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg6e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg6e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg6e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg6e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg7e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg7e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg7e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg7e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg8e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg8e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg8e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vlsseg8e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxei16.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vluxei32.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vluxei64.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vluxei8.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vluxseg2ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg2ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg2ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg2ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg3ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg3ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg3ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg3ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg4ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg4ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg4ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg4ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg5ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg5ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg5ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg5ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg6ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg6ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg6ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg6ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg7ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg7ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg7ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg7ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg8ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg8ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg8ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vluxseg8ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vmacc.vv.yaml +74 -0
- data/.data/spec/std/isa/inst/V/vmacc.vx.yaml +74 -0
- data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +69 -0
- data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +70 -0
- data/.data/spec/std/isa/inst/V/vmadc.vv.yaml +70 -0
- data/.data/spec/std/isa/inst/V/vmadc.vvm.yaml +71 -0
- data/.data/spec/std/isa/inst/V/vmadc.vx.yaml +70 -0
- data/.data/spec/std/isa/inst/V/vmadc.vxm.yaml +71 -0
- data/.data/spec/std/isa/inst/V/vmadd.vv.yaml +74 -0
- data/.data/spec/std/isa/inst/V/vmadd.vx.yaml +74 -0
- data/.data/spec/std/isa/inst/V/vmand.mm.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vmandn.mm.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vmax.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vmax.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vmaxu.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vmaxu.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +76 -0
- data/.data/spec/std/isa/inst/V/vmerge.vvm.yaml +76 -0
- data/.data/spec/std/isa/inst/V/vmerge.vxm.yaml +76 -0
- data/.data/spec/std/isa/inst/V/vmfeq.vf.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmfeq.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmfge.vf.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmfgt.vf.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmfle.vf.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmfle.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmflt.vf.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmflt.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmfne.vf.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmfne.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmin.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vmin.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vminu.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vminu.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vmnand.mm.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vmnor.mm.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vmor.mm.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vmorn.mm.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vmsbc.vv.yaml +70 -0
- data/.data/spec/std/isa/inst/V/vmsbc.vvm.yaml +71 -0
- data/.data/spec/std/isa/inst/V/vmsbc.vx.yaml +70 -0
- data/.data/spec/std/isa/inst/V/vmsbc.vxm.yaml +71 -0
- data/.data/spec/std/isa/inst/V/vmsbf.m.yaml +69 -0
- data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmseq.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmseq.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsgt.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsgtu.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmsif.m.yaml +69 -0
- data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsle.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsle.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsleu.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsleu.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmslt.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmslt.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmsltu.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsltu.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsne.vv.yaml +77 -0
- data/.data/spec/std/isa/inst/V/vmsne.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vmsof.m.yaml +73 -0
- data/.data/spec/std/isa/inst/V/vmul.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vmul.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vmulh.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vmulh.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vmulhsu.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vmulhsu.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vmulhu.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vmulhu.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vmv.s.x.yaml +70 -0
- data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +105 -0
- data/.data/spec/std/isa/inst/V/vmv.v.v.yaml +62 -0
- data/.data/spec/std/isa/inst/V/vmv.v.x.yaml +62 -0
- data/.data/spec/std/isa/inst/V/vmv.x.s.yaml +64 -0
- data/.data/spec/std/isa/inst/V/vmv1r.v.yaml +62 -0
- data/.data/spec/std/isa/inst/V/vmv2r.v.yaml +62 -0
- data/.data/spec/std/isa/inst/V/vmv4r.v.yaml +62 -0
- data/.data/spec/std/isa/inst/V/vmv8r.v.yaml +62 -0
- data/.data/spec/std/isa/inst/V/vmxnor.mm.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vmxor.mm.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vnclip.wi.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vnclip.wv.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vnclip.wx.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vnclipu.wi.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vnclipu.wv.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vnclipu.wx.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vnmsac.vv.yaml +74 -0
- data/.data/spec/std/isa/inst/V/vnmsac.vx.yaml +74 -0
- data/.data/spec/std/isa/inst/V/vnmsub.vv.yaml +74 -0
- data/.data/spec/std/isa/inst/V/vnmsub.vx.yaml +74 -0
- data/.data/spec/std/isa/inst/V/vnsra.wi.yaml +86 -0
- data/.data/spec/std/isa/inst/V/vnsra.wv.yaml +86 -0
- data/.data/spec/std/isa/inst/V/vnsra.wx.yaml +86 -0
- data/.data/spec/std/isa/inst/V/vnsrl.wi.yaml +86 -0
- data/.data/spec/std/isa/inst/V/vnsrl.wv.yaml +86 -0
- data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +86 -0
- data/.data/spec/std/isa/inst/V/vor.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vor.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vor.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vredand.vs.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vredmax.vs.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vredmaxu.vs.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vredmin.vs.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vredminu.vs.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vredor.vs.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vredsum.vs.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vredxor.vs.yaml +81 -0
- data/.data/spec/std/isa/inst/V/vrem.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vrem.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vremu.vv.yaml +116 -0
- data/.data/spec/std/isa/inst/V/vremu.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vrgather.vi.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vrgather.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vrgather.vx.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vrgatherei16.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vrsub.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vs1r.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vs2r.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vs4r.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vs8r.v.yaml +29 -0
- data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vsadd.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vsadd.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vsaddu.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vsaddu.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vsbc.vvm.yaml +76 -0
- data/.data/spec/std/isa/inst/V/vsbc.vxm.yaml +76 -0
- data/.data/spec/std/isa/inst/V/vse16.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vse32.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vse64.v.yaml +52 -0
- data/.data/spec/std/isa/inst/V/vse8.v.yaml +60 -0
- data/.data/spec/std/isa/inst/V/vsetivli.yaml +122 -0
- data/.data/spec/std/isa/inst/V/vsetvl.yaml +147 -0
- data/.data/spec/std/isa/inst/V/vsetvli.yaml +174 -0
- data/.data/spec/std/isa/inst/V/vsext.vf2.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vsext.vf4.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vsext.vf8.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vslide1down.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vslide1up.vx.yaml +125 -0
- data/.data/spec/std/isa/inst/V/vslidedown.vi.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vslidedown.vx.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vslideup.vi.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vslideup.vx.yaml +87 -0
- data/.data/spec/std/isa/inst/V/vsll.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vsll.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vsll.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vsm.v.yaml +48 -0
- data/.data/spec/std/isa/inst/V/vsmul.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vsmul.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vsoxei16.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsoxei32.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsoxei64.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsoxei8.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsoxseg2ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg2ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg2ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg2ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg3ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg3ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg3ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg3ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg4ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg4ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg4ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg4ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg5ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg5ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg5ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg5ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg6ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg6ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg6ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg6ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg7ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg7ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg7ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg7ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg8ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg8ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg8ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsoxseg8ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsra.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vsra.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vsra.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vsrl.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vsrl.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vsrl.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vsse16.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsse32.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsse64.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsse8.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsseg2e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg2e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg2e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg2e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg3e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg3e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg3e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg3e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg4e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg4e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg4e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg4e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg5e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg5e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg5e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg5e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg6e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg6e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg6e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg6e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg7e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg7e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg7e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg7e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg8e16.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg8e32.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg8e64.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vsseg8e8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/V/vssra.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vssra.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vssra.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vssrl.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vssrl.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vssrl.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vssseg2e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg2e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg2e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg2e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg3e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg3e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg3e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg3e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg4e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg4e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg4e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg4e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg5e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg5e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg5e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg5e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg6e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg6e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg6e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg6e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg7e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg7e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg7e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg7e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg8e16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg8e32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg8e64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssseg8e8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vssub.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vssub.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vssubu.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vssubu.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vsub.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vsub.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vsuxei16.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsuxei32.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsuxei64.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsuxei8.v.yaml +54 -0
- data/.data/spec/std/isa/inst/V/vsuxseg2ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg2ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg2ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg2ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg3ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg3ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg3ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg3ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg4ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg4ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg4ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg4ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg5ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg5ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg5ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg5ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg6ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg6ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg6ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg6ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg7ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg7ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg7ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg7ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg8ei16.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg8ei32.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg8ei64.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vsuxseg8ei8.v.yaml +33 -0
- data/.data/spec/std/isa/inst/V/vwadd.vv.yaml +83 -0
- data/.data/spec/std/isa/inst/V/vwadd.vx.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vwadd.wv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwadd.wx.yaml +78 -0
- data/.data/spec/std/isa/inst/V/vwaddu.vv.yaml +83 -0
- data/.data/spec/std/isa/inst/V/vwaddu.vx.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vwaddu.wv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwaddu.wx.yaml +78 -0
- data/.data/spec/std/isa/inst/V/vwmacc.vv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwmacc.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwmaccsu.vv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwmaccsu.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwmaccu.vv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwmaccu.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwmaccus.vx.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwmul.vv.yaml +83 -0
- data/.data/spec/std/isa/inst/V/vwmul.vx.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vwmulsu.vv.yaml +83 -0
- data/.data/spec/std/isa/inst/V/vwmulsu.vx.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vwmulu.vv.yaml +83 -0
- data/.data/spec/std/isa/inst/V/vwmulu.vx.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vwredsum.vs.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwredsumu.vs.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwsub.vv.yaml +83 -0
- data/.data/spec/std/isa/inst/V/vwsub.vx.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vwsub.wv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwsub.wx.yaml +78 -0
- data/.data/spec/std/isa/inst/V/vwsubu.vv.yaml +83 -0
- data/.data/spec/std/isa/inst/V/vwsubu.vx.yaml +82 -0
- data/.data/spec/std/isa/inst/V/vwsubu.wv.yaml +79 -0
- data/.data/spec/std/isa/inst/V/vwsubu.wx.yaml +78 -0
- data/.data/spec/std/isa/inst/V/vxor.vi.yaml +101 -0
- data/.data/spec/std/isa/inst/V/vxor.vv.yaml +134 -0
- data/.data/spec/std/isa/inst/V/vxor.vx.yaml +117 -0
- data/.data/spec/std/isa/inst/V/vzext.vf2.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vzext.vf4.yaml +75 -0
- data/.data/spec/std/isa/inst/V/vzext.vf8.yaml +75 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.SIZE.AQRL.layout +181 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.d.aq.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.d.aqrl.yaml +147 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.d.rl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.d.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.w.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.w.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.w.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoadd.w.yaml +141 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.SIZE.AQRL.layout +181 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.d.aq.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.d.aqrl.yaml +147 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.d.rl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.d.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.w.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.w.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.w.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoand.w.yaml +141 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.SIZE.AQRL.layout +181 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.d.aq.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.d.aqrl.yaml +147 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.d.rl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.d.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.w.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.w.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.w.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomax.w.yaml +141 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.SIZE.AQRL.layout +181 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.aq.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.aqrl.yaml +147 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.rl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.yaml +141 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.SIZE.AQRL.layout +181 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.d.aq.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.d.aqrl.yaml +147 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.d.rl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.d.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.w.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.w.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.w.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amomin.w.yaml +141 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.SIZE.AQRL.layout +181 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.d.aq.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.d.aqrl.yaml +147 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.d.rl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.d.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.w.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.w.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.w.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amominu.w.yaml +141 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.SIZE.AQRL.layout +181 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.d.aq.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.d.aqrl.yaml +147 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.d.rl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.d.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.w.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.w.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.w.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoor.w.yaml +141 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.SIZE.AQRL.layout +180 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.d.aq.yaml +144 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.d.aqrl.yaml +146 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.d.rl.yaml +144 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.d.yaml +142 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.w.aq.yaml +142 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.w.aqrl.yaml +144 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.w.rl.yaml +142 -0
- data/.data/spec/std/isa/inst/Zaamo/amoswap.w.yaml +140 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.SIZE.AQRL.layout +181 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.d.aq.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.d.aqrl.yaml +147 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.d.rl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.d.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.w.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.w.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.w.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zaamo/amoxor.w.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amoadd.b.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoadd.b.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amoadd.b.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoadd.b.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amoadd.h.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoadd.h.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amoadd.h.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoadd.h.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amoand.b.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoand.b.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amoand.b.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoand.b.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amoand.h.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoand.h.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amoand.h.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoand.h.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amocas.b.aq.yaml +135 -0
- data/.data/spec/std/isa/inst/Zabha/amocas.b.aqrl.yaml +137 -0
- data/.data/spec/std/isa/inst/Zabha/amocas.b.rl.yaml +135 -0
- data/.data/spec/std/isa/inst/Zabha/amocas.b.yaml +133 -0
- data/.data/spec/std/isa/inst/Zabha/amocas.h.aq.yaml +135 -0
- data/.data/spec/std/isa/inst/Zabha/amocas.h.aqrl.yaml +137 -0
- data/.data/spec/std/isa/inst/Zabha/amocas.h.rl.yaml +135 -0
- data/.data/spec/std/isa/inst/Zabha/amocas.h.yaml +133 -0
- data/.data/spec/std/isa/inst/Zabha/amomax.b.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomax.b.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amomax.b.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomax.b.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amomax.h.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomax.h.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amomax.h.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomax.h.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amomaxu.b.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomaxu.b.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amomaxu.b.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomaxu.b.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amomaxu.h.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomaxu.h.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amomaxu.h.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomaxu.h.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amomin.b.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomin.b.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amomin.b.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomin.b.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amomin.h.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomin.h.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amomin.h.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amomin.h.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amominu.b.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amominu.b.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amominu.b.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amominu.b.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amominu.h.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amominu.h.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amominu.h.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amominu.h.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amoor.b.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoor.b.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amoor.b.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoor.b.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amoor.h.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoor.h.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amoor.h.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoor.h.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amoswap.b.aq.yaml +142 -0
- data/.data/spec/std/isa/inst/Zabha/amoswap.b.aqrl.yaml +144 -0
- data/.data/spec/std/isa/inst/Zabha/amoswap.b.rl.yaml +142 -0
- data/.data/spec/std/isa/inst/Zabha/amoswap.b.yaml +140 -0
- data/.data/spec/std/isa/inst/Zabha/amoswap.h.aq.yaml +142 -0
- data/.data/spec/std/isa/inst/Zabha/amoswap.h.aqrl.yaml +144 -0
- data/.data/spec/std/isa/inst/Zabha/amoswap.h.rl.yaml +142 -0
- data/.data/spec/std/isa/inst/Zabha/amoswap.h.yaml +140 -0
- data/.data/spec/std/isa/inst/Zabha/amoxor.b.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoxor.b.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amoxor.b.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoxor.b.yaml +141 -0
- data/.data/spec/std/isa/inst/Zabha/amoxor.h.aq.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoxor.h.aqrl.yaml +145 -0
- data/.data/spec/std/isa/inst/Zabha/amoxor.h.rl.yaml +143 -0
- data/.data/spec/std/isa/inst/Zabha/amoxor.h.yaml +141 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.SIZE.AQRL.layout +174 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.d.aq.yaml +135 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.d.aqrl.yaml +137 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.d.rl.yaml +135 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.d.yaml +133 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.q.aq.yaml +137 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.q.aqrl.yaml +139 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.q.rl.yaml +137 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.q.yaml +135 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.w.aq.yaml +135 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.w.aqrl.yaml +137 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.w.rl.yaml +135 -0
- data/.data/spec/std/isa/inst/Zacas/amocas.w.yaml +133 -0
- data/.data/spec/std/isa/inst/Zalasr/lSIZE.AQRL.layout +80 -0
- data/.data/spec/std/isa/inst/Zalasr/lb.aq.yaml +65 -0
- data/.data/spec/std/isa/inst/Zalasr/lb.aqrl.yaml +65 -0
- data/.data/spec/std/isa/inst/Zalasr/ld.aq.yaml +65 -0
- data/.data/spec/std/isa/inst/Zalasr/ld.aqrl.yaml +65 -0
- data/.data/spec/std/isa/inst/Zalasr/lh.aq.yaml +65 -0
- data/.data/spec/std/isa/inst/Zalasr/lh.aqrl.yaml +65 -0
- data/.data/spec/std/isa/inst/Zalasr/lw.aq.yaml +65 -0
- data/.data/spec/std/isa/inst/Zalasr/lw.aqrl.yaml +65 -0
- data/.data/spec/std/isa/inst/Zalasr/sSIZE.AQRL.layout +95 -0
- data/.data/spec/std/isa/inst/Zalasr/sb.aqrl.yaml +80 -0
- data/.data/spec/std/isa/inst/Zalasr/sb.rl.yaml +80 -0
- data/.data/spec/std/isa/inst/Zalasr/sd.aqrl.yaml +80 -0
- data/.data/spec/std/isa/inst/Zalasr/sd.rl.yaml +80 -0
- data/.data/spec/std/isa/inst/Zalasr/sh.aqrl.yaml +80 -0
- data/.data/spec/std/isa/inst/Zalasr/sh.rl.yaml +80 -0
- data/.data/spec/std/isa/inst/Zalasr/sw.aqrl.yaml +80 -0
- data/.data/spec/std/isa/inst/Zalasr/sw.rl.yaml +80 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.SIZE.AQRL.layout +205 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.d.aq.yaml +151 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.d.aqrl.yaml +151 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.d.rl.yaml +151 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.d.yaml +151 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.w.aq.yaml +158 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.w.aqrl.yaml +158 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.w.rl.yaml +158 -0
- data/.data/spec/std/isa/inst/Zalrsc/lr.w.yaml +158 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.SIZE.AQRL.layout +288 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.d.aq.yaml +245 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.d.aqrl.yaml +245 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.d.rl.yaml +245 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.d.yaml +245 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.w.aq.yaml +247 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.w.aqrl.yaml +247 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.w.rl.yaml +247 -0
- data/.data/spec/std/isa/inst/Zalrsc/sc.w.yaml +247 -0
- data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +77 -0
- data/.data/spec/std/isa/inst/Zawrs/wrs.sto.yaml +57 -0
- data/.data/spec/std/isa/inst/Zba/add.uw.yaml +63 -0
- data/.data/spec/std/isa/inst/Zba/sh1add.uw.yaml +59 -0
- data/.data/spec/std/isa/inst/Zba/sh1add.yaml +54 -0
- data/.data/spec/std/isa/inst/Zba/sh2add.uw.yaml +59 -0
- data/.data/spec/std/isa/inst/Zba/sh2add.yaml +54 -0
- data/.data/spec/std/isa/inst/Zba/sh3add.uw.yaml +59 -0
- data/.data/spec/std/isa/inst/Zba/sh3add.yaml +54 -0
- data/.data/spec/std/isa/inst/Zba/slli.uw.yaml +54 -0
- data/.data/spec/std/isa/inst/Zbb/clz.yaml +54 -0
- data/.data/spec/std/isa/inst/Zbb/clzw.yaml +55 -0
- data/.data/spec/std/isa/inst/Zbb/cpop.yaml +69 -0
- data/.data/spec/std/isa/inst/Zbb/cpopw.yaml +71 -0
- data/.data/spec/std/isa/inst/Zbb/ctz.yaml +59 -0
- data/.data/spec/std/isa/inst/Zbb/ctzw.yaml +57 -0
- data/.data/spec/std/isa/inst/Zbb/max.yaml +71 -0
- data/.data/spec/std/isa/inst/Zbb/maxu.yaml +63 -0
- data/.data/spec/std/isa/inst/Zbb/min.yaml +63 -0
- data/.data/spec/std/isa/inst/Zbb/minu.yaml +63 -0
- data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +59 -0
- data/.data/spec/std/isa/inst/Zbb/sext.b.yaml +55 -0
- data/.data/spec/std/isa/inst/Zbb/sext.h.yaml +55 -0
- data/.data/spec/std/isa/inst/Zbb/zext.h.yaml +69 -0
- data/.data/spec/std/isa/inst/Zbc/clmulr.yaml +61 -0
- data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +51 -0
- data/.data/spec/std/isa/inst/Zbkb/pack.yaml +34 -0
- data/.data/spec/std/isa/inst/Zbkb/packh.yaml +31 -0
- data/.data/spec/std/isa/inst/Zbkb/packw.yaml +36 -0
- data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +53 -0
- data/.data/spec/std/isa/inst/Zbkb/zip.yaml +53 -0
- data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +64 -0
- data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +64 -0
- data/.data/spec/std/isa/inst/Zbs/bclr.yaml +59 -0
- data/.data/spec/std/isa/inst/Zbs/bclri.yaml +69 -0
- data/.data/spec/std/isa/inst/Zbs/bext.yaml +59 -0
- data/.data/spec/std/isa/inst/Zbs/bexti.yaml +69 -0
- data/.data/spec/std/isa/inst/Zbs/binv.yaml +59 -0
- data/.data/spec/std/isa/inst/Zbs/binvi.yaml +69 -0
- data/.data/spec/std/isa/inst/Zbs/bset.yaml +59 -0
- data/.data/spec/std/isa/inst/Zbs/bseti.yaml +69 -0
- data/.data/spec/std/isa/inst/Zcb/c.lbu.yaml +72 -0
- data/.data/spec/std/isa/inst/Zcb/c.lh.yaml +73 -0
- data/.data/spec/std/isa/inst/Zcb/c.lhu.yaml +73 -0
- data/.data/spec/std/isa/inst/Zcb/c.mul.yaml +53 -0
- data/.data/spec/std/isa/inst/Zcb/c.not.yaml +45 -0
- data/.data/spec/std/isa/inst/Zcb/c.sb.yaml +39 -0
- data/.data/spec/std/isa/inst/Zcb/c.sext.b.yaml +60 -0
- data/.data/spec/std/isa/inst/Zcb/c.sext.h.yaml +60 -0
- data/.data/spec/std/isa/inst/Zcb/c.sh.yaml +40 -0
- data/.data/spec/std/isa/inst/Zcb/c.zext.b.yaml +60 -0
- data/.data/spec/std/isa/inst/Zcb/c.zext.h.yaml +60 -0
- data/.data/spec/std/isa/inst/Zcb/c.zext.w.yaml +61 -0
- data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +41 -0
- data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +42 -0
- data/.data/spec/std/isa/inst/Zcd/c.fsd.yaml +41 -0
- data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +42 -0
- data/.data/spec/std/isa/inst/Zcf/c.flw.yaml +41 -0
- data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +42 -0
- data/.data/spec/std/isa/inst/Zcf/c.fsw.yaml +41 -0
- data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +42 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.1.yaml +31 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.11.yaml +31 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.13.yaml +31 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.15.yaml +31 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.3.yaml +31 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.5.yaml +31 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.7.yaml +31 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.9.yaml +31 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.N.layout +45 -0
- data/.data/spec/std/isa/inst/Zcmp/cm.mva01s.yaml +36 -0
- data/.data/spec/std/isa/inst/Zcmp/cm.mvsa01.yaml +38 -0
- data/.data/spec/std/isa/inst/Zcmp/cm.pop.yaml +86 -0
- data/.data/spec/std/isa/inst/Zcmp/cm.popret.yaml +87 -0
- data/.data/spec/std/isa/inst/Zcmp/cm.popretz.yaml +88 -0
- data/.data/spec/std/isa/inst/Zcmp/cm.push.yaml +87 -0
- data/.data/spec/std/isa/inst/Zcmt/cm.jalt.yaml +65 -0
- data/.data/spec/std/isa/inst/Zcmt/cm.jt.yaml +60 -0
- data/.data/spec/std/isa/inst/Zfa/fli.s.yaml +74 -0
- data/.data/spec/std/isa/inst/Zfa/fmaxm.s.yaml +55 -0
- data/.data/spec/std/isa/inst/Zfa/fminm.s.yaml +55 -0
- data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +63 -0
- data/.data/spec/std/isa/inst/Zfa/froundnx.s.yaml +53 -0
- data/.data/spec/std/isa/inst/Zfbfmin/fcvt.bf16.s.yaml +31 -0
- data/.data/spec/std/isa/inst/Zfbfmin/fcvt.s.bf16.yaml +31 -0
- data/.data/spec/std/isa/inst/Zfh/fadd.h.yaml +35 -0
- data/.data/spec/std/isa/inst/Zfh/fclass.h.yaml +31 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.d.h.yaml +37 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.d.yaml +37 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.l.yaml +35 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.lu.yaml +35 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +94 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.w.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.wu.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.l.h.yaml +35 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.lu.h.yaml +35 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +91 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.w.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fcvt.wu.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fdiv.h.yaml +35 -0
- data/.data/spec/std/isa/inst/Zfh/feq.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fle.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fleq.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/flh.yaml +78 -0
- data/.data/spec/std/isa/inst/Zfh/fli.h.yaml +31 -0
- data/.data/spec/std/isa/inst/Zfh/flt.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fltq.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fmadd.h.yaml +37 -0
- data/.data/spec/std/isa/inst/Zfh/fmax.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fmaxm.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fmin.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fminm.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fmsub.h.yaml +37 -0
- data/.data/spec/std/isa/inst/Zfh/fmul.h.yaml +35 -0
- data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +51 -0
- data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +51 -0
- data/.data/spec/std/isa/inst/Zfh/fnmadd.h.yaml +37 -0
- data/.data/spec/std/isa/inst/Zfh/fnmsub.h.yaml +37 -0
- data/.data/spec/std/isa/inst/Zfh/fround.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/froundnx.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fsgnj.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fsgnjn.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fsgnjx.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fsh.yaml +89 -0
- data/.data/spec/std/isa/inst/Zfh/fsqrt.h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zfh/fsub.h.yaml +35 -0
- data/.data/spec/std/isa/inst/Zicbom/cbo.clean.yaml +77 -0
- data/.data/spec/std/isa/inst/Zicbom/cbo.flush.yaml +75 -0
- data/.data/spec/std/isa/inst/Zicbom/cbo.inval.yaml +116 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +34 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +34 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +34 -0
- data/.data/spec/std/isa/inst/Zicboz/cbo.zero.yaml +107 -0
- data/.data/spec/std/isa/inst/Zicfilp/lpad.yaml +28 -0
- data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.d.yaml +35 -0
- data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml +35 -0
- data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml +25 -0
- data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml +25 -0
- data/.data/spec/std/isa/inst/Zicfiss/sspush.x1.yaml +25 -0
- data/.data/spec/std/isa/inst/Zicfiss/sspush.x5.yaml +25 -0
- data/.data/spec/std/isa/inst/Zicfiss/ssrdp.yaml +28 -0
- data/.data/spec/std/isa/inst/Zicond/czero.eqz.yaml +50 -0
- data/.data/spec/std/isa/inst/Zicond/czero.nez.yaml +50 -0
- data/.data/spec/std/isa/inst/Zicsr/csrrc.yaml +68 -0
- data/.data/spec/std/isa/inst/Zicsr/csrrci.yaml +62 -0
- data/.data/spec/std/isa/inst/Zicsr/csrrs.yaml +114 -0
- data/.data/spec/std/isa/inst/Zicsr/csrrsi.yaml +62 -0
- data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +90 -0
- data/.data/spec/std/isa/inst/Zicsr/csrrwi.yaml +88 -0
- data/.data/spec/std/isa/inst/Zifencei/fence.i.yaml +65 -0
- data/.data/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml +27 -0
- data/.data/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml +27 -0
- data/.data/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml +27 -0
- data/.data/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml +27 -0
- data/.data/spec/std/isa/inst/Zihintntl/ntl.all.yaml +25 -0
- data/.data/spec/std/isa/inst/Zihintntl/ntl.p1.yaml +25 -0
- data/.data/spec/std/isa/inst/Zihintntl/ntl.pall.yaml +25 -0
- data/.data/spec/std/isa/inst/Zihintntl/ntl.s1.yaml +25 -0
- data/.data/spec/std/isa/inst/Zihintpause/pause.yaml +76 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.0.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.1.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.10.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.11.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.12.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.13.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.14.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.15.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.16.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.17.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.18.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.19.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.2.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.20.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.21.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.22.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.23.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.24.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.25.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.26.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.27.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.28.yaml +40 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.29.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.3.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.30.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.31.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.4.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.5.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.6.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.7.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.8.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.9.yaml +36 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.N.layout +58 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.0.yaml +39 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.1.yaml +39 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.2.yaml +39 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.3.yaml +39 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.4.yaml +39 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.5.yaml +39 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.6.yaml +39 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.7.yaml +42 -0
- data/.data/spec/std/isa/inst/Zimop/mop.rr.N.layout +58 -0
- data/.data/spec/std/isa/inst/Zkn/aes64ks1i.yaml +37 -0
- data/.data/spec/std/isa/inst/Zkn/aes64ks2.yaml +36 -0
- data/.data/spec/std/isa/inst/Zknd/aes32dsi.yaml +37 -0
- data/.data/spec/std/isa/inst/Zknd/aes32dsmi.yaml +38 -0
- data/.data/spec/std/isa/inst/Zknd/aes64ds.yaml +34 -0
- data/.data/spec/std/isa/inst/Zknd/aes64dsm.yaml +34 -0
- data/.data/spec/std/isa/inst/Zknd/aes64im.yaml +33 -0
- data/.data/spec/std/isa/inst/Zkne/aes32esi.yaml +35 -0
- data/.data/spec/std/isa/inst/Zkne/aes32esmi.yaml +35 -0
- data/.data/spec/std/isa/inst/Zkne/aes64es.yaml +34 -0
- data/.data/spec/std/isa/inst/Zkne/aes64esm.yaml +34 -0
- data/.data/spec/std/isa/inst/Zknh/sha256sig0.yaml +29 -0
- data/.data/spec/std/isa/inst/Zknh/sha256sig1.yaml +29 -0
- data/.data/spec/std/isa/inst/Zknh/sha256sum0.yaml +29 -0
- data/.data/spec/std/isa/inst/Zknh/sha256sum1.yaml +29 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sig0.yaml +31 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sig0h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sig0l.yaml +33 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sig1.yaml +31 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sig1h.yaml +33 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sig1l.yaml +33 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sum0.yaml +31 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sum0r.yaml +33 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sum1.yaml +31 -0
- data/.data/spec/std/isa/inst/Zknh/sha512sum1r.yaml +33 -0
- data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +29 -0
- data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +29 -0
- data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +33 -0
- data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vandn.vv.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vandn.vx.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vbrev.v.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvbb/vbrev8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvbb/vclz.v.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvbb/vcpop.v.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvbb/vctz.v.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvbb/vrev8.v.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvbb/vrol.vv.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vrol.vx.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vror.vi.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vror.vv.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vror.vx.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vwsll.vi.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vwsll.vv.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbb/vwsll.vx.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbc/vclmul.vv.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbc/vclmul.vx.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbc/vclmulh.vv.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvbc/vclmulh.vx.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vf.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vv.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvkg/vghsh.vv.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvkg/vgmul.vv.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesdf.vs.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesdf.vv.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesdm.vs.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesdm.vv.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesef.vs.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesef.vv.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesem.vs.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesem.vv.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvkned/vaeskf1.vi.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvkned/vaeskf2.vi.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvkned/vaesz.vs.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvknha/vsha2ch.vv.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvknha/vsha2cl.vv.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvknha/vsha2ms.vv.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvks/vsm3c.vi.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvks/vsm3me.vv.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvks/vsm4k.vi.yaml +31 -0
- data/.data/spec/std/isa/inst/Zvks/vsm4r.vs.yaml +29 -0
- data/.data/spec/std/isa/inst/Zvks/vsm4r.vv.yaml +31 -0
- data/.data/spec/std/isa/inst_opcode/OP-32.yaml +12 -0
- data/.data/spec/std/isa/inst_opcode/OP.yaml +12 -0
- data/.data/spec/std/isa/inst_subtype/I/I-x-x.yaml +21 -0
- data/.data/spec/std/isa/inst_subtype/R/R-x.yaml +21 -0
- data/.data/spec/std/isa/inst_type/I.yaml +22 -0
- data/.data/spec/std/isa/inst_type/R.yaml +24 -0
- data/.data/spec/std/isa/inst_var/I-imm.yaml +12 -0
- data/.data/spec/std/isa/inst_var/xd.yaml +12 -0
- data/.data/spec/std/isa/inst_var/xs1.yaml +12 -0
- data/.data/spec/std/isa/inst_var/xs2.yaml +12 -0
- data/.data/spec/std/isa/inst_var_type/imm.yaml +9 -0
- data/.data/spec/std/isa/inst_var_type/x_dst_reg.yaml +11 -0
- data/.data/spec/std/isa/inst_var_type/x_src_reg.yaml +11 -0
- data/.data/spec/std/isa/interrupt_code/LocalCounterOverflow.yaml +14 -0
- data/.data/spec/std/isa/interrupt_code/MachineExternal.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/MachineSoftware.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/MachineTimer.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/SupervisorExternal.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/SupervisorGuestExternal.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/SupervisorSoftware.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/SupervisorTimer.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/VirtualSupervisorExternal.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/VirtualSupervisorSoftware.yaml +13 -0
- data/.data/spec/std/isa/interrupt_code/VirtualSupervisorTimer.yaml +13 -0
- data/.data/spec/std/isa/isa/builtin_functions.idl +671 -0
- data/.data/spec/std/isa/isa/fetch.idl +74 -0
- data/.data/spec/std/isa/isa/fp.idl +1238 -0
- data/.data/spec/std/isa/isa/globals.isa +3124 -0
- data/.data/spec/std/isa/isa/interrupts.idl +391 -0
- data/.data/spec/std/isa/isa/util.idl +224 -0
- data/.data/spec/std/isa/isa/vec.idl +55 -0
- data/.data/spec/std/isa/manual/isa.yaml +16 -0
- data/.data/spec/std/isa/manual_version/isa/20240411/isa_20240411.yaml +222 -0
- data/.data/spec/std/isa/param/ARCH_ID_VALUE.yaml +32 -0
- data/.data/spec/std/isa/param/ASID_WIDTH.yaml +23 -0
- data/.data/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml +22 -0
- data/.data/spec/std/isa/param/CONFIG_PTR_ADDRESS.yaml +28 -0
- data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +30 -0
- data/.data/spec/std/isa/param/DBG_HCONTEXT_WIDTH.yaml +18 -0
- data/.data/spec/std/isa/param/DBG_SCONTEXT_WIDTH.yaml +18 -0
- data/.data/spec/std/isa/param/DCSR_MPRVEN_TYPE.yaml +23 -0
- data/.data/spec/std/isa/param/DCSR_STEPIE_TYPE.yaml +23 -0
- data/.data/spec/std/isa/param/DCSR_STOPCOUNT_TYPE.yaml +23 -0
- data/.data/spec/std/isa/param/DCSR_STOPTIME_TYPE.yaml +23 -0
- data/.data/spec/std/isa/param/ELEN.yaml +20 -0
- data/.data/spec/std/isa/param/FOLLOW_VTYPE_RESET_RECOMMENDATION.yaml +18 -0
- data/.data/spec/std/isa/param/FORCE_UPGRADE_CBO_INVAL_TO_FLUSH.yaml +20 -0
- data/.data/spec/std/isa/param/GSTAGE_MODE_BARE.yaml +24 -0
- data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +19 -0
- data/.data/spec/std/isa/param/HCOUNTENABLE_EN.yaml +27 -0
- data/.data/spec/std/isa/param/HPM_COUNTER_EN.yaml +29 -0
- data/.data/spec/std/isa/param/HPM_EVENTS.yaml +23 -0
- data/.data/spec/std/isa/param/HSTATEEN_AIA_TYPE.yaml +34 -0
- data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +35 -0
- data/.data/spec/std/isa/param/HSTATEEN_CSRIND_TYPE.yaml +34 -0
- data/.data/spec/std/isa/param/HSTATEEN_ENVCFG_TYPE.yaml +36 -0
- data/.data/spec/std/isa/param/HSTATEEN_IMSIC_TYPE.yaml +34 -0
- data/.data/spec/std/isa/param/HSTATEEN_JVT_TYPE.yaml +33 -0
- data/.data/spec/std/isa/param/HW_MSTATUS_FS_DIRTY_UPDATE.yaml +30 -0
- data/.data/spec/std/isa/param/HW_MSTATUS_VS_DIRTY_UPDATE.yaml +30 -0
- data/.data/spec/std/isa/param/IGNORE_INVALID_VSATP_MODE_WRITES_WHEN_V_EQ_ZERO.yaml +18 -0
- data/.data/spec/std/isa/param/IMPRECISE_VECTOR_TRAP_SETTABLE.yaml +19 -0
- data/.data/spec/std/isa/param/IMP_ID_VALUE.yaml +25 -0
- data/.data/spec/std/isa/param/JVT_BASE_MASK.yaml +28 -0
- data/.data/spec/std/isa/param/JVT_BASE_TYPE.yaml +20 -0
- data/.data/spec/std/isa/param/JVT_READ_ONLY.yaml +16 -0
- data/.data/spec/std/isa/param/LEGAL_VSTART.yaml +21 -0
- data/.data/spec/std/isa/param/LRSC_FAIL_ON_NON_EXACT_LRSC.yaml +18 -0
- data/.data/spec/std/isa/param/LRSC_FAIL_ON_VA_SYNONYM.yaml +17 -0
- data/.data/spec/std/isa/param/LRSC_MISALIGNED_BEHAVIOR.yaml +24 -0
- data/.data/spec/std/isa/param/LRSC_RESERVATION_STRATEGY.yaml +26 -0
- data/.data/spec/std/isa/param/MARCHID_IMPLEMENTED.yaml +17 -0
- data/.data/spec/std/isa/param/MCID_WIDTH.yaml +19 -0
- data/.data/spec/std/isa/param/MCONTEXT_AVAILABLE.yaml +16 -0
- data/.data/spec/std/isa/param/MCOUNTENABLE_EN.yaml +32 -0
- data/.data/spec/std/isa/param/MCTRCTL_CORSWAPINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_CUSTOM_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_DIRCALLINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_DIRJMPINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_DIRLJMPINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_EXCINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_INDCALLINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_INDJMPINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_INDLJMPINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_INTRINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_MTE_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_NTBREN_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_RASEMU_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_RETINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_STE_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_TKBRINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MCTRCTL_TRETINH_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MIMPID_IMPLEMENTED.yaml +17 -0
- data/.data/spec/std/isa/param/MISALIGNED_AMO.yaml +17 -0
- data/.data/spec/std/isa/param/MISALIGNED_LDST.yaml +18 -0
- data/.data/spec/std/isa/param/MISALIGNED_LDST_EXCEPTION_PRIORITY.yaml +39 -0
- data/.data/spec/std/isa/param/MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE.yaml +40 -0
- data/.data/spec/std/isa/param/MISALIGNED_SPLIT_STRATEGY.yaml +29 -0
- data/.data/spec/std/isa/param/MISA_CSR_IMPLEMENTED.yaml +23 -0
- data/.data/spec/std/isa/param/MOCK_1_BIT_INT.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_25_BIT_INT.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_2_BIT_INT.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_32_BIT_INT.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_64_BIT_INT.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE.yaml +22 -0
- data/.data/spec/std/isa/param/MOCK_ARRAY_INT_ENUM.yaml +23 -0
- data/.data/spec/std/isa/param/MOCK_ARRAY_MAX_ONLY.yaml +21 -0
- data/.data/spec/std/isa/param/MOCK_ARRAY_MIN_ONLY.yaml +21 -0
- data/.data/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM1.yaml +21 -0
- data/.data/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM2.yaml +21 -0
- data/.data/spec/std/isa/param/MOCK_BOOL_1.yaml +15 -0
- data/.data/spec/std/isa/param/MOCK_BOOL_2.yaml +15 -0
- data/.data/spec/std/isa/param/MOCK_ENUM_2_INTS.yaml +18 -0
- data/.data/spec/std/isa/param/MOCK_ENUM_2_STRINGS.yaml +18 -0
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_1023.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_127.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_128.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_2.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_999.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_1000_TO_2048.yaml +17 -0
- data/.data/spec/std/isa/param/MOCK_INT_RANGE_1_TO_128.yaml +17 -0
- data/.data/spec/std/isa/param/MSTATEEN_AIA_TYPE.yaml +27 -0
- data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +26 -0
- data/.data/spec/std/isa/param/MSTATEEN_CSRIND_TYPE.yaml +26 -0
- data/.data/spec/std/isa/param/MSTATEEN_ENVCFG_TYPE.yaml +26 -0
- data/.data/spec/std/isa/param/MSTATEEN_IMSIC_TYPE.yaml +27 -0
- data/.data/spec/std/isa/param/MSTATEEN_JVT_TYPE.yaml +27 -0
- data/.data/spec/std/isa/param/MSTATUS_FS_LEGAL_VALUES.yaml +41 -0
- data/.data/spec/std/isa/param/MSTATUS_TVM_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/MSTATUS_VS_LEGAL_VALUES.yaml +45 -0
- data/.data/spec/std/isa/param/MTVAL_WIDTH.yaml +88 -0
- data/.data/spec/std/isa/param/MTVEC_ACCESS.yaml +24 -0
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +96 -0
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +96 -0
- data/.data/spec/std/isa/param/MTVEC_ILLEGAL_WRITE_BEHAVIOR.yaml +25 -0
- data/.data/spec/std/isa/param/MTVEC_MODES.yaml +35 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_A.yaml +19 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_B.yaml +18 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_C.yaml +21 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_D.yaml +21 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_F.yaml +21 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_H.yaml +26 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_M.yaml +21 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_Q.yaml +21 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_S.yaml +26 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_U.yaml +21 -0
- data/.data/spec/std/isa/param/MUTABLE_MISA_V.yaml +17 -0
- data/.data/spec/std/isa/param/MXLEN.yaml +54 -0
- data/.data/spec/std/isa/param/M_MODE_ENDIANNESS.yaml +26 -0
- data/.data/spec/std/isa/param/NUM_EXTERNAL_GUEST_INTERRUPTS.yaml +24 -0
- data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +42 -0
- data/.data/spec/std/isa/param/PHYS_ADDR_WIDTH.yaml +24 -0
- data/.data/spec/std/isa/param/PMA_GRANULARITY.yaml +21 -0
- data/.data/spec/std/isa/param/PMLEN.yaml +20 -0
- data/.data/spec/std/isa/param/PMP_GRANULARITY.yaml +25 -0
- data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +17 -0
- data/.data/spec/std/isa/param/RCID_WIDTH.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_VIRTUAL_INSTRUCTION.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INSTRUCTION_GUEST_PAGE_FAULT.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_LOAD_GUEST_PAGE_FAULT.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_STORE_AMO_GUEST_PAGE_FAULT.yaml +18 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_BREAKPOINT.yaml +23 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_BREAKPOINT.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_BREAKPOINT.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED.yaml +21 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED.yaml +20 -0
- data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT.yaml +19 -0
- data/.data/spec/std/isa/param/RESERVED_VSET_X0X0_VILL_SET.yaml +21 -0
- data/.data/spec/std/isa/param/RESERVED_VSET_X0X0_VLMAX_CHANGE.yaml +20 -0
- data/.data/spec/std/isa/param/RVV_VL_WHEN_AVL_LT_DOUBLE_VLMAX.yaml +17 -0
- data/.data/spec/std/isa/param/SATP_MODE_BARE.yaml +17 -0
- data/.data/spec/std/isa/param/SCOUNTENABLE_EN.yaml +46 -0
- data/.data/spec/std/isa/param/SEW_MIN.yaml +27 -0
- data/.data/spec/std/isa/param/SSTATEEN_JVT_TYPE.yaml +37 -0
- data/.data/spec/std/isa/param/STVAL_WIDTH.yaml +19 -0
- data/.data/spec/std/isa/param/STVEC_MODE_DIRECT.yaml +21 -0
- data/.data/spec/std/isa/param/STVEC_MODE_VECTORED.yaml +19 -0
- data/.data/spec/std/isa/param/SUPPORT_FRACTIONAL_LMUL_BEYOND_REQUIRED.yaml +21 -0
- data/.data/spec/std/isa/param/SV32X4_TRANSLATION.yaml +24 -0
- data/.data/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml +27 -0
- data/.data/spec/std/isa/param/SV39X4_TRANSLATION.yaml +23 -0
- data/.data/spec/std/isa/param/SV39_VSMODE_TRANSLATION.yaml +27 -0
- data/.data/spec/std/isa/param/SV48X4_TRANSLATION.yaml +27 -0
- data/.data/spec/std/isa/param/SV48_VSMODE_TRANSLATION.yaml +27 -0
- data/.data/spec/std/isa/param/SV57X4_TRANSLATION.yaml +25 -0
- data/.data/spec/std/isa/param/SV57_VSMODE_TRANSLATION.yaml +27 -0
- data/.data/spec/std/isa/param/SXLEN.yaml +31 -0
- data/.data/spec/std/isa/param/S_MODE_ENDIANNESS.yaml +25 -0
- data/.data/spec/std/isa/param/TIME_CSR_IMPLEMENTED.yaml +28 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_BREAKPOINT.yaml +23 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml +23 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml +27 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml +27 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED.yaml +23 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ACCESS_FAULT.yaml +25 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml +25 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_PAGE_FAULT.yaml +25 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_MCALL.yaml +23 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_SCALL.yaml +23 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT.yaml +25 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml +25 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_PAGE_FAULT.yaml +25 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_UCALL.yaml +23 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_VIRTUAL_INSTRUCTION.yaml +23 -0
- data/.data/spec/std/isa/param/TINST_VALUE_ON_VSCALL.yaml +23 -0
- data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +17 -0
- data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +17 -0
- data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_S.yaml +20 -0
- data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_U.yaml +20 -0
- data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_VS.yaml +20 -0
- data/.data/spec/std/isa/param/TRAP_ON_ILLEGAL_WLRL.yaml +21 -0
- data/.data/spec/std/isa/param/TRAP_ON_RESERVED_INSTRUCTION.yaml +24 -0
- data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +31 -0
- data/.data/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_CSR.yaml +21 -0
- data/.data/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_INSTRUCTION.yaml +23 -0
- data/.data/spec/std/isa/param/UXLEN.yaml +31 -0
- data/.data/spec/std/isa/param/U_MODE_ENDIANNESS.yaml +25 -0
- data/.data/spec/std/isa/param/VECTOR_FF_NO_EXCEPTION_TRIM.yaml +19 -0
- data/.data/spec/std/isa/param/VECTOR_FF_SEG_EXCEPTION_PARTIAL_LOAD.yaml +22 -0
- data/.data/spec/std/isa/param/VECTOR_FF_UPDATE_PAST_TRIM.yaml +22 -0
- data/.data/spec/std/isa/param/VECTOR_LOAD_PAST_TRAP.yaml +19 -0
- data/.data/spec/std/isa/param/VECTOR_LOAD_SEG_FF_OVERWRITE_ELEMENTS_AFTER_FAULT.yaml +21 -0
- data/.data/spec/std/isa/param/VECTOR_LS_INDEX_MAX_EEW.yaml +28 -0
- data/.data/spec/std/isa/param/VECTOR_LS_MISALIGNED_LEGAL.yaml +19 -0
- data/.data/spec/std/isa/param/VECTOR_LS_SEG_PARTIAL_ACCESS.yaml +19 -0
- data/.data/spec/std/isa/param/VECTOR_LS_WHOLEREG_MISALIGNED_LEGAL.yaml +20 -0
- data/.data/spec/std/isa/param/VENDOR_ID_BANK.yaml +20 -0
- data/.data/spec/std/isa/param/VENDOR_ID_OFFSET.yaml +18 -0
- data/.data/spec/std/isa/param/VFREDUSUM_FINAL_NODE_ELEMENT_BEHAVIOR.yaml +20 -0
- data/.data/spec/std/isa/param/VFREDUSUM_INACTIVE_NODE_ELEMENT_BEHAVIOR.yaml +21 -0
- data/.data/spec/std/isa/param/VFREDUSUM_NAN.yaml +22 -0
- data/.data/spec/std/isa/param/VFREDUSUM_NODE_ROUNDING_BEHAVIOR.yaml +23 -0
- data/.data/spec/std/isa/param/VILL_SET_ON_RESERVED_VTYPE.yaml +20 -0
- data/.data/spec/std/isa/param/VLEN.yaml +20 -0
- data/.data/spec/std/isa/param/VMID_WIDTH.yaml +25 -0
- data/.data/spec/std/isa/param/VSSTAGE_MODE_BARE.yaml +24 -0
- data/.data/spec/std/isa/param/VSSTATUS_VS_EXISTS.yaml +19 -0
- data/.data/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml +21 -0
- data/.data/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml +21 -0
- data/.data/spec/std/isa/param/VSXLEN.yaml +33 -0
- data/.data/spec/std/isa/param/VS_MODE_ENDIANNESS.yaml +25 -0
- data/.data/spec/std/isa/param/VUXLEN.yaml +30 -0
- data/.data/spec/std/isa/param/VU_MODE_ENDIANNESS.yaml +25 -0
- data/.data/spec/std/isa/proc_cert_class/AC.yaml +13 -0
- data/.data/spec/std/isa/proc_cert_class/MC.yaml +13 -0
- data/.data/spec/std/isa/proc_cert_class/MockProcessor.yaml +13 -0
- data/.data/spec/std/isa/proc_cert_class/RVI.yaml +16 -0
- data/.data/spec/std/isa/proc_cert_model/AC100.yaml +72 -0
- data/.data/spec/std/isa/proc_cert_model/AC200.yaml +58 -0
- data/.data/spec/std/isa/proc_cert_model/MC100-32.yaml +155 -0
- data/.data/spec/std/isa/proc_cert_model/MC100-64.yaml +21 -0
- data/.data/spec/std/isa/proc_cert_model/MC200-32.yaml +60 -0
- data/.data/spec/std/isa/proc_cert_model/MC200-64.yaml +21 -0
- data/.data/spec/std/isa/proc_cert_model/MC300-32.yaml +40 -0
- data/.data/spec/std/isa/proc_cert_model/MC300-64.yaml +21 -0
- data/.data/spec/std/isa/proc_cert_model/RVI20-32.yaml +39 -0
- data/.data/spec/std/isa/proc_cert_model/RVI20-64.yaml +19 -0
- data/.data/spec/std/isa/profile/RVA20S64.yaml +76 -0
- data/.data/spec/std/isa/profile/RVA20U64.yaml +108 -0
- data/.data/spec/std/isa/profile/RVA22S64.yaml +80 -0
- data/.data/spec/std/isa/profile/RVA22U64.yaml +140 -0
- data/.data/spec/std/isa/profile/RVA23M64.yaml +24 -0
- data/.data/spec/std/isa/profile/RVA23S64.yaml +55 -0
- data/.data/spec/std/isa/profile/RVA23U64.yaml +70 -0
- data/.data/spec/std/isa/profile/RVB23M64.yaml +89 -0
- data/.data/spec/std/isa/profile/RVB23S64.yaml +299 -0
- data/.data/spec/std/isa/profile/RVB23U64.yaml +273 -0
- data/.data/spec/std/isa/profile/RVI20U32.yaml +83 -0
- data/.data/spec/std/isa/profile/RVI20U64.yaml +12 -0
- data/.data/spec/std/isa/profile_family/Mock.yaml +24 -0
- data/.data/spec/std/isa/profile_family/RVA.yaml +154 -0
- data/.data/spec/std/isa/profile_family/RVB.yaml +59 -0
- data/.data/spec/std/isa/profile_family/RVI.yaml +37 -0
- data/.data/spec/std/isa/profile_release/RVA20.yaml +44 -0
- data/.data/spec/std/isa/profile_release/RVA22.yaml +44 -0
- data/.data/spec/std/isa/profile_release/RVA23.yaml +40 -0
- data/.data/spec/std/isa/profile_release/RVB23.yaml +40 -0
- data/.data/spec/std/isa/profile_release/RVI20.yaml +31 -0
- data/.data/spec/std/isa/prose/interrupts.adoc +185 -0
- data/.data/spec/std/isa/register_file/F.yaml +165 -0
- data/.data/spec/std/isa/register_file/V.yaml +146 -0
- data/.data/spec/std/isa/register_file/X.yaml +201 -0
- data/LICENSE +26 -0
- data/bin/udb +11 -0
- data/ext/udb_download/extconf.rb +238 -0
- data/lib/tapioca/dsl/compilers/cfg_arch_compiler.rb +38 -0
- data/lib/udb/EQNTOTT_VERSION +1 -0
- data/lib/udb/ESPRESSO_VERSION +1 -0
- data/lib/udb/MUST_VERSION +1 -0
- data/lib/udb/Z3_VERSION +1 -0
- data/lib/udb/architecture.rb +345 -0
- data/lib/udb/cert_normative_rule.rb +41 -0
- data/lib/udb/cfg_arch.rb +1679 -0
- data/lib/udb/cli.rb +424 -0
- data/lib/udb/condition.rb +2143 -0
- data/lib/udb/config.rb +363 -0
- data/lib/udb/dep_paths.rb +109 -0
- data/lib/udb/dep_versions.rb +12 -0
- data/lib/udb/doc_link.rb +49 -0
- data/lib/udb/eqn.rb +204 -0
- data/lib/udb/eqn_parser.rb +804 -0
- data/lib/udb/external_documentation_renderer.rb +466 -0
- data/lib/udb/idl/condition_to_udb.rb +386 -0
- data/lib/udb/log.rb +147 -0
- data/lib/udb/logic.rb +3636 -0
- data/lib/udb/obj/certifiable_obj.rb +21 -0
- data/lib/udb/obj/certificate.rb +230 -0
- data/lib/udb/obj/csr.rb +603 -0
- data/lib/udb/obj/csr_field.rb +877 -0
- data/lib/udb/obj/database_obj.rb +556 -0
- data/lib/udb/obj/exception_code.rb +98 -0
- data/lib/udb/obj/extension.rb +1734 -0
- data/lib/udb/obj/has_fields.rb +151 -0
- data/lib/udb/obj/instruction.rb +1328 -0
- data/lib/udb/obj/manual.rb +208 -0
- data/lib/udb/obj/mmr.rb +104 -0
- data/lib/udb/obj/non_isa_specification.rb +382 -0
- data/lib/udb/obj/parameter.rb +148 -0
- data/lib/udb/obj/portfolio.rb +972 -0
- data/lib/udb/obj/prm.rb +52 -0
- data/lib/udb/obj/profile.rb +284 -0
- data/lib/udb/obj/register_file.rb +118 -0
- data/lib/udb/portfolio_design.rb +256 -0
- data/lib/udb/presence.rb +101 -0
- data/lib/udb/prm_generator.rb +763 -0
- data/lib/udb/proc_cert_design.rb +77 -0
- data/lib/udb/resolver.rb +425 -0
- data/lib/udb/schema.rb +305 -0
- data/lib/udb/version.rb +8 -0
- data/lib/udb/version_spec.rb +334 -0
- data/lib/udb/yaml/comment_parser.rb +422 -0
- data/lib/udb/yaml/preserving_emitter.rb +339 -0
- data/lib/udb/yaml/yaml_resolver.rb +1039 -0
- data/lib/udb/z3.rb +1218 -0
- data/lib/udb/z3_loader.rb +97 -0
- data/lib/udb.rb +25 -0
- metadata +3125 -0
|
@@ -0,0 +1,2143 @@
|
|
|
1
|
+
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# typed: true
|
|
5
|
+
# frozen_string_literal: true
|
|
6
|
+
|
|
7
|
+
require "sorbet-runtime"
|
|
8
|
+
|
|
9
|
+
require "idlc/symbol_table"
|
|
10
|
+
require "udb/logic"
|
|
11
|
+
|
|
12
|
+
require "udb/idl/condition_to_udb"
|
|
13
|
+
|
|
14
|
+
module Udb
|
|
15
|
+
|
|
16
|
+
class DatabaseObject; end
|
|
17
|
+
class TopLevelDatabaseObject < DatabaseObject; end
|
|
18
|
+
class Architecture; end
|
|
19
|
+
class ConfiguredArchitecture < Architecture; end
|
|
20
|
+
class Extension < TopLevelDatabaseObject; end
|
|
21
|
+
class ExtensionVersion; end
|
|
22
|
+
class ExtensionRequirement; end
|
|
23
|
+
class AbstractCondition; end
|
|
24
|
+
|
|
25
|
+
# an ExtensionRequirement that only applies when cond is true
|
|
26
|
+
class ConditionalExtensionRequirement < T::Struct
|
|
27
|
+
prop :ext_req, ExtensionRequirement
|
|
28
|
+
prop :cond, AbstractCondition
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# an ExtensionVersion that only applies when cond is true
|
|
32
|
+
class ConditionalExtensionVersion < T::Struct
|
|
33
|
+
prop :ext_ver, ExtensionVersion
|
|
34
|
+
prop :cond, AbstractCondition
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# wrapper around an IDL function containing constraints
|
|
38
|
+
class Constraint
|
|
39
|
+
extend T::Sig
|
|
40
|
+
|
|
41
|
+
sig { returns(T.nilable(String)) }
|
|
42
|
+
attr_reader :reason
|
|
43
|
+
|
|
44
|
+
sig {
|
|
45
|
+
params(
|
|
46
|
+
idl: String,
|
|
47
|
+
input_file: T.nilable(Pathname),
|
|
48
|
+
input_line: T.nilable(Integer),
|
|
49
|
+
cfg_arch: ConfiguredArchitecture,
|
|
50
|
+
reason: T.nilable(String)
|
|
51
|
+
).void
|
|
52
|
+
}
|
|
53
|
+
def initialize(idl, input_file:, input_line:, cfg_arch:, reason: nil)
|
|
54
|
+
@cfg_arch = cfg_arch
|
|
55
|
+
symtab = cfg_arch.symtab.global_clone
|
|
56
|
+
begin
|
|
57
|
+
@ast = @cfg_arch.idl_compiler.compile_constraint(
|
|
58
|
+
idl, symtab,
|
|
59
|
+
input_file: input_file || "[CONSTRAINT]",
|
|
60
|
+
input_line: input_line || 0
|
|
61
|
+
)
|
|
62
|
+
rescue SyntaxError
|
|
63
|
+
Udb.logger.error "Could not compile IDL constraint: \n#{idl}"
|
|
64
|
+
raise
|
|
65
|
+
end
|
|
66
|
+
symtab.release
|
|
67
|
+
@reason = reason
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
sig { params(symtab: Idl::SymbolTable).returns(T::Boolean) }
|
|
71
|
+
def eval(symtab)
|
|
72
|
+
@ast.satisfied?(symtab)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# convert into a pure UDB condition
|
|
76
|
+
sig { returns(T.any(T::Hash[String, T.untyped], T::Boolean)) }
|
|
77
|
+
def to_h
|
|
78
|
+
symtab = @cfg_arch.symtab.global_clone
|
|
79
|
+
h = @ast.to_udb_h(symtab)
|
|
80
|
+
symtab.release
|
|
81
|
+
|
|
82
|
+
h
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# convert into a pure UDB condition
|
|
86
|
+
sig { returns(String) }
|
|
87
|
+
def to_yaml
|
|
88
|
+
YAML.dump(to_h)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# @api private
|
|
92
|
+
sig {
|
|
93
|
+
returns(LogicNode)
|
|
94
|
+
}
|
|
95
|
+
def to_logic_tree_internal
|
|
96
|
+
Condition.new(to_h, @cfg_arch).to_logic_tree_internal
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# return type for any function where the result is either yes, no, or maybe (unknown)
|
|
101
|
+
# this arises from logic/condition tests because we may only have partial information
|
|
102
|
+
# to work with, i.e., when the configuration under test is a partial config
|
|
103
|
+
class SatisfiedResult < T::Enum
|
|
104
|
+
enums do
|
|
105
|
+
Yes = new
|
|
106
|
+
No = new
|
|
107
|
+
Maybe = new
|
|
108
|
+
end
|
|
109
|
+
end.freeze
|
|
110
|
+
SatisfiedResult::Yes.freeze
|
|
111
|
+
SatisfiedResult::No.freeze
|
|
112
|
+
SatisfiedResult::Maybe.freeze
|
|
113
|
+
|
|
114
|
+
# Base class to represent any condition in the UDB data, and to connect/test them
|
|
115
|
+
#
|
|
116
|
+
# Conditions constructed from UDB data need context to be evaluated; for example,
|
|
117
|
+
# a condition that requires extension A to be implemented implies that Zaamo and Zalrsc
|
|
118
|
+
# must also be implemented.
|
|
119
|
+
#
|
|
120
|
+
# We add this implied information in a step called _expand_. Many methods of AbstractCondition
|
|
121
|
+
# take an optional `expand:` argument that, when true, expands the condition before operating on it.
|
|
122
|
+
#
|
|
123
|
+
#
|
|
124
|
+
class AbstractCondition
|
|
125
|
+
extend T::Sig
|
|
126
|
+
extend T::Helpers
|
|
127
|
+
abstract!
|
|
128
|
+
|
|
129
|
+
# returns true if this condition is always true or always false
|
|
130
|
+
# (does not depend on extensions or parameters)
|
|
131
|
+
sig { abstract.returns(T::Boolean) }
|
|
132
|
+
def empty?; end
|
|
133
|
+
|
|
134
|
+
# convert to the underlying LogicNode-based tree
|
|
135
|
+
sig { abstract.params(expand: T::Boolean).returns(LogicNode) }
|
|
136
|
+
def to_logic_tree(expand:); end
|
|
137
|
+
|
|
138
|
+
# @api private
|
|
139
|
+
sig { abstract.returns(LogicNode) }
|
|
140
|
+
def to_logic_tree_internal; end
|
|
141
|
+
|
|
142
|
+
# is this condition satisfiable?
|
|
143
|
+
sig { abstract.returns(T::Boolean) }
|
|
144
|
+
def satisfiable?; end
|
|
145
|
+
|
|
146
|
+
# is this condition unsatisfiable?
|
|
147
|
+
sig { abstract.returns(T::Boolean) }
|
|
148
|
+
def unsatisfiable?; end
|
|
149
|
+
|
|
150
|
+
# is this condition in any way affected by term?
|
|
151
|
+
sig { params(term: T.any(Extension, ExtensionVersion, ExtensionRequirement, Parameter, ParameterWithValue, Symbol), expand: T::Boolean).returns(T::Boolean) }
|
|
152
|
+
def mentions?(term, expand: true)
|
|
153
|
+
to_logic_tree(expand:).terms.any? do |t|
|
|
154
|
+
case t
|
|
155
|
+
when ExtensionTerm
|
|
156
|
+
(term.is_a?(Extension) || term.is_a?(ExtensionVersion) || term.is_a?(ExtensionRequirement)) && (term.name == t.name)
|
|
157
|
+
when ParameterTerm
|
|
158
|
+
(term.is_a?(Parameter) || term.is_a?(ParameterWithValue)) && (term.name == t.name)
|
|
159
|
+
else
|
|
160
|
+
false
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
sig { params(expand: T::Boolean).returns(T::Boolean) }
|
|
166
|
+
def mentions_xlen?(expand: true)
|
|
167
|
+
to_logic_tree(expand:).terms.any? do |t|
|
|
168
|
+
t.is_a?(XlenTerm)
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# is this condition only satisfied when xlen == 32?
|
|
173
|
+
sig { returns(T::Boolean) }
|
|
174
|
+
def rv32_only?
|
|
175
|
+
(self & Condition.not(Condition::Xlen32, @cfg_arch)).unsatisfiable? & \
|
|
176
|
+
(self & Condition.not(Condition::Xlen64, @cfg_arch)).satisfiable?
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# is this condition only satisfied when xlen == 64?
|
|
180
|
+
sig { returns(T::Boolean) }
|
|
181
|
+
def rv64_only?
|
|
182
|
+
(self & Condition.not(Condition::Xlen64, @cfg_arch)).unsatisfiable? & \
|
|
183
|
+
(self & Condition.not(Condition::Xlen32, @cfg_arch)).satisfiable?
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# return list of all extension requirements in the condition
|
|
187
|
+
#
|
|
188
|
+
# if expand is true, expand the condition to include transitive requirements
|
|
189
|
+
sig { params(expand: T::Boolean).returns(T::Array[ExtensionRequirement]) }
|
|
190
|
+
def ext_req_terms(expand:)
|
|
191
|
+
if expand
|
|
192
|
+
@expanded_ext_req_terms ||=
|
|
193
|
+
to_logic_tree(expand:).terms.grep(ExtensionTerm).map { |term| term.to_ext_req(@cfg_arch) }
|
|
194
|
+
else
|
|
195
|
+
@unexpanded_ext_req_terms ||=
|
|
196
|
+
to_logic_tree(expand:).terms.grep(ExtensionTerm).map { |term| term.to_ext_req(@cfg_arch) }
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# return list of all parameters in the condition
|
|
201
|
+
#
|
|
202
|
+
# if expand is true, expand the condition to include transitive requirements
|
|
203
|
+
sig { params(expand: T::Boolean).returns(T::Array[Parameter]) }
|
|
204
|
+
def param_terms(expand:)
|
|
205
|
+
if expand
|
|
206
|
+
@expanded_param_terms ||=
|
|
207
|
+
to_logic_tree(expand:).terms.grep(ParameterTerm).map { |term| @cfg_arch.param(term.name) }
|
|
208
|
+
else
|
|
209
|
+
@unexpanded_param_terms ||=
|
|
210
|
+
to_logic_tree(expand:).terms.grep(ParameterTerm).map { |term| @cfg_arch.param(term.name) }
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# is it possible for this condition and other to be simultaneously true?
|
|
215
|
+
sig { params(other: AbstractCondition).returns(T::Boolean) }
|
|
216
|
+
def compatible?(other)
|
|
217
|
+
(self & other).satisfiable?
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# return true if the condition could be satisfied by cfg_arch (including known configuration)
|
|
221
|
+
sig { abstract.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
222
|
+
def satisfiable_by_cfg_arch?(cfg_arch); end
|
|
223
|
+
|
|
224
|
+
# return true if the condition cannot be satisfied by cfg_arch (including known configuration)
|
|
225
|
+
sig { abstract.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
226
|
+
def unsatisfiable_by_cfg_arch?(cfg_arch); end
|
|
227
|
+
|
|
228
|
+
# return true if the condition could be satisfied by the architecture defintion (ignoring configuration)
|
|
229
|
+
sig { abstract.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
230
|
+
def satisfiable_by_arch?(cfg_arch); end
|
|
231
|
+
|
|
232
|
+
# return true if the condition cannot be satisfied by the architecture defintion (ignoring configuration)
|
|
233
|
+
sig { abstract.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
234
|
+
def unsatisfiable_by_arch?(cfg_arch); end
|
|
235
|
+
|
|
236
|
+
# @return if the condition is, possibly is, or is definitely not satisfied by cfg_arch
|
|
237
|
+
sig { abstract.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) }
|
|
238
|
+
def satisfied_by_cfg_arch?(_cfg_arch); end
|
|
239
|
+
|
|
240
|
+
sig { abstract.params(ext_reqs: T::Array[ExtensionRequirement], expand: T::Boolean).returns(AbstractCondition) }
|
|
241
|
+
def partial_eval(ext_reqs: [], expand: true); end
|
|
242
|
+
|
|
243
|
+
# partially evaluate by replacing any known parameter terms with true/false, and returning
|
|
244
|
+
# a new condition
|
|
245
|
+
sig { abstract.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(AbstractCondition) }
|
|
246
|
+
def partially_evaluate_for_params(cfg_arch, expand:); end
|
|
247
|
+
|
|
248
|
+
# is condition satisfied if +ext_req+ is the only thing defined?
|
|
249
|
+
#
|
|
250
|
+
# When include_requirements is true, expand the condition before evaluating
|
|
251
|
+
sig { abstract.params(ext_req: ExtensionRequirement, include_requirements: T::Boolean).returns(T::Boolean) }
|
|
252
|
+
def satisfied_by_ext_req?(ext_req, include_requirements: false); end
|
|
253
|
+
|
|
254
|
+
# If ext_req is *not* satisfied, is condition satisfiable?
|
|
255
|
+
# When +include_requirements+ is true, also assume that the ext_req's requirements are not met
|
|
256
|
+
sig { abstract.params(_ext_req: ExtensionRequirement, include_requirements: T::Boolean).returns(T::Boolean) }
|
|
257
|
+
def satisfiability_depends_on_ext_req?(_ext_req, include_requirements: false); end
|
|
258
|
+
|
|
259
|
+
# for the given config arch, is condition satisfiable?
|
|
260
|
+
sig { params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
261
|
+
def could_be_satisfied_by_cfg_arch?(cfg_arch)
|
|
262
|
+
satisfied_by_cfg_arch?(cfg_arch) != SatisfiedResult::No
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
# is this condition logically equivalent to other?
|
|
266
|
+
# this is true logical equivalence, not just syntatic equivalence, e.g.:
|
|
267
|
+
# (a || a) is equivalent to (a)
|
|
268
|
+
sig { params(other: AbstractCondition).returns(T::Boolean) }
|
|
269
|
+
def equivalent?(other)
|
|
270
|
+
contradition = -(self.implies(other) & other.implies(self))
|
|
271
|
+
contradition.unsatisfiable?
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
sig { params(other_condition: AbstractCondition).returns(T::Boolean) }
|
|
275
|
+
def covered_by?(other_condition)
|
|
276
|
+
# cover means other_condition always implies self
|
|
277
|
+
# can test that by seeing if the contradiction is satisfiable, i.e.:
|
|
278
|
+
# if other_condition -> self , contradition would be other_condition & not self
|
|
279
|
+
contradiction = LogicNode.new(
|
|
280
|
+
LogicNodeType::And,
|
|
281
|
+
[
|
|
282
|
+
other_condition.to_logic_tree(expand: true),
|
|
283
|
+
LogicNode.new(LogicNodeType::Not, [to_logic_tree(expand: true)])
|
|
284
|
+
]
|
|
285
|
+
)
|
|
286
|
+
!contradiction.satisfiable?(@cfg_arch)
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
sig { params(other_condition: AbstractCondition).returns(T::Boolean) }
|
|
290
|
+
def always_implies?(other_condition)
|
|
291
|
+
other_condition.covered_by?(self)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
# true if the condition references any parameter
|
|
295
|
+
sig { abstract.returns(T::Boolean) }
|
|
296
|
+
def has_param?; end
|
|
297
|
+
|
|
298
|
+
# true if the condition references any extension
|
|
299
|
+
sig { abstract.returns(T::Boolean) }
|
|
300
|
+
def has_extension_requirement?; end
|
|
301
|
+
|
|
302
|
+
# minimizes the condition. see LogicNode#minimize
|
|
303
|
+
# when expand is false, minimize the condition without expanding first
|
|
304
|
+
# when expand is true, expand the condition and then minimize
|
|
305
|
+
sig { abstract.params(expand: T::Boolean).returns(AbstractCondition) }
|
|
306
|
+
def minimize(expand: true); end
|
|
307
|
+
|
|
308
|
+
# convert condition into UDB-compatible hash
|
|
309
|
+
sig { abstract.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) }
|
|
310
|
+
def to_h; end
|
|
311
|
+
|
|
312
|
+
# convert condition into UDB-compatible YAML string
|
|
313
|
+
sig { overridable.returns(String) }
|
|
314
|
+
def to_yaml
|
|
315
|
+
YAML.dump(to_h)
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# convert condition into valid IDL
|
|
319
|
+
sig { abstract.params(cfg_arch: ConfiguredArchitecture).returns(String) }
|
|
320
|
+
def to_idl(cfg_arch); end
|
|
321
|
+
|
|
322
|
+
# string representation
|
|
323
|
+
# when expand is true, return the full expanded condition
|
|
324
|
+
sig { abstract.params(expand: T::Boolean).returns(String) }
|
|
325
|
+
def to_s(expand: false); end
|
|
326
|
+
|
|
327
|
+
# condition in prose
|
|
328
|
+
sig { abstract.returns(String) }
|
|
329
|
+
def to_s_pretty; end
|
|
330
|
+
|
|
331
|
+
# string representation, annotated with actual values of terms where known
|
|
332
|
+
# useful for debugging
|
|
333
|
+
sig { abstract.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(String) }
|
|
334
|
+
def to_s_with_value(cfg_arch, expand:); end
|
|
335
|
+
|
|
336
|
+
# string representation of condition in Asciidoc
|
|
337
|
+
sig { abstract.returns(String) }
|
|
338
|
+
def to_asciidoc; end
|
|
339
|
+
|
|
340
|
+
# assuming that the condition represents an extension dependency,
|
|
341
|
+
# return the specified extensions along with the condition under
|
|
342
|
+
# which they apply
|
|
343
|
+
#
|
|
344
|
+
# specifically, this returns the complete list of positive terms (terms that are not negated
|
|
345
|
+
# in solution) of requirements,
|
|
346
|
+
# along with a conditionthat must hold for condition to be satisfied when the positive term is met
|
|
347
|
+
#
|
|
348
|
+
# @example
|
|
349
|
+
# given the equation (representing implications of the "C" extension):
|
|
350
|
+
# Zca@1.0.0 AND (!F OR Zcf@1.0.0) AND (!D OR Zcd@1.0.0)
|
|
351
|
+
#
|
|
352
|
+
# return:
|
|
353
|
+
# [
|
|
354
|
+
# { ext_req: Zca@1.0.0, cond: True },
|
|
355
|
+
# { ext_req: Zcf@1.0.0, cond: !F },
|
|
356
|
+
# { ext_req: Zcd@1.0.0, cond: !D }
|
|
357
|
+
# ]
|
|
358
|
+
#
|
|
359
|
+
# @example
|
|
360
|
+
# given the equation
|
|
361
|
+
# Zc AND ((Zc1 AND Zc2) OR (!Zcond))
|
|
362
|
+
#
|
|
363
|
+
# return
|
|
364
|
+
# [
|
|
365
|
+
# { ext_ver: Zc, cond True},
|
|
366
|
+
# { ext_ver: Zc1, cond: !Zcond},
|
|
367
|
+
# { ext_ver: Zc2, cond: !Zcond}
|
|
368
|
+
# ]
|
|
369
|
+
#
|
|
370
|
+
# This list is *not* transitive; if an implication I1 implies another extension I2,
|
|
371
|
+
# only I1 shows up in the list
|
|
372
|
+
sig { abstract.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
|
|
373
|
+
def implied_extension_requirements(expand: true); end
|
|
374
|
+
|
|
375
|
+
# inversion of implied_extension_requirements
|
|
376
|
+
sig { abstract.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
|
|
377
|
+
def implied_extension_conflicts(expand: true); end
|
|
378
|
+
|
|
379
|
+
# logical conjunction
|
|
380
|
+
sig { abstract.params(other: AbstractCondition).returns(AbstractCondition) }
|
|
381
|
+
def &(other); end
|
|
382
|
+
|
|
383
|
+
# logical disjunction
|
|
384
|
+
sig { abstract.params(other: AbstractCondition).returns(AbstractCondition) }
|
|
385
|
+
def |(other); end
|
|
386
|
+
|
|
387
|
+
# logical negation
|
|
388
|
+
#
|
|
389
|
+
# we use - instead of ! for negation to avoid ambiguous situations like:
|
|
390
|
+
#
|
|
391
|
+
# !condition.satisfiable?
|
|
392
|
+
# (is this "negate condition is satisfiable" or "condition is unsatisfiable")
|
|
393
|
+
sig { abstract.returns(AbstractCondition) }
|
|
394
|
+
def -@; end
|
|
395
|
+
|
|
396
|
+
# logical implication
|
|
397
|
+
#
|
|
398
|
+
# a.implies(b) means:
|
|
399
|
+
#
|
|
400
|
+
# if a; then b
|
|
401
|
+
sig { params(other: AbstractCondition).returns(AbstractCondition) }
|
|
402
|
+
def implies(other)
|
|
403
|
+
-self | other
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
# represents a condition in the UDB data, which could include conditions involving
|
|
409
|
+
# extensions and/or parameters
|
|
410
|
+
class Condition < AbstractCondition
|
|
411
|
+
extend T::Sig
|
|
412
|
+
extend T::Helpers
|
|
413
|
+
|
|
414
|
+
sig {
|
|
415
|
+
params(
|
|
416
|
+
cfg_arch: ConfiguredArchitecture,
|
|
417
|
+
conds: T::Array[T.all(AbstractCondition, Object)]
|
|
418
|
+
)
|
|
419
|
+
.returns(AbstractCondition)
|
|
420
|
+
}
|
|
421
|
+
def self.join(cfg_arch, conds)
|
|
422
|
+
if conds.size == 0
|
|
423
|
+
(AlwaysTrueCondition.new(cfg_arch))
|
|
424
|
+
elsif conds.size == 1
|
|
425
|
+
conds.fetch(0)
|
|
426
|
+
else
|
|
427
|
+
Condition.new({ "allOf" => conds.map(&:to_h) }, cfg_arch)
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
class MemoizedState < T::Struct
|
|
432
|
+
prop :satisfied_by_cfg_arch, T::Hash[ConfiguredArchitecture, SatisfiedResult]
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
sig {
|
|
436
|
+
params(
|
|
437
|
+
yaml: T.any(T::Hash[String, T.untyped], T::Boolean),
|
|
438
|
+
cfg_arch: ConfiguredArchitecture,
|
|
439
|
+
input_file: T.nilable(Pathname),
|
|
440
|
+
input_line: T.nilable(Integer)
|
|
441
|
+
)
|
|
442
|
+
.void
|
|
443
|
+
}
|
|
444
|
+
def initialize(yaml, cfg_arch, input_file: nil, input_line: nil)
|
|
445
|
+
@yaml = yaml
|
|
446
|
+
@cfg_arch = cfg_arch
|
|
447
|
+
@input_file = input_file
|
|
448
|
+
@input_line = input_line
|
|
449
|
+
@memo = MemoizedState.new(satisfied_by_cfg_arch: {})
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
sig { override.returns(T::Boolean) }
|
|
453
|
+
def empty? = @yaml == true || @yaml == false || @yaml.empty?
|
|
454
|
+
|
|
455
|
+
sig { params(term: ExtensionTerm, expansion_clauses: T::Array[LogicNode], touched_terms: T::Set[TermType]).void }
|
|
456
|
+
def expand_extension_term_requirements(term, expansion_clauses, touched_terms)
|
|
457
|
+
ext_req = term.to_ext_req(@cfg_arch)
|
|
458
|
+
|
|
459
|
+
unless touched_terms.include?(term)
|
|
460
|
+
touched_terms.add(term)
|
|
461
|
+
|
|
462
|
+
unless ext_req.requirements_condition.empty?
|
|
463
|
+
clause = ext_req.to_condition.implies(ext_req.requirements_condition).to_logic_tree(expand: false)
|
|
464
|
+
expansion_clauses << clause
|
|
465
|
+
expand_term_requirements(clause, expansion_clauses, touched_terms)
|
|
466
|
+
end
|
|
467
|
+
end
|
|
468
|
+
end
|
|
469
|
+
private :expand_extension_term_requirements
|
|
470
|
+
|
|
471
|
+
sig { params(tree: LogicNode, expansion_clauses: T::Array[LogicNode]).void }
|
|
472
|
+
def expand_extension_version_ranges(tree, expansion_clauses)
|
|
473
|
+
# wherever we have an extension range (ExtensionRequirement), add a clause to say exactly one
|
|
474
|
+
# satisfing version can be met
|
|
475
|
+
mentioned_ext_terms = (tree.terms.grep(ExtensionTerm) + expansion_clauses.map { |c| c.terms.grep(ExtensionTerm) }.flatten).uniq
|
|
476
|
+
|
|
477
|
+
covered_ext_reqs = T.let(Set.new, T::Set[ExtensionRequirement])
|
|
478
|
+
mentioned_ext_terms.each do |ext_term|
|
|
479
|
+
unless ext_term.comparison == ExtensionTerm::ComparisonOp::Equal
|
|
480
|
+
ext_req = ext_term.to_ext_req(@cfg_arch)
|
|
481
|
+
unless covered_ext_reqs.include?(ext_req)
|
|
482
|
+
ext_vers = ext_req.satisfying_versions
|
|
483
|
+
if ext_vers.size == 1
|
|
484
|
+
# add ext_req -> ext_ver
|
|
485
|
+
expansion_clauses <<
|
|
486
|
+
LogicNode.new(
|
|
487
|
+
LogicNodeType::If,
|
|
488
|
+
[
|
|
489
|
+
LogicNode.new(LogicNodeType::Term, [ext_req.to_term]),
|
|
490
|
+
LogicNode.new(LogicNodeType::Term, [ext_vers.fetch(0).to_term])
|
|
491
|
+
]
|
|
492
|
+
)
|
|
493
|
+
# add ext_ver -> ext_req
|
|
494
|
+
expansion_clauses <<
|
|
495
|
+
LogicNode.new(
|
|
496
|
+
LogicNodeType::If,
|
|
497
|
+
[
|
|
498
|
+
LogicNode.new(LogicNodeType::Term, [ext_vers.fetch(0).to_term]),
|
|
499
|
+
LogicNode.new(LogicNodeType::Term, [ext_req.to_term])
|
|
500
|
+
]
|
|
501
|
+
)
|
|
502
|
+
elsif ext_vers.empty?
|
|
503
|
+
# add ext_req -> false
|
|
504
|
+
expansion_clauses <<
|
|
505
|
+
LogicNode.new(
|
|
506
|
+
LogicNodeType::If,
|
|
507
|
+
[
|
|
508
|
+
LogicNode.new(LogicNodeType::Term, [ext_req.to_term]),
|
|
509
|
+
LogicNode::False
|
|
510
|
+
]
|
|
511
|
+
)
|
|
512
|
+
else
|
|
513
|
+
# add ext_req -> XOR(ext_ver)
|
|
514
|
+
expansion_clauses <<
|
|
515
|
+
LogicNode.new(
|
|
516
|
+
LogicNodeType::If,
|
|
517
|
+
[
|
|
518
|
+
LogicNode.new(LogicNodeType::Term, [ext_req.to_term]),
|
|
519
|
+
LogicNode.new(
|
|
520
|
+
LogicNodeType::Xor,
|
|
521
|
+
ext_vers.map { |v| LogicNode.new(LogicNodeType::Term, [v.to_term]) }
|
|
522
|
+
)
|
|
523
|
+
]
|
|
524
|
+
)
|
|
525
|
+
ext_vers.each do |ext_ver|
|
|
526
|
+
# add ext_ver -> ext_req
|
|
527
|
+
expansion_clauses <<
|
|
528
|
+
LogicNode.new(
|
|
529
|
+
LogicNodeType::If,
|
|
530
|
+
[
|
|
531
|
+
LogicNode.new(LogicNodeType::Term, [ext_ver.to_term]),
|
|
532
|
+
LogicNode.new(LogicNodeType::Term, [ext_req.to_term]),
|
|
533
|
+
]
|
|
534
|
+
)
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
end
|
|
538
|
+
end
|
|
539
|
+
end
|
|
540
|
+
end
|
|
541
|
+
end
|
|
542
|
+
private :expand_extension_version_ranges
|
|
543
|
+
|
|
544
|
+
sig { params(tree: LogicNode, expansion_clauses: T::Array[LogicNode]).void }
|
|
545
|
+
def expand_to_enforce_single_ext_ver(tree, expansion_clauses)
|
|
546
|
+
# for every mentioned extension, enforce that either zero or one version is ever implemented
|
|
547
|
+
mentioned_ext_terms = (tree.terms.grep(ExtensionTerm) + expansion_clauses.map { |c| c.terms.grep(ExtensionTerm) }.flatten).uniq
|
|
548
|
+
|
|
549
|
+
grouped_ext_terms = mentioned_ext_terms.group_by(&:name)
|
|
550
|
+
|
|
551
|
+
grouped_ext_terms.each do |ext_name, ext_terms|
|
|
552
|
+
# assuming this comes after expand_extension_version_ranges, so we can ignore ranges
|
|
553
|
+
mentioned_versions = ext_terms.select { |e| e.comparison == ExtensionTerm::ComparisonOp::Equal }
|
|
554
|
+
if mentioned_versions.size > 1
|
|
555
|
+
# add NONE(ext_terms) || XOR(ext_terms)
|
|
556
|
+
expansion_clauses <<
|
|
557
|
+
LogicNode.new(
|
|
558
|
+
LogicNodeType::Or,
|
|
559
|
+
[
|
|
560
|
+
LogicNode.new(
|
|
561
|
+
LogicNodeType::None,
|
|
562
|
+
mentioned_versions.map { |t| LogicNode.new(LogicNodeType::Term, [t]) }
|
|
563
|
+
),
|
|
564
|
+
LogicNode.new(
|
|
565
|
+
LogicNodeType::Xor,
|
|
566
|
+
mentioned_versions.map { |t| LogicNode.new(LogicNodeType::Term, [t]) }
|
|
567
|
+
)
|
|
568
|
+
]
|
|
569
|
+
)
|
|
570
|
+
end
|
|
571
|
+
end
|
|
572
|
+
end
|
|
573
|
+
|
|
574
|
+
sig { params(term: ParameterTerm, expansion_clauses: T::Array[LogicNode], touched_terms: T::Set[TermType]).void }
|
|
575
|
+
def expand_parameter_term_requirements(term, expansion_clauses, touched_terms)
|
|
576
|
+
unless touched_terms.include?(term)
|
|
577
|
+
# param expansion only depends on the parameter, not the comparison
|
|
578
|
+
# return if touched_terms.any? { |t| t.is_a?(ParameterTerm) && t.name == term.name }
|
|
579
|
+
|
|
580
|
+
touched_terms.add(term)
|
|
581
|
+
|
|
582
|
+
p = @cfg_arch.param(term.name)
|
|
583
|
+
if p.nil?
|
|
584
|
+
Udb.logger.error "While expanding:"
|
|
585
|
+
Udb.logger.error
|
|
586
|
+
Udb.logger.error
|
|
587
|
+
Udb.logger.error to_logic_tree(expand: false)
|
|
588
|
+
Udb.logger.error
|
|
589
|
+
Udb.logger.error
|
|
590
|
+
Udb.logger.error "Parameter #{term.name} is not defined"
|
|
591
|
+
end
|
|
592
|
+
param = T.must(p)
|
|
593
|
+
unless param.requirements_condition.empty?
|
|
594
|
+
clause =
|
|
595
|
+
LogicNode.new(
|
|
596
|
+
LogicNodeType::If,
|
|
597
|
+
[
|
|
598
|
+
LogicNode.new(LogicNodeType::Term, [term]),
|
|
599
|
+
param.requirements_condition.to_logic_tree(expand: false)
|
|
600
|
+
]
|
|
601
|
+
)
|
|
602
|
+
|
|
603
|
+
expansion_clauses << clause
|
|
604
|
+
expand_term_requirements(clause, expansion_clauses, touched_terms)
|
|
605
|
+
end
|
|
606
|
+
end
|
|
607
|
+
end
|
|
608
|
+
private :expand_parameter_term_requirements
|
|
609
|
+
|
|
610
|
+
sig { params(tree: LogicNode, expansion_clauses: T::Array[LogicNode]).void }
|
|
611
|
+
def expand_to_enforce_param_relations(tree, expansion_clauses)
|
|
612
|
+
mentioned_param_terms =
|
|
613
|
+
(
|
|
614
|
+
tree.terms.grep(ParameterTerm) \
|
|
615
|
+
+ expansion_clauses.map { |clause| clause.terms.grep(ParameterTerm) }.flatten
|
|
616
|
+
).uniq
|
|
617
|
+
grouped_param_terms = mentioned_param_terms.group_by { |t| t.name }
|
|
618
|
+
grouped_param_terms.each do |param_name, param_terms|
|
|
619
|
+
if param_terms.size > 1
|
|
620
|
+
param_terms.each do |t1|
|
|
621
|
+
param_terms.each do |t2|
|
|
622
|
+
next if t1.equal?(t2)
|
|
623
|
+
|
|
624
|
+
relation = t1.relation_to(t2)
|
|
625
|
+
unless relation.nil?
|
|
626
|
+
expansion_clauses << relation
|
|
627
|
+
end
|
|
628
|
+
end
|
|
629
|
+
end
|
|
630
|
+
end
|
|
631
|
+
end
|
|
632
|
+
end
|
|
633
|
+
private :expand_to_enforce_param_relations
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
sig { params(tree: LogicNode, expansion_clauses: T::Array[LogicNode]).void }
|
|
637
|
+
def expand_xlen(tree, expansion_clauses)
|
|
638
|
+
if tree.terms.any? { |t| t.is_a?(XlenTerm) } || expansion_clauses.any? { |clause| clause.terms.any? { |t| t.is_a?(XlenTerm) } }
|
|
639
|
+
expansion_clauses << LogicNode.new(LogicNodeType::Xor, [LogicNode::Xlen32, LogicNode::Xlen64])
|
|
640
|
+
expansion_clauses << T.must(@cfg_arch.param("MXLEN")).requirements_condition.to_logic_tree(expand: false)
|
|
641
|
+
end
|
|
642
|
+
end
|
|
643
|
+
private :expand_xlen
|
|
644
|
+
|
|
645
|
+
sig { params(tree: LogicNode, expansion_clauses: T::Array[LogicNode], touched_terms: T::Set[TermType]).returns(T::Array[LogicNode]) }
|
|
646
|
+
def expand_term_requirements(tree, expansion_clauses = [], touched_terms = T.let(Set.new, T::Set[TermType]))
|
|
647
|
+
terms = tree.terms
|
|
648
|
+
|
|
649
|
+
terms.each do |term|
|
|
650
|
+
case term
|
|
651
|
+
when ExtensionTerm
|
|
652
|
+
expand_extension_term_requirements(term, expansion_clauses, touched_terms)
|
|
653
|
+
when ParameterTerm
|
|
654
|
+
expand_parameter_term_requirements(term, expansion_clauses, touched_terms)
|
|
655
|
+
else
|
|
656
|
+
#pass
|
|
657
|
+
end
|
|
658
|
+
end
|
|
659
|
+
|
|
660
|
+
expansion_clauses
|
|
661
|
+
end
|
|
662
|
+
|
|
663
|
+
def to_expanded_logic_tree_shallow
|
|
664
|
+
@expanded_logic_tree_shallow ||=
|
|
665
|
+
begin
|
|
666
|
+
starting_tree = to_logic_tree_internal
|
|
667
|
+
|
|
668
|
+
expansion_clauses = expand_term_requirements(starting_tree)
|
|
669
|
+
|
|
670
|
+
if expansion_clauses.empty?
|
|
671
|
+
starting_tree
|
|
672
|
+
else
|
|
673
|
+
LogicNode.new(LogicNodeType::And, [starting_tree] + expansion_clauses)
|
|
674
|
+
end
|
|
675
|
+
end
|
|
676
|
+
end
|
|
677
|
+
|
|
678
|
+
sig { override.params(expand: T::Boolean).returns(LogicNode) }
|
|
679
|
+
def to_logic_tree(expand:)
|
|
680
|
+
if expand
|
|
681
|
+
@logic_tree_expanded ||=
|
|
682
|
+
begin
|
|
683
|
+
# we do several things in expansion:
|
|
684
|
+
#
|
|
685
|
+
# 1. expand any requirements of extensions/parameters
|
|
686
|
+
# 2. ensure XLEN is exclusive (can be 32 or 64, but not both)
|
|
687
|
+
# 3. ensure zero or one version of an extension can be implemented
|
|
688
|
+
starting_tree = to_logic_tree_internal
|
|
689
|
+
|
|
690
|
+
expansion_clauses = expand_term_requirements(starting_tree)
|
|
691
|
+
|
|
692
|
+
expand_extension_version_ranges(starting_tree, expansion_clauses)
|
|
693
|
+
|
|
694
|
+
# enforce_single_ext_ver must come after expand_extension_version_ranges
|
|
695
|
+
expand_to_enforce_single_ext_ver(starting_tree, expansion_clauses)
|
|
696
|
+
|
|
697
|
+
expand_to_enforce_param_relations(starting_tree, expansion_clauses)
|
|
698
|
+
|
|
699
|
+
expand_xlen(starting_tree, expansion_clauses)
|
|
700
|
+
|
|
701
|
+
expanded_tree =
|
|
702
|
+
if expansion_clauses.empty?
|
|
703
|
+
starting_tree
|
|
704
|
+
else
|
|
705
|
+
LogicNode.new(LogicNodeType::And, [starting_tree] + expansion_clauses)
|
|
706
|
+
end
|
|
707
|
+
|
|
708
|
+
expanded_tree
|
|
709
|
+
end
|
|
710
|
+
else
|
|
711
|
+
@logic_tree_unexpanded ||= to_logic_tree_helper(@yaml)
|
|
712
|
+
end
|
|
713
|
+
end
|
|
714
|
+
|
|
715
|
+
def self.solver
|
|
716
|
+
@solver ||= Z3Solver.new
|
|
717
|
+
end
|
|
718
|
+
|
|
719
|
+
sig {
|
|
720
|
+
type_parameters(:U)
|
|
721
|
+
.params(blk: T.proc.params(s: Z3Solver).returns(T.type_parameter(:U)))
|
|
722
|
+
.returns(T.type_parameter((:U)))
|
|
723
|
+
}
|
|
724
|
+
def solver(&blk)
|
|
725
|
+
s = Condition.solver
|
|
726
|
+
s.push
|
|
727
|
+
s.assert to_logic_tree(expand: false).to_z3(@cfg_arch, s)
|
|
728
|
+
expansion_clauses = expand_term_requirements(to_logic_tree(expand: false))
|
|
729
|
+
expansion_clauses.each do |clause|
|
|
730
|
+
s.assert clause.to_z3(@cfg_arch, s)
|
|
731
|
+
end
|
|
732
|
+
# puts "-----------------------"
|
|
733
|
+
# puts s.assertions
|
|
734
|
+
# puts "^^^^^^^^^^^^^^^^^^^^^^"
|
|
735
|
+
|
|
736
|
+
ret = yield s
|
|
737
|
+
|
|
738
|
+
s.pop
|
|
739
|
+
|
|
740
|
+
ret
|
|
741
|
+
end
|
|
742
|
+
|
|
743
|
+
def self.flatten_and(tree, solver, cfg_arch)
|
|
744
|
+
tree.node_children.each do |child|
|
|
745
|
+
if child.type == LogicNodeType::And
|
|
746
|
+
flatten_and(child, solver, cfg_arch)
|
|
747
|
+
else
|
|
748
|
+
solver.assert_as child.to_z3(cfg_arch, solver), child.to_s
|
|
749
|
+
end
|
|
750
|
+
end
|
|
751
|
+
end
|
|
752
|
+
private_class_method :flatten_and
|
|
753
|
+
|
|
754
|
+
sig { params(tree: LogicNode, cfg_arch: ConfiguredArchitecture, name: String).returns(Z3Solver) }
|
|
755
|
+
def self.solver_for(tree, cfg_arch, name)
|
|
756
|
+
s = Z3Solver.new
|
|
757
|
+
if tree.type == LogicNodeType::And
|
|
758
|
+
# break the top levels into separate assertions
|
|
759
|
+
# to make the z3 unsat core output more helpful
|
|
760
|
+
flatten_and(tree, s, cfg_arch)
|
|
761
|
+
|
|
762
|
+
else
|
|
763
|
+
s.assert_as tree.to_z3(cfg_arch, s), name
|
|
764
|
+
end
|
|
765
|
+
|
|
766
|
+
# add definition of xlen
|
|
767
|
+
expansion_clauses = []
|
|
768
|
+
expansion_clauses << LogicNode.new(LogicNodeType::Xor, [LogicNode::Xlen32, LogicNode::Xlen64])
|
|
769
|
+
expansion_clauses << T.must(cfg_arch.param("MXLEN")).requirements_condition.to_logic_tree(expand: false)
|
|
770
|
+
|
|
771
|
+
expansion_clauses.each do |clause|
|
|
772
|
+
if clause.type == LogicNodeType::And
|
|
773
|
+
clause.node_children.each do |child|
|
|
774
|
+
s.assert_as child.to_z3(cfg_arch, s), child.to_s
|
|
775
|
+
end
|
|
776
|
+
else
|
|
777
|
+
s.assert_as clause.to_z3(cfg_arch, s), clause.to_s
|
|
778
|
+
end
|
|
779
|
+
end
|
|
780
|
+
|
|
781
|
+
s.push
|
|
782
|
+
# pb = Udb.create_progressbar("checking sat for #{name} [:bar]", total: nil, clear: true)
|
|
783
|
+
# pid = fork {
|
|
784
|
+
# loop do
|
|
785
|
+
# sleep(1)
|
|
786
|
+
# pb.advance
|
|
787
|
+
# end
|
|
788
|
+
# }
|
|
789
|
+
# sat = s.satisfiable?
|
|
790
|
+
# Process.kill("TERM", pid)
|
|
791
|
+
# Process.wait(pid)
|
|
792
|
+
# pb.finish
|
|
793
|
+
# unless sat
|
|
794
|
+
# Udb.logger.error "#{name} is not satisfiable"
|
|
795
|
+
# Udb.logger.error "Unsatisfiable core:"
|
|
796
|
+
# core = Z3::LowLevel.solver_get_unsat_core(s.solver)
|
|
797
|
+
# puts Z3::LowLevel.unpack_ast_vector(core)
|
|
798
|
+
# exit 1
|
|
799
|
+
# end
|
|
800
|
+
|
|
801
|
+
s
|
|
802
|
+
end
|
|
803
|
+
private_class_method :solver_for
|
|
804
|
+
|
|
805
|
+
def unsat_arch_core(cfg_arch)
|
|
806
|
+
s = Condition.solver_for_arch(cfg_arch)
|
|
807
|
+
s.push
|
|
808
|
+
tree = to_logic_tree(expand: false)
|
|
809
|
+
if tree.type == LogicNodeType::And
|
|
810
|
+
tree.node_children.each do |child|
|
|
811
|
+
s.assert_as child.to_z3(cfg_arch, s), child.to_s
|
|
812
|
+
end
|
|
813
|
+
else
|
|
814
|
+
s.assert_as tree.to_z3(cfg_arch, s), tree.to_s
|
|
815
|
+
end
|
|
816
|
+
result = s.unsatisfiable?
|
|
817
|
+
if result
|
|
818
|
+
core = Z3::LowLevel.solver_get_unsat_core(s.solver)
|
|
819
|
+
s.pop
|
|
820
|
+
return Z3::LowLevel.unpack_ast_vector(core)
|
|
821
|
+
end
|
|
822
|
+
raise "Cond is not unsatisfiable"
|
|
823
|
+
end
|
|
824
|
+
|
|
825
|
+
def z3_assertions(cfg_arch)
|
|
826
|
+
s = Condition.solver_for_arch(cfg_arch)
|
|
827
|
+
s.push
|
|
828
|
+
tree = to_logic_tree(expand: false)
|
|
829
|
+
if tree.type == LogicNodeType::And
|
|
830
|
+
tree.node_children.each do |child|
|
|
831
|
+
s.assert_as child.to_z3(cfg_arch, s), child.to_s
|
|
832
|
+
end
|
|
833
|
+
else
|
|
834
|
+
s.assert_as tree.to_z3(cfg_arch, s), tree.to_s
|
|
835
|
+
end
|
|
836
|
+
assertions = s.assertions
|
|
837
|
+
s.pop
|
|
838
|
+
assertions
|
|
839
|
+
end
|
|
840
|
+
|
|
841
|
+
def sat_arch_model(cfg_arch)
|
|
842
|
+
s = Condition.solver_for_arch(cfg_arch)
|
|
843
|
+
s.push
|
|
844
|
+
tree = to_logic_tree(expand: false)
|
|
845
|
+
if tree.type == LogicNodeType::And
|
|
846
|
+
tree.node_children.each do |child|
|
|
847
|
+
s.assert_as child.to_z3(cfg_arch, s), child.to_s
|
|
848
|
+
end
|
|
849
|
+
else
|
|
850
|
+
s.assert_as tree.to_z3(cfg_arch, s), tree.to_s
|
|
851
|
+
end
|
|
852
|
+
result = s.satisfiable?
|
|
853
|
+
if result
|
|
854
|
+
m = s.model
|
|
855
|
+
s.pop
|
|
856
|
+
m
|
|
857
|
+
else
|
|
858
|
+
s.pop
|
|
859
|
+
nil
|
|
860
|
+
end
|
|
861
|
+
end
|
|
862
|
+
|
|
863
|
+
sig { params(cfg_arch: ConfiguredArchitecture).returns(Z3Solver) }
|
|
864
|
+
def self.solver_for_cfg_arch(cfg_arch)
|
|
865
|
+
return @cfg_arch_solvers[cfg_arch] if @cfg_arch_solvers&.key?(cfg_arch)
|
|
866
|
+
|
|
867
|
+
@cfg_arch_solvers ||= {}
|
|
868
|
+
|
|
869
|
+
tree = cfg_arch.to_condition.to_logic_tree(expand: false)
|
|
870
|
+
s = solver_for(tree, cfg_arch, "cfg_arch")
|
|
871
|
+
|
|
872
|
+
@cfg_arch_solvers[cfg_arch] = s
|
|
873
|
+
end
|
|
874
|
+
|
|
875
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
876
|
+
def satisfiable_by_cfg_arch?(cfg_arch)
|
|
877
|
+
s = Condition.solver_for_cfg_arch(cfg_arch)
|
|
878
|
+
s.push
|
|
879
|
+
s.assert to_logic_tree(expand: false).to_z3(@cfg_arch, s)
|
|
880
|
+
result = s.satisfiable?
|
|
881
|
+
s.pop
|
|
882
|
+
result
|
|
883
|
+
end
|
|
884
|
+
|
|
885
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
886
|
+
def unsatisfiable_by_cfg_arch?(cfg_arch)
|
|
887
|
+
s = Condition.solver_for_cfg_arch(cfg_arch)
|
|
888
|
+
s.push
|
|
889
|
+
s.assert to_logic_tree(expand: false).to_z3(@cfg_arch, s)
|
|
890
|
+
result = s.unsatisfiable?
|
|
891
|
+
s.pop
|
|
892
|
+
result
|
|
893
|
+
end
|
|
894
|
+
|
|
895
|
+
sig { params(cfg_arch: ConfiguredArchitecture).returns(Z3Solver) }
|
|
896
|
+
def self.solver_for_arch(cfg_arch)
|
|
897
|
+
return @arch_solvers.fetch(cfg_arch) if @arch_solvers&.key?(cfg_arch)
|
|
898
|
+
|
|
899
|
+
@arch_solvers ||= {}
|
|
900
|
+
|
|
901
|
+
tree = cfg_arch.arch_condition.to_logic_tree(expand: false)
|
|
902
|
+
s = solver_for(tree, cfg_arch, "arch")
|
|
903
|
+
|
|
904
|
+
@arch_solvers[cfg_arch] = s
|
|
905
|
+
end
|
|
906
|
+
|
|
907
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
908
|
+
def satisfiable_by_arch?(cfg_arch)
|
|
909
|
+
s = Condition.solver_for_arch(cfg_arch)
|
|
910
|
+
s.push
|
|
911
|
+
s.assert to_logic_tree(expand: false).to_z3(cfg_arch, s)
|
|
912
|
+
result = s.satisfiable?
|
|
913
|
+
s.pop
|
|
914
|
+
result
|
|
915
|
+
end
|
|
916
|
+
|
|
917
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
918
|
+
def unsatisfiable_by_arch?(cfg_arch)
|
|
919
|
+
s = Condition.solver_for_arch(cfg_arch)
|
|
920
|
+
s.push
|
|
921
|
+
s.assert to_logic_tree(expand: false).to_z3(cfg_arch, s)
|
|
922
|
+
result = s.unsatisfiable?
|
|
923
|
+
s.pop
|
|
924
|
+
result
|
|
925
|
+
end
|
|
926
|
+
|
|
927
|
+
# is this condition satisfiable?
|
|
928
|
+
sig { override.returns(T::Boolean) }
|
|
929
|
+
def satisfiable?
|
|
930
|
+
solver { |s| s.satisfiable? }
|
|
931
|
+
end
|
|
932
|
+
|
|
933
|
+
# is this condition unsatisfiable?
|
|
934
|
+
sig { override.returns(T::Boolean) }
|
|
935
|
+
def unsatisfiable?
|
|
936
|
+
solver { |s| s.unsatisfiable? }
|
|
937
|
+
end
|
|
938
|
+
|
|
939
|
+
sig { override.params(expand: T::Boolean).returns(AbstractCondition) }
|
|
940
|
+
def minimize(expand: true)
|
|
941
|
+
Condition.new(to_logic_tree(expand:).minimize(LogicNode::CanonicalizationType::ProductOfSums).to_h, @cfg_arch)
|
|
942
|
+
end
|
|
943
|
+
|
|
944
|
+
# @api private
|
|
945
|
+
sig {
|
|
946
|
+
override
|
|
947
|
+
.returns(LogicNode).checked(:never)
|
|
948
|
+
}
|
|
949
|
+
def to_logic_tree_internal
|
|
950
|
+
to_logic_tree_helper(@yaml)
|
|
951
|
+
end
|
|
952
|
+
|
|
953
|
+
sig {
|
|
954
|
+
overridable
|
|
955
|
+
.params(
|
|
956
|
+
yaml: T.any(T::Hash[String, T.untyped], T::Boolean),
|
|
957
|
+
).returns(LogicNode)
|
|
958
|
+
}
|
|
959
|
+
def to_logic_tree_helper(yaml)
|
|
960
|
+
if yaml.is_a?(TrueClass)
|
|
961
|
+
LogicNode::True
|
|
962
|
+
elsif yaml.is_a?(FalseClass)
|
|
963
|
+
LogicNode::False
|
|
964
|
+
elsif yaml.key?("allOf")
|
|
965
|
+
LogicNode.new(LogicNodeType::And, yaml["allOf"].map { |node| to_logic_tree_helper(node) })
|
|
966
|
+
elsif yaml.key?("anyOf")
|
|
967
|
+
LogicNode.new(LogicNodeType::Or, yaml["anyOf"].map { |node| to_logic_tree_helper(node) })
|
|
968
|
+
elsif yaml.key?("noneOf")
|
|
969
|
+
LogicNode.new(
|
|
970
|
+
LogicNodeType::Not,
|
|
971
|
+
[LogicNode.new(LogicNodeType::Or, yaml["noneOf"].map { |node| to_logic_tree_helper(node) })]
|
|
972
|
+
)
|
|
973
|
+
elsif yaml.key?("oneOf")
|
|
974
|
+
LogicNode.new(LogicNodeType::Xor, yaml["oneOf"].map { |node| to_logic_tree_helper(node) })
|
|
975
|
+
elsif yaml.key?("not")
|
|
976
|
+
LogicNode.new(LogicNodeType::Not, [to_logic_tree_helper(yaml.fetch("not"))])
|
|
977
|
+
elsif yaml.key?("if")
|
|
978
|
+
antecedent = to_logic_tree_helper(yaml.fetch("if"))
|
|
979
|
+
consequent = to_logic_tree_helper(yaml.fetch("then"))
|
|
980
|
+
LogicNode.new(LogicNodeType::If, [antecedent, consequent])
|
|
981
|
+
elsif yaml.key?("extension")
|
|
982
|
+
ExtensionCondition.new(yaml["extension"], @cfg_arch).to_logic_tree_internal
|
|
983
|
+
elsif yaml.key?("param")
|
|
984
|
+
ParamCondition.new(yaml["param"], @cfg_arch).to_logic_tree_internal
|
|
985
|
+
elsif yaml.key?("xlen")
|
|
986
|
+
case yaml.fetch("xlen")
|
|
987
|
+
when 32
|
|
988
|
+
LogicNode::Xlen32
|
|
989
|
+
when 64
|
|
990
|
+
LogicNode::Xlen64
|
|
991
|
+
else
|
|
992
|
+
raise "unexpected"
|
|
993
|
+
end
|
|
994
|
+
elsif yaml.key?("idl()")
|
|
995
|
+
IdlCondition.new(yaml, @cfg_arch, input_file: nil, input_line: nil).to_logic_tree_internal
|
|
996
|
+
else
|
|
997
|
+
raise "Unexpected: #{yaml.keys}"
|
|
998
|
+
end
|
|
999
|
+
end
|
|
1000
|
+
private :to_logic_tree_helper
|
|
1001
|
+
|
|
1002
|
+
sig { override.returns(T::Boolean) }
|
|
1003
|
+
def has_param?
|
|
1004
|
+
to_logic_tree(expand: true).terms.any? { |t| t.is_a?(ParameterTerm) }
|
|
1005
|
+
end
|
|
1006
|
+
|
|
1007
|
+
sig { override.returns(T::Boolean) }
|
|
1008
|
+
def has_extension_requirement?
|
|
1009
|
+
to_logic_tree(expand: true).terms.any? { |t| t.is_a?(ExtensionVersion) }
|
|
1010
|
+
end
|
|
1011
|
+
|
|
1012
|
+
EvalCallbackType = T.type_alias { T.proc.params(term: TermType).returns(SatisfiedResult) }
|
|
1013
|
+
# @api private
|
|
1014
|
+
sig { params(blk: EvalCallbackType).returns(EvalCallbackType) }
|
|
1015
|
+
def make_cb_proc(&blk)
|
|
1016
|
+
blk
|
|
1017
|
+
end
|
|
1018
|
+
|
|
1019
|
+
# return a new condition where any parameter term with a known outcome is replaced with a true/false
|
|
1020
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(Condition) }
|
|
1021
|
+
def partially_evaluate_for_params(cfg_arch, expand:)
|
|
1022
|
+
cb = make_cb_proc do |term|
|
|
1023
|
+
if term.is_a?(ExtensionTerm)
|
|
1024
|
+
SatisfiedResult::Maybe
|
|
1025
|
+
elsif term.is_a?(ParameterTerm)
|
|
1026
|
+
term.partial_eval(cfg_arch.config.param_values)
|
|
1027
|
+
elsif term.is_a?(FreeTerm)
|
|
1028
|
+
raise "unreachable"
|
|
1029
|
+
elsif term.is_a?(XlenTerm)
|
|
1030
|
+
# can't use cfg_arch.possible_xlens because of an initialization circular dependency in figuring out
|
|
1031
|
+
# is S/U is implemented
|
|
1032
|
+
if term.xlen == 32
|
|
1033
|
+
if cfg_arch.mxlen.nil?
|
|
1034
|
+
SatisfiedResult::Maybe
|
|
1035
|
+
elsif cfg_arch.mxlen == 32
|
|
1036
|
+
SatisfiedResult::Yes
|
|
1037
|
+
else
|
|
1038
|
+
# mxlen == 64. can some other mode be 32?
|
|
1039
|
+
if !cfg_arch.config.param_values.key?("SXLEN")
|
|
1040
|
+
SatisfiedResult::Maybe
|
|
1041
|
+
elsif T.cast(cfg_arch.config.param_values.fetch("SXLEN"), T::Array[Integer]).include?(32)
|
|
1042
|
+
SatisfiedResult::Yes
|
|
1043
|
+
elsif !cfg_arch.config.param_values.key?("UXLEN")
|
|
1044
|
+
SatisfiedResult::Maybe
|
|
1045
|
+
elsif T.cast(cfg_arch.config.param_values.fetch("UXLEN"), T::Array[Integer]).include?(32)
|
|
1046
|
+
SatisfiedResult::Yes
|
|
1047
|
+
elsif !cfg_arch.config.param_values.key?("VSXLEN")
|
|
1048
|
+
SatisfiedResult::Maybe
|
|
1049
|
+
elsif T.cast(cfg_arch.config.param_values.fetch("VSXLEN"), T::Array[Integer]).include?(32)
|
|
1050
|
+
SatisfiedResult::Yes
|
|
1051
|
+
elsif !cfg_arch.config.param_values.key?("VUXLEN")
|
|
1052
|
+
SatisfiedResult::Maybe
|
|
1053
|
+
elsif T.cast(cfg_arch.config.param_values.fetch("VUXLEN"), T::Array[Integer]).include?(32)
|
|
1054
|
+
SatisfiedResult::Yes
|
|
1055
|
+
else
|
|
1056
|
+
SatisfiedResult::No
|
|
1057
|
+
end
|
|
1058
|
+
end
|
|
1059
|
+
elsif term.xlen == 64
|
|
1060
|
+
if cfg_arch.mxlen.nil?
|
|
1061
|
+
SatisfiedResult::Maybe
|
|
1062
|
+
elsif cfg_arch.mxlen == 32
|
|
1063
|
+
SatisfiedResult::No
|
|
1064
|
+
else
|
|
1065
|
+
# mxlen == 64. can some other mode be 32?
|
|
1066
|
+
if !cfg_arch.config.param_values.key?("SXLEN")
|
|
1067
|
+
SatisfiedResult::Maybe
|
|
1068
|
+
elsif T.cast(cfg_arch.config.param_values.fetch("SXLEN"), T::Array[Integer]) == [32]
|
|
1069
|
+
SatisfiedResult::Maybe
|
|
1070
|
+
elsif !cfg_arch.config.param_values.key?("UXLEN")
|
|
1071
|
+
SatisfiedResult::Maybe
|
|
1072
|
+
elsif T.cast(cfg_arch.config.param_values.fetch("UXLEN"), T::Array[Integer]) == [32]
|
|
1073
|
+
SatisfiedResult::Maybe
|
|
1074
|
+
elsif !cfg_arch.config.param_values.key?("VSXLEN")
|
|
1075
|
+
SatisfiedResult::Maybe
|
|
1076
|
+
elsif T.cast(cfg_arch.config.param_values.fetch("VSXLEN"), T::Array[Integer]) == [32]
|
|
1077
|
+
SatisfiedResult::Maybe
|
|
1078
|
+
elsif !cfg_arch.config.param_values.key?("VUXLEN")
|
|
1079
|
+
SatisfiedResult::Maybe
|
|
1080
|
+
elsif T.cast(cfg_arch.config.param_values.fetch("VUXLEN"), T::Array[Integer]) == [32]
|
|
1081
|
+
SatisfiedResult::Maybe
|
|
1082
|
+
else
|
|
1083
|
+
SatisfiedResult::Yes
|
|
1084
|
+
end
|
|
1085
|
+
end
|
|
1086
|
+
else
|
|
1087
|
+
raise "term.xlen is not 32 or 64"
|
|
1088
|
+
end
|
|
1089
|
+
else
|
|
1090
|
+
T.absurd(term)
|
|
1091
|
+
end
|
|
1092
|
+
end
|
|
1093
|
+
|
|
1094
|
+
Condition.new(
|
|
1095
|
+
to_logic_tree(expand:).partial_evaluate(cb).to_h,
|
|
1096
|
+
cfg_arch
|
|
1097
|
+
)
|
|
1098
|
+
end
|
|
1099
|
+
|
|
1100
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) }
|
|
1101
|
+
def satisfied_by_cfg_arch?(cfg_arch)
|
|
1102
|
+
@memo.satisfied_by_cfg_arch[cfg_arch] ||=
|
|
1103
|
+
if cfg_arch.fully_configured?
|
|
1104
|
+
implemented_ext_cb = make_cb_proc do |term|
|
|
1105
|
+
if term.is_a?(ExtensionTerm)
|
|
1106
|
+
ext_ver = cfg_arch.implemented_extension_version(term.name)
|
|
1107
|
+
next SatisfiedResult::No if ext_ver.nil?
|
|
1108
|
+
term.to_ext_req(cfg_arch).satisfied_by?(ext_ver) \
|
|
1109
|
+
? SatisfiedResult::Yes
|
|
1110
|
+
: SatisfiedResult::No
|
|
1111
|
+
elsif term.is_a?(ParameterTerm)
|
|
1112
|
+
if cfg_arch.param_values.key?(term.name)
|
|
1113
|
+
result = term.eval(cfg_arch)
|
|
1114
|
+
if result == SatisfiedResult::Maybe
|
|
1115
|
+
# this might just mean we don't know the value.
|
|
1116
|
+
# however, given the parameter schema and constraints, we could know that term is
|
|
1117
|
+
# always false
|
|
1118
|
+
if (Condition.new({ "param" => term.to_h }, cfg_arch) & cfg_arch.to_condition).unsatisfiable?
|
|
1119
|
+
result = SatisfiedResult::No
|
|
1120
|
+
|
|
1121
|
+
# or always true
|
|
1122
|
+
elsif (-Condition.new({ "param" => term.to_h }, cfg_arch) & cfg_arch.to_condition).unsatisfiable?
|
|
1123
|
+
result = SatisfiedResult::Yes
|
|
1124
|
+
end
|
|
1125
|
+
end
|
|
1126
|
+
result
|
|
1127
|
+
else
|
|
1128
|
+
SatisfiedResult::No
|
|
1129
|
+
end
|
|
1130
|
+
elsif term.is_a?(FreeTerm)
|
|
1131
|
+
raise "unreachable"
|
|
1132
|
+
elsif term.is_a?(XlenTerm)
|
|
1133
|
+
if cfg_arch.possible_xlens.include?(term.xlen)
|
|
1134
|
+
if cfg_arch.possible_xlens.size == 1
|
|
1135
|
+
SatisfiedResult::Yes
|
|
1136
|
+
else
|
|
1137
|
+
SatisfiedResult::Maybe
|
|
1138
|
+
end
|
|
1139
|
+
else
|
|
1140
|
+
SatisfiedResult::No
|
|
1141
|
+
end
|
|
1142
|
+
else
|
|
1143
|
+
T.absurd(term)
|
|
1144
|
+
end
|
|
1145
|
+
end
|
|
1146
|
+
if to_logic_tree(expand: false).eval_cb(implemented_ext_cb) == SatisfiedResult::Yes
|
|
1147
|
+
SatisfiedResult::Yes
|
|
1148
|
+
else
|
|
1149
|
+
SatisfiedResult::No
|
|
1150
|
+
end
|
|
1151
|
+
elsif cfg_arch.partially_configured?
|
|
1152
|
+
cb = make_cb_proc do |term|
|
|
1153
|
+
if term.is_a?(ExtensionTerm)
|
|
1154
|
+
if cfg_arch.mandatory_extension_reqs.any? { |cfg_ext_req| cfg_ext_req.satisfied_by?(term.to_ext_req(cfg_arch)) }
|
|
1155
|
+
SatisfiedResult::Yes
|
|
1156
|
+
elsif cfg_arch.possible_extension_versions.any? { |cfg_ext_ver| term.to_ext_req(cfg_arch).satisfied_by?(cfg_ext_ver) }
|
|
1157
|
+
SatisfiedResult::Maybe
|
|
1158
|
+
else
|
|
1159
|
+
SatisfiedResult::No
|
|
1160
|
+
end
|
|
1161
|
+
elsif term.is_a?(ParameterTerm)
|
|
1162
|
+
result = term.eval(cfg_arch)
|
|
1163
|
+
if result == SatisfiedResult::Maybe
|
|
1164
|
+
# this might just mean we don't know the value.
|
|
1165
|
+
# however, given the parameter schema and constraints, we could know that term is
|
|
1166
|
+
# always false
|
|
1167
|
+
if (Condition.new({ "param" => term.to_h }, cfg_arch) & cfg_arch.to_condition).unsatisfiable?
|
|
1168
|
+
result = SatisfiedResult::No
|
|
1169
|
+
|
|
1170
|
+
# or always true
|
|
1171
|
+
elsif (-Condition.new({ "param" => term.to_h }, cfg_arch) & cfg_arch.to_condition).unsatisfiable?
|
|
1172
|
+
result = SatisfiedResult::Yes
|
|
1173
|
+
end
|
|
1174
|
+
end
|
|
1175
|
+
result
|
|
1176
|
+
elsif term.is_a?(FreeTerm)
|
|
1177
|
+
raise "unreachable"
|
|
1178
|
+
elsif term.is_a?(XlenTerm)
|
|
1179
|
+
if cfg_arch.possible_xlens.include?(term.xlen)
|
|
1180
|
+
if cfg_arch.possible_xlens.size == 1
|
|
1181
|
+
SatisfiedResult::Yes
|
|
1182
|
+
else
|
|
1183
|
+
SatisfiedResult::Maybe
|
|
1184
|
+
end
|
|
1185
|
+
else
|
|
1186
|
+
SatisfiedResult::No
|
|
1187
|
+
end
|
|
1188
|
+
else
|
|
1189
|
+
T.absurd(term)
|
|
1190
|
+
end
|
|
1191
|
+
end
|
|
1192
|
+
|
|
1193
|
+
to_logic_tree(expand: false).eval_cb(cb)
|
|
1194
|
+
else
|
|
1195
|
+
# unconfig. Can't really say anthing
|
|
1196
|
+
SatisfiedResult::Maybe
|
|
1197
|
+
end
|
|
1198
|
+
end
|
|
1199
|
+
|
|
1200
|
+
sig { override.params(ext_req: ExtensionRequirement, include_requirements: T::Boolean).returns(T::Boolean) }
|
|
1201
|
+
def satisfied_by_ext_req?(ext_req, include_requirements: false)
|
|
1202
|
+
cb = make_cb_proc do |term|
|
|
1203
|
+
if term.is_a?(ExtensionTerm)
|
|
1204
|
+
if term.to_ext_req(@cfg_arch).satisfied_by?(ext_req)
|
|
1205
|
+
SatisfiedResult::Yes
|
|
1206
|
+
else
|
|
1207
|
+
SatisfiedResult::No
|
|
1208
|
+
end
|
|
1209
|
+
else
|
|
1210
|
+
SatisfiedResult::No
|
|
1211
|
+
end
|
|
1212
|
+
end
|
|
1213
|
+
ext_req.to_condition.to_logic_tree(expand: include_requirements).eval_cb(cb) == SatisfiedResult::Yes
|
|
1214
|
+
end
|
|
1215
|
+
|
|
1216
|
+
sig { override.params(ext_req: ExtensionRequirement, include_requirements: T::Boolean).returns(T::Boolean) }
|
|
1217
|
+
def satisfiability_depends_on_ext_req?(ext_req, include_requirements: false)
|
|
1218
|
+
if include_requirements
|
|
1219
|
+
(self & -ext_req.to_condition & -ext_req.requirements_condition).satisfiable? == false
|
|
1220
|
+
else
|
|
1221
|
+
(self & -ext_req.to_condition).satisfiable? == false
|
|
1222
|
+
end
|
|
1223
|
+
end
|
|
1224
|
+
|
|
1225
|
+
sig { override.params(ext_reqs: T::Array[ExtensionRequirement], expand: T::Boolean).returns(AbstractCondition) }
|
|
1226
|
+
def partial_eval(ext_reqs: [], expand: true)
|
|
1227
|
+
cb = LogicNode.make_replace_cb do |node|
|
|
1228
|
+
if node.type == LogicNodeType::Term
|
|
1229
|
+
term = node.children.fetch(0)
|
|
1230
|
+
if term.is_a?(ExtensionTerm)
|
|
1231
|
+
if ext_reqs.any? { |ext_req| term.to_ext_req(@cfg_arch).satisfied_by?(ext_req) }
|
|
1232
|
+
next LogicNode::True
|
|
1233
|
+
end
|
|
1234
|
+
end
|
|
1235
|
+
end
|
|
1236
|
+
node
|
|
1237
|
+
end
|
|
1238
|
+
LogicCondition.new(to_logic_tree(expand:).replace_terms(cb), @cfg_arch)
|
|
1239
|
+
end
|
|
1240
|
+
|
|
1241
|
+
sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) }
|
|
1242
|
+
def to_h
|
|
1243
|
+
to_logic_tree(expand: false).to_h
|
|
1244
|
+
end
|
|
1245
|
+
|
|
1246
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) }
|
|
1247
|
+
def to_idl(cfg_arch)
|
|
1248
|
+
idl = to_logic_tree(expand: false).to_idl(cfg_arch)
|
|
1249
|
+
"-> #{idl};"
|
|
1250
|
+
end
|
|
1251
|
+
|
|
1252
|
+
sig { override.params(expand: T::Boolean).returns(String) }
|
|
1253
|
+
def to_s(expand: false)
|
|
1254
|
+
to_logic_tree(expand:).to_s(format: LogicNode::LogicSymbolFormat::C)
|
|
1255
|
+
end
|
|
1256
|
+
|
|
1257
|
+
# return the condition in a nice, human-readable form
|
|
1258
|
+
sig { override.returns(String) }
|
|
1259
|
+
def to_s_pretty
|
|
1260
|
+
to_logic_tree(expand: false).to_s_pretty
|
|
1261
|
+
end
|
|
1262
|
+
|
|
1263
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(String) }
|
|
1264
|
+
def to_s_with_value(cfg_arch, expand: false)
|
|
1265
|
+
cb = LogicNode.make_eval_cb do |term|
|
|
1266
|
+
case term
|
|
1267
|
+
when ExtensionTerm
|
|
1268
|
+
if cfg_arch.fully_configured?
|
|
1269
|
+
ext_ver = cfg_arch.implemented_extension_version(term.name)
|
|
1270
|
+
if ext_ver.nil? || !term.to_ext_req(cfg_arch).satisfied_by?(ext_ver)
|
|
1271
|
+
SatisfiedResult::No
|
|
1272
|
+
else
|
|
1273
|
+
SatisfiedResult::Yes
|
|
1274
|
+
end
|
|
1275
|
+
elsif cfg_arch.partially_configured?
|
|
1276
|
+
if cfg_arch.mandatory_extension_reqs.any? { |cfg_ext_req| cfg_ext_req.satisfied_by?(term.to_ext_req(cfg_arch)) }
|
|
1277
|
+
SatisfiedResult::Yes
|
|
1278
|
+
elsif cfg_arch.possible_extension_versions.any? { |cfg_ext_ver| term.to_ext_req(cfg_arch).satisfied_by?(cfg_ext_ver) }
|
|
1279
|
+
SatisfiedResult::Maybe
|
|
1280
|
+
else
|
|
1281
|
+
SatisfiedResult::No
|
|
1282
|
+
end
|
|
1283
|
+
else
|
|
1284
|
+
SatisfiedResult::Maybe
|
|
1285
|
+
end
|
|
1286
|
+
when ParameterTerm
|
|
1287
|
+
if cfg_arch.fully_configured?
|
|
1288
|
+
if cfg_arch.param_values.key?(term.name)
|
|
1289
|
+
term.eval(cfg_arch)
|
|
1290
|
+
else
|
|
1291
|
+
SatisfiedResult::No
|
|
1292
|
+
end
|
|
1293
|
+
elsif cfg_arch.partially_configured?
|
|
1294
|
+
term.eval(cfg_arch)
|
|
1295
|
+
else
|
|
1296
|
+
SatisfiedResult::Maybe
|
|
1297
|
+
end
|
|
1298
|
+
when XlenTerm
|
|
1299
|
+
if cfg_arch.possible_xlens.include?(term.xlen)
|
|
1300
|
+
if cfg_arch.possible_xlens.size == 1
|
|
1301
|
+
SatisfiedResult::Yes
|
|
1302
|
+
else
|
|
1303
|
+
SatisfiedResult::Maybe
|
|
1304
|
+
end
|
|
1305
|
+
else
|
|
1306
|
+
SatisfiedResult::No
|
|
1307
|
+
end
|
|
1308
|
+
else
|
|
1309
|
+
raise "unexpected term type #{term.class.name}"
|
|
1310
|
+
end
|
|
1311
|
+
end
|
|
1312
|
+
to_logic_tree(expand:).to_s_with_value(cb, format: LogicNode::LogicSymbolFormat::C)
|
|
1313
|
+
end
|
|
1314
|
+
|
|
1315
|
+
sig { override.returns(String) }
|
|
1316
|
+
def to_asciidoc
|
|
1317
|
+
to_logic_tree(expand: false).to_asciidoc(include_versions: false)
|
|
1318
|
+
end
|
|
1319
|
+
|
|
1320
|
+
sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
|
|
1321
|
+
def implied_extension_requirements(expand: true)
|
|
1322
|
+
# strategy:
|
|
1323
|
+
# 1. convert to sum-of-products.
|
|
1324
|
+
# 2. for each product, find the positive terms. These are the implications
|
|
1325
|
+
# 3. for each product, find the negative terms. These are the "conditions" when the positive terms apply
|
|
1326
|
+
|
|
1327
|
+
@implications ||= begin
|
|
1328
|
+
reqs = T.let([], T::Array[ConditionalExtensionRequirement])
|
|
1329
|
+
pos = to_logic_tree(expand:).minimize(LogicNode::CanonicalizationType::ProductOfSums)
|
|
1330
|
+
|
|
1331
|
+
if pos.type == LogicNodeType::Term
|
|
1332
|
+
single_term = pos.children.fetch(0)
|
|
1333
|
+
if single_term.is_a?(ExtensionTerm)
|
|
1334
|
+
reqs << ConditionalExtensionRequirement.new(ext_req: single_term.to_ext_req(@cfg_arch), cond: AlwaysTrueCondition.new(@cfg_arch))
|
|
1335
|
+
else
|
|
1336
|
+
# this is a single parameter, do nothing
|
|
1337
|
+
end
|
|
1338
|
+
elsif pos.type == LogicNodeType::Not
|
|
1339
|
+
# there are no positive terms, do nothing
|
|
1340
|
+
elsif pos.type == LogicNodeType::And
|
|
1341
|
+
pos.children.each do |child|
|
|
1342
|
+
child = T.cast(child, LogicNode)
|
|
1343
|
+
if child.type == LogicNodeType::Term
|
|
1344
|
+
term = child.children.fetch(0)
|
|
1345
|
+
if term.is_a?(ExtensionTerm)
|
|
1346
|
+
reqs << \
|
|
1347
|
+
ConditionalExtensionRequirement.new(
|
|
1348
|
+
ext_req: term.to_ext_req(@cfg_arch),
|
|
1349
|
+
cond: AlwaysTrueCondition.new(@cfg_arch)
|
|
1350
|
+
)
|
|
1351
|
+
end
|
|
1352
|
+
elsif child.type == LogicNodeType::Not
|
|
1353
|
+
# not a positive term; do nothing
|
|
1354
|
+
elsif child.children.all? { |child| T.cast(child, LogicNode).type == LogicNodeType::Not }
|
|
1355
|
+
# there is no positive term, so do nothing
|
|
1356
|
+
else
|
|
1357
|
+
raise "? #{child.type}" unless child.type == LogicNodeType::Or
|
|
1358
|
+
|
|
1359
|
+
positive_terms =
|
|
1360
|
+
child.node_children.select do |and_child|
|
|
1361
|
+
and_child.type == LogicNodeType::Term && and_child.children.fetch(0).is_a?(ExtensionTerm)
|
|
1362
|
+
end
|
|
1363
|
+
cond_terms =
|
|
1364
|
+
child.node_children.select { |and_child| and_child.type == LogicNodeType::Not }
|
|
1365
|
+
.map { |neg_term| neg_term.node_children.fetch(0) }
|
|
1366
|
+
cond_terms +=
|
|
1367
|
+
child.node_children.select do |and_child|
|
|
1368
|
+
and_child.type == LogicNodeType::Term && and_child.children.fetch(0).is_a?(ParameterTerm)
|
|
1369
|
+
end.map { |c| LogicNode.new(LogicNodeType::Not, [c]) }
|
|
1370
|
+
positive_terms.each do |pterm|
|
|
1371
|
+
cond_node =
|
|
1372
|
+
if cond_terms.empty?
|
|
1373
|
+
LogicNode::True
|
|
1374
|
+
else
|
|
1375
|
+
cond_terms.size == 1 \
|
|
1376
|
+
? cond_terms.fetch(0)
|
|
1377
|
+
: LogicNode.new(LogicNodeType::And, cond_terms)
|
|
1378
|
+
end
|
|
1379
|
+
|
|
1380
|
+
reqs << \
|
|
1381
|
+
ConditionalExtensionRequirement.new(
|
|
1382
|
+
ext_req: T.cast(pterm.children.fetch(0), ExtensionTerm).to_ext_req(@cfg_arch),
|
|
1383
|
+
cond: Condition.new(cond_node.to_h, @cfg_arch)
|
|
1384
|
+
)
|
|
1385
|
+
end
|
|
1386
|
+
reqs
|
|
1387
|
+
end
|
|
1388
|
+
end
|
|
1389
|
+
end
|
|
1390
|
+
reqs
|
|
1391
|
+
end
|
|
1392
|
+
end
|
|
1393
|
+
|
|
1394
|
+
sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
|
|
1395
|
+
def implied_extension_conflicts(expand: true)
|
|
1396
|
+
# strategy:
|
|
1397
|
+
# 1. invert extension requiremnts (to get conflicts)
|
|
1398
|
+
# 1. convert to product-of-sums.
|
|
1399
|
+
# 2. for each product, find the positive terms. These are the conflicts
|
|
1400
|
+
# 3. for each product, find the negative terms. These are the "conditions" when the positive terms apply
|
|
1401
|
+
|
|
1402
|
+
@conflicts ||= begin
|
|
1403
|
+
conflicts = T.let([], T::Array[ConditionalExtensionRequirement])
|
|
1404
|
+
pos = LogicNode.new(LogicNodeType::Not, [to_logic_tree(expand:)]).minimize(LogicNode::CanonicalizationType::ProductOfSums)
|
|
1405
|
+
if pos.type == LogicNodeType::Term
|
|
1406
|
+
# there are no negative terms, do nothing
|
|
1407
|
+
elsif pos.type == LogicNodeType::Not
|
|
1408
|
+
single_term = pos.node_children.fetch(0).children.fetch(0)
|
|
1409
|
+
if single_term.is_a?(ExtensionTerm)
|
|
1410
|
+
conflicts << \
|
|
1411
|
+
ConditionalExtensionRequirement.new(
|
|
1412
|
+
ext_req: single_term.to_ext_req(@cfg_arch),
|
|
1413
|
+
cond: AlwaysTrueCondition.new(@cfg_arch)
|
|
1414
|
+
)
|
|
1415
|
+
else
|
|
1416
|
+
# parameter, do nothing
|
|
1417
|
+
end
|
|
1418
|
+
elsif pos.type == LogicNodeType::And
|
|
1419
|
+
pos.children.each do |child|
|
|
1420
|
+
child = T.cast(child, LogicNode)
|
|
1421
|
+
if child.type == LogicNodeType::Term
|
|
1422
|
+
# not a negative term; do nothing
|
|
1423
|
+
elsif child.type == LogicNodeType::Not
|
|
1424
|
+
term = child.node_children.fetch(0).children.fetch(0)
|
|
1425
|
+
if term.is_a?(ExtensionTerm)
|
|
1426
|
+
conflicts << \
|
|
1427
|
+
ConditionalExtensionRequirement.new(
|
|
1428
|
+
ext_req: term.to_ext_req(@cfg_arch),
|
|
1429
|
+
cond: (AlwaysTrueCondition.new(@cfg_arch))
|
|
1430
|
+
)
|
|
1431
|
+
else
|
|
1432
|
+
puts "Not a term: #{term} #{term.class.name}"
|
|
1433
|
+
end
|
|
1434
|
+
elsif child.children.all? { |child| T.cast(child, LogicNode).type == LogicNodeType::Term }
|
|
1435
|
+
# there is no negative term, so do nothing
|
|
1436
|
+
else
|
|
1437
|
+
raise "? #{child.type}" unless child.type == LogicNodeType::Or
|
|
1438
|
+
|
|
1439
|
+
negative_terms =
|
|
1440
|
+
child.node_children.select do |and_child|
|
|
1441
|
+
and_child.type == LogicNodeType::Not && and_child.node_children.fetch(0).children.fetch(0).is_a?(ExtensionTerm)
|
|
1442
|
+
end.map { |n| n.node_children.fetch(0) }
|
|
1443
|
+
cond_terms =
|
|
1444
|
+
child.node_children.select { |and_child| and_child.type == LogicNodeType::Term }
|
|
1445
|
+
negative_terms.each do |nterm|
|
|
1446
|
+
cond_node =
|
|
1447
|
+
if cond_terms.empty?
|
|
1448
|
+
LogicNode::True
|
|
1449
|
+
else
|
|
1450
|
+
cond_terms.size == 1 \
|
|
1451
|
+
? cond_terms.fetch(0)
|
|
1452
|
+
: LogicNode.new(LogicNodeType::Or, cond_terms)
|
|
1453
|
+
end
|
|
1454
|
+
|
|
1455
|
+
conflicts << \
|
|
1456
|
+
ConditionalExtensionRequirement.new(
|
|
1457
|
+
ext_req: T.cast(nterm.children.fetch(0), ExtensionTerm).to_ext_req(@cfg_arch),
|
|
1458
|
+
cond: Condition.new(cond_node.to_h, @cfg_arch)
|
|
1459
|
+
)
|
|
1460
|
+
end
|
|
1461
|
+
conflicts
|
|
1462
|
+
end
|
|
1463
|
+
end
|
|
1464
|
+
end
|
|
1465
|
+
conflicts
|
|
1466
|
+
end
|
|
1467
|
+
end
|
|
1468
|
+
|
|
1469
|
+
###################################################################
|
|
1470
|
+
#
|
|
1471
|
+
# The following functions can be used to programatically build conditions from
|
|
1472
|
+
# other conditions, e.g.,:
|
|
1473
|
+
#
|
|
1474
|
+
# Condition.not(
|
|
1475
|
+
# Condition.conjunction([cond1, cond1], cfg_arch),
|
|
1476
|
+
# cfg_arch
|
|
1477
|
+
# )
|
|
1478
|
+
###################################################################
|
|
1479
|
+
|
|
1480
|
+
# return a new Condition that the logical AND of conditions
|
|
1481
|
+
sig {
|
|
1482
|
+
params(
|
|
1483
|
+
conditions: T::Array[AbstractCondition],
|
|
1484
|
+
cfg_arch: ConfiguredArchitecture,
|
|
1485
|
+
)
|
|
1486
|
+
.returns(AbstractCondition)
|
|
1487
|
+
}
|
|
1488
|
+
def self.conjunction(conditions, cfg_arch)
|
|
1489
|
+
if conditions.empty?
|
|
1490
|
+
AlwaysFalseCondition.new(cfg_arch)
|
|
1491
|
+
elsif conditions.size == 1
|
|
1492
|
+
conditions.fetch(0)
|
|
1493
|
+
else
|
|
1494
|
+
Condition.new(
|
|
1495
|
+
LogicNode.new(
|
|
1496
|
+
LogicNodeType::And,
|
|
1497
|
+
conditions.map { |c| c.to_logic_tree_internal }
|
|
1498
|
+
).to_h,
|
|
1499
|
+
cfg_arch
|
|
1500
|
+
)
|
|
1501
|
+
end
|
|
1502
|
+
end
|
|
1503
|
+
|
|
1504
|
+
# return a new Condition that the logical OR of conditions
|
|
1505
|
+
sig {
|
|
1506
|
+
params(
|
|
1507
|
+
conditions: T::Array[AbstractCondition],
|
|
1508
|
+
cfg_arch: ConfiguredArchitecture,
|
|
1509
|
+
)
|
|
1510
|
+
.returns(AbstractCondition)
|
|
1511
|
+
}
|
|
1512
|
+
def self.disjunction(conditions, cfg_arch)
|
|
1513
|
+
if conditions.empty?
|
|
1514
|
+
AlwaysFalseCondition.new(cfg_arch)
|
|
1515
|
+
elsif conditions.size == 1
|
|
1516
|
+
conditions.fetch(0)
|
|
1517
|
+
else
|
|
1518
|
+
Condition.new(
|
|
1519
|
+
LogicNode.new(
|
|
1520
|
+
LogicNodeType::Or,
|
|
1521
|
+
conditions.map { |c| c.to_logic_tree_internal }
|
|
1522
|
+
).to_h,
|
|
1523
|
+
cfg_arch
|
|
1524
|
+
)
|
|
1525
|
+
end
|
|
1526
|
+
end
|
|
1527
|
+
|
|
1528
|
+
# return a new Condition that the logical XOR of conditions
|
|
1529
|
+
sig {
|
|
1530
|
+
params(
|
|
1531
|
+
conditions: T::Array[AbstractCondition],
|
|
1532
|
+
cfg_arch: ConfiguredArchitecture,
|
|
1533
|
+
)
|
|
1534
|
+
.returns(AbstractCondition)
|
|
1535
|
+
}
|
|
1536
|
+
def self.one_of(conditions, cfg_arch)
|
|
1537
|
+
if conditions.empty?
|
|
1538
|
+
AlwaysFalseCondition.new(cfg_arch)
|
|
1539
|
+
elsif conditions.size == 1
|
|
1540
|
+
conditions.fetch(0)
|
|
1541
|
+
else
|
|
1542
|
+
Condition.new(
|
|
1543
|
+
LogicNode.new(
|
|
1544
|
+
LogicNodeType::Xor,
|
|
1545
|
+
conditions.map { |c| c.to_logic_tree_internal }
|
|
1546
|
+
).to_h,
|
|
1547
|
+
cfg_arch
|
|
1548
|
+
)
|
|
1549
|
+
end
|
|
1550
|
+
end
|
|
1551
|
+
|
|
1552
|
+
sig {
|
|
1553
|
+
params(
|
|
1554
|
+
condition: AbstractCondition,
|
|
1555
|
+
cfg_arch: ConfiguredArchitecture
|
|
1556
|
+
)
|
|
1557
|
+
.returns(AbstractCondition)
|
|
1558
|
+
}
|
|
1559
|
+
def self.not(condition, cfg_arch)
|
|
1560
|
+
if condition.is_a?(AlwaysFalseCondition)
|
|
1561
|
+
AlwaysTrueCondition.new(cfg_arch)
|
|
1562
|
+
elsif condition.is_a?(AlwaysTrueCondition)
|
|
1563
|
+
AlwaysFalseCondition.new(cfg_arch)
|
|
1564
|
+
else
|
|
1565
|
+
Condition.new(
|
|
1566
|
+
LogicNode.new(
|
|
1567
|
+
LogicNodeType::Not,
|
|
1568
|
+
[condition.to_logic_tree_internal]
|
|
1569
|
+
).to_h,
|
|
1570
|
+
cfg_arch
|
|
1571
|
+
)
|
|
1572
|
+
end
|
|
1573
|
+
end
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
sig { override.params(other: AbstractCondition).returns(AbstractCondition) }
|
|
1577
|
+
def &(other)
|
|
1578
|
+
Condition.conjunction([self, other], @cfg_arch)
|
|
1579
|
+
end
|
|
1580
|
+
|
|
1581
|
+
sig { override.params(other: AbstractCondition).returns(AbstractCondition) }
|
|
1582
|
+
def |(other)
|
|
1583
|
+
Condition.disjunction([self, other], @cfg_arch)
|
|
1584
|
+
end
|
|
1585
|
+
|
|
1586
|
+
sig { override.returns(AbstractCondition) }
|
|
1587
|
+
def -@
|
|
1588
|
+
Condition.not(self, @cfg_arch)
|
|
1589
|
+
end
|
|
1590
|
+
end
|
|
1591
|
+
|
|
1592
|
+
class LogicCondition < Condition
|
|
1593
|
+
|
|
1594
|
+
sig { params(logic_node: LogicNode, cfg_arch: ConfiguredArchitecture).void }
|
|
1595
|
+
def initialize(logic_node, cfg_arch)
|
|
1596
|
+
@logic_node = logic_node
|
|
1597
|
+
@cfg_arch = cfg_arch
|
|
1598
|
+
@yaml = logic_node.to_h
|
|
1599
|
+
end
|
|
1600
|
+
|
|
1601
|
+
sig { override.returns(T::Boolean) }
|
|
1602
|
+
def empty? = @logic_node.type == LogicNodeType::True || @logic_node.type == LogicNodeType::False
|
|
1603
|
+
|
|
1604
|
+
sig { override.returns(LogicNode) }
|
|
1605
|
+
def to_logic_tree_internal
|
|
1606
|
+
@logic_node
|
|
1607
|
+
end
|
|
1608
|
+
end
|
|
1609
|
+
|
|
1610
|
+
class AlwaysTrueCondition < AbstractCondition
|
|
1611
|
+
extend T::Sig
|
|
1612
|
+
|
|
1613
|
+
sig { params(cfg_arch: ConfiguredArchitecture).void }
|
|
1614
|
+
def initialize(cfg_arch)
|
|
1615
|
+
@cfg_arch = cfg_arch
|
|
1616
|
+
end
|
|
1617
|
+
|
|
1618
|
+
sig { override.returns(T::Boolean) }
|
|
1619
|
+
def empty? = true
|
|
1620
|
+
|
|
1621
|
+
sig { override.params(expand: T::Boolean).returns(LogicNode) }
|
|
1622
|
+
def to_logic_tree(expand: false)
|
|
1623
|
+
LogicNode::True
|
|
1624
|
+
end
|
|
1625
|
+
|
|
1626
|
+
# @api private
|
|
1627
|
+
sig {
|
|
1628
|
+
override
|
|
1629
|
+
.returns(LogicNode)
|
|
1630
|
+
}
|
|
1631
|
+
def to_logic_tree_internal
|
|
1632
|
+
LogicNode::True
|
|
1633
|
+
end
|
|
1634
|
+
|
|
1635
|
+
sig { override.params(_other: T.untyped).returns(T::Boolean) }
|
|
1636
|
+
def compatible?(_other) = true
|
|
1637
|
+
|
|
1638
|
+
sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) }
|
|
1639
|
+
def to_h
|
|
1640
|
+
true
|
|
1641
|
+
end
|
|
1642
|
+
|
|
1643
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
1644
|
+
def satisfiable_by_cfg_arch?(cfg_arch) = true
|
|
1645
|
+
|
|
1646
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
1647
|
+
def unsatisfiable_by_cfg_arch?(cfg_arch) = false
|
|
1648
|
+
|
|
1649
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
1650
|
+
def satisfiable_by_arch?(cfg_arch) = true
|
|
1651
|
+
|
|
1652
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
1653
|
+
def unsatisfiable_by_arch?(cfg_arch) = false
|
|
1654
|
+
|
|
1655
|
+
sig { override.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) }
|
|
1656
|
+
def satisfied_by_cfg_arch?(_cfg_arch) = SatisfiedResult::Yes
|
|
1657
|
+
|
|
1658
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(AbstractCondition) }
|
|
1659
|
+
def partially_evaluate_for_params(cfg_arch, expand: false) = self
|
|
1660
|
+
|
|
1661
|
+
sig { override.params(ext_reqs: T::Array[ExtensionRequirement], expand: T::Boolean).returns(AbstractCondition) }
|
|
1662
|
+
def partial_eval(ext_reqs: [], expand: true) = self
|
|
1663
|
+
|
|
1664
|
+
sig { override.params(ext_req: ExtensionRequirement, include_requirements: T::Boolean).returns(T::Boolean) }
|
|
1665
|
+
def satisfied_by_ext_req?(ext_req, include_requirements: false) = false
|
|
1666
|
+
|
|
1667
|
+
sig { override.params(ext_req: ExtensionRequirement, include_requirements: T::Boolean).returns(T::Boolean) }
|
|
1668
|
+
def satisfiability_depends_on_ext_req?(ext_req, include_requirements: false) = false
|
|
1669
|
+
|
|
1670
|
+
sig { override.returns(T::Boolean) }
|
|
1671
|
+
def has_extension_requirement? = false
|
|
1672
|
+
|
|
1673
|
+
sig { override.params(expand: T::Boolean).returns(AbstractCondition) }
|
|
1674
|
+
def minimize(expand: true) = self
|
|
1675
|
+
|
|
1676
|
+
sig { override.returns(T::Boolean) }
|
|
1677
|
+
def has_param? = false
|
|
1678
|
+
|
|
1679
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) }
|
|
1680
|
+
def to_idl(cfg_arch) = "-> true;"
|
|
1681
|
+
|
|
1682
|
+
sig { override.params(expand: T::Boolean).returns(String) }
|
|
1683
|
+
def to_s(expand: false) = "true"
|
|
1684
|
+
|
|
1685
|
+
sig { override.returns(String) }
|
|
1686
|
+
def to_s_pretty
|
|
1687
|
+
"always"
|
|
1688
|
+
end
|
|
1689
|
+
|
|
1690
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(String) }
|
|
1691
|
+
def to_s_with_value(cfg_arch, expand: false) = "true"
|
|
1692
|
+
|
|
1693
|
+
sig { override.returns(String) }
|
|
1694
|
+
def to_asciidoc = "true"
|
|
1695
|
+
|
|
1696
|
+
sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
|
|
1697
|
+
def implied_extension_requirements(expand: true) = []
|
|
1698
|
+
|
|
1699
|
+
sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
|
|
1700
|
+
def implied_extension_conflicts(expand: true) = []
|
|
1701
|
+
|
|
1702
|
+
sig { override.params(other: AbstractCondition).returns(AbstractCondition) }
|
|
1703
|
+
def &(other)
|
|
1704
|
+
Condition.conjunction([self, other], @cfg_arch)
|
|
1705
|
+
end
|
|
1706
|
+
|
|
1707
|
+
sig { override.params(other: AbstractCondition).returns(AbstractCondition) }
|
|
1708
|
+
def |(other)
|
|
1709
|
+
self
|
|
1710
|
+
end
|
|
1711
|
+
|
|
1712
|
+
sig { override.returns(AbstractCondition) }
|
|
1713
|
+
def -@
|
|
1714
|
+
AlwaysFalseCondition.new(@cfg_arch)
|
|
1715
|
+
end
|
|
1716
|
+
|
|
1717
|
+
sig { override.returns(T::Boolean) }
|
|
1718
|
+
def satisfiable? = true
|
|
1719
|
+
|
|
1720
|
+
sig { override.returns(T::Boolean) }
|
|
1721
|
+
def unsatisfiable? = false
|
|
1722
|
+
end
|
|
1723
|
+
|
|
1724
|
+
class AlwaysFalseCondition < AbstractCondition
|
|
1725
|
+
extend T::Sig
|
|
1726
|
+
|
|
1727
|
+
sig { params(cfg_arch: ConfiguredArchitecture).void }
|
|
1728
|
+
def initialize(cfg_arch)
|
|
1729
|
+
@cfg_arch = cfg_arch
|
|
1730
|
+
end
|
|
1731
|
+
|
|
1732
|
+
sig { override.returns(T::Boolean) }
|
|
1733
|
+
def empty? = true
|
|
1734
|
+
|
|
1735
|
+
sig { override.params(expand: T::Boolean).returns(LogicNode) }
|
|
1736
|
+
def to_logic_tree(expand:)
|
|
1737
|
+
LogicNode::False
|
|
1738
|
+
end
|
|
1739
|
+
|
|
1740
|
+
sig {
|
|
1741
|
+
override
|
|
1742
|
+
.returns(LogicNode)
|
|
1743
|
+
}
|
|
1744
|
+
def to_logic_tree_internal
|
|
1745
|
+
LogicNode::False
|
|
1746
|
+
end
|
|
1747
|
+
|
|
1748
|
+
sig { override.params(_other: T.untyped).returns(T::Boolean) }
|
|
1749
|
+
def compatible?(_other) = false
|
|
1750
|
+
|
|
1751
|
+
sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) }
|
|
1752
|
+
def to_h
|
|
1753
|
+
false
|
|
1754
|
+
end
|
|
1755
|
+
|
|
1756
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
1757
|
+
def satisfiable_by_cfg_arch?(cfg_arch) = false
|
|
1758
|
+
|
|
1759
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
1760
|
+
def unsatisfiable_by_cfg_arch?(cfg_arch) = true
|
|
1761
|
+
|
|
1762
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
1763
|
+
def satisfiable_by_arch?(cfg_arch) = false
|
|
1764
|
+
|
|
1765
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) }
|
|
1766
|
+
def unsatisfiable_by_arch?(cfg_arch) = true
|
|
1767
|
+
|
|
1768
|
+
sig { override.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) }
|
|
1769
|
+
def satisfied_by_cfg_arch?(_cfg_arch) = SatisfiedResult::No
|
|
1770
|
+
|
|
1771
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(AbstractCondition) }
|
|
1772
|
+
def partially_evaluate_for_params(cfg_arch, expand:) = self
|
|
1773
|
+
|
|
1774
|
+
sig { override.params(ext_reqs: T::Array[ExtensionRequirement], expand: T::Boolean).returns(AbstractCondition) }
|
|
1775
|
+
def partial_eval(ext_reqs: [], expand: true) = self
|
|
1776
|
+
|
|
1777
|
+
sig { override.params(ext_req: ExtensionRequirement, include_requirements: T::Boolean).returns(T::Boolean) }
|
|
1778
|
+
def satisfied_by_ext_req?(ext_req, include_requirements: false) = false
|
|
1779
|
+
|
|
1780
|
+
sig { override.params(ext_req: ExtensionRequirement, include_requirements: T::Boolean).returns(T::Boolean) }
|
|
1781
|
+
def satisfiability_depends_on_ext_req?(ext_req, include_requirements: false) = false
|
|
1782
|
+
|
|
1783
|
+
sig { override.returns(T::Boolean) }
|
|
1784
|
+
def has_extension_requirement? = false
|
|
1785
|
+
|
|
1786
|
+
sig { override.params(expand: T::Boolean).returns(AbstractCondition) }
|
|
1787
|
+
def minimize(expand: true) = self
|
|
1788
|
+
|
|
1789
|
+
sig { override.returns(T::Boolean) }
|
|
1790
|
+
def has_param? = false
|
|
1791
|
+
|
|
1792
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) }
|
|
1793
|
+
def to_idl(cfg_arch) = "-> false;"
|
|
1794
|
+
|
|
1795
|
+
sig { override.params(expand: T::Boolean).returns(String) }
|
|
1796
|
+
def to_s(expand: false) = "false"
|
|
1797
|
+
|
|
1798
|
+
sig { override.returns(String) }
|
|
1799
|
+
def to_s_pretty
|
|
1800
|
+
"never"
|
|
1801
|
+
end
|
|
1802
|
+
|
|
1803
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(String) }
|
|
1804
|
+
def to_s_with_value(cfg_arch, expand: false) = "false"
|
|
1805
|
+
|
|
1806
|
+
sig { override.returns(String) }
|
|
1807
|
+
def to_asciidoc = "false"
|
|
1808
|
+
|
|
1809
|
+
sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
|
|
1810
|
+
def implied_extension_requirements(expand: true) = []
|
|
1811
|
+
|
|
1812
|
+
sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
|
|
1813
|
+
def implied_extension_conflicts(expand: true) = []
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
sig { override.params(other: AbstractCondition).returns(AbstractCondition) }
|
|
1817
|
+
def &(other)
|
|
1818
|
+
self
|
|
1819
|
+
end
|
|
1820
|
+
|
|
1821
|
+
sig { override.params(other: AbstractCondition).returns(AbstractCondition) }
|
|
1822
|
+
def |(other)
|
|
1823
|
+
Condition.disjunction([self, other], @cfg_arch)
|
|
1824
|
+
end
|
|
1825
|
+
|
|
1826
|
+
sig { override.returns(AbstractCondition) }
|
|
1827
|
+
def -@
|
|
1828
|
+
AlwaysTrueCondition.new(@cfg_arch)
|
|
1829
|
+
end
|
|
1830
|
+
|
|
1831
|
+
sig { override.returns(T::Boolean) }
|
|
1832
|
+
def satisfiable? = false
|
|
1833
|
+
|
|
1834
|
+
sig { override.returns(T::Boolean) }
|
|
1835
|
+
def unsatisfiable? = true
|
|
1836
|
+
end
|
|
1837
|
+
|
|
1838
|
+
class ParamCondition < Condition
|
|
1839
|
+
extend T::Sig
|
|
1840
|
+
|
|
1841
|
+
sig { params(yaml: T::Hash[String, T.untyped], cfg_arch: ConfiguredArchitecture).void }
|
|
1842
|
+
def initialize(yaml, cfg_arch)
|
|
1843
|
+
super(yaml, cfg_arch)
|
|
1844
|
+
end
|
|
1845
|
+
|
|
1846
|
+
sig {
|
|
1847
|
+
params(
|
|
1848
|
+
yaml: T.any(TrueClass, FalseClass, T::Hash[String, T.untyped])
|
|
1849
|
+
)
|
|
1850
|
+
.returns(LogicNode)
|
|
1851
|
+
}
|
|
1852
|
+
def to_param_logic_tree_helper(yaml)
|
|
1853
|
+
if yaml == true
|
|
1854
|
+
LogicNode::True
|
|
1855
|
+
elsif yaml == false
|
|
1856
|
+
LogicNode::False
|
|
1857
|
+
elsif yaml.key?("name")
|
|
1858
|
+
LogicNode.new(LogicNodeType::Term, [ParameterTerm.new(yaml)])
|
|
1859
|
+
elsif yaml.key?("allOf")
|
|
1860
|
+
LogicNode.new(LogicNodeType::And, yaml.fetch("allOf").map { |y| to_param_logic_tree_helper(y) })
|
|
1861
|
+
elsif yaml.key?("anyOf")
|
|
1862
|
+
LogicNode.new(LogicNodeType::Or, yaml.fetch("anyOf").map { |y| to_param_logic_tree_helper(y) })
|
|
1863
|
+
elsif yaml.key?("oneOf")
|
|
1864
|
+
LogicNode.new(LogicNodeType::Xor, yaml.fetch("oneOf").map { |y| to_param_logic_tree_helper(y) })
|
|
1865
|
+
elsif yaml.key?("noneOf")
|
|
1866
|
+
LogicNode.new(LogicNodeType::Not,
|
|
1867
|
+
[
|
|
1868
|
+
LogicNode.new(LogicNodeType::Or, yaml.fetch("noneOf").map { |y| to_param_logic_tree_helper(y) })
|
|
1869
|
+
]
|
|
1870
|
+
)
|
|
1871
|
+
elsif yaml.key?("not")
|
|
1872
|
+
LogicNode.new(LogicNodeType::Not, [to_param_logic_tree_helper(yaml.fetch("not"))])
|
|
1873
|
+
elsif yaml.key?("if")
|
|
1874
|
+
LogicNode.new(LogicNodeType::If,
|
|
1875
|
+
[
|
|
1876
|
+
Condition.new(yaml.fetch("if"), @cfg_arch).to_logic_tree_internal,
|
|
1877
|
+
to_param_logic_tree_helper(yaml.fetch("then"))
|
|
1878
|
+
]
|
|
1879
|
+
)
|
|
1880
|
+
elsif yaml.key?("param")
|
|
1881
|
+
to_param_logic_tree_helper(yaml.fetch("param"))
|
|
1882
|
+
else
|
|
1883
|
+
raise "unexpected key #{yaml.keys}"
|
|
1884
|
+
end
|
|
1885
|
+
end
|
|
1886
|
+
|
|
1887
|
+
sig {
|
|
1888
|
+
override
|
|
1889
|
+
.returns(LogicNode)
|
|
1890
|
+
}
|
|
1891
|
+
def to_logic_tree_internal
|
|
1892
|
+
@logic_tree ||= to_param_logic_tree_helper(@yaml)
|
|
1893
|
+
end
|
|
1894
|
+
end
|
|
1895
|
+
|
|
1896
|
+
class ExtensionCondition < Condition
|
|
1897
|
+
extend T::Sig
|
|
1898
|
+
|
|
1899
|
+
sig { params(yaml: T::Hash[String, T.untyped], cfg_arch: ConfiguredArchitecture).void }
|
|
1900
|
+
def initialize(yaml, cfg_arch)
|
|
1901
|
+
super(yaml, cfg_arch)
|
|
1902
|
+
end
|
|
1903
|
+
|
|
1904
|
+
sig { override.returns(LogicNode) }
|
|
1905
|
+
def to_logic_tree_internal
|
|
1906
|
+
@logic_tree ||= to_logic_tree_helper(@yaml)
|
|
1907
|
+
end
|
|
1908
|
+
|
|
1909
|
+
# convert an ExtensionRequirement into a logic tree
|
|
1910
|
+
# if expand is true, also add requirements of the extension and all satisfing versions to the tree
|
|
1911
|
+
sig {
|
|
1912
|
+
params(
|
|
1913
|
+
yaml: T::Hash[String, T.untyped],
|
|
1914
|
+
cfg_arch: ConfiguredArchitecture
|
|
1915
|
+
).returns(LogicNode)
|
|
1916
|
+
}
|
|
1917
|
+
def ext_req_to_logic_node(yaml, cfg_arch)
|
|
1918
|
+
ext_req = ExtensionRequirement.create_from_yaml(yaml, cfg_arch)
|
|
1919
|
+
|
|
1920
|
+
LogicNode.new(LogicNodeType::Term, [ext_req.to_term])
|
|
1921
|
+
end
|
|
1922
|
+
private :ext_req_to_logic_node
|
|
1923
|
+
|
|
1924
|
+
sig {
|
|
1925
|
+
override
|
|
1926
|
+
.params(
|
|
1927
|
+
yaml: T.any(T::Hash[String, T.untyped], T::Boolean),
|
|
1928
|
+
)
|
|
1929
|
+
.returns(LogicNode)
|
|
1930
|
+
}
|
|
1931
|
+
def to_logic_tree_helper(yaml)
|
|
1932
|
+
if !yaml.is_a?(Hash)
|
|
1933
|
+
if yaml == true
|
|
1934
|
+
LogicNode::True
|
|
1935
|
+
elsif yaml == false
|
|
1936
|
+
LogicNode::False
|
|
1937
|
+
else
|
|
1938
|
+
T.absurd(yaml)
|
|
1939
|
+
end
|
|
1940
|
+
else
|
|
1941
|
+
if yaml.key?("allOf")
|
|
1942
|
+
LogicNode.new(LogicNodeType::And, yaml["allOf"].map { |node| to_logic_tree_helper(node) })
|
|
1943
|
+
elsif yaml.key?("anyOf")
|
|
1944
|
+
LogicNode.new(LogicNodeType::Or, yaml["anyOf"].map { |node| to_logic_tree_helper(node) })
|
|
1945
|
+
elsif yaml.key?("noneOf")
|
|
1946
|
+
LogicNode.new(LogicNodeType::Or, yaml["noneOf"].map { |node| to_logic_tree_helper(node) })
|
|
1947
|
+
elsif yaml.key?("oneOf")
|
|
1948
|
+
LogicNode.new(LogicNodeType::Xor, yaml["oneOf"].map { |node| to_logic_tree_helper(node) })
|
|
1949
|
+
elsif yaml.key?("not")
|
|
1950
|
+
LogicNode.new(LogicNodeType::Not, [to_logic_tree_helper(yaml.fetch("not"))])
|
|
1951
|
+
elsif yaml.key?("if")
|
|
1952
|
+
LogicNode.new(
|
|
1953
|
+
LogicNodeType::If,
|
|
1954
|
+
[
|
|
1955
|
+
Condition.new(yaml.fetch("if"), @cfg_arch, input_file: @input_file, input_line: @input_line)
|
|
1956
|
+
.to_logic_tree_internal,
|
|
1957
|
+
to_logic_tree_helper(yaml.fetch("then"))
|
|
1958
|
+
]
|
|
1959
|
+
)
|
|
1960
|
+
elsif yaml.key?("name")
|
|
1961
|
+
ext_req_to_logic_node(yaml, @cfg_arch)
|
|
1962
|
+
else
|
|
1963
|
+
raise "unexpected key #{yaml.keys}"
|
|
1964
|
+
end
|
|
1965
|
+
end
|
|
1966
|
+
end
|
|
1967
|
+
private :to_logic_tree_helper
|
|
1968
|
+
end
|
|
1969
|
+
|
|
1970
|
+
class XlenCondition < Condition
|
|
1971
|
+
extend T::Sig
|
|
1972
|
+
|
|
1973
|
+
sig { params(xlen: Integer).void }
|
|
1974
|
+
def initialize(xlen)
|
|
1975
|
+
@xlen = xlen
|
|
1976
|
+
end
|
|
1977
|
+
|
|
1978
|
+
sig { override.returns(LogicNode) }
|
|
1979
|
+
def to_logic_tree_internal
|
|
1980
|
+
if @xlen == 32
|
|
1981
|
+
LogicNode::Xlen32
|
|
1982
|
+
elsif @xlen == 64
|
|
1983
|
+
LogicNode::Xlen64
|
|
1984
|
+
else
|
|
1985
|
+
raise "unexpected"
|
|
1986
|
+
end
|
|
1987
|
+
end
|
|
1988
|
+
|
|
1989
|
+
sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) }
|
|
1990
|
+
def to_h = { "xlen" => @xlen }
|
|
1991
|
+
|
|
1992
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) }
|
|
1993
|
+
def to_idl(cfg_arch) = "xlen() == #{@xlen}"
|
|
1994
|
+
|
|
1995
|
+
end
|
|
1996
|
+
|
|
1997
|
+
class Condition < AbstractCondition
|
|
1998
|
+
Xlen32 = XlenCondition.new(32)
|
|
1999
|
+
Xlen64 = XlenCondition.new(64)
|
|
2000
|
+
end
|
|
2001
|
+
|
|
2002
|
+
class IdlCondition < Condition
|
|
2003
|
+
|
|
2004
|
+
sig { returns(String) }
|
|
2005
|
+
def reason = T.cast(@yaml, T::Hash[String, T.untyped]).fetch("reason")
|
|
2006
|
+
|
|
2007
|
+
sig {
|
|
2008
|
+
params(
|
|
2009
|
+
yaml: T::Hash[String, T.untyped],
|
|
2010
|
+
cfg_arch: ConfiguredArchitecture,
|
|
2011
|
+
input_file: T.nilable(Pathname),
|
|
2012
|
+
input_line: T.nilable(Integer)
|
|
2013
|
+
)
|
|
2014
|
+
.void
|
|
2015
|
+
}
|
|
2016
|
+
def initialize(yaml, cfg_arch, input_file:, input_line:)
|
|
2017
|
+
super(yaml, cfg_arch, input_file:, input_line:)
|
|
2018
|
+
|
|
2019
|
+
raise "missing required key" unless T.cast(@yaml, T::Hash[String, T.untyped]).key?("idl()")
|
|
2020
|
+
end
|
|
2021
|
+
|
|
2022
|
+
sig { returns(Constraint) }
|
|
2023
|
+
def constraint
|
|
2024
|
+
@constraint ||= Constraint.new(
|
|
2025
|
+
T.cast(@yaml, T::Hash[String, T.untyped]).fetch("idl()"),
|
|
2026
|
+
input_file: @input_file,
|
|
2027
|
+
input_line: @input_line,
|
|
2028
|
+
cfg_arch: @cfg_arch
|
|
2029
|
+
)
|
|
2030
|
+
end
|
|
2031
|
+
|
|
2032
|
+
sig { override.returns(LogicNode) }
|
|
2033
|
+
def to_logic_tree_internal
|
|
2034
|
+
@logic_tree = constraint.to_logic_tree_internal
|
|
2035
|
+
end
|
|
2036
|
+
|
|
2037
|
+
sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) }
|
|
2038
|
+
def to_h = constraint.to_h
|
|
2039
|
+
|
|
2040
|
+
sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) }
|
|
2041
|
+
def to_idl(cfg_arch) = T.cast(@yaml, T::Hash[String, T.untyped]).fetch("idl()")
|
|
2042
|
+
|
|
2043
|
+
end
|
|
2044
|
+
|
|
2045
|
+
# represents a `requires:` entry for an extension version
|
|
2046
|
+
# something is implied if it points to a single extension version, e.g.:
|
|
2047
|
+
#
|
|
2048
|
+
# requires:
|
|
2049
|
+
# extension:
|
|
2050
|
+
# name: A
|
|
2051
|
+
# version: = 1.0.0 # <- this is an implication
|
|
2052
|
+
#
|
|
2053
|
+
# The list of implied extensions can be conditional, for example:
|
|
2054
|
+
#
|
|
2055
|
+
# requires:
|
|
2056
|
+
# extension:
|
|
2057
|
+
# allOf:
|
|
2058
|
+
# - name: Zca
|
|
2059
|
+
# version: "1.0.0"
|
|
2060
|
+
# - if:
|
|
2061
|
+
# extension:
|
|
2062
|
+
# name: F
|
|
2063
|
+
# version: ~> 2.2
|
|
2064
|
+
# then:
|
|
2065
|
+
# name: Zcf
|
|
2066
|
+
# version: "1.0.0"
|
|
2067
|
+
# - if:
|
|
2068
|
+
# extension:
|
|
2069
|
+
# name: D
|
|
2070
|
+
# version: ~> 2.2
|
|
2071
|
+
# then:
|
|
2072
|
+
# name: Zcd
|
|
2073
|
+
# version: "1.0.0"
|
|
2074
|
+
#
|
|
2075
|
+
|
|
2076
|
+
|
|
2077
|
+
# a conditional list of extension requirements
|
|
2078
|
+
class ExtensionRequirementList
|
|
2079
|
+
extend T::Sig
|
|
2080
|
+
|
|
2081
|
+
class ParseState < T::Enum
|
|
2082
|
+
enums do
|
|
2083
|
+
Condition = new
|
|
2084
|
+
ExtensionCondition = new
|
|
2085
|
+
end
|
|
2086
|
+
end
|
|
2087
|
+
|
|
2088
|
+
sig { params(yaml: T::Hash[String, T.untyped], cfg_arch: ConfiguredArchitecture).void }
|
|
2089
|
+
def initialize(yaml, cfg_arch)
|
|
2090
|
+
@yaml = yaml
|
|
2091
|
+
@cfg_arch = cfg_arch
|
|
2092
|
+
@list = T.let(nil, T.nilable(T::Array[ConditionalExtensionRequirement]))
|
|
2093
|
+
@implied_extension_versions = T.let(nil, T.nilable(T::Array[ConditionalExtensionVersion]))
|
|
2094
|
+
end
|
|
2095
|
+
|
|
2096
|
+
sig { params(yaml: T::Hash[String, T.untyped]).returns(ConditionalExtensionRequirement) }
|
|
2097
|
+
def make_cond_ext_req(yaml)
|
|
2098
|
+
ext_req = ExtensionRequirement.create_from_yaml(yaml, @cfg_arch)
|
|
2099
|
+
cond =
|
|
2100
|
+
if yaml.key?("when")
|
|
2101
|
+
Condition.new(yaml.fetch("when"), @cfg_arch)
|
|
2102
|
+
else
|
|
2103
|
+
AlwaysTrueCondition.new(@cfg_arch)
|
|
2104
|
+
end
|
|
2105
|
+
ConditionalExtensionRequirement.new(ext_req:, cond:)
|
|
2106
|
+
end
|
|
2107
|
+
|
|
2108
|
+
sig { params(yaml: T::Hash[String, T.untyped], l: T::Array[ConditionalExtensionRequirement]).void }
|
|
2109
|
+
def do_list(yaml, l)
|
|
2110
|
+
if yaml.key?("name")
|
|
2111
|
+
l << make_cond_ext_req(yaml)
|
|
2112
|
+
elsif yaml.key?("allOf")
|
|
2113
|
+
yaml.fetch("allOf").each { |item| do_list(item, l) }
|
|
2114
|
+
else
|
|
2115
|
+
raise "unexpected key #{yaml.keys}"
|
|
2116
|
+
end
|
|
2117
|
+
end
|
|
2118
|
+
|
|
2119
|
+
sig { returns(T::Array[ConditionalExtensionRequirement]) }
|
|
2120
|
+
def list
|
|
2121
|
+
return @list unless @list.nil?
|
|
2122
|
+
|
|
2123
|
+
@list = []
|
|
2124
|
+
do_list(@yaml, @list)
|
|
2125
|
+
@list
|
|
2126
|
+
end
|
|
2127
|
+
|
|
2128
|
+
sig { returns(T::Array[ConditionalExtensionVersion]) }
|
|
2129
|
+
def implied_extension_versions
|
|
2130
|
+
return @implied_extension_versions unless @implied_extension_versions.nil?
|
|
2131
|
+
|
|
2132
|
+
@implied_extension_versions = []
|
|
2133
|
+
list.each do |cond_ext_req|
|
|
2134
|
+
ext_req = cond_ext_req.ext_req
|
|
2135
|
+
if (ext_req.requirement_specs.size == 1) && (ext_req.requirement_specs.fetch(0).op == "=")
|
|
2136
|
+
ext_ver = ext_req.satisfying_versions.fetch(0)
|
|
2137
|
+
@implied_extension_versions << ConditionalExtensionVersion.new(ext_ver:, cond: cond_ext_req.cond)
|
|
2138
|
+
end
|
|
2139
|
+
end
|
|
2140
|
+
@implied_extension_versions
|
|
2141
|
+
end
|
|
2142
|
+
end
|
|
2143
|
+
end
|