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.
Files changed (2654) hide show
  1. checksums.yaml +7 -0
  2. data/.data/cfgs/MC100-32.yaml +23 -0
  3. data/.data/cfgs/_.yaml +8 -0
  4. data/.data/cfgs/example_rv64_with_overlay.yaml +618 -0
  5. data/.data/cfgs/mc100-32-full-example.yaml +91 -0
  6. data/.data/cfgs/memmap.json +76 -0
  7. data/.data/cfgs/prm_demo_rv32.yaml +28 -0
  8. data/.data/cfgs/profile/RVA20S64.yaml +73 -0
  9. data/.data/cfgs/profile/RVA20U64.yaml +53 -0
  10. data/.data/cfgs/profile/RVA22S64.yaml +123 -0
  11. data/.data/cfgs/profile/RVA22U64.yaml +85 -0
  12. data/.data/cfgs/profile/RVA23M64.yaml +161 -0
  13. data/.data/cfgs/profile/RVA23S64.yaml +151 -0
  14. data/.data/cfgs/profile/RVA23U64.yaml +131 -0
  15. data/.data/cfgs/profile/RVB23M64.yaml +151 -0
  16. data/.data/cfgs/profile/RVB23S64.yaml +147 -0
  17. data/.data/cfgs/profile/RVB23U64.yaml +141 -0
  18. data/.data/cfgs/profile/RVI20U32.yaml +41 -0
  19. data/.data/cfgs/profile/RVI20U64.yaml +41 -0
  20. data/.data/cfgs/qc_iu.yaml +153 -0
  21. data/.data/cfgs/regress.yaml +9 -0
  22. data/.data/cfgs/rv32-riscv-tests.yaml +208 -0
  23. data/.data/cfgs/rv32-vector.yaml +246 -0
  24. data/.data/cfgs/rv32.yaml +15 -0
  25. data/.data/cfgs/rv64-riscv-tests.yaml +202 -0
  26. data/.data/cfgs/rv64-vector.yaml +245 -0
  27. data/.data/cfgs/rv64.yaml +14 -0
  28. data/.data/spec/custom/isa/example/csr/marchid.yaml +8 -0
  29. data/.data/spec/custom/isa/example/csr/mcustom0.yaml +18 -0
  30. data/.data/spec/custom/isa/example/ext/Xcustom.yaml +15 -0
  31. data/.data/spec/custom/isa/qc_iu/csr/Xqci/gen_mcliciX.rb +188 -0
  32. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mcause.yaml +85 -0
  33. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie0.yaml +181 -0
  34. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie1.yaml +181 -0
  35. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie2.yaml +181 -0
  36. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie3.yaml +181 -0
  37. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie4.yaml +181 -0
  38. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie5.yaml +181 -0
  39. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie6.yaml +181 -0
  40. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie7.yaml +181 -0
  41. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl00.yaml +62 -0
  42. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl01.yaml +62 -0
  43. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl02.yaml +62 -0
  44. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl03.yaml +62 -0
  45. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl04.yaml +62 -0
  46. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl05.yaml +62 -0
  47. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl06.yaml +62 -0
  48. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl07.yaml +62 -0
  49. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl08.yaml +62 -0
  50. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl09.yaml +62 -0
  51. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl10.yaml +62 -0
  52. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl11.yaml +62 -0
  53. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl12.yaml +62 -0
  54. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl13.yaml +62 -0
  55. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl14.yaml +62 -0
  56. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl15.yaml +62 -0
  57. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl16.yaml +62 -0
  58. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl17.yaml +62 -0
  59. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl18.yaml +62 -0
  60. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl19.yaml +62 -0
  61. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl20.yaml +62 -0
  62. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl21.yaml +62 -0
  63. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl22.yaml +62 -0
  64. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl23.yaml +62 -0
  65. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl24.yaml +62 -0
  66. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl25.yaml +62 -0
  67. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl26.yaml +62 -0
  68. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl27.yaml +62 -0
  69. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl28.yaml +62 -0
  70. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl29.yaml +62 -0
  71. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl30.yaml +62 -0
  72. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl31.yaml +62 -0
  73. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip0.yaml +181 -0
  74. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip1.yaml +181 -0
  75. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip2.yaml +181 -0
  76. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip3.yaml +181 -0
  77. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip4.yaml +181 -0
  78. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip5.yaml +181 -0
  79. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip6.yaml +181 -0
  80. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip7.yaml +181 -0
  81. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mmcr.yaml +42 -0
  82. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mntvec.yaml +28 -0
  83. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mstkbottomaddr.yaml +33 -0
  84. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mstktopaddr.yaml +33 -0
  85. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mthreadptr.yaml +27 -0
  86. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr0.yaml +27 -0
  87. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr1.yaml +27 -0
  88. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr2.yaml +27 -0
  89. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr3.yaml +27 -0
  90. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr0.yaml +27 -0
  91. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr1.yaml +27 -0
  92. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr2.yaml +27 -0
  93. data/.data/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr3.yaml +27 -0
  94. data/.data/spec/custom/isa/qc_iu/exception_code/ExecWatchpoint.yaml +13 -0
  95. data/.data/spec/custom/isa/qc_iu/exception_code/IllegalStackPointer.yaml +13 -0
  96. data/.data/spec/custom/isa/qc_iu/exception_code/ReadWatchpoint.yaml +13 -0
  97. data/.data/spec/custom/isa/qc_iu/exception_code/SpOutOfRange.yaml +13 -0
  98. data/.data/spec/custom/isa/qc_iu/exception_code/WriteWatchpoint.yaml +13 -0
  99. data/.data/spec/custom/isa/qc_iu/ext/Xqccmp.yaml +160 -0
  100. data/.data/spec/custom/isa/qc_iu/ext/Xqci.yaml +778 -0
  101. data/.data/spec/custom/isa/qc_iu/ext/Xqcia.yaml +111 -0
  102. data/.data/spec/custom/isa/qc_iu/ext/Xqciac.yaml +66 -0
  103. data/.data/spec/custom/isa/qc_iu/ext/Xqcibi.yaml +50 -0
  104. data/.data/spec/custom/isa/qc_iu/ext/Xqcibm.yaml +146 -0
  105. data/.data/spec/custom/isa/qc_iu/ext/Xqcicli.yaml +57 -0
  106. data/.data/spec/custom/isa/qc_iu/ext/Xqcicm.yaml +50 -0
  107. data/.data/spec/custom/isa/qc_iu/ext/Xqcics.yaml +44 -0
  108. data/.data/spec/custom/isa/qc_iu/ext/Xqcicsr.yaml +68 -0
  109. data/.data/spec/custom/isa/qc_iu/ext/Xqciint.yaml +173 -0
  110. data/.data/spec/custom/isa/qc_iu/ext/Xqciio.yaml +32 -0
  111. data/.data/spec/custom/isa/qc_iu/ext/Xqcilb.yaml +46 -0
  112. data/.data/spec/custom/isa/qc_iu/ext/Xqcili.yaml +49 -0
  113. data/.data/spec/custom/isa/qc_iu/ext/Xqcilia.yaml +47 -0
  114. data/.data/spec/custom/isa/qc_iu/ext/Xqcilo.yaml +59 -0
  115. data/.data/spec/custom/isa/qc_iu/ext/Xqcilsm.yaml +94 -0
  116. data/.data/spec/custom/isa/qc_iu/ext/Xqcisim.yaml +48 -0
  117. data/.data/spec/custom/isa/qc_iu/ext/Xqcisls.yaml +44 -0
  118. data/.data/spec/custom/isa/qc_iu/ext/Xqcisync.yaml +62 -0
  119. data/.data/spec/custom/isa/qc_iu/inst/C/c.slli.yaml +6 -0
  120. data/.data/spec/custom/isa/qc_iu/inst/C/c.srai.yaml +5 -0
  121. data/.data/spec/custom/isa/qc_iu/inst/C/c.srli.yaml +5 -0
  122. data/.data/spec/custom/isa/qc_iu/inst/I/slti.yaml +15 -0
  123. data/.data/spec/custom/isa/qc_iu/inst/I/sltiu.yaml +8 -0
  124. data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mva01s.yaml +36 -0
  125. data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mvsa01.yaml +38 -0
  126. data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pop.yaml +87 -0
  127. data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popret.yaml +88 -0
  128. data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popretz.yaml +88 -0
  129. data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.push.yaml +87 -0
  130. data/.data/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pushfp.yaml +89 -0
  131. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.addsat.yaml +51 -0
  132. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.addusat.yaml +44 -0
  133. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.beqi.yaml +40 -0
  134. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.bgei.yaml +40 -0
  135. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.bgeui.yaml +40 -0
  136. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.blti.yaml +40 -0
  137. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.bltui.yaml +40 -0
  138. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.bnei.yaml +40 -0
  139. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.brev32.yaml +41 -0
  140. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bexti.yaml +36 -0
  141. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bseti.yaml +36 -0
  142. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.clrint.yaml +36 -0
  143. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.delay.yaml +31 -0
  144. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.di.yaml +30 -0
  145. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.dir.yaml +36 -0
  146. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ei.yaml +30 -0
  147. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.eir.yaml +35 -0
  148. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.extu.yaml +36 -0
  149. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.nest.yaml +61 -0
  150. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.yaml +59 -0
  151. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mileaveret.yaml +106 -0
  152. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mnret.yaml +50 -0
  153. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mret.yaml +53 -0
  154. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.muliadd.yaml +37 -0
  155. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mveqz.yaml +35 -0
  156. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ptrace.yaml +31 -0
  157. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.setint.yaml +36 -0
  158. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.sync.yaml +46 -0
  159. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncr.yaml +46 -0
  160. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwf.yaml +46 -0
  161. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwl.yaml +46 -0
  162. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.clo.yaml +38 -0
  163. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.clrinti.yaml +35 -0
  164. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.compress2.yaml +37 -0
  165. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.compress3.yaml +37 -0
  166. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwr.yaml +52 -0
  167. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwri.yaml +48 -0
  168. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.cto.yaml +38 -0
  169. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addai.yaml +33 -0
  170. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addi.yaml +37 -0
  171. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andai.yaml +33 -0
  172. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andi.yaml +37 -0
  173. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.beqi.yaml +40 -0
  174. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgei.yaml +40 -0
  175. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgeui.yaml +40 -0
  176. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.blti.yaml +40 -0
  177. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bltui.yaml +40 -0
  178. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bnei.yaml +40 -0
  179. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.j.yaml +32 -0
  180. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.jal.yaml +35 -0
  181. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lb.yaml +37 -0
  182. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lbu.yaml +37 -0
  183. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lh.yaml +37 -0
  184. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lhu.yaml +37 -0
  185. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.li.yaml +33 -0
  186. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lw.yaml +37 -0
  187. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.orai.yaml +33 -0
  188. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.ori.yaml +37 -0
  189. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sb.yaml +36 -0
  190. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sh.yaml +36 -0
  191. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sw.yaml +36 -0
  192. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xorai.yaml +33 -0
  193. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xori.yaml +37 -0
  194. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.expand2.yaml +39 -0
  195. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.expand3.yaml +39 -0
  196. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ext.yaml +42 -0
  197. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extd.yaml +42 -0
  198. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdpr.yaml +49 -0
  199. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdprh.yaml +49 -0
  200. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdr.yaml +49 -0
  201. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdu.yaml +42 -0
  202. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdupr.yaml +49 -0
  203. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extduprh.yaml +49 -0
  204. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extdur.yaml +49 -0
  205. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.extu.yaml +41 -0
  206. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insb.yaml +42 -0
  207. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbh.yaml +51 -0
  208. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbhr.yaml +53 -0
  209. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbi.yaml +43 -0
  210. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbpr.yaml +47 -0
  211. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbprh.yaml +47 -0
  212. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbr.yaml +47 -0
  213. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.insbri.yaml +48 -0
  214. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.inw.yaml +38 -0
  215. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.li.yaml +33 -0
  216. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lieq.yaml +41 -0
  217. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lieqi.yaml +40 -0
  218. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lige.yaml +41 -0
  219. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ligei.yaml +40 -0
  220. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeu.yaml +41 -0
  221. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeui.yaml +40 -0
  222. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lilt.yaml +41 -0
  223. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lilti.yaml +40 -0
  224. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.liltu.yaml +41 -0
  225. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.liltui.yaml +40 -0
  226. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.line.yaml +41 -0
  227. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.linei.yaml +40 -0
  228. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrb.yaml +40 -0
  229. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrbu.yaml +39 -0
  230. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrh.yaml +40 -0
  231. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrhu.yaml +39 -0
  232. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lrw.yaml +39 -0
  233. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lwm.yaml +46 -0
  234. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.lwmi.yaml +45 -0
  235. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.muliadd.yaml +37 -0
  236. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mveq.yaml +42 -0
  237. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mveqi.yaml +41 -0
  238. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvge.yaml +42 -0
  239. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgei.yaml +41 -0
  240. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeu.yaml +42 -0
  241. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeui.yaml +41 -0
  242. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlt.yaml +42 -0
  243. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlti.yaml +41 -0
  244. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltu.yaml +42 -0
  245. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltui.yaml +41 -0
  246. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvne.yaml +42 -0
  247. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.mvnei.yaml +41 -0
  248. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.norm.yaml +41 -0
  249. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.normeu.yaml +40 -0
  250. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.normu.yaml +40 -0
  251. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.outw.yaml +38 -0
  252. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pcoredump.yaml +32 -0
  253. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pexit.yaml +33 -0
  254. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ppreg.yaml +33 -0
  255. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.ppregs.yaml +31 -0
  256. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pputc.yaml +33 -0
  257. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pputci.yaml +33 -0
  258. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.pputs.yaml +34 -0
  259. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscall.yaml +34 -0
  260. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscalli.yaml +34 -0
  261. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selecteqi.yaml +44 -0
  262. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieq.yaml +44 -0
  263. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieqi.yaml +43 -0
  264. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiieq.yaml +43 -0
  265. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiine.yaml +43 -0
  266. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectine.yaml +44 -0
  267. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectinei.yaml +43 -0
  268. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.selectnei.yaml +44 -0
  269. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.setinti.yaml +35 -0
  270. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.setwm.yaml +45 -0
  271. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.setwmi.yaml +44 -0
  272. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.shladd.yaml +43 -0
  273. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.shlsat.yaml +48 -0
  274. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.shlusat.yaml +45 -0
  275. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srb.yaml +39 -0
  276. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srh.yaml +39 -0
  277. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.srw.yaml +39 -0
  278. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.subsat.yaml +53 -0
  279. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.subusat.yaml +37 -0
  280. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.swm.yaml +46 -0
  281. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.swmi.yaml +45 -0
  282. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.sync.yaml +34 -0
  283. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.syncr.yaml +34 -0
  284. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwf.yaml +34 -0
  285. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwl.yaml +34 -0
  286. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.wrap.yaml +43 -0
  287. data/.data/spec/custom/isa/qc_iu/inst/Xqci/qc.wrapi.yaml +47 -0
  288. data/.data/spec/custom/isa/qc_iu/isa/globals.isa +83 -0
  289. data/.data/spec/custom/isa/regress/manual_version/isa/regress/isa_regress.yaml +222 -0
  290. data/.data/spec/schemas/README.adoc +87 -0
  291. data/.data/spec/schemas/config_schema.json +198 -0
  292. data/.data/spec/schemas/csr_schema.json +319 -0
  293. data/.data/spec/schemas/exception_code_schema.json +33 -0
  294. data/.data/spec/schemas/ext_schema.json +168 -0
  295. data/.data/spec/schemas/inst_opcode_schema.json +37 -0
  296. data/.data/spec/schemas/inst_schema.json +503 -0
  297. data/.data/spec/schemas/inst_subtype_schema.json +190 -0
  298. data/.data/spec/schemas/inst_type_schema.json +69 -0
  299. data/.data/spec/schemas/inst_var_schema.json +93 -0
  300. data/.data/spec/schemas/inst_var_type_schema.json +45 -0
  301. data/.data/spec/schemas/inst_variable_metadatas.json +10 -0
  302. data/.data/spec/schemas/interrupt_code_schema.json +33 -0
  303. data/.data/spec/schemas/json-schema-draft-07.json +242 -0
  304. data/.data/spec/schemas/manual_schema.json +44 -0
  305. data/.data/spec/schemas/manual_version_schema.json +129 -0
  306. data/.data/spec/schemas/mmr_schema.json +74 -0
  307. data/.data/spec/schemas/non_isa_schema.json +102 -0
  308. data/.data/spec/schemas/param_schema.json +48 -0
  309. data/.data/spec/schemas/prm_schema.json +203 -0
  310. data/.data/spec/schemas/proc_cert_class_schema.json +35 -0
  311. data/.data/spec/schemas/proc_cert_model_schema.json +336 -0
  312. data/.data/spec/schemas/profile_family_schema.json +54 -0
  313. data/.data/spec/schemas/profile_release_schema.json +22 -0
  314. data/.data/spec/schemas/profile_schema.json +139 -0
  315. data/.data/spec/schemas/register_file_schema.json +123 -0
  316. data/.data/spec/schemas/schema_defs.json +905 -0
  317. data/.data/spec/std/isa/README.adoc +295 -0
  318. data/.data/spec/std/isa/csr/F/fcsr.yaml +190 -0
  319. data/.data/spec/std/isa/csr/F/fflags.yaml +95 -0
  320. data/.data/spec/std/isa/csr/F/frm.yaml +57 -0
  321. data/.data/spec/std/isa/csr/H/hcounteren.layout +178 -0
  322. data/.data/spec/std/isa/csr/H/hcounteren.yaml +1215 -0
  323. data/.data/spec/std/isa/csr/H/henvcfg.yaml +307 -0
  324. data/.data/spec/std/isa/csr/H/henvcfgh.yaml +120 -0
  325. data/.data/spec/std/isa/csr/H/hgatp.yaml +242 -0
  326. data/.data/spec/std/isa/csr/H/htimedelta.yaml +32 -0
  327. data/.data/spec/std/isa/csr/H/htimedeltah.yaml +32 -0
  328. data/.data/spec/std/isa/csr/H/htinst.yaml +50 -0
  329. data/.data/spec/std/isa/csr/H/htval.yaml +42 -0
  330. data/.data/spec/std/isa/csr/H/mtinst.yaml +50 -0
  331. data/.data/spec/std/isa/csr/H/mtval2.yaml +43 -0
  332. data/.data/spec/std/isa/csr/H/vsatp.yaml +149 -0
  333. data/.data/spec/std/isa/csr/I/mcounteren.layout +192 -0
  334. data/.data/spec/std/isa/csr/I/mcounteren.yaml +1061 -0
  335. data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +79 -0
  336. data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +79 -0
  337. data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +79 -0
  338. data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +79 -0
  339. data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +79 -0
  340. data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +79 -0
  341. data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +79 -0
  342. data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +79 -0
  343. data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +79 -0
  344. data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +79 -0
  345. data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +79 -0
  346. data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +79 -0
  347. data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +79 -0
  348. data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +79 -0
  349. data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +79 -0
  350. data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +79 -0
  351. data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +79 -0
  352. data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +79 -0
  353. data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +79 -0
  354. data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +79 -0
  355. data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +79 -0
  356. data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +79 -0
  357. data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +79 -0
  358. data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +79 -0
  359. data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +79 -0
  360. data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +79 -0
  361. data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +79 -0
  362. data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +79 -0
  363. data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +79 -0
  364. data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +79 -0
  365. data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +79 -0
  366. data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +79 -0
  367. data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +79 -0
  368. data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +79 -0
  369. data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +79 -0
  370. data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +79 -0
  371. data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +79 -0
  372. data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +79 -0
  373. data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +79 -0
  374. data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +79 -0
  375. data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +79 -0
  376. data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +79 -0
  377. data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +79 -0
  378. data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +79 -0
  379. data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +79 -0
  380. data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +79 -0
  381. data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +79 -0
  382. data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +79 -0
  383. data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +79 -0
  384. data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +79 -0
  385. data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +79 -0
  386. data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +79 -0
  387. data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +79 -0
  388. data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +79 -0
  389. data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +79 -0
  390. data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +79 -0
  391. data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +79 -0
  392. data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +79 -0
  393. data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +79 -0
  394. data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +79 -0
  395. data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +79 -0
  396. data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +79 -0
  397. data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +79 -0
  398. data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +79 -0
  399. data/.data/spec/std/isa/csr/I/pmpaddrN.layout +81 -0
  400. data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +493 -0
  401. data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +255 -0
  402. data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +493 -0
  403. data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +255 -0
  404. data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +493 -0
  405. data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +255 -0
  406. data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +493 -0
  407. data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +255 -0
  408. data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +493 -0
  409. data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +255 -0
  410. data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +493 -0
  411. data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +255 -0
  412. data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +493 -0
  413. data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +255 -0
  414. data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +493 -0
  415. data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +255 -0
  416. data/.data/spec/std/isa/csr/I/pmpcfgN.layout +90 -0
  417. data/.data/spec/std/isa/csr/S/scounteren.layout +103 -0
  418. data/.data/spec/std/isa/csr/S/scounteren.yaml +692 -0
  419. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +97 -0
  420. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +69 -0
  421. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +94 -0
  422. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +69 -0
  423. data/.data/spec/std/isa/csr/Smcsrind/mireg.yaml +63 -0
  424. data/.data/spec/std/isa/csr/Smcsrind/mireg2.yaml +63 -0
  425. data/.data/spec/std/isa/csr/Smcsrind/mireg3.yaml +63 -0
  426. data/.data/spec/std/isa/csr/Smcsrind/mireg4.yaml +63 -0
  427. data/.data/spec/std/isa/csr/Smcsrind/mireg5.yaml +63 -0
  428. data/.data/spec/std/isa/csr/Smcsrind/mireg6.yaml +63 -0
  429. data/.data/spec/std/isa/csr/Smcsrind/miselect.yaml +47 -0
  430. data/.data/spec/std/isa/csr/Smcsrind/sireg.yaml +63 -0
  431. data/.data/spec/std/isa/csr/Smcsrind/sireg2.yaml +63 -0
  432. data/.data/spec/std/isa/csr/Smcsrind/sireg3.yaml +63 -0
  433. data/.data/spec/std/isa/csr/Smcsrind/sireg4.yaml +63 -0
  434. data/.data/spec/std/isa/csr/Smcsrind/sireg5.yaml +63 -0
  435. data/.data/spec/std/isa/csr/Smcsrind/sireg6.yaml +63 -0
  436. data/.data/spec/std/isa/csr/Smcsrind/siselect.yaml +41 -0
  437. data/.data/spec/std/isa/csr/Smcsrind/vsireg.yaml +63 -0
  438. data/.data/spec/std/isa/csr/Smcsrind/vsireg2.yaml +62 -0
  439. data/.data/spec/std/isa/csr/Smcsrind/vsireg3.yaml +61 -0
  440. data/.data/spec/std/isa/csr/Smcsrind/vsireg4.yaml +61 -0
  441. data/.data/spec/std/isa/csr/Smcsrind/vsireg5.yaml +62 -0
  442. data/.data/spec/std/isa/csr/Smcsrind/vsireg6.yaml +62 -0
  443. data/.data/spec/std/isa/csr/Smcsrind/vsiselect.yaml +47 -0
  444. data/.data/spec/std/isa/csr/Smctr/mctrctl.yaml +223 -0
  445. data/.data/spec/std/isa/csr/Smctr/sctrctl.yaml +224 -0
  446. data/.data/spec/std/isa/csr/Smctr/vsctrctl.yaml +228 -0
  447. data/.data/spec/std/isa/csr/Smrnmi/mncause.yaml +49 -0
  448. data/.data/spec/std/isa/csr/Smrnmi/mnepc.yaml +54 -0
  449. data/.data/spec/std/isa/csr/Smrnmi/mnscratch.yaml +26 -0
  450. data/.data/spec/std/isa/csr/Smrnmi/mnstatus.yaml +109 -0
  451. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +64 -0
  452. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +455 -0
  453. data/.data/spec/std/isa/csr/Ssqosid/srmcfg.yaml +116 -0
  454. data/.data/spec/std/isa/csr/V/vcsr.yaml +36 -0
  455. data/.data/spec/std/isa/csr/V/vl.yaml +33 -0
  456. data/.data/spec/std/isa/csr/V/vlenb.yaml +27 -0
  457. data/.data/spec/std/isa/csr/V/vstart.yaml +81 -0
  458. data/.data/spec/std/isa/csr/V/vtype.yaml +125 -0
  459. data/.data/spec/std/isa/csr/V/vxrm.yaml +48 -0
  460. data/.data/spec/std/isa/csr/V/vxsat.yaml +33 -0
  461. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.layout +86 -0
  462. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.yaml +507 -0
  463. data/.data/spec/std/isa/csr/Zihpm/hpmcounter10.yaml +67 -0
  464. data/.data/spec/std/isa/csr/Zihpm/hpmcounter10h.yaml +69 -0
  465. data/.data/spec/std/isa/csr/Zihpm/hpmcounter11.yaml +67 -0
  466. data/.data/spec/std/isa/csr/Zihpm/hpmcounter11h.yaml +69 -0
  467. data/.data/spec/std/isa/csr/Zihpm/hpmcounter12.yaml +67 -0
  468. data/.data/spec/std/isa/csr/Zihpm/hpmcounter12h.yaml +69 -0
  469. data/.data/spec/std/isa/csr/Zihpm/hpmcounter13.yaml +67 -0
  470. data/.data/spec/std/isa/csr/Zihpm/hpmcounter13h.yaml +69 -0
  471. data/.data/spec/std/isa/csr/Zihpm/hpmcounter14.yaml +67 -0
  472. data/.data/spec/std/isa/csr/Zihpm/hpmcounter14h.yaml +69 -0
  473. data/.data/spec/std/isa/csr/Zihpm/hpmcounter15.yaml +67 -0
  474. data/.data/spec/std/isa/csr/Zihpm/hpmcounter15h.yaml +69 -0
  475. data/.data/spec/std/isa/csr/Zihpm/hpmcounter16.yaml +67 -0
  476. data/.data/spec/std/isa/csr/Zihpm/hpmcounter16h.yaml +69 -0
  477. data/.data/spec/std/isa/csr/Zihpm/hpmcounter17.yaml +67 -0
  478. data/.data/spec/std/isa/csr/Zihpm/hpmcounter17h.yaml +69 -0
  479. data/.data/spec/std/isa/csr/Zihpm/hpmcounter18.yaml +67 -0
  480. data/.data/spec/std/isa/csr/Zihpm/hpmcounter18h.yaml +69 -0
  481. data/.data/spec/std/isa/csr/Zihpm/hpmcounter19.yaml +67 -0
  482. data/.data/spec/std/isa/csr/Zihpm/hpmcounter19h.yaml +69 -0
  483. data/.data/spec/std/isa/csr/Zihpm/hpmcounter20.yaml +67 -0
  484. data/.data/spec/std/isa/csr/Zihpm/hpmcounter20h.yaml +69 -0
  485. data/.data/spec/std/isa/csr/Zihpm/hpmcounter21.yaml +67 -0
  486. data/.data/spec/std/isa/csr/Zihpm/hpmcounter21h.yaml +69 -0
  487. data/.data/spec/std/isa/csr/Zihpm/hpmcounter22.yaml +67 -0
  488. data/.data/spec/std/isa/csr/Zihpm/hpmcounter22h.yaml +69 -0
  489. data/.data/spec/std/isa/csr/Zihpm/hpmcounter23.yaml +67 -0
  490. data/.data/spec/std/isa/csr/Zihpm/hpmcounter23h.yaml +69 -0
  491. data/.data/spec/std/isa/csr/Zihpm/hpmcounter24.yaml +67 -0
  492. data/.data/spec/std/isa/csr/Zihpm/hpmcounter24h.yaml +69 -0
  493. data/.data/spec/std/isa/csr/Zihpm/hpmcounter25.yaml +67 -0
  494. data/.data/spec/std/isa/csr/Zihpm/hpmcounter25h.yaml +69 -0
  495. data/.data/spec/std/isa/csr/Zihpm/hpmcounter26.yaml +67 -0
  496. data/.data/spec/std/isa/csr/Zihpm/hpmcounter26h.yaml +69 -0
  497. data/.data/spec/std/isa/csr/Zihpm/hpmcounter27.yaml +67 -0
  498. data/.data/spec/std/isa/csr/Zihpm/hpmcounter27h.yaml +69 -0
  499. data/.data/spec/std/isa/csr/Zihpm/hpmcounter28.yaml +67 -0
  500. data/.data/spec/std/isa/csr/Zihpm/hpmcounter28h.yaml +69 -0
  501. data/.data/spec/std/isa/csr/Zihpm/hpmcounter29.yaml +67 -0
  502. data/.data/spec/std/isa/csr/Zihpm/hpmcounter29h.yaml +69 -0
  503. data/.data/spec/std/isa/csr/Zihpm/hpmcounter3.yaml +67 -0
  504. data/.data/spec/std/isa/csr/Zihpm/hpmcounter30.yaml +67 -0
  505. data/.data/spec/std/isa/csr/Zihpm/hpmcounter30h.yaml +69 -0
  506. data/.data/spec/std/isa/csr/Zihpm/hpmcounter31.yaml +67 -0
  507. data/.data/spec/std/isa/csr/Zihpm/hpmcounter31h.yaml +69 -0
  508. data/.data/spec/std/isa/csr/Zihpm/hpmcounter3h.yaml +69 -0
  509. data/.data/spec/std/isa/csr/Zihpm/hpmcounter4.yaml +67 -0
  510. data/.data/spec/std/isa/csr/Zihpm/hpmcounter4h.yaml +69 -0
  511. data/.data/spec/std/isa/csr/Zihpm/hpmcounter5.yaml +67 -0
  512. data/.data/spec/std/isa/csr/Zihpm/hpmcounter5h.yaml +69 -0
  513. data/.data/spec/std/isa/csr/Zihpm/hpmcounter6.yaml +67 -0
  514. data/.data/spec/std/isa/csr/Zihpm/hpmcounter6h.yaml +69 -0
  515. data/.data/spec/std/isa/csr/Zihpm/hpmcounter7.yaml +67 -0
  516. data/.data/spec/std/isa/csr/Zihpm/hpmcounter7h.yaml +69 -0
  517. data/.data/spec/std/isa/csr/Zihpm/hpmcounter8.yaml +67 -0
  518. data/.data/spec/std/isa/csr/Zihpm/hpmcounter8h.yaml +69 -0
  519. data/.data/spec/std/isa/csr/Zihpm/hpmcounter9.yaml +67 -0
  520. data/.data/spec/std/isa/csr/Zihpm/hpmcounter9h.yaml +69 -0
  521. data/.data/spec/std/isa/csr/Zihpm/hpmcounterN.layout +65 -0
  522. data/.data/spec/std/isa/csr/Zihpm/hpmcounterNh.layout +67 -0
  523. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +106 -0
  524. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +85 -0
  525. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +106 -0
  526. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +85 -0
  527. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +106 -0
  528. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +85 -0
  529. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +106 -0
  530. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +85 -0
  531. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +106 -0
  532. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +85 -0
  533. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +106 -0
  534. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +85 -0
  535. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +106 -0
  536. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +85 -0
  537. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +106 -0
  538. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +85 -0
  539. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +106 -0
  540. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +85 -0
  541. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +106 -0
  542. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +85 -0
  543. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +106 -0
  544. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +85 -0
  545. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +106 -0
  546. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +85 -0
  547. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +106 -0
  548. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +85 -0
  549. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +106 -0
  550. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +85 -0
  551. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +106 -0
  552. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +85 -0
  553. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +106 -0
  554. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +85 -0
  555. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +106 -0
  556. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +85 -0
  557. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +106 -0
  558. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +85 -0
  559. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +106 -0
  560. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +85 -0
  561. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +106 -0
  562. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +85 -0
  563. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +106 -0
  564. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +106 -0
  565. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +85 -0
  566. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +106 -0
  567. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +85 -0
  568. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +85 -0
  569. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +106 -0
  570. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +85 -0
  571. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +106 -0
  572. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +85 -0
  573. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +106 -0
  574. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +85 -0
  575. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +106 -0
  576. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +85 -0
  577. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +106 -0
  578. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +85 -0
  579. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +106 -0
  580. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +85 -0
  581. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +104 -0
  582. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +83 -0
  583. data/.data/spec/std/isa/csr/Zihpm/mhpmevent10.yaml +170 -0
  584. data/.data/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml +163 -0
  585. data/.data/spec/std/isa/csr/Zihpm/mhpmevent11.yaml +170 -0
  586. data/.data/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml +163 -0
  587. data/.data/spec/std/isa/csr/Zihpm/mhpmevent12.yaml +170 -0
  588. data/.data/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml +163 -0
  589. data/.data/spec/std/isa/csr/Zihpm/mhpmevent13.yaml +170 -0
  590. data/.data/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml +163 -0
  591. data/.data/spec/std/isa/csr/Zihpm/mhpmevent14.yaml +170 -0
  592. data/.data/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml +163 -0
  593. data/.data/spec/std/isa/csr/Zihpm/mhpmevent15.yaml +170 -0
  594. data/.data/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml +163 -0
  595. data/.data/spec/std/isa/csr/Zihpm/mhpmevent16.yaml +170 -0
  596. data/.data/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml +163 -0
  597. data/.data/spec/std/isa/csr/Zihpm/mhpmevent17.yaml +170 -0
  598. data/.data/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml +163 -0
  599. data/.data/spec/std/isa/csr/Zihpm/mhpmevent18.yaml +170 -0
  600. data/.data/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml +163 -0
  601. data/.data/spec/std/isa/csr/Zihpm/mhpmevent19.yaml +170 -0
  602. data/.data/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml +163 -0
  603. data/.data/spec/std/isa/csr/Zihpm/mhpmevent20.yaml +170 -0
  604. data/.data/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml +163 -0
  605. data/.data/spec/std/isa/csr/Zihpm/mhpmevent21.yaml +170 -0
  606. data/.data/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml +163 -0
  607. data/.data/spec/std/isa/csr/Zihpm/mhpmevent22.yaml +170 -0
  608. data/.data/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml +163 -0
  609. data/.data/spec/std/isa/csr/Zihpm/mhpmevent23.yaml +170 -0
  610. data/.data/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml +163 -0
  611. data/.data/spec/std/isa/csr/Zihpm/mhpmevent24.yaml +170 -0
  612. data/.data/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml +163 -0
  613. data/.data/spec/std/isa/csr/Zihpm/mhpmevent25.yaml +170 -0
  614. data/.data/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml +163 -0
  615. data/.data/spec/std/isa/csr/Zihpm/mhpmevent26.yaml +170 -0
  616. data/.data/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml +163 -0
  617. data/.data/spec/std/isa/csr/Zihpm/mhpmevent27.yaml +170 -0
  618. data/.data/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml +163 -0
  619. data/.data/spec/std/isa/csr/Zihpm/mhpmevent28.yaml +170 -0
  620. data/.data/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml +163 -0
  621. data/.data/spec/std/isa/csr/Zihpm/mhpmevent29.yaml +170 -0
  622. data/.data/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml +163 -0
  623. data/.data/spec/std/isa/csr/Zihpm/mhpmevent3.yaml +170 -0
  624. data/.data/spec/std/isa/csr/Zihpm/mhpmevent30.yaml +170 -0
  625. data/.data/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml +163 -0
  626. data/.data/spec/std/isa/csr/Zihpm/mhpmevent31.yaml +170 -0
  627. data/.data/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml +163 -0
  628. data/.data/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml +163 -0
  629. data/.data/spec/std/isa/csr/Zihpm/mhpmevent4.yaml +170 -0
  630. data/.data/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml +163 -0
  631. data/.data/spec/std/isa/csr/Zihpm/mhpmevent5.yaml +170 -0
  632. data/.data/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml +163 -0
  633. data/.data/spec/std/isa/csr/Zihpm/mhpmevent6.yaml +170 -0
  634. data/.data/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml +163 -0
  635. data/.data/spec/std/isa/csr/Zihpm/mhpmevent7.yaml +170 -0
  636. data/.data/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml +163 -0
  637. data/.data/spec/std/isa/csr/Zihpm/mhpmevent8.yaml +170 -0
  638. data/.data/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml +163 -0
  639. data/.data/spec/std/isa/csr/Zihpm/mhpmevent9.yaml +170 -0
  640. data/.data/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml +163 -0
  641. data/.data/spec/std/isa/csr/Zihpm/mhpmeventN.layout +168 -0
  642. data/.data/spec/std/isa/csr/Zihpm/mhpmeventNh.layout +161 -0
  643. data/.data/spec/std/isa/csr/cycle.yaml +79 -0
  644. data/.data/spec/std/isa/csr/cycleh.yaml +86 -0
  645. data/.data/spec/std/isa/csr/dcsr.yaml +293 -0
  646. data/.data/spec/std/isa/csr/dpc.yaml +45 -0
  647. data/.data/spec/std/isa/csr/dscratch0.yaml +28 -0
  648. data/.data/spec/std/isa/csr/dscratch1.yaml +28 -0
  649. data/.data/spec/std/isa/csr/hcontext.yaml +64 -0
  650. data/.data/spec/std/isa/csr/hedeleg.yaml +243 -0
  651. data/.data/spec/std/isa/csr/hedelegh.yaml +23 -0
  652. data/.data/spec/std/isa/csr/hstateen0.yaml +220 -0
  653. data/.data/spec/std/isa/csr/hstateen0h.yaml +159 -0
  654. data/.data/spec/std/isa/csr/hstateen1.yaml +70 -0
  655. data/.data/spec/std/isa/csr/hstateen1h.yaml +47 -0
  656. data/.data/spec/std/isa/csr/hstateen2.yaml +70 -0
  657. data/.data/spec/std/isa/csr/hstateen2h.yaml +47 -0
  658. data/.data/spec/std/isa/csr/hstateen3.yaml +70 -0
  659. data/.data/spec/std/isa/csr/hstateen3h.yaml +47 -0
  660. data/.data/spec/std/isa/csr/hstatus.yaml +246 -0
  661. data/.data/spec/std/isa/csr/instret.yaml +77 -0
  662. data/.data/spec/std/isa/csr/instreth.yaml +81 -0
  663. data/.data/spec/std/isa/csr/jvt.yaml +89 -0
  664. data/.data/spec/std/isa/csr/marchid.yaml +58 -0
  665. data/.data/spec/std/isa/csr/mcause.yaml +94 -0
  666. data/.data/spec/std/isa/csr/mconfigptr.yaml +61 -0
  667. data/.data/spec/std/isa/csr/mcontext.yaml +55 -0
  668. data/.data/spec/std/isa/csr/mcycle.yaml +67 -0
  669. data/.data/spec/std/isa/csr/mcycleh.yaml +40 -0
  670. data/.data/spec/std/isa/csr/medeleg.yaml +672 -0
  671. data/.data/spec/std/isa/csr/medelegh.yaml +22 -0
  672. data/.data/spec/std/isa/csr/menvcfg.yaml +305 -0
  673. data/.data/spec/std/isa/csr/menvcfgh.yaml +59 -0
  674. data/.data/spec/std/isa/csr/mepc.yaml +54 -0
  675. data/.data/spec/std/isa/csr/mhartid.yaml +26 -0
  676. data/.data/spec/std/isa/csr/mideleg.yaml +204 -0
  677. data/.data/spec/std/isa/csr/mie.yaml +105 -0
  678. data/.data/spec/std/isa/csr/mimpid.yaml +41 -0
  679. data/.data/spec/std/isa/csr/minstret.yaml +54 -0
  680. data/.data/spec/std/isa/csr/minstreth.yaml +39 -0
  681. data/.data/spec/std/isa/csr/mip.yaml +434 -0
  682. data/.data/spec/std/isa/csr/misa.yaml +263 -0
  683. data/.data/spec/std/isa/csr/mscontext.yaml +42 -0
  684. data/.data/spec/std/isa/csr/mscratch.yaml +24 -0
  685. data/.data/spec/std/isa/csr/mseccfg.yaml +25 -0
  686. data/.data/spec/std/isa/csr/mseccfgh.yaml +28 -0
  687. data/.data/spec/std/isa/csr/mstateen0.yaml +182 -0
  688. data/.data/spec/std/isa/csr/mstateen0h.yaml +151 -0
  689. data/.data/spec/std/isa/csr/mstateen1.yaml +65 -0
  690. data/.data/spec/std/isa/csr/mstateen1h.yaml +37 -0
  691. data/.data/spec/std/isa/csr/mstateen2.yaml +65 -0
  692. data/.data/spec/std/isa/csr/mstateen2h.yaml +37 -0
  693. data/.data/spec/std/isa/csr/mstateen3.yaml +65 -0
  694. data/.data/spec/std/isa/csr/mstateen3h.yaml +37 -0
  695. data/.data/spec/std/isa/csr/mstatus.yaml +626 -0
  696. data/.data/spec/std/isa/csr/mstatush.yaml +88 -0
  697. data/.data/spec/std/isa/csr/mtval.yaml +105 -0
  698. data/.data/spec/std/isa/csr/mtvec.yaml +111 -0
  699. data/.data/spec/std/isa/csr/mvendorid.yaml +28 -0
  700. data/.data/spec/std/isa/csr/satp.yaml +184 -0
  701. data/.data/spec/std/isa/csr/scause.yaml +96 -0
  702. data/.data/spec/std/isa/csr/schema.adoc +223 -0
  703. data/.data/spec/std/isa/csr/scontext.yaml +52 -0
  704. data/.data/spec/std/isa/csr/senvcfg.yaml +157 -0
  705. data/.data/spec/std/isa/csr/sepc.yaml +51 -0
  706. data/.data/spec/std/isa/csr/sie.yaml +49 -0
  707. data/.data/spec/std/isa/csr/sip.yaml +160 -0
  708. data/.data/spec/std/isa/csr/sscratch.yaml +23 -0
  709. data/.data/spec/std/isa/csr/sstateen0.yaml +134 -0
  710. data/.data/spec/std/isa/csr/sstateen1.yaml +96 -0
  711. data/.data/spec/std/isa/csr/sstateen2.yaml +96 -0
  712. data/.data/spec/std/isa/csr/sstateen3.yaml +96 -0
  713. data/.data/spec/std/isa/csr/sstatus.yaml +149 -0
  714. data/.data/spec/std/isa/csr/stval.yaml +103 -0
  715. data/.data/spec/std/isa/csr/stvec.yaml +54 -0
  716. data/.data/spec/std/isa/csr/tdata1.yaml +68 -0
  717. data/.data/spec/std/isa/csr/tdata2.yaml +32 -0
  718. data/.data/spec/std/isa/csr/tdata3.yaml +32 -0
  719. data/.data/spec/std/isa/csr/time.yaml +89 -0
  720. data/.data/spec/std/isa/csr/timeh.yaml +90 -0
  721. data/.data/spec/std/isa/csr/tselect.yaml +36 -0
  722. data/.data/spec/std/isa/csr/vscause.yaml +97 -0
  723. data/.data/spec/std/isa/csr/vsepc.yaml +52 -0
  724. data/.data/spec/std/isa/csr/vsstatus.yaml +232 -0
  725. data/.data/spec/std/isa/csr/vstval.yaml +105 -0
  726. data/.data/spec/std/isa/csr/vstvec.yaml +55 -0
  727. data/.data/spec/std/isa/exception_code/Breakpoint.yaml +13 -0
  728. data/.data/spec/std/isa/exception_code/DoubleTrap.yaml +13 -0
  729. data/.data/spec/std/isa/exception_code/HardwareError.yaml +14 -0
  730. data/.data/spec/std/isa/exception_code/IllegalInstruction.yaml +13 -0
  731. data/.data/spec/std/isa/exception_code/InstructionAccessFault.yaml +13 -0
  732. data/.data/spec/std/isa/exception_code/InstructionAddressMisaligned.yaml +13 -0
  733. data/.data/spec/std/isa/exception_code/InstructionGuestPageFault.yaml +13 -0
  734. data/.data/spec/std/isa/exception_code/InstructionPageFault.yaml +13 -0
  735. data/.data/spec/std/isa/exception_code/LoadAccessFault.yaml +13 -0
  736. data/.data/spec/std/isa/exception_code/LoadAddressMisaligned.yaml +13 -0
  737. data/.data/spec/std/isa/exception_code/LoadGuestPageFault.yaml +13 -0
  738. data/.data/spec/std/isa/exception_code/LoadPageFault.yaml +13 -0
  739. data/.data/spec/std/isa/exception_code/Mcall.yaml +13 -0
  740. data/.data/spec/std/isa/exception_code/Scall.yaml +13 -0
  741. data/.data/spec/std/isa/exception_code/SoftwareCheck.yaml +14 -0
  742. data/.data/spec/std/isa/exception_code/StoreAmoAccessFault.yaml +13 -0
  743. data/.data/spec/std/isa/exception_code/StoreAmoAddressMisaligned.yaml +13 -0
  744. data/.data/spec/std/isa/exception_code/StoreAmoGuestPageFault.yaml +13 -0
  745. data/.data/spec/std/isa/exception_code/StoreAmoPageFault.yaml +13 -0
  746. data/.data/spec/std/isa/exception_code/Ucall.yaml +13 -0
  747. data/.data/spec/std/isa/exception_code/VScall.yaml +13 -0
  748. data/.data/spec/std/isa/exception_code/VirtualInstruction.yaml +13 -0
  749. data/.data/spec/std/isa/ext/A.yaml +79 -0
  750. data/.data/spec/std/isa/ext/B.yaml +41 -0
  751. data/.data/spec/std/isa/ext/C.yaml +318 -0
  752. data/.data/spec/std/isa/ext/D.yaml +109 -0
  753. data/.data/spec/std/isa/ext/F.yaml +243 -0
  754. data/.data/spec/std/isa/ext/H.yaml +126 -0
  755. data/.data/spec/std/isa/ext/I.yaml +18 -0
  756. data/.data/spec/std/isa/ext/M.yaml +26 -0
  757. data/.data/spec/std/isa/ext/Q.yaml +26 -0
  758. data/.data/spec/std/isa/ext/S.yaml +41 -0
  759. data/.data/spec/std/isa/ext/Sdext.yaml +16 -0
  760. data/.data/spec/std/isa/ext/Sdtrig.yaml +33 -0
  761. data/.data/spec/std/isa/ext/Sha.yaml +69 -0
  762. data/.data/spec/std/isa/ext/Shcounterenw.yaml +29 -0
  763. data/.data/spec/std/isa/ext/Shgatpa.yaml +42 -0
  764. data/.data/spec/std/isa/ext/Shtvala.yaml +29 -0
  765. data/.data/spec/std/isa/ext/Shvsatpa.yaml +19 -0
  766. data/.data/spec/std/isa/ext/Shvstvala.yaml +61 -0
  767. data/.data/spec/std/isa/ext/Shvstvecd.yaml +26 -0
  768. data/.data/spec/std/isa/ext/Sm.yaml +104 -0
  769. data/.data/spec/std/isa/ext/Smaia.yaml +16 -0
  770. data/.data/spec/std/isa/ext/Smcdeleg.yaml +40 -0
  771. data/.data/spec/std/isa/ext/Smcntrpmf.yaml +16 -0
  772. data/.data/spec/std/isa/ext/Smcsrind.yaml +45 -0
  773. data/.data/spec/std/isa/ext/Smctr.yaml +58 -0
  774. data/.data/spec/std/isa/ext/Smdbltrp.yaml +25 -0
  775. data/.data/spec/std/isa/ext/Smepmp.yaml +36 -0
  776. data/.data/spec/std/isa/ext/Smhpm.yaml +29 -0
  777. data/.data/spec/std/isa/ext/Smmpm.yaml +16 -0
  778. data/.data/spec/std/isa/ext/Smnpm.yaml +17 -0
  779. data/.data/spec/std/isa/ext/Smpmp.yaml +42 -0
  780. data/.data/spec/std/isa/ext/Smrnmi.yaml +24 -0
  781. data/.data/spec/std/isa/ext/Smstateen.yaml +28 -0
  782. data/.data/spec/std/isa/ext/Ssaia.yaml +20 -0
  783. data/.data/spec/std/isa/ext/Ssccfg.yaml +16 -0
  784. data/.data/spec/std/isa/ext/Ssccptr.yaml +26 -0
  785. data/.data/spec/std/isa/ext/Sscofpmf.yaml +19 -0
  786. data/.data/spec/std/isa/ext/Sscounterenw.yaml +30 -0
  787. data/.data/spec/std/isa/ext/Sscsrind.yaml +48 -0
  788. data/.data/spec/std/isa/ext/Ssctr.yaml +23 -0
  789. data/.data/spec/std/isa/ext/Ssdbltrp.yaml +25 -0
  790. data/.data/spec/std/isa/ext/Ssnpm.yaml +17 -0
  791. data/.data/spec/std/isa/ext/Sspm.yaml +23 -0
  792. data/.data/spec/std/isa/ext/Ssqosid.yaml +40 -0
  793. data/.data/spec/std/isa/ext/Ssstateen.yaml +31 -0
  794. data/.data/spec/std/isa/ext/Ssstrict.yaml +52 -0
  795. data/.data/spec/std/isa/ext/Sstc.yaml +16 -0
  796. data/.data/spec/std/isa/ext/Sstvala.yaml +57 -0
  797. data/.data/spec/std/isa/ext/Sstvecd.yaml +29 -0
  798. data/.data/spec/std/isa/ext/Sstvecv.yaml +30 -0
  799. data/.data/spec/std/isa/ext/Ssu32xl.yaml +22 -0
  800. data/.data/spec/std/isa/ext/Ssu64xl.yaml +23 -0
  801. data/.data/spec/std/isa/ext/Ssube.yaml +25 -0
  802. data/.data/spec/std/isa/ext/Supm.yaml +23 -0
  803. data/.data/spec/std/isa/ext/Sv32.yaml +34 -0
  804. data/.data/spec/std/isa/ext/Sv39.yaml +34 -0
  805. data/.data/spec/std/isa/ext/Sv48.yaml +34 -0
  806. data/.data/spec/std/isa/ext/Sv57.yaml +34 -0
  807. data/.data/spec/std/isa/ext/Svade.yaml +53 -0
  808. data/.data/spec/std/isa/ext/Svadu.yaml +136 -0
  809. data/.data/spec/std/isa/ext/Svbare.yaml +28 -0
  810. data/.data/spec/std/isa/ext/Svinval.yaml +86 -0
  811. data/.data/spec/std/isa/ext/Svnapot.yaml +183 -0
  812. data/.data/spec/std/isa/ext/Svpbmt.yaml +29 -0
  813. data/.data/spec/std/isa/ext/Svrsw60t59b.yaml +39 -0
  814. data/.data/spec/std/isa/ext/Svvptc.yaml +37 -0
  815. data/.data/spec/std/isa/ext/U.yaml +17 -0
  816. data/.data/spec/std/isa/ext/V.yaml +21 -0
  817. data/.data/spec/std/isa/ext/Xmock.yaml +30 -0
  818. data/.data/spec/std/isa/ext/Za128rs.yaml +30 -0
  819. data/.data/spec/std/isa/ext/Za64rs.yaml +32 -0
  820. data/.data/spec/std/isa/ext/Zaamo.yaml +136 -0
  821. data/.data/spec/std/isa/ext/Zabha.yaml +19 -0
  822. data/.data/spec/std/isa/ext/Zacas.yaml +19 -0
  823. data/.data/spec/std/isa/ext/Zalasr.yaml +16 -0
  824. data/.data/spec/std/isa/ext/Zalrsc.yaml +316 -0
  825. data/.data/spec/std/isa/ext/Zama16b.yaml +24 -0
  826. data/.data/spec/std/isa/ext/Zawrs.yaml +25 -0
  827. data/.data/spec/std/isa/ext/Zba.yaml +66 -0
  828. data/.data/spec/std/isa/ext/Zbb.yaml +54 -0
  829. data/.data/spec/std/isa/ext/Zbc.yaml +54 -0
  830. data/.data/spec/std/isa/ext/Zbkb.yaml +18 -0
  831. data/.data/spec/std/isa/ext/Zbkc.yaml +23 -0
  832. data/.data/spec/std/isa/ext/Zbkx.yaml +24 -0
  833. data/.data/spec/std/isa/ext/Zbs.yaml +59 -0
  834. data/.data/spec/std/isa/ext/Zca.yaml +46 -0
  835. data/.data/spec/std/isa/ext/Zcb.yaml +45 -0
  836. data/.data/spec/std/isa/ext/Zcd.yaml +47 -0
  837. data/.data/spec/std/isa/ext/Zce.yaml +99 -0
  838. data/.data/spec/std/isa/ext/Zcf.yaml +46 -0
  839. data/.data/spec/std/isa/ext/Zclsd.yaml +28 -0
  840. data/.data/spec/std/isa/ext/Zcmop.yaml +58 -0
  841. data/.data/spec/std/isa/ext/Zcmp.yaml +100 -0
  842. data/.data/spec/std/isa/ext/Zcmt.yaml +75 -0
  843. data/.data/spec/std/isa/ext/Zdinx.yaml +49 -0
  844. data/.data/spec/std/isa/ext/Zfa.yaml +24 -0
  845. data/.data/spec/std/isa/ext/Zfbfmin.yaml +27 -0
  846. data/.data/spec/std/isa/ext/Zfh.yaml +24 -0
  847. data/.data/spec/std/isa/ext/Zfhmin.yaml +55 -0
  848. data/.data/spec/std/isa/ext/Zfinx.yaml +56 -0
  849. data/.data/spec/std/isa/ext/Zhinx.yaml +26 -0
  850. data/.data/spec/std/isa/ext/Zhinxmin.yaml +29 -0
  851. data/.data/spec/std/isa/ext/Zic64b.yaml +31 -0
  852. data/.data/spec/std/isa/ext/Zicbom.yaml +15 -0
  853. data/.data/spec/std/isa/ext/Zicbop.yaml +15 -0
  854. data/.data/spec/std/isa/ext/Zicboz.yaml +15 -0
  855. data/.data/spec/std/isa/ext/Ziccamoa.yaml +19 -0
  856. data/.data/spec/std/isa/ext/Ziccamoc.yaml +23 -0
  857. data/.data/spec/std/isa/ext/Ziccif.yaml +21 -0
  858. data/.data/spec/std/isa/ext/Zicclsm.yaml +31 -0
  859. data/.data/spec/std/isa/ext/Ziccrse.yaml +19 -0
  860. data/.data/spec/std/isa/ext/Zicfilp.yaml +16 -0
  861. data/.data/spec/std/isa/ext/Zicfiss.yaml +16 -0
  862. data/.data/spec/std/isa/ext/Zicntr.yaml +20 -0
  863. data/.data/spec/std/isa/ext/Zicond.yaml +24 -0
  864. data/.data/spec/std/isa/ext/Zicsr.yaml +15 -0
  865. data/.data/spec/std/isa/ext/Zifencei.yaml +75 -0
  866. data/.data/spec/std/isa/ext/Zihintntl.yaml +201 -0
  867. data/.data/spec/std/isa/ext/Zihintpause.yaml +76 -0
  868. data/.data/spec/std/isa/ext/Zihpm.yaml +18 -0
  869. data/.data/spec/std/isa/ext/Zilsd.yaml +20 -0
  870. data/.data/spec/std/isa/ext/Zimop.yaml +70 -0
  871. data/.data/spec/std/isa/ext/Zk.yaml +42 -0
  872. data/.data/spec/std/isa/ext/Zkn.yaml +57 -0
  873. data/.data/spec/std/isa/ext/Zknd.yaml +19 -0
  874. data/.data/spec/std/isa/ext/Zkne.yaml +19 -0
  875. data/.data/spec/std/isa/ext/Zknh.yaml +19 -0
  876. data/.data/spec/std/isa/ext/Zkr.yaml +20 -0
  877. data/.data/spec/std/isa/ext/Zks.yaml +53 -0
  878. data/.data/spec/std/isa/ext/Zksed.yaml +20 -0
  879. data/.data/spec/std/isa/ext/Zksh.yaml +19 -0
  880. data/.data/spec/std/isa/ext/Zkt.yaml +365 -0
  881. data/.data/spec/std/isa/ext/Zmmul.yaml +28 -0
  882. data/.data/spec/std/isa/ext/Ztso.yaml +23 -0
  883. data/.data/spec/std/isa/ext/Zvbb.yaml +20 -0
  884. data/.data/spec/std/isa/ext/Zvbc.yaml +19 -0
  885. data/.data/spec/std/isa/ext/Zve32f.yaml +34 -0
  886. data/.data/spec/std/isa/ext/Zve32x.yaml +38 -0
  887. data/.data/spec/std/isa/ext/Zve64d.yaml +35 -0
  888. data/.data/spec/std/isa/ext/Zve64f.yaml +33 -0
  889. data/.data/spec/std/isa/ext/Zve64x.yaml +35 -0
  890. data/.data/spec/std/isa/ext/Zvfbfmin.yaml +23 -0
  891. data/.data/spec/std/isa/ext/Zvfbfwma.yaml +23 -0
  892. data/.data/spec/std/isa/ext/Zvfh.yaml +43 -0
  893. data/.data/spec/std/isa/ext/Zvfhmin.yaml +26 -0
  894. data/.data/spec/std/isa/ext/Zvkb.yaml +16 -0
  895. data/.data/spec/std/isa/ext/Zvkg.yaml +26 -0
  896. data/.data/spec/std/isa/ext/Zvkn.yaml +32 -0
  897. data/.data/spec/std/isa/ext/Zvknc.yaml +27 -0
  898. data/.data/spec/std/isa/ext/Zvkned.yaml +22 -0
  899. data/.data/spec/std/isa/ext/Zvkng.yaml +27 -0
  900. data/.data/spec/std/isa/ext/Zvknha.yaml +17 -0
  901. data/.data/spec/std/isa/ext/Zvknhb.yaml +21 -0
  902. data/.data/spec/std/isa/ext/Zvks.yaml +32 -0
  903. data/.data/spec/std/isa/ext/Zvksc.yaml +27 -0
  904. data/.data/spec/std/isa/ext/Zvksed.yaml +24 -0
  905. data/.data/spec/std/isa/ext/Zvksg.yaml +27 -0
  906. data/.data/spec/std/isa/ext/Zvksh.yaml +20 -0
  907. data/.data/spec/std/isa/ext/Zvkt.yaml +28 -0
  908. data/.data/spec/std/isa/ext/Zvl1024b.yaml +30 -0
  909. data/.data/spec/std/isa/ext/Zvl128b.yaml +31 -0
  910. data/.data/spec/std/isa/ext/Zvl256b.yaml +30 -0
  911. data/.data/spec/std/isa/ext/Zvl32b.yaml +28 -0
  912. data/.data/spec/std/isa/ext/Zvl512b.yaml +30 -0
  913. data/.data/spec/std/isa/ext/Zvl64b.yaml +31 -0
  914. data/.data/spec/std/isa/inst/B/andn.yaml +69 -0
  915. data/.data/spec/std/isa/inst/B/clmul.yaml +66 -0
  916. data/.data/spec/std/isa/inst/B/clmulh.yaml +66 -0
  917. data/.data/spec/std/isa/inst/B/orn.yaml +68 -0
  918. data/.data/spec/std/isa/inst/B/rev8.yaml +77 -0
  919. data/.data/spec/std/isa/inst/B/rol.yaml +70 -0
  920. data/.data/spec/std/isa/inst/B/rolw.yaml +65 -0
  921. data/.data/spec/std/isa/inst/B/ror.yaml +70 -0
  922. data/.data/spec/std/isa/inst/B/rori.yaml +66 -0
  923. data/.data/spec/std/isa/inst/B/roriw.yaml +58 -0
  924. data/.data/spec/std/isa/inst/B/rorw.yaml +65 -0
  925. data/.data/spec/std/isa/inst/B/xnor.yaml +68 -0
  926. data/.data/spec/std/isa/inst/C/c.add.yaml +52 -0
  927. data/.data/spec/std/isa/inst/C/c.addi.yaml +38 -0
  928. data/.data/spec/std/isa/inst/C/c.addi16sp.yaml +36 -0
  929. data/.data/spec/std/isa/inst/C/c.addi4spn.yaml +38 -0
  930. data/.data/spec/std/isa/inst/C/c.addiw.yaml +39 -0
  931. data/.data/spec/std/isa/inst/C/c.addw.yaml +55 -0
  932. data/.data/spec/std/isa/inst/C/c.and.yaml +64 -0
  933. data/.data/spec/std/isa/inst/C/c.andi.yaml +53 -0
  934. data/.data/spec/std/isa/inst/C/c.beqz.yaml +75 -0
  935. data/.data/spec/std/isa/inst/C/c.bnez.yaml +75 -0
  936. data/.data/spec/std/isa/inst/C/c.ebreak.yaml +53 -0
  937. data/.data/spec/std/isa/inst/C/c.j.yaml +34 -0
  938. data/.data/spec/std/isa/inst/C/c.jal.yaml +39 -0
  939. data/.data/spec/std/isa/inst/C/c.jalr.yaml +37 -0
  940. data/.data/spec/std/isa/inst/C/c.jr.yaml +33 -0
  941. data/.data/spec/std/isa/inst/C/c.ld.yaml +101 -0
  942. data/.data/spec/std/isa/inst/C/c.ldsp.yaml +64 -0
  943. data/.data/spec/std/isa/inst/C/c.li.yaml +36 -0
  944. data/.data/spec/std/isa/inst/C/c.lui.yaml +38 -0
  945. data/.data/spec/std/isa/inst/C/c.lw.yaml +74 -0
  946. data/.data/spec/std/isa/inst/C/c.lwsp.yaml +41 -0
  947. data/.data/spec/std/isa/inst/C/c.mv.yaml +48 -0
  948. data/.data/spec/std/isa/inst/C/c.nop.yaml +26 -0
  949. data/.data/spec/std/isa/inst/C/c.or.yaml +64 -0
  950. data/.data/spec/std/isa/inst/C/c.sd.yaml +67 -0
  951. data/.data/spec/std/isa/inst/C/c.sdsp.yaml +63 -0
  952. data/.data/spec/std/isa/inst/C/c.slli.yaml +65 -0
  953. data/.data/spec/std/isa/inst/C/c.srai.yaml +66 -0
  954. data/.data/spec/std/isa/inst/C/c.srli.yaml +66 -0
  955. data/.data/spec/std/isa/inst/C/c.sub.yaml +64 -0
  956. data/.data/spec/std/isa/inst/C/c.subw.yaml +55 -0
  957. data/.data/spec/std/isa/inst/C/c.sw.yaml +41 -0
  958. data/.data/spec/std/isa/inst/C/c.swsp.yaml +39 -0
  959. data/.data/spec/std/isa/inst/C/c.xor.yaml +64 -0
  960. data/.data/spec/std/isa/inst/D/fadd.d.yaml +36 -0
  961. data/.data/spec/std/isa/inst/D/fclass.d.yaml +53 -0
  962. data/.data/spec/std/isa/inst/D/fcvt.d.l.yaml +36 -0
  963. data/.data/spec/std/isa/inst/D/fcvt.d.lu.yaml +36 -0
  964. data/.data/spec/std/isa/inst/D/fcvt.d.s.yaml +36 -0
  965. data/.data/spec/std/isa/inst/D/fcvt.d.w.yaml +35 -0
  966. data/.data/spec/std/isa/inst/D/fcvt.d.wu.yaml +35 -0
  967. data/.data/spec/std/isa/inst/D/fcvt.l.d.yaml +36 -0
  968. data/.data/spec/std/isa/inst/D/fcvt.lu.d.yaml +36 -0
  969. data/.data/spec/std/isa/inst/D/fcvt.s.d.yaml +36 -0
  970. data/.data/spec/std/isa/inst/D/fcvt.w.d.yaml +34 -0
  971. data/.data/spec/std/isa/inst/D/fcvt.wu.d.yaml +34 -0
  972. data/.data/spec/std/isa/inst/D/fcvtmod.w.d.yaml +42 -0
  973. data/.data/spec/std/isa/inst/D/fdiv.d.yaml +36 -0
  974. data/.data/spec/std/isa/inst/D/feq.d.yaml +34 -0
  975. data/.data/spec/std/isa/inst/D/fld.yaml +34 -0
  976. data/.data/spec/std/isa/inst/D/fle.d.yaml +34 -0
  977. data/.data/spec/std/isa/inst/D/fleq.d.yaml +34 -0
  978. data/.data/spec/std/isa/inst/D/fli.d.yaml +32 -0
  979. data/.data/spec/std/isa/inst/D/flt.d.yaml +34 -0
  980. data/.data/spec/std/isa/inst/D/fltq.d.yaml +34 -0
  981. data/.data/spec/std/isa/inst/D/fmadd.d.yaml +37 -0
  982. data/.data/spec/std/isa/inst/D/fmax.d.yaml +36 -0
  983. data/.data/spec/std/isa/inst/D/fmaxm.d.yaml +34 -0
  984. data/.data/spec/std/isa/inst/D/fmin.d.yaml +36 -0
  985. data/.data/spec/std/isa/inst/D/fminm.d.yaml +34 -0
  986. data/.data/spec/std/isa/inst/D/fmsub.d.yaml +37 -0
  987. data/.data/spec/std/isa/inst/D/fmul.d.yaml +37 -0
  988. data/.data/spec/std/isa/inst/D/fmv.d.x.yaml +32 -0
  989. data/.data/spec/std/isa/inst/D/fmv.x.d.yaml +32 -0
  990. data/.data/spec/std/isa/inst/D/fmvh.x.d.yaml +35 -0
  991. data/.data/spec/std/isa/inst/D/fmvp.d.x.yaml +37 -0
  992. data/.data/spec/std/isa/inst/D/fnmadd.d.yaml +38 -0
  993. data/.data/spec/std/isa/inst/D/fnmsub.d.yaml +38 -0
  994. data/.data/spec/std/isa/inst/D/fround.d.yaml +38 -0
  995. data/.data/spec/std/isa/inst/D/froundnx.d.yaml +34 -0
  996. data/.data/spec/std/isa/inst/D/fsd.yaml +33 -0
  997. data/.data/spec/std/isa/inst/D/fsgnj.d.yaml +36 -0
  998. data/.data/spec/std/isa/inst/D/fsgnjn.d.yaml +36 -0
  999. data/.data/spec/std/isa/inst/D/fsgnjx.d.yaml +36 -0
  1000. data/.data/spec/std/isa/inst/D/fsqrt.d.yaml +35 -0
  1001. data/.data/spec/std/isa/inst/D/fsub.d.yaml +36 -0
  1002. data/.data/spec/std/isa/inst/F/fadd.s.yaml +63 -0
  1003. data/.data/spec/std/isa/inst/F/fclass.s.yaml +90 -0
  1004. data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +56 -0
  1005. data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +56 -0
  1006. data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +56 -0
  1007. data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +55 -0
  1008. data/.data/spec/std/isa/inst/F/fcvt.s.w.yaml +67 -0
  1009. data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +66 -0
  1010. data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +85 -0
  1011. data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +83 -0
  1012. data/.data/spec/std/isa/inst/F/fdiv.s.yaml +60 -0
  1013. data/.data/spec/std/isa/inst/F/feq.s.yaml +68 -0
  1014. data/.data/spec/std/isa/inst/F/fle.s.yaml +68 -0
  1015. data/.data/spec/std/isa/inst/F/fleq.s.yaml +50 -0
  1016. data/.data/spec/std/isa/inst/F/flt.s.yaml +70 -0
  1017. data/.data/spec/std/isa/inst/F/fltq.s.yaml +50 -0
  1018. data/.data/spec/std/isa/inst/F/flw.yaml +80 -0
  1019. data/.data/spec/std/isa/inst/F/fmadd.s.yaml +63 -0
  1020. data/.data/spec/std/isa/inst/F/fmax.s.yaml +59 -0
  1021. data/.data/spec/std/isa/inst/F/fmin.s.yaml +59 -0
  1022. data/.data/spec/std/isa/inst/F/fmsub.s.yaml +63 -0
  1023. data/.data/spec/std/isa/inst/F/fmul.s.yaml +60 -0
  1024. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +55 -0
  1025. data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +48 -0
  1026. data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +64 -0
  1027. data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +64 -0
  1028. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +68 -0
  1029. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +67 -0
  1030. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +66 -0
  1031. data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +53 -0
  1032. data/.data/spec/std/isa/inst/F/fsub.s.yaml +61 -0
  1033. data/.data/spec/std/isa/inst/F/fsw.yaml +82 -0
  1034. data/.data/spec/std/isa/inst/H/hfence.gvma.yaml +33 -0
  1035. data/.data/spec/std/isa/inst/H/hfence.vvma.yaml +34 -0
  1036. data/.data/spec/std/isa/inst/H/hlv.b.yaml +30 -0
  1037. data/.data/spec/std/isa/inst/H/hlv.bu.yaml +30 -0
  1038. data/.data/spec/std/isa/inst/H/hlv.d.yaml +32 -0
  1039. data/.data/spec/std/isa/inst/H/hlv.h.yaml +30 -0
  1040. data/.data/spec/std/isa/inst/H/hlv.hu.yaml +30 -0
  1041. data/.data/spec/std/isa/inst/H/hlv.w.yaml +30 -0
  1042. data/.data/spec/std/isa/inst/H/hlv.wu.yaml +32 -0
  1043. data/.data/spec/std/isa/inst/H/hlvx.hu.yaml +32 -0
  1044. data/.data/spec/std/isa/inst/H/hlvx.wu.yaml +32 -0
  1045. data/.data/spec/std/isa/inst/H/hsv.b.yaml +30 -0
  1046. data/.data/spec/std/isa/inst/H/hsv.d.yaml +32 -0
  1047. data/.data/spec/std/isa/inst/H/hsv.h.yaml +30 -0
  1048. data/.data/spec/std/isa/inst/H/hsv.w.yaml +30 -0
  1049. data/.data/spec/std/isa/inst/I/add.yaml +68 -0
  1050. data/.data/spec/std/isa/inst/I/addi.yaml +58 -0
  1051. data/.data/spec/std/isa/inst/I/addiw.yaml +50 -0
  1052. data/.data/spec/std/isa/inst/I/addw.yaml +57 -0
  1053. data/.data/spec/std/isa/inst/I/and.yaml +61 -0
  1054. data/.data/spec/std/isa/inst/I/andi.yaml +54 -0
  1055. data/.data/spec/std/isa/inst/I/auipc.yaml +47 -0
  1056. data/.data/spec/std/isa/inst/I/beq.yaml +82 -0
  1057. data/.data/spec/std/isa/inst/I/bge.yaml +84 -0
  1058. data/.data/spec/std/isa/inst/I/bgeu.yaml +79 -0
  1059. data/.data/spec/std/isa/inst/I/blt.yaml +84 -0
  1060. data/.data/spec/std/isa/inst/I/bltu.yaml +79 -0
  1061. data/.data/spec/std/isa/inst/I/bne.yaml +82 -0
  1062. data/.data/spec/std/isa/inst/I/ebreak.yaml +50 -0
  1063. data/.data/spec/std/isa/inst/I/ecall.yaml +81 -0
  1064. data/.data/spec/std/isa/inst/I/fence.tso.yaml +52 -0
  1065. data/.data/spec/std/isa/inst/I/fence.yaml +224 -0
  1066. data/.data/spec/std/isa/inst/I/jal.yaml +69 -0
  1067. data/.data/spec/std/isa/inst/I/jalr.yaml +79 -0
  1068. data/.data/spec/std/isa/inst/I/lb.yaml +68 -0
  1069. data/.data/spec/std/isa/inst/I/lbu.yaml +68 -0
  1070. data/.data/spec/std/isa/inst/I/ld.yaml +98 -0
  1071. data/.data/spec/std/isa/inst/I/lh.yaml +68 -0
  1072. data/.data/spec/std/isa/inst/I/lhu.yaml +68 -0
  1073. data/.data/spec/std/isa/inst/I/lui.yaml +45 -0
  1074. data/.data/spec/std/isa/inst/I/lw.yaml +68 -0
  1075. data/.data/spec/std/isa/inst/I/lwu.yaml +70 -0
  1076. data/.data/spec/std/isa/inst/I/mret.yaml +61 -0
  1077. data/.data/spec/std/isa/inst/I/or.yaml +61 -0
  1078. data/.data/spec/std/isa/inst/I/ori.yaml +56 -0
  1079. data/.data/spec/std/isa/inst/I/sb.yaml +82 -0
  1080. data/.data/spec/std/isa/inst/I/sd.yaml +110 -0
  1081. data/.data/spec/std/isa/inst/I/sh.yaml +82 -0
  1082. data/.data/spec/std/isa/inst/I/sll.yaml +67 -0
  1083. data/.data/spec/std/isa/inst/I/slli.yaml +66 -0
  1084. data/.data/spec/std/isa/inst/I/slliw.yaml +53 -0
  1085. data/.data/spec/std/isa/inst/I/sllw.yaml +53 -0
  1086. data/.data/spec/std/isa/inst/I/slt.yaml +72 -0
  1087. data/.data/spec/std/isa/inst/I/slti.yaml +54 -0
  1088. data/.data/spec/std/isa/inst/I/sltiu.yaml +62 -0
  1089. data/.data/spec/std/isa/inst/I/sltu.yaml +67 -0
  1090. data/.data/spec/std/isa/inst/I/sra.yaml +67 -0
  1091. data/.data/spec/std/isa/inst/I/srai.yaml +68 -0
  1092. data/.data/spec/std/isa/inst/I/sraiw.yaml +54 -0
  1093. data/.data/spec/std/isa/inst/I/sraw.yaml +56 -0
  1094. data/.data/spec/std/isa/inst/I/srl.yaml +67 -0
  1095. data/.data/spec/std/isa/inst/I/srli.yaml +65 -0
  1096. data/.data/spec/std/isa/inst/I/srliw.yaml +55 -0
  1097. data/.data/spec/std/isa/inst/I/srlw.yaml +53 -0
  1098. data/.data/spec/std/isa/inst/I/sub.yaml +67 -0
  1099. data/.data/spec/std/isa/inst/I/subw.yaml +60 -0
  1100. data/.data/spec/std/isa/inst/I/sw.yaml +82 -0
  1101. data/.data/spec/std/isa/inst/I/wfi.yaml +131 -0
  1102. data/.data/spec/std/isa/inst/I/xor.yaml +61 -0
  1103. data/.data/spec/std/isa/inst/I/xori.yaml +56 -0
  1104. data/.data/spec/std/isa/inst/M/div.yaml +82 -0
  1105. data/.data/spec/std/isa/inst/M/divu.yaml +71 -0
  1106. data/.data/spec/std/isa/inst/M/divuw.yaml +78 -0
  1107. data/.data/spec/std/isa/inst/M/divw.yaml +85 -0
  1108. data/.data/spec/std/isa/inst/M/mul.yaml +95 -0
  1109. data/.data/spec/std/isa/inst/M/mulh.yaml +80 -0
  1110. data/.data/spec/std/isa/inst/M/mulhsu.yaml +77 -0
  1111. data/.data/spec/std/isa/inst/M/mulhu.yaml +76 -0
  1112. data/.data/spec/std/isa/inst/M/mulw.yaml +79 -0
  1113. data/.data/spec/std/isa/inst/M/rem.yaml +76 -0
  1114. data/.data/spec/std/isa/inst/M/remu.yaml +66 -0
  1115. data/.data/spec/std/isa/inst/M/remuw.yaml +79 -0
  1116. data/.data/spec/std/isa/inst/M/remw.yaml +84 -0
  1117. data/.data/spec/std/isa/inst/Q/fadd.q.yaml +34 -0
  1118. data/.data/spec/std/isa/inst/Q/fclass.q.yaml +53 -0
  1119. data/.data/spec/std/isa/inst/Q/fcvt.d.q.yaml +31 -0
  1120. data/.data/spec/std/isa/inst/Q/fcvt.h.q.yaml +33 -0
  1121. data/.data/spec/std/isa/inst/Q/fcvt.l.q.yaml +33 -0
  1122. data/.data/spec/std/isa/inst/Q/fcvt.lu.q.yaml +33 -0
  1123. data/.data/spec/std/isa/inst/Q/fcvt.q.d.yaml +31 -0
  1124. data/.data/spec/std/isa/inst/Q/fcvt.q.h.yaml +33 -0
  1125. data/.data/spec/std/isa/inst/Q/fcvt.q.l.yaml +33 -0
  1126. data/.data/spec/std/isa/inst/Q/fcvt.q.lu.yaml +33 -0
  1127. data/.data/spec/std/isa/inst/Q/fcvt.q.s.yaml +31 -0
  1128. data/.data/spec/std/isa/inst/Q/fcvt.q.w.yaml +31 -0
  1129. data/.data/spec/std/isa/inst/Q/fcvt.q.wu.yaml +31 -0
  1130. data/.data/spec/std/isa/inst/Q/fcvt.s.q.yaml +31 -0
  1131. data/.data/spec/std/isa/inst/Q/fcvt.w.q.yaml +31 -0
  1132. data/.data/spec/std/isa/inst/Q/fcvt.wu.q.yaml +31 -0
  1133. data/.data/spec/std/isa/inst/Q/fdiv.q.yaml +40 -0
  1134. data/.data/spec/std/isa/inst/Q/feq.q.yaml +37 -0
  1135. data/.data/spec/std/isa/inst/Q/fle.q.yaml +37 -0
  1136. data/.data/spec/std/isa/inst/Q/fleq.q.yaml +38 -0
  1137. data/.data/spec/std/isa/inst/Q/fli.q.yaml +33 -0
  1138. data/.data/spec/std/isa/inst/Q/flq.yaml +37 -0
  1139. data/.data/spec/std/isa/inst/Q/flt.q.yaml +38 -0
  1140. data/.data/spec/std/isa/inst/Q/fltq.q.yaml +38 -0
  1141. data/.data/spec/std/isa/inst/Q/fmadd.q.yaml +40 -0
  1142. data/.data/spec/std/isa/inst/Q/fmax.q.yaml +35 -0
  1143. data/.data/spec/std/isa/inst/Q/fmaxm.q.yaml +38 -0
  1144. data/.data/spec/std/isa/inst/Q/fmin.q.yaml +35 -0
  1145. data/.data/spec/std/isa/inst/Q/fminm.q.yaml +38 -0
  1146. data/.data/spec/std/isa/inst/Q/fmsub.q.yaml +36 -0
  1147. data/.data/spec/std/isa/inst/Q/fmul.q.yaml +33 -0
  1148. data/.data/spec/std/isa/inst/Q/fmvh.x.q.yaml +37 -0
  1149. data/.data/spec/std/isa/inst/Q/fmvp.q.x.yaml +39 -0
  1150. data/.data/spec/std/isa/inst/Q/fnmadd.q.yaml +37 -0
  1151. data/.data/spec/std/isa/inst/Q/fnmsub.q.yaml +37 -0
  1152. data/.data/spec/std/isa/inst/Q/fround.q.yaml +38 -0
  1153. data/.data/spec/std/isa/inst/Q/froundnx.q.yaml +34 -0
  1154. data/.data/spec/std/isa/inst/Q/fsgnj.q.yaml +36 -0
  1155. data/.data/spec/std/isa/inst/Q/fsgnjn.q.yaml +36 -0
  1156. data/.data/spec/std/isa/inst/Q/fsgnjx.q.yaml +36 -0
  1157. data/.data/spec/std/isa/inst/Q/fsq.yaml +36 -0
  1158. data/.data/spec/std/isa/inst/Q/fsqrt.q.yaml +31 -0
  1159. data/.data/spec/std/isa/inst/Q/fsub.q.yaml +34 -0
  1160. data/.data/spec/std/isa/inst/README.md +78 -0
  1161. data/.data/spec/std/isa/inst/S/sfence.vma.yaml +331 -0
  1162. data/.data/spec/std/isa/inst/S/sret.yaml +166 -0
  1163. data/.data/spec/std/isa/inst/Sdext/dret.yaml +25 -0
  1164. data/.data/spec/std/isa/inst/Smdbltrp/sctrclr.yaml +47 -0
  1165. data/.data/spec/std/isa/inst/Smrnmi/mnret.yaml +51 -0
  1166. data/.data/spec/std/isa/inst/Svinval/hinval.gvma.yaml +91 -0
  1167. data/.data/spec/std/isa/inst/Svinval/hinval.vvma.yaml +91 -0
  1168. data/.data/spec/std/isa/inst/Svinval/sfence.inval.ir.yaml +44 -0
  1169. data/.data/spec/std/isa/inst/Svinval/sfence.w.inval.yaml +45 -0
  1170. data/.data/spec/std/isa/inst/Svinval/sinval.vma.yaml +102 -0
  1171. data/.data/spec/std/isa/inst/V/vaadd.vv.yaml +116 -0
  1172. data/.data/spec/std/isa/inst/V/vaadd.vx.yaml +125 -0
  1173. data/.data/spec/std/isa/inst/V/vaaddu.vv.yaml +116 -0
  1174. data/.data/spec/std/isa/inst/V/vaaddu.vx.yaml +125 -0
  1175. data/.data/spec/std/isa/inst/V/vadc.vim.yaml +75 -0
  1176. data/.data/spec/std/isa/inst/V/vadc.vvm.yaml +76 -0
  1177. data/.data/spec/std/isa/inst/V/vadc.vxm.yaml +76 -0
  1178. data/.data/spec/std/isa/inst/V/vadd.vi.yaml +101 -0
  1179. data/.data/spec/std/isa/inst/V/vadd.vv.yaml +158 -0
  1180. data/.data/spec/std/isa/inst/V/vadd.vx.yaml +117 -0
  1181. data/.data/spec/std/isa/inst/V/vand.vi.yaml +101 -0
  1182. data/.data/spec/std/isa/inst/V/vand.vv.yaml +134 -0
  1183. data/.data/spec/std/isa/inst/V/vand.vx.yaml +117 -0
  1184. data/.data/spec/std/isa/inst/V/vasub.vv.yaml +116 -0
  1185. data/.data/spec/std/isa/inst/V/vasub.vx.yaml +125 -0
  1186. data/.data/spec/std/isa/inst/V/vasubu.vv.yaml +116 -0
  1187. data/.data/spec/std/isa/inst/V/vasubu.vx.yaml +125 -0
  1188. data/.data/spec/std/isa/inst/V/vcompress.vm.yaml +85 -0
  1189. data/.data/spec/std/isa/inst/V/vcpop.m.yaml +31 -0
  1190. data/.data/spec/std/isa/inst/V/vdiv.vv.yaml +116 -0
  1191. data/.data/spec/std/isa/inst/V/vdiv.vx.yaml +125 -0
  1192. data/.data/spec/std/isa/inst/V/vdivu.vv.yaml +116 -0
  1193. data/.data/spec/std/isa/inst/V/vdivu.vx.yaml +125 -0
  1194. data/.data/spec/std/isa/inst/V/vfadd.vf.yaml +92 -0
  1195. data/.data/spec/std/isa/inst/V/vfadd.vv.yaml +81 -0
  1196. data/.data/spec/std/isa/inst/V/vfclass.v.yaml +97 -0
  1197. data/.data/spec/std/isa/inst/V/vfcvt.f.x.v.yaml +122 -0
  1198. data/.data/spec/std/isa/inst/V/vfcvt.f.xu.v.yaml +122 -0
  1199. data/.data/spec/std/isa/inst/V/vfcvt.rtz.x.f.v.yaml +122 -0
  1200. data/.data/spec/std/isa/inst/V/vfcvt.rtz.xu.f.v.yaml +122 -0
  1201. data/.data/spec/std/isa/inst/V/vfcvt.x.f.v.yaml +122 -0
  1202. data/.data/spec/std/isa/inst/V/vfcvt.xu.f.v.yaml +122 -0
  1203. data/.data/spec/std/isa/inst/V/vfdiv.vf.yaml +92 -0
  1204. data/.data/spec/std/isa/inst/V/vfdiv.vv.yaml +81 -0
  1205. data/.data/spec/std/isa/inst/V/vfirst.m.yaml +66 -0
  1206. data/.data/spec/std/isa/inst/V/vfmacc.vf.yaml +80 -0
  1207. data/.data/spec/std/isa/inst/V/vfmacc.vv.yaml +80 -0
  1208. data/.data/spec/std/isa/inst/V/vfmadd.vf.yaml +80 -0
  1209. data/.data/spec/std/isa/inst/V/vfmadd.vv.yaml +80 -0
  1210. data/.data/spec/std/isa/inst/V/vfmax.vf.yaml +92 -0
  1211. data/.data/spec/std/isa/inst/V/vfmax.vv.yaml +81 -0
  1212. data/.data/spec/std/isa/inst/V/vfmerge.vfm.yaml +78 -0
  1213. data/.data/spec/std/isa/inst/V/vfmin.vf.yaml +92 -0
  1214. data/.data/spec/std/isa/inst/V/vfmin.vv.yaml +81 -0
  1215. data/.data/spec/std/isa/inst/V/vfmsac.vf.yaml +80 -0
  1216. data/.data/spec/std/isa/inst/V/vfmsac.vv.yaml +80 -0
  1217. data/.data/spec/std/isa/inst/V/vfmsub.vf.yaml +80 -0
  1218. data/.data/spec/std/isa/inst/V/vfmsub.vv.yaml +80 -0
  1219. data/.data/spec/std/isa/inst/V/vfmul.vf.yaml +92 -0
  1220. data/.data/spec/std/isa/inst/V/vfmul.vv.yaml +81 -0
  1221. data/.data/spec/std/isa/inst/V/vfmv.f.s.yaml +58 -0
  1222. data/.data/spec/std/isa/inst/V/vfmv.s.f.yaml +71 -0
  1223. data/.data/spec/std/isa/inst/V/vfmv.v.f.yaml +64 -0
  1224. data/.data/spec/std/isa/inst/V/vfncvt.f.f.w.yaml +145 -0
  1225. data/.data/spec/std/isa/inst/V/vfncvt.f.x.w.yaml +145 -0
  1226. data/.data/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml +145 -0
  1227. data/.data/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml +145 -0
  1228. data/.data/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml +145 -0
  1229. data/.data/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml +145 -0
  1230. data/.data/spec/std/isa/inst/V/vfncvt.x.f.w.yaml +145 -0
  1231. data/.data/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml +145 -0
  1232. data/.data/spec/std/isa/inst/V/vfnmacc.vf.yaml +80 -0
  1233. data/.data/spec/std/isa/inst/V/vfnmacc.vv.yaml +80 -0
  1234. data/.data/spec/std/isa/inst/V/vfnmadd.vf.yaml +80 -0
  1235. data/.data/spec/std/isa/inst/V/vfnmadd.vv.yaml +80 -0
  1236. data/.data/spec/std/isa/inst/V/vfnmsac.vf.yaml +80 -0
  1237. data/.data/spec/std/isa/inst/V/vfnmsac.vv.yaml +80 -0
  1238. data/.data/spec/std/isa/inst/V/vfnmsub.vf.yaml +80 -0
  1239. data/.data/spec/std/isa/inst/V/vfnmsub.vv.yaml +80 -0
  1240. data/.data/spec/std/isa/inst/V/vfrdiv.vf.yaml +92 -0
  1241. data/.data/spec/std/isa/inst/V/vfrec7.v.yaml +97 -0
  1242. data/.data/spec/std/isa/inst/V/vfredmax.vs.yaml +50 -0
  1243. data/.data/spec/std/isa/inst/V/vfredmin.vs.yaml +50 -0
  1244. data/.data/spec/std/isa/inst/V/vfredosum.vs.yaml +50 -0
  1245. data/.data/spec/std/isa/inst/V/vfredusum.vs.yaml +50 -0
  1246. data/.data/spec/std/isa/inst/V/vfrsqrt7.v.yaml +97 -0
  1247. data/.data/spec/std/isa/inst/V/vfrsub.vf.yaml +92 -0
  1248. data/.data/spec/std/isa/inst/V/vfsgnj.vf.yaml +92 -0
  1249. data/.data/spec/std/isa/inst/V/vfsgnj.vv.yaml +81 -0
  1250. data/.data/spec/std/isa/inst/V/vfsgnjn.vf.yaml +92 -0
  1251. data/.data/spec/std/isa/inst/V/vfsgnjn.vv.yaml +81 -0
  1252. data/.data/spec/std/isa/inst/V/vfsgnjx.vf.yaml +92 -0
  1253. data/.data/spec/std/isa/inst/V/vfsgnjx.vv.yaml +81 -0
  1254. data/.data/spec/std/isa/inst/V/vfslide1down.vf.yaml +92 -0
  1255. data/.data/spec/std/isa/inst/V/vfslide1up.vf.yaml +92 -0
  1256. data/.data/spec/std/isa/inst/V/vfsqrt.v.yaml +97 -0
  1257. data/.data/spec/std/isa/inst/V/vfsub.vf.yaml +92 -0
  1258. data/.data/spec/std/isa/inst/V/vfsub.vv.yaml +81 -0
  1259. data/.data/spec/std/isa/inst/V/vfwadd.vf.yaml +80 -0
  1260. data/.data/spec/std/isa/inst/V/vfwadd.vv.yaml +81 -0
  1261. data/.data/spec/std/isa/inst/V/vfwadd.wf.yaml +78 -0
  1262. data/.data/spec/std/isa/inst/V/vfwadd.wv.yaml +79 -0
  1263. data/.data/spec/std/isa/inst/V/vfwcvt.f.f.v.yaml +137 -0
  1264. data/.data/spec/std/isa/inst/V/vfwcvt.f.x.v.yaml +137 -0
  1265. data/.data/spec/std/isa/inst/V/vfwcvt.f.xu.v.yaml +137 -0
  1266. data/.data/spec/std/isa/inst/V/vfwcvt.rtz.x.f.v.yaml +137 -0
  1267. data/.data/spec/std/isa/inst/V/vfwcvt.rtz.xu.f.v.yaml +137 -0
  1268. data/.data/spec/std/isa/inst/V/vfwcvt.x.f.v.yaml +137 -0
  1269. data/.data/spec/std/isa/inst/V/vfwcvt.xu.f.v.yaml +137 -0
  1270. data/.data/spec/std/isa/inst/V/vfwmacc.vf.yaml +81 -0
  1271. data/.data/spec/std/isa/inst/V/vfwmacc.vv.yaml +82 -0
  1272. data/.data/spec/std/isa/inst/V/vfwmsac.vf.yaml +81 -0
  1273. data/.data/spec/std/isa/inst/V/vfwmsac.vv.yaml +82 -0
  1274. data/.data/spec/std/isa/inst/V/vfwmul.vf.yaml +80 -0
  1275. data/.data/spec/std/isa/inst/V/vfwmul.vv.yaml +81 -0
  1276. data/.data/spec/std/isa/inst/V/vfwnmacc.vf.yaml +81 -0
  1277. data/.data/spec/std/isa/inst/V/vfwnmacc.vv.yaml +82 -0
  1278. data/.data/spec/std/isa/inst/V/vfwnmsac.vf.yaml +81 -0
  1279. data/.data/spec/std/isa/inst/V/vfwnmsac.vv.yaml +82 -0
  1280. data/.data/spec/std/isa/inst/V/vfwredosum.vs.yaml +50 -0
  1281. data/.data/spec/std/isa/inst/V/vfwredusum.vs.yaml +50 -0
  1282. data/.data/spec/std/isa/inst/V/vfwsub.vf.yaml +80 -0
  1283. data/.data/spec/std/isa/inst/V/vfwsub.vv.yaml +81 -0
  1284. data/.data/spec/std/isa/inst/V/vfwsub.wf.yaml +78 -0
  1285. data/.data/spec/std/isa/inst/V/vfwsub.wv.yaml +79 -0
  1286. data/.data/spec/std/isa/inst/V/vid.v.yaml +61 -0
  1287. data/.data/spec/std/isa/inst/V/viota.m.yaml +69 -0
  1288. data/.data/spec/std/isa/inst/V/vl1re16.v.yaml +29 -0
  1289. data/.data/spec/std/isa/inst/V/vl1re32.v.yaml +29 -0
  1290. data/.data/spec/std/isa/inst/V/vl1re64.v.yaml +29 -0
  1291. data/.data/spec/std/isa/inst/V/vl1re8.v.yaml +29 -0
  1292. data/.data/spec/std/isa/inst/V/vl2re16.v.yaml +29 -0
  1293. data/.data/spec/std/isa/inst/V/vl2re32.v.yaml +29 -0
  1294. data/.data/spec/std/isa/inst/V/vl2re64.v.yaml +29 -0
  1295. data/.data/spec/std/isa/inst/V/vl2re8.v.yaml +29 -0
  1296. data/.data/spec/std/isa/inst/V/vl4re16.v.yaml +29 -0
  1297. data/.data/spec/std/isa/inst/V/vl4re32.v.yaml +29 -0
  1298. data/.data/spec/std/isa/inst/V/vl4re64.v.yaml +29 -0
  1299. data/.data/spec/std/isa/inst/V/vl4re8.v.yaml +29 -0
  1300. data/.data/spec/std/isa/inst/V/vl8re16.v.yaml +29 -0
  1301. data/.data/spec/std/isa/inst/V/vl8re32.v.yaml +29 -0
  1302. data/.data/spec/std/isa/inst/V/vl8re64.v.yaml +29 -0
  1303. data/.data/spec/std/isa/inst/V/vl8re8.v.yaml +29 -0
  1304. data/.data/spec/std/isa/inst/V/vle16.v.yaml +52 -0
  1305. data/.data/spec/std/isa/inst/V/vle16ff.v.yaml +52 -0
  1306. data/.data/spec/std/isa/inst/V/vle32.v.yaml +52 -0
  1307. data/.data/spec/std/isa/inst/V/vle32ff.v.yaml +52 -0
  1308. data/.data/spec/std/isa/inst/V/vle64.v.yaml +52 -0
  1309. data/.data/spec/std/isa/inst/V/vle64ff.v.yaml +52 -0
  1310. data/.data/spec/std/isa/inst/V/vle8.v.yaml +64 -0
  1311. data/.data/spec/std/isa/inst/V/vle8ff.v.yaml +52 -0
  1312. data/.data/spec/std/isa/inst/V/vlm.v.yaml +48 -0
  1313. data/.data/spec/std/isa/inst/V/vloxei16.v.yaml +54 -0
  1314. data/.data/spec/std/isa/inst/V/vloxei32.v.yaml +54 -0
  1315. data/.data/spec/std/isa/inst/V/vloxei64.v.yaml +54 -0
  1316. data/.data/spec/std/isa/inst/V/vloxei8.v.yaml +54 -0
  1317. data/.data/spec/std/isa/inst/V/vloxseg2ei16.v.yaml +33 -0
  1318. data/.data/spec/std/isa/inst/V/vloxseg2ei32.v.yaml +33 -0
  1319. data/.data/spec/std/isa/inst/V/vloxseg2ei64.v.yaml +33 -0
  1320. data/.data/spec/std/isa/inst/V/vloxseg2ei8.v.yaml +33 -0
  1321. data/.data/spec/std/isa/inst/V/vloxseg3ei16.v.yaml +33 -0
  1322. data/.data/spec/std/isa/inst/V/vloxseg3ei32.v.yaml +33 -0
  1323. data/.data/spec/std/isa/inst/V/vloxseg3ei64.v.yaml +33 -0
  1324. data/.data/spec/std/isa/inst/V/vloxseg3ei8.v.yaml +33 -0
  1325. data/.data/spec/std/isa/inst/V/vloxseg4ei16.v.yaml +33 -0
  1326. data/.data/spec/std/isa/inst/V/vloxseg4ei32.v.yaml +33 -0
  1327. data/.data/spec/std/isa/inst/V/vloxseg4ei64.v.yaml +33 -0
  1328. data/.data/spec/std/isa/inst/V/vloxseg4ei8.v.yaml +33 -0
  1329. data/.data/spec/std/isa/inst/V/vloxseg5ei16.v.yaml +33 -0
  1330. data/.data/spec/std/isa/inst/V/vloxseg5ei32.v.yaml +33 -0
  1331. data/.data/spec/std/isa/inst/V/vloxseg5ei64.v.yaml +33 -0
  1332. data/.data/spec/std/isa/inst/V/vloxseg5ei8.v.yaml +33 -0
  1333. data/.data/spec/std/isa/inst/V/vloxseg6ei16.v.yaml +33 -0
  1334. data/.data/spec/std/isa/inst/V/vloxseg6ei32.v.yaml +33 -0
  1335. data/.data/spec/std/isa/inst/V/vloxseg6ei64.v.yaml +33 -0
  1336. data/.data/spec/std/isa/inst/V/vloxseg6ei8.v.yaml +33 -0
  1337. data/.data/spec/std/isa/inst/V/vloxseg7ei16.v.yaml +33 -0
  1338. data/.data/spec/std/isa/inst/V/vloxseg7ei32.v.yaml +33 -0
  1339. data/.data/spec/std/isa/inst/V/vloxseg7ei64.v.yaml +33 -0
  1340. data/.data/spec/std/isa/inst/V/vloxseg7ei8.v.yaml +33 -0
  1341. data/.data/spec/std/isa/inst/V/vloxseg8ei16.v.yaml +33 -0
  1342. data/.data/spec/std/isa/inst/V/vloxseg8ei32.v.yaml +33 -0
  1343. data/.data/spec/std/isa/inst/V/vloxseg8ei64.v.yaml +33 -0
  1344. data/.data/spec/std/isa/inst/V/vloxseg8ei8.v.yaml +33 -0
  1345. data/.data/spec/std/isa/inst/V/vlse16.v.yaml +54 -0
  1346. data/.data/spec/std/isa/inst/V/vlse32.v.yaml +54 -0
  1347. data/.data/spec/std/isa/inst/V/vlse64.v.yaml +54 -0
  1348. data/.data/spec/std/isa/inst/V/vlse8.v.yaml +54 -0
  1349. data/.data/spec/std/isa/inst/V/vlseg2e16.v.yaml +31 -0
  1350. data/.data/spec/std/isa/inst/V/vlseg2e16ff.v.yaml +31 -0
  1351. data/.data/spec/std/isa/inst/V/vlseg2e32.v.yaml +31 -0
  1352. data/.data/spec/std/isa/inst/V/vlseg2e32ff.v.yaml +31 -0
  1353. data/.data/spec/std/isa/inst/V/vlseg2e64.v.yaml +31 -0
  1354. data/.data/spec/std/isa/inst/V/vlseg2e64ff.v.yaml +31 -0
  1355. data/.data/spec/std/isa/inst/V/vlseg2e8.v.yaml +31 -0
  1356. data/.data/spec/std/isa/inst/V/vlseg2e8ff.v.yaml +31 -0
  1357. data/.data/spec/std/isa/inst/V/vlseg3e16.v.yaml +31 -0
  1358. data/.data/spec/std/isa/inst/V/vlseg3e16ff.v.yaml +31 -0
  1359. data/.data/spec/std/isa/inst/V/vlseg3e32.v.yaml +31 -0
  1360. data/.data/spec/std/isa/inst/V/vlseg3e32ff.v.yaml +31 -0
  1361. data/.data/spec/std/isa/inst/V/vlseg3e64.v.yaml +31 -0
  1362. data/.data/spec/std/isa/inst/V/vlseg3e64ff.v.yaml +31 -0
  1363. data/.data/spec/std/isa/inst/V/vlseg3e8.v.yaml +31 -0
  1364. data/.data/spec/std/isa/inst/V/vlseg3e8ff.v.yaml +31 -0
  1365. data/.data/spec/std/isa/inst/V/vlseg4e16.v.yaml +31 -0
  1366. data/.data/spec/std/isa/inst/V/vlseg4e16ff.v.yaml +31 -0
  1367. data/.data/spec/std/isa/inst/V/vlseg4e32.v.yaml +31 -0
  1368. data/.data/spec/std/isa/inst/V/vlseg4e32ff.v.yaml +31 -0
  1369. data/.data/spec/std/isa/inst/V/vlseg4e64.v.yaml +31 -0
  1370. data/.data/spec/std/isa/inst/V/vlseg4e64ff.v.yaml +31 -0
  1371. data/.data/spec/std/isa/inst/V/vlseg4e8.v.yaml +31 -0
  1372. data/.data/spec/std/isa/inst/V/vlseg4e8ff.v.yaml +31 -0
  1373. data/.data/spec/std/isa/inst/V/vlseg5e16.v.yaml +31 -0
  1374. data/.data/spec/std/isa/inst/V/vlseg5e16ff.v.yaml +31 -0
  1375. data/.data/spec/std/isa/inst/V/vlseg5e32.v.yaml +31 -0
  1376. data/.data/spec/std/isa/inst/V/vlseg5e32ff.v.yaml +31 -0
  1377. data/.data/spec/std/isa/inst/V/vlseg5e64.v.yaml +31 -0
  1378. data/.data/spec/std/isa/inst/V/vlseg5e64ff.v.yaml +31 -0
  1379. data/.data/spec/std/isa/inst/V/vlseg5e8.v.yaml +31 -0
  1380. data/.data/spec/std/isa/inst/V/vlseg5e8ff.v.yaml +31 -0
  1381. data/.data/spec/std/isa/inst/V/vlseg6e16.v.yaml +31 -0
  1382. data/.data/spec/std/isa/inst/V/vlseg6e16ff.v.yaml +31 -0
  1383. data/.data/spec/std/isa/inst/V/vlseg6e32.v.yaml +31 -0
  1384. data/.data/spec/std/isa/inst/V/vlseg6e32ff.v.yaml +31 -0
  1385. data/.data/spec/std/isa/inst/V/vlseg6e64.v.yaml +31 -0
  1386. data/.data/spec/std/isa/inst/V/vlseg6e64ff.v.yaml +31 -0
  1387. data/.data/spec/std/isa/inst/V/vlseg6e8.v.yaml +31 -0
  1388. data/.data/spec/std/isa/inst/V/vlseg6e8ff.v.yaml +31 -0
  1389. data/.data/spec/std/isa/inst/V/vlseg7e16.v.yaml +31 -0
  1390. data/.data/spec/std/isa/inst/V/vlseg7e16ff.v.yaml +31 -0
  1391. data/.data/spec/std/isa/inst/V/vlseg7e32.v.yaml +31 -0
  1392. data/.data/spec/std/isa/inst/V/vlseg7e32ff.v.yaml +31 -0
  1393. data/.data/spec/std/isa/inst/V/vlseg7e64.v.yaml +31 -0
  1394. data/.data/spec/std/isa/inst/V/vlseg7e64ff.v.yaml +31 -0
  1395. data/.data/spec/std/isa/inst/V/vlseg7e8.v.yaml +31 -0
  1396. data/.data/spec/std/isa/inst/V/vlseg7e8ff.v.yaml +31 -0
  1397. data/.data/spec/std/isa/inst/V/vlseg8e16.v.yaml +31 -0
  1398. data/.data/spec/std/isa/inst/V/vlseg8e16ff.v.yaml +31 -0
  1399. data/.data/spec/std/isa/inst/V/vlseg8e32.v.yaml +31 -0
  1400. data/.data/spec/std/isa/inst/V/vlseg8e32ff.v.yaml +31 -0
  1401. data/.data/spec/std/isa/inst/V/vlseg8e64.v.yaml +31 -0
  1402. data/.data/spec/std/isa/inst/V/vlseg8e64ff.v.yaml +31 -0
  1403. data/.data/spec/std/isa/inst/V/vlseg8e8.v.yaml +31 -0
  1404. data/.data/spec/std/isa/inst/V/vlseg8e8ff.v.yaml +31 -0
  1405. data/.data/spec/std/isa/inst/V/vlsseg2e16.v.yaml +33 -0
  1406. data/.data/spec/std/isa/inst/V/vlsseg2e32.v.yaml +33 -0
  1407. data/.data/spec/std/isa/inst/V/vlsseg2e64.v.yaml +33 -0
  1408. data/.data/spec/std/isa/inst/V/vlsseg2e8.v.yaml +33 -0
  1409. data/.data/spec/std/isa/inst/V/vlsseg3e16.v.yaml +33 -0
  1410. data/.data/spec/std/isa/inst/V/vlsseg3e32.v.yaml +33 -0
  1411. data/.data/spec/std/isa/inst/V/vlsseg3e64.v.yaml +33 -0
  1412. data/.data/spec/std/isa/inst/V/vlsseg3e8.v.yaml +33 -0
  1413. data/.data/spec/std/isa/inst/V/vlsseg4e16.v.yaml +33 -0
  1414. data/.data/spec/std/isa/inst/V/vlsseg4e32.v.yaml +33 -0
  1415. data/.data/spec/std/isa/inst/V/vlsseg4e64.v.yaml +33 -0
  1416. data/.data/spec/std/isa/inst/V/vlsseg4e8.v.yaml +33 -0
  1417. data/.data/spec/std/isa/inst/V/vlsseg5e16.v.yaml +33 -0
  1418. data/.data/spec/std/isa/inst/V/vlsseg5e32.v.yaml +33 -0
  1419. data/.data/spec/std/isa/inst/V/vlsseg5e64.v.yaml +33 -0
  1420. data/.data/spec/std/isa/inst/V/vlsseg5e8.v.yaml +33 -0
  1421. data/.data/spec/std/isa/inst/V/vlsseg6e16.v.yaml +33 -0
  1422. data/.data/spec/std/isa/inst/V/vlsseg6e32.v.yaml +33 -0
  1423. data/.data/spec/std/isa/inst/V/vlsseg6e64.v.yaml +33 -0
  1424. data/.data/spec/std/isa/inst/V/vlsseg6e8.v.yaml +33 -0
  1425. data/.data/spec/std/isa/inst/V/vlsseg7e16.v.yaml +33 -0
  1426. data/.data/spec/std/isa/inst/V/vlsseg7e32.v.yaml +33 -0
  1427. data/.data/spec/std/isa/inst/V/vlsseg7e64.v.yaml +33 -0
  1428. data/.data/spec/std/isa/inst/V/vlsseg7e8.v.yaml +33 -0
  1429. data/.data/spec/std/isa/inst/V/vlsseg8e16.v.yaml +33 -0
  1430. data/.data/spec/std/isa/inst/V/vlsseg8e32.v.yaml +33 -0
  1431. data/.data/spec/std/isa/inst/V/vlsseg8e64.v.yaml +33 -0
  1432. data/.data/spec/std/isa/inst/V/vlsseg8e8.v.yaml +33 -0
  1433. data/.data/spec/std/isa/inst/V/vluxei16.v.yaml +54 -0
  1434. data/.data/spec/std/isa/inst/V/vluxei32.v.yaml +54 -0
  1435. data/.data/spec/std/isa/inst/V/vluxei64.v.yaml +54 -0
  1436. data/.data/spec/std/isa/inst/V/vluxei8.v.yaml +54 -0
  1437. data/.data/spec/std/isa/inst/V/vluxseg2ei16.v.yaml +33 -0
  1438. data/.data/spec/std/isa/inst/V/vluxseg2ei32.v.yaml +33 -0
  1439. data/.data/spec/std/isa/inst/V/vluxseg2ei64.v.yaml +33 -0
  1440. data/.data/spec/std/isa/inst/V/vluxseg2ei8.v.yaml +33 -0
  1441. data/.data/spec/std/isa/inst/V/vluxseg3ei16.v.yaml +33 -0
  1442. data/.data/spec/std/isa/inst/V/vluxseg3ei32.v.yaml +33 -0
  1443. data/.data/spec/std/isa/inst/V/vluxseg3ei64.v.yaml +33 -0
  1444. data/.data/spec/std/isa/inst/V/vluxseg3ei8.v.yaml +33 -0
  1445. data/.data/spec/std/isa/inst/V/vluxseg4ei16.v.yaml +33 -0
  1446. data/.data/spec/std/isa/inst/V/vluxseg4ei32.v.yaml +33 -0
  1447. data/.data/spec/std/isa/inst/V/vluxseg4ei64.v.yaml +33 -0
  1448. data/.data/spec/std/isa/inst/V/vluxseg4ei8.v.yaml +33 -0
  1449. data/.data/spec/std/isa/inst/V/vluxseg5ei16.v.yaml +33 -0
  1450. data/.data/spec/std/isa/inst/V/vluxseg5ei32.v.yaml +33 -0
  1451. data/.data/spec/std/isa/inst/V/vluxseg5ei64.v.yaml +33 -0
  1452. data/.data/spec/std/isa/inst/V/vluxseg5ei8.v.yaml +33 -0
  1453. data/.data/spec/std/isa/inst/V/vluxseg6ei16.v.yaml +33 -0
  1454. data/.data/spec/std/isa/inst/V/vluxseg6ei32.v.yaml +33 -0
  1455. data/.data/spec/std/isa/inst/V/vluxseg6ei64.v.yaml +33 -0
  1456. data/.data/spec/std/isa/inst/V/vluxseg6ei8.v.yaml +33 -0
  1457. data/.data/spec/std/isa/inst/V/vluxseg7ei16.v.yaml +33 -0
  1458. data/.data/spec/std/isa/inst/V/vluxseg7ei32.v.yaml +33 -0
  1459. data/.data/spec/std/isa/inst/V/vluxseg7ei64.v.yaml +33 -0
  1460. data/.data/spec/std/isa/inst/V/vluxseg7ei8.v.yaml +33 -0
  1461. data/.data/spec/std/isa/inst/V/vluxseg8ei16.v.yaml +33 -0
  1462. data/.data/spec/std/isa/inst/V/vluxseg8ei32.v.yaml +33 -0
  1463. data/.data/spec/std/isa/inst/V/vluxseg8ei64.v.yaml +33 -0
  1464. data/.data/spec/std/isa/inst/V/vluxseg8ei8.v.yaml +33 -0
  1465. data/.data/spec/std/isa/inst/V/vmacc.vv.yaml +74 -0
  1466. data/.data/spec/std/isa/inst/V/vmacc.vx.yaml +74 -0
  1467. data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +69 -0
  1468. data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +70 -0
  1469. data/.data/spec/std/isa/inst/V/vmadc.vv.yaml +70 -0
  1470. data/.data/spec/std/isa/inst/V/vmadc.vvm.yaml +71 -0
  1471. data/.data/spec/std/isa/inst/V/vmadc.vx.yaml +70 -0
  1472. data/.data/spec/std/isa/inst/V/vmadc.vxm.yaml +71 -0
  1473. data/.data/spec/std/isa/inst/V/vmadd.vv.yaml +74 -0
  1474. data/.data/spec/std/isa/inst/V/vmadd.vx.yaml +74 -0
  1475. data/.data/spec/std/isa/inst/V/vmand.mm.yaml +75 -0
  1476. data/.data/spec/std/isa/inst/V/vmandn.mm.yaml +31 -0
  1477. data/.data/spec/std/isa/inst/V/vmax.vv.yaml +134 -0
  1478. data/.data/spec/std/isa/inst/V/vmax.vx.yaml +117 -0
  1479. data/.data/spec/std/isa/inst/V/vmaxu.vv.yaml +134 -0
  1480. data/.data/spec/std/isa/inst/V/vmaxu.vx.yaml +117 -0
  1481. data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +76 -0
  1482. data/.data/spec/std/isa/inst/V/vmerge.vvm.yaml +76 -0
  1483. data/.data/spec/std/isa/inst/V/vmerge.vxm.yaml +76 -0
  1484. data/.data/spec/std/isa/inst/V/vmfeq.vf.yaml +79 -0
  1485. data/.data/spec/std/isa/inst/V/vmfeq.vv.yaml +77 -0
  1486. data/.data/spec/std/isa/inst/V/vmfge.vf.yaml +79 -0
  1487. data/.data/spec/std/isa/inst/V/vmfgt.vf.yaml +79 -0
  1488. data/.data/spec/std/isa/inst/V/vmfle.vf.yaml +79 -0
  1489. data/.data/spec/std/isa/inst/V/vmfle.vv.yaml +77 -0
  1490. data/.data/spec/std/isa/inst/V/vmflt.vf.yaml +79 -0
  1491. data/.data/spec/std/isa/inst/V/vmflt.vv.yaml +77 -0
  1492. data/.data/spec/std/isa/inst/V/vmfne.vf.yaml +79 -0
  1493. data/.data/spec/std/isa/inst/V/vmfne.vv.yaml +77 -0
  1494. data/.data/spec/std/isa/inst/V/vmin.vv.yaml +134 -0
  1495. data/.data/spec/std/isa/inst/V/vmin.vx.yaml +117 -0
  1496. data/.data/spec/std/isa/inst/V/vminu.vv.yaml +134 -0
  1497. data/.data/spec/std/isa/inst/V/vminu.vx.yaml +117 -0
  1498. data/.data/spec/std/isa/inst/V/vmnand.mm.yaml +75 -0
  1499. data/.data/spec/std/isa/inst/V/vmnor.mm.yaml +75 -0
  1500. data/.data/spec/std/isa/inst/V/vmor.mm.yaml +75 -0
  1501. data/.data/spec/std/isa/inst/V/vmorn.mm.yaml +31 -0
  1502. data/.data/spec/std/isa/inst/V/vmsbc.vv.yaml +70 -0
  1503. data/.data/spec/std/isa/inst/V/vmsbc.vvm.yaml +71 -0
  1504. data/.data/spec/std/isa/inst/V/vmsbc.vx.yaml +70 -0
  1505. data/.data/spec/std/isa/inst/V/vmsbc.vxm.yaml +71 -0
  1506. data/.data/spec/std/isa/inst/V/vmsbf.m.yaml +69 -0
  1507. data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +77 -0
  1508. data/.data/spec/std/isa/inst/V/vmseq.vv.yaml +77 -0
  1509. data/.data/spec/std/isa/inst/V/vmseq.vx.yaml +79 -0
  1510. data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +77 -0
  1511. data/.data/spec/std/isa/inst/V/vmsgt.vx.yaml +79 -0
  1512. data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +77 -0
  1513. data/.data/spec/std/isa/inst/V/vmsgtu.vx.yaml +79 -0
  1514. data/.data/spec/std/isa/inst/V/vmsif.m.yaml +69 -0
  1515. data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +77 -0
  1516. data/.data/spec/std/isa/inst/V/vmsle.vv.yaml +77 -0
  1517. data/.data/spec/std/isa/inst/V/vmsle.vx.yaml +79 -0
  1518. data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +77 -0
  1519. data/.data/spec/std/isa/inst/V/vmsleu.vv.yaml +77 -0
  1520. data/.data/spec/std/isa/inst/V/vmsleu.vx.yaml +79 -0
  1521. data/.data/spec/std/isa/inst/V/vmslt.vv.yaml +77 -0
  1522. data/.data/spec/std/isa/inst/V/vmslt.vx.yaml +79 -0
  1523. data/.data/spec/std/isa/inst/V/vmsltu.vv.yaml +77 -0
  1524. data/.data/spec/std/isa/inst/V/vmsltu.vx.yaml +79 -0
  1525. data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +77 -0
  1526. data/.data/spec/std/isa/inst/V/vmsne.vv.yaml +77 -0
  1527. data/.data/spec/std/isa/inst/V/vmsne.vx.yaml +79 -0
  1528. data/.data/spec/std/isa/inst/V/vmsof.m.yaml +73 -0
  1529. data/.data/spec/std/isa/inst/V/vmul.vv.yaml +116 -0
  1530. data/.data/spec/std/isa/inst/V/vmul.vx.yaml +125 -0
  1531. data/.data/spec/std/isa/inst/V/vmulh.vv.yaml +116 -0
  1532. data/.data/spec/std/isa/inst/V/vmulh.vx.yaml +125 -0
  1533. data/.data/spec/std/isa/inst/V/vmulhsu.vv.yaml +116 -0
  1534. data/.data/spec/std/isa/inst/V/vmulhsu.vx.yaml +125 -0
  1535. data/.data/spec/std/isa/inst/V/vmulhu.vv.yaml +116 -0
  1536. data/.data/spec/std/isa/inst/V/vmulhu.vx.yaml +125 -0
  1537. data/.data/spec/std/isa/inst/V/vmv.s.x.yaml +70 -0
  1538. data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +105 -0
  1539. data/.data/spec/std/isa/inst/V/vmv.v.v.yaml +62 -0
  1540. data/.data/spec/std/isa/inst/V/vmv.v.x.yaml +62 -0
  1541. data/.data/spec/std/isa/inst/V/vmv.x.s.yaml +64 -0
  1542. data/.data/spec/std/isa/inst/V/vmv1r.v.yaml +62 -0
  1543. data/.data/spec/std/isa/inst/V/vmv2r.v.yaml +62 -0
  1544. data/.data/spec/std/isa/inst/V/vmv4r.v.yaml +62 -0
  1545. data/.data/spec/std/isa/inst/V/vmv8r.v.yaml +62 -0
  1546. data/.data/spec/std/isa/inst/V/vmxnor.mm.yaml +75 -0
  1547. data/.data/spec/std/isa/inst/V/vmxor.mm.yaml +75 -0
  1548. data/.data/spec/std/isa/inst/V/vnclip.wi.yaml +87 -0
  1549. data/.data/spec/std/isa/inst/V/vnclip.wv.yaml +87 -0
  1550. data/.data/spec/std/isa/inst/V/vnclip.wx.yaml +87 -0
  1551. data/.data/spec/std/isa/inst/V/vnclipu.wi.yaml +87 -0
  1552. data/.data/spec/std/isa/inst/V/vnclipu.wv.yaml +87 -0
  1553. data/.data/spec/std/isa/inst/V/vnclipu.wx.yaml +87 -0
  1554. data/.data/spec/std/isa/inst/V/vnmsac.vv.yaml +74 -0
  1555. data/.data/spec/std/isa/inst/V/vnmsac.vx.yaml +74 -0
  1556. data/.data/spec/std/isa/inst/V/vnmsub.vv.yaml +74 -0
  1557. data/.data/spec/std/isa/inst/V/vnmsub.vx.yaml +74 -0
  1558. data/.data/spec/std/isa/inst/V/vnsra.wi.yaml +86 -0
  1559. data/.data/spec/std/isa/inst/V/vnsra.wv.yaml +86 -0
  1560. data/.data/spec/std/isa/inst/V/vnsra.wx.yaml +86 -0
  1561. data/.data/spec/std/isa/inst/V/vnsrl.wi.yaml +86 -0
  1562. data/.data/spec/std/isa/inst/V/vnsrl.wv.yaml +86 -0
  1563. data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +86 -0
  1564. data/.data/spec/std/isa/inst/V/vor.vi.yaml +101 -0
  1565. data/.data/spec/std/isa/inst/V/vor.vv.yaml +134 -0
  1566. data/.data/spec/std/isa/inst/V/vor.vx.yaml +117 -0
  1567. data/.data/spec/std/isa/inst/V/vredand.vs.yaml +81 -0
  1568. data/.data/spec/std/isa/inst/V/vredmax.vs.yaml +81 -0
  1569. data/.data/spec/std/isa/inst/V/vredmaxu.vs.yaml +81 -0
  1570. data/.data/spec/std/isa/inst/V/vredmin.vs.yaml +81 -0
  1571. data/.data/spec/std/isa/inst/V/vredminu.vs.yaml +81 -0
  1572. data/.data/spec/std/isa/inst/V/vredor.vs.yaml +81 -0
  1573. data/.data/spec/std/isa/inst/V/vredsum.vs.yaml +81 -0
  1574. data/.data/spec/std/isa/inst/V/vredxor.vs.yaml +81 -0
  1575. data/.data/spec/std/isa/inst/V/vrem.vv.yaml +116 -0
  1576. data/.data/spec/std/isa/inst/V/vrem.vx.yaml +125 -0
  1577. data/.data/spec/std/isa/inst/V/vremu.vv.yaml +116 -0
  1578. data/.data/spec/std/isa/inst/V/vremu.vx.yaml +125 -0
  1579. data/.data/spec/std/isa/inst/V/vrgather.vi.yaml +87 -0
  1580. data/.data/spec/std/isa/inst/V/vrgather.vv.yaml +134 -0
  1581. data/.data/spec/std/isa/inst/V/vrgather.vx.yaml +87 -0
  1582. data/.data/spec/std/isa/inst/V/vrgatherei16.vv.yaml +134 -0
  1583. data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +101 -0
  1584. data/.data/spec/std/isa/inst/V/vrsub.vx.yaml +117 -0
  1585. data/.data/spec/std/isa/inst/V/vs1r.v.yaml +29 -0
  1586. data/.data/spec/std/isa/inst/V/vs2r.v.yaml +29 -0
  1587. data/.data/spec/std/isa/inst/V/vs4r.v.yaml +29 -0
  1588. data/.data/spec/std/isa/inst/V/vs8r.v.yaml +29 -0
  1589. data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +101 -0
  1590. data/.data/spec/std/isa/inst/V/vsadd.vv.yaml +134 -0
  1591. data/.data/spec/std/isa/inst/V/vsadd.vx.yaml +117 -0
  1592. data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +101 -0
  1593. data/.data/spec/std/isa/inst/V/vsaddu.vv.yaml +134 -0
  1594. data/.data/spec/std/isa/inst/V/vsaddu.vx.yaml +117 -0
  1595. data/.data/spec/std/isa/inst/V/vsbc.vvm.yaml +76 -0
  1596. data/.data/spec/std/isa/inst/V/vsbc.vxm.yaml +76 -0
  1597. data/.data/spec/std/isa/inst/V/vse16.v.yaml +52 -0
  1598. data/.data/spec/std/isa/inst/V/vse32.v.yaml +52 -0
  1599. data/.data/spec/std/isa/inst/V/vse64.v.yaml +52 -0
  1600. data/.data/spec/std/isa/inst/V/vse8.v.yaml +60 -0
  1601. data/.data/spec/std/isa/inst/V/vsetivli.yaml +122 -0
  1602. data/.data/spec/std/isa/inst/V/vsetvl.yaml +147 -0
  1603. data/.data/spec/std/isa/inst/V/vsetvli.yaml +174 -0
  1604. data/.data/spec/std/isa/inst/V/vsext.vf2.yaml +75 -0
  1605. data/.data/spec/std/isa/inst/V/vsext.vf4.yaml +75 -0
  1606. data/.data/spec/std/isa/inst/V/vsext.vf8.yaml +75 -0
  1607. data/.data/spec/std/isa/inst/V/vslide1down.vx.yaml +125 -0
  1608. data/.data/spec/std/isa/inst/V/vslide1up.vx.yaml +125 -0
  1609. data/.data/spec/std/isa/inst/V/vslidedown.vi.yaml +87 -0
  1610. data/.data/spec/std/isa/inst/V/vslidedown.vx.yaml +87 -0
  1611. data/.data/spec/std/isa/inst/V/vslideup.vi.yaml +87 -0
  1612. data/.data/spec/std/isa/inst/V/vslideup.vx.yaml +87 -0
  1613. data/.data/spec/std/isa/inst/V/vsll.vi.yaml +101 -0
  1614. data/.data/spec/std/isa/inst/V/vsll.vv.yaml +134 -0
  1615. data/.data/spec/std/isa/inst/V/vsll.vx.yaml +117 -0
  1616. data/.data/spec/std/isa/inst/V/vsm.v.yaml +48 -0
  1617. data/.data/spec/std/isa/inst/V/vsmul.vv.yaml +134 -0
  1618. data/.data/spec/std/isa/inst/V/vsmul.vx.yaml +117 -0
  1619. data/.data/spec/std/isa/inst/V/vsoxei16.v.yaml +54 -0
  1620. data/.data/spec/std/isa/inst/V/vsoxei32.v.yaml +54 -0
  1621. data/.data/spec/std/isa/inst/V/vsoxei64.v.yaml +54 -0
  1622. data/.data/spec/std/isa/inst/V/vsoxei8.v.yaml +54 -0
  1623. data/.data/spec/std/isa/inst/V/vsoxseg2ei16.v.yaml +33 -0
  1624. data/.data/spec/std/isa/inst/V/vsoxseg2ei32.v.yaml +33 -0
  1625. data/.data/spec/std/isa/inst/V/vsoxseg2ei64.v.yaml +33 -0
  1626. data/.data/spec/std/isa/inst/V/vsoxseg2ei8.v.yaml +33 -0
  1627. data/.data/spec/std/isa/inst/V/vsoxseg3ei16.v.yaml +33 -0
  1628. data/.data/spec/std/isa/inst/V/vsoxseg3ei32.v.yaml +33 -0
  1629. data/.data/spec/std/isa/inst/V/vsoxseg3ei64.v.yaml +33 -0
  1630. data/.data/spec/std/isa/inst/V/vsoxseg3ei8.v.yaml +33 -0
  1631. data/.data/spec/std/isa/inst/V/vsoxseg4ei16.v.yaml +33 -0
  1632. data/.data/spec/std/isa/inst/V/vsoxseg4ei32.v.yaml +33 -0
  1633. data/.data/spec/std/isa/inst/V/vsoxseg4ei64.v.yaml +33 -0
  1634. data/.data/spec/std/isa/inst/V/vsoxseg4ei8.v.yaml +33 -0
  1635. data/.data/spec/std/isa/inst/V/vsoxseg5ei16.v.yaml +33 -0
  1636. data/.data/spec/std/isa/inst/V/vsoxseg5ei32.v.yaml +33 -0
  1637. data/.data/spec/std/isa/inst/V/vsoxseg5ei64.v.yaml +33 -0
  1638. data/.data/spec/std/isa/inst/V/vsoxseg5ei8.v.yaml +33 -0
  1639. data/.data/spec/std/isa/inst/V/vsoxseg6ei16.v.yaml +33 -0
  1640. data/.data/spec/std/isa/inst/V/vsoxseg6ei32.v.yaml +33 -0
  1641. data/.data/spec/std/isa/inst/V/vsoxseg6ei64.v.yaml +33 -0
  1642. data/.data/spec/std/isa/inst/V/vsoxseg6ei8.v.yaml +33 -0
  1643. data/.data/spec/std/isa/inst/V/vsoxseg7ei16.v.yaml +33 -0
  1644. data/.data/spec/std/isa/inst/V/vsoxseg7ei32.v.yaml +33 -0
  1645. data/.data/spec/std/isa/inst/V/vsoxseg7ei64.v.yaml +33 -0
  1646. data/.data/spec/std/isa/inst/V/vsoxseg7ei8.v.yaml +33 -0
  1647. data/.data/spec/std/isa/inst/V/vsoxseg8ei16.v.yaml +33 -0
  1648. data/.data/spec/std/isa/inst/V/vsoxseg8ei32.v.yaml +33 -0
  1649. data/.data/spec/std/isa/inst/V/vsoxseg8ei64.v.yaml +33 -0
  1650. data/.data/spec/std/isa/inst/V/vsoxseg8ei8.v.yaml +33 -0
  1651. data/.data/spec/std/isa/inst/V/vsra.vi.yaml +101 -0
  1652. data/.data/spec/std/isa/inst/V/vsra.vv.yaml +134 -0
  1653. data/.data/spec/std/isa/inst/V/vsra.vx.yaml +117 -0
  1654. data/.data/spec/std/isa/inst/V/vsrl.vi.yaml +101 -0
  1655. data/.data/spec/std/isa/inst/V/vsrl.vv.yaml +134 -0
  1656. data/.data/spec/std/isa/inst/V/vsrl.vx.yaml +117 -0
  1657. data/.data/spec/std/isa/inst/V/vsse16.v.yaml +54 -0
  1658. data/.data/spec/std/isa/inst/V/vsse32.v.yaml +54 -0
  1659. data/.data/spec/std/isa/inst/V/vsse64.v.yaml +54 -0
  1660. data/.data/spec/std/isa/inst/V/vsse8.v.yaml +54 -0
  1661. data/.data/spec/std/isa/inst/V/vsseg2e16.v.yaml +31 -0
  1662. data/.data/spec/std/isa/inst/V/vsseg2e32.v.yaml +31 -0
  1663. data/.data/spec/std/isa/inst/V/vsseg2e64.v.yaml +31 -0
  1664. data/.data/spec/std/isa/inst/V/vsseg2e8.v.yaml +31 -0
  1665. data/.data/spec/std/isa/inst/V/vsseg3e16.v.yaml +31 -0
  1666. data/.data/spec/std/isa/inst/V/vsseg3e32.v.yaml +31 -0
  1667. data/.data/spec/std/isa/inst/V/vsseg3e64.v.yaml +31 -0
  1668. data/.data/spec/std/isa/inst/V/vsseg3e8.v.yaml +31 -0
  1669. data/.data/spec/std/isa/inst/V/vsseg4e16.v.yaml +31 -0
  1670. data/.data/spec/std/isa/inst/V/vsseg4e32.v.yaml +31 -0
  1671. data/.data/spec/std/isa/inst/V/vsseg4e64.v.yaml +31 -0
  1672. data/.data/spec/std/isa/inst/V/vsseg4e8.v.yaml +31 -0
  1673. data/.data/spec/std/isa/inst/V/vsseg5e16.v.yaml +31 -0
  1674. data/.data/spec/std/isa/inst/V/vsseg5e32.v.yaml +31 -0
  1675. data/.data/spec/std/isa/inst/V/vsseg5e64.v.yaml +31 -0
  1676. data/.data/spec/std/isa/inst/V/vsseg5e8.v.yaml +31 -0
  1677. data/.data/spec/std/isa/inst/V/vsseg6e16.v.yaml +31 -0
  1678. data/.data/spec/std/isa/inst/V/vsseg6e32.v.yaml +31 -0
  1679. data/.data/spec/std/isa/inst/V/vsseg6e64.v.yaml +31 -0
  1680. data/.data/spec/std/isa/inst/V/vsseg6e8.v.yaml +31 -0
  1681. data/.data/spec/std/isa/inst/V/vsseg7e16.v.yaml +31 -0
  1682. data/.data/spec/std/isa/inst/V/vsseg7e32.v.yaml +31 -0
  1683. data/.data/spec/std/isa/inst/V/vsseg7e64.v.yaml +31 -0
  1684. data/.data/spec/std/isa/inst/V/vsseg7e8.v.yaml +31 -0
  1685. data/.data/spec/std/isa/inst/V/vsseg8e16.v.yaml +31 -0
  1686. data/.data/spec/std/isa/inst/V/vsseg8e32.v.yaml +31 -0
  1687. data/.data/spec/std/isa/inst/V/vsseg8e64.v.yaml +31 -0
  1688. data/.data/spec/std/isa/inst/V/vsseg8e8.v.yaml +31 -0
  1689. data/.data/spec/std/isa/inst/V/vssra.vi.yaml +101 -0
  1690. data/.data/spec/std/isa/inst/V/vssra.vv.yaml +134 -0
  1691. data/.data/spec/std/isa/inst/V/vssra.vx.yaml +117 -0
  1692. data/.data/spec/std/isa/inst/V/vssrl.vi.yaml +101 -0
  1693. data/.data/spec/std/isa/inst/V/vssrl.vv.yaml +134 -0
  1694. data/.data/spec/std/isa/inst/V/vssrl.vx.yaml +117 -0
  1695. data/.data/spec/std/isa/inst/V/vssseg2e16.v.yaml +33 -0
  1696. data/.data/spec/std/isa/inst/V/vssseg2e32.v.yaml +33 -0
  1697. data/.data/spec/std/isa/inst/V/vssseg2e64.v.yaml +33 -0
  1698. data/.data/spec/std/isa/inst/V/vssseg2e8.v.yaml +33 -0
  1699. data/.data/spec/std/isa/inst/V/vssseg3e16.v.yaml +33 -0
  1700. data/.data/spec/std/isa/inst/V/vssseg3e32.v.yaml +33 -0
  1701. data/.data/spec/std/isa/inst/V/vssseg3e64.v.yaml +33 -0
  1702. data/.data/spec/std/isa/inst/V/vssseg3e8.v.yaml +33 -0
  1703. data/.data/spec/std/isa/inst/V/vssseg4e16.v.yaml +33 -0
  1704. data/.data/spec/std/isa/inst/V/vssseg4e32.v.yaml +33 -0
  1705. data/.data/spec/std/isa/inst/V/vssseg4e64.v.yaml +33 -0
  1706. data/.data/spec/std/isa/inst/V/vssseg4e8.v.yaml +33 -0
  1707. data/.data/spec/std/isa/inst/V/vssseg5e16.v.yaml +33 -0
  1708. data/.data/spec/std/isa/inst/V/vssseg5e32.v.yaml +33 -0
  1709. data/.data/spec/std/isa/inst/V/vssseg5e64.v.yaml +33 -0
  1710. data/.data/spec/std/isa/inst/V/vssseg5e8.v.yaml +33 -0
  1711. data/.data/spec/std/isa/inst/V/vssseg6e16.v.yaml +33 -0
  1712. data/.data/spec/std/isa/inst/V/vssseg6e32.v.yaml +33 -0
  1713. data/.data/spec/std/isa/inst/V/vssseg6e64.v.yaml +33 -0
  1714. data/.data/spec/std/isa/inst/V/vssseg6e8.v.yaml +33 -0
  1715. data/.data/spec/std/isa/inst/V/vssseg7e16.v.yaml +33 -0
  1716. data/.data/spec/std/isa/inst/V/vssseg7e32.v.yaml +33 -0
  1717. data/.data/spec/std/isa/inst/V/vssseg7e64.v.yaml +33 -0
  1718. data/.data/spec/std/isa/inst/V/vssseg7e8.v.yaml +33 -0
  1719. data/.data/spec/std/isa/inst/V/vssseg8e16.v.yaml +33 -0
  1720. data/.data/spec/std/isa/inst/V/vssseg8e32.v.yaml +33 -0
  1721. data/.data/spec/std/isa/inst/V/vssseg8e64.v.yaml +33 -0
  1722. data/.data/spec/std/isa/inst/V/vssseg8e8.v.yaml +33 -0
  1723. data/.data/spec/std/isa/inst/V/vssub.vv.yaml +134 -0
  1724. data/.data/spec/std/isa/inst/V/vssub.vx.yaml +117 -0
  1725. data/.data/spec/std/isa/inst/V/vssubu.vv.yaml +134 -0
  1726. data/.data/spec/std/isa/inst/V/vssubu.vx.yaml +117 -0
  1727. data/.data/spec/std/isa/inst/V/vsub.vv.yaml +134 -0
  1728. data/.data/spec/std/isa/inst/V/vsub.vx.yaml +117 -0
  1729. data/.data/spec/std/isa/inst/V/vsuxei16.v.yaml +54 -0
  1730. data/.data/spec/std/isa/inst/V/vsuxei32.v.yaml +54 -0
  1731. data/.data/spec/std/isa/inst/V/vsuxei64.v.yaml +54 -0
  1732. data/.data/spec/std/isa/inst/V/vsuxei8.v.yaml +54 -0
  1733. data/.data/spec/std/isa/inst/V/vsuxseg2ei16.v.yaml +33 -0
  1734. data/.data/spec/std/isa/inst/V/vsuxseg2ei32.v.yaml +33 -0
  1735. data/.data/spec/std/isa/inst/V/vsuxseg2ei64.v.yaml +33 -0
  1736. data/.data/spec/std/isa/inst/V/vsuxseg2ei8.v.yaml +33 -0
  1737. data/.data/spec/std/isa/inst/V/vsuxseg3ei16.v.yaml +33 -0
  1738. data/.data/spec/std/isa/inst/V/vsuxseg3ei32.v.yaml +33 -0
  1739. data/.data/spec/std/isa/inst/V/vsuxseg3ei64.v.yaml +33 -0
  1740. data/.data/spec/std/isa/inst/V/vsuxseg3ei8.v.yaml +33 -0
  1741. data/.data/spec/std/isa/inst/V/vsuxseg4ei16.v.yaml +33 -0
  1742. data/.data/spec/std/isa/inst/V/vsuxseg4ei32.v.yaml +33 -0
  1743. data/.data/spec/std/isa/inst/V/vsuxseg4ei64.v.yaml +33 -0
  1744. data/.data/spec/std/isa/inst/V/vsuxseg4ei8.v.yaml +33 -0
  1745. data/.data/spec/std/isa/inst/V/vsuxseg5ei16.v.yaml +33 -0
  1746. data/.data/spec/std/isa/inst/V/vsuxseg5ei32.v.yaml +33 -0
  1747. data/.data/spec/std/isa/inst/V/vsuxseg5ei64.v.yaml +33 -0
  1748. data/.data/spec/std/isa/inst/V/vsuxseg5ei8.v.yaml +33 -0
  1749. data/.data/spec/std/isa/inst/V/vsuxseg6ei16.v.yaml +33 -0
  1750. data/.data/spec/std/isa/inst/V/vsuxseg6ei32.v.yaml +33 -0
  1751. data/.data/spec/std/isa/inst/V/vsuxseg6ei64.v.yaml +33 -0
  1752. data/.data/spec/std/isa/inst/V/vsuxseg6ei8.v.yaml +33 -0
  1753. data/.data/spec/std/isa/inst/V/vsuxseg7ei16.v.yaml +33 -0
  1754. data/.data/spec/std/isa/inst/V/vsuxseg7ei32.v.yaml +33 -0
  1755. data/.data/spec/std/isa/inst/V/vsuxseg7ei64.v.yaml +33 -0
  1756. data/.data/spec/std/isa/inst/V/vsuxseg7ei8.v.yaml +33 -0
  1757. data/.data/spec/std/isa/inst/V/vsuxseg8ei16.v.yaml +33 -0
  1758. data/.data/spec/std/isa/inst/V/vsuxseg8ei32.v.yaml +33 -0
  1759. data/.data/spec/std/isa/inst/V/vsuxseg8ei64.v.yaml +33 -0
  1760. data/.data/spec/std/isa/inst/V/vsuxseg8ei8.v.yaml +33 -0
  1761. data/.data/spec/std/isa/inst/V/vwadd.vv.yaml +83 -0
  1762. data/.data/spec/std/isa/inst/V/vwadd.vx.yaml +82 -0
  1763. data/.data/spec/std/isa/inst/V/vwadd.wv.yaml +79 -0
  1764. data/.data/spec/std/isa/inst/V/vwadd.wx.yaml +78 -0
  1765. data/.data/spec/std/isa/inst/V/vwaddu.vv.yaml +83 -0
  1766. data/.data/spec/std/isa/inst/V/vwaddu.vx.yaml +82 -0
  1767. data/.data/spec/std/isa/inst/V/vwaddu.wv.yaml +79 -0
  1768. data/.data/spec/std/isa/inst/V/vwaddu.wx.yaml +78 -0
  1769. data/.data/spec/std/isa/inst/V/vwmacc.vv.yaml +79 -0
  1770. data/.data/spec/std/isa/inst/V/vwmacc.vx.yaml +79 -0
  1771. data/.data/spec/std/isa/inst/V/vwmaccsu.vv.yaml +79 -0
  1772. data/.data/spec/std/isa/inst/V/vwmaccsu.vx.yaml +79 -0
  1773. data/.data/spec/std/isa/inst/V/vwmaccu.vv.yaml +79 -0
  1774. data/.data/spec/std/isa/inst/V/vwmaccu.vx.yaml +79 -0
  1775. data/.data/spec/std/isa/inst/V/vwmaccus.vx.yaml +79 -0
  1776. data/.data/spec/std/isa/inst/V/vwmul.vv.yaml +83 -0
  1777. data/.data/spec/std/isa/inst/V/vwmul.vx.yaml +82 -0
  1778. data/.data/spec/std/isa/inst/V/vwmulsu.vv.yaml +83 -0
  1779. data/.data/spec/std/isa/inst/V/vwmulsu.vx.yaml +82 -0
  1780. data/.data/spec/std/isa/inst/V/vwmulu.vv.yaml +83 -0
  1781. data/.data/spec/std/isa/inst/V/vwmulu.vx.yaml +82 -0
  1782. data/.data/spec/std/isa/inst/V/vwredsum.vs.yaml +79 -0
  1783. data/.data/spec/std/isa/inst/V/vwredsumu.vs.yaml +79 -0
  1784. data/.data/spec/std/isa/inst/V/vwsub.vv.yaml +83 -0
  1785. data/.data/spec/std/isa/inst/V/vwsub.vx.yaml +82 -0
  1786. data/.data/spec/std/isa/inst/V/vwsub.wv.yaml +79 -0
  1787. data/.data/spec/std/isa/inst/V/vwsub.wx.yaml +78 -0
  1788. data/.data/spec/std/isa/inst/V/vwsubu.vv.yaml +83 -0
  1789. data/.data/spec/std/isa/inst/V/vwsubu.vx.yaml +82 -0
  1790. data/.data/spec/std/isa/inst/V/vwsubu.wv.yaml +79 -0
  1791. data/.data/spec/std/isa/inst/V/vwsubu.wx.yaml +78 -0
  1792. data/.data/spec/std/isa/inst/V/vxor.vi.yaml +101 -0
  1793. data/.data/spec/std/isa/inst/V/vxor.vv.yaml +134 -0
  1794. data/.data/spec/std/isa/inst/V/vxor.vx.yaml +117 -0
  1795. data/.data/spec/std/isa/inst/V/vzext.vf2.yaml +75 -0
  1796. data/.data/spec/std/isa/inst/V/vzext.vf4.yaml +75 -0
  1797. data/.data/spec/std/isa/inst/V/vzext.vf8.yaml +75 -0
  1798. data/.data/spec/std/isa/inst/Zaamo/amoadd.SIZE.AQRL.layout +181 -0
  1799. data/.data/spec/std/isa/inst/Zaamo/amoadd.d.aq.yaml +145 -0
  1800. data/.data/spec/std/isa/inst/Zaamo/amoadd.d.aqrl.yaml +147 -0
  1801. data/.data/spec/std/isa/inst/Zaamo/amoadd.d.rl.yaml +145 -0
  1802. data/.data/spec/std/isa/inst/Zaamo/amoadd.d.yaml +143 -0
  1803. data/.data/spec/std/isa/inst/Zaamo/amoadd.w.aq.yaml +143 -0
  1804. data/.data/spec/std/isa/inst/Zaamo/amoadd.w.aqrl.yaml +145 -0
  1805. data/.data/spec/std/isa/inst/Zaamo/amoadd.w.rl.yaml +143 -0
  1806. data/.data/spec/std/isa/inst/Zaamo/amoadd.w.yaml +141 -0
  1807. data/.data/spec/std/isa/inst/Zaamo/amoand.SIZE.AQRL.layout +181 -0
  1808. data/.data/spec/std/isa/inst/Zaamo/amoand.d.aq.yaml +145 -0
  1809. data/.data/spec/std/isa/inst/Zaamo/amoand.d.aqrl.yaml +147 -0
  1810. data/.data/spec/std/isa/inst/Zaamo/amoand.d.rl.yaml +145 -0
  1811. data/.data/spec/std/isa/inst/Zaamo/amoand.d.yaml +143 -0
  1812. data/.data/spec/std/isa/inst/Zaamo/amoand.w.aq.yaml +143 -0
  1813. data/.data/spec/std/isa/inst/Zaamo/amoand.w.aqrl.yaml +145 -0
  1814. data/.data/spec/std/isa/inst/Zaamo/amoand.w.rl.yaml +143 -0
  1815. data/.data/spec/std/isa/inst/Zaamo/amoand.w.yaml +141 -0
  1816. data/.data/spec/std/isa/inst/Zaamo/amomax.SIZE.AQRL.layout +181 -0
  1817. data/.data/spec/std/isa/inst/Zaamo/amomax.d.aq.yaml +145 -0
  1818. data/.data/spec/std/isa/inst/Zaamo/amomax.d.aqrl.yaml +147 -0
  1819. data/.data/spec/std/isa/inst/Zaamo/amomax.d.rl.yaml +145 -0
  1820. data/.data/spec/std/isa/inst/Zaamo/amomax.d.yaml +143 -0
  1821. data/.data/spec/std/isa/inst/Zaamo/amomax.w.aq.yaml +143 -0
  1822. data/.data/spec/std/isa/inst/Zaamo/amomax.w.aqrl.yaml +145 -0
  1823. data/.data/spec/std/isa/inst/Zaamo/amomax.w.rl.yaml +143 -0
  1824. data/.data/spec/std/isa/inst/Zaamo/amomax.w.yaml +141 -0
  1825. data/.data/spec/std/isa/inst/Zaamo/amomaxu.SIZE.AQRL.layout +181 -0
  1826. data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.aq.yaml +145 -0
  1827. data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.aqrl.yaml +147 -0
  1828. data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.rl.yaml +145 -0
  1829. data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.yaml +143 -0
  1830. data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.aq.yaml +143 -0
  1831. data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.aqrl.yaml +145 -0
  1832. data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.rl.yaml +143 -0
  1833. data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.yaml +141 -0
  1834. data/.data/spec/std/isa/inst/Zaamo/amomin.SIZE.AQRL.layout +181 -0
  1835. data/.data/spec/std/isa/inst/Zaamo/amomin.d.aq.yaml +145 -0
  1836. data/.data/spec/std/isa/inst/Zaamo/amomin.d.aqrl.yaml +147 -0
  1837. data/.data/spec/std/isa/inst/Zaamo/amomin.d.rl.yaml +145 -0
  1838. data/.data/spec/std/isa/inst/Zaamo/amomin.d.yaml +143 -0
  1839. data/.data/spec/std/isa/inst/Zaamo/amomin.w.aq.yaml +143 -0
  1840. data/.data/spec/std/isa/inst/Zaamo/amomin.w.aqrl.yaml +145 -0
  1841. data/.data/spec/std/isa/inst/Zaamo/amomin.w.rl.yaml +143 -0
  1842. data/.data/spec/std/isa/inst/Zaamo/amomin.w.yaml +141 -0
  1843. data/.data/spec/std/isa/inst/Zaamo/amominu.SIZE.AQRL.layout +181 -0
  1844. data/.data/spec/std/isa/inst/Zaamo/amominu.d.aq.yaml +145 -0
  1845. data/.data/spec/std/isa/inst/Zaamo/amominu.d.aqrl.yaml +147 -0
  1846. data/.data/spec/std/isa/inst/Zaamo/amominu.d.rl.yaml +145 -0
  1847. data/.data/spec/std/isa/inst/Zaamo/amominu.d.yaml +143 -0
  1848. data/.data/spec/std/isa/inst/Zaamo/amominu.w.aq.yaml +143 -0
  1849. data/.data/spec/std/isa/inst/Zaamo/amominu.w.aqrl.yaml +145 -0
  1850. data/.data/spec/std/isa/inst/Zaamo/amominu.w.rl.yaml +143 -0
  1851. data/.data/spec/std/isa/inst/Zaamo/amominu.w.yaml +141 -0
  1852. data/.data/spec/std/isa/inst/Zaamo/amoor.SIZE.AQRL.layout +181 -0
  1853. data/.data/spec/std/isa/inst/Zaamo/amoor.d.aq.yaml +145 -0
  1854. data/.data/spec/std/isa/inst/Zaamo/amoor.d.aqrl.yaml +147 -0
  1855. data/.data/spec/std/isa/inst/Zaamo/amoor.d.rl.yaml +145 -0
  1856. data/.data/spec/std/isa/inst/Zaamo/amoor.d.yaml +143 -0
  1857. data/.data/spec/std/isa/inst/Zaamo/amoor.w.aq.yaml +143 -0
  1858. data/.data/spec/std/isa/inst/Zaamo/amoor.w.aqrl.yaml +145 -0
  1859. data/.data/spec/std/isa/inst/Zaamo/amoor.w.rl.yaml +143 -0
  1860. data/.data/spec/std/isa/inst/Zaamo/amoor.w.yaml +141 -0
  1861. data/.data/spec/std/isa/inst/Zaamo/amoswap.SIZE.AQRL.layout +180 -0
  1862. data/.data/spec/std/isa/inst/Zaamo/amoswap.d.aq.yaml +144 -0
  1863. data/.data/spec/std/isa/inst/Zaamo/amoswap.d.aqrl.yaml +146 -0
  1864. data/.data/spec/std/isa/inst/Zaamo/amoswap.d.rl.yaml +144 -0
  1865. data/.data/spec/std/isa/inst/Zaamo/amoswap.d.yaml +142 -0
  1866. data/.data/spec/std/isa/inst/Zaamo/amoswap.w.aq.yaml +142 -0
  1867. data/.data/spec/std/isa/inst/Zaamo/amoswap.w.aqrl.yaml +144 -0
  1868. data/.data/spec/std/isa/inst/Zaamo/amoswap.w.rl.yaml +142 -0
  1869. data/.data/spec/std/isa/inst/Zaamo/amoswap.w.yaml +140 -0
  1870. data/.data/spec/std/isa/inst/Zaamo/amoxor.SIZE.AQRL.layout +181 -0
  1871. data/.data/spec/std/isa/inst/Zaamo/amoxor.d.aq.yaml +145 -0
  1872. data/.data/spec/std/isa/inst/Zaamo/amoxor.d.aqrl.yaml +147 -0
  1873. data/.data/spec/std/isa/inst/Zaamo/amoxor.d.rl.yaml +145 -0
  1874. data/.data/spec/std/isa/inst/Zaamo/amoxor.d.yaml +143 -0
  1875. data/.data/spec/std/isa/inst/Zaamo/amoxor.w.aq.yaml +143 -0
  1876. data/.data/spec/std/isa/inst/Zaamo/amoxor.w.aqrl.yaml +145 -0
  1877. data/.data/spec/std/isa/inst/Zaamo/amoxor.w.rl.yaml +143 -0
  1878. data/.data/spec/std/isa/inst/Zaamo/amoxor.w.yaml +141 -0
  1879. data/.data/spec/std/isa/inst/Zabha/amoadd.b.aq.yaml +143 -0
  1880. data/.data/spec/std/isa/inst/Zabha/amoadd.b.aqrl.yaml +145 -0
  1881. data/.data/spec/std/isa/inst/Zabha/amoadd.b.rl.yaml +143 -0
  1882. data/.data/spec/std/isa/inst/Zabha/amoadd.b.yaml +141 -0
  1883. data/.data/spec/std/isa/inst/Zabha/amoadd.h.aq.yaml +143 -0
  1884. data/.data/spec/std/isa/inst/Zabha/amoadd.h.aqrl.yaml +145 -0
  1885. data/.data/spec/std/isa/inst/Zabha/amoadd.h.rl.yaml +143 -0
  1886. data/.data/spec/std/isa/inst/Zabha/amoadd.h.yaml +141 -0
  1887. data/.data/spec/std/isa/inst/Zabha/amoand.b.aq.yaml +143 -0
  1888. data/.data/spec/std/isa/inst/Zabha/amoand.b.aqrl.yaml +145 -0
  1889. data/.data/spec/std/isa/inst/Zabha/amoand.b.rl.yaml +143 -0
  1890. data/.data/spec/std/isa/inst/Zabha/amoand.b.yaml +141 -0
  1891. data/.data/spec/std/isa/inst/Zabha/amoand.h.aq.yaml +143 -0
  1892. data/.data/spec/std/isa/inst/Zabha/amoand.h.aqrl.yaml +145 -0
  1893. data/.data/spec/std/isa/inst/Zabha/amoand.h.rl.yaml +143 -0
  1894. data/.data/spec/std/isa/inst/Zabha/amoand.h.yaml +141 -0
  1895. data/.data/spec/std/isa/inst/Zabha/amocas.b.aq.yaml +135 -0
  1896. data/.data/spec/std/isa/inst/Zabha/amocas.b.aqrl.yaml +137 -0
  1897. data/.data/spec/std/isa/inst/Zabha/amocas.b.rl.yaml +135 -0
  1898. data/.data/spec/std/isa/inst/Zabha/amocas.b.yaml +133 -0
  1899. data/.data/spec/std/isa/inst/Zabha/amocas.h.aq.yaml +135 -0
  1900. data/.data/spec/std/isa/inst/Zabha/amocas.h.aqrl.yaml +137 -0
  1901. data/.data/spec/std/isa/inst/Zabha/amocas.h.rl.yaml +135 -0
  1902. data/.data/spec/std/isa/inst/Zabha/amocas.h.yaml +133 -0
  1903. data/.data/spec/std/isa/inst/Zabha/amomax.b.aq.yaml +143 -0
  1904. data/.data/spec/std/isa/inst/Zabha/amomax.b.aqrl.yaml +145 -0
  1905. data/.data/spec/std/isa/inst/Zabha/amomax.b.rl.yaml +143 -0
  1906. data/.data/spec/std/isa/inst/Zabha/amomax.b.yaml +141 -0
  1907. data/.data/spec/std/isa/inst/Zabha/amomax.h.aq.yaml +143 -0
  1908. data/.data/spec/std/isa/inst/Zabha/amomax.h.aqrl.yaml +145 -0
  1909. data/.data/spec/std/isa/inst/Zabha/amomax.h.rl.yaml +143 -0
  1910. data/.data/spec/std/isa/inst/Zabha/amomax.h.yaml +141 -0
  1911. data/.data/spec/std/isa/inst/Zabha/amomaxu.b.aq.yaml +143 -0
  1912. data/.data/spec/std/isa/inst/Zabha/amomaxu.b.aqrl.yaml +145 -0
  1913. data/.data/spec/std/isa/inst/Zabha/amomaxu.b.rl.yaml +143 -0
  1914. data/.data/spec/std/isa/inst/Zabha/amomaxu.b.yaml +141 -0
  1915. data/.data/spec/std/isa/inst/Zabha/amomaxu.h.aq.yaml +143 -0
  1916. data/.data/spec/std/isa/inst/Zabha/amomaxu.h.aqrl.yaml +145 -0
  1917. data/.data/spec/std/isa/inst/Zabha/amomaxu.h.rl.yaml +143 -0
  1918. data/.data/spec/std/isa/inst/Zabha/amomaxu.h.yaml +141 -0
  1919. data/.data/spec/std/isa/inst/Zabha/amomin.b.aq.yaml +143 -0
  1920. data/.data/spec/std/isa/inst/Zabha/amomin.b.aqrl.yaml +145 -0
  1921. data/.data/spec/std/isa/inst/Zabha/amomin.b.rl.yaml +143 -0
  1922. data/.data/spec/std/isa/inst/Zabha/amomin.b.yaml +141 -0
  1923. data/.data/spec/std/isa/inst/Zabha/amomin.h.aq.yaml +143 -0
  1924. data/.data/spec/std/isa/inst/Zabha/amomin.h.aqrl.yaml +145 -0
  1925. data/.data/spec/std/isa/inst/Zabha/amomin.h.rl.yaml +143 -0
  1926. data/.data/spec/std/isa/inst/Zabha/amomin.h.yaml +141 -0
  1927. data/.data/spec/std/isa/inst/Zabha/amominu.b.aq.yaml +143 -0
  1928. data/.data/spec/std/isa/inst/Zabha/amominu.b.aqrl.yaml +145 -0
  1929. data/.data/spec/std/isa/inst/Zabha/amominu.b.rl.yaml +143 -0
  1930. data/.data/spec/std/isa/inst/Zabha/amominu.b.yaml +141 -0
  1931. data/.data/spec/std/isa/inst/Zabha/amominu.h.aq.yaml +143 -0
  1932. data/.data/spec/std/isa/inst/Zabha/amominu.h.aqrl.yaml +145 -0
  1933. data/.data/spec/std/isa/inst/Zabha/amominu.h.rl.yaml +143 -0
  1934. data/.data/spec/std/isa/inst/Zabha/amominu.h.yaml +141 -0
  1935. data/.data/spec/std/isa/inst/Zabha/amoor.b.aq.yaml +143 -0
  1936. data/.data/spec/std/isa/inst/Zabha/amoor.b.aqrl.yaml +145 -0
  1937. data/.data/spec/std/isa/inst/Zabha/amoor.b.rl.yaml +143 -0
  1938. data/.data/spec/std/isa/inst/Zabha/amoor.b.yaml +141 -0
  1939. data/.data/spec/std/isa/inst/Zabha/amoor.h.aq.yaml +143 -0
  1940. data/.data/spec/std/isa/inst/Zabha/amoor.h.aqrl.yaml +145 -0
  1941. data/.data/spec/std/isa/inst/Zabha/amoor.h.rl.yaml +143 -0
  1942. data/.data/spec/std/isa/inst/Zabha/amoor.h.yaml +141 -0
  1943. data/.data/spec/std/isa/inst/Zabha/amoswap.b.aq.yaml +142 -0
  1944. data/.data/spec/std/isa/inst/Zabha/amoswap.b.aqrl.yaml +144 -0
  1945. data/.data/spec/std/isa/inst/Zabha/amoswap.b.rl.yaml +142 -0
  1946. data/.data/spec/std/isa/inst/Zabha/amoswap.b.yaml +140 -0
  1947. data/.data/spec/std/isa/inst/Zabha/amoswap.h.aq.yaml +142 -0
  1948. data/.data/spec/std/isa/inst/Zabha/amoswap.h.aqrl.yaml +144 -0
  1949. data/.data/spec/std/isa/inst/Zabha/amoswap.h.rl.yaml +142 -0
  1950. data/.data/spec/std/isa/inst/Zabha/amoswap.h.yaml +140 -0
  1951. data/.data/spec/std/isa/inst/Zabha/amoxor.b.aq.yaml +143 -0
  1952. data/.data/spec/std/isa/inst/Zabha/amoxor.b.aqrl.yaml +145 -0
  1953. data/.data/spec/std/isa/inst/Zabha/amoxor.b.rl.yaml +143 -0
  1954. data/.data/spec/std/isa/inst/Zabha/amoxor.b.yaml +141 -0
  1955. data/.data/spec/std/isa/inst/Zabha/amoxor.h.aq.yaml +143 -0
  1956. data/.data/spec/std/isa/inst/Zabha/amoxor.h.aqrl.yaml +145 -0
  1957. data/.data/spec/std/isa/inst/Zabha/amoxor.h.rl.yaml +143 -0
  1958. data/.data/spec/std/isa/inst/Zabha/amoxor.h.yaml +141 -0
  1959. data/.data/spec/std/isa/inst/Zacas/amocas.SIZE.AQRL.layout +174 -0
  1960. data/.data/spec/std/isa/inst/Zacas/amocas.d.aq.yaml +135 -0
  1961. data/.data/spec/std/isa/inst/Zacas/amocas.d.aqrl.yaml +137 -0
  1962. data/.data/spec/std/isa/inst/Zacas/amocas.d.rl.yaml +135 -0
  1963. data/.data/spec/std/isa/inst/Zacas/amocas.d.yaml +133 -0
  1964. data/.data/spec/std/isa/inst/Zacas/amocas.q.aq.yaml +137 -0
  1965. data/.data/spec/std/isa/inst/Zacas/amocas.q.aqrl.yaml +139 -0
  1966. data/.data/spec/std/isa/inst/Zacas/amocas.q.rl.yaml +137 -0
  1967. data/.data/spec/std/isa/inst/Zacas/amocas.q.yaml +135 -0
  1968. data/.data/spec/std/isa/inst/Zacas/amocas.w.aq.yaml +135 -0
  1969. data/.data/spec/std/isa/inst/Zacas/amocas.w.aqrl.yaml +137 -0
  1970. data/.data/spec/std/isa/inst/Zacas/amocas.w.rl.yaml +135 -0
  1971. data/.data/spec/std/isa/inst/Zacas/amocas.w.yaml +133 -0
  1972. data/.data/spec/std/isa/inst/Zalasr/lSIZE.AQRL.layout +80 -0
  1973. data/.data/spec/std/isa/inst/Zalasr/lb.aq.yaml +65 -0
  1974. data/.data/spec/std/isa/inst/Zalasr/lb.aqrl.yaml +65 -0
  1975. data/.data/spec/std/isa/inst/Zalasr/ld.aq.yaml +65 -0
  1976. data/.data/spec/std/isa/inst/Zalasr/ld.aqrl.yaml +65 -0
  1977. data/.data/spec/std/isa/inst/Zalasr/lh.aq.yaml +65 -0
  1978. data/.data/spec/std/isa/inst/Zalasr/lh.aqrl.yaml +65 -0
  1979. data/.data/spec/std/isa/inst/Zalasr/lw.aq.yaml +65 -0
  1980. data/.data/spec/std/isa/inst/Zalasr/lw.aqrl.yaml +65 -0
  1981. data/.data/spec/std/isa/inst/Zalasr/sSIZE.AQRL.layout +95 -0
  1982. data/.data/spec/std/isa/inst/Zalasr/sb.aqrl.yaml +80 -0
  1983. data/.data/spec/std/isa/inst/Zalasr/sb.rl.yaml +80 -0
  1984. data/.data/spec/std/isa/inst/Zalasr/sd.aqrl.yaml +80 -0
  1985. data/.data/spec/std/isa/inst/Zalasr/sd.rl.yaml +80 -0
  1986. data/.data/spec/std/isa/inst/Zalasr/sh.aqrl.yaml +80 -0
  1987. data/.data/spec/std/isa/inst/Zalasr/sh.rl.yaml +80 -0
  1988. data/.data/spec/std/isa/inst/Zalasr/sw.aqrl.yaml +80 -0
  1989. data/.data/spec/std/isa/inst/Zalasr/sw.rl.yaml +80 -0
  1990. data/.data/spec/std/isa/inst/Zalrsc/lr.SIZE.AQRL.layout +205 -0
  1991. data/.data/spec/std/isa/inst/Zalrsc/lr.d.aq.yaml +151 -0
  1992. data/.data/spec/std/isa/inst/Zalrsc/lr.d.aqrl.yaml +151 -0
  1993. data/.data/spec/std/isa/inst/Zalrsc/lr.d.rl.yaml +151 -0
  1994. data/.data/spec/std/isa/inst/Zalrsc/lr.d.yaml +151 -0
  1995. data/.data/spec/std/isa/inst/Zalrsc/lr.w.aq.yaml +158 -0
  1996. data/.data/spec/std/isa/inst/Zalrsc/lr.w.aqrl.yaml +158 -0
  1997. data/.data/spec/std/isa/inst/Zalrsc/lr.w.rl.yaml +158 -0
  1998. data/.data/spec/std/isa/inst/Zalrsc/lr.w.yaml +158 -0
  1999. data/.data/spec/std/isa/inst/Zalrsc/sc.SIZE.AQRL.layout +288 -0
  2000. data/.data/spec/std/isa/inst/Zalrsc/sc.d.aq.yaml +245 -0
  2001. data/.data/spec/std/isa/inst/Zalrsc/sc.d.aqrl.yaml +245 -0
  2002. data/.data/spec/std/isa/inst/Zalrsc/sc.d.rl.yaml +245 -0
  2003. data/.data/spec/std/isa/inst/Zalrsc/sc.d.yaml +245 -0
  2004. data/.data/spec/std/isa/inst/Zalrsc/sc.w.aq.yaml +247 -0
  2005. data/.data/spec/std/isa/inst/Zalrsc/sc.w.aqrl.yaml +247 -0
  2006. data/.data/spec/std/isa/inst/Zalrsc/sc.w.rl.yaml +247 -0
  2007. data/.data/spec/std/isa/inst/Zalrsc/sc.w.yaml +247 -0
  2008. data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +77 -0
  2009. data/.data/spec/std/isa/inst/Zawrs/wrs.sto.yaml +57 -0
  2010. data/.data/spec/std/isa/inst/Zba/add.uw.yaml +63 -0
  2011. data/.data/spec/std/isa/inst/Zba/sh1add.uw.yaml +59 -0
  2012. data/.data/spec/std/isa/inst/Zba/sh1add.yaml +54 -0
  2013. data/.data/spec/std/isa/inst/Zba/sh2add.uw.yaml +59 -0
  2014. data/.data/spec/std/isa/inst/Zba/sh2add.yaml +54 -0
  2015. data/.data/spec/std/isa/inst/Zba/sh3add.uw.yaml +59 -0
  2016. data/.data/spec/std/isa/inst/Zba/sh3add.yaml +54 -0
  2017. data/.data/spec/std/isa/inst/Zba/slli.uw.yaml +54 -0
  2018. data/.data/spec/std/isa/inst/Zbb/clz.yaml +54 -0
  2019. data/.data/spec/std/isa/inst/Zbb/clzw.yaml +55 -0
  2020. data/.data/spec/std/isa/inst/Zbb/cpop.yaml +69 -0
  2021. data/.data/spec/std/isa/inst/Zbb/cpopw.yaml +71 -0
  2022. data/.data/spec/std/isa/inst/Zbb/ctz.yaml +59 -0
  2023. data/.data/spec/std/isa/inst/Zbb/ctzw.yaml +57 -0
  2024. data/.data/spec/std/isa/inst/Zbb/max.yaml +71 -0
  2025. data/.data/spec/std/isa/inst/Zbb/maxu.yaml +63 -0
  2026. data/.data/spec/std/isa/inst/Zbb/min.yaml +63 -0
  2027. data/.data/spec/std/isa/inst/Zbb/minu.yaml +63 -0
  2028. data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +59 -0
  2029. data/.data/spec/std/isa/inst/Zbb/sext.b.yaml +55 -0
  2030. data/.data/spec/std/isa/inst/Zbb/sext.h.yaml +55 -0
  2031. data/.data/spec/std/isa/inst/Zbb/zext.h.yaml +69 -0
  2032. data/.data/spec/std/isa/inst/Zbc/clmulr.yaml +61 -0
  2033. data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +51 -0
  2034. data/.data/spec/std/isa/inst/Zbkb/pack.yaml +34 -0
  2035. data/.data/spec/std/isa/inst/Zbkb/packh.yaml +31 -0
  2036. data/.data/spec/std/isa/inst/Zbkb/packw.yaml +36 -0
  2037. data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +53 -0
  2038. data/.data/spec/std/isa/inst/Zbkb/zip.yaml +53 -0
  2039. data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +64 -0
  2040. data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +64 -0
  2041. data/.data/spec/std/isa/inst/Zbs/bclr.yaml +59 -0
  2042. data/.data/spec/std/isa/inst/Zbs/bclri.yaml +69 -0
  2043. data/.data/spec/std/isa/inst/Zbs/bext.yaml +59 -0
  2044. data/.data/spec/std/isa/inst/Zbs/bexti.yaml +69 -0
  2045. data/.data/spec/std/isa/inst/Zbs/binv.yaml +59 -0
  2046. data/.data/spec/std/isa/inst/Zbs/binvi.yaml +69 -0
  2047. data/.data/spec/std/isa/inst/Zbs/bset.yaml +59 -0
  2048. data/.data/spec/std/isa/inst/Zbs/bseti.yaml +69 -0
  2049. data/.data/spec/std/isa/inst/Zcb/c.lbu.yaml +72 -0
  2050. data/.data/spec/std/isa/inst/Zcb/c.lh.yaml +73 -0
  2051. data/.data/spec/std/isa/inst/Zcb/c.lhu.yaml +73 -0
  2052. data/.data/spec/std/isa/inst/Zcb/c.mul.yaml +53 -0
  2053. data/.data/spec/std/isa/inst/Zcb/c.not.yaml +45 -0
  2054. data/.data/spec/std/isa/inst/Zcb/c.sb.yaml +39 -0
  2055. data/.data/spec/std/isa/inst/Zcb/c.sext.b.yaml +60 -0
  2056. data/.data/spec/std/isa/inst/Zcb/c.sext.h.yaml +60 -0
  2057. data/.data/spec/std/isa/inst/Zcb/c.sh.yaml +40 -0
  2058. data/.data/spec/std/isa/inst/Zcb/c.zext.b.yaml +60 -0
  2059. data/.data/spec/std/isa/inst/Zcb/c.zext.h.yaml +60 -0
  2060. data/.data/spec/std/isa/inst/Zcb/c.zext.w.yaml +61 -0
  2061. data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +41 -0
  2062. data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +42 -0
  2063. data/.data/spec/std/isa/inst/Zcd/c.fsd.yaml +41 -0
  2064. data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +42 -0
  2065. data/.data/spec/std/isa/inst/Zcf/c.flw.yaml +41 -0
  2066. data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +42 -0
  2067. data/.data/spec/std/isa/inst/Zcf/c.fsw.yaml +41 -0
  2068. data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +42 -0
  2069. data/.data/spec/std/isa/inst/Zcmop/c.mop.1.yaml +31 -0
  2070. data/.data/spec/std/isa/inst/Zcmop/c.mop.11.yaml +31 -0
  2071. data/.data/spec/std/isa/inst/Zcmop/c.mop.13.yaml +31 -0
  2072. data/.data/spec/std/isa/inst/Zcmop/c.mop.15.yaml +31 -0
  2073. data/.data/spec/std/isa/inst/Zcmop/c.mop.3.yaml +31 -0
  2074. data/.data/spec/std/isa/inst/Zcmop/c.mop.5.yaml +31 -0
  2075. data/.data/spec/std/isa/inst/Zcmop/c.mop.7.yaml +31 -0
  2076. data/.data/spec/std/isa/inst/Zcmop/c.mop.9.yaml +31 -0
  2077. data/.data/spec/std/isa/inst/Zcmop/c.mop.N.layout +45 -0
  2078. data/.data/spec/std/isa/inst/Zcmp/cm.mva01s.yaml +36 -0
  2079. data/.data/spec/std/isa/inst/Zcmp/cm.mvsa01.yaml +38 -0
  2080. data/.data/spec/std/isa/inst/Zcmp/cm.pop.yaml +86 -0
  2081. data/.data/spec/std/isa/inst/Zcmp/cm.popret.yaml +87 -0
  2082. data/.data/spec/std/isa/inst/Zcmp/cm.popretz.yaml +88 -0
  2083. data/.data/spec/std/isa/inst/Zcmp/cm.push.yaml +87 -0
  2084. data/.data/spec/std/isa/inst/Zcmt/cm.jalt.yaml +65 -0
  2085. data/.data/spec/std/isa/inst/Zcmt/cm.jt.yaml +60 -0
  2086. data/.data/spec/std/isa/inst/Zfa/fli.s.yaml +74 -0
  2087. data/.data/spec/std/isa/inst/Zfa/fmaxm.s.yaml +55 -0
  2088. data/.data/spec/std/isa/inst/Zfa/fminm.s.yaml +55 -0
  2089. data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +63 -0
  2090. data/.data/spec/std/isa/inst/Zfa/froundnx.s.yaml +53 -0
  2091. data/.data/spec/std/isa/inst/Zfbfmin/fcvt.bf16.s.yaml +31 -0
  2092. data/.data/spec/std/isa/inst/Zfbfmin/fcvt.s.bf16.yaml +31 -0
  2093. data/.data/spec/std/isa/inst/Zfh/fadd.h.yaml +35 -0
  2094. data/.data/spec/std/isa/inst/Zfh/fclass.h.yaml +31 -0
  2095. data/.data/spec/std/isa/inst/Zfh/fcvt.d.h.yaml +37 -0
  2096. data/.data/spec/std/isa/inst/Zfh/fcvt.h.d.yaml +37 -0
  2097. data/.data/spec/std/isa/inst/Zfh/fcvt.h.l.yaml +35 -0
  2098. data/.data/spec/std/isa/inst/Zfh/fcvt.h.lu.yaml +35 -0
  2099. data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +94 -0
  2100. data/.data/spec/std/isa/inst/Zfh/fcvt.h.w.yaml +33 -0
  2101. data/.data/spec/std/isa/inst/Zfh/fcvt.h.wu.yaml +33 -0
  2102. data/.data/spec/std/isa/inst/Zfh/fcvt.l.h.yaml +35 -0
  2103. data/.data/spec/std/isa/inst/Zfh/fcvt.lu.h.yaml +35 -0
  2104. data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +91 -0
  2105. data/.data/spec/std/isa/inst/Zfh/fcvt.w.h.yaml +33 -0
  2106. data/.data/spec/std/isa/inst/Zfh/fcvt.wu.h.yaml +33 -0
  2107. data/.data/spec/std/isa/inst/Zfh/fdiv.h.yaml +35 -0
  2108. data/.data/spec/std/isa/inst/Zfh/feq.h.yaml +33 -0
  2109. data/.data/spec/std/isa/inst/Zfh/fle.h.yaml +33 -0
  2110. data/.data/spec/std/isa/inst/Zfh/fleq.h.yaml +33 -0
  2111. data/.data/spec/std/isa/inst/Zfh/flh.yaml +78 -0
  2112. data/.data/spec/std/isa/inst/Zfh/fli.h.yaml +31 -0
  2113. data/.data/spec/std/isa/inst/Zfh/flt.h.yaml +33 -0
  2114. data/.data/spec/std/isa/inst/Zfh/fltq.h.yaml +33 -0
  2115. data/.data/spec/std/isa/inst/Zfh/fmadd.h.yaml +37 -0
  2116. data/.data/spec/std/isa/inst/Zfh/fmax.h.yaml +33 -0
  2117. data/.data/spec/std/isa/inst/Zfh/fmaxm.h.yaml +33 -0
  2118. data/.data/spec/std/isa/inst/Zfh/fmin.h.yaml +33 -0
  2119. data/.data/spec/std/isa/inst/Zfh/fminm.h.yaml +33 -0
  2120. data/.data/spec/std/isa/inst/Zfh/fmsub.h.yaml +37 -0
  2121. data/.data/spec/std/isa/inst/Zfh/fmul.h.yaml +35 -0
  2122. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +51 -0
  2123. data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +51 -0
  2124. data/.data/spec/std/isa/inst/Zfh/fnmadd.h.yaml +37 -0
  2125. data/.data/spec/std/isa/inst/Zfh/fnmsub.h.yaml +37 -0
  2126. data/.data/spec/std/isa/inst/Zfh/fround.h.yaml +33 -0
  2127. data/.data/spec/std/isa/inst/Zfh/froundnx.h.yaml +33 -0
  2128. data/.data/spec/std/isa/inst/Zfh/fsgnj.h.yaml +33 -0
  2129. data/.data/spec/std/isa/inst/Zfh/fsgnjn.h.yaml +33 -0
  2130. data/.data/spec/std/isa/inst/Zfh/fsgnjx.h.yaml +33 -0
  2131. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +89 -0
  2132. data/.data/spec/std/isa/inst/Zfh/fsqrt.h.yaml +33 -0
  2133. data/.data/spec/std/isa/inst/Zfh/fsub.h.yaml +35 -0
  2134. data/.data/spec/std/isa/inst/Zicbom/cbo.clean.yaml +77 -0
  2135. data/.data/spec/std/isa/inst/Zicbom/cbo.flush.yaml +75 -0
  2136. data/.data/spec/std/isa/inst/Zicbom/cbo.inval.yaml +116 -0
  2137. data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +34 -0
  2138. data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +34 -0
  2139. data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +34 -0
  2140. data/.data/spec/std/isa/inst/Zicboz/cbo.zero.yaml +107 -0
  2141. data/.data/spec/std/isa/inst/Zicfilp/lpad.yaml +28 -0
  2142. data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.d.yaml +35 -0
  2143. data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml +35 -0
  2144. data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml +25 -0
  2145. data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml +25 -0
  2146. data/.data/spec/std/isa/inst/Zicfiss/sspush.x1.yaml +25 -0
  2147. data/.data/spec/std/isa/inst/Zicfiss/sspush.x5.yaml +25 -0
  2148. data/.data/spec/std/isa/inst/Zicfiss/ssrdp.yaml +28 -0
  2149. data/.data/spec/std/isa/inst/Zicond/czero.eqz.yaml +50 -0
  2150. data/.data/spec/std/isa/inst/Zicond/czero.nez.yaml +50 -0
  2151. data/.data/spec/std/isa/inst/Zicsr/csrrc.yaml +68 -0
  2152. data/.data/spec/std/isa/inst/Zicsr/csrrci.yaml +62 -0
  2153. data/.data/spec/std/isa/inst/Zicsr/csrrs.yaml +114 -0
  2154. data/.data/spec/std/isa/inst/Zicsr/csrrsi.yaml +62 -0
  2155. data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +90 -0
  2156. data/.data/spec/std/isa/inst/Zicsr/csrrwi.yaml +88 -0
  2157. data/.data/spec/std/isa/inst/Zifencei/fence.i.yaml +65 -0
  2158. data/.data/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml +27 -0
  2159. data/.data/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml +27 -0
  2160. data/.data/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml +27 -0
  2161. data/.data/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml +27 -0
  2162. data/.data/spec/std/isa/inst/Zihintntl/ntl.all.yaml +25 -0
  2163. data/.data/spec/std/isa/inst/Zihintntl/ntl.p1.yaml +25 -0
  2164. data/.data/spec/std/isa/inst/Zihintntl/ntl.pall.yaml +25 -0
  2165. data/.data/spec/std/isa/inst/Zihintntl/ntl.s1.yaml +25 -0
  2166. data/.data/spec/std/isa/inst/Zihintpause/pause.yaml +76 -0
  2167. data/.data/spec/std/isa/inst/Zimop/mop.r.0.yaml +36 -0
  2168. data/.data/spec/std/isa/inst/Zimop/mop.r.1.yaml +36 -0
  2169. data/.data/spec/std/isa/inst/Zimop/mop.r.10.yaml +36 -0
  2170. data/.data/spec/std/isa/inst/Zimop/mop.r.11.yaml +36 -0
  2171. data/.data/spec/std/isa/inst/Zimop/mop.r.12.yaml +36 -0
  2172. data/.data/spec/std/isa/inst/Zimop/mop.r.13.yaml +36 -0
  2173. data/.data/spec/std/isa/inst/Zimop/mop.r.14.yaml +36 -0
  2174. data/.data/spec/std/isa/inst/Zimop/mop.r.15.yaml +36 -0
  2175. data/.data/spec/std/isa/inst/Zimop/mop.r.16.yaml +36 -0
  2176. data/.data/spec/std/isa/inst/Zimop/mop.r.17.yaml +36 -0
  2177. data/.data/spec/std/isa/inst/Zimop/mop.r.18.yaml +36 -0
  2178. data/.data/spec/std/isa/inst/Zimop/mop.r.19.yaml +36 -0
  2179. data/.data/spec/std/isa/inst/Zimop/mop.r.2.yaml +36 -0
  2180. data/.data/spec/std/isa/inst/Zimop/mop.r.20.yaml +36 -0
  2181. data/.data/spec/std/isa/inst/Zimop/mop.r.21.yaml +36 -0
  2182. data/.data/spec/std/isa/inst/Zimop/mop.r.22.yaml +36 -0
  2183. data/.data/spec/std/isa/inst/Zimop/mop.r.23.yaml +36 -0
  2184. data/.data/spec/std/isa/inst/Zimop/mop.r.24.yaml +36 -0
  2185. data/.data/spec/std/isa/inst/Zimop/mop.r.25.yaml +36 -0
  2186. data/.data/spec/std/isa/inst/Zimop/mop.r.26.yaml +36 -0
  2187. data/.data/spec/std/isa/inst/Zimop/mop.r.27.yaml +36 -0
  2188. data/.data/spec/std/isa/inst/Zimop/mop.r.28.yaml +40 -0
  2189. data/.data/spec/std/isa/inst/Zimop/mop.r.29.yaml +36 -0
  2190. data/.data/spec/std/isa/inst/Zimop/mop.r.3.yaml +36 -0
  2191. data/.data/spec/std/isa/inst/Zimop/mop.r.30.yaml +36 -0
  2192. data/.data/spec/std/isa/inst/Zimop/mop.r.31.yaml +36 -0
  2193. data/.data/spec/std/isa/inst/Zimop/mop.r.4.yaml +36 -0
  2194. data/.data/spec/std/isa/inst/Zimop/mop.r.5.yaml +36 -0
  2195. data/.data/spec/std/isa/inst/Zimop/mop.r.6.yaml +36 -0
  2196. data/.data/spec/std/isa/inst/Zimop/mop.r.7.yaml +36 -0
  2197. data/.data/spec/std/isa/inst/Zimop/mop.r.8.yaml +36 -0
  2198. data/.data/spec/std/isa/inst/Zimop/mop.r.9.yaml +36 -0
  2199. data/.data/spec/std/isa/inst/Zimop/mop.r.N.layout +58 -0
  2200. data/.data/spec/std/isa/inst/Zimop/mop.rr.0.yaml +39 -0
  2201. data/.data/spec/std/isa/inst/Zimop/mop.rr.1.yaml +39 -0
  2202. data/.data/spec/std/isa/inst/Zimop/mop.rr.2.yaml +39 -0
  2203. data/.data/spec/std/isa/inst/Zimop/mop.rr.3.yaml +39 -0
  2204. data/.data/spec/std/isa/inst/Zimop/mop.rr.4.yaml +39 -0
  2205. data/.data/spec/std/isa/inst/Zimop/mop.rr.5.yaml +39 -0
  2206. data/.data/spec/std/isa/inst/Zimop/mop.rr.6.yaml +39 -0
  2207. data/.data/spec/std/isa/inst/Zimop/mop.rr.7.yaml +42 -0
  2208. data/.data/spec/std/isa/inst/Zimop/mop.rr.N.layout +58 -0
  2209. data/.data/spec/std/isa/inst/Zkn/aes64ks1i.yaml +37 -0
  2210. data/.data/spec/std/isa/inst/Zkn/aes64ks2.yaml +36 -0
  2211. data/.data/spec/std/isa/inst/Zknd/aes32dsi.yaml +37 -0
  2212. data/.data/spec/std/isa/inst/Zknd/aes32dsmi.yaml +38 -0
  2213. data/.data/spec/std/isa/inst/Zknd/aes64ds.yaml +34 -0
  2214. data/.data/spec/std/isa/inst/Zknd/aes64dsm.yaml +34 -0
  2215. data/.data/spec/std/isa/inst/Zknd/aes64im.yaml +33 -0
  2216. data/.data/spec/std/isa/inst/Zkne/aes32esi.yaml +35 -0
  2217. data/.data/spec/std/isa/inst/Zkne/aes32esmi.yaml +35 -0
  2218. data/.data/spec/std/isa/inst/Zkne/aes64es.yaml +34 -0
  2219. data/.data/spec/std/isa/inst/Zkne/aes64esm.yaml +34 -0
  2220. data/.data/spec/std/isa/inst/Zknh/sha256sig0.yaml +29 -0
  2221. data/.data/spec/std/isa/inst/Zknh/sha256sig1.yaml +29 -0
  2222. data/.data/spec/std/isa/inst/Zknh/sha256sum0.yaml +29 -0
  2223. data/.data/spec/std/isa/inst/Zknh/sha256sum1.yaml +29 -0
  2224. data/.data/spec/std/isa/inst/Zknh/sha512sig0.yaml +31 -0
  2225. data/.data/spec/std/isa/inst/Zknh/sha512sig0h.yaml +33 -0
  2226. data/.data/spec/std/isa/inst/Zknh/sha512sig0l.yaml +33 -0
  2227. data/.data/spec/std/isa/inst/Zknh/sha512sig1.yaml +31 -0
  2228. data/.data/spec/std/isa/inst/Zknh/sha512sig1h.yaml +33 -0
  2229. data/.data/spec/std/isa/inst/Zknh/sha512sig1l.yaml +33 -0
  2230. data/.data/spec/std/isa/inst/Zknh/sha512sum0.yaml +31 -0
  2231. data/.data/spec/std/isa/inst/Zknh/sha512sum0r.yaml +33 -0
  2232. data/.data/spec/std/isa/inst/Zknh/sha512sum1.yaml +31 -0
  2233. data/.data/spec/std/isa/inst/Zknh/sha512sum1r.yaml +33 -0
  2234. data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +29 -0
  2235. data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +29 -0
  2236. data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +33 -0
  2237. data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +33 -0
  2238. data/.data/spec/std/isa/inst/Zvbb/vandn.vv.yaml +33 -0
  2239. data/.data/spec/std/isa/inst/Zvbb/vandn.vx.yaml +33 -0
  2240. data/.data/spec/std/isa/inst/Zvbb/vbrev.v.yaml +31 -0
  2241. data/.data/spec/std/isa/inst/Zvbb/vbrev8.v.yaml +31 -0
  2242. data/.data/spec/std/isa/inst/Zvbb/vclz.v.yaml +31 -0
  2243. data/.data/spec/std/isa/inst/Zvbb/vcpop.v.yaml +31 -0
  2244. data/.data/spec/std/isa/inst/Zvbb/vctz.v.yaml +31 -0
  2245. data/.data/spec/std/isa/inst/Zvbb/vrev8.v.yaml +31 -0
  2246. data/.data/spec/std/isa/inst/Zvbb/vrol.vv.yaml +33 -0
  2247. data/.data/spec/std/isa/inst/Zvbb/vrol.vx.yaml +33 -0
  2248. data/.data/spec/std/isa/inst/Zvbb/vror.vi.yaml +33 -0
  2249. data/.data/spec/std/isa/inst/Zvbb/vror.vv.yaml +33 -0
  2250. data/.data/spec/std/isa/inst/Zvbb/vror.vx.yaml +33 -0
  2251. data/.data/spec/std/isa/inst/Zvbb/vwsll.vi.yaml +33 -0
  2252. data/.data/spec/std/isa/inst/Zvbb/vwsll.vv.yaml +33 -0
  2253. data/.data/spec/std/isa/inst/Zvbb/vwsll.vx.yaml +33 -0
  2254. data/.data/spec/std/isa/inst/Zvbc/vclmul.vv.yaml +33 -0
  2255. data/.data/spec/std/isa/inst/Zvbc/vclmul.vx.yaml +33 -0
  2256. data/.data/spec/std/isa/inst/Zvbc/vclmulh.vv.yaml +33 -0
  2257. data/.data/spec/std/isa/inst/Zvbc/vclmulh.vx.yaml +33 -0
  2258. data/.data/spec/std/isa/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml +31 -0
  2259. data/.data/spec/std/isa/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml +31 -0
  2260. data/.data/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vf.yaml +33 -0
  2261. data/.data/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vv.yaml +33 -0
  2262. data/.data/spec/std/isa/inst/Zvkg/vghsh.vv.yaml +31 -0
  2263. data/.data/spec/std/isa/inst/Zvkg/vgmul.vv.yaml +29 -0
  2264. data/.data/spec/std/isa/inst/Zvkned/vaesdf.vs.yaml +29 -0
  2265. data/.data/spec/std/isa/inst/Zvkned/vaesdf.vv.yaml +29 -0
  2266. data/.data/spec/std/isa/inst/Zvkned/vaesdm.vs.yaml +29 -0
  2267. data/.data/spec/std/isa/inst/Zvkned/vaesdm.vv.yaml +29 -0
  2268. data/.data/spec/std/isa/inst/Zvkned/vaesef.vs.yaml +29 -0
  2269. data/.data/spec/std/isa/inst/Zvkned/vaesef.vv.yaml +29 -0
  2270. data/.data/spec/std/isa/inst/Zvkned/vaesem.vs.yaml +29 -0
  2271. data/.data/spec/std/isa/inst/Zvkned/vaesem.vv.yaml +29 -0
  2272. data/.data/spec/std/isa/inst/Zvkned/vaeskf1.vi.yaml +31 -0
  2273. data/.data/spec/std/isa/inst/Zvkned/vaeskf2.vi.yaml +31 -0
  2274. data/.data/spec/std/isa/inst/Zvkned/vaesz.vs.yaml +29 -0
  2275. data/.data/spec/std/isa/inst/Zvknha/vsha2ch.vv.yaml +31 -0
  2276. data/.data/spec/std/isa/inst/Zvknha/vsha2cl.vv.yaml +31 -0
  2277. data/.data/spec/std/isa/inst/Zvknha/vsha2ms.vv.yaml +31 -0
  2278. data/.data/spec/std/isa/inst/Zvks/vsm3c.vi.yaml +31 -0
  2279. data/.data/spec/std/isa/inst/Zvks/vsm3me.vv.yaml +31 -0
  2280. data/.data/spec/std/isa/inst/Zvks/vsm4k.vi.yaml +31 -0
  2281. data/.data/spec/std/isa/inst/Zvks/vsm4r.vs.yaml +29 -0
  2282. data/.data/spec/std/isa/inst/Zvks/vsm4r.vv.yaml +31 -0
  2283. data/.data/spec/std/isa/inst_opcode/OP-32.yaml +12 -0
  2284. data/.data/spec/std/isa/inst_opcode/OP.yaml +12 -0
  2285. data/.data/spec/std/isa/inst_subtype/I/I-x-x.yaml +21 -0
  2286. data/.data/spec/std/isa/inst_subtype/R/R-x.yaml +21 -0
  2287. data/.data/spec/std/isa/inst_type/I.yaml +22 -0
  2288. data/.data/spec/std/isa/inst_type/R.yaml +24 -0
  2289. data/.data/spec/std/isa/inst_var/I-imm.yaml +12 -0
  2290. data/.data/spec/std/isa/inst_var/xd.yaml +12 -0
  2291. data/.data/spec/std/isa/inst_var/xs1.yaml +12 -0
  2292. data/.data/spec/std/isa/inst_var/xs2.yaml +12 -0
  2293. data/.data/spec/std/isa/inst_var_type/imm.yaml +9 -0
  2294. data/.data/spec/std/isa/inst_var_type/x_dst_reg.yaml +11 -0
  2295. data/.data/spec/std/isa/inst_var_type/x_src_reg.yaml +11 -0
  2296. data/.data/spec/std/isa/interrupt_code/LocalCounterOverflow.yaml +14 -0
  2297. data/.data/spec/std/isa/interrupt_code/MachineExternal.yaml +13 -0
  2298. data/.data/spec/std/isa/interrupt_code/MachineSoftware.yaml +13 -0
  2299. data/.data/spec/std/isa/interrupt_code/MachineTimer.yaml +13 -0
  2300. data/.data/spec/std/isa/interrupt_code/SupervisorExternal.yaml +13 -0
  2301. data/.data/spec/std/isa/interrupt_code/SupervisorGuestExternal.yaml +13 -0
  2302. data/.data/spec/std/isa/interrupt_code/SupervisorSoftware.yaml +13 -0
  2303. data/.data/spec/std/isa/interrupt_code/SupervisorTimer.yaml +13 -0
  2304. data/.data/spec/std/isa/interrupt_code/VirtualSupervisorExternal.yaml +13 -0
  2305. data/.data/spec/std/isa/interrupt_code/VirtualSupervisorSoftware.yaml +13 -0
  2306. data/.data/spec/std/isa/interrupt_code/VirtualSupervisorTimer.yaml +13 -0
  2307. data/.data/spec/std/isa/isa/builtin_functions.idl +671 -0
  2308. data/.data/spec/std/isa/isa/fetch.idl +74 -0
  2309. data/.data/spec/std/isa/isa/fp.idl +1238 -0
  2310. data/.data/spec/std/isa/isa/globals.isa +3124 -0
  2311. data/.data/spec/std/isa/isa/interrupts.idl +391 -0
  2312. data/.data/spec/std/isa/isa/util.idl +224 -0
  2313. data/.data/spec/std/isa/isa/vec.idl +55 -0
  2314. data/.data/spec/std/isa/manual/isa.yaml +16 -0
  2315. data/.data/spec/std/isa/manual_version/isa/20240411/isa_20240411.yaml +222 -0
  2316. data/.data/spec/std/isa/param/ARCH_ID_VALUE.yaml +32 -0
  2317. data/.data/spec/std/isa/param/ASID_WIDTH.yaml +23 -0
  2318. data/.data/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml +22 -0
  2319. data/.data/spec/std/isa/param/CONFIG_PTR_ADDRESS.yaml +28 -0
  2320. data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +30 -0
  2321. data/.data/spec/std/isa/param/DBG_HCONTEXT_WIDTH.yaml +18 -0
  2322. data/.data/spec/std/isa/param/DBG_SCONTEXT_WIDTH.yaml +18 -0
  2323. data/.data/spec/std/isa/param/DCSR_MPRVEN_TYPE.yaml +23 -0
  2324. data/.data/spec/std/isa/param/DCSR_STEPIE_TYPE.yaml +23 -0
  2325. data/.data/spec/std/isa/param/DCSR_STOPCOUNT_TYPE.yaml +23 -0
  2326. data/.data/spec/std/isa/param/DCSR_STOPTIME_TYPE.yaml +23 -0
  2327. data/.data/spec/std/isa/param/ELEN.yaml +20 -0
  2328. data/.data/spec/std/isa/param/FOLLOW_VTYPE_RESET_RECOMMENDATION.yaml +18 -0
  2329. data/.data/spec/std/isa/param/FORCE_UPGRADE_CBO_INVAL_TO_FLUSH.yaml +20 -0
  2330. data/.data/spec/std/isa/param/GSTAGE_MODE_BARE.yaml +24 -0
  2331. data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +19 -0
  2332. data/.data/spec/std/isa/param/HCOUNTENABLE_EN.yaml +27 -0
  2333. data/.data/spec/std/isa/param/HPM_COUNTER_EN.yaml +29 -0
  2334. data/.data/spec/std/isa/param/HPM_EVENTS.yaml +23 -0
  2335. data/.data/spec/std/isa/param/HSTATEEN_AIA_TYPE.yaml +34 -0
  2336. data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +35 -0
  2337. data/.data/spec/std/isa/param/HSTATEEN_CSRIND_TYPE.yaml +34 -0
  2338. data/.data/spec/std/isa/param/HSTATEEN_ENVCFG_TYPE.yaml +36 -0
  2339. data/.data/spec/std/isa/param/HSTATEEN_IMSIC_TYPE.yaml +34 -0
  2340. data/.data/spec/std/isa/param/HSTATEEN_JVT_TYPE.yaml +33 -0
  2341. data/.data/spec/std/isa/param/HW_MSTATUS_FS_DIRTY_UPDATE.yaml +30 -0
  2342. data/.data/spec/std/isa/param/HW_MSTATUS_VS_DIRTY_UPDATE.yaml +30 -0
  2343. data/.data/spec/std/isa/param/IGNORE_INVALID_VSATP_MODE_WRITES_WHEN_V_EQ_ZERO.yaml +18 -0
  2344. data/.data/spec/std/isa/param/IMPRECISE_VECTOR_TRAP_SETTABLE.yaml +19 -0
  2345. data/.data/spec/std/isa/param/IMP_ID_VALUE.yaml +25 -0
  2346. data/.data/spec/std/isa/param/JVT_BASE_MASK.yaml +28 -0
  2347. data/.data/spec/std/isa/param/JVT_BASE_TYPE.yaml +20 -0
  2348. data/.data/spec/std/isa/param/JVT_READ_ONLY.yaml +16 -0
  2349. data/.data/spec/std/isa/param/LEGAL_VSTART.yaml +21 -0
  2350. data/.data/spec/std/isa/param/LRSC_FAIL_ON_NON_EXACT_LRSC.yaml +18 -0
  2351. data/.data/spec/std/isa/param/LRSC_FAIL_ON_VA_SYNONYM.yaml +17 -0
  2352. data/.data/spec/std/isa/param/LRSC_MISALIGNED_BEHAVIOR.yaml +24 -0
  2353. data/.data/spec/std/isa/param/LRSC_RESERVATION_STRATEGY.yaml +26 -0
  2354. data/.data/spec/std/isa/param/MARCHID_IMPLEMENTED.yaml +17 -0
  2355. data/.data/spec/std/isa/param/MCID_WIDTH.yaml +19 -0
  2356. data/.data/spec/std/isa/param/MCONTEXT_AVAILABLE.yaml +16 -0
  2357. data/.data/spec/std/isa/param/MCOUNTENABLE_EN.yaml +32 -0
  2358. data/.data/spec/std/isa/param/MCTRCTL_CORSWAPINH_IMPLEMENTED.yaml +18 -0
  2359. data/.data/spec/std/isa/param/MCTRCTL_CUSTOM_IMPLEMENTED.yaml +18 -0
  2360. data/.data/spec/std/isa/param/MCTRCTL_DIRCALLINH_IMPLEMENTED.yaml +18 -0
  2361. data/.data/spec/std/isa/param/MCTRCTL_DIRJMPINH_IMPLEMENTED.yaml +18 -0
  2362. data/.data/spec/std/isa/param/MCTRCTL_DIRLJMPINH_IMPLEMENTED.yaml +18 -0
  2363. data/.data/spec/std/isa/param/MCTRCTL_EXCINH_IMPLEMENTED.yaml +18 -0
  2364. data/.data/spec/std/isa/param/MCTRCTL_INDCALLINH_IMPLEMENTED.yaml +18 -0
  2365. data/.data/spec/std/isa/param/MCTRCTL_INDJMPINH_IMPLEMENTED.yaml +18 -0
  2366. data/.data/spec/std/isa/param/MCTRCTL_INDLJMPINH_IMPLEMENTED.yaml +18 -0
  2367. data/.data/spec/std/isa/param/MCTRCTL_INTRINH_IMPLEMENTED.yaml +18 -0
  2368. data/.data/spec/std/isa/param/MCTRCTL_MTE_IMPLEMENTED.yaml +18 -0
  2369. data/.data/spec/std/isa/param/MCTRCTL_NTBREN_IMPLEMENTED.yaml +18 -0
  2370. data/.data/spec/std/isa/param/MCTRCTL_RASEMU_IMPLEMENTED.yaml +18 -0
  2371. data/.data/spec/std/isa/param/MCTRCTL_RETINH_IMPLEMENTED.yaml +18 -0
  2372. data/.data/spec/std/isa/param/MCTRCTL_STE_IMPLEMENTED.yaml +18 -0
  2373. data/.data/spec/std/isa/param/MCTRCTL_TKBRINH_IMPLEMENTED.yaml +18 -0
  2374. data/.data/spec/std/isa/param/MCTRCTL_TRETINH_IMPLEMENTED.yaml +18 -0
  2375. data/.data/spec/std/isa/param/MIMPID_IMPLEMENTED.yaml +17 -0
  2376. data/.data/spec/std/isa/param/MISALIGNED_AMO.yaml +17 -0
  2377. data/.data/spec/std/isa/param/MISALIGNED_LDST.yaml +18 -0
  2378. data/.data/spec/std/isa/param/MISALIGNED_LDST_EXCEPTION_PRIORITY.yaml +39 -0
  2379. data/.data/spec/std/isa/param/MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE.yaml +40 -0
  2380. data/.data/spec/std/isa/param/MISALIGNED_SPLIT_STRATEGY.yaml +29 -0
  2381. data/.data/spec/std/isa/param/MISA_CSR_IMPLEMENTED.yaml +23 -0
  2382. data/.data/spec/std/isa/param/MOCK_1_BIT_INT.yaml +17 -0
  2383. data/.data/spec/std/isa/param/MOCK_25_BIT_INT.yaml +17 -0
  2384. data/.data/spec/std/isa/param/MOCK_2_BIT_INT.yaml +17 -0
  2385. data/.data/spec/std/isa/param/MOCK_32_BIT_INT.yaml +17 -0
  2386. data/.data/spec/std/isa/param/MOCK_64_BIT_INT.yaml +17 -0
  2387. data/.data/spec/std/isa/param/MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE.yaml +22 -0
  2388. data/.data/spec/std/isa/param/MOCK_ARRAY_INT_ENUM.yaml +23 -0
  2389. data/.data/spec/std/isa/param/MOCK_ARRAY_MAX_ONLY.yaml +21 -0
  2390. data/.data/spec/std/isa/param/MOCK_ARRAY_MIN_ONLY.yaml +21 -0
  2391. data/.data/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM1.yaml +21 -0
  2392. data/.data/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM2.yaml +21 -0
  2393. data/.data/spec/std/isa/param/MOCK_BOOL_1.yaml +15 -0
  2394. data/.data/spec/std/isa/param/MOCK_BOOL_2.yaml +15 -0
  2395. data/.data/spec/std/isa/param/MOCK_ENUM_2_INTS.yaml +18 -0
  2396. data/.data/spec/std/isa/param/MOCK_ENUM_2_STRINGS.yaml +18 -0
  2397. data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_1023.yaml +17 -0
  2398. data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_127.yaml +17 -0
  2399. data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_128.yaml +17 -0
  2400. data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_2.yaml +17 -0
  2401. data/.data/spec/std/isa/param/MOCK_INT_RANGE_0_TO_999.yaml +17 -0
  2402. data/.data/spec/std/isa/param/MOCK_INT_RANGE_1000_TO_2048.yaml +17 -0
  2403. data/.data/spec/std/isa/param/MOCK_INT_RANGE_1_TO_128.yaml +17 -0
  2404. data/.data/spec/std/isa/param/MSTATEEN_AIA_TYPE.yaml +27 -0
  2405. data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +26 -0
  2406. data/.data/spec/std/isa/param/MSTATEEN_CSRIND_TYPE.yaml +26 -0
  2407. data/.data/spec/std/isa/param/MSTATEEN_ENVCFG_TYPE.yaml +26 -0
  2408. data/.data/spec/std/isa/param/MSTATEEN_IMSIC_TYPE.yaml +27 -0
  2409. data/.data/spec/std/isa/param/MSTATEEN_JVT_TYPE.yaml +27 -0
  2410. data/.data/spec/std/isa/param/MSTATUS_FS_LEGAL_VALUES.yaml +41 -0
  2411. data/.data/spec/std/isa/param/MSTATUS_TVM_IMPLEMENTED.yaml +18 -0
  2412. data/.data/spec/std/isa/param/MSTATUS_VS_LEGAL_VALUES.yaml +45 -0
  2413. data/.data/spec/std/isa/param/MTVAL_WIDTH.yaml +88 -0
  2414. data/.data/spec/std/isa/param/MTVEC_ACCESS.yaml +24 -0
  2415. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +96 -0
  2416. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +96 -0
  2417. data/.data/spec/std/isa/param/MTVEC_ILLEGAL_WRITE_BEHAVIOR.yaml +25 -0
  2418. data/.data/spec/std/isa/param/MTVEC_MODES.yaml +35 -0
  2419. data/.data/spec/std/isa/param/MUTABLE_MISA_A.yaml +19 -0
  2420. data/.data/spec/std/isa/param/MUTABLE_MISA_B.yaml +18 -0
  2421. data/.data/spec/std/isa/param/MUTABLE_MISA_C.yaml +21 -0
  2422. data/.data/spec/std/isa/param/MUTABLE_MISA_D.yaml +21 -0
  2423. data/.data/spec/std/isa/param/MUTABLE_MISA_F.yaml +21 -0
  2424. data/.data/spec/std/isa/param/MUTABLE_MISA_H.yaml +26 -0
  2425. data/.data/spec/std/isa/param/MUTABLE_MISA_M.yaml +21 -0
  2426. data/.data/spec/std/isa/param/MUTABLE_MISA_Q.yaml +21 -0
  2427. data/.data/spec/std/isa/param/MUTABLE_MISA_S.yaml +26 -0
  2428. data/.data/spec/std/isa/param/MUTABLE_MISA_U.yaml +21 -0
  2429. data/.data/spec/std/isa/param/MUTABLE_MISA_V.yaml +17 -0
  2430. data/.data/spec/std/isa/param/MXLEN.yaml +54 -0
  2431. data/.data/spec/std/isa/param/M_MODE_ENDIANNESS.yaml +26 -0
  2432. data/.data/spec/std/isa/param/NUM_EXTERNAL_GUEST_INTERRUPTS.yaml +24 -0
  2433. data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +42 -0
  2434. data/.data/spec/std/isa/param/PHYS_ADDR_WIDTH.yaml +24 -0
  2435. data/.data/spec/std/isa/param/PMA_GRANULARITY.yaml +21 -0
  2436. data/.data/spec/std/isa/param/PMLEN.yaml +20 -0
  2437. data/.data/spec/std/isa/param/PMP_GRANULARITY.yaml +25 -0
  2438. data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +17 -0
  2439. data/.data/spec/std/isa/param/RCID_WIDTH.yaml +19 -0
  2440. data/.data/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml +18 -0
  2441. data/.data/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml +18 -0
  2442. data/.data/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml +18 -0
  2443. data/.data/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml +18 -0
  2444. data/.data/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml +18 -0
  2445. data/.data/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml +18 -0
  2446. data/.data/spec/std/isa/param/REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION.yaml +21 -0
  2447. data/.data/spec/std/isa/param/REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION.yaml +19 -0
  2448. data/.data/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION.yaml +19 -0
  2449. data/.data/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_VIRTUAL_INSTRUCTION.yaml +19 -0
  2450. data/.data/spec/std/isa/param/REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT.yaml +19 -0
  2451. data/.data/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INSTRUCTION_GUEST_PAGE_FAULT.yaml +18 -0
  2452. data/.data/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT.yaml +19 -0
  2453. data/.data/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_LOAD_GUEST_PAGE_FAULT.yaml +18 -0
  2454. data/.data/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_STORE_AMO_GUEST_PAGE_FAULT.yaml +18 -0
  2455. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_BREAKPOINT.yaml +23 -0
  2456. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml +21 -0
  2457. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED.yaml +21 -0
  2458. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml +20 -0
  2459. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT.yaml +21 -0
  2460. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED.yaml +21 -0
  2461. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT.yaml +19 -0
  2462. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml +21 -0
  2463. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED.yaml +21 -0
  2464. data/.data/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT.yaml +19 -0
  2465. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_BREAKPOINT.yaml +20 -0
  2466. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml +20 -0
  2467. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED.yaml +21 -0
  2468. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT.yaml +20 -0
  2469. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT.yaml +19 -0
  2470. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED.yaml +20 -0
  2471. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT.yaml +19 -0
  2472. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT.yaml +19 -0
  2473. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED.yaml +20 -0
  2474. data/.data/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT.yaml +19 -0
  2475. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_BREAKPOINT.yaml +20 -0
  2476. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml +20 -0
  2477. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED.yaml +21 -0
  2478. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml +20 -0
  2479. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT.yaml +19 -0
  2480. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED.yaml +20 -0
  2481. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT.yaml +19 -0
  2482. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml +19 -0
  2483. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED.yaml +20 -0
  2484. data/.data/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT.yaml +19 -0
  2485. data/.data/spec/std/isa/param/RESERVED_VSET_X0X0_VILL_SET.yaml +21 -0
  2486. data/.data/spec/std/isa/param/RESERVED_VSET_X0X0_VLMAX_CHANGE.yaml +20 -0
  2487. data/.data/spec/std/isa/param/RVV_VL_WHEN_AVL_LT_DOUBLE_VLMAX.yaml +17 -0
  2488. data/.data/spec/std/isa/param/SATP_MODE_BARE.yaml +17 -0
  2489. data/.data/spec/std/isa/param/SCOUNTENABLE_EN.yaml +46 -0
  2490. data/.data/spec/std/isa/param/SEW_MIN.yaml +27 -0
  2491. data/.data/spec/std/isa/param/SSTATEEN_JVT_TYPE.yaml +37 -0
  2492. data/.data/spec/std/isa/param/STVAL_WIDTH.yaml +19 -0
  2493. data/.data/spec/std/isa/param/STVEC_MODE_DIRECT.yaml +21 -0
  2494. data/.data/spec/std/isa/param/STVEC_MODE_VECTORED.yaml +19 -0
  2495. data/.data/spec/std/isa/param/SUPPORT_FRACTIONAL_LMUL_BEYOND_REQUIRED.yaml +21 -0
  2496. data/.data/spec/std/isa/param/SV32X4_TRANSLATION.yaml +24 -0
  2497. data/.data/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml +27 -0
  2498. data/.data/spec/std/isa/param/SV39X4_TRANSLATION.yaml +23 -0
  2499. data/.data/spec/std/isa/param/SV39_VSMODE_TRANSLATION.yaml +27 -0
  2500. data/.data/spec/std/isa/param/SV48X4_TRANSLATION.yaml +27 -0
  2501. data/.data/spec/std/isa/param/SV48_VSMODE_TRANSLATION.yaml +27 -0
  2502. data/.data/spec/std/isa/param/SV57X4_TRANSLATION.yaml +25 -0
  2503. data/.data/spec/std/isa/param/SV57_VSMODE_TRANSLATION.yaml +27 -0
  2504. data/.data/spec/std/isa/param/SXLEN.yaml +31 -0
  2505. data/.data/spec/std/isa/param/S_MODE_ENDIANNESS.yaml +25 -0
  2506. data/.data/spec/std/isa/param/TIME_CSR_IMPLEMENTED.yaml +28 -0
  2507. data/.data/spec/std/isa/param/TINST_VALUE_ON_BREAKPOINT.yaml +23 -0
  2508. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml +23 -0
  2509. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml +27 -0
  2510. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml +27 -0
  2511. data/.data/spec/std/isa/param/TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED.yaml +23 -0
  2512. data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ACCESS_FAULT.yaml +25 -0
  2513. data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml +25 -0
  2514. data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_PAGE_FAULT.yaml +25 -0
  2515. data/.data/spec/std/isa/param/TINST_VALUE_ON_MCALL.yaml +23 -0
  2516. data/.data/spec/std/isa/param/TINST_VALUE_ON_SCALL.yaml +23 -0
  2517. data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT.yaml +25 -0
  2518. data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml +25 -0
  2519. data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_PAGE_FAULT.yaml +25 -0
  2520. data/.data/spec/std/isa/param/TINST_VALUE_ON_UCALL.yaml +23 -0
  2521. data/.data/spec/std/isa/param/TINST_VALUE_ON_VIRTUAL_INSTRUCTION.yaml +23 -0
  2522. data/.data/spec/std/isa/param/TINST_VALUE_ON_VSCALL.yaml +23 -0
  2523. data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +17 -0
  2524. data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +17 -0
  2525. data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_S.yaml +20 -0
  2526. data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_U.yaml +20 -0
  2527. data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_VS.yaml +20 -0
  2528. data/.data/spec/std/isa/param/TRAP_ON_ILLEGAL_WLRL.yaml +21 -0
  2529. data/.data/spec/std/isa/param/TRAP_ON_RESERVED_INSTRUCTION.yaml +24 -0
  2530. data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +31 -0
  2531. data/.data/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_CSR.yaml +21 -0
  2532. data/.data/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_INSTRUCTION.yaml +23 -0
  2533. data/.data/spec/std/isa/param/UXLEN.yaml +31 -0
  2534. data/.data/spec/std/isa/param/U_MODE_ENDIANNESS.yaml +25 -0
  2535. data/.data/spec/std/isa/param/VECTOR_FF_NO_EXCEPTION_TRIM.yaml +19 -0
  2536. data/.data/spec/std/isa/param/VECTOR_FF_SEG_EXCEPTION_PARTIAL_LOAD.yaml +22 -0
  2537. data/.data/spec/std/isa/param/VECTOR_FF_UPDATE_PAST_TRIM.yaml +22 -0
  2538. data/.data/spec/std/isa/param/VECTOR_LOAD_PAST_TRAP.yaml +19 -0
  2539. data/.data/spec/std/isa/param/VECTOR_LOAD_SEG_FF_OVERWRITE_ELEMENTS_AFTER_FAULT.yaml +21 -0
  2540. data/.data/spec/std/isa/param/VECTOR_LS_INDEX_MAX_EEW.yaml +28 -0
  2541. data/.data/spec/std/isa/param/VECTOR_LS_MISALIGNED_LEGAL.yaml +19 -0
  2542. data/.data/spec/std/isa/param/VECTOR_LS_SEG_PARTIAL_ACCESS.yaml +19 -0
  2543. data/.data/spec/std/isa/param/VECTOR_LS_WHOLEREG_MISALIGNED_LEGAL.yaml +20 -0
  2544. data/.data/spec/std/isa/param/VENDOR_ID_BANK.yaml +20 -0
  2545. data/.data/spec/std/isa/param/VENDOR_ID_OFFSET.yaml +18 -0
  2546. data/.data/spec/std/isa/param/VFREDUSUM_FINAL_NODE_ELEMENT_BEHAVIOR.yaml +20 -0
  2547. data/.data/spec/std/isa/param/VFREDUSUM_INACTIVE_NODE_ELEMENT_BEHAVIOR.yaml +21 -0
  2548. data/.data/spec/std/isa/param/VFREDUSUM_NAN.yaml +22 -0
  2549. data/.data/spec/std/isa/param/VFREDUSUM_NODE_ROUNDING_BEHAVIOR.yaml +23 -0
  2550. data/.data/spec/std/isa/param/VILL_SET_ON_RESERVED_VTYPE.yaml +20 -0
  2551. data/.data/spec/std/isa/param/VLEN.yaml +20 -0
  2552. data/.data/spec/std/isa/param/VMID_WIDTH.yaml +25 -0
  2553. data/.data/spec/std/isa/param/VSSTAGE_MODE_BARE.yaml +24 -0
  2554. data/.data/spec/std/isa/param/VSSTATUS_VS_EXISTS.yaml +19 -0
  2555. data/.data/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml +21 -0
  2556. data/.data/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml +21 -0
  2557. data/.data/spec/std/isa/param/VSXLEN.yaml +33 -0
  2558. data/.data/spec/std/isa/param/VS_MODE_ENDIANNESS.yaml +25 -0
  2559. data/.data/spec/std/isa/param/VUXLEN.yaml +30 -0
  2560. data/.data/spec/std/isa/param/VU_MODE_ENDIANNESS.yaml +25 -0
  2561. data/.data/spec/std/isa/proc_cert_class/AC.yaml +13 -0
  2562. data/.data/spec/std/isa/proc_cert_class/MC.yaml +13 -0
  2563. data/.data/spec/std/isa/proc_cert_class/MockProcessor.yaml +13 -0
  2564. data/.data/spec/std/isa/proc_cert_class/RVI.yaml +16 -0
  2565. data/.data/spec/std/isa/proc_cert_model/AC100.yaml +72 -0
  2566. data/.data/spec/std/isa/proc_cert_model/AC200.yaml +58 -0
  2567. data/.data/spec/std/isa/proc_cert_model/MC100-32.yaml +155 -0
  2568. data/.data/spec/std/isa/proc_cert_model/MC100-64.yaml +21 -0
  2569. data/.data/spec/std/isa/proc_cert_model/MC200-32.yaml +60 -0
  2570. data/.data/spec/std/isa/proc_cert_model/MC200-64.yaml +21 -0
  2571. data/.data/spec/std/isa/proc_cert_model/MC300-32.yaml +40 -0
  2572. data/.data/spec/std/isa/proc_cert_model/MC300-64.yaml +21 -0
  2573. data/.data/spec/std/isa/proc_cert_model/RVI20-32.yaml +39 -0
  2574. data/.data/spec/std/isa/proc_cert_model/RVI20-64.yaml +19 -0
  2575. data/.data/spec/std/isa/profile/RVA20S64.yaml +76 -0
  2576. data/.data/spec/std/isa/profile/RVA20U64.yaml +108 -0
  2577. data/.data/spec/std/isa/profile/RVA22S64.yaml +80 -0
  2578. data/.data/spec/std/isa/profile/RVA22U64.yaml +140 -0
  2579. data/.data/spec/std/isa/profile/RVA23M64.yaml +24 -0
  2580. data/.data/spec/std/isa/profile/RVA23S64.yaml +55 -0
  2581. data/.data/spec/std/isa/profile/RVA23U64.yaml +70 -0
  2582. data/.data/spec/std/isa/profile/RVB23M64.yaml +89 -0
  2583. data/.data/spec/std/isa/profile/RVB23S64.yaml +299 -0
  2584. data/.data/spec/std/isa/profile/RVB23U64.yaml +273 -0
  2585. data/.data/spec/std/isa/profile/RVI20U32.yaml +83 -0
  2586. data/.data/spec/std/isa/profile/RVI20U64.yaml +12 -0
  2587. data/.data/spec/std/isa/profile_family/Mock.yaml +24 -0
  2588. data/.data/spec/std/isa/profile_family/RVA.yaml +154 -0
  2589. data/.data/spec/std/isa/profile_family/RVB.yaml +59 -0
  2590. data/.data/spec/std/isa/profile_family/RVI.yaml +37 -0
  2591. data/.data/spec/std/isa/profile_release/RVA20.yaml +44 -0
  2592. data/.data/spec/std/isa/profile_release/RVA22.yaml +44 -0
  2593. data/.data/spec/std/isa/profile_release/RVA23.yaml +40 -0
  2594. data/.data/spec/std/isa/profile_release/RVB23.yaml +40 -0
  2595. data/.data/spec/std/isa/profile_release/RVI20.yaml +31 -0
  2596. data/.data/spec/std/isa/prose/interrupts.adoc +185 -0
  2597. data/.data/spec/std/isa/register_file/F.yaml +165 -0
  2598. data/.data/spec/std/isa/register_file/V.yaml +146 -0
  2599. data/.data/spec/std/isa/register_file/X.yaml +201 -0
  2600. data/LICENSE +26 -0
  2601. data/bin/udb +11 -0
  2602. data/ext/udb_download/extconf.rb +238 -0
  2603. data/lib/tapioca/dsl/compilers/cfg_arch_compiler.rb +38 -0
  2604. data/lib/udb/EQNTOTT_VERSION +1 -0
  2605. data/lib/udb/ESPRESSO_VERSION +1 -0
  2606. data/lib/udb/MUST_VERSION +1 -0
  2607. data/lib/udb/Z3_VERSION +1 -0
  2608. data/lib/udb/architecture.rb +345 -0
  2609. data/lib/udb/cert_normative_rule.rb +41 -0
  2610. data/lib/udb/cfg_arch.rb +1679 -0
  2611. data/lib/udb/cli.rb +424 -0
  2612. data/lib/udb/condition.rb +2143 -0
  2613. data/lib/udb/config.rb +363 -0
  2614. data/lib/udb/dep_paths.rb +109 -0
  2615. data/lib/udb/dep_versions.rb +12 -0
  2616. data/lib/udb/doc_link.rb +49 -0
  2617. data/lib/udb/eqn.rb +204 -0
  2618. data/lib/udb/eqn_parser.rb +804 -0
  2619. data/lib/udb/external_documentation_renderer.rb +466 -0
  2620. data/lib/udb/idl/condition_to_udb.rb +386 -0
  2621. data/lib/udb/log.rb +147 -0
  2622. data/lib/udb/logic.rb +3636 -0
  2623. data/lib/udb/obj/certifiable_obj.rb +21 -0
  2624. data/lib/udb/obj/certificate.rb +230 -0
  2625. data/lib/udb/obj/csr.rb +603 -0
  2626. data/lib/udb/obj/csr_field.rb +877 -0
  2627. data/lib/udb/obj/database_obj.rb +556 -0
  2628. data/lib/udb/obj/exception_code.rb +98 -0
  2629. data/lib/udb/obj/extension.rb +1734 -0
  2630. data/lib/udb/obj/has_fields.rb +151 -0
  2631. data/lib/udb/obj/instruction.rb +1328 -0
  2632. data/lib/udb/obj/manual.rb +208 -0
  2633. data/lib/udb/obj/mmr.rb +104 -0
  2634. data/lib/udb/obj/non_isa_specification.rb +382 -0
  2635. data/lib/udb/obj/parameter.rb +148 -0
  2636. data/lib/udb/obj/portfolio.rb +972 -0
  2637. data/lib/udb/obj/prm.rb +52 -0
  2638. data/lib/udb/obj/profile.rb +284 -0
  2639. data/lib/udb/obj/register_file.rb +118 -0
  2640. data/lib/udb/portfolio_design.rb +256 -0
  2641. data/lib/udb/presence.rb +101 -0
  2642. data/lib/udb/prm_generator.rb +763 -0
  2643. data/lib/udb/proc_cert_design.rb +77 -0
  2644. data/lib/udb/resolver.rb +425 -0
  2645. data/lib/udb/schema.rb +305 -0
  2646. data/lib/udb/version.rb +8 -0
  2647. data/lib/udb/version_spec.rb +334 -0
  2648. data/lib/udb/yaml/comment_parser.rb +422 -0
  2649. data/lib/udb/yaml/preserving_emitter.rb +339 -0
  2650. data/lib/udb/yaml/yaml_resolver.rb +1039 -0
  2651. data/lib/udb/z3.rb +1218 -0
  2652. data/lib/udb/z3_loader.rb +97 -0
  2653. data/lib/udb.rb +25 -0
  2654. metadata +3125 -0
@@ -0,0 +1,1734 @@
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_relative "database_obj"
8
+ require_relative "certifiable_obj"
9
+ require_relative "parameter"
10
+ require_relative "../schema"
11
+ require_relative "../condition"
12
+ require_relative "../presence"
13
+ require_relative "../version_spec"
14
+
15
+ module Udb
16
+
17
+ # Extension definition
18
+ class Extension < TopLevelDatabaseObject
19
+ # Add all methods in this module to this type of database object.
20
+ include CertifiableObject
21
+ include Comparable
22
+
23
+ # @return Long name of the extension
24
+ sig { returns(String) }
25
+ def long_name = @data.fetch("long_name")
26
+
27
+ # @return Either unprivileged or privileged
28
+ sig { returns(String) }
29
+ def priv_type = @data.fetch("type")
30
+
31
+ # @return Either unpriv or priv
32
+ sig { returns(String) }
33
+ def compact_priv_type
34
+ case priv_type
35
+ when "unprivileged"
36
+ "unpriv"
37
+ when "privileged"
38
+ "priv"
39
+ else
40
+ if priv_type.nil? || priv_type.empty?
41
+ raise ArgumentError, "Extension #{name} missing its type in database (must be privileged or unprivileged)"
42
+ else
43
+ raise ArgumentError, "Extension #{name} has illegal privileged/unprivileged type of #{priv_type}"
44
+ end
45
+ end
46
+ end
47
+
48
+ # @return Company that developed the extension
49
+ # @return if the company isn't known
50
+ sig { returns(T.nilable(Company)) }
51
+ def company
52
+ if @data.key?("company")
53
+ @company ||= Company.new(@data["company"])
54
+ end
55
+ end
56
+
57
+ # @return { "name" => String, "url" => String} The name and URL of a document license the doc falls under
58
+ # @return [nil] if the license isn't known
59
+ sig { returns(T.nilable(T::Hash[String, String])) }
60
+ def doc_license
61
+ @data["doc_license"]
62
+ end
63
+
64
+ # @return versions hash from config, sorted by version number
65
+ sig { returns(T::Array[ExtensionVersion]) }
66
+ def versions
67
+ return @versions unless @versions.nil?
68
+
69
+ @versions = @data["versions"].map do |v|
70
+ cfg_arch.extension_version(name, v["version"])
71
+ end
72
+ @versions.sort!
73
+ @versions
74
+ end
75
+
76
+ # @return Ratified versions hash from config
77
+ sig { returns(T::Array[ExtensionVersion]) }
78
+ def ratified_versions
79
+ versions.select { |v| v.state == "ratified" }
80
+ end
81
+
82
+ # @return Any version ratified?
83
+ sig { returns(T::Boolean) }
84
+ def ratified = ratified_versions.any?
85
+
86
+ # @return Mimumum defined version of this extension
87
+ sig { returns(ExtensionVersion) }
88
+ def min_version
89
+ T.must(versions.min { |a, b| T.must(a.version_spec <=> b.version_spec) })
90
+ end
91
+
92
+ # @return Maximum defined version of this extension
93
+ sig { returns(ExtensionVersion) }
94
+ def max_version
95
+ T.must(versions.max { |a, b| T.must(a.version_spec <=> b.version_spec) })
96
+ end
97
+
98
+ # @return Mimumum defined ratified version of this extension, or nil if there is none
99
+ sig { returns(T.nilable(ExtensionVersion)) }
100
+ def min_ratified_version
101
+ return nil if ratified_versions.empty?
102
+
103
+ ratified_versions.min { |a, b| T.must(a.version_spec <=> b.version_spec) }
104
+ end
105
+
106
+ # @return List of parameters that must be defined if some version of this extension is defined,
107
+ # excluding those required because of a requirement of extension
108
+ sig { returns(T::Array[Parameter]) }
109
+ def params
110
+ @params ||= all_params_that_must_be_implemented - implied_params
111
+ end
112
+
113
+ class ConditionallyApplicableParameter < T::Struct
114
+ prop :cond, AbstractCondition
115
+ prop :param, Parameter
116
+ end
117
+
118
+ sig { returns(T::Array[ConditionallyApplicableParameter]) }
119
+ def conditional_params
120
+ @cond_params ||=
121
+ begin
122
+ pb =
123
+ Udb.create_progressbar(
124
+ "Finding conditional params for #{name} [:bar] :current/:total",
125
+ total: cfg_arch.params.size,
126
+ clear: true
127
+ )
128
+ cfg_arch.params.filter_map do |p|
129
+ pb.advance
130
+ next if params.include?(p)
131
+ next unless p.defined_by_condition.mentions?(self)
132
+ next unless (p.defined_by_condition & self.to_condition).satisfiable?
133
+
134
+ cond = p.defined_by_condition.partial_eval(ext_reqs: [self.to_ext_req]).minimize(expand: false)
135
+ ConditionallyApplicableParameter.new(cond:, param: p)
136
+ end
137
+ end
138
+ end
139
+
140
+ # @return List of parameters that must be defined if this extension is defined due to one of the extension's requirements
141
+ # excluding those required because of a requirement of extension def implied_params
142
+ sig { returns(T::Array[Parameter]) }
143
+ def implied_params
144
+ @implied_params ||=
145
+ begin
146
+ pb =
147
+ Udb.create_progressbar(
148
+ "Finding implied params for #{name} [:bar] :current/:total",
149
+ total: cfg_arch.params.size,
150
+ clear: true
151
+ )
152
+ cfg_arch.params.select do |p|
153
+ pb.advance
154
+ param_defined = p.defined_by_condition
155
+ preconditions_met = requirements_condition
156
+
157
+ (-param_defined & preconditions_met).unsatisfiable_by_arch?(cfg_arch)
158
+ end
159
+ end
160
+ end
161
+
162
+ # @return List of parameters that must be defined if some version of this extension is defined
163
+ sig { returns(T::Array[Parameter]) }
164
+ def all_params_that_must_be_implemented
165
+ @all_params_that_must_be_implemented ||=
166
+ begin
167
+ pb =
168
+ Udb.create_progressbar(
169
+ "Finding implied params for #{name} [:bar] :current/:total",
170
+ total: cfg_arch.params.size,
171
+ clear: true
172
+ )
173
+ cfg_arch.params.select do |p|
174
+ pb.advance
175
+ param_defined = p.defined_by_condition
176
+
177
+ (-param_defined & to_condition).unsatisfiable_by_arch?(cfg_arch)
178
+ end
179
+ end
180
+ end
181
+
182
+ # returns a condition representing *any* version of this extension being implemented
183
+ sig { returns(Condition) }
184
+ def to_condition
185
+ @condition ||= Condition.new({ "extension" => { "name" => name } }, @cfg_arch)
186
+ end
187
+
188
+ # @return a condition representing the requirements that apply to all versions of this extension
189
+ sig { returns(AbstractCondition) }
190
+ def general_extension_requirements_condition
191
+ @general_extension_requirements_condition ||=
192
+ @data.key?("requirements") \
193
+ ? Condition.new(@data.fetch("requirements"), @cfg_arch, input_file: Pathname.new(__source), input_line: source_line(["requirements"]))
194
+ : AlwaysTrueCondition.new(@cfg_arch)
195
+ end
196
+
197
+ # @return a condition representing the requirements that apply to all versions of this extension (not just the generic requirements)
198
+ sig { returns(AbstractCondition) }
199
+ def requirements_condition
200
+ @requirements_condition ||= to_ext_req.requirements_condition
201
+ end
202
+
203
+ # @return list of extensions that conflict with self
204
+ def conflicting_extensions
205
+ @cfg_arch.extensions.select do |ext|
206
+ (to_condition & ext.to_condition).unsatisfiable?
207
+ end
208
+ end
209
+
210
+ # @return the list of instructions implemented *directly* by *any version* of this extension (may be empty)
211
+ # Direct means that the instruction must be defined when the extension is implemented and may not be
212
+ # implemented when just the extension's requirements are met
213
+ #
214
+ # In other words, direct is the set of instructions that are defined without transitivity
215
+ sig { returns(T::Array[Instruction]) }
216
+ def instructions
217
+ @instructions ||=
218
+ begin
219
+ pb =
220
+ Udb.create_progressbar(
221
+ "Finding instructions for #{name} [:bar] :current/:total",
222
+ total: cfg_arch.instructions.size,
223
+ clear: true
224
+ )
225
+ cfg_arch.instructions.select do |i|
226
+ pb.advance
227
+ inst_defined = i.defined_by_condition
228
+ next unless inst_defined.mentions?(self)
229
+ requirement_met = to_condition
230
+ preconditions_met = requirements_condition
231
+
232
+ # inst is defined exclusively by self if:
233
+ (
234
+ (-inst_defined & requirement_met) # it must be defined when self is met, and
235
+ ).unsatisfiable? &
236
+ (
237
+ (-inst_defined & preconditions_met) # it may not be defined when only self's requirements are met
238
+ ).satisfiable?
239
+ end
240
+ end
241
+ end
242
+
243
+ # @api private
244
+ sig { returns(T::Set[Instruction]) }
245
+ def instructions_set
246
+ @instructions_set ||= Set.new(instructions)
247
+ end
248
+
249
+ # @return the list of instructions implemented *indirectly* by *any version* of this extension because
250
+ # a requirement of the extension directly defines the instruction
251
+ #
252
+ # For example, the "C" extension implies c.addi because c.addi is directly defined by Zca and C
253
+ # requires Zca to be implemented
254
+ #
255
+ # This list may be empty
256
+ sig { returns(T::Array[Instruction]) }
257
+ def implied_instructions
258
+ @instructions ||=
259
+ begin
260
+ pb =
261
+ Udb.create_progressbar(
262
+ "Finding implied instructions for #{name} [:bar] :current/:total",
263
+ total: cfg_arch.instructions.size,
264
+ clear: true
265
+ )
266
+ cfg_arch.instructions.select do |i|
267
+ pb.advance
268
+ if i.defined_by_condition.mentions?(to_ext_req)
269
+ inst_defined = i.defined_by_condition
270
+ preconditions_met = requirements_condition
271
+
272
+ # inst is defined transitively by self if:
273
+ (
274
+ (-inst_defined & preconditions_met) # it must be defined when preconditions are met, and
275
+ ).unsatisfiable?
276
+ end
277
+ end
278
+ end
279
+ end
280
+
281
+ # @api private
282
+ sig { returns(T::Set[Instruction]) }
283
+ def implied_instructions_set
284
+ @implied_instructions_set ||= Set.new(implied_instructions)
285
+ end
286
+
287
+ # @return the list of CSRs implemented by *any version* of this extension (may be empty),
288
+ # not including those defined by requirements of this extension
289
+ sig { returns(T::Array[Csr]) }
290
+ def csrs
291
+ @csrs ||=
292
+ begin
293
+ pb =
294
+ Udb.create_progressbar(
295
+ "Finding csrs for #{name} [:bar] :current/:total",
296
+ total: cfg_arch.csrs.size,
297
+ clear: true
298
+ )
299
+ cfg_arch.csrs.select do |csr|
300
+ pb.advance
301
+ csr_defined = csr.defined_by_condition
302
+ next unless csr_defined.mentions?(self)
303
+ requirement_met = to_condition
304
+ preconditions_met = requirements_condition
305
+
306
+ # csr is defined exclusively by self if:
307
+ (
308
+ (-csr_defined & requirement_met) # it must be defined when self is met, and
309
+ ).unsatisfiable? &
310
+ (
311
+ (-csr_defined & preconditions_met) # it may not be defined when only self's requirements are met
312
+ ).satisfiable?
313
+ end
314
+ end
315
+ end
316
+
317
+ # @return the list of csrs implemented *indirectly* by *any version* of this extension because
318
+ # a requirement of the extension directly defines the csr
319
+ #
320
+ # This list may be empty
321
+ sig { returns(T::Array[Csr]) }
322
+ def implied_csrs
323
+ @implied_csrs ||=
324
+ begin
325
+ pb =
326
+ Udb.create_progressbar(
327
+ "Finding implied csrs for #{name} [:bar] :current/:total",
328
+ total: cfg_arch.csrs.size,
329
+ clear: true
330
+ )
331
+ cfg_arch.csrs.select do |csr|
332
+ pb.advance
333
+ csr_defined = csr.defined_by_condition
334
+ preconditions_met = requirements_condition
335
+
336
+ # csr is defined transitively by self if:
337
+ (
338
+ (-csr_defined & preconditions_met) # it must be defined when preconditions are met, and
339
+ ).unsatisfiable?
340
+ end
341
+ end
342
+ end
343
+
344
+ # @return the list of csrs that must be defined when any version of this extension is defined
345
+ # includes both those defined directly by self and those implied by self's requirements
346
+ sig { returns(T::Array[Csr]) }
347
+ def csrs_that_must_be_implemented
348
+ @csrs_that_must_be_implemented ||= csrs + implied_csrs
349
+ end
350
+
351
+ # @return the list of MMRs implemented by *any version* of this extension (may be empty)
352
+ sig { returns(T::Array[Mmr]) }
353
+ def mmrs
354
+ @mmrs ||=
355
+ begin
356
+ pb =
357
+ Udb.create_progressbar(
358
+ "Finding mmrs for #{name} [:bar] :current/:total",
359
+ total: cfg_arch.mmrs.size,
360
+ clear: true
361
+ )
362
+ cfg_arch.mmrs.select do |mmr|
363
+ pb.advance
364
+ mmr_defined = mmr.defined_by_condition
365
+ next unless mmr_defined.mentions?(self)
366
+ requirement_met = to_condition
367
+ preconditions_met = requirements_condition
368
+
369
+ # mmr is defined exclusively by self if:
370
+ (
371
+ (-mmr_defined & requirement_met) # it must be defined when self is met, and
372
+ ).unsatisfiable? &
373
+ (
374
+ (-mmr_defined & preconditions_met) # it may not be defined when only self's requirements are met
375
+ ).satisfiable?
376
+ end
377
+ end
378
+ end
379
+
380
+ # return the set of reachable functions from any of this extensions's CSRs or instructions in the given evaluation context
381
+ #
382
+ # @return Array of IDL functions reachable from any instruction or CSR in the extension
383
+ sig { returns(T::Array[Idl::FunctionDefAst]) }
384
+ def reachable_functions
385
+ return @reachable_functions unless @reachable_functions.nil?
386
+
387
+ funcs = T.let([], T::Array[Idl::FunctionDefAst])
388
+
389
+ Udb.logger.info "Finding all reachable functions from extension #{name}"
390
+
391
+ instructions.each do |inst|
392
+ funcs += inst.reachable_functions(32) if inst.defined_in_base?(32)
393
+ funcs += inst.reachable_functions(64) if inst.defined_in_base?(64)
394
+ end
395
+
396
+ csrs.each do |csr|
397
+ funcs += csr.reachable_functions
398
+ end
399
+
400
+ @reachable_functions = funcs.uniq
401
+ end
402
+
403
+ sig { override.params(other_ext: Object).returns(T.nilable(Integer)).checked(:never) }
404
+ def <=>(other_ext)
405
+ return nil unless other_ext.is_a?(Extension)
406
+ other_ext.name <=> name
407
+ end
408
+
409
+ # returns list of exception codes that are defined by any version of this extension
410
+ sig { returns(T::Array[ExceptionCode]) }
411
+ def exception_codes
412
+ @exception_codes ||=
413
+ @cfg_arch.exception_codes.select do |ecode|
414
+ if ecode.defined_by_condition.mentions?(self)
415
+ ecode.defined_by_condition.satisfied_by_ext_req?(to_ext_req, include_requirements: false) ||
416
+ ecode.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req)
417
+ else
418
+ false
419
+ end
420
+ end
421
+ end
422
+
423
+ # returns list of interrupt codes that are defined by any version of this extension
424
+ sig { returns(T::Array[InterruptCode]) }
425
+ def interrupt_codes
426
+ @interrupt_codes ||=
427
+ @cfg_arch.interrupt_codes.select do |icode|
428
+ if icode.defined_by_condition.mentions?(self)
429
+ icode.defined_by_condition.satisfied_by_ext_req?(to_ext_req, include_requirements: false) ||
430
+ icode.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req)
431
+ else
432
+ false
433
+ end
434
+ end
435
+ end
436
+
437
+ # returns an ext req that will be satisfied by any known version of this extension
438
+ sig { returns(ExtensionRequirement) }
439
+ def to_ext_req
440
+ @ext_req ||= @cfg_arch.extension_requirement(name, ">= 0")
441
+ end
442
+ end
443
+
444
+ # A specific version of an extension
445
+ class ExtensionVersion
446
+ extend T::Sig
447
+ include Comparable
448
+
449
+ # @return [String] Name of the extension
450
+ sig { returns(String) }
451
+ attr_reader :name
452
+
453
+ # @return [Extension] Extension
454
+ sig { returns(Extension) }
455
+ attr_reader :ext
456
+
457
+ # @return [VersionSpec]
458
+ sig { returns(VersionSpec) }
459
+ attr_reader :version_spec
460
+
461
+ # @return [String]
462
+ sig { returns(String) }
463
+ attr_reader :version_str
464
+
465
+ sig { returns(ConfiguredArchitecture) }
466
+ attr_reader :arch
467
+
468
+ # create an ExtensionVersion from YAML
469
+ sig {
470
+ params(
471
+ yaml: T::Hash[String, T.untyped],
472
+ cfg_arch: ConfiguredArchitecture
473
+ ).returns(ExtensionVersion)
474
+ }
475
+ def self.create(yaml, cfg_arch)
476
+ requirements =
477
+ if yaml.key?("version")
478
+ yaml.fetch("version")
479
+ else
480
+ raise "not an extension version"
481
+ end
482
+ if requirements.is_a?(Array)
483
+ if requirements.size != 1
484
+ raise "not an extension version: #{requirements} (#{requirements.size})"
485
+ end
486
+ requirements = requirements.fetch(0)
487
+ end
488
+ begin
489
+ cfg_arch.extension_version(yaml.fetch("name"), RequirementSpec.new(requirements).version_spec)
490
+ rescue
491
+ raise "not an extension version"
492
+ end
493
+ end
494
+
495
+ # @api private
496
+ class MemomizedState < T::Struct
497
+ prop :unconditional_expanded_ext_reqs, T.nilable(T::Array[ExtensionRequirement])
498
+ prop :unconditional_unexpanded_ext_reqs, T.nilable(T::Array[ExtensionRequirement])
499
+ prop :unconditional_expanded_ext_conflicts, T.nilable(T::Array[ExtensionRequirement])
500
+ prop :unconditional_unexpanded_ext_conflicts, T.nilable(T::Array[ExtensionRequirement])
501
+ prop :conditional_expanded_extension_requirements, T.nilable(T::Array[ConditionalExtensionRequirement])
502
+ prop :conditional_unexpanded_extension_requirements, T.nilable(T::Array[ConditionalExtensionRequirement])
503
+ prop :expanded_ext_requirements, T.nilable(T::Array[ConditionalExtensionRequirement])
504
+ prop :unexpanded_ext_requirements, T.nilable(T::Array[ConditionalExtensionRequirement])
505
+ prop :expanded_ext_conflicts, T.nilable(T::Array[ConditionalExtensionRequirement])
506
+ prop :unexpanded_ext_conflicts, T.nilable(T::Array[ConditionalExtensionRequirement])
507
+ prop :term, T.nilable(ExtensionTerm)
508
+ prop :condition, T.nilable(AbstractCondition)
509
+ prop :compatible_versions, T.nilable(T::Array[ExtensionVersion])
510
+ prop :key, T.nilable(Integer)
511
+ end
512
+
513
+ # @param name [#to_s] The extension name
514
+ # @param version [String] The version specifier
515
+ # @param arch [Architecture] The architecture definition
516
+ sig { params(name: String, version_spec: VersionSpec, arch: ConfiguredArchitecture, fail_if_version_does_not_exist: T::Boolean).void }
517
+ def initialize(name, version_spec, arch, fail_if_version_does_not_exist: false)
518
+ @name = name.freeze
519
+ @version_spec = version_spec.freeze
520
+ @version_str = @version_spec.canonical.freeze
521
+
522
+ @arch = arch
523
+
524
+ @ext = @arch.extension(@name)
525
+ if fail_if_version_does_not_exist && @ext.nil?
526
+ raise "Extension #{name} not found in architecture"
527
+ elsif @ext.nil?
528
+ Udb.logger.warn "Extension #{name} not found in architecture"
529
+ return # can't go futher
530
+ end
531
+
532
+ @data = @ext.data["versions"].find { |v| VersionSpec.new(v["version"]) == @version_spec }
533
+
534
+ if fail_if_version_does_not_exist && @data.nil?
535
+ raise ArgumentError, "Version #{version_str} of #{@name} extension is not defined"
536
+ elsif @data.nil?
537
+ Udb.logger.warn "Version #{version_str} of #{@name} extension is not defined"
538
+ end
539
+
540
+ @memo = MemomizedState.new
541
+ end
542
+ private_class_method :new
543
+
544
+ # @return true if this ExtensionVersion is defined in the database
545
+ sig { returns(T::Boolean) }
546
+ def valid? = !@ext.nil?
547
+
548
+ # @api private
549
+ def inspect
550
+ to_s
551
+ end
552
+
553
+ # true if the extension {name, version} is defined in the database, regardless of config
554
+ # false otherwise
555
+ sig { returns(T::Boolean) }
556
+ def valid? = !@data.nil?
557
+
558
+ # given a set of extension versions from the *same* extension, return the minimal set of
559
+ # extension requirements that would cover then all
560
+ sig { params(ext_vers: T::Array[ExtensionVersion]).returns(ExtensionRequirement) }
561
+ def self.to_ext_req(ext_vers)
562
+ raise "ext_vers cannot be empty" if ext_vers.empty?
563
+ raise "All ext_vers must be of the same extension" unless ext_vers.all? { |ev| ev.name == ext_vers.fetch(0).name }
564
+
565
+ sorted = ext_vers.sort
566
+ unless T.must(sorted.min).compatible?(T.must(sorted.max))
567
+ raise "Impossible to combine because the set contains incompatible versions"
568
+ end
569
+
570
+ ext_vers.fetch(0).arch.extension_requirement(ext_vers.fetch(0).name, "~> #{T.must(sorted.min).version_str}")
571
+ end
572
+
573
+ # @api private
574
+ sig { returns(ExtensionTerm) }
575
+ def to_term
576
+ @memo.term ||= ExtensionTerm.new(@name, "=", @version_str)
577
+ end
578
+
579
+ sig { returns(AbstractCondition) }
580
+ def to_condition
581
+ @memo.condition ||=
582
+ Condition.new(condition_hash, @arch)
583
+ end
584
+
585
+ sig { returns(T.any(T::Hash[String, T.untyped], FalseClass)) }
586
+ def condition_hash
587
+ {
588
+ "extension" => {
589
+ "name" => name,
590
+ "version" => "= #{version_str}"
591
+ }
592
+ }
593
+ end
594
+
595
+ # @return List of known ExtensionVersions that are compatible with this ExtensionVersion (i.e., have larger version number and are not breaking)
596
+ # the list is inclsive (this version is present)
597
+ sig { returns(T::Array[ExtensionVersion]) }
598
+ def compatible_versions
599
+ return @memo.compatible_versions unless @memo.compatible_versions.nil?
600
+
601
+ @memo.compatible_versions = []
602
+ @ext.versions.each do |v|
603
+ @memo.compatible_versions << v if v.version_spec >= @version_spec
604
+ break if @memo.compatible_versions.size.positive? && v.breaking?
605
+ end
606
+ raise "Didn't even find self?" if compatible_versions.empty?
607
+
608
+ @memo.compatible_versions
609
+ end
610
+
611
+ # @param other [ExtensionVersion]
612
+ # @return [Boolean] Whether or not +other+ is compatible with self
613
+ sig { params(other: ExtensionVersion).returns(T::Boolean) }
614
+ def compatible?(other) = compatible_versions.include?(other)
615
+
616
+ # @return [Boolean] Whether or not this is a breaking version (i.e., incompatible with all prior versions)
617
+ sig { returns(T::Boolean) }
618
+ def breaking?
619
+ !@data["breaking"].nil?
620
+ end
621
+
622
+ # @return [String] Canonical version string
623
+ sig { returns(String) }
624
+ def canonical_version = @version_spec.canonical
625
+
626
+ sig { override.params(other: T.untyped).returns(T::Boolean) }
627
+ def eql?(other)
628
+ if other.is_a?(ExtensionVersion)
629
+ self.==(other)
630
+ else
631
+ false
632
+ end
633
+ end
634
+
635
+ sig { override.returns(Integer) }
636
+ def hash
637
+ @memo.key ||= [@name, @version_spec].hash
638
+ end
639
+
640
+ # @return [String] The state of the extension version ('ratified', 'developemnt', etc)
641
+ sig { returns(String) }
642
+ def state = T.cast(@data.fetch("state"), String)
643
+
644
+ sig { returns(T.nilable(String)) }
645
+ def ratification_date = @data["ratification_date"]
646
+
647
+ sig { returns(T.nilable(T::Array[String])) }
648
+ def changes = @data["changes"].nil? ? [] : T.cast(@data.fetch("changes"), T::Array[String])
649
+
650
+ sig { returns(T.nilable(String)) }
651
+ def url = @data["url"]
652
+
653
+ # @return [Array<Person>] List of contributors to this extension version
654
+ sig { returns(T::Array[Person]) }
655
+ def contributors
656
+ return @contributors unless @contributors.nil?
657
+
658
+ @contributors = []
659
+ @data["contributors"]&.each do |c|
660
+ @contributors << Person.new(c)
661
+ end
662
+ @contributors
663
+ end
664
+
665
+ # @return The list of parameters for this extension version
666
+ sig { returns(T::Array[T.any(Parameter, ParameterWithValue)]) }
667
+ def params
668
+ @params ||=
669
+ ext.params.select do |param|
670
+ (param.defined_by_condition & to_condition).satisfiable_by_cfg_arch?(@arch)
671
+ end
672
+ end
673
+
674
+ # @return the list of instructions that must be implemented when self is implemented,
675
+ # excluding instructions required by a dependence
676
+ sig { returns(T::Array[Instruction]) }
677
+ def directly_defined_instructions
678
+ @instructions ||=
679
+ all_instructions_that_must_be_implemented - implied_instructions
680
+ end
681
+
682
+ # @api private
683
+ sig { returns(T::Set[Instruction]) }
684
+ def directly_defined_instructions_set
685
+ @instructions_set ||= Set.new(directly_defined_instructions)
686
+ end
687
+
688
+ sig { returns(T::Array[Instruction]) }
689
+ def implied_instructions
690
+ @implied_instructions ||=
691
+ begin
692
+ pb =
693
+ Udb.create_progressbar(
694
+ "Finding implied instructions for #{self} [:bar] :current/:total",
695
+ total: @arch.instructions.size,
696
+ clear: true
697
+ )
698
+ @arch.instructions.select do |i|
699
+ pb.advance
700
+
701
+ (-i.defined_by_condition & requirements_condition).unsatisfiable_by_arch?(@arch)
702
+ end
703
+ end
704
+ end
705
+
706
+ # list of all instructions that must be defined if this extension version is implemented
707
+ # includes both those instructions directly defined by the extension plus any instruction
708
+ # that must exist because of a dependence
709
+ sig { returns(T::Array[Instruction]) }
710
+ def all_instructions_that_must_be_implemented
711
+ @all_instructions_that_must_be_implemented ||=
712
+ begin
713
+ pb =
714
+ Udb.create_progressbar(
715
+ "Finding implied instructions for #{self} [:bar] :current/:total",
716
+ total: @arch.instructions.size,
717
+ clear: true
718
+ )
719
+ @arch.instructions.select do |i|
720
+ pb.advance
721
+
722
+ (-i.defined_by_condition & to_condition).unsatisfiable_by_arch?(@arch)
723
+ end
724
+ end
725
+ end
726
+
727
+ sig { returns(T::Set[Instruction]) }
728
+ def implied_instructions_set
729
+ @implied_instructions_set ||= Set.new(implied_instructions)
730
+ end
731
+
732
+ sig { returns(T::Array[Csr]) }
733
+ def csrs
734
+ @csrs ||=
735
+ ext.csrs.select do |csr|
736
+ (csr.defined_by_condition & to_condition).satisfiable_by_cfg_arch?(@arch)
737
+ end
738
+ end
739
+
740
+ sig { returns(T::Array[Csr]) }
741
+ def implied_csrs
742
+ @implied_csrs ||=
743
+ begin
744
+ pb =
745
+ Udb.create_progressbar(
746
+ "Finding implied csrs for #{self} [:bar] :current/:total",
747
+ total: @arch.csrs.size,
748
+ clear: true
749
+ )
750
+ @arch.csrs.select do |csr|
751
+ pb.advance
752
+ (-csr.defined_by_condition & requirements_condition).satisfiable_by_cfg_arch?(@arch)
753
+ end
754
+ end
755
+ end
756
+
757
+ sig { returns(T::Array[Csr]) }
758
+ def all_csrs_that_must_be_implemented
759
+ @all_csrs_that_must_be_implemented ||= csrs + implied_csrs
760
+ end
761
+
762
+ # @return [String] formatted like the RVI manual
763
+ #
764
+ # @example
765
+ # ExtensionVersion.new("A", "2.2").to_rvi_s #=> "A2p2"
766
+ sig { returns(String) }
767
+ def to_rvi_s
768
+ "#{name}#{@version_spec.to_rvi_s}"
769
+ end
770
+
771
+ # @return [String] Ext@Version
772
+ sig { returns(String) }
773
+ def to_s
774
+ "#{name}@#{@version_spec.canonical}"
775
+ end
776
+
777
+ # @return Condition that must be met for this version to be allowed.
778
+ sig { returns(AbstractCondition) }
779
+ def version_specific_requirements_condition
780
+ @requirements_condition ||=
781
+ @data.key?("requirements") \
782
+ ? Condition.new(
783
+ @data.fetch("requirements"),
784
+ @arch,
785
+ input_file: Pathname.new(ext.__source),
786
+ input_line: ext.source_line(["versions", ext.data.fetch("versions").index { |v| VersionSpec.new(v["version"]) == version_spec }])
787
+ )
788
+ : AlwaysTrueCondition.new(@arch)
789
+ end
790
+
791
+ # the combination of this extension version requirement along with the overall extension requirements
792
+ sig { returns(AbstractCondition) }
793
+ def requirements_condition
794
+ @requirements_condition ||=
795
+ if @data.key?("requirements") && ext.data.key?("requirements")
796
+ Condition.new(
797
+ {
798
+ "allOf" => [
799
+ @data.fetch("requirements"),
800
+ ext.data.fetch("requirements")
801
+ ]
802
+ },
803
+ @arch
804
+ )
805
+ elsif !@data.key?("requirements")
806
+ ext.general_extension_requirements_condition
807
+ else
808
+ version_specific_requirements_condition
809
+ end
810
+ end
811
+
812
+ sig { returns(T::Array[ConditionalExtensionRequirement]) }
813
+ def defining_extension_requirements
814
+ []
815
+ # combined_requirements_condition.implied_extension_requirements
816
+ end
817
+
818
+ # return all ExtensionRequirements that this ExtensionVersion unconditionally depends on
819
+ # When expand is false, just return the list of ExtensionRequirements directly mentioned by the extension
820
+ # When expand is true, also include ExtensionRequirements that are required by those directly mentioned by the extension
821
+ # (i.e., collect the list from the transitive closure of requirements)
822
+ sig { params(expand: T::Boolean).returns(T::Array[ExtensionRequirement]) }
823
+ def unconditional_extension_requirements(expand:)
824
+ if expand && !@memo.unconditional_expanded_ext_reqs.nil?
825
+ @memo.unconditional_expanded_ext_reqs
826
+ elsif !expand && !@memo.unconditional_unexpanded_ext_reqs.nil?
827
+ @memo.unconditional_unexpanded_ext_reqs
828
+ else
829
+ list =
830
+ begin
831
+ requirements_condition.ext_req_terms(expand:).select do |ext_req|
832
+ # is requirements_condition satisfiable when ext_req is not met?
833
+ (requirements_condition & -ext_req.to_condition).unsatisfiable?
834
+ end
835
+
836
+
837
+ # req = requirements_condition.to_logic_tree(expand:)
838
+ # expand_req = requirements_condition.to_logic_tree(expand: true)
839
+
840
+ # # find all unconditional reqs -- that is,
841
+ # # reqs that must always be satisfied for requirements to be met
842
+ # unconditional_terms =
843
+ # req.terms.select do |term|
844
+ # next if term.is_a?(ParameterTerm) || term.is_a?(XlenTerm)
845
+ # raise "?" if term.is_a?(FreeTerm)
846
+
847
+ # next if term.name == name
848
+
849
+ # # see if req is satisfiable when term is absent
850
+ # cb = LogicNode.make_replace_cb do |node|
851
+ # if node.type == LogicNodeType::Term && node.node_children.fetch(0).is_a?(ExtensionTerm)
852
+ # node_term = T.cast(node.node_children.fetch(0), ExtensionTerm)
853
+ # if node_term.name == name
854
+ # LogicNode::True
855
+ # elsif node_term.name == term.name
856
+ # LogicNode::False
857
+ # else
858
+ # node
859
+ # end
860
+ # else
861
+ # node
862
+ # end
863
+ # end
864
+ # !expand_req.replace_terms(cb).satisfiable?
865
+ # end
866
+ # T.cast(unconditional_terms, T::Array[ExtensionTerm]).map { |t| t.to_ext_req(@arch) }
867
+ end
868
+ if expand
869
+ @memo.unconditional_expanded_ext_reqs = list
870
+ @memo.unconditional_expanded_ext_reqs.freeze
871
+ else
872
+ @memo.unconditional_unexpanded_ext_reqs = list
873
+ @memo.unconditional_unexpanded_ext_reqs.freeze
874
+ end
875
+ end
876
+ end
877
+
878
+ # return the exhaustive, transitive list of all known extension versions that unconditionally
879
+ # conflict with self
880
+ sig { returns(T::Array[ExtensionVersion]) }
881
+ def unconditional_extension_version_conflicts
882
+ @unconditional_extension_version_conflicts ||=
883
+ @arch.extension_versions.select do |ext_ver|
884
+ next if ext_ver.name == name
885
+
886
+ (to_condition & ext_ver.to_condition).unsatisfiable?
887
+ # !Condition.conjunction([to_condition, ext_ver.to_condition], @arch).satisfiable?
888
+ end
889
+ end
890
+
891
+ # return all ExtensionRequirements that this ExtensionVersion unconditionally conflicts with
892
+ # When expand is false, just return the list of ExtensionRequirements directly mentioned by the extension
893
+ # When expand is true, also include ExtensionRequirements that are required by those directly mentioned by the extension
894
+ # (i.e., collect the list from the transitive closure of requirements)
895
+ sig { params(expand: T::Boolean).returns(T::Array[ExtensionRequirement]) }
896
+ def unconditional_extension_conflicts(expand:)
897
+ if expand && !@memo.unconditional_expanded_ext_conflicts.nil?
898
+ @memo.unconditional_expanded_ext_conflicts
899
+ elsif !expand && !@memo.unconditional_unexpanded_ext_conflicts.nil?
900
+ @memo.unconditional_unexpanded_ext_conflicts
901
+ else
902
+ list =
903
+ begin
904
+ requirements_condition.ext_req_terms(expand:).select do |ext_req|
905
+ (requirements_condition & ext_req.to_condition).unsatisfiable?
906
+ end
907
+
908
+
909
+ # req = requirements_condition.to_logic_tree(expand:)
910
+ # expand_req = requirements_condition.to_logic_tree(expand: true)
911
+
912
+ # # find all unconditional reqs -- that is,
913
+ # # reqs that must always be satisfied for requirements to be met
914
+ # unconditional_terms =
915
+ # req.terms.select do |term|
916
+ # next if term.is_a?(ParameterTerm) || term.is_a?(XlenTerm)
917
+ # raise "?" if term.is_a?(FreeTerm)
918
+
919
+ # next if term.name == name
920
+
921
+ # # see if req is unsatisfiable when term is present
922
+ # cb = LogicNode.make_replace_cb do |node|
923
+ # if node.type == LogicNodeType::Term && node.node_children.fetch(0).is_a?(ExtensionTerm)
924
+ # node_term = T.cast(node.node_children.fetch(0), ExtensionTerm)
925
+ # if node_term.name == name
926
+ # LogicNode::True
927
+ # elsif node_term.name == term.name
928
+ # LogicNode::True
929
+ # else
930
+ # node
931
+ # end
932
+ # else
933
+ # node
934
+ # end
935
+ # end
936
+ # !expand_req.replace_terms(cb).satisfiable?
937
+ # end
938
+
939
+ # T.cast(unconditional_terms, T::Array[ExtensionTerm]).map { |t| t.to_ext_req(@arch) }
940
+ end
941
+ if expand
942
+ @memo.unconditional_expanded_ext_conflicts = list
943
+ @memo.unconditional_expanded_ext_conflicts.freeze
944
+ else
945
+ @memo.unconditional_unexpanded_ext_conflicts = list
946
+ @memo.unconditional_unexpanded_ext_conflicts.freeze
947
+ end
948
+ end
949
+ end
950
+
951
+ sig { params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
952
+ def conditional_extension_requirements(expand:)
953
+ if expand && !@memo.conditional_expanded_extension_requirements.nil?
954
+ @memo.conditional_expanded_extension_requirements
955
+ elsif !expand && !@memo.conditional_unexpanded_extension_requirements.nil?
956
+ @memo.conditional_unexpanded_extension_requirements
957
+ else
958
+ req = requirements_condition.to_logic_tree(expand:)
959
+
960
+ cb = LogicNode.make_replace_cb do |node|
961
+ next node unless node.type == LogicNodeType::Term
962
+
963
+ rterm = node.children.fetch(0)
964
+
965
+ next node unless rterm.is_a?(ExtensionTerm)
966
+
967
+ # remove self
968
+ next LogicNode::True if rterm.to_ext_req(@arch).satisfied_by?(self)
969
+
970
+ # remove terms unconditionally true or false
971
+ next LogicNode::True if unconditional_extension_requirements(expand: true).any? { |ext_req| ext_req.satisfied_by?(rterm.to_ext_req(@arch)) }
972
+ next LogicNode::False if unconditional_extension_conflicts(expand: true).any? { |ext_req| ext_req.satisfied_by?(rterm.to_ext_req(@arch)) }
973
+
974
+ node
975
+ end
976
+
977
+ remaining =
978
+ req.replace_terms(cb).minimize(LogicNode::CanonicalizationType::ProductOfSums)
979
+
980
+ list = T.let([], T::Array[ConditionalExtensionRequirement])
981
+
982
+ # for the remaining terms, find out which ones
983
+ remaining.terms.each do |term|
984
+ next unless term.is_a?(ExtensionTerm)
985
+
986
+ # find unconditional reqs of self && term
987
+ c = Condition.conjunction([term.to_condition(@arch), to_condition], @arch)
988
+ ctree = c.to_logic_tree(expand: true)
989
+ unconditional_terms = remaining.terms.select do |cterm|
990
+ next if cterm.is_a?(ParameterTerm) || cterm.is_a?(XlenTerm)
991
+ raise "?" if cterm.is_a?(FreeTerm)
992
+
993
+ next if cterm.name == name
994
+ next if cterm.name == term.name
995
+
996
+ cb = LogicNode.make_replace_cb do |node|
997
+ if node.type == LogicNodeType::Term && node.node_children.fetch(0).is_a?(ExtensionTerm)
998
+ node_term = T.cast(node.node_children.fetch(0), ExtensionTerm)
999
+ if node_term.name == name
1000
+ LogicNode::True
1001
+ elsif node_term.name == cterm.name
1002
+ LogicNode::False
1003
+ else
1004
+ node
1005
+ end
1006
+ else
1007
+ node
1008
+ end
1009
+ end
1010
+ !ctree.replace_terms(cb).satisfiable?(@arch)
1011
+ end
1012
+
1013
+ next if unconditional_terms.empty?
1014
+
1015
+ if unconditional_terms.size == 1
1016
+ cond = T.cast(unconditional_terms.fetch(0), ExtensionTerm).to_ext_req(@arch).to_condition
1017
+ contradiction =
1018
+ Condition.conjunction(
1019
+ [
1020
+ cond,
1021
+ Condition.not(term.to_condition(@arch), @arch),
1022
+ to_condition
1023
+ ],
1024
+ @arch
1025
+ )
1026
+ is_needed = !contradiction.satisfiable?
1027
+ if is_needed
1028
+ if Condition.conjunction([cond, Condition.not(term.to_condition(@arch), @arch)], @arch).satisfiable? # skip reqs that are implied
1029
+ list << ConditionalExtensionRequirement.new(
1030
+ ext_req: term.to_ext_req(@arch),
1031
+ cond:
1032
+ )
1033
+ end
1034
+ end
1035
+ else
1036
+ conj = Condition.conjunction(unconditional_terms.map { |t| T.cast(t, ExtensionTerm).to_condition(@arch) }, @arch)
1037
+ conj_tree = conj.to_logic_tree(expand: false)
1038
+ formula = LogicNode.new(
1039
+ LogicNodeType::And,
1040
+ conj_tree.node_children.map do |node|
1041
+ covered = conj_tree.node_children.any? do |other_node|
1042
+ next false if node.equal?(other_node)
1043
+
1044
+ if Condition.conjunction([to_condition, Condition.new(other_node.to_h, @arch)], @arch).always_implies?(Condition.new(node.to_h, @arch))
1045
+ true
1046
+ else
1047
+ false
1048
+ end
1049
+ end
1050
+
1051
+ if covered
1052
+ LogicNode::True
1053
+ else
1054
+ node
1055
+ end
1056
+ end
1057
+ )
1058
+ # is this needed? if self can still be satisfied when condition is false but term is true,
1059
+ # this term isn't actually a requirement (it's most likely related to a conflict)
1060
+ contradiction =
1061
+ Condition.conjunction(
1062
+ [
1063
+ conj,
1064
+ Condition.not(term.to_condition(@arch), @arch),
1065
+ to_condition
1066
+ ],
1067
+ @arch
1068
+ )
1069
+ is_needed = !contradiction.satisfiable?
1070
+ cond = Condition.new(formula.reduce.to_h, @arch)
1071
+ if is_needed # && Condition.conjunction([cond, term.to_condition(@arch), to_condition], @arch).satisfiable? # make sure it's a requirement
1072
+ if Condition.conjunction([cond, Condition.not(term.to_condition(@arch), @arch)], @arch).satisfiable?
1073
+ list << ConditionalExtensionRequirement.new(
1074
+ ext_req: term.to_ext_req(@arch),
1075
+ cond:
1076
+ )
1077
+ end
1078
+ end
1079
+ end
1080
+ end
1081
+
1082
+ if expand
1083
+ list.each do |cond_ext_req|
1084
+ ext_ver = T.must(cond_ext_req.ext_req.satisfying_versions.max)
1085
+ ext_ver.ext_requirements(expand:).each do |nested_cond_ext_req|
1086
+ already_in_cond_list =
1087
+ list.any? { |c| c.ext_req.satisfied_by?(nested_cond_ext_req.ext_req) } \
1088
+ || list.any? { |c| c.cond.to_logic_tree(expand: false).terms.any? { |t| T.cast(t, ExtensionTerm).to_ext_req(@arch).satisfied_by?(nested_cond_ext_req.ext_req) } }
1089
+ already_in_uncond_list =
1090
+ unconditional_extension_requirements(expand:).any? { |ext_req| nested_cond_ext_req.ext_req.satisfied_by?(ext_req) }
1091
+ next if already_in_uncond_list
1092
+
1093
+ if already_in_cond_list
1094
+ # keep the one with the more expansive condition
1095
+
1096
+ else
1097
+ if nested_cond_ext_req.cond.empty?
1098
+ list << ConditionalExtensionRequirement.new(
1099
+ ext_req: nested_cond_ext_req.ext_req,
1100
+ cond: cond_ext_req.cond
1101
+ )
1102
+ else
1103
+ list << ConditionalExtensionRequirement.new(
1104
+ ext_req: nested_cond_ext_req.ext_req,
1105
+ cond: Condition.conjunction([cond_ext_req.cond, nested_cond_ext_req.cond], @arch)
1106
+ )
1107
+ end
1108
+ end
1109
+ end
1110
+ end
1111
+ end
1112
+
1113
+ if expand
1114
+ @memo.conditional_expanded_extension_requirements = list
1115
+ @memo.conditional_expanded_extension_requirements.freeze
1116
+ else
1117
+ @memo.conditional_unexpanded_extension_requirements = list
1118
+ @memo.conditional_unexpanded_extension_requirements.freeze
1119
+ end
1120
+ end
1121
+ end
1122
+
1123
+ # list of requirements that must be met to implement this ExtensionVersion
1124
+ # If conditional, the requirement only applies when the condition is true
1125
+ sig { params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
1126
+ def ext_requirements(expand:)
1127
+ # make a condition for the version, expand it, and then report what comes out, minus self
1128
+ if expand
1129
+ @memo.expanded_ext_requirements ||=
1130
+ unconditional_extension_requirements(expand:).map { |ext_req| ConditionalExtensionRequirement.new(ext_req:, cond: AlwaysTrueCondition.new(@arch)) } \
1131
+ + conditional_extension_requirements(expand:)
1132
+ else
1133
+ @memo.unexpanded_ext_requirements ||=
1134
+ unconditional_extension_requirements(expand:).map { |ext_req| ConditionalExtensionRequirement.new(ext_req:, cond: AlwaysTrueCondition.new(@arch)) } \
1135
+ + conditional_extension_requirements(expand:)
1136
+ end
1137
+ end
1138
+
1139
+ sig { params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) }
1140
+ def ext_conflicts(expand:)
1141
+ # make a condition for the version, expand it, and then report what comes out, minus self
1142
+ if expand
1143
+ @memo.expanded_ext_conflicts ||=
1144
+ unconditional_extension_conflicts(expand:).map { |ext_req| ConditionalExtensionRequirement.new(ext_req:, cond: AlwaysTrueCondition.new(@arch)) }
1145
+ else
1146
+ @memo.unexpanded_ext_conflicts ||=
1147
+ unconditional_extension_conflicts(expand:).map { |ext_req| ConditionalExtensionRequirement.new(ext_req:, cond: AlwaysTrueCondition.new(@arch)) }
1148
+ end
1149
+ end
1150
+
1151
+ # sorts extension by name, then by version
1152
+ sig { override.params(other: T.untyped).returns(T.nilable(Integer)).checked(:never) }
1153
+ def <=>(other)
1154
+ return nil unless other.is_a?(ExtensionVersion)
1155
+
1156
+ if other.name != @name
1157
+ @name <=> other.name
1158
+ else
1159
+ @version_spec <=> other.version_spec
1160
+ end
1161
+ end
1162
+
1163
+ # the list of exception codes that require this extension version (or a compatible version)
1164
+ # in order to be defined
1165
+ sig { returns(T::Array[ExceptionCode]) }
1166
+ def exception_codes
1167
+ @exception_codes ||=
1168
+ @arch.exception_codes.select do |ecode|
1169
+ # define every extension version except this one (and compatible),
1170
+ # and test if the condition can be satisfied
1171
+ ecode.defined_by_condition.satisfied_by_ext_req?(@arch.extension_requirement(@name, "~> #{@version_spec}"), include_requirements: false) ||
1172
+ ecode.defined_by_condition.satisfiability_depends_on_ext_req?(@arch.extension_requirement(@name, "~> #{@version_spec}"))
1173
+ end
1174
+ end
1175
+
1176
+ # the list of interrupt codes that require this extension version (or a compatible version)
1177
+ # in order to be defined
1178
+ sig { returns(T::Array[InterruptCode]) }
1179
+ def interrupt_codes
1180
+ @interrupt_codes ||=
1181
+ @arch.interrupt_codes.select do |icode|
1182
+ icode.defined_by_condition.satisfied_by_ext_req?(@arch.extension_requirement(@name, "~> #{@version_spec}"), include_requirements: false) ||
1183
+ icode.defined_by_condition.satisfiability_depends_on_ext_req?(@arch.extension_requirement(@name, "~> #{@version_spec}"))
1184
+ end
1185
+ end
1186
+
1187
+ sig { params(xlens: T::Array[Integer]).returns(T::Array[Csr]) }
1188
+ def in_scope_csrs(xlens)
1189
+ csrs.select do |csr|
1190
+ csr.base.nil? || xlens.include?(csr.base)
1191
+ end
1192
+ end
1193
+
1194
+ sig { params(xlens: T::Array[Integer]).returns(T::Array[Instruction]) }
1195
+ def in_scope_instructions(xlens)
1196
+ directly_defined_instructions.select do |inst|
1197
+ inst.base.nil? || xlens.include?(inst.base)
1198
+ end
1199
+ end
1200
+
1201
+ sig { returns(ExtensionRequirement) }
1202
+ def to_ext_req
1203
+ @ext_req ||= @arch.extension_requirement(name, "= #{version_str}")
1204
+ end
1205
+
1206
+ sig { returns(T::Hash[String, T.untyped]) }
1207
+ def to_h
1208
+ @h ||=
1209
+ {
1210
+ "name" => @name,
1211
+ "version" => "= #{version_str}"
1212
+ }
1213
+ end
1214
+ end
1215
+
1216
+ # Represents an extension requirement, that is an extension name paired with version requirement(s)
1217
+ class ExtensionRequirement
1218
+ extend T::Sig
1219
+
1220
+ # @return [String] Extension name
1221
+ attr_reader :name
1222
+
1223
+ sig { returns(ExtensionTerm) }
1224
+ def to_term
1225
+ if @requirements.size == 1
1226
+ ExtensionTerm.new(name, @requirements.fetch(0).op, @requirements.fetch(0).version_spec)
1227
+ else
1228
+ raise "TODO #{self} #{@requirements.size}"
1229
+ end
1230
+ end
1231
+
1232
+ sig { returns(ConfiguredArchitecture) }
1233
+ def cfg_arch = @arch
1234
+
1235
+ # returns true when the version requirement is ">= 0"
1236
+ sig { returns(T::Boolean) }
1237
+ def satified_by_any_version?
1238
+ @requirements.size == 1 && \
1239
+ @requirements.fetch(0).op == ">=" && \
1240
+ @requirements.fetch(0).version_spec == "0"
1241
+ end
1242
+
1243
+ # @return Set of requirement specifications
1244
+ sig { returns(T::Array[RequirementSpec]) }
1245
+ def requirement_specs = @requirements
1246
+
1247
+ # pretty display of requirements, with special case that ">= 0" is "any"
1248
+ def requirement_specs_to_s_pretty
1249
+ if satified_by_any_version?
1250
+ "any"
1251
+ else
1252
+ "#{@requirements.map(&:to_s).join(" and ")}"
1253
+ end
1254
+ end
1255
+
1256
+ sig { override.returns(String) }
1257
+ def to_s
1258
+ "#{name} " + requirement_specs_to_s_pretty
1259
+ end
1260
+
1261
+ # like to_s, but omits the requirement if the requirement is ">= 0"
1262
+ sig { returns(String) }
1263
+ def to_s_pretty
1264
+ if satified_by_any_version?
1265
+ name
1266
+ else
1267
+ to_s
1268
+ end
1269
+ end
1270
+
1271
+ # @return [Extension] The extension that this requirement is for
1272
+ sig { returns(Extension) }
1273
+ def extension
1274
+ @extension ||= T.must(@arch.extension(@name))
1275
+ end
1276
+
1277
+ # create an ExtensionRequirement from YAML
1278
+ sig {
1279
+ params(
1280
+ yaml: T::Hash[String, T.untyped],
1281
+ cfg_arch: ConfiguredArchitecture
1282
+ ).returns(ExtensionRequirement)
1283
+ }
1284
+ def self.create_from_yaml(yaml, cfg_arch)
1285
+ requirements =
1286
+ if yaml["version"]
1287
+ yaml.fetch("version")
1288
+ else
1289
+ ">= 0"
1290
+ end
1291
+ cfg_arch.extension_requirement(yaml.fetch("name"), requirements)
1292
+ end
1293
+
1294
+ # given a list of extension versions, return a single extension requirement that covers them
1295
+ # if the list is all known versions of an extension, will return the open-ended match ">= 0"
1296
+ sig {
1297
+ params(
1298
+ ext_vers: T::Array[ExtensionVersion]
1299
+ ).returns(ExtensionRequirement)
1300
+ }
1301
+ def self.create_from_ext_vers(ext_vers)
1302
+ raise "Must supply at least one extension version" if ext_vers.empty?
1303
+ raise "All ext_vers must be from the same extension" unless ext_vers.map(&:name).uniq.size == 1
1304
+
1305
+ # first, get rid of any duplicates
1306
+ uniq_ext_vers = ext_vers.uniq
1307
+ ext = uniq_ext_vers.fetch(0).ext
1308
+
1309
+ if uniq_ext_vers.size == ext.versions.size
1310
+ uniq_ext_vers.fetch(0).arch.extension_requirement(ext.name, ">= 0")
1311
+ elsif uniq_ext_vers.size == 1
1312
+ uniq_ext_vers.fetch(0).arch.extension_requirement(ext.name, "= #{uniq_ext_vers.fetch(0).version_str}")
1313
+ else
1314
+ min_ver = T.must(uniq_ext_vers.min)
1315
+ lower_bound = uniq_ext_vers.fetch(0).arch.extension_requirement(ext.name, ">= #{min_ver.version_str}")
1316
+ if lower_bound.satisfying_versions.size == uniq_ext_vers.size && uniq_ext_vers.all? { |ext_ver| lower_bound.satisfied_by?(ext_ver) }
1317
+ lower_bound
1318
+ else
1319
+ max_ver = T.must(uniq_ext_vers.max)
1320
+ upper_bound = uniq_ext_vers.fetch(0).arch.extension_requirement(ext.name, "<= #{max_ver.version_str}")
1321
+ if upper_bound.satisfying_versions.size == uniq_ext_vers.size && uniq_ext_vers.all? { |ext_ver| upper_bound.satisfied_by?(ext_ver) }
1322
+ upper_bound
1323
+ else
1324
+ range = uniq_ext_vers.fetch(0).arch.extension_requirement(ext.name, [">= #{min_ver.version_str}", "<= #{max_ver.version_str}"])
1325
+ if range.satisfying_versions.size == uniq_ext_vers.size && uniq_ext_vers.all? { |ext_ver| range.satisfied_by?(ext_ver) }
1326
+ range
1327
+ else
1328
+ # TODO: this is a complicated one
1329
+ raise "TODO: complicated extension requirement creation"
1330
+ end
1331
+ end
1332
+ end
1333
+ end
1334
+ end
1335
+
1336
+ sig { returns(T::Boolean) }
1337
+ def is_ext_ver?
1338
+ @requirements.size == 1 && @requirements.fetch(0).op == "="
1339
+ end
1340
+
1341
+ sig { returns(ExtensionVersion) }
1342
+ def to_ext_ver
1343
+ unless is_ext_ver?
1344
+ raise "ExtensionRequirement can only be converted to and ExtensionVersion when there is a single equality version requirement"
1345
+ end
1346
+
1347
+ @arch.extension_version(name, @requirements.fetch(0).version_spec.to_s)
1348
+ end
1349
+
1350
+ sig {
1351
+ params(
1352
+ name: String,
1353
+ requirements: T.any(String, T::Array[String], RequirementSpec, T::Array[RequirementSpec]),
1354
+ arch: ConfiguredArchitecture
1355
+ ).void
1356
+ }
1357
+ def initialize(name, requirements, arch:)
1358
+ @name = name.to_s.freeze
1359
+ @arch = arch
1360
+ @ext = @arch.extension(@name)
1361
+ Udb.logger.warn "Could not find extension named '#{@name}'" if @ext.nil?
1362
+
1363
+ @requirements =
1364
+ if @ext.nil?
1365
+ []
1366
+ else
1367
+ case requirements
1368
+ when Array
1369
+ if requirements.empty?
1370
+ [RequirementSpec.new(">= 0")]
1371
+ else
1372
+ if requirements.fetch(0).is_a?(String)
1373
+ requirements.map { |r| RequirementSpec.new(r) }
1374
+ else
1375
+ requirements
1376
+ end
1377
+ end
1378
+ when String
1379
+ [RequirementSpec.new(requirements)]
1380
+ when RequirementSpec
1381
+ [requirements]
1382
+ else
1383
+ T.absurd(requirements)
1384
+ end
1385
+ end.freeze
1386
+ end
1387
+ private_class_method :new
1388
+
1389
+ def invert!
1390
+ @requirements.each(&:invert!)
1391
+ end
1392
+
1393
+ # true if there is at least one matching extension version defined in the database
1394
+ # false otherwise (meaning there is no definition)
1395
+ sig { returns(T::Boolean) }
1396
+ def valid? = !satisfying_versions.empty?
1397
+
1398
+ # @return [Array<ExtensionVersion>] The list of extension versions that satisfy this extension requirement
1399
+ sig { returns(T::Array[ExtensionVersion]) }
1400
+ def satisfying_versions
1401
+ return @satisfying_versions unless @satisfying_versions.nil?
1402
+
1403
+ ext = @arch.extension(@name)
1404
+
1405
+ @satisfying_versions = ext.nil? ? [] : ext.versions.select { |v| satisfied_by?(v) }
1406
+ end
1407
+
1408
+ # if self is met, then the requirements of the implemented (and satisfying) version
1409
+ # must be must
1410
+ #
1411
+ # thus, the requirements condition for self overall is exactly one of the version requirements
1412
+ sig { returns(AbstractCondition) }
1413
+ def requirements_condition
1414
+ @requirements_condition ||=
1415
+ begin
1416
+ version_reqs = satisfying_versions.map do |ext_ver|
1417
+ unless ext_ver.requirements_condition.empty?
1418
+ [ext_ver, ext_ver.requirements_condition]
1419
+ end
1420
+ end.compact.to_h
1421
+ if version_reqs.empty?
1422
+ AlwaysTrueCondition.new(@arch)
1423
+ elsif version_reqs.size == 1
1424
+ version_reqs.values.fetch(0)
1425
+ else
1426
+ # exaclty one of the requirements must be met
1427
+ # also add an implication for each version so they don't mix/match
1428
+ Condition.disjunction(version_reqs.values, @arch) & Condition.conjunction(version_reqs.map { |ext_ver, req| ext_ver.to_condition.implies(req) }, @arch)
1429
+ end
1430
+ end
1431
+ end
1432
+
1433
+ # return a Condition representing this ExtensionRequirement
1434
+ sig { returns(Condition) }
1435
+ def to_condition
1436
+ @condition ||=
1437
+ Condition.new(condition_hash, @arch)
1438
+ end
1439
+
1440
+ # return the UDB YAML representation of a Condition representing this ExtensionRequirement
1441
+ sig { returns(T.any(T::Hash[String, T.untyped], FalseClass)) }
1442
+ def condition_hash
1443
+ if @requirements.size == 1
1444
+ {
1445
+ "extension" => {
1446
+ "name" => name,
1447
+ "version" => @requirements.fetch(0).to_s
1448
+ }
1449
+ }
1450
+ else
1451
+ # conditions don't handle multi-reqs, so return the list of satisfying versions instead
1452
+ if satisfying_versions.size == 0
1453
+ false
1454
+ elsif satisfying_versions.size == 1
1455
+ {
1456
+ "extension" => {
1457
+ "name" => name,
1458
+ "version" => "= #{satisfying_versions.fetch(0).version_str}"
1459
+ }
1460
+ }
1461
+ else
1462
+ {
1463
+ "anyOf" => satisfying_versions.map do |ext_ver|
1464
+ {
1465
+ "extension" => {
1466
+ "name" => name,
1467
+ "version" => "= #{ext_ver.version_str}"
1468
+ }
1469
+ }
1470
+ end
1471
+ }
1472
+ end
1473
+ end
1474
+ end
1475
+
1476
+ # return the list of parameters that are defined when ExtensionRequirement is met (and nothing else)
1477
+ sig { returns(T::Array[T.any(Parameter, ParameterWithValue)]) }
1478
+ def params
1479
+ @params ||=
1480
+ extension.params.select do |param|
1481
+ (param.defined_by_condition & to_condition).satisfiable?
1482
+ end
1483
+ end
1484
+
1485
+ # return the list of parameters that are defined when preconditions of the ExtensionRequirement are met (and nothing else)
1486
+ def implied_params
1487
+ @params ||= extension.params.select do |p|
1488
+ param_defined = p.defined_by_condition
1489
+ requirement_met = requirements_condition
1490
+
1491
+ (-param_defined & requirement_met).unsatisfiable?
1492
+ end
1493
+ end
1494
+
1495
+ # list of instructions directly implemented by *any* satisfying version
1496
+ sig { returns(T::Array[Instruction]) }
1497
+ def instructions
1498
+ @instructions ||=
1499
+ extension.instructions.select do |inst|
1500
+ (inst.defined_by_condition & to_condition).satisfiable?
1501
+ end
1502
+ end
1503
+
1504
+ # @api private
1505
+ sig { returns(T::Set[Instruction]) }
1506
+ def instructions_set
1507
+ @instructions_set ||= Set.new(instructions)
1508
+ end
1509
+
1510
+ # @return the list of instructions implemented *indirectly* by *any satisfying version* of this requirement because
1511
+ # a requirement of this requirement directly defines the instruction
1512
+ #
1513
+ # For example, the "C" extension implies c.addi because c.addi is directly defined by Zca and C
1514
+ # requires Zca to be implemented
1515
+ #
1516
+ # This list may be empty
1517
+ sig { returns(T::Array[Instruction]) }
1518
+ def implied_instructions
1519
+ @implied_instructions ||=
1520
+ begin
1521
+ pb =
1522
+ Udb.create_progressbar(
1523
+ "Finding implied instructions for #{self} [:bar] :current/:total",
1524
+ total: @arch.instructions.size,
1525
+ clear: true
1526
+ )
1527
+ @arch.instructions.select do |i|
1528
+ pb.advance
1529
+
1530
+ next if instructions_set.include?(i)
1531
+
1532
+ (-i.defined_by_condition & to_condition).unsatisfiable?
1533
+ end
1534
+ end
1535
+ end
1536
+
1537
+ # @api private
1538
+ sig { returns(T::Set[Instruction]) }
1539
+ def implied_instructions_set
1540
+ @implied_instructions_set ||= Set.new(implied_instructions)
1541
+ end
1542
+
1543
+ # return all instructions that must be implemented when self is satisfied. This includes
1544
+ # instructions implied through a requirement of self (transitively)
1545
+ sig { returns(T::Array[Instruction]) }
1546
+ def all_instructions_that_must_be_implemented
1547
+ @all_instructions_that_must_be_implemented ||= instructions + implied_instructions
1548
+ end
1549
+
1550
+ # @return [Array<Csr>] List of CSRs defined by any extension satisfying this requirement
1551
+ sig { returns(T::Array[Csr]) }
1552
+ def csrs
1553
+ @csrs ||=
1554
+ extension.csrs.select do |csr|
1555
+ (csr.defined_by_condition & to_condition).satisfiable?
1556
+ end
1557
+ end
1558
+
1559
+ sig { returns(T::Array[Idl::FunctionDefAst]) }
1560
+ def reachable_functions
1561
+ return @reachable_functions unless @reachable_functions.nil?
1562
+
1563
+ funcs = T.let([], T::Array[Idl::FunctionDefAst])
1564
+
1565
+ bar = Udb.create_progressbar("Finding reachable functions for #{name} [:bar] :current/:total", total: instructions.size + csrs.size)
1566
+
1567
+ instructions.each do |inst|
1568
+ bar.advance
1569
+ funcs += inst.reachable_functions(32) if inst.defined_in_base?(32)
1570
+ funcs += inst.reachable_functions(64) if inst.defined_in_base?(64)
1571
+ end
1572
+
1573
+ csrs.each do |csr|
1574
+ bar.advance
1575
+ funcs += csr.reachable_functions
1576
+ end
1577
+
1578
+ @reachable_functions = funcs.uniq
1579
+ end
1580
+
1581
+ # @return [ExtensionVersion] The minimum extension version that satifies this extension requirement.
1582
+ # If none, raises an error.
1583
+ sig { returns(ExtensionVersion) }
1584
+ def min_satisfying_ext_ver
1585
+ if satisfying_versions.empty?
1586
+ Udb.logger.error "Extension requirement '#{self}' cannot be met by any available extension version. Available versions:"
1587
+ if @ext.versions.empty?
1588
+ Udb.logger.error " none"
1589
+ else
1590
+ @ext.versions.each do |ext_ver|
1591
+ Udb.logger.error " #{ext_ver}"
1592
+ end
1593
+ end
1594
+
1595
+ raise "Cannot satisfy extension requirement '#{self}'"
1596
+ end
1597
+
1598
+ T.must(satisfying_versions.min)
1599
+ end
1600
+
1601
+ # @return [ExtensionVersion] The minimum extension version that satifies this extension requirement.
1602
+ # If none, raises an error.
1603
+ sig { returns(ExtensionVersion) }
1604
+ def max_satisfying_ext_ver
1605
+ if satisfying_versions.empty?
1606
+ Udb.logger.error "Extension requirement '#{self}' cannot be met by any available extension version. Available versions:"
1607
+ if @ext.versions.empty?
1608
+ Udb.logger.error " none"
1609
+ else
1610
+ @ext.versions.each do |ext_ver|
1611
+ Udb.logger.error " #{ext_ver}"
1612
+ end
1613
+ end
1614
+
1615
+ raise "Cannot satisfy extension requirement '#{self}'"
1616
+ end
1617
+
1618
+ T.must(satisfying_versions.max)
1619
+ end
1620
+
1621
+ # returns true if this extension requirement is a superset of other_ext_req
1622
+ sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) }
1623
+ def superset?(other_ext_req)
1624
+ return false if other_ext_req.name != name
1625
+
1626
+ other_ext_req.satisfying_versions.all? { |ext_ver| satisfied_by?(ext_ver) }
1627
+ end
1628
+
1629
+ # returns true if this extension requirement is a subset of other_ext_req
1630
+ sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) }
1631
+ def subset?(other_ext_req)
1632
+ return false if other_ext_req.name != name
1633
+
1634
+ satisfying_versions.all? { |ext_ver| other_ext_req.satisfied_by?(ext_ver) }
1635
+ end
1636
+
1637
+ # returns true if either this extension requirement is a superset of other_ext_req
1638
+ # or other_ext_req is a superset of this extension requirement
1639
+ sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) }
1640
+ def compatible?(other_ext_req)
1641
+ superset?(other_ext_req) || subset?(other_ext_req)
1642
+ end
1643
+
1644
+ # given a compatible other_ext_req, return a single extension requirement that
1645
+ # covers both this and other_ext_req
1646
+ sig { params(other_ext_req: ExtensionRequirement).returns(ExtensionRequirement) }
1647
+ def merge(other_ext_req)
1648
+ raise "Cannot merge incompatible ExtensionRequirements" unless compatible?(other_ext_req)
1649
+
1650
+ if superset?(other_ext_req)
1651
+ self
1652
+ else
1653
+ other_ext_req
1654
+ end
1655
+ end
1656
+
1657
+ # @overload
1658
+ # @param extension_version [ExtensionVersion] A specific extension version
1659
+ # @return [Boolean] whether or not the extension_version meets this requirement
1660
+ # @overload
1661
+ # @param extension_requirement [ExtensionRequirement] A range of extension versions
1662
+ # @return [Boolean] whether or not extension_requirement is satisfied by this requirement
1663
+ # @overload
1664
+ # @param extension_name [#to_s] An extension name
1665
+ # @param extension_name [#to_s] An extension version
1666
+ # @return [Boolean] whether or not the extension_version meets this requirement
1667
+ def satisfied_by?(*args)
1668
+ if args.size == 1
1669
+ if args[0].is_a?(ExtensionVersion)
1670
+ return false if args[0].name != @name
1671
+
1672
+ @requirements.all? { |r| r.satisfied_by?(args[0].version_spec, @ext) }
1673
+ elsif args[0].is_a?(ExtensionRequirement)
1674
+ return false if args[0].name != @name
1675
+
1676
+ @requirements.all? do |r|
1677
+ args[0].satisfying_versions.all? do |ext_ver|
1678
+ r.satisfied_by?(ext_ver.version_spec, @ext)
1679
+ end
1680
+ end
1681
+ else
1682
+ raise ArgumentError, "Single argument must be an ExtensionVersion or ExtensionRequirement"
1683
+ end
1684
+ elsif args.size == 2
1685
+ raise ArgumentError, "First parameter must be an extension name" unless args[0].respond_to?(:to_s)
1686
+ raise ArgumentError, "First parameter must be an extension version" unless args[1].respond_to?(:to_s)
1687
+
1688
+ return false if args[0] != @name
1689
+
1690
+ @requirements.all? { |r| r.satisfied_by?(args[1], @ext) }
1691
+ else
1692
+ raise ArgumentError, "Wrong number of args (expecting 1 or 2)"
1693
+ end
1694
+ end
1695
+
1696
+ sig { params(other: Object).returns(T::Boolean) }
1697
+ def ==(other)
1698
+ return false unless other.is_a?(ExtensionRequirement)
1699
+
1700
+ (satisfying_versions.size == other.satisfying_versions.size) && \
1701
+ satisfying_versions.all? { |version| other.satisfying_versions.include?(version) }
1702
+ end
1703
+
1704
+ # sorts by name
1705
+ sig { override.params(other: T.untyped).returns(T.nilable(Integer)).checked(:never) }
1706
+ def <=>(other)
1707
+ return nil unless other.is_a?(ExtensionRequirement)
1708
+
1709
+ @name <=> other.name
1710
+ end
1711
+
1712
+ # hash equality
1713
+ sig { override.params(other: BasicObject).returns(T::Boolean) }
1714
+ def eql?(other)
1715
+ return false unless T.cast(other, Object).is_a?(ExtensionRequirement)
1716
+
1717
+ satisfying_versions == T.cast(other, ExtensionRequirement).satisfying_versions
1718
+ end
1719
+
1720
+ sig { override.returns(Integer) }
1721
+ def hash
1722
+ satisfying_versions.hash
1723
+ end
1724
+
1725
+ sig { returns(T::Hash[String, T.untyped]) }
1726
+ def to_h
1727
+ {
1728
+ "name" => @name,
1729
+ "version" => @requirements.empty? ? ">= 0" : @requirements.map(&:to_s)
1730
+ }
1731
+ end
1732
+ end
1733
+
1734
+ end