udb 0.1.0 → 0.1.1

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 (254) 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/std/isa/inst/C/c.ld.yaml +2 -2
  28. data/.data/spec/std/isa/inst/C/c.ldsp.yaml +1 -1
  29. data/.data/spec/std/isa/inst/C/c.lw.yaml +1 -1
  30. data/.data/spec/std/isa/inst/C/c.lwsp.yaml +1 -1
  31. data/.data/spec/std/isa/inst/C/c.sd.yaml +2 -2
  32. data/.data/spec/std/isa/inst/C/c.sdsp.yaml +2 -2
  33. data/.data/spec/std/isa/inst/C/c.sw.yaml +1 -1
  34. data/.data/spec/std/isa/inst/C/c.swsp.yaml +1 -1
  35. data/.data/spec/std/isa/inst/F/flw.yaml +2 -2
  36. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +1 -1
  37. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +1 -1
  38. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +1 -1
  39. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +1 -1
  40. data/.data/spec/std/isa/inst/F/fsw.yaml +1 -1
  41. data/.data/spec/std/isa/inst/I/lb.yaml +1 -1
  42. data/.data/spec/std/isa/inst/I/lbu.yaml +1 -1
  43. data/.data/spec/std/isa/inst/I/ld.yaml +2 -2
  44. data/.data/spec/std/isa/inst/I/lh.yaml +1 -1
  45. data/.data/spec/std/isa/inst/I/lhu.yaml +1 -1
  46. data/.data/spec/std/isa/inst/I/lw.yaml +1 -1
  47. data/.data/spec/std/isa/inst/I/lwu.yaml +1 -1
  48. data/.data/spec/std/isa/inst/I/sb.yaml +1 -1
  49. data/.data/spec/std/isa/inst/I/sd.yaml +1 -1
  50. data/.data/spec/std/isa/inst/I/sh.yaml +1 -1
  51. data/.data/spec/std/isa/inst/I/sw.yaml +1 -1
  52. data/.data/spec/std/isa/inst/V/vle8.v.yaml +1 -1
  53. data/.data/spec/std/isa/inst/V/vse8.v.yaml +1 -1
  54. data/.data/spec/std/isa/inst/Zaamo/amoadd.SIZE.AQRL.layout +1 -1
  55. data/.data/spec/std/isa/inst/Zaamo/amoadd.d.aq.yaml +1 -1
  56. data/.data/spec/std/isa/inst/Zaamo/amoadd.d.aqrl.yaml +1 -1
  57. data/.data/spec/std/isa/inst/Zaamo/amoadd.d.rl.yaml +1 -1
  58. data/.data/spec/std/isa/inst/Zaamo/amoadd.d.yaml +1 -1
  59. data/.data/spec/std/isa/inst/Zaamo/amoadd.w.aq.yaml +1 -1
  60. data/.data/spec/std/isa/inst/Zaamo/amoadd.w.aqrl.yaml +1 -1
  61. data/.data/spec/std/isa/inst/Zaamo/amoadd.w.rl.yaml +1 -1
  62. data/.data/spec/std/isa/inst/Zaamo/amoadd.w.yaml +1 -1
  63. data/.data/spec/std/isa/inst/Zaamo/amoand.SIZE.AQRL.layout +1 -1
  64. data/.data/spec/std/isa/inst/Zaamo/amoand.d.aq.yaml +1 -1
  65. data/.data/spec/std/isa/inst/Zaamo/amoand.d.aqrl.yaml +1 -1
  66. data/.data/spec/std/isa/inst/Zaamo/amoand.d.rl.yaml +1 -1
  67. data/.data/spec/std/isa/inst/Zaamo/amoand.d.yaml +1 -1
  68. data/.data/spec/std/isa/inst/Zaamo/amoand.w.aq.yaml +1 -1
  69. data/.data/spec/std/isa/inst/Zaamo/amoand.w.aqrl.yaml +1 -1
  70. data/.data/spec/std/isa/inst/Zaamo/amoand.w.rl.yaml +1 -1
  71. data/.data/spec/std/isa/inst/Zaamo/amoand.w.yaml +1 -1
  72. data/.data/spec/std/isa/inst/Zaamo/amomax.SIZE.AQRL.layout +1 -1
  73. data/.data/spec/std/isa/inst/Zaamo/amomax.d.aq.yaml +1 -1
  74. data/.data/spec/std/isa/inst/Zaamo/amomax.d.aqrl.yaml +1 -1
  75. data/.data/spec/std/isa/inst/Zaamo/amomax.d.rl.yaml +1 -1
  76. data/.data/spec/std/isa/inst/Zaamo/amomax.d.yaml +1 -1
  77. data/.data/spec/std/isa/inst/Zaamo/amomax.w.aq.yaml +1 -1
  78. data/.data/spec/std/isa/inst/Zaamo/amomax.w.aqrl.yaml +1 -1
  79. data/.data/spec/std/isa/inst/Zaamo/amomax.w.rl.yaml +1 -1
  80. data/.data/spec/std/isa/inst/Zaamo/amomax.w.yaml +1 -1
  81. data/.data/spec/std/isa/inst/Zaamo/amomaxu.SIZE.AQRL.layout +1 -1
  82. data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.aq.yaml +1 -1
  83. data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.aqrl.yaml +1 -1
  84. data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.rl.yaml +1 -1
  85. data/.data/spec/std/isa/inst/Zaamo/amomaxu.d.yaml +1 -1
  86. data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.aq.yaml +1 -1
  87. data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.aqrl.yaml +1 -1
  88. data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.rl.yaml +1 -1
  89. data/.data/spec/std/isa/inst/Zaamo/amomaxu.w.yaml +1 -1
  90. data/.data/spec/std/isa/inst/Zaamo/amomin.SIZE.AQRL.layout +1 -1
  91. data/.data/spec/std/isa/inst/Zaamo/amomin.d.aq.yaml +1 -1
  92. data/.data/spec/std/isa/inst/Zaamo/amomin.d.aqrl.yaml +1 -1
  93. data/.data/spec/std/isa/inst/Zaamo/amomin.d.rl.yaml +1 -1
  94. data/.data/spec/std/isa/inst/Zaamo/amomin.d.yaml +1 -1
  95. data/.data/spec/std/isa/inst/Zaamo/amomin.w.aq.yaml +1 -1
  96. data/.data/spec/std/isa/inst/Zaamo/amomin.w.aqrl.yaml +1 -1
  97. data/.data/spec/std/isa/inst/Zaamo/amomin.w.rl.yaml +1 -1
  98. data/.data/spec/std/isa/inst/Zaamo/amomin.w.yaml +1 -1
  99. data/.data/spec/std/isa/inst/Zaamo/amominu.SIZE.AQRL.layout +1 -1
  100. data/.data/spec/std/isa/inst/Zaamo/amominu.d.aq.yaml +1 -1
  101. data/.data/spec/std/isa/inst/Zaamo/amominu.d.aqrl.yaml +1 -1
  102. data/.data/spec/std/isa/inst/Zaamo/amominu.d.rl.yaml +1 -1
  103. data/.data/spec/std/isa/inst/Zaamo/amominu.d.yaml +1 -1
  104. data/.data/spec/std/isa/inst/Zaamo/amominu.w.aq.yaml +1 -1
  105. data/.data/spec/std/isa/inst/Zaamo/amominu.w.aqrl.yaml +1 -1
  106. data/.data/spec/std/isa/inst/Zaamo/amominu.w.rl.yaml +1 -1
  107. data/.data/spec/std/isa/inst/Zaamo/amominu.w.yaml +1 -1
  108. data/.data/spec/std/isa/inst/Zaamo/amoor.SIZE.AQRL.layout +1 -1
  109. data/.data/spec/std/isa/inst/Zaamo/amoor.d.aq.yaml +1 -1
  110. data/.data/spec/std/isa/inst/Zaamo/amoor.d.aqrl.yaml +1 -1
  111. data/.data/spec/std/isa/inst/Zaamo/amoor.d.rl.yaml +1 -1
  112. data/.data/spec/std/isa/inst/Zaamo/amoor.d.yaml +1 -1
  113. data/.data/spec/std/isa/inst/Zaamo/amoor.w.aq.yaml +1 -1
  114. data/.data/spec/std/isa/inst/Zaamo/amoor.w.aqrl.yaml +1 -1
  115. data/.data/spec/std/isa/inst/Zaamo/amoor.w.rl.yaml +1 -1
  116. data/.data/spec/std/isa/inst/Zaamo/amoor.w.yaml +1 -1
  117. data/.data/spec/std/isa/inst/Zaamo/amoswap.SIZE.AQRL.layout +1 -1
  118. data/.data/spec/std/isa/inst/Zaamo/amoswap.d.aq.yaml +1 -1
  119. data/.data/spec/std/isa/inst/Zaamo/amoswap.d.aqrl.yaml +1 -1
  120. data/.data/spec/std/isa/inst/Zaamo/amoswap.d.rl.yaml +1 -1
  121. data/.data/spec/std/isa/inst/Zaamo/amoswap.d.yaml +1 -1
  122. data/.data/spec/std/isa/inst/Zaamo/amoswap.w.aq.yaml +1 -1
  123. data/.data/spec/std/isa/inst/Zaamo/amoswap.w.aqrl.yaml +1 -1
  124. data/.data/spec/std/isa/inst/Zaamo/amoswap.w.rl.yaml +1 -1
  125. data/.data/spec/std/isa/inst/Zaamo/amoswap.w.yaml +1 -1
  126. data/.data/spec/std/isa/inst/Zaamo/amoxor.SIZE.AQRL.layout +1 -1
  127. data/.data/spec/std/isa/inst/Zaamo/amoxor.d.aq.yaml +1 -1
  128. data/.data/spec/std/isa/inst/Zaamo/amoxor.d.aqrl.yaml +1 -1
  129. data/.data/spec/std/isa/inst/Zaamo/amoxor.d.rl.yaml +1 -1
  130. data/.data/spec/std/isa/inst/Zaamo/amoxor.d.yaml +1 -1
  131. data/.data/spec/std/isa/inst/Zaamo/amoxor.w.aq.yaml +1 -1
  132. data/.data/spec/std/isa/inst/Zaamo/amoxor.w.aqrl.yaml +1 -1
  133. data/.data/spec/std/isa/inst/Zaamo/amoxor.w.rl.yaml +1 -1
  134. data/.data/spec/std/isa/inst/Zaamo/amoxor.w.yaml +1 -1
  135. data/.data/spec/std/isa/inst/Zabha/amoadd.b.aq.yaml +1 -1
  136. data/.data/spec/std/isa/inst/Zabha/amoadd.b.aqrl.yaml +1 -1
  137. data/.data/spec/std/isa/inst/Zabha/amoadd.b.rl.yaml +1 -1
  138. data/.data/spec/std/isa/inst/Zabha/amoadd.b.yaml +1 -1
  139. data/.data/spec/std/isa/inst/Zabha/amoadd.h.aq.yaml +1 -1
  140. data/.data/spec/std/isa/inst/Zabha/amoadd.h.aqrl.yaml +1 -1
  141. data/.data/spec/std/isa/inst/Zabha/amoadd.h.rl.yaml +1 -1
  142. data/.data/spec/std/isa/inst/Zabha/amoadd.h.yaml +1 -1
  143. data/.data/spec/std/isa/inst/Zabha/amoand.b.aq.yaml +1 -1
  144. data/.data/spec/std/isa/inst/Zabha/amoand.b.aqrl.yaml +1 -1
  145. data/.data/spec/std/isa/inst/Zabha/amoand.b.rl.yaml +1 -1
  146. data/.data/spec/std/isa/inst/Zabha/amoand.b.yaml +1 -1
  147. data/.data/spec/std/isa/inst/Zabha/amoand.h.aq.yaml +1 -1
  148. data/.data/spec/std/isa/inst/Zabha/amoand.h.aqrl.yaml +1 -1
  149. data/.data/spec/std/isa/inst/Zabha/amoand.h.rl.yaml +1 -1
  150. data/.data/spec/std/isa/inst/Zabha/amoand.h.yaml +1 -1
  151. data/.data/spec/std/isa/inst/Zabha/amomax.b.aq.yaml +1 -1
  152. data/.data/spec/std/isa/inst/Zabha/amomax.b.aqrl.yaml +1 -1
  153. data/.data/spec/std/isa/inst/Zabha/amomax.b.rl.yaml +1 -1
  154. data/.data/spec/std/isa/inst/Zabha/amomax.b.yaml +1 -1
  155. data/.data/spec/std/isa/inst/Zabha/amomax.h.aq.yaml +1 -1
  156. data/.data/spec/std/isa/inst/Zabha/amomax.h.aqrl.yaml +1 -1
  157. data/.data/spec/std/isa/inst/Zabha/amomax.h.rl.yaml +1 -1
  158. data/.data/spec/std/isa/inst/Zabha/amomax.h.yaml +1 -1
  159. data/.data/spec/std/isa/inst/Zabha/amomaxu.b.aq.yaml +1 -1
  160. data/.data/spec/std/isa/inst/Zabha/amomaxu.b.aqrl.yaml +1 -1
  161. data/.data/spec/std/isa/inst/Zabha/amomaxu.b.rl.yaml +1 -1
  162. data/.data/spec/std/isa/inst/Zabha/amomaxu.b.yaml +1 -1
  163. data/.data/spec/std/isa/inst/Zabha/amomaxu.h.aq.yaml +1 -1
  164. data/.data/spec/std/isa/inst/Zabha/amomaxu.h.aqrl.yaml +1 -1
  165. data/.data/spec/std/isa/inst/Zabha/amomaxu.h.rl.yaml +1 -1
  166. data/.data/spec/std/isa/inst/Zabha/amomaxu.h.yaml +1 -1
  167. data/.data/spec/std/isa/inst/Zabha/amomin.b.aq.yaml +1 -1
  168. data/.data/spec/std/isa/inst/Zabha/amomin.b.aqrl.yaml +1 -1
  169. data/.data/spec/std/isa/inst/Zabha/amomin.b.rl.yaml +1 -1
  170. data/.data/spec/std/isa/inst/Zabha/amomin.b.yaml +1 -1
  171. data/.data/spec/std/isa/inst/Zabha/amomin.h.aq.yaml +1 -1
  172. data/.data/spec/std/isa/inst/Zabha/amomin.h.aqrl.yaml +1 -1
  173. data/.data/spec/std/isa/inst/Zabha/amomin.h.rl.yaml +1 -1
  174. data/.data/spec/std/isa/inst/Zabha/amomin.h.yaml +1 -1
  175. data/.data/spec/std/isa/inst/Zabha/amominu.b.aq.yaml +1 -1
  176. data/.data/spec/std/isa/inst/Zabha/amominu.b.aqrl.yaml +1 -1
  177. data/.data/spec/std/isa/inst/Zabha/amominu.b.rl.yaml +1 -1
  178. data/.data/spec/std/isa/inst/Zabha/amominu.b.yaml +1 -1
  179. data/.data/spec/std/isa/inst/Zabha/amominu.h.aq.yaml +1 -1
  180. data/.data/spec/std/isa/inst/Zabha/amominu.h.aqrl.yaml +1 -1
  181. data/.data/spec/std/isa/inst/Zabha/amominu.h.rl.yaml +1 -1
  182. data/.data/spec/std/isa/inst/Zabha/amominu.h.yaml +1 -1
  183. data/.data/spec/std/isa/inst/Zabha/amoor.b.aq.yaml +1 -1
  184. data/.data/spec/std/isa/inst/Zabha/amoor.b.aqrl.yaml +1 -1
  185. data/.data/spec/std/isa/inst/Zabha/amoor.b.rl.yaml +1 -1
  186. data/.data/spec/std/isa/inst/Zabha/amoor.b.yaml +1 -1
  187. data/.data/spec/std/isa/inst/Zabha/amoor.h.aq.yaml +1 -1
  188. data/.data/spec/std/isa/inst/Zabha/amoor.h.aqrl.yaml +1 -1
  189. data/.data/spec/std/isa/inst/Zabha/amoor.h.rl.yaml +1 -1
  190. data/.data/spec/std/isa/inst/Zabha/amoor.h.yaml +1 -1
  191. data/.data/spec/std/isa/inst/Zabha/amoswap.b.aq.yaml +1 -1
  192. data/.data/spec/std/isa/inst/Zabha/amoswap.b.aqrl.yaml +1 -1
  193. data/.data/spec/std/isa/inst/Zabha/amoswap.b.rl.yaml +1 -1
  194. data/.data/spec/std/isa/inst/Zabha/amoswap.b.yaml +1 -1
  195. data/.data/spec/std/isa/inst/Zabha/amoswap.h.aq.yaml +1 -1
  196. data/.data/spec/std/isa/inst/Zabha/amoswap.h.aqrl.yaml +1 -1
  197. data/.data/spec/std/isa/inst/Zabha/amoswap.h.rl.yaml +1 -1
  198. data/.data/spec/std/isa/inst/Zabha/amoswap.h.yaml +1 -1
  199. data/.data/spec/std/isa/inst/Zabha/amoxor.b.aq.yaml +1 -1
  200. data/.data/spec/std/isa/inst/Zabha/amoxor.b.aqrl.yaml +1 -1
  201. data/.data/spec/std/isa/inst/Zabha/amoxor.b.rl.yaml +1 -1
  202. data/.data/spec/std/isa/inst/Zabha/amoxor.b.yaml +1 -1
  203. data/.data/spec/std/isa/inst/Zabha/amoxor.h.aq.yaml +1 -1
  204. data/.data/spec/std/isa/inst/Zabha/amoxor.h.aqrl.yaml +1 -1
  205. data/.data/spec/std/isa/inst/Zabha/amoxor.h.rl.yaml +1 -1
  206. data/.data/spec/std/isa/inst/Zabha/amoxor.h.yaml +1 -1
  207. data/.data/spec/std/isa/inst/Zalrsc/lr.SIZE.AQRL.layout +2 -2
  208. data/.data/spec/std/isa/inst/Zalrsc/lr.d.aq.yaml +2 -2
  209. data/.data/spec/std/isa/inst/Zalrsc/lr.d.aqrl.yaml +2 -2
  210. data/.data/spec/std/isa/inst/Zalrsc/lr.d.rl.yaml +2 -2
  211. data/.data/spec/std/isa/inst/Zalrsc/lr.d.yaml +2 -2
  212. data/.data/spec/std/isa/inst/Zalrsc/lr.w.aq.yaml +2 -2
  213. data/.data/spec/std/isa/inst/Zalrsc/lr.w.aqrl.yaml +2 -2
  214. data/.data/spec/std/isa/inst/Zalrsc/lr.w.rl.yaml +2 -2
  215. data/.data/spec/std/isa/inst/Zalrsc/lr.w.yaml +2 -2
  216. data/.data/spec/std/isa/inst/Zalrsc/sc.SIZE.AQRL.layout +2 -2
  217. data/.data/spec/std/isa/inst/Zalrsc/sc.d.aq.yaml +2 -2
  218. data/.data/spec/std/isa/inst/Zalrsc/sc.d.aqrl.yaml +2 -2
  219. data/.data/spec/std/isa/inst/Zalrsc/sc.d.rl.yaml +2 -2
  220. data/.data/spec/std/isa/inst/Zalrsc/sc.d.yaml +2 -2
  221. data/.data/spec/std/isa/inst/Zalrsc/sc.w.aq.yaml +2 -2
  222. data/.data/spec/std/isa/inst/Zalrsc/sc.w.aqrl.yaml +2 -2
  223. data/.data/spec/std/isa/inst/Zalrsc/sc.w.rl.yaml +2 -2
  224. data/.data/spec/std/isa/inst/Zalrsc/sc.w.yaml +2 -2
  225. data/.data/spec/std/isa/inst/Zcb/c.lbu.yaml +1 -1
  226. data/.data/spec/std/isa/inst/Zcb/c.lh.yaml +1 -1
  227. data/.data/spec/std/isa/inst/Zcb/c.lhu.yaml +1 -1
  228. data/.data/spec/std/isa/inst/Zcb/c.sb.yaml +1 -1
  229. data/.data/spec/std/isa/inst/Zcb/c.sh.yaml +1 -1
  230. data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +1 -1
  231. data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +1 -1
  232. data/.data/spec/std/isa/inst/Zcd/c.fsd.yaml +1 -1
  233. data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +1 -1
  234. data/.data/spec/std/isa/inst/Zcf/c.flw.yaml +1 -1
  235. data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +1 -1
  236. data/.data/spec/std/isa/inst/Zcf/c.fsw.yaml +1 -1
  237. data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +1 -1
  238. data/.data/spec/std/isa/inst/Zcmt/cm.jalt.yaml +2 -2
  239. data/.data/spec/std/isa/inst/Zcmt/cm.jt.yaml +2 -2
  240. data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +3 -3
  241. data/.data/spec/std/isa/inst/Zfh/flh.yaml +2 -2
  242. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +1 -1
  243. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +1 -1
  244. data/.data/spec/std/isa/isa/builtin_functions.idl +3 -5
  245. data/.data/spec/std/isa/isa/fetch.idl +2 -2
  246. data/.data/spec/std/isa/isa/fp.idl +7 -8
  247. data/.data/spec/std/isa/isa/globals.isa +123 -118
  248. data/.data/spec/std/isa/isa/util.idl +6 -8
  249. data/lib/udb/cfg_arch.rb +36 -7
  250. data/lib/udb/idl/condition_to_udb.rb +7 -7
  251. data/lib/udb/obj/extension.rb +106 -67
  252. data/lib/udb/version.rb +1 -1
  253. data/lib/udb/yaml/yaml_resolver.rb +1 -1
  254. metadata +2 -2
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
@@ -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
@@ -4,5 +4,5 @@
4
4
  # frozen_string_literal: true
5
5
 
6
6
  module Udb
7
- def self.version = "0.1.0"
7
+ def self.version = "0.1.1"
8
8
  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.1
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-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport