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
@@ -27,6 +27,7 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
+ data_independent_timing: true
30
31
  operation(): |
31
32
  XReg t0 = X[creg2reg(xd)];
32
33
  XReg t1 = X[creg2reg(xs2)];
@@ -36,6 +36,7 @@ access:
36
36
  u: always
37
37
  vs: always
38
38
  vu: always
39
+ data_independent_timing: true
39
40
  operation(): |
40
41
  # shamt is between 0-63
41
42
  X[xd] = X[xd] << shamt;
@@ -37,6 +37,7 @@ access:
37
37
  u: always
38
38
  vs: always
39
39
  vu: always
40
+ data_independent_timing: true
40
41
  operation(): |
41
42
  # shamt is between 0-63
42
43
  X[creg2reg(xd)] = X[creg2reg(xd)] >>> shamt;
@@ -37,6 +37,7 @@ access:
37
37
  u: always
38
38
  vs: always
39
39
  vu: always
40
+ data_independent_timing: true
40
41
  operation(): |
41
42
  # shamt is between 0-63
42
43
  X[creg2reg(xd)] = X[creg2reg(xd)] >> shamt;
@@ -27,6 +27,7 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
+ data_independent_timing: true
30
31
  operation(): |
31
32
  XReg t0 = X[creg2reg(xd)];
32
33
  XReg t1 = X[creg2reg(xs2)];
@@ -29,6 +29,7 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ data_independent_timing: true
32
33
  operation(): |
33
34
  Bits<32> t0 = X[creg2reg(xd)][31:0];
34
35
  Bits<32> t1 = X[creg2reg(xs2)][31:0];
@@ -27,6 +27,7 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
+ data_independent_timing: true
30
31
  operation(): |
31
32
  XReg t0 = X[creg2reg(xd)];
32
33
  XReg t1 = X[creg2reg(xs2)];
@@ -21,6 +21,7 @@ encoding:
21
21
  variables:
22
22
  - name: imm
23
23
  location: 31-20
24
+ sign_extend: true
24
25
  - name: xs1
25
26
  location: 19-15
26
27
  - name: fd
@@ -20,6 +20,7 @@ encoding:
20
20
  variables:
21
21
  - name: imm
22
22
  location: 31-25|11-7
23
+ sign_extend: true
23
24
  - name: fs2
24
25
  location: 24-20
25
26
  - name: xs1
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
  RoundingMode rounding_mode = rm_to_mode(rm, $encoding);
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
  RoundingMode rounding_mode = rm_to_mode(rm, $encoding);
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
  RoundingMode rounding_mode = rm_to_mode(rm, $encoding);
@@ -29,7 +29,7 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
- data_independent_timing: true
32
+ data_independent_timing: false
33
33
  operation(): |
34
34
  check_f_ok($encoding);
35
35
  RoundingMode rounding_mode = rm_to_mode(rm, $encoding);
@@ -37,7 +37,7 @@ access:
37
37
  u: always
38
38
  vs: always
39
39
  vu: always
40
- data_independent_timing: true
40
+ data_independent_timing: false
41
41
  operation(): |
42
42
  check_f_ok($encoding);
43
43
  RoundingMode rounding_mode = rm_to_mode(rm, $encoding);
@@ -56,7 +56,7 @@ access:
56
56
  u: always
57
57
  vs: always
58
58
  vu: always
59
- data_independent_timing: true
59
+ data_independent_timing: false
60
60
  operation(): |
61
61
  check_f_ok($encoding);
62
62
  RoundingMode rounding_mode = rm_to_mode(rm, $encoding);
@@ -55,7 +55,7 @@ access:
55
55
  u: always
56
56
  vs: always
57
57
  vu: always
58
- data_independent_timing: true
58
+ data_independent_timing: false
59
59
  operation(): |
60
60
  check_f_ok($encoding);
61
61
  RoundingMode rounding_mode = rm_to_mode(rm, $encoding);
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
 
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
 
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
 
@@ -20,6 +20,7 @@ encoding:
20
20
  variables:
21
21
  - name: imm
22
22
  location: 31-20
23
+ sign_extend: true
23
24
  - name: xs1
24
25
  location: 19-15
25
26
  - name: fd
@@ -29,7 +30,7 @@ access:
29
30
  u: always
30
31
  vs: always
31
32
  vu: always
32
- data_independent_timing: true
33
+ data_independent_timing: false
33
34
  operation(): |
34
35
  check_f_ok($encoding);
35
36
 
@@ -31,7 +31,7 @@ access:
31
31
  u: always
32
32
  vs: always
33
33
  vu: always
34
- data_independent_timing: true
34
+ data_independent_timing: false
35
35
  operation(): |
36
36
  check_f_ok($encoding);
37
37
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -37,7 +37,7 @@ access:
37
37
  u: always
38
38
  vs: always
39
39
  vu: always
40
- data_independent_timing: true
40
+ data_independent_timing: false
41
41
  operation(): |
42
42
  check_f_ok($encoding);
43
43
 
@@ -37,7 +37,7 @@ access:
37
37
  u: always
38
38
  vs: always
39
39
  vu: always
40
- data_independent_timing: true
40
+ data_independent_timing: false
41
41
  operation(): |
42
42
  check_f_ok($encoding);
43
43
 
@@ -31,7 +31,7 @@ access:
31
31
  u: always
32
32
  vs: always
33
33
  vu: always
34
- data_independent_timing: true
34
+ data_independent_timing: false
35
35
  operation(): |
36
36
  check_f_ok($encoding);
37
37
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  operation(): |
35
35
  check_f_ok($encoding);
36
36
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -27,7 +27,10 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
- data_independent_timing: true
30
+ data_independent_timing: false
31
+ pseudoinstructions:
32
+ - when: "true"
33
+ to: fmv.s.x fd, xs1
31
34
  operation(): |
32
35
  check_f_ok($encoding);
33
36
 
@@ -28,7 +28,10 @@ access:
28
28
  u: always
29
29
  vs: always
30
30
  vu: always
31
- data_independent_timing: true
31
+ data_independent_timing: false
32
+ pseudoinstructions:
33
+ - when: "true"
34
+ to: fmv.x.s xd, fs1
32
35
  operation(): |
33
36
  check_f_ok($encoding);
34
37
 
@@ -32,7 +32,7 @@ access:
32
32
  u: always
33
33
  vs: always
34
34
  vu: always
35
- data_independent_timing: true
35
+ data_independent_timing: false
36
36
  operation(): |
37
37
  check_f_ok($encoding);
38
38
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -32,7 +32,7 @@ access:
32
32
  u: always
33
33
  vs: always
34
34
  vu: always
35
- data_independent_timing: true
35
+ data_independent_timing: false
36
36
  operation(): |
37
37
  check_f_ok($encoding);
38
38
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -31,7 +31,7 @@ access:
31
31
  u: always
32
32
  vs: always
33
33
  vu: always
34
- data_independent_timing: true
34
+ data_independent_timing: false
35
35
  pseudoinstructions:
36
36
  - when: (fs2 == fs1)
37
37
  to: fmv.s fd, fs1
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  pseudoinstructions:
35
35
  - when: (fs2 == fs1)
36
36
  to: fneg.s fd, fs1
@@ -30,7 +30,7 @@ access:
30
30
  u: always
31
31
  vs: always
32
32
  vu: always
33
- data_independent_timing: true
33
+ data_independent_timing: false
34
34
  pseudoinstructions:
35
35
  - when: (fs2 == fs1)
36
36
  to: fabs.s fd, fs1
@@ -27,7 +27,7 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
- data_independent_timing: true
30
+ data_independent_timing: false
31
31
  operation(): |
32
32
  check_f_ok($encoding);
33
33
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -29,7 +29,7 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
- data_independent_timing: true
32
+ data_independent_timing: false
33
33
  operation(): |
34
34
  check_f_ok($encoding);
35
35
  RoundingMode mode = rm_to_mode(rm, $encoding);
@@ -20,6 +20,7 @@ encoding:
20
20
  variables:
21
21
  - name: imm
22
22
  location: 31-25|11-7
23
+ sign_extend: true
23
24
  - name: fs2
24
25
  location: 24-20
25
26
  - name: xs1
@@ -29,7 +30,7 @@ access:
29
30
  u: always
30
31
  vs: always
31
32
  vu: always
32
- data_independent_timing: true
33
+ data_independent_timing: false
33
34
  operation(): |
34
35
  check_f_ok($encoding);
35
36
 
@@ -51,7 +51,7 @@ operation(): |
51
51
  XReg virtual_address = X[xs1] + $signed(imm);
52
52
 
53
53
  if (xlen() == 32) {
54
- if (implemented?(ExtensionName::Zclsd)) {
54
+ if (implemented?(ExtensionName::Zilsd)) {
55
55
  data = {X[xs2 + 1], X[xs2]};
56
56
  } else {
57
57
  raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
@@ -22,9 +22,7 @@ description: |
22
22
 
23
23
  definedBy:
24
24
  extension:
25
- anyOf:
26
- - name: M
27
- - name: Zmmul
25
+ name: Zmmul
28
26
  assembly: xd, xs1, xs2
29
27
  encoding:
30
28
  match: 0000001----------000-----0110011
@@ -21,9 +21,7 @@ description: |
21
21
  Microarchitectures may look for that sequence and fuse the operations.
22
22
  definedBy:
23
23
  extension:
24
- anyOf:
25
- - name: M
26
- - name: Zmmul
24
+ name: Zmmul
27
25
  assembly: xd, xs1, xs2
28
26
  encoding:
29
27
  match: 0000001----------001-----0110011
@@ -21,9 +21,7 @@ description: |
21
21
  Microarchitectures may look for that sequence and fuse the operations.
22
22
  definedBy:
23
23
  extension:
24
- anyOf:
25
- - name: M
26
- - name: Zmmul
24
+ name: Zmmul
27
25
  assembly: xd, xs1, xs2
28
26
  encoding:
29
27
  match: 0000001----------010-----0110011
@@ -21,9 +21,7 @@ description: |
21
21
  Microarchitectures may look for that sequence and fuse the operations.
22
22
  definedBy:
23
23
  extension:
24
- anyOf:
25
- - name: M
26
- - name: Zmmul
24
+ name: Zmmul
27
25
  assembly: xd, xs1, xs2
28
26
  encoding:
29
27
  match: 0000001----------011-----0110011
@@ -22,9 +22,7 @@ definedBy:
22
22
  allOf:
23
23
  - xlen: 64
24
24
  - extension:
25
- anyOf:
26
- - name: M
27
- - name: Zmmul
25
+ name: Zmmul
28
26
  assembly: xd, xs1, xs2
29
27
  encoding:
30
28
  match: 0000001----------000-----0111011
@@ -11,8 +11,8 @@ definedBy:
11
11
  extension:
12
12
  name: Q
13
13
  description: |
14
- `fadd.q` is analogous to `fadd.d` and performs double-precision floating-point addition between
15
- `qs1` and `qs2` and writes the final result to `qd`.
14
+ `fadd.q` is analogous to `fadd.d` and performs quad-precision floating-point addition between
15
+ `fs1` and `fs2` and writes the final result to `fd`.
16
16
  assembly: fd, fs1, fs2, rm
17
17
  encoding:
18
18
  match: 0000011------------------1010011
@@ -8,13 +8,13 @@ kind: instruction
8
8
  name: fclass.q
9
9
  long_name: Floating-Point Classify Quad-Precision
10
10
  description: |
11
- The `fclass.q` instruction examines the value in floating-point register `rs1` and writes to integer
12
- register `rd` a 10-bit mask that indicates the class of the floating-point number.
11
+ The `fclass.q` instruction examines the value in floating-point register `fs1` and writes to integer
12
+ register `xd` a 10-bit mask that indicates the class of the floating-point number.
13
13
 
14
- The format of the mask is described in table given below. The corresponding bit in `rd`
15
- will be set if the property is true and clear otherwise. All other bits in `rd` are cleared.
14
+ The format of the mask is described in table given below. The corresponding bit in `xd`
15
+ will be set if the property is true and clear otherwise. All other bits in `xd` are cleared.
16
16
 
17
- Note that exactly one bit in `rd` will be set. `fclass.q` does not set the floating-point
17
+ Note that exactly one bit in `xd` will be set. `fclass.q` does not set the floating-point
18
18
  exception flags.
19
19
 
20
20
  .Format of result of `fclass` instruction.
@@ -24,6 +24,7 @@ encoding:
24
24
  variables:
25
25
  - name: imm
26
26
  location: 31-20
27
+ sign_extend: true
27
28
  - name: xs1
28
29
  location: 19-15
29
30
  - name: fd
@@ -23,6 +23,7 @@ encoding:
23
23
  variables:
24
24
  - name: imm
25
25
  location: 31-25|11-7
26
+ sign_extend: true
26
27
  - name: fs2
27
28
  location: 24-20
28
29
  - name: xs1
@@ -24,6 +24,7 @@ encoding:
24
24
  variables:
25
25
  - name: imm
26
26
  location: 19-15
27
+ sign_extend: true
27
28
  - name: vd
28
29
  location: 11-7
29
30
  access:
@@ -36,4 +36,9 @@ operation(): |
36
36
  raise (ExceptionCode::IllegalInstruction, mode(), $encoding);
37
37
  }
38
38
 
39
- X[xd] = lowest_set_bit(X[xs1][31:0]);
39
+ # lowest_set_bit() reports xlen() (64 here) for a zero input, but ctzw must report 32
40
+ if (X[xs1][31:0] == 0) {
41
+ X[xd] = 32;
42
+ } else {
43
+ X[xd] = lowest_set_bit(X[xs1][31:0]);
44
+ }
@@ -28,6 +28,7 @@ access:
28
28
  u: always
29
29
  vs: always
30
30
  vu: always
31
+ data_independent_timing: true
31
32
  operation(): |
32
33
 
33
34
  if (implemented?(ExtensionName::M) && (CSR[misa].M == 1'b0)) {
@@ -25,6 +25,7 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
+ data_independent_timing: true
28
29
  operation(): |
29
30
 
30
31
  if (implemented?(ExtensionName::C) && (CSR[misa].C == 1'b0)) {
@@ -14,9 +14,7 @@ description: |
14
14
 
15
15
  definedBy:
16
16
  extension:
17
- allOf:
18
- - name: Zcb
19
- - name: Zbb
17
+ name: Zcb
20
18
  assembly: xd
21
19
  encoding:
22
20
  match: 100111---1100001
@@ -28,12 +26,9 @@ access:
28
26
  u: always
29
27
  vs: always
30
28
  vu: always
29
+ data_independent_timing: true
31
30
  operation(): |2
32
31
 
33
- if (implemented?(ExtensionName::B) && (CSR[misa].B == 1'b0)) {
34
- raise (ExceptionCode::IllegalInstruction, mode(), $encoding);
35
- }
36
-
37
32
  if (implemented?(ExtensionName::C) && (CSR[misa].C == 1'b0)) {
38
33
  raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
39
34
  }
@@ -17,7 +17,7 @@ definedBy:
17
17
  - extension:
18
18
  allOf:
19
19
  - name: Zcb
20
- - name: Zbb
20
+ - name: Zba
21
21
  assembly: xd
22
22
  encoding:
23
23
  match: 100111---1110001
@@ -28,4 +28,6 @@ access:
28
28
  vs: always
29
29
  vu: always
30
30
  data_independent_timing: false
31
+ hints:
32
+ - { $ref: inst/Zicfiss/c.sspush.yaml# }
31
33
  operation(): "" #do nothing
@@ -28,4 +28,6 @@ access:
28
28
  vs: always
29
29
  vu: always
30
30
  data_independent_timing: false
31
+ hints:
32
+ - { $ref: inst/Zicfiss/c.sspopchk.yaml# }
31
33
  operation(): "" #do nothing
@@ -42,4 +42,11 @@ access:
42
42
  vs: always
43
43
  vu: always
44
44
  data_independent_timing: false
45
+ <% if n == 1 -%>
46
+ hints:
47
+ - { $ref: inst/Zicfiss/c.sspush.yaml# }
48
+ <% elsif n == 5 -%>
49
+ hints:
50
+ - { $ref: inst/Zicfiss/c.sspopchk.yaml# }
51
+ <% end -%>
45
52
  operation(): "" #do nothing
@@ -13,7 +13,6 @@ description: |
13
13
 
14
14
  `fleq.q` is defined like `fle.q`, except that quiet _NaN_ inputs do not cause the invalid
15
15
  operation exception flag to be set.
16
- This instruction is encoded like its `flt` counterpart, but with instruction bit 14 set to 1.
17
16
  definedBy:
18
17
  extension:
19
18
  allOf:
@@ -28,7 +28,7 @@ access:
28
28
  u: always
29
29
  vs: always
30
30
  vu: always
31
- data_independent_timing: true
31
+ data_independent_timing: false
32
32
  operation(): |
33
33
  check_f_ok($encoding);
34
34
 
@@ -9,7 +9,7 @@ name: fli.q
9
9
  long_name: Floating-Point Load Immediate Quad-Precision
10
10
  description: |
11
11
  The `fli.q` instruction loads one of 32 quad-precision floating-point constants, encoded in the `xs1`
12
- field, into floating-point register `rd`.
12
+ field, into floating-point register `fd`.
13
13
  `fli.q` is encoded like `fmv.w.x`, but with _fmt_ = Q.
14
14
  definedBy:
15
15
  extension:
@@ -25,5 +25,5 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
- data_independent_timing: true
28
+ data_independent_timing: false
29
29
  operation(): |