udb 0.1.17 → 0.1.18

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/cfgs/example_rv64_with_overlay.yaml +140 -5
  3. data/.data/cfgs/profile/RVA23S64.yaml +1 -1
  4. data/.data/cfgs/profile/RVA23p1S64.yaml +217 -0
  5. data/.data/cfgs/profile/RVB23S64.yaml +1 -1
  6. data/.data/cfgs/profile/RVB23p1S64.yaml +179 -0
  7. data/.data/cfgs/rv32-riscv-tests.yaml +134 -0
  8. data/.data/cfgs/rv32-vector.yaml +134 -0
  9. data/.data/cfgs/rv64-riscv-tests.yaml +134 -0
  10. data/.data/cfgs/rv64-vector.yaml +134 -0
  11. data/.data/spec/schemas/schema_defs.json +4 -1
  12. data/.data/spec/std/isa/csr/I/mcounteren.layout +7 -0
  13. data/.data/spec/std/isa/csr/I/mcounteren.yaml +7 -0
  14. data/.data/spec/std/isa/csr/Smcdeleg/scountinhibit.layout +111 -0
  15. data/.data/spec/std/isa/csr/Smcdeleg/scountinhibit.yaml +840 -0
  16. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +2 -0
  17. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +2 -0
  18. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +2 -0
  19. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +2 -0
  20. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +7 -0
  21. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +7 -0
  22. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -7
  23. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +2 -4
  24. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -7
  25. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +2 -4
  26. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -7
  27. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +2 -4
  28. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -7
  29. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +2 -4
  30. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -7
  31. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +2 -4
  32. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -7
  33. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +2 -4
  34. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -7
  35. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +2 -4
  36. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -7
  37. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +2 -4
  38. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -7
  39. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +2 -4
  40. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -7
  41. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +2 -4
  42. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -7
  43. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +2 -4
  44. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -7
  45. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +2 -4
  46. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -7
  47. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +2 -4
  48. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -7
  49. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +2 -4
  50. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -7
  51. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +2 -4
  52. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -7
  53. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +2 -4
  54. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -7
  55. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +2 -4
  56. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -7
  57. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +2 -4
  58. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -7
  59. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +2 -4
  60. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -7
  61. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +2 -4
  62. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -7
  63. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -7
  64. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +2 -4
  65. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -7
  66. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +2 -4
  67. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +2 -4
  68. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -7
  69. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +2 -4
  70. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -7
  71. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +2 -4
  72. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -7
  73. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +2 -4
  74. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -7
  75. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +2 -4
  76. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -7
  77. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +2 -4
  78. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -7
  79. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +2 -4
  80. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -7
  81. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +2 -4
  82. data/.data/spec/std/isa/csr/Zihpm/mhpmevent10.yaml +4 -7
  83. data/.data/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml +4 -4
  84. data/.data/spec/std/isa/csr/Zihpm/mhpmevent11.yaml +4 -7
  85. data/.data/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml +4 -4
  86. data/.data/spec/std/isa/csr/Zihpm/mhpmevent12.yaml +4 -7
  87. data/.data/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml +4 -4
  88. data/.data/spec/std/isa/csr/Zihpm/mhpmevent13.yaml +4 -7
  89. data/.data/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml +4 -4
  90. data/.data/spec/std/isa/csr/Zihpm/mhpmevent14.yaml +4 -7
  91. data/.data/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml +4 -4
  92. data/.data/spec/std/isa/csr/Zihpm/mhpmevent15.yaml +4 -7
  93. data/.data/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml +4 -4
  94. data/.data/spec/std/isa/csr/Zihpm/mhpmevent16.yaml +4 -7
  95. data/.data/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml +4 -4
  96. data/.data/spec/std/isa/csr/Zihpm/mhpmevent17.yaml +4 -7
  97. data/.data/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml +4 -4
  98. data/.data/spec/std/isa/csr/Zihpm/mhpmevent18.yaml +4 -7
  99. data/.data/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml +4 -4
  100. data/.data/spec/std/isa/csr/Zihpm/mhpmevent19.yaml +4 -7
  101. data/.data/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml +4 -4
  102. data/.data/spec/std/isa/csr/Zihpm/mhpmevent20.yaml +4 -7
  103. data/.data/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml +4 -4
  104. data/.data/spec/std/isa/csr/Zihpm/mhpmevent21.yaml +4 -7
  105. data/.data/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml +4 -4
  106. data/.data/spec/std/isa/csr/Zihpm/mhpmevent22.yaml +4 -7
  107. data/.data/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml +4 -4
  108. data/.data/spec/std/isa/csr/Zihpm/mhpmevent23.yaml +4 -7
  109. data/.data/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml +4 -4
  110. data/.data/spec/std/isa/csr/Zihpm/mhpmevent24.yaml +4 -7
  111. data/.data/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml +4 -4
  112. data/.data/spec/std/isa/csr/Zihpm/mhpmevent25.yaml +4 -7
  113. data/.data/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml +4 -4
  114. data/.data/spec/std/isa/csr/Zihpm/mhpmevent26.yaml +4 -7
  115. data/.data/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml +4 -4
  116. data/.data/spec/std/isa/csr/Zihpm/mhpmevent27.yaml +4 -7
  117. data/.data/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml +4 -4
  118. data/.data/spec/std/isa/csr/Zihpm/mhpmevent28.yaml +4 -7
  119. data/.data/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml +4 -4
  120. data/.data/spec/std/isa/csr/Zihpm/mhpmevent29.yaml +4 -7
  121. data/.data/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml +4 -4
  122. data/.data/spec/std/isa/csr/Zihpm/mhpmevent3.yaml +4 -7
  123. data/.data/spec/std/isa/csr/Zihpm/mhpmevent30.yaml +4 -7
  124. data/.data/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml +4 -4
  125. data/.data/spec/std/isa/csr/Zihpm/mhpmevent31.yaml +4 -7
  126. data/.data/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml +4 -4
  127. data/.data/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml +4 -4
  128. data/.data/spec/std/isa/csr/Zihpm/mhpmevent4.yaml +4 -7
  129. data/.data/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml +4 -4
  130. data/.data/spec/std/isa/csr/Zihpm/mhpmevent5.yaml +4 -7
  131. data/.data/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml +4 -4
  132. data/.data/spec/std/isa/csr/Zihpm/mhpmevent6.yaml +4 -7
  133. data/.data/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml +4 -4
  134. data/.data/spec/std/isa/csr/Zihpm/mhpmevent7.yaml +4 -7
  135. data/.data/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml +4 -4
  136. data/.data/spec/std/isa/csr/Zihpm/mhpmevent8.yaml +4 -7
  137. data/.data/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml +4 -4
  138. data/.data/spec/std/isa/csr/Zihpm/mhpmevent9.yaml +4 -7
  139. data/.data/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml +4 -4
  140. data/.data/spec/std/isa/csr/Zihpm/mhpmeventN.layout +4 -7
  141. data/.data/spec/std/isa/csr/Zihpm/mhpmeventNh.layout +4 -4
  142. data/.data/spec/std/isa/csr/Zkr/seed.yaml +75 -0
  143. data/.data/spec/std/isa/csr/hcontext.yaml +4 -4
  144. data/.data/spec/std/isa/csr/mcontext.yaml +4 -4
  145. data/.data/spec/std/isa/csr/mcycle.yaml +2 -0
  146. data/.data/spec/std/isa/csr/mcycleh.yaml +2 -0
  147. data/.data/spec/std/isa/csr/medeleg.yaml +72 -36
  148. data/.data/spec/std/isa/csr/menvcfg.yaml +12 -1
  149. data/.data/spec/std/isa/csr/menvcfgh.yaml +12 -0
  150. data/.data/spec/std/isa/csr/mideleg.yaml +13 -36
  151. data/.data/spec/std/isa/csr/mie.yaml +3 -6
  152. data/.data/spec/std/isa/csr/minstret.yaml +2 -0
  153. data/.data/spec/std/isa/csr/minstreth.yaml +2 -0
  154. data/.data/spec/std/isa/csr/mip.yaml +3 -6
  155. data/.data/spec/std/isa/csr/misa.yaml +3 -23
  156. data/.data/spec/std/isa/csr/mseccfg.yaml +27 -1
  157. data/.data/spec/std/isa/csr/mstatus.yaml +8 -2
  158. data/.data/spec/std/isa/csr/scontext.yaml +8 -4
  159. data/.data/spec/std/isa/csr/tcontrol.yaml +6 -2
  160. data/.data/spec/std/isa/csr/tdata2.yaml +6 -2
  161. data/.data/spec/std/isa/csr/tdata3.yaml +6 -2
  162. data/.data/spec/std/isa/ext/Sdext.yaml +58 -2
  163. data/.data/spec/std/isa/ext/Sm.yaml +2 -2
  164. data/.data/spec/std/isa/ext/Smcdeleg.yaml +7 -0
  165. data/.data/spec/std/isa/ext/Smmpm.yaml +8 -0
  166. data/.data/spec/std/isa/ext/Smnpm.yaml +19 -0
  167. data/.data/spec/std/isa/ext/Smpmpdeleg.yaml +33 -0
  168. data/.data/spec/std/isa/ext/Ssccfg.yaml +7 -0
  169. data/.data/spec/std/isa/ext/Ssnpm.yaml +8 -0
  170. data/.data/spec/std/isa/ext/Sspmp.yaml +44 -0
  171. data/.data/spec/std/isa/ext/Sspmpen.yaml +30 -0
  172. data/.data/spec/std/isa/ext/Zvabd.yaml +5 -1
  173. data/.data/spec/std/isa/ext/Zvfbdota32f.yaml +23 -0
  174. data/.data/spec/std/isa/ext/Zvzip.yaml +24 -0
  175. data/.data/spec/std/isa/inst/C/c.bnez.yaml +2 -2
  176. data/.data/spec/std/isa/inst/H/hlv.b.yaml +1 -1
  177. data/.data/spec/std/isa/inst/H/hlv.bu.yaml +1 -1
  178. data/.data/spec/std/isa/inst/H/hlv.d.yaml +1 -1
  179. data/.data/spec/std/isa/inst/H/hlv.h.yaml +1 -1
  180. data/.data/spec/std/isa/inst/H/hlv.hu.yaml +1 -1
  181. data/.data/spec/std/isa/inst/H/hlv.w.yaml +1 -1
  182. data/.data/spec/std/isa/inst/H/hlv.wu.yaml +1 -1
  183. data/.data/spec/std/isa/inst/H/hlvx.hu.yaml +1 -1
  184. data/.data/spec/std/isa/inst/H/hlvx.wu.yaml +1 -1
  185. data/.data/spec/std/isa/inst/H/hsv.b.yaml +1 -1
  186. data/.data/spec/std/isa/inst/H/hsv.d.yaml +1 -1
  187. data/.data/spec/std/isa/inst/H/hsv.h.yaml +1 -1
  188. data/.data/spec/std/isa/inst/H/hsv.w.yaml +1 -1
  189. data/.data/spec/std/isa/inst/I/ld.yaml +9 -8
  190. data/.data/spec/std/isa/inst/I/sd.yaml +9 -8
  191. data/.data/spec/std/isa/inst/Q/fcvt.q.d.yaml +1 -1
  192. data/.data/spec/std/isa/inst/Q/flq.yaml +1 -1
  193. data/.data/spec/std/isa/inst/Sdext/dret.yaml +72 -6
  194. data/.data/spec/std/isa/inst/V/vfncvt.f.f.w.yaml +2 -2
  195. data/.data/spec/std/isa/inst/V/vfncvt.f.x.w.yaml +2 -2
  196. data/.data/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml +2 -2
  197. data/.data/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml +2 -2
  198. data/.data/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml +2 -2
  199. data/.data/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml +2 -2
  200. data/.data/spec/std/isa/inst/V/vfncvt.x.f.w.yaml +2 -2
  201. data/.data/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml +2 -2
  202. data/.data/spec/std/isa/inst/V/vnclip.wi.yaml +2 -2
  203. data/.data/spec/std/isa/inst/V/vnclip.wv.yaml +2 -2
  204. data/.data/spec/std/isa/inst/V/vnclip.wx.yaml +2 -2
  205. data/.data/spec/std/isa/inst/V/vnclipu.wi.yaml +2 -2
  206. data/.data/spec/std/isa/inst/V/vnclipu.wv.yaml +2 -2
  207. data/.data/spec/std/isa/inst/V/vnclipu.wx.yaml +2 -2
  208. data/.data/spec/std/isa/inst/V/vnsra.wi.yaml +2 -2
  209. data/.data/spec/std/isa/inst/V/vnsra.wv.yaml +2 -2
  210. data/.data/spec/std/isa/inst/V/vnsra.wx.yaml +2 -2
  211. data/.data/spec/std/isa/inst/V/vnsrl.wi.yaml +2 -2
  212. data/.data/spec/std/isa/inst/V/vnsrl.wv.yaml +2 -2
  213. data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +2 -2
  214. data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +28 -20
  215. data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +35 -20
  216. data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +3 -3
  217. data/.data/spec/std/isa/inst/Zvabd/vabd.vx.yaml +69 -0
  218. data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +3 -3
  219. data/.data/spec/std/isa/inst/Zvabd/{vabs.v.yaml → vabdu.vx.yaml} +17 -11
  220. data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +1 -1
  221. data/.data/spec/std/isa/inst/Zvabd/vwabda.vx.yaml +73 -0
  222. data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +1 -1
  223. data/.data/spec/std/isa/inst/Zvabd/vwabdau.vx.yaml +74 -0
  224. data/.data/spec/std/isa/inst/Zvfbdota32f/vfbdota.vv.yaml +68 -0
  225. data/.data/spec/std/isa/inst/Zvzip/vpaire.vv.yaml +36 -0
  226. data/.data/spec/std/isa/inst/Zvzip/vpairo.vv.yaml +37 -0
  227. data/.data/spec/std/isa/inst/Zvzip/vunzipe.v.yaml +33 -0
  228. data/.data/spec/std/isa/inst/Zvzip/vunzipo.v.yaml +33 -0
  229. data/.data/spec/std/isa/inst/Zvzip/vzip.vv.yaml +37 -0
  230. data/.data/spec/std/isa/isa/builtin_functions.idl +51 -0
  231. data/.data/spec/std/isa/isa/globals.isa +117 -5
  232. data/.data/spec/std/isa/param/HCONTEXT_IMPLEMENTED.yaml +29 -0
  233. data/.data/spec/std/isa/param/{MCONTEXT_AVAILABLE.yaml → MCONTEXT_IMPLEMENTED.yaml} +3 -3
  234. data/.data/spec/std/isa/param/MEDELEG_DELEGATABLE.yaml +121 -0
  235. data/.data/spec/std/isa/param/MEI_INTR_IMPL.yaml +1 -1
  236. data/.data/spec/std/isa/param/MIDELEG_DELEGATABLE.yaml +177 -0
  237. data/.data/spec/std/isa/param/MSI_INTR_IMPL.yaml +1 -1
  238. data/.data/spec/std/isa/param/MTI_INTR_IMPL.yaml +1 -1
  239. data/.data/spec/std/isa/param/SCONTEXT_IMPLEMENTED.yaml +18 -0
  240. data/.data/spec/std/isa/param/SDTRIG_BREAKPOINT_REENTRANCY.yaml +45 -0
  241. data/.data/spec/std/isa/param/SDTRIG_ETRIGGER_SUPPORTED_EXCEPTIONS.yaml +37 -0
  242. data/.data/spec/std/isa/param/SDTRIG_ETRIGGER_SUPPORTED_TRIGGERS.yaml +25 -0
  243. data/.data/spec/std/isa/param/SDTRIG_ICOUNT_COUNT_HARDWIRED_1.yaml +23 -0
  244. data/.data/spec/std/isa/param/SDTRIG_ICOUNT_SELF_WRITE_SETS_PENDING.yaml +23 -0
  245. data/.data/spec/std/isa/param/SDTRIG_ICOUNT_SUPPORTED_TRIGGERS.yaml +25 -0
  246. data/.data/spec/std/isa/param/SDTRIG_ITRIGGER_SUPPORTED_INTERRUPTS.yaml +37 -0
  247. data/.data/spec/std/isa/param/SDTRIG_ITRIGGER_SUPPORTED_TRIGGERS.yaml +25 -0
  248. data/.data/spec/std/isa/param/SDTRIG_MAX_CHAIN_LENGTH.yaml +33 -0
  249. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_EXECUTE_WRITABLE.yaml +22 -0
  250. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_LOAD_WRITABLE.yaml +22 -0
  251. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_MASKMAX6.yaml +26 -0
  252. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_MATCH_LEGAL_VALUES.yaml +41 -0
  253. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SELECT_WRITABLE.yaml +22 -0
  254. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SIZE_LEGAL_VALUES.yaml +38 -0
  255. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_STORE_WRITABLE.yaml +22 -0
  256. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SUPPORTED_TRIGGERS.yaml +25 -0
  257. data/.data/spec/std/isa/param/SDTRIG_M_WRITABLE.yaml +17 -0
  258. data/.data/spec/std/isa/param/SDTRIG_NUM_TRIGGERS.yaml +22 -0
  259. data/.data/spec/std/isa/param/SDTRIG_S_WRITABLE.yaml +19 -0
  260. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHSELECT_MCONTEXT_MATCH.yaml +24 -0
  261. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHSELECT_VMID_MATCH.yaml +23 -0
  262. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHVALUE_LEN.yaml +26 -0
  263. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SSELECT_ASID_MATCH.yaml +23 -0
  264. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SSELECT_SCONTEXT_MATCH.yaml +26 -0
  265. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SVALUE_LEN.yaml +26 -0
  266. data/.data/spec/std/isa/param/SDTRIG_U_WRITABLE.yaml +19 -0
  267. data/.data/spec/std/isa/param/SDTRIG_VS_WRITABLE.yaml +19 -0
  268. data/.data/spec/std/isa/param/SDTRIG_VU_WRITABLE.yaml +19 -0
  269. data/.data/spec/std/isa/param/SEI_INTR_IMPL.yaml +1 -1
  270. data/.data/spec/std/isa/param/SSEED_READ_ONLY_ZERO.yaml +28 -0
  271. data/.data/spec/std/isa/param/SSI_INTR_IMPL.yaml +1 -1
  272. data/.data/spec/std/isa/param/STI_INTR_IMPL.yaml +1 -1
  273. data/.data/spec/std/isa/param/TCONTROL_IMPLEMENTED.yaml +16 -0
  274. data/.data/spec/std/isa/param/TDATA2_IMPLEMENTED.yaml +26 -0
  275. data/.data/spec/std/isa/param/TDATA3_IMPLEMENTED.yaml +29 -0
  276. data/.data/spec/std/isa/param/USEED_READ_ONLY_ZERO.yaml +28 -0
  277. data/.data/spec/std/isa/profile/RVA23p1S64.yaml +37 -0
  278. data/.data/spec/std/isa/profile/RVB23p1S64.yaml +39 -0
  279. data/.data/spec/std/isa/profile_family/RVA.yaml +3 -1
  280. data/.data/spec/std/isa/profile_family/RVB.yaml +3 -1
  281. data/.data/spec/std/isa/profile_release/RVA23p1.yaml +30 -0
  282. data/.data/spec/std/isa/profile_release/RVB23p1.yaml +30 -0
  283. data/lib/udb/version.rb +1 -1
  284. metadata +65 -8
  285. data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +0 -19
  286. data/.data/spec/std/isa/param/VSEI_INTR_IMPL.yaml +0 -28
  287. data/.data/spec/std/isa/param/VSSI_INTR_IMPL.yaml +0 -28
  288. data/.data/spec/std/isa/param/VSTI_INTR_IMPL.yaml +0 -33
@@ -0,0 +1,69 @@
1
+ # Copyright (c) Alibaba Damo Academy
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../../schemas/inst_schema.json
5
+
6
+ $schema: "inst_schema.json#"
7
+ kind: instruction
8
+ name: vabd.vx
9
+ long_name: Vector Single-Width Signed Integer Absolute Difference with Scalar
10
+ description: |
11
+ Computes the element-wise absolute difference of signed integer operands from
12
+ vector register vs2 and scalar register xs1, and writes the SEW-bit results to
13
+ vd according to mask vm. The scalar is sign-extended or truncated to SEW.
14
+
15
+ Supports SEW of 8, 16, and 32, and SEW of 64 when Zve64x is implemented.
16
+ definedBy:
17
+ extension:
18
+ name: Zvabd
19
+ assembly: vd, vs2, xs1, vm
20
+ encoding:
21
+ match: 010101-----------110-----1010111
22
+ variables:
23
+ - name: vm
24
+ location: 25
25
+ - name: vs2
26
+ location: 24-20
27
+ - name: xs1
28
+ location: 19-15
29
+ - name: vd
30
+ location: 11-7
31
+ access:
32
+ s: always
33
+ u: always
34
+ vs: always
35
+ vu: always
36
+ pseudoinstructions:
37
+ - when: xs1 == 0
38
+ to: vabs.v vd, vs2, vm
39
+ operation(): |
40
+ VectorState state = vector_state();
41
+
42
+ VectorLmulType lmul_type = state.lmul_type;
43
+
44
+ XReg vlen = VLEN;
45
+ XReg vlmax;
46
+ if (lmul_type == VectorLmulType::Multiply) {
47
+ vlmax = (vlen << state.log2_lmul) >> state.log2_sew;
48
+ } else {
49
+ vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
50
+ }
51
+
52
+ Bits<64> scalar = $signed(X[xs1]);
53
+
54
+ for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
55
+ U32 start_bit_pos = i * state.sew;
56
+ U32 end_bit_pos = start_bit_pos + state.sew - 1;
57
+ if (vm == 1'b1 || V[0][i:i] == 1'b1) {
58
+ # active element
59
+ if ($signed(V[vs2][end_bit_pos:start_bit_pos]) >= $signed(scalar[state.sew-1:0])) {
60
+ V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos] - scalar[state.sew-1:0];
61
+ } else {
62
+ V[vd][end_bit_pos:start_bit_pos] = scalar[state.sew-1:0] - V[vs2][end_bit_pos:start_bit_pos];
63
+ }
64
+ }
65
+ # inactive element: handled according to vtype.VMA policy
66
+ }
67
+ # tail elements (i >= vl): handled according to vtype.VTA policy
68
+
69
+ CSR[vstart].VALUE = 0;
@@ -11,13 +11,13 @@ description: |
11
11
  Computes the element-wise absolute difference of two unsigned integer SEW-bit
12
12
  source operands vs1 and vs2 and writes the result to vd according to mask vm.
13
13
 
14
- Reserved when SEW is neither 8 nor 16.
14
+ Supports SEW of 8, 16, and 32. If the Zve64x extension is supported, SEW 64 is also supported.
15
15
  definedBy:
16
16
  extension:
17
17
  name: Zvabd
18
18
  assembly: vd, vs2, vs1, vm
19
19
  encoding:
20
- match: 010011-----------010-----1010111
20
+ match: 010110-----------010-----1010111
21
21
  variables:
22
22
  - name: vm
23
23
  location: 25
@@ -35,7 +35,7 @@ access:
35
35
  operation(): |
36
36
  VectorState state = vector_state();
37
37
 
38
- if (state.sew != 8 && state.sew != 16) {
38
+ if (!implemented?(ExtensionName::Zve64x) && state.sew > 32) {
39
39
  raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
40
40
  }
41
41
 
@@ -5,25 +5,28 @@
5
5
 
6
6
  $schema: "inst_schema.json#"
7
7
  kind: instruction
8
- name: vabs.v
9
- long_name: Vector Single-Width Signed Integer Absolute
8
+ name: vabdu.vx
9
+ long_name: Vector Single-Width Unsigned Integer Absolute Difference with Scalar
10
10
  description: |
11
- An absolute value operation is performed on each element of vs2, storing the
12
- result in vector register vd according to mask vm.
11
+ Computes the element-wise absolute difference of unsigned integer operands
12
+ from vector register vs2 and scalar register xs1, and writes the SEW-bit
13
+ results to vd according to mask vm. The scalar is sign-extended or truncated
14
+ to SEW before being interpreted as an unsigned value.
13
15
 
14
- vabs.v supports SEW of 8, 16, and 32 when Zve32x is implemented.
15
- When Zve64x is implemented, vabs.v also supports SEW of 64.
16
+ Supports SEW of 8, 16, and 32, and SEW of 64 when Zve64x is implemented.
16
17
  definedBy:
17
18
  extension:
18
19
  name: Zvabd
19
- assembly: vd, vs2, vm
20
+ assembly: vd, vs2, xs1, vm
20
21
  encoding:
21
- match: 010010------10000010-----1010111
22
+ match: 010110-----------110-----1010111
22
23
  variables:
23
24
  - name: vm
24
25
  location: 25
25
26
  - name: vs2
26
27
  location: 24-20
28
+ - name: xs1
29
+ location: 19-15
27
30
  - name: vd
28
31
  location: 11-7
29
32
  access:
@@ -33,6 +36,7 @@ access:
33
36
  vu: always
34
37
  operation(): |
35
38
  VectorState state = vector_state();
39
+
36
40
  VectorLmulType lmul_type = state.lmul_type;
37
41
 
38
42
  XReg vlen = VLEN;
@@ -43,15 +47,17 @@ operation(): |
43
47
  vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
44
48
  }
45
49
 
50
+ Bits<64> scalar = $signed(X[xs1]);
51
+
46
52
  for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
47
53
  U32 start_bit_pos = i * state.sew;
48
54
  U32 end_bit_pos = start_bit_pos + state.sew - 1;
49
55
  if (vm == 1'b1 || V[0][i:i] == 1'b1) {
50
56
  # active element
51
- if (V[vs2][end_bit_pos:end_bit_pos] == 1'b1) {
52
- V[vd][end_bit_pos:start_bit_pos] = -$signed(V[vs2][end_bit_pos:start_bit_pos]);
57
+ if (V[vs2][end_bit_pos:start_bit_pos] >= scalar[state.sew-1:0]) {
58
+ V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos] - scalar[state.sew-1:0];
53
59
  } else {
54
- V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos];
60
+ V[vd][end_bit_pos:start_bit_pos] = scalar[state.sew-1:0] - V[vs2][end_bit_pos:start_bit_pos];
55
61
  }
56
62
  }
57
63
  # inactive element: handled according to vtype.VMA policy
@@ -18,7 +18,7 @@ definedBy:
18
18
  name: Zvabd
19
19
  assembly: vd, vs2, vs1, vm
20
20
  encoding:
21
- match: 010101-----------010-----1010111
21
+ match: 111101-----------000-----1010111
22
22
  variables:
