udb 0.1.0 → 0.1.2

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