udb 0.1.13 → 0.1.15

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 (429) hide show
  1. checksums.yaml +4 -4
  2. data/.data/cfgs/example_rv64_with_overlay.yaml +20 -24
  3. data/.data/cfgs/mc100-32-full-example.yaml +2 -2
  4. data/.data/cfgs/qc_iu.yaml +7 -3
  5. data/.data/cfgs/rv32-riscv-tests.yaml +8 -5
  6. data/.data/cfgs/rv32-vector.yaml +8 -5
  7. data/.data/cfgs/rv64-riscv-tests.yaml +8 -5
  8. data/.data/cfgs/rv64-vector.yaml +8 -5
  9. data/.data/spec/custom/isa/qc_iu/ext/Xqccmi.yaml +107 -36
  10. data/.data/spec/custom/isa/qc_iu/inst/Xqccmi/qc.cm.ilut.yaml +52 -69
  11. data/.data/spec/custom/isa/qc_iu/isa/globals.isa +27 -5
  12. data/.data/spec/schemas/README.adoc +3 -0
  13. data/.data/spec/schemas/config_schema.json +1 -1
  14. data/.data/spec/schemas/mmr_schema.json +3 -3
  15. data/.data/spec/schemas/schema_defs.json +8 -3
  16. data/.data/spec/std/isa/csr/H/hcounteren.layout +3 -3
  17. data/.data/spec/std/isa/csr/H/hcounteren.yaml +31 -31
  18. data/.data/spec/std/isa/csr/H/henvcfg.yaml +25 -0
  19. data/.data/spec/std/isa/csr/H/htinst.yaml +3 -3
  20. data/.data/spec/std/isa/csr/H/htval.yaml +3 -3
  21. data/.data/spec/std/isa/csr/H/mtinst.yaml +1 -1
  22. data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +6 -4
  23. data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +6 -4
  24. data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +6 -4
  25. data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +6 -4
  26. data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +6 -4
  27. data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +6 -4
  28. data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +6 -4
  29. data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +6 -4
  30. data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +6 -4
  31. data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +6 -4
  32. data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +6 -4
  33. data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +6 -4
  34. data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +6 -4
  35. data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +6 -4
  36. data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +6 -4
  37. data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +6 -4
  38. data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +6 -4
  39. data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +6 -4
  40. data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +6 -4
  41. data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +6 -4
  42. data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +6 -4
  43. data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +6 -4
  44. data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +6 -4
  45. data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +6 -4
  46. data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +6 -4
  47. data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +6 -4
  48. data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +6 -4
  49. data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +6 -4
  50. data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +6 -4
  51. data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +6 -4
  52. data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +6 -4
  53. data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +6 -4
  54. data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +6 -4
  55. data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +6 -4
  56. data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +6 -4
  57. data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +6 -4
  58. data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +6 -4
  59. data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +6 -4
  60. data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +6 -4
  61. data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +6 -4
  62. data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +6 -4
  63. data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +6 -4
  64. data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +6 -4
  65. data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +6 -4
  66. data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +6 -4
  67. data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +6 -4
  68. data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +6 -4
  69. data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +6 -4
  70. data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +6 -4
  71. data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +6 -4
  72. data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +6 -4
  73. data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +6 -4
  74. data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +6 -4
  75. data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +6 -4
  76. data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +6 -4
  77. data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +6 -4
  78. data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +6 -4
  79. data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +6 -4
  80. data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +6 -4
  81. data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +6 -4
  82. data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +6 -4
  83. data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +6 -4
  84. data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +6 -4
  85. data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +6 -4
  86. data/.data/spec/std/isa/csr/I/pmpaddrN.layout +6 -4
  87. data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +120 -144
  88. data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +60 -72
  89. data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +120 -144
  90. data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +60 -72
  91. data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +120 -144
  92. data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +60 -72
  93. data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +120 -144
  94. data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +60 -72
  95. data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +120 -144
  96. data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +60 -72
  97. data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +120 -144
  98. data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +60 -72
  99. data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +120 -144
  100. data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +60 -72
  101. data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +120 -144
  102. data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +60 -72
  103. data/.data/spec/std/isa/csr/I/pmpcfgN.layout +15 -18
  104. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +1 -1
  105. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +1 -1
  106. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +1 -1
  107. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +1 -1
  108. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +1 -1
  109. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +29 -29
  110. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -4
  111. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +1 -1
  112. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -4
  113. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +1 -1
  114. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -4
  115. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +1 -1
  116. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -4
  117. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +1 -1
  118. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -4
  119. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +1 -1
  120. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -4
  121. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +1 -1
  122. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -4
  123. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +1 -1
  124. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -4
  125. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +1 -1
  126. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -4
  127. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +1 -1
  128. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -4
  129. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +1 -1
  130. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -4
  131. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +1 -1
  132. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -4
  133. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +1 -1
  134. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -4
  135. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +1 -1
  136. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -4
  137. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +1 -1
  138. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -4
  139. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +1 -1
  140. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -4
  141. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +1 -1
  142. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -4
  143. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +1 -1
  144. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -4
  145. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +1 -1
  146. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -4
  147. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +1 -1
  148. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -4
  149. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +1 -1
  150. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -4
  151. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -4
  152. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +1 -1
  153. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -4
  154. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +1 -1
  155. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +1 -1
  156. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -4
  157. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +1 -1
  158. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -4
  159. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +1 -1
  160. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -4
  161. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +1 -1
  162. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -4
  163. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +1 -1
  164. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -4
  165. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +1 -1
  166. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -4
  167. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +1 -1
  168. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -4
  169. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +1 -1
  170. data/.data/spec/std/isa/csr/hstatus.yaml +1 -1
  171. data/.data/spec/std/isa/csr/jvt.yaml +1 -0
  172. data/.data/spec/std/isa/csr/mcycle.yaml +6 -6
  173. data/.data/spec/std/isa/csr/menvcfg.yaml +20 -0
  174. data/.data/spec/std/isa/csr/minstret.yaml +3 -3
  175. data/.data/spec/std/isa/csr/minstreth.yaml +1 -1
  176. data/.data/spec/std/isa/csr/mstatus.yaml +21 -25
  177. data/.data/spec/std/isa/csr/mtvec.yaml +16 -57
  178. data/.data/spec/std/isa/csr/senvcfg.yaml +26 -0
  179. data/.data/spec/std/isa/csr/sie.yaml +30 -4
  180. data/.data/spec/std/isa/csr/sip.yaml +16 -2
  181. data/.data/spec/std/isa/csr/stvec.yaml +11 -12
  182. data/.data/spec/std/isa/csr/vstval.yaml +1 -1
  183. data/.data/spec/std/isa/csr/vstvec.yaml +14 -15
  184. data/.data/spec/std/isa/ext/Q.yaml +1 -1
  185. data/.data/spec/std/isa/ext/Shlcofideleg.yaml +24 -0
  186. data/.data/spec/std/isa/ext/Shvstvecd.yaml +2 -2
  187. data/.data/spec/std/isa/ext/Sspm.yaml +5 -0
  188. data/.data/spec/std/isa/ext/Sstvecd.yaml +2 -2
  189. data/.data/spec/std/isa/ext/Sstvecv.yaml +2 -2
  190. data/.data/spec/std/isa/ext/Supm.yaml +17 -0
  191. data/.data/spec/std/isa/ext/Zcb.yaml +3 -0
  192. data/.data/spec/std/isa/ext/Zfbfmin.yaml +3 -5
  193. data/.data/spec/std/isa/ext/Ziccid.yaml +29 -0
  194. data/.data/spec/std/isa/ext/Zicfilp.yaml +5 -1
  195. data/.data/spec/std/isa/ext/Zicfiss.yaml +20 -1
  196. data/.data/spec/std/isa/ext/Zihpm.yaml +3 -0
  197. data/.data/spec/std/isa/ext/Zilx.yaml +58 -0
  198. data/.data/spec/std/isa/ext/Zkt.yaml +33 -1
  199. data/.data/spec/std/isa/ext/Zvabd.yaml +21 -0
  200. data/.data/spec/std/isa/ext/Zvbc.yaml +3 -0
  201. data/.data/spec/std/isa/ext/Zvkb.yaml +3 -0
  202. data/.data/spec/std/isa/ext/Zvkg.yaml +3 -0
  203. data/.data/spec/std/isa/ext/Zvkned.yaml +3 -0
  204. data/.data/spec/std/isa/ext/Zvknha.yaml +3 -0
  205. data/.data/spec/std/isa/ext/Zvknhb.yaml +4 -2
  206. data/.data/spec/std/isa/ext/Zvksed.yaml +3 -0
  207. data/.data/spec/std/isa/ext/Zvksh.yaml +3 -0
  208. data/.data/spec/std/isa/ext/Zvkt.yaml +3 -0
  209. data/.data/spec/std/isa/inst/B/andn.yaml +10 -12
  210. data/.data/spec/std/isa/inst/B/clmul.yaml +9 -11
  211. data/.data/spec/std/isa/inst/B/clmulh.yaml +9 -11
  212. data/.data/spec/std/isa/inst/B/orn.yaml +9 -11
  213. data/.data/spec/std/isa/inst/B/rev8.yaml +1 -1
  214. data/.data/spec/std/isa/inst/B/rol.yaml +9 -11
  215. data/.data/spec/std/isa/inst/B/rolw.yaml +9 -11
  216. data/.data/spec/std/isa/inst/B/ror.yaml +9 -11
  217. data/.data/spec/std/isa/inst/B/rorw.yaml +9 -11
  218. data/.data/spec/std/isa/inst/B/xnor.yaml +9 -11
  219. data/.data/spec/std/isa/inst/C/c.add.yaml +1 -0
  220. data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
  221. data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
  222. data/.data/spec/std/isa/inst/C/c.addw.yaml +1 -0
  223. data/.data/spec/std/isa/inst/C/c.and.yaml +1 -0
  224. data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
  225. data/.data/spec/std/isa/inst/C/c.ldsp.yaml +3 -3
  226. data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
  227. data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -0
  228. data/.data/spec/std/isa/inst/C/c.nop.yaml +13 -2
  229. data/.data/spec/std/isa/inst/C/c.or.yaml +1 -0
  230. data/.data/spec/std/isa/inst/C/c.slli.yaml +1 -0
  231. data/.data/spec/std/isa/inst/C/c.srai.yaml +1 -0
  232. data/.data/spec/std/isa/inst/C/c.srli.yaml +1 -0
  233. data/.data/spec/std/isa/inst/C/c.sub.yaml +1 -0
  234. data/.data/spec/std/isa/inst/C/c.subw.yaml +1 -0
  235. data/.data/spec/std/isa/inst/C/c.xor.yaml +1 -0
  236. data/.data/spec/std/isa/inst/D/fld.yaml +1 -0
  237. data/.data/spec/std/isa/inst/D/fsd.yaml +1 -0
  238. data/.data/spec/std/isa/inst/F/fadd.s.yaml +1 -1
  239. data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
  240. data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
  241. data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
  242. data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
  243. data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
  244. data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
  245. data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
  246. data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
  247. data/.data/spec/std/isa/inst/F/feq.s.yaml +1 -1
  248. data/.data/spec/std/isa/inst/F/fle.s.yaml +1 -1
  249. data/.data/spec/std/isa/inst/F/fleq.s.yaml +1 -1
  250. data/.data/spec/std/isa/inst/F/flt.s.yaml +1 -1
  251. data/.data/spec/std/isa/inst/F/fltq.s.yaml +1 -1
  252. data/.data/spec/std/isa/inst/F/flw.yaml +2 -1
  253. data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
  254. data/.data/spec/std/isa/inst/F/fmax.s.yaml +1 -1
  255. data/.data/spec/std/isa/inst/F/fmin.s.yaml +1 -1
  256. data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
  257. data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
  258. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +1 -1
  259. data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
  260. data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +1 -1
  261. data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
  262. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +1 -1
  263. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +1 -1
  264. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +1 -1
  265. data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
  266. data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
  267. data/.data/spec/std/isa/inst/F/fsw.yaml +2 -1
  268. data/.data/spec/std/isa/inst/I/addi.yaml +1 -0
  269. data/.data/spec/std/isa/inst/I/addiw.yaml +1 -0
  270. data/.data/spec/std/isa/inst/I/andi.yaml +1 -0
  271. data/.data/spec/std/isa/inst/I/auipc.yaml +1 -0
  272. data/.data/spec/std/isa/inst/I/lb.yaml +1 -0
  273. data/.data/spec/std/isa/inst/I/lbu.yaml +1 -0
  274. data/.data/spec/std/isa/inst/I/ld.yaml +2 -0
  275. data/.data/spec/std/isa/inst/I/lh.yaml +1 -0
  276. data/.data/spec/std/isa/inst/I/lhu.yaml +1 -0
  277. data/.data/spec/std/isa/inst/I/lui.yaml +1 -0
  278. data/.data/spec/std/isa/inst/I/lw.yaml +1 -0
  279. data/.data/spec/std/isa/inst/I/lwu.yaml +1 -0
  280. data/.data/spec/std/isa/inst/I/ori.yaml +1 -0
  281. data/.data/spec/std/isa/inst/I/sb.yaml +1 -0
  282. data/.data/spec/std/isa/inst/I/sd.yaml +2 -1
  283. data/.data/spec/std/isa/inst/I/sh.yaml +1 -0
  284. data/.data/spec/std/isa/inst/I/slti.yaml +1 -0
  285. data/.data/spec/std/isa/inst/I/sltiu.yaml +1 -0
  286. data/.data/spec/std/isa/inst/I/sw.yaml +1 -0
  287. data/.data/spec/std/isa/inst/I/xori.yaml +1 -0
  288. data/.data/spec/std/isa/inst/Q/fadd.q.yaml +2 -2
  289. data/.data/spec/std/isa/inst/Q/fclass.q.yaml +5 -5
  290. data/.data/spec/std/isa/inst/Q/fleq.q.yaml +0 -1
  291. data/.data/spec/std/isa/inst/Q/fli.q.yaml +1 -1
  292. data/.data/spec/std/isa/inst/Q/flq.yaml +1 -0
  293. data/.data/spec/std/isa/inst/Q/fltq.q.yaml +0 -1
  294. data/.data/spec/std/isa/inst/Q/fmaxm.q.yaml +0 -1
  295. data/.data/spec/std/isa/inst/Q/fminm.q.yaml +0 -1
  296. data/.data/spec/std/isa/inst/Q/fmvp.q.x.yaml +1 -1
  297. data/.data/spec/std/isa/inst/Q/fsq.yaml +1 -0
  298. data/.data/spec/std/isa/inst/V/vadc.vim.yaml +1 -0
  299. data/.data/spec/std/isa/inst/V/vadd.vi.yaml +1 -0
  300. data/.data/spec/std/isa/inst/V/vand.vi.yaml +1 -0
  301. data/.data/spec/std/isa/inst/V/vle8.v.yaml +1 -0
  302. data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +1 -0
  303. data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +1 -0
  304. data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +1 -0
  305. data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +1 -0
  306. data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +1 -0
  307. data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +1 -0
  308. data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +1 -0
  309. data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +1 -0
  310. data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +1 -0
  311. data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +1 -0
  312. data/.data/spec/std/isa/inst/V/vor.vi.yaml +1 -0
  313. data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +1 -0
  314. data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +1 -0
  315. data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +1 -0
  316. data/.data/spec/std/isa/inst/V/vse8.v.yaml +1 -0
  317. data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +4 -2
  318. data/.data/spec/std/isa/inst/Zba/add.uw.yaml +9 -11
  319. data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +1 -1
  320. data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +3 -3
  321. data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +2 -2
  322. data/.data/spec/std/isa/inst/Zbkb/zip.yaml +2 -2
  323. data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +2 -2
  324. data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +2 -2
  325. data/.data/spec/std/isa/inst/Zcb/c.mul.yaml +1 -0
  326. data/.data/spec/std/isa/inst/Zcb/c.not.yaml +1 -0
  327. data/.data/spec/std/isa/inst/Zcb/c.zext.b.yaml +2 -7
  328. data/.data/spec/std/isa/inst/Zcb/c.zext.w.yaml +1 -1
  329. data/.data/spec/std/isa/inst/Zcmop/c.mop.1.yaml +2 -0
  330. data/.data/spec/std/isa/inst/Zcmop/c.mop.5.yaml +2 -0
  331. data/.data/spec/std/isa/inst/Zcmop/c.mop.N.layout +7 -0
  332. data/.data/spec/std/isa/inst/Zfa/fli.s.yaml +1 -1
  333. data/.data/spec/std/isa/inst/Zfa/fmaxm.s.yaml +1 -1
  334. data/.data/spec/std/isa/inst/Zfa/fminm.s.yaml +1 -1
  335. data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
  336. data/.data/spec/std/isa/inst/Zfa/froundnx.s.yaml +1 -1
  337. data/.data/spec/std/isa/inst/Zfh/flh.yaml +5 -2
  338. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +3 -1
  339. data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +3 -1
  340. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +4 -1
  341. data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +2 -0
  342. data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +2 -0
  343. data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +2 -0
  344. data/.data/spec/std/isa/inst/Zicfiss/c.sspopchk.yaml +30 -0
  345. data/.data/spec/std/isa/inst/Zicfiss/c.sspush.yaml +29 -0
  346. data/.data/spec/std/isa/inst/Zicond/czero.eqz.yaml +1 -1
  347. data/.data/spec/std/isa/inst/Zicond/czero.nez.yaml +1 -1
  348. data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +12 -0
  349. data/.data/spec/std/isa/inst/Zilx/lxd.yaml +38 -0
  350. data/.data/spec/std/isa/inst/Zilx/lxh.yaml +35 -0
  351. data/.data/spec/std/isa/inst/Zilx/lxhu.yaml +35 -0
  352. data/.data/spec/std/isa/inst/Zilx/lxsb.yaml +40 -0
  353. data/.data/spec/std/isa/inst/Zilx/lxsbu.yaml +40 -0
  354. data/.data/spec/std/isa/inst/Zilx/lxsd.yaml +38 -0
  355. data/.data/spec/std/isa/inst/Zilx/lxsh.yaml +35 -0
  356. data/.data/spec/std/isa/inst/Zilx/lxshu.yaml +35 -0
  357. data/.data/spec/std/isa/inst/Zilx/lxsuwb.yaml +40 -0
  358. data/.data/spec/std/isa/inst/Zilx/lxsuwbu.yaml +40 -0
  359. data/.data/spec/std/isa/inst/Zilx/lxsuwd.yaml +39 -0
  360. data/.data/spec/std/isa/inst/Zilx/lxsuwh.yaml +40 -0
  361. data/.data/spec/std/isa/inst/Zilx/lxsuwhu.yaml +40 -0
  362. data/.data/spec/std/isa/inst/Zilx/lxsuww.yaml +40 -0
  363. data/.data/spec/std/isa/inst/Zilx/lxsuwwu.yaml +40 -0
  364. data/.data/spec/std/isa/inst/Zilx/lxsw.yaml +35 -0
  365. data/.data/spec/std/isa/inst/Zilx/lxswu.yaml +39 -0
  366. data/.data/spec/std/isa/inst/Zilx/lxw.yaml +35 -0
  367. data/.data/spec/std/isa/inst/Zilx/lxwu.yaml +39 -0
  368. data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +1 -1
  369. data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +1 -1
  370. data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +1 -1
  371. data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +1 -1
  372. data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +67 -0
  373. data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +67 -0
  374. data/.data/spec/std/isa/inst/Zvabd/vabs.v.yaml +61 -0
  375. data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +72 -0
  376. data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +72 -0
  377. data/.data/spec/std/isa/isa/builtin_functions.idl +1 -0
  378. data/.data/spec/std/isa/isa/fp.idl +42 -18
  379. data/.data/spec/std/isa/isa/globals.isa +27 -7
  380. data/.data/spec/std/isa/isa/interrupts.idl +1 -0
  381. data/.data/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml +70 -6
  382. data/.data/spec/std/isa/param/ELEN.yaml +27 -5
  383. data/.data/spec/std/isa/param/HCOUNTENABLE_EN.yaml +13 -0
  384. data/.data/spec/std/isa/param/HPM_COUNTER_EN.yaml +13 -3
  385. data/.data/spec/std/isa/param/HPM_EVENTS.yaml +0 -3
  386. data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +1 -0
  387. data/.data/spec/std/isa/param/MCOUNTENABLE_EN.yaml +8 -0
  388. data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +1 -0
  389. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +71 -64
  390. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +71 -64
  391. data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +11 -22
  392. data/.data/spec/std/isa/param/NUM_USABLE_PMP_ENTRIES.yaml +35 -0
  393. data/.data/spec/std/isa/param/PMP_NA4_SUPPORTED.yaml +23 -0
  394. data/.data/spec/std/isa/param/{STVEC_MODE_VECTORED.yaml → PMP_NAPOT_SUPPORTED.yaml} +9 -9
  395. data/.data/spec/std/isa/param/{MSTATUS_TVM_IMPLEMENTED.yaml → PMP_TOR_SUPPORTED.yaml} +6 -6
  396. data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +1 -0
  397. data/.data/spec/std/isa/param/STVAL_WIDTH.yaml +3 -2
  398. data/.data/spec/std/isa/param/STVEC_BASE_ALIGNMENT_VECTORED.yaml +100 -0
  399. data/.data/spec/std/isa/param/STVEC_MODES.yaml +31 -0
  400. data/.data/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml +1 -1
  401. data/.data/spec/std/isa/param/SXLEN.yaml +2 -2
  402. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml +1 -1
  403. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml +1 -1
  404. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml +1 -1
  405. data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml +1 -1
  406. data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml +1 -1
  407. data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +1 -0
  408. data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +1 -0
  409. data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +1 -0
  410. data/.data/spec/std/isa/param/UXLEN.yaml +1 -1
  411. data/.data/spec/std/isa/param/VLEN.yaml +16 -7
  412. data/.data/spec/std/isa/param/VSTVEC_MODES.yaml +31 -0
  413. data/.data/spec/std/isa/param/ZAWRS_NTO_IS_NOP.yaml +19 -0
  414. data/lib/udb/ESPRESSO_VERSION +1 -1
  415. data/lib/udb/Z3_VERSION +1 -1
  416. data/lib/udb/config.rb +14 -2
  417. data/lib/udb/doc_link.rb +3 -4
  418. data/lib/udb/obj/csr.rb +1 -1
  419. data/lib/udb/obj/csr_field.rb +1 -1
  420. data/lib/udb/obj/extension.rb +1 -1
  421. data/lib/udb/obj/instruction.rb +1 -1
  422. data/lib/udb/obj/non_isa_specification.rb +22 -100
  423. data/lib/udb/version.rb +1 -1
  424. data/lib/udb/version_spec.rb +1 -1
  425. data/lib/udb/z3.rb +31 -9
  426. metadata +42 -9
  427. data/.data/spec/std/isa/param/STVEC_MODE_DIRECT.yaml +0 -21
  428. data/.data/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml +0 -21
  429. data/.data/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml +0 -21
@@ -15,34 +15,60 @@ definedBy:
15
15
  length: SXLEN
16
16
  description: Supervisor interrupt-enable register.
17
17
  writable: true
18
+ sw_read(): |
19
+ return $bits(CSR[mie]) & $bits(CSR[mideleg]);
18
20
  fields:
19
21
  SSIE:
20
22
  location: 1
21
23
  alias: mie.SSIE
22
24
  description: |
23
25
  Supervisor Software Interrupt Enable
24
- type: RW
26
+ type: RW-R
27
+ sw_write(csr_value): |
28
+ if (CSR[mideleg].SSI == 1'b1) {
29
+ CSR[mie].SSIE = csr_value.SSIE;
30
+ return csr_value.SSIE;
31
+ }
32
+ return 1'b0;
25
33
  reset_value: UNDEFINED_LEGAL
26
34
  STIE:
27
35
  location: 5
28
36
  alias: mie.STIE
29
37
  description: |
30
38
  Supervisor Timer Interrupt Enable
31
- type: RW
39
+ type: RW-R
40
+ sw_write(csr_value): |
41
+ if (CSR[mideleg].STI == 1'b1) {
42
+ CSR[mie].STIE = csr_value.STIE;
43
+ return csr_value.STIE;
44
+ }
45
+ return 1'b0;
32
46
  reset_value: UNDEFINED_LEGAL
33
47
  SEIE:
34
48
  location: 9
35
49
  alias: mie.SEIE
36
50
  description: |
37
51
  Supervisor External Interrupt Enable
38
- type: RW
52
+ type: RW-R
53
+ sw_write(csr_value): |
54
+ if (CSR[mideleg].SEI == 1'b1) {
55
+ CSR[mie].SEIE = csr_value.SEIE;
56
+ return csr_value.SEIE;
57
+ }
58
+ return 1'b0;
39
59
  reset_value: UNDEFINED_LEGAL
40
60
  LCOFIE:
41
61
  location: 13
42
62
  alias: mie.LCOFIE
43
63
  description: |
44
64
  Local Counter Overflow Interrupt Enable
45
- type: RW
65
+ type: RW-R
66
+ sw_write(csr_value): |
67
+ if (CSR[mideleg].LCOFI == 1'b1) {
68
+ CSR[mie].LCOFIE = csr_value.LCOFIE;
69
+ return csr_value.LCOFIE;
70
+ }
71
+ return 1'b0;
46
72
  reset_value: UNDEFINED_LEGAL
47
73
  definedBy:
48
74
  extension:
@@ -19,6 +19,8 @@ length: 64
19
19
  definedBy:
20
20
  extension:
21
21
  name: S
22
+ sw_read(): |
23
+ return $bits(CSR[mip]) & $bits(CSR[mideleg]);
22
24
  fields:
23
25
  SSIP:
24
26
  location: 1
@@ -59,7 +61,13 @@ fields:
59
61
  ! 0 ! read-only 0
60
62
  ! 1 ! writable alias of `mip.SSIP` <% if ext?(:Smaia) %>and `mvip.SSIP`<% end %>
61
63
  !===
62
- type: RW
64
+ type: RW-R
65
+ sw_write(csr_value): |
66
+ if (CSR[mideleg].SSI == 1'b1) {
67
+ CSR[mip].SSIP = csr_value.SSIP;
68
+ return csr_value.SSIP;
69
+ }
70
+ return 1'b0;
63
71
  reset_value: UNDEFINED_LEGAL
64
72
  definedBy:
65
73
  extension:
@@ -153,7 +161,13 @@ fields:
153
161
  ! 1
154
162
  a! writable alias of `mip.LCOFIP` (and `vsip.LCOFIP` when `hideleg.LCOFI` is set)
155
163
  !===
156
- type: RW-H
164
+ type: RW-RH
165
+ sw_write(csr_value): |
166
+ if (CSR[mideleg].LCOFI == 1'b1) {
167
+ CSR[mip].LCOFIP = csr_value.LCOFIP;
168
+ return csr_value.LCOFIP;
169
+ }
170
+ return 1'b0;
157
171
  reset_value: UNDEFINED_LEGAL
158
172
  definedBy:
159
173
  extension:
@@ -19,10 +19,10 @@ fields:
19
19
  BASE:
20
20
  location: 63-2
21
21
  description: |
22
- <%- va_size = ext?(:Sv57) ? 57 : (ext?(:Sv48) ? 49 :39) -%>
23
- Bit 63:0 of the virtual address of the exception vector for any trap taken into S-mode.
22
+ <%- va_size = ext?(:Sv57) ? 57 : (ext?(:Sv48) ? 48 : 39) -%>
23
+ Bits 63:2 of the virtual address of the exception vector for any trap taken into S-mode.
24
24
 
25
- If the base address is written with a non-cannonical address (_i.e._, bits 63:<%= va_size %> do not match bit <%= va_size-1 %>),
25
+ If the base address is written with a non-canonical address (_i.e._, bits 63:<%= va_size %> do not match bit <%= va_size-1 %>),
26
26
  the write should be ignored.
27
27
 
28
28
  type: RW-R
@@ -41,14 +41,13 @@ fields:
41
41
 
42
42
  When Direct, all synchronous exceptions and asynchronous interrupts jump to (`stvec.BASE` << 2).
43
43
 
44
- When Vectored, asynchronous interrupts jump to (`stvec.BASE` << 2 + `scause.CAUSE`*4) while synchronous exceptions continue to jump to (`stvec.BASE` << 2).
45
- type: RW-R
44
+ When Vectored, asynchronous interrupts jump to (`stvec.BASE` << 2 + `scause.CODE`*4) while synchronous exceptions continue to jump to (`stvec.BASE` << 2).
45
+ type(): |
46
+ return ($array_size(STVEC_MODES) == 1) ? CsrFieldType::RO : CsrFieldType::RWR;
46
47
  sw_write(csr_value): |
47
- if (STVEC_MODE_DIRECT && csr_value.MODE == 0) {
48
- return 0;
49
- } else if (STVEC_MODE_VECTORED && csr_value.MODE == 1) {
50
- return 1;
51
- } else {
52
- return UNDEFINED_LEGAL_DETERMINISTIC;
48
+ if ($array_includes?(STVEC_MODES, csr_value.MODE)) {
49
+ return csr_value.MODE;
53
50
  }
54
- reset_value: 0
51
+ return UNDEFINED_LEGAL_DETERMINISTIC;
52
+ reset_value(): |
53
+ return ($array_size(STVEC_MODES) == 1) ? STVEC_MODES[0] : UNDEFINED_LEGAL;
@@ -11,7 +11,7 @@ address: 0x243
11
11
  writable: true
12
12
  virtual_address: 0x143
13
13
  description: Holds trap-specific information
14
- priv_mode: S
14
+ priv_mode: VS
15
15
  length: VSXLEN
16
16
  definedBy:
17
17
  extension:
@@ -6,11 +6,11 @@
6
6
  $schema: "csr_schema.json#"
7
7
  kind: csr
8
8
  name: vstvec
9
- long_name: Supervisor Trap Vector
9
+ long_name: Virtual Supervisor Trap Vector
10
10
  address: 0x205
11
11
  writable: true
12
12
  virtual_address: 0x105
13
- priv_mode: S
13
+ priv_mode: VS
14
14
  length: 64
15
15
  description: Controls where traps jump.
16
16
  definedBy:
@@ -20,17 +20,17 @@ fields:
20
20
  BASE:
21
21
  location: 63-2
22
22
  description: |
23
- <%- va_size = ext?(:Sv57) ? 57 : (ext?(:Sv48) ? 49 :39) -%>
24
- Bit 63:0 of the virtual address of the exception vector for any trap taken into VS-mode.
23
+ <%- va_size = ext?(:Sv57) ? 57 : (ext?(:Sv48) ? 48 : 39) -%>
24
+ Bits 63:2 of the virtual address of the exception vector for any trap taken into VS-mode.
25
25
 
26
- If the base address is written with a non-cannonical address (_i.e._, bits 63:<%= va_size %> do not match bit <%= va_size-1 %>),
26
+ If the base address is written with a non-canonical address (_i.e._, bits 63:<%= va_size %> do not match bit <%= va_size-1 %>),
27
27
  the write should be ignored.
28
28
 
29
29
  type: RW-R
30
30
  sw_write(csr_value): |
31
31
  # Base spec says that BASE must be 4-byte aligned, which will always be the case
32
32
  # implementations may put further constraints on BASE when MODE != Direct
33
- # If that is the case, stvec should have an override for the implementation
33
+ # If that is the case, vstvec should have an override for the implementation
34
34
  return csr_value.BASE;
35
35
  reset_value: 0
36
36
  MODE:
@@ -42,14 +42,13 @@ fields:
42
42
 
43
43
  When Direct, all synchronous exceptions and asynchronous interrupts jump to (`vstvec.BASE` << 2).
44
44
 
45
- When Vectored, asynchronous interrupts jump to (`vstvec.BASE` << 2 + `vscause.CAUSE`*4) while synchronous exceptions continue to jump to (`vstvec.BASE` << 2).
46
- type: RW-R
45
+ When Vectored, asynchronous interrupts jump to (`vstvec.BASE` << 2 + `vscause.CODE`*4) while synchronous exceptions continue to jump to (`vstvec.BASE` << 2).
46
+ type(): |
47
+ return ($array_size(VSTVEC_MODES) == 1) ? CsrFieldType::RO : CsrFieldType::RWR;
47
48
  sw_write(csr_value): |
48
- if (VSTVEC_MODE_DIRECT && csr_value.MODE == 0) {
49
- return 0;
50
- } else if (VSTVEC_MODE_VECTORED && csr_value.MODE == 1) {
51
- return 1;
52
- } else {
53
- return UNDEFINED_LEGAL_DETERMINISTIC;
49
+ if ($array_includes?(VSTVEC_MODES, csr_value.MODE)) {
50
+ return csr_value.MODE;
54
51
  }
55
- reset_value: 0
52
+ return UNDEFINED_LEGAL_DETERMINISTIC;
53
+ reset_value(): |
54
+ return ($array_size(VSTVEC_MODES) == 1) ? VSTVEC_MODES[0] : UNDEFINED_LEGAL;
@@ -17,7 +17,7 @@ description: |
17
17
  a double-precision value which is itself NaN-boxed inside a quad-precision value.
18
18
  type: unprivileged
19
19
  versions:
20
- - version: "1.0.0"
20
+ - version: "2.2.0"
21
21
  state: ratified
22
22
  ratification_date: 2019-04
23
23
  requirements:
@@ -0,0 +1,24 @@
1
+ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/ext_schema.json
5
+
6
+ $schema: "ext_schema.json#"
7
+ kind: extension
8
+ name: Shlcofideleg
9
+ long_name: Hypervisor local counter overflow interrupt delegation
10
+ description: |
11
+ Shlcofideleg supports delegating Local Counter Overflow Interrupts
12
+ (LCOFIs) to VS-mode.
13
+
14
+ When Shlcofideleg is implemented, `hideleg` bit 13 is writable.
15
+ type: privileged
16
+ versions:
17
+ - version: "1.0.0"
18
+ state: ratified
19
+ ratification_date: 2024-10
20
+ requirements:
21
+ extension:
22
+ allOf:
23
+ - name: H
24
+ - name: Sscofpmf
@@ -22,5 +22,5 @@ versions:
22
22
  requirements:
23
23
  # Shvstvecd mandates that `vstvec.MODE` must be capable of holding the value 0 (Direct).
24
24
  param:
25
- name: VSTVEC_MODE_DIRECT
26
- equal: true
25
+ name: VSTVEC_MODES
26
+ includes: 0
@@ -21,3 +21,8 @@ versions:
21
21
  - version: "1.0.0"
22
22
  state: ratified
23
23
  ratification_date: 2024-10
24
+ requirements:
25
+ extension:
26
+ allOf:
27
+ - name: S
28
+ - name: Smnpm
@@ -25,5 +25,5 @@ versions:
25
25
  company: SiFive, Inc.
26
26
  requirements:
27
27
  param:
28
- name: STVEC_MODE_DIRECT
29
- equal: true
28
+ name: STVEC_MODES
29
+ includes: 0
@@ -26,5 +26,5 @@ versions:
26
26
  company: SiFive, Inc.
27
27
  requirements:
28
28
  param:
29
- name: STVEC_MODE_VECTORED
30
- equal: true
29
+ name: STVEC_MODES
30
+ includes: 1
@@ -21,3 +21,20 @@ versions:
21
21
  - version: "1.0.0"
22
22
  state: ratified
23
23
  ratification_date: 2024-10
24
+ requirements:
25
+ allOf:
26
+ - extension:
27
+ name: U
28
+ - if:
29
+ extension:
30
+ name: S
31
+ then:
32
+ extension:
33
+ name: Ssnpm
34
+ - if:
35
+ not:
36
+ extension:
37
+ name: S
38
+ then:
39
+ extension:
40
+ name: Smnpm
@@ -43,3 +43,6 @@ versions:
43
43
  - name: Graeme Smecher
44
44
  - name: Nicolas Brunie
45
45
  - name: Jiawei
46
+ requirements:
47
+ extension:
48
+ name: Zca
@@ -12,8 +12,8 @@ description: |
12
12
  It enables BF16 as an interchange format as it provides conversion between BF16 values and
13
13
  FP32 values.
14
14
 
15
- This extension depends upon the single-precision floating-point extension `F`,
16
- and the `flh`, `fsh`, `fmv.x.h`, and `fmv.h.x` instructions as defined in the `Zfh` extension.
15
+ This extension includes the `flh`, `fsh`, `fmv.x.h`, and `fmv.h.x`
16
+ instructions defined in the `Zfh` extension.
17
17
 
18
18
  type: unprivileged
19
19
  versions:
@@ -22,6 +22,4 @@ versions:
22
22
  ratification_date: 2024-06
23
23
  requirements:
24
24
  extension:
25
- allOf:
26
- - name: F
27
- - name: Zfh
25
+ name: F
@@ -0,0 +1,29 @@
1
+ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/ext_schema.json
5
+
6
+ $schema: "ext_schema.json#"
7
+ kind: extension
8
+ name: Ziccid
9
+ long_name: Instruction/Data Coherence and Consistency
10
+ description: |
11
+ The `Ziccid` extension mandates more stringent requirements for consistency
12
+ between instruction fetches and other memory accesses than those imposed by
13
+ the base ISA.
14
+
15
+ `Ziccid` guarantees that a hart's instruction fetches appear to occur in
16
+ program order with respect to each other, and that stores eventually become
17
+ visible to all harts' instruction fetches.
18
+
19
+ [NOTE]
20
+ The primary intent of the `Ziccid` extension is to accelerate JIT compilation
21
+ in multiprocessor systems.
22
+ type: unprivileged
23
+ versions:
24
+ - version: "1.0.0"
25
+ state: ratified
26
+ ratification_date: 2026-06
27
+ requirements:
28
+ extension:
29
+ name: Ziccif
@@ -8,9 +8,13 @@ kind: extension
8
8
  name: Zicfilp
9
9
  long_name: Landing Pad
10
10
  description: |
11
- TODO
11
+ The Zicfilp extension introduces a landing-pad instruction and related
12
+ execution state to enforce forward-edge control-flow integrity.
12
13
  type: unprivileged
13
14
  versions:
14
15
  - version: "1.0.0"
15
16
  state: ratified
16
17
  ratification_date: 2024-07
18
+ requirements:
19
+ extension:
20
+ name: Zicsr
@@ -8,9 +8,28 @@ kind: extension
8
8
  name: Zicfiss
9
9
  long_name: Shadow Stack
10
10
  description: |
11
- TODO
11
+ The Zicfiss extension introduces a shadow stack to enforce
12
+ backward-edge control-flow integrity.
13
+
14
+ The extension provides instructions to store and load the link register
15
+ to and from the shadow stack, check the integrity of the return address,
16
+ read the shadow stack pointer, and perform atomic swaps on shadow stack
17
+ locations.
12
18
  type: unprivileged
13
19
  versions:
14
20
  - version: "1.0.0"
15
21
  state: ratified
16
22
  ratification_date: 2024-07
23
+ requirements:
24
+ allOf:
25
+ - extension:
26
+ allOf:
27
+ - name: Zicsr
28
+ - name: Zimop
29
+ - name: Zaamo
30
+ - if:
31
+ extension:
32
+ name: U
33
+ then:
34
+ extension:
35
+ name: S
@@ -13,3 +13,6 @@ versions:
13
13
  - version: "2.0.0"
14
14
  state: ratified
15
15
  ratification_date: 2023-03
16
+ requirements:
17
+ extension:
18
+ name: Zicsr
@@ -0,0 +1,58 @@
1
+ # Copyright (c) RISC-V International
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/ext_schema.json
5
+
6
+ $schema: "ext_schema.json#"
7
+ kind: extension
8
+ name: Zilx
9
+ long_name: Indexed Integer Load Instructions
10
+ description: |
11
+ The Zilx extension provides integer load instructions that compute their
12
+ effective address from a base register and an index register. The extension
13
+ defines unscaled indexed loads and scaled indexed loads. On RV64, the
14
+ extension also defines scaled loads that zero-extend the low 32 bits of the
15
+ index register before scaling and forming the effective address.
16
+
17
+ Each Zilx instruction uses `xs1` as the index operand and `xs2` as the base
18
+ operand, computes an effective address, loads a byte, halfword, word, or
19
+ doubleword from memory, and writes the extended load result to `xd`. The
20
+ operand roles match the shift-add instructions of the `Zba` extension, in
21
+ which the shifted operand is `xs1` and the added base is `xs2`.
22
+
23
+ Effective addresses are computed using XLEN-bit two's-complement address
24
+ arithmetic, and address arithmetic overflow is ignored:
25
+
26
+ * For an unscaled indexed load, the effective address is the low XLEN bits of
27
+ `X[xs2] + X[xs1]`.
28
+ * For a scaled indexed load, the effective address is the low XLEN bits of
29
+ `X[xs2] + (X[xs1] << log2(access-size))`, where _access-size_ is the number
30
+ of bytes loaded by the instruction.
31
+ * For a scaled unsigned-word-index load (mnemonic prefix `lxsuw`), the index
32
+ operand is zero-extended from `X[xs1][31:0]` to 64 bits before scaling.
33
+ These instructions are defined only for RV64.
34
+
35
+ Byte loads are provided only as scaled forms (mnemonic prefixes `lxs` and
36
+ `lxsuw`). Because the scale factor for a byte access is 1, an unscaled byte
37
+ load would be identical to the scaled byte load, so no unscaled byte load is
38
+ defined. For convenience, `lxb` and `lxbu` are provided as assembler
39
+ pseudoinstructions for `lxsb` and `lxsbu`, respectively.
40
+
41
+ Zilx adds no architectural state, CSRs, or memory-ordering rules. Except for
42
+ the effective-address calculation, each Zilx instruction behaves as the
43
+ corresponding base integer load of the same access size and signedness, and
44
+ follows the same exception, address-alignment, access-fault, page-fault, PMP,
45
+ PMA, privilege, atomicity, and memory-ordering rules.
46
+
47
+ Zilx instructions reuse the `AMO` major opcode. The access width and
48
+ signedness are encoded in _funct3_ using the same encoding as base integer
49
+ loads, and the addressing mode is encoded in _funct5_. For all Zilx
50
+ instructions the _aq_ and _rl_ bits must be 0; encodings with _aq_ or _rl_
51
+ set are reserved.
52
+ type: unprivileged
53
+ versions:
54
+ - version: "0.1.0"
55
+ state: development
56
+ repositories:
57
+ - url: https://github.com/riscv/riscv-zilx
58
+ branch: main
@@ -203,6 +203,21 @@ description: |
203
203
  | | &#10003; | sraw _rd_, _rs1_, _rs2_ | 'sraw'
204
204
  |===
205
205
 
206
+ === Zicond (Conditional Zero)
207
+
208
+ All instructions are included.
209
+
210
+ [%header,cols="^1,^1,4,8"]
211
+ |===
212
+ |RV32
213
+ |RV64
214
+ |Mnemonic
215
+ |Instruction
216
+
217
+ | &#10003; | &#10003; | czero.eqz _rd_, _rs1_, _rs2_ | 'czero.eqz'
218
+ | &#10003; | &#10003; | czero.nez _rd_, _rs1_, _rs2_ | 'czero.nez'
219
+ |===
220
+
206
221
  === RVM (Multiply)
207
222
 
208
223
  Multiplication is included; division and remaindering excluded.
@@ -221,7 +236,7 @@ description: |
221
236
  | | &#10003; | mulw _rd_, _rs1_, _rs2_ | 'mulw'
222
237
  |===
223
238
 
224
- === RVC (Compressed)
239
+ === Zca (Compressed)
225
240
 
226
241
  Same criteria as in RVI. Organised by quadrants.
227
242
 
@@ -250,6 +265,23 @@ description: |
250
265
  | &#10003; | &#10003; | c.add | 'c_add'
251
266
  |===
252
267
 
268
+ === Zcb Extension
269
+
270
+ These instructions are compressed versions of `I` and `M` instructions that are
271
+ included in `Zkt`.
272
+
273
+ [%header,cols="^1,^1,4,8"]
274
+ |===
275
+ |RV32
276
+ |RV64
277
+ |Mnemonic
278
+ |Instruction
279
+
280
+ | &#10003; | &#10003; | c.mul | 'c_mul'
281
+ | &#10003; | &#10003; | c.not | 'c_not'
282
+ | &#10003; | &#10003; | c.zext.b | 'c_zext_b'
283
+ |===
284
+
253
285
  === RVK (Scalar Cryptography)
254
286
 
255
287
  All K-specific instructions are included.
@@ -0,0 +1,21 @@
1
+ # Copyright (c) Alibaba Damo Academy
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/ext_schema.json
5
+
6
+ $schema: "ext_schema.json#"
7
+ kind: extension
8
+ name: Zvabd
9
+ long_name: Vector Integer Absolute Difference
10
+ description: |
11
+ The Zvabd extension defines element-wise absolute difference instructions for
12
+ vectors of integers, including widening absolute-difference-and-accumulate
13
+ variants. These operations are widely used in image registration, object
14
+ recognition, motion estimation, and loop filters for video workloads.
15
+ type: unprivileged
16
+ versions:
17
+ - version: "0.7.0"
18
+ state: frozen
19
+ requirements:
20
+ extension:
21
+ name: Zve32x
@@ -17,3 +17,6 @@ versions:
17
17
  - version: "1.0.0"
18
18
  state: ratified
19
19
  ratification_date: 2023-09
20
+ requirements:
21
+ extension:
22
+ name: Zve64x
@@ -14,3 +14,6 @@ versions:
14
14
  - version: "1.0.0"
15
15
  state: ratified
16
16
  ratification_date: 2023-09
17
+ requirements:
18
+ extension:
19
+ name: Zve32x
@@ -24,3 +24,6 @@ versions:
24
24
  - version: "1.0.0"
25
25
  state: ratified
26
26
  ratification_date: 2023-09
27
+ requirements:
28
+ extension:
29
+ name: Zve32x
@@ -20,3 +20,6 @@ versions:
20
20
  - version: "1.0.0"
21
21
  state: ratified
22
22
  ratification_date: 2023-09
23
+ requirements:
24
+ extension:
25
+ name: Zve32x
@@ -15,3 +15,6 @@ versions:
15
15
  - version: "1.0.0"
16
16
  state: ratified
17
17
  ratification_date: 2023-09
18
+ requirements:
19
+ extension:
20
+ name: Zve32x
@@ -17,5 +17,7 @@ versions:
17
17
  ratification_date: 2023-09
18
18
  requirements:
19
19
  extension:
20
- name: Zvknha
21
- version: "= 1.0.0"
20
+ allOf:
21
+ - name: Zvknha
22
+ version: "= 1.0.0"
23
+ - name: Zve64x
@@ -22,3 +22,6 @@ versions:
22
22
  - version: "1.0.0"
23
23
  state: ratified
24
24
  ratification_date: 2023-09
25
+ requirements:
26
+ extension:
27
+ name: Zve32x
@@ -18,3 +18,6 @@ versions:
18
18
  - version: "1.0.0"
19
19
  state: ratified
20
20
  ratification_date: 2023-09
21
+ requirements:
22
+ extension:
23
+ name: Zve32x
@@ -26,3 +26,6 @@ versions:
26
26
  - version: "1.0.0"
27
27
  state: ratified
28
28
  ratification_date: 2023-09
29
+ requirements:
30
+ extension:
31
+ name: Zvl32b
@@ -16,17 +16,15 @@ definedBy:
16
16
  - name: Zbb
17
17
  - name: Zbkb
18
18
  assembly: xd, xs1, xs2
19
- format:
20
- $inherits:
21
- - inst_subtype/R/R-x.yaml#/data
22
- opcodes:
23
- funct7:
24
- display_name: ANDN
25
- value: 0b0100000
26
- funct3:
27
- display_name: ANDN
28
- value: 0b111
29
- opcode: { $inherits: inst_opcode/OP.yaml#/data }
19
+ encoding:
20
+ match: 0100000----------111-----0110011
21
+ variables:
22
+ - name: xs2
23
+ location: 24-20
24
+ - name: xs1
25
+ location: 19-15
26
+ - name: xd
27
+ location: 11-7
30
28
  access:
31
29
  s: always
32
30
  u: always
@@ -38,4 +36,4 @@ operation(): |
38
36
  raise (ExceptionCode::IllegalInstruction, mode(), $encoding);
39
37
  }
40
38
 
41
- X[xd] = X[xs2] & ~X[xs1];
39
+ X[xd] = X[xs1] & ~X[xs2];