udb 0.1.14 → 0.1.16

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 (343) hide show
  1. checksums.yaml +4 -4
  2. data/.data/cfgs/example_rv64_with_overlay.yaml +6 -6
  3. data/.data/cfgs/mc100-32-full-example.yaml +3 -2
  4. data/.data/cfgs/profile/RVA20S64.yaml +2 -0
  5. data/.data/cfgs/profile/RVA20U64.yaml +2 -0
  6. data/.data/cfgs/profile/RVA22S64.yaml +2 -0
  7. data/.data/cfgs/profile/RVA22U64.yaml +2 -0
  8. data/.data/cfgs/profile/RVA23S64.yaml +2 -0
  9. data/.data/cfgs/profile/RVA23U64.yaml +2 -0
  10. data/.data/cfgs/profile/RVB23S64.yaml +2 -0
  11. data/.data/cfgs/profile/RVB23U64.yaml +2 -0
  12. data/.data/cfgs/qc_iu.yaml +3 -2
  13. data/.data/cfgs/rv32-riscv-tests.yaml +5 -4
  14. data/.data/cfgs/rv32-vector.yaml +5 -4
  15. data/.data/cfgs/rv64-riscv-tests.yaml +5 -4
  16. data/.data/cfgs/rv64-vector.yaml +5 -4
  17. data/.data/spec/schemas/README.adoc +3 -0
  18. data/.data/spec/schemas/schema_defs.json +3 -3
  19. data/.data/spec/std/isa/csr/H/hcounteren.layout +3 -3
  20. data/.data/spec/std/isa/csr/H/hcounteren.yaml +31 -31
  21. data/.data/spec/std/isa/csr/H/henvcfg.yaml +1 -1
  22. data/.data/spec/std/isa/csr/H/htimedeltah.yaml +1 -1
  23. data/.data/spec/std/isa/csr/H/htinst.yaml +3 -3
  24. data/.data/spec/std/isa/csr/H/htval.yaml +3 -3
  25. data/.data/spec/std/isa/csr/H/mtinst.yaml +1 -1
  26. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +1 -1
  27. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +1 -1
  28. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +1 -1
  29. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +1 -1
  30. data/.data/spec/std/isa/csr/Smctr/vsctrctl.yaml +1 -1
  31. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +1 -1
  32. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +29 -29
  33. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -4
  34. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +1 -1
  35. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -4
  36. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +1 -1
  37. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -4
  38. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +1 -1
  39. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -4
  40. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +1 -1
  41. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -4
  42. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +1 -1
  43. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -4
  44. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +1 -1
  45. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -4
  46. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +1 -1
  47. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -4
  48. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +1 -1
  49. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -4
  50. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +1 -1
  51. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -4
  52. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +1 -1
  53. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -4
  54. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +1 -1
  55. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -4
  56. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +1 -1
  57. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -4
  58. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +1 -1
  59. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -4
  60. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +1 -1
  61. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -4
  62. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +1 -1
  63. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -4
  64. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +1 -1
  65. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -4
  66. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +1 -1
  67. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -4
  68. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +1 -1
  69. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -4
  70. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +1 -1
  71. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -4
  72. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +1 -1
  73. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -4
  74. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -4
  75. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +1 -1
  76. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -4
  77. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +1 -1
  78. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +1 -1
  79. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -4
  80. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +1 -1
  81. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -4
  82. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +1 -1
  83. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -4
  84. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +1 -1
  85. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -4
  86. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +1 -1
  87. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -4
  88. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +1 -1
  89. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -4
  90. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +1 -1
  91. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -4
  92. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +1 -1
  93. data/.data/spec/std/isa/csr/hstateen0h.yaml +1 -1
  94. data/.data/spec/std/isa/csr/hstateen1h.yaml +1 -1
  95. data/.data/spec/std/isa/csr/hstateen2h.yaml +1 -1
  96. data/.data/spec/std/isa/csr/hstateen3h.yaml +1 -1
  97. data/.data/spec/std/isa/csr/hstatus.yaml +1 -1
  98. data/.data/spec/std/isa/csr/instreth.yaml +1 -3
  99. data/.data/spec/std/isa/csr/mcycle.yaml +6 -6
  100. data/.data/spec/std/isa/csr/minstret.yaml +3 -3
  101. data/.data/spec/std/isa/csr/minstreth.yaml +2 -2
  102. data/.data/spec/std/isa/csr/mstatus.yaml +14 -20
  103. data/.data/spec/std/isa/csr/mstatush.yaml +1 -1
  104. data/.data/spec/std/isa/csr/mtvec.yaml +16 -57
  105. data/.data/spec/std/isa/csr/senvcfg.yaml +1 -1
  106. data/.data/spec/std/isa/csr/sepc.yaml +4 -3
  107. data/.data/spec/std/isa/csr/sie.yaml +30 -4
  108. data/.data/spec/std/isa/csr/sip.yaml +17 -3
  109. data/.data/spec/std/isa/csr/sscratch.yaml +3 -2
  110. data/.data/spec/std/isa/csr/stval.yaml +3 -2
  111. data/.data/spec/std/isa/csr/stvec.yaml +14 -14
  112. data/.data/spec/std/isa/csr/time.yaml +1 -1
  113. data/.data/spec/std/isa/csr/timeh.yaml +1 -1
  114. data/.data/spec/std/isa/csr/vsepc.yaml +6 -5
  115. data/.data/spec/std/isa/csr/vstval.yaml +1 -1
  116. data/.data/spec/std/isa/csr/vstvec.yaml +17 -17
  117. data/.data/spec/std/isa/ext/M.yaml +4 -0
  118. data/.data/spec/std/isa/ext/Q.yaml +1 -1
  119. data/.data/spec/std/isa/ext/Shgatpa.yaml +1 -0
  120. data/.data/spec/std/isa/ext/Shlcofideleg.yaml +24 -0
  121. data/.data/spec/std/isa/ext/Shvstvecd.yaml +2 -2
  122. data/.data/spec/std/isa/ext/Sspm.yaml +5 -0
  123. data/.data/spec/std/isa/ext/Sstvecd.yaml +2 -2
  124. data/.data/spec/std/isa/ext/Sstvecv.yaml +2 -2
  125. data/.data/spec/std/isa/ext/Supm.yaml +17 -0
  126. data/.data/spec/std/isa/ext/Zcb.yaml +3 -0
  127. data/.data/spec/std/isa/ext/Zfbfmin.yaml +3 -5
  128. data/.data/spec/std/isa/ext/Zibi.yaml +29 -0
  129. data/.data/spec/std/isa/ext/Ziccid.yaml +29 -0
  130. data/.data/spec/std/isa/ext/Zicfilp.yaml +5 -1
  131. data/.data/spec/std/isa/ext/Zicfiss.yaml +20 -1
  132. data/.data/spec/std/isa/ext/Zihpm.yaml +3 -0
  133. data/.data/spec/std/isa/ext/Zilx.yaml +58 -0
  134. data/.data/spec/std/isa/ext/Zkt.yaml +33 -1
  135. data/.data/spec/std/isa/ext/Zvabd.yaml +21 -0
  136. data/.data/spec/std/isa/ext/Zvbc.yaml +3 -0
  137. data/.data/spec/std/isa/ext/Zvkb.yaml +3 -0
  138. data/.data/spec/std/isa/ext/Zvkg.yaml +3 -0
  139. data/.data/spec/std/isa/ext/Zvkned.yaml +3 -0
  140. data/.data/spec/std/isa/ext/Zvknha.yaml +3 -0
  141. data/.data/spec/std/isa/ext/Zvknhb.yaml +4 -2
  142. data/.data/spec/std/isa/ext/Zvksed.yaml +3 -0
  143. data/.data/spec/std/isa/ext/Zvksh.yaml +3 -0
  144. data/.data/spec/std/isa/ext/Zvkt.yaml +3 -0
  145. data/.data/spec/std/isa/inst/B/roriw.yaml +1 -1
  146. data/.data/spec/std/isa/inst/B/rorw.yaml +1 -1
  147. data/.data/spec/std/isa/inst/C/c.add.yaml +1 -0
  148. data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
  149. data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
  150. data/.data/spec/std/isa/inst/C/c.addw.yaml +1 -0
  151. data/.data/spec/std/isa/inst/C/c.and.yaml +1 -0
  152. data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
  153. data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
  154. data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -0
  155. data/.data/spec/std/isa/inst/C/c.nop.yaml +13 -2
  156. data/.data/spec/std/isa/inst/C/c.or.yaml +1 -0
  157. data/.data/spec/std/isa/inst/C/c.slli.yaml +1 -0
  158. data/.data/spec/std/isa/inst/C/c.srai.yaml +1 -0
  159. data/.data/spec/std/isa/inst/C/c.srli.yaml +1 -0
  160. data/.data/spec/std/isa/inst/C/c.sub.yaml +1 -0
  161. data/.data/spec/std/isa/inst/C/c.subw.yaml +1 -0
  162. data/.data/spec/std/isa/inst/C/c.xor.yaml +1 -0
  163. data/.data/spec/std/isa/inst/D/fld.yaml +1 -0
  164. data/.data/spec/std/isa/inst/D/fsd.yaml +1 -0
  165. data/.data/spec/std/isa/inst/F/fadd.s.yaml +1 -1
  166. data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
  167. data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
  168. data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
  169. data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
  170. data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
  171. data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
  172. data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
  173. data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
  174. data/.data/spec/std/isa/inst/F/feq.s.yaml +1 -1
  175. data/.data/spec/std/isa/inst/F/fle.s.yaml +1 -1
  176. data/.data/spec/std/isa/inst/F/flt.s.yaml +1 -1
  177. data/.data/spec/std/isa/inst/F/flw.yaml +2 -1
  178. data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
  179. data/.data/spec/std/isa/inst/F/fmax.s.yaml +1 -1
  180. data/.data/spec/std/isa/inst/F/fmin.s.yaml +1 -1
  181. data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
  182. data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
  183. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +4 -1
  184. data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +4 -1
  185. data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +1 -1
  186. data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
  187. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +1 -1
  188. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +1 -1
  189. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +1 -1
  190. data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
  191. data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
  192. data/.data/spec/std/isa/inst/F/fsw.yaml +2 -1
  193. data/.data/spec/std/isa/inst/I/sd.yaml +1 -1
  194. data/.data/spec/std/isa/inst/M/mul.yaml +1 -3
  195. data/.data/spec/std/isa/inst/M/mulh.yaml +1 -3
  196. data/.data/spec/std/isa/inst/M/mulhsu.yaml +1 -3
  197. data/.data/spec/std/isa/inst/M/mulhu.yaml +1 -3
  198. data/.data/spec/std/isa/inst/M/mulw.yaml +1 -3
  199. data/.data/spec/std/isa/inst/Q/fadd.q.yaml +2 -2
  200. data/.data/spec/std/isa/inst/Q/fclass.q.yaml +5 -5
  201. data/.data/spec/std/isa/inst/Q/flq.yaml +1 -0
  202. data/.data/spec/std/isa/inst/Q/fsq.yaml +1 -0
  203. data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +1 -0
  204. data/.data/spec/std/isa/inst/Zbb/ctzw.yaml +6 -1
  205. data/.data/spec/std/isa/inst/Zcb/c.mul.yaml +1 -0
  206. data/.data/spec/std/isa/inst/Zcb/c.not.yaml +1 -0
  207. data/.data/spec/std/isa/inst/Zcb/c.zext.b.yaml +2 -7
  208. data/.data/spec/std/isa/inst/Zcb/c.zext.w.yaml +1 -1
  209. data/.data/spec/std/isa/inst/Zcmop/c.mop.1.yaml +2 -0
  210. data/.data/spec/std/isa/inst/Zcmop/c.mop.5.yaml +2 -0
  211. data/.data/spec/std/isa/inst/Zcmop/c.mop.N.layout +7 -0
  212. data/.data/spec/std/isa/inst/{Q → Zfa}/fleq.q.yaml +0 -1
  213. data/.data/spec/std/isa/inst/{F → Zfa}/fleq.s.yaml +1 -1
  214. data/.data/spec/std/isa/inst/{Q → Zfa}/fli.q.yaml +1 -1
  215. data/.data/spec/std/isa/inst/Zfa/fli.s.yaml +1 -1
  216. data/.data/spec/std/isa/inst/{Q → Zfa}/fltq.q.yaml +2 -3
  217. data/.data/spec/std/isa/inst/{F → Zfa}/fltq.s.yaml +1 -1
  218. data/.data/spec/std/isa/inst/{Q → Zfa}/fmaxm.q.yaml +0 -1
  219. data/.data/spec/std/isa/inst/Zfa/fmaxm.s.yaml +1 -1
  220. data/.data/spec/std/isa/inst/{Q → Zfa}/fminm.q.yaml +0 -1
  221. data/.data/spec/std/isa/inst/Zfa/fminm.s.yaml +1 -1
  222. data/.data/spec/std/isa/inst/{Q → Zfa}/fmvp.q.x.yaml +1 -1
  223. data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
  224. data/.data/spec/std/isa/inst/Zfa/froundnx.s.yaml +1 -1
  225. data/.data/spec/std/isa/inst/Zfh/flh.yaml +5 -2
  226. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +3 -1
  227. data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +3 -1
  228. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +4 -1
  229. data/.data/spec/std/isa/inst/Zibi/beqi.yaml +45 -0
  230. data/.data/spec/std/isa/inst/Zibi/bnei.yaml +45 -0
  231. data/.data/spec/std/isa/inst/Zicbom/cbo.inval.yaml +1 -1
  232. data/.data/spec/std/isa/inst/Zicfiss/c.sspopchk.yaml +30 -0
  233. data/.data/spec/std/isa/inst/Zicfiss/c.sspush.yaml +29 -0
  234. data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.d.yaml +1 -1
  235. data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml +1 -1
  236. data/.data/spec/std/isa/inst/Zicfiss/sspopchk.yaml +63 -0
  237. data/.data/spec/std/isa/inst/Zicfiss/sspush.yaml +63 -0
  238. data/.data/spec/std/isa/inst/Zicond/czero.eqz.yaml +1 -1
  239. data/.data/spec/std/isa/inst/Zicond/czero.nez.yaml +1 -1
  240. data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +12 -0
  241. data/.data/spec/std/isa/inst/Zilx/lxd.yaml +38 -0
  242. data/.data/spec/std/isa/inst/Zilx/lxh.yaml +35 -0
  243. data/.data/spec/std/isa/inst/Zilx/lxhu.yaml +35 -0
  244. data/.data/spec/std/isa/inst/Zilx/lxsb.yaml +40 -0
  245. data/.data/spec/std/isa/inst/Zilx/lxsbu.yaml +40 -0
  246. data/.data/spec/std/isa/inst/Zilx/lxsd.yaml +38 -0
  247. data/.data/spec/std/isa/inst/Zilx/lxsh.yaml +35 -0
  248. data/.data/spec/std/isa/inst/Zilx/lxshu.yaml +35 -0
  249. data/.data/spec/std/isa/inst/Zilx/lxsuwb.yaml +40 -0
  250. data/.data/spec/std/isa/inst/Zilx/lxsuwbu.yaml +40 -0
  251. data/.data/spec/std/isa/inst/Zilx/lxsuwd.yaml +39 -0
  252. data/.data/spec/std/isa/inst/Zilx/lxsuwh.yaml +40 -0
  253. data/.data/spec/std/isa/inst/Zilx/lxsuwhu.yaml +40 -0
  254. data/.data/spec/std/isa/inst/Zilx/lxsuww.yaml +40 -0
  255. data/.data/spec/std/isa/inst/Zilx/lxsuwwu.yaml +40 -0
  256. data/.data/spec/std/isa/inst/Zilx/lxsw.yaml +35 -0
  257. data/.data/spec/std/isa/inst/Zilx/lxswu.yaml +39 -0
  258. data/.data/spec/std/isa/inst/Zilx/lxw.yaml +35 -0
  259. data/.data/spec/std/isa/inst/Zilx/lxwu.yaml +39 -0
  260. data/.data/spec/std/isa/inst/Zimop/mop.r.28.yaml +1 -2
  261. data/.data/spec/std/isa/inst/Zimop/mop.r.N.layout +1 -2
  262. data/.data/spec/std/isa/inst/Zimop/mop.rr.7.yaml +1 -2
  263. data/.data/spec/std/isa/inst/Zimop/mop.rr.N.layout +1 -2
  264. data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +67 -0
  265. data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +67 -0
  266. data/.data/spec/std/isa/inst/Zvabd/vabs.v.yaml +61 -0
  267. data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +72 -0
  268. data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +72 -0
  269. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vandn.vv.yaml +1 -1
  270. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vandn.vx.yaml +1 -1
  271. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vbrev8.v.yaml +1 -1
  272. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrev8.v.yaml +1 -1
  273. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrol.vv.yaml +1 -1
  274. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrol.vx.yaml +1 -1
  275. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vi.yaml +1 -1
  276. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vv.yaml +1 -1
  277. data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vx.yaml +1 -1
  278. data/.data/spec/std/isa/isa/fp.idl +42 -18
  279. data/.data/spec/std/isa/isa/globals.isa +1 -1
  280. data/.data/spec/std/isa/isa/util.idl +3 -3
  281. data/.data/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml +70 -6
  282. data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +9 -0
  283. data/.data/spec/std/isa/param/ELEN.yaml +27 -5
  284. data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +1 -1
  285. data/.data/spec/std/isa/param/HCOUNTENABLE_EN.yaml +13 -0
  286. data/.data/spec/std/isa/param/HPM_COUNTER_EN.yaml +13 -3
  287. data/.data/spec/std/isa/param/HPM_EVENTS.yaml +0 -3
  288. data/.data/spec/std/isa/param/MCOUNTENABLE_EN.yaml +8 -0
  289. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +71 -65
  290. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +71 -65
  291. data/.data/spec/std/isa/param/MUTABLE_MISA_H.yaml +1 -1
  292. data/.data/spec/std/isa/param/MUTABLE_MISA_S.yaml +1 -1
  293. data/.data/spec/std/isa/param/STVAL_WIDTH.yaml +3 -2
  294. data/.data/spec/std/isa/param/STVEC_BASE_ALIGNMENT_VECTORED.yaml +100 -0
  295. data/.data/spec/std/isa/param/STVEC_MODES.yaml +31 -0
  296. data/.data/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml +1 -1
  297. data/.data/spec/std/isa/param/SXLEN.yaml +2 -2
  298. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml +1 -1
  299. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml +1 -1
  300. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml +1 -1
  301. data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml +1 -1
  302. data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml +1 -1
  303. data/.data/spec/std/isa/param/UXLEN.yaml +1 -1
  304. data/.data/spec/std/isa/param/VLEN.yaml +16 -7
  305. data/.data/spec/std/isa/param/VSTVEC_MODES.yaml +31 -0
  306. data/lib/udb/Z3_VERSION +1 -1
  307. data/lib/udb/config.rb +1 -1
  308. data/lib/udb/obj/csr.rb +1 -1
  309. data/lib/udb/obj/csr_field.rb +1 -1
  310. data/lib/udb/obj/extension.rb +1 -1
  311. data/lib/udb/version.rb +1 -1
  312. data/lib/udb/version_spec.rb +1 -1
  313. data/lib/udb/z3.rb +29 -7
  314. metadata +80 -50
  315. data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml +0 -25
  316. data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml +0 -25
  317. data/.data/spec/std/isa/inst/Zicfiss/sspush.x1.yaml +0 -25
  318. data/.data/spec/std/isa/inst/Zicfiss/sspush.x5.yaml +0 -25
  319. data/.data/spec/std/isa/param/STVEC_MODE_DIRECT.yaml +0 -21
  320. data/.data/spec/std/isa/param/STVEC_MODE_VECTORED.yaml +0 -19
  321. data/.data/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml +0 -21
  322. data/.data/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml +0 -21
  323. /data/.data/spec/std/isa/inst/{Smdbltrp → Smctr}/sctrclr.yaml +0 -0
  324. /data/.data/spec/std/isa/inst/{D → Zfa}/fcvtmod.w.d.yaml +0 -0
  325. /data/.data/spec/std/isa/inst/{D → Zfa}/fleq.d.yaml +0 -0
  326. /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fleq.h.yaml +0 -0
  327. /data/.data/spec/std/isa/inst/{D → Zfa}/fli.d.yaml +0 -0
  328. /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fli.h.yaml +0 -0
  329. /data/.data/spec/std/isa/inst/{D → Zfa}/fltq.d.yaml +0 -0
  330. /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fltq.h.yaml +0 -0
  331. /data/.data/spec/std/isa/inst/{D → Zfa}/fmaxm.d.yaml +0 -0
  332. /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fmaxm.h.yaml +0 -0
  333. /data/.data/spec/std/isa/inst/{D → Zfa}/fminm.d.yaml +0 -0
  334. /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fminm.h.yaml +0 -0
  335. /data/.data/spec/std/isa/inst/{D → Zfa}/fmvh.x.d.yaml +0 -0
  336. /data/.data/spec/std/isa/inst/{Q → Zfa}/fmvh.x.q.yaml +0 -0
  337. /data/.data/spec/std/isa/inst/{D → Zfa}/fmvp.d.x.yaml +0 -0
  338. /data/.data/spec/std/isa/inst/{D → Zfa}/fround.d.yaml +0 -0
  339. /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fround.h.yaml +0 -0
  340. /data/.data/spec/std/isa/inst/{Q → Zfa}/fround.q.yaml +0 -0
  341. /data/.data/spec/std/isa/inst/{D → Zfa}/froundnx.d.yaml +0 -0
  342. /data/.data/spec/std/isa/inst/{Zfh → Zfa}/froundnx.h.yaml +0 -0
  343. /data/.data/spec/std/isa/inst/{Q → Zfa}/froundnx.q.yaml +0 -0
@@ -0,0 +1,40 @@
1
+ # Copyright (c) RISC-V International
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: lxsbu
9
+ long_name: Load scaled indexed byte unsigned
10
+ description: |
11
+ Load 8 bits of data into register `xd` from the effective address
12
+ `X[xs2] + X[xs1]`, where `xs2` is the base and `xs1` is the index.
13
+ Zero extend the result to XLEN.
14
+
15
+ The `lxbu` mnemonic is an assembler pseudoinstruction for `lxsbu`.
16
+ definedBy:
17
+ extension:
18
+ name: Zilx
19
+ assembly: xd, (xs2), xs1
20
+ encoding:
21
+ match: 1101000----------100-----0101111
22
+ variables:
23
+ - name: xs2
24
+ location: 24-20
25
+ - name: xs1
26
+ location: 19-15
27
+ - name: xd
28
+ location: 11-7
29
+ access:
30
+ s: always
31
+ u: always
32
+ vs: always
33
+ vu: always
34
+ pseudoinstructions:
35
+ - when: "true"
36
+ to: lxbu xd, (xs2), xs1
37
+ operation(): |
38
+ XReg virtual_address = X[xs2] + X[xs1];
39
+
40
+ X[xd] = read_memory(8, virtual_address, $encoding);
@@ -0,0 +1,38 @@
1
+ # Copyright (c) RISC-V International
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: lxsd
9
+ long_name: Load scaled indexed doubleword
10
+ description: |
11
+ Load 64 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (X[xs1] << 3)`, where `xs2` is the base and `xs1` is the index.
13
+
14
+ This instruction is defined only for RV64.
15
+ definedBy:
16
+ allOf:
17
+ - xlen: 64
18
+ - extension:
19
+ name: Zilx
20
+ assembly: xd, (xs2), xs1
21
+ encoding:
22
+ match: 1101000----------011-----0101111
23
+ variables:
24
+ - name: xs2
25
+ location: 24-20
26
+ - name: xs1
27
+ location: 19-15
28
+ - name: xd
29
+ location: 11-7
30
+ access:
31
+ s: always
32
+ u: always
33
+ vs: always
34
+ vu: always
35
+ operation(): |
36
+ XReg virtual_address = X[xs2] + (X[xs1] `<< 3);
37
+
38
+ X[xd] = read_memory(64, virtual_address, $encoding);
@@ -0,0 +1,35 @@
1
+ # Copyright (c) RISC-V International
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: lxsh
9
+ long_name: Load scaled indexed halfword
10
+ description: |
11
+ Load 16 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (X[xs1] << 1)`, where `xs2` is the base and `xs1` is the index.
13
+ Sign extend the result to XLEN.
14
+ definedBy:
15
+ extension:
16
+ name: Zilx
17
+ assembly: xd, (xs2), xs1
18
+ encoding:
19
+ match: 1101000----------001-----0101111
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
27
+ access:
28
+ s: always
29
+ u: always
30
+ vs: always
31
+ vu: always
32
+ operation(): |
33
+ XReg virtual_address = X[xs2] + (X[xs1] `<< 1);
34
+
35
+ X[xd] = sext(read_memory(16, virtual_address, $encoding), 16);
@@ -0,0 +1,35 @@
1
+ # Copyright (c) RISC-V International
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: lxshu
9
+ long_name: Load scaled indexed halfword unsigned
10
+ description: |
11
+ Load 16 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (X[xs1] << 1)`, where `xs2` is the base and `xs1` is the index.
13
+ Zero extend the result to XLEN.
14
+ definedBy:
15
+ extension:
16
+ name: Zilx
17
+ assembly: xd, (xs2), xs1
18
+ encoding:
19
+ match: 1101000----------101-----0101111
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
27
+ access:
28
+ s: always
29
+ u: always
30
+ vs: always
31
+ vu: always
32
+ operation(): |
33
+ XReg virtual_address = X[xs2] + (X[xs1] `<< 1);
34
+
35
+ X[xd] = read_memory(16, virtual_address, $encoding);
@@ -0,0 +1,40 @@
1
+ # Copyright (c) RISC-V International
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: lxsuwb
9
+ long_name: Load scaled indexed byte with unsigned word index
10
+ description: |
11
+ Load 8 bits of data into register `xd` from the effective address
12
+ `X[xs2] + zext32(X[xs1])`, where `xs2` is the base and `xs1` is the index.
13
+ The index is zero-extended from `X[xs1][31:0]` before forming the address.
14
+ Sign extend the loaded byte to 64 bits.
15
+
16
+ This instruction is defined only for RV64.
17
+ definedBy:
18
+ allOf:
19
+ - xlen: 64
20
+ - extension:
21
+ name: Zilx
22
+ assembly: xd, (xs2), xs1
23
+ encoding:
24
+ match: 1111000----------000-----0101111
25
+ variables:
26
+ - name: xs2
27
+ location: 24-20
28
+ - name: xs1
29
+ location: 19-15
30
+ - name: xd
31
+ location: 11-7
32
+ access:
33
+ s: always
34
+ u: always
35
+ vs: always
36
+ vu: always
37
+ operation(): |
38
+ XReg virtual_address = X[xs2] + X[xs1][31:0];
39
+
40
+ X[xd] = sext(read_memory(8, virtual_address, $encoding), 8);
@@ -0,0 +1,40 @@
1
+ # Copyright (c) RISC-V International
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: lxsuwbu
9
+ long_name: Load scaled indexed byte unsigned with unsigned word index
10
+ description: |
11
+ Load 8 bits of data into register `xd` from the effective address
12
+ `X[xs2] + zext32(X[xs1])`, where `xs2` is the base and `xs1` is the index.
13
+ The index is zero-extended from `X[xs1][31:0]` before forming the address.
14
+ Zero extend the loaded byte to 64 bits.
15
+
16
+ This instruction is defined only for RV64.
17
+ definedBy:
18
+ allOf:
19
+ - xlen: 64
20
+ - extension:
21
+ name: Zilx
22
+ assembly: xd, (xs2), xs1
23
+ encoding:
24
+ match: 1111000----------100-----0101111
25
+ variables:
26
+ - name: xs2
27
+ location: 24-20
28
+ - name: xs1
29
+ location: 19-15
30
+ - name: xd
31
+ location: 11-7
32
+ access:
33
+ s: always
34
+ u: always
35
+ vs: always
36
+ vu: always
37
+ operation(): |
38
+ XReg virtual_address = X[xs2] + X[xs1][31:0];
39
+
40
+ X[xd] = read_memory(8, virtual_address, $encoding);
@@ -0,0 +1,39 @@
1
+ # Copyright (c) RISC-V International
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: lxsuwd
9
+ long_name: Load scaled indexed doubleword with unsigned word index
10
+ description: |
11
+ Load 64 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (zext32(X[xs1]) << 3)`, where `xs2` is the base and `xs1` is the
13
+ index. The index is zero-extended from `X[xs1][31:0]` before scaling.
14
+
15
+ This instruction is defined only for RV64.
16
+ definedBy:
17
+ allOf:
18
+ - xlen: 64
19
+ - extension:
20
+ name: Zilx
21
+ assembly: xd, (xs2), xs1
22
+ encoding:
23
+ match: 1111000----------011-----0101111
24
+ variables:
25
+ - name: xs2
26
+ location: 24-20
27
+ - name: xs1
28
+ location: 19-15
29
+ - name: xd
30
+ location: 11-7
31
+ access:
32
+ s: always
33
+ u: always
34
+ vs: always
35
+ vu: always
36
+ operation(): |
37
+ XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 3);
38
+
39
+ X[xd] = read_memory(64, virtual_address, $encoding);
@@ -0,0 +1,40 @@
1
+ # Copyright (c) RISC-V International
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: lxsuwh
9
+ long_name: Load scaled indexed halfword with unsigned word index
10
+ description: |
11
+ Load 16 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (zext32(X[xs1]) << 1)`, where `xs2` is the base and `xs1` is the
13
+ index. The index is zero-extended from `X[xs1][31:0]` before scaling.
14
+ Sign extend the loaded halfword to 64 bits.
15
+
16
+ This instruction is defined only for RV64.
17
+ definedBy:
18
+ allOf:
19
+ - xlen: 64
20
+ - extension:
21
+ name: Zilx
22
+ assembly: xd, (xs2), xs1
23
+ encoding:
24
+ match: 1111000----------001-----0101111
25
+ variables:
26
+ - name: xs2
27
+ location: 24-20
28
+ - name: xs1
29
+ location: 19-15
30
+ - name: xd
31
+ location: 11-7
32
+ access:
33
+ s: always
34
+ u: always
35
+ vs: always
36
+ vu: always
37
+ operation(): |
38
+ XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 1);
39
+
40
+ X[xd] = sext(read_memory(16, virtual_address, $encoding), 16);
@@ -0,0 +1,40 @@
1
+ # Copyright (c) RISC-V International
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: lxsuwhu
9
+ long_name: Load scaled indexed halfword unsigned with unsigned word index
10
+ description: |
11
+ Load 16 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (zext32(X[xs1]) << 1)`, where `xs2` is the base and `xs1` is the
13
+ index. The index is zero-extended from `X[xs1][31:0]` before scaling.
14
+ Zero extend the loaded halfword to 64 bits.
15
+
16
+ This instruction is defined only for RV64.
17
+ definedBy:
18
+ allOf:
19
+ - xlen: 64
20
+ - extension:
21
+ name: Zilx
22
+ assembly: xd, (xs2), xs1
23
+ encoding:
24
+ match: 1111000----------101-----0101111
25
+ variables:
26
+ - name: xs2
27
+ location: 24-20
28
+ - name: xs1
29
+ location: 19-15
30
+ - name: xd
31
+ location: 11-7
32
+ access:
33
+ s: always
34
+ u: always
35
+ vs: always
36
+ vu: always
37
+ operation(): |
38
+ XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 1);
39
+
40
+ X[xd] = read_memory(16, virtual_address, $encoding);
@@ -0,0 +1,40 @@
1
+ # Copyright (c) RISC-V International
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: lxsuww
9
+ long_name: Load scaled indexed word with unsigned word index
10
+ description: |
11
+ Load 32 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (zext32(X[xs1]) << 2)`, where `xs2` is the base and `xs1` is the
13
+ index. The index is zero-extended from `X[xs1][31:0]` before scaling.
14
+ Sign extend the loaded word to 64 bits.
15
+
16
+ This instruction is defined only for RV64.
17
+ definedBy:
18
+ allOf:
19
+ - xlen: 64
20
+ - extension:
21
+ name: Zilx
22
+ assembly: xd, (xs2), xs1
23
+ encoding:
24
+ match: 1111000----------010-----0101111
25
+ variables:
26
+ - name: xs2
27
+ location: 24-20
28
+ - name: xs1
29
+ location: 19-15
30
+ - name: xd
31
+ location: 11-7
32
+ access:
33
+ s: always
34
+ u: always
35
+ vs: always
36
+ vu: always
37
+ operation(): |
38
+ XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 2);
39
+
40
+ X[xd] = sext(read_memory(32, virtual_address, $encoding), 32);
@@ -0,0 +1,40 @@
1
+ # Copyright (c) RISC-V International
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: lxsuwwu
9
+ long_name: Load scaled indexed word unsigned with unsigned word index
10
+ description: |
11
+ Load 32 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (zext32(X[xs1]) << 2)`, where `xs2` is the base and `xs1` is the
13
+ index. The index is zero-extended from `X[xs1][31:0]` before scaling.
14
+ Zero extend the loaded word to 64 bits.
15
+
16
+ This instruction is defined only for RV64.
17
+ definedBy:
18
+ allOf:
19
+ - xlen: 64
20
+ - extension:
21
+ name: Zilx
22
+ assembly: xd, (xs2), xs1
23
+ encoding:
24
+ match: 1111000----------110-----0101111
25
+ variables:
26
+ - name: xs2
27
+ location: 24-20
28
+ - name: xs1
29
+ location: 19-15
30
+ - name: xd
31
+ location: 11-7
32
+ access:
33
+ s: always
34
+ u: always
35
+ vs: always
36
+ vu: always
37
+ operation(): |
38
+ XReg virtual_address = X[xs2] + (X[xs1][31:0] `<< 2);
39
+
40
+ X[xd] = read_memory(32, virtual_address, $encoding);
@@ -0,0 +1,35 @@
1
+ # Copyright (c) RISC-V International
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: lxsw
9
+ long_name: Load scaled indexed word
10
+ description: |
11
+ Load 32 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (X[xs1] << 2)`, where `xs2` is the base and `xs1` is the index.
13
+ On RV64, the loaded word is sign-extended to 64 bits.
14
+ definedBy:
15
+ extension:
16
+ name: Zilx
17
+ assembly: xd, (xs2), xs1
18
+ encoding:
19
+ match: 1101000----------010-----0101111
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
27
+ access:
28
+ s: always
29
+ u: always
30
+ vs: always
31
+ vu: always
32
+ operation(): |
33
+ XReg virtual_address = X[xs2] + (X[xs1] `<< 2);
34
+
35
+ X[xd] = sext(read_memory(32, virtual_address, $encoding), 32);
@@ -0,0 +1,39 @@
1
+ # Copyright (c) RISC-V International
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: lxswu
9
+ long_name: Load scaled indexed word unsigned
10
+ description: |
11
+ Load 32 bits of data into register `xd` from the effective address
12
+ `X[xs2] + (X[xs1] << 2)`, where `xs2` is the base and `xs1` is the index.
13
+ Zero extend the result to 64 bits.
14
+
15
+ This instruction is defined only for RV64.
16
+ definedBy:
17
+ allOf:
18
+ - xlen: 64
19
+ - extension:
20
+ name: Zilx
21
+ assembly: xd, (xs2), xs1
22
+ encoding:
23
+ match: 1101000----------110-----0101111
24
+ variables:
25
+ - name: xs2
26
+ location: 24-20
27
+ - name: xs1
28
+ location: 19-15
29
+ - name: xd
30
+ location: 11-7
31
+ access:
32
+ s: always
33
+ u: always
34
+ vs: always
35
+ vu: always
36
+ operation(): |
37
+ XReg virtual_address = X[xs2] + (X[xs1] `<< 2);
38
+
39
+ X[xd] = read_memory(32, virtual_address, $encoding);
@@ -0,0 +1,35 @@
1
+ # Copyright (c) RISC-V International
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: lxw
9
+ long_name: Load indexed word
10
+ description: |
11
+ Load 32 bits of data into register `xd` from the effective address
12
+ `X[xs2] + X[xs1]`, where `xs2` is the base and `xs1` is the index.
13
+ On RV64, the loaded word is sign-extended to 64 bits.
14
+ definedBy:
15
+ extension:
16
+ name: Zilx
17
+ assembly: xd, (xs2), xs1
18
+ encoding:
19
+ match: 1001000----------010-----0101111
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
27
+ access:
28
+ s: always
29
+ u: always
30
+ vs: always
31
+ vu: always
32
+ operation(): |
33
+ XReg virtual_address = X[xs2] + X[xs1];
34
+
35
+ X[xd] = sext(read_memory(32, virtual_address, $encoding), 32);
@@ -0,0 +1,39 @@
1
+ # Copyright (c) RISC-V International
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: lxwu
9
+ long_name: Load indexed word unsigned
10
+ description: |
11
+ Load 32 bits of data into register `xd` from the effective address
12
+ `X[xs2] + X[xs1]`, where `xs2` is the base and `xs1` is the index.
13
+ Zero extend the result to 64 bits.
14
+
15
+ This instruction is defined only for RV64.
16
+ definedBy:
17
+ allOf:
18
+ - xlen: 64
19
+ - extension:
20
+ name: Zilx
21
+ assembly: xd, (xs2), xs1
22
+ encoding:
23
+ match: 1001000----------110-----0101111
24
+ variables:
25
+ - name: xs2
26
+ location: 24-20
27
+ - name: xs1
28
+ location: 19-15
29
+ - name: xd
30
+ location: 11-7
31
+ access:
32
+ s: always
33
+ u: always
34
+ vs: always
35
+ vu: always
36
+ operation(): |
37
+ XReg virtual_address = X[xs2] + X[xs1];
38
+
39
+ X[xd] = read_memory(32, virtual_address, $encoding);
@@ -33,8 +33,7 @@ access:
33
33
  vu: always
34
34
  data_independent_timing: false
35
35
  hints:
36
- - { $ref: inst/Zicfiss/sspopchk.x1.yaml# }
37
- - { $ref: inst/Zicfiss/sspopchk.x5.yaml# }
36
+ - { $ref: inst/Zicfiss/sspopchk.yaml# }
38
37
  - { $ref: inst/Zicfiss/ssrdp.yaml# }
39
38
  operation(): |
40
39
  X[xd] = 0;
@@ -50,8 +50,7 @@ access:
50
50
  data_independent_timing: false
51
51
  <% if n == 28 -%>
52
52
  hints:
53
- - { $ref: inst/Zicfiss/sspopchk.x1.yaml# }
54
- - { $ref: inst/Zicfiss/sspopchk.x5.yaml# }
53
+ - { $ref: inst/Zicfiss/sspopchk.yaml# }
55
54
  - { $ref: inst/Zicfiss/ssrdp.yaml# }
56
55
  <% end -%>
57
56
  operation(): |
@@ -36,7 +36,6 @@ access:
36
36
  vu: always
37
37
  data_independent_timing: false
38
38
  hints:
39
- - { $ref: inst/Zicfiss/sspush.x1.yaml# }
40
- - { $ref: inst/Zicfiss/sspush.x5.yaml# }
39
+ - { $ref: inst/Zicfiss/sspush.yaml# }
41
40
  operation(): |
42
41
  X[xd] = 0;
@@ -51,8 +51,7 @@ access:
51
51
  data_independent_timing: false
52
52
  <% if n == 7 -%>
53
53
  hints:
54
- - { $ref: inst/Zicfiss/sspush.x1.yaml# }
55
- - { $ref: inst/Zicfiss/sspush.x5.yaml# }
54
+ - { $ref: inst/Zicfiss/sspush.yaml# }
56
55
  <% end -%>
57
56
  operation(): |
58
57
  X[xd] = 0;