23
23
  - name: vm
24
24
  location: 25
@@ -0,0 +1,73 @@
1
+ # Copyright (c) Alibaba Damo Academy
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../../schemas/inst_schema.json
5
+
6
+ $schema: "inst_schema.json#"
7
+ kind: instruction
8
+ name: vwabda.vx
9
+ long_name: Vector Widening Signed Integer Absolute Difference and Accumulate with Scalar
10
+ description: |
11
+ Computes the element-wise absolute difference of signed integer operands from
12
+ vector register vs2 and scalar register xs1, and accumulates the results into
13
+ the 2*SEW-bit elements of vd. The scalar is sign-extended or truncated to SEW.
14
+
15
+ Reserved when SEW is neither 8 nor 16.
16
+ definedBy:
17
+ extension:
18
+ name: Zvabd
19
+ assembly: vd, vs2, xs1, vm
20
+ encoding:
21
+ match: 111101-----------100-----1010111
22
+ variables:
23
+ - name: vm
24
+ location: 25
25
+ - name: vs2
26
+ location: 24-20
27
+ - name: xs1
28
+ location: 19-15
29
+ - name: vd
30
+ location: 11-7
31
+ access:
32
+ s: always
33
+ u: always
34
+ vs: always
35
+ vu: always
36
+ operation(): |
37
+ VectorState state = vector_state();
38
+
39
+ if (state.sew != 8 && state.sew != 16) {
40
+ raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
41
+ }
42
+
43
+ VectorLmulType lmul_type = state.lmul_type;
44
+
45
+ XReg vlen = VLEN;
46
+ XReg vlmax;
47
+ if (lmul_type == VectorLmulType::Multiply) {
48
+ vlmax = (vlen << state.log2_lmul) >> state.log2_sew;
49
+ } else {
50
+ vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
51
+ }
52
+
53
+ Bits<64> scalar = $signed(X[xs1]);
54
+ U32 sew2 = state.sew + state.sew;
55
+
56
+ for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
57
+ U32 src_start = i * state.sew;
58
+ U32 src_end = src_start + state.sew - 1;
59
+ U32 dst_start = i * sew2;
60
+ U32 dst_end = dst_start + sew2 - 1;
61
+ if (vm == 1'b1 || V[0][i:i] == 1'b1) {
62
+ # active element
63
+ if ($signed(V[vs2][src_end:src_start]) >= $signed(scalar[state.sew-1:0])) {
64
+ V[vd][dst_end:dst_start] = V[vd][dst_end:dst_start] + (V[vs2][src_end:src_start] - scalar[state.sew-1:0]);
65
+ } else {
66
+ V[vd][dst_end:dst_start] = V[vd][dst_end:dst_start] + (scalar[state.sew-1:0] - V[vs2][src_end:src_start]);
67
+ }
68
+ }
69
+ # inactive element: handled according to vtype.VMA policy
70
+ }
71
+ # tail elements (i >= vl): handled according to vtype.VTA policy
72
+
73
+ CSR[vstart].VALUE = 0;
@@ -18,7 +18,7 @@ definedBy:
18
18
  name: Zvabd
19
19
  assembly: vd, vs2, vs1, vm
20
20
  encoding:
21
- match: 010110-----------010-----1010111
21
+ match: 111110-----------000-----1010111
22
22
  variables:
23
23
  - name: vm
24
24
  location: 25
@@ -0,0 +1,74 @@
1
+ # Copyright (c) Alibaba Damo Academy
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../../schemas/inst_schema.json
5
+
6
+ $schema: "inst_schema.json#"
7
+ kind: instruction
8
+ name: vwabdau.vx
9
+ long_name: Vector Widening Unsigned Integer Absolute Difference and Accumulate with Scalar
10
+ description: |
11
+ Computes the element-wise absolute difference of unsigned integer operands
12
+ from vector register vs2 and scalar register xs1, and accumulates the results
13
+ into the 2*SEW-bit elements of vd. The scalar is sign-extended or truncated
14
+ to SEW before being interpreted as an unsigned value.
15
+
16
+ Reserved when SEW is neither 8 nor 16.
17
+ definedBy:
18
+ extension:
19
+ name: Zvabd
20
+ assembly: vd, vs2, xs1, vm
21
+ encoding:
22
+ match: 111110-----------100-----1010111
23
+ variables:
24
+ - name: vm
25
+ location: 25
26
+ - name: vs2
27
+ location: 24-20
28
+ - name: xs1
29
+ location: 19-15
30
+ - name: vd
31
+ location: 11-7
32
+ access:
33
+ s: always
34
+ u: always
35
+ vs: always
36
+ vu: always
37
+ operation(): |
38
+ VectorState state = vector_state();
39
+
40
+ if (state.sew != 8 && state.sew != 16) {
41
+ raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
42
+ }
43
+
44
+ VectorLmulType lmul_type = state.lmul_type;
45
+
46
+ XReg vlen = VLEN;
47
+ XReg vlmax;
48
+ if (lmul_type == VectorLmulType::Multiply) {
49
+ vlmax = (vlen << state.log2_lmul) >> state.log2_sew;
50
+ } else {
51
+ vlmax = (vlen >> state.log2_lmul) >> state.log2_sew;
52
+ }
53
+
54
+ Bits<64> scalar = $signed(X[xs1]);
55
+ U32 sew2 = state.sew + state.sew;
56
+
57
+ for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
58
+ U32 src_start = i * state.sew;
59
+ U32 src_end = src_start + state.sew - 1;
60
+ U32 dst_start = i * sew2;
61
+ U32 dst_end = dst_start + sew2 - 1;
62
+ if (vm == 1'b1 || V[0][i:i] == 1'b1) {
63
+ # active element
64
+ if (V[vs2][src_end:src_start] >= scalar[state.sew-1:0]) {
65
+ V[vd][dst_end:dst_start] = V[vd][dst_end:dst_start] + (V[vs2][src_end:src_start] - scalar[state.sew-1:0]);
66
+ } else {
67
+ V[vd][dst_end:dst_start] = V[vd][dst_end:dst_start] + (scalar[state.sew-1:0] - V[vs2][src_end:src_start]);
68
+ }
69
+ }
70
+ # inactive element: handled according to vtype.VMA policy
71
+ }
72
+ # tail elements (i >= vl): handled according to vtype.VTA policy
73
+
74
+ CSR[vstart].VALUE = 0;
@@ -0,0 +1,68 @@
1
+ # Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ $schema: "inst_schema.json#"
5
+ kind: instruction
6
+ name: vfbdota.vv
7
+ long_name: Vector FP32 Batched Dot Product Accumulate
8
+ description: |
9
+ Performs a batched
10
+ dot-product operation on FP32 vectors, accumulating into FP32. The
11
+ instruction is reserved unless `SEW=32` and `LMUL=1`. The `vs1`, `vs2`, and
12
+ `vd` operands all have `EEW=SEW`.
13
+
14
+ The batched dot-product family treats `vs1` as an EMUL=1 vector register
15
+ group and `vs2` as an EMUL=8 vector register group, computing eight
16
+ independent dot products and accumulating the results into `vd`. `vl` sets
17
+ the length of each dot product. Tail elements are substituted with the bit
18
+ pattern of all zeros, then the computation is performed as though
19
+ `vl=VLMAX`.
20
+
21
+ For long-vector implementations with `VLEN > 8*EEW`, `ci` is a 3-bit
22
+ scaled-by-8 immediate indicating which eight elements of `vd` are read and
23
+ written. The `ci` field is encoded in `vs2[2:0]`; those bits are not needed
24
+ for the register address because `vs2` addresses an EMUL=8 register group.
25
+ The instruction is reserved if `ci >= VLEN/(8*EEW)`. Destination elements
26
+ at or beyond `ci+8` are tail elements, elements below `ci` are prestart
27
+ elements, and the remaining elements are body elements. The destination
28
+ vector register group cannot overlap either source vector register group.
29
+ Masked-off body elements follow the current mask agnostic or undisturbed
30
+ policy, and the instruction is reserved when `vstart` is nonzero; exceptions
31
+ are always reported with `vstart=0`.
32
+
33
+ The FP32 products are first computed to full precision, setting the invalid
34
+ operation exception flag as appropriate. The products are then optionally
35
+ rounded to FP32 according to the dynamic rounding mode, setting the inexact,
36
+ overflow, and underflow exception flags as appropriate. The sum of these
37
+ products and the accumulator is then computed as though by `vfredusum.vs`
38
+ with `SEW=32`, including the setting of exception flags.
39
+
40
+ This formulation allows significant implementation flexibility while being
41
+ sufficiently precise to implement SGEMM. The algorithm used by
42
+ `vfredusum.vs` offers several implementation choices; implementations are
43
+ not required to use the same algorithm configuration for `vfbdota.vv` as for
44
+ `vfredusum.vs`.
45
+ definedBy:
46
+ extension:
47
+ name: Zvfbdota32f
48
+ assembly: vd, vs2, vs1, ci, vm
49
+ encoding:
50
+ match: 101011-----------001-----1110111
51
+ variables:
52
+ - name: vm
53
+ location: 25-25
54
+ - name: vs2
55
+ location: 24-23
56
+ - name: ci
57
+ location: 22-20
58
+ - name: vs1
59
+ location: 19-15
60
+ - name: vd
61
+ location: 11-7
62
+ access:
63
+ s: always
64
+ u: always
65
+ vs: always
66
+ vu: always
67
+ data_independent_timing: false
68
+ operation(): |
@@ -0,0 +1,36 @@
1
+ # Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+ # yaml-language-server: $schema=../../../../schemas/inst_schema.json
4
+ $schema: "inst_schema.json#"
5
+ kind: instruction
6
+ name: vpaire.vv
7
+ long_name: Vector pair even
8
+ description: |
9
+ Interleaves even-indexed elements of two source vector register groups into
10
+ the destination. All operands have EMUL=LMUL. For destination index `i`,
11
+ even indices read `vs2[i]` and odd indices read `vs1[i-1]`, producing
12
+ `[vs2[0], vs1[0], vs2[2], vs1[2], ...]`. Standard vector masking,
13
+ prestart, inactive, and tail handling applies. The destination may not
14
+ overlap either source group.
15
+ definedBy:
16
+ extension:
17
+ name: Zvzip
18
+ assembly: vd, vs2, vs1, vm
19
+ encoding:
20
+ match: 001111-----------000-----1010111
21
+ variables:
22
+ - name: vm
23
+ location: 25
24
+ - name: vs2
25
+ location: 24-20
26
+ - name: vs1
27
+ location: 19-15
28
+ - name: vd
29
+ location: 11-7
30
+ access:
31
+ s: always
32
+ u: always
33
+ vs: always
34
+ vu: always
35
+ data_independent_timing: true
36
+ operation(): |
@@ -0,0 +1,37 @@
1
+ # Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+ # yaml-language-server: $schema=../../../../schemas/inst_schema.json
4
+ $schema: "inst_schema.json#"
5
+ kind: instruction
6
+ name: vpairo.vv
7
+ long_name: Vector pair odd
8
+ description: |
9
+ Interleaves odd-indexed elements of two source vector register groups into
10
+ the destination. All operands have EMUL=LMUL. For destination index `i`,
11
+ even indices read `vs2[i+1]` and odd indices read `vs1[i]`, producing
12
+ `[vs2[1], vs1[1], vs2[3], vs1[3], ...]`. When `vl` is odd, the final
13
+ out-of-range source position contributes zero; no source at or above `vl`
14
+ is read. Standard vector masking, prestart, inactive, and tail handling
15
+ applies. The destination may not overlap either source group.
16
+ definedBy:
17
+ extension:
18
+ name: Zvzip
19
+ assembly: vd, vs2, vs1, vm
20
+ encoding:
21
+ match: 001111-----------010-----1010111
22
+ variables:
23
+ - name: vm
24
+ location: 25
25
+ - name: vs2
26
+ location: 24-20
27
+ - name: vs1
28
+ location: 19-15
29
+ - name: vd
30
+ location: 11-7
31
+ access:
32
+ s: always
33
+ u: always
34
+ vs: always
35
+ vu: always
36
+ data_independent_timing: true
37
+ operation(): |
@@ -0,0 +1,33 @@
1
+ # Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+ # yaml-language-server: $schema=../../../../schemas/inst_schema.json
4
+ $schema: "inst_schema.json#"
5
+ kind: instruction
6
+ name: vunzipe.v
7
+ long_name: Vector unzip even
8
+ description: |
9
+ Extracts even-indexed elements from source vector register group `vs2`,
10
+ with EMUL=2*LMUL, into destination `vd`, with EMUL=LMUL. For `0 <= i < vl`,
11
+ `vd[i] = vs2[2*i]`; source indices below `2*vl` may be read. `LMUL=8`
12
+ and masked encodings (`vm=0`) are illegal. Destination/source overlap is
13
+ allowed only when `vd` equals `vs2`, as for narrowing instructions.
14
+ definedBy:
15
+ extension:
16
+ name: Zvzip
17
+ assembly: vd, vs2, vm
18
+ encoding:
19
+ match: 010010------01011010-----1010111
20
+ variables:
21
+ - name: vm
22
+ location: 25
23
+ - name: vs2
24
+ location: 24-20
25
+ - name: vd
26
+ location: 11-7
27
+ access:
28
+ s: always
29
+ u: always
30
+ vs: always
31
+ vu: always
32
+ data_independent_timing: true
33
+ operation(): |
@@ -0,0 +1,33 @@
1
+ # Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+ # yaml-language-server: $schema=../../../../schemas/inst_schema.json
4
+ $schema: "inst_schema.json#"
5
+ kind: instruction
6
+ name: vunzipo.v
7
+ long_name: Vector unzip odd
8
+ description: |
9
+ Extracts odd-indexed elements from source vector register group `vs2`,
10
+ with EMUL=2*LMUL, into destination `vd`, with EMUL=LMUL. For `0 <= i < vl`,
11
+ `vd[i] = vs2[2*i+1]`; source indices below `2*vl` may be read. `LMUL=8`
12
+ and masked encodings (`vm=0`) are illegal. Destination/source overlap is
13
+ allowed only when `vd` equals `vs2`, as for narrowing instructions.
14
+ definedBy:
15
+ extension:
16
+ name: Zvzip
17
+ assembly: vd, vs2, vm
18
+ encoding:
19
+ match: 010010------01111010-----1010111
20
+ variables:
21
+ - name: vm
22
+ location: 25
23
+ - name: vs2
24
+ location: 24-20
25
+ - name: vd
26
+ location: 11-7
27
+ access:
28
+ s: always
29
+ u: always
30
+ vs: always
31
+ vu: always
32
+ data_independent_timing: true
33
+ operation(): |
@@ -0,0 +1,37 @@
1
+ # Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+ # yaml-language-server: $schema=../../../../schemas/inst_schema.json
4
+ $schema: "inst_schema.json#"
5
+ kind: instruction
6
+ name: vzip.vv
7
+ long_name: Vector zip
8
+ description: |
9
+ Interleaves source vector register groups `vs2` and `vs1`, each with
10
+ EMUL=LMUL/2, into destination `vd` with EMUL=LMUL. For destination index
11
+ `i`, even indices read `vs2[i/2]` and odd indices read `vs1[i/2]`.
12
+ Standard vector masking, prestart, inactive, and tail handling applies.
13
+ The source and destination groups may overlap only when source EMUL is at
14
+ least 1 and their highest-numbered registers coincide. The encoding is
15
+ illegal when `2*SEW > LMUL * ELEN` or overlap rules are violated.
16
+ definedBy:
17
+ extension:
18
+ name: Zvzip
19
+ assembly: vd, vs2, vs1, vm
20
+ encoding:
21
+ match: 111110-----------010-----1010111
22
+ variables:
23
+ - name: vm
24
+ location: 25
25
+ - name: vs2
26
+ location: 24-20
27
+ - name: vs1
28
+ location: 19-15
29
+ - name: vd
30
+ location: 11-7
31
+ access:
32
+ s: always
33
+ u: always
34
+ vs: always
35
+ vu: always
36
+ data_independent_timing: true
37
+ operation(): |
@@ -656,6 +656,38 @@ builtin function atomically_set_pte_a_d {
656
656
  }
657
657
  }
658
658
 
659
+ builtin function atomic_read_modify_write_8 {
660
+ returns Bits<8>
661
+ arguments
662
+ Bits<PHYS_ADDR_WIDTH> phys_addr,
663
+ Bits<8> value,
664
+ AmoOperation op
665
+ description {
666
+ Atomically read-modify-write 8-bits starting at phys_address using +value+ and +op+.
667
+
668
+ Return the original (unmodified) read value.
669
+
670
+ All access checks/alignment checks/etc. should be done before calling this function;
671
+ it's assumed the RMW is OK to proceed.
672
+ }
673
+ }
674
+
675
+ builtin function atomic_read_modify_write_16 {
676
+ returns Bits<16>
677
+ arguments
678
+ Bits<PHYS_ADDR_WIDTH> phys_addr,
679
+ Bits<16> value,
680
+ AmoOperation op
681
+ description {
682
+ Atomically read-modify-write 16-bits starting at phys_address using +value+ and +op+.
683
+
684
+ Return the original (unmodified) read value.
685
+
686
+ All access checks/alignment checks/etc. should be done before calling this function;
687
+ it's assumed the RMW is OK to proceed.
688
+ }
689
+ }
690
+
659
691
  builtin function atomic_read_modify_write_32 {
660
692
  returns Bits<32>
661
693
  arguments
@@ -687,3 +719,22 @@ builtin function atomic_read_modify_write_64 {
687
719
  it's assumed the RMW is OK to proceed.
688
720
  }
689
721
  }
722
+ builtin function read_seed {
723
+ returns Bits<32>
724
+ description {
725
+ Poll the implementation's entropy source and return the 32-bit seed value.
726
+ Bits 31:30 hold the OPST status and bits 15:0 hold the entropy, which is
727
+ only meaningful when OPST is ES16. Each poll returns unique randomness,
728
+ even if its numerical value happens to match a previous poll.
729
+ A single call represents one complete poll, so the status and the entropy
730
+ it returns describe the same state of the source.
731
+ }
732
+ }
733
+ builtin function write_seed {
734
+ description {
735
+ Signal a write to the seed CSR.
736
+ The written value is ignored; the write exists to signal polling and
737
+ flushing, so an implementation may use this to advance the state of its
738
+ entropy source.
739
+ }
740
+ }