udb 0.1.13 → 0.1.15

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 (429) hide show
  1. checksums.yaml +4 -4
  2. data/.data/cfgs/example_rv64_with_overlay.yaml +20 -24
  3. data/.data/cfgs/mc100-32-full-example.yaml +2 -2
  4. data/.data/cfgs/qc_iu.yaml +7 -3
  5. data/.data/cfgs/rv32-riscv-tests.yaml +8 -5
  6. data/.data/cfgs/rv32-vector.yaml +8 -5
  7. data/.data/cfgs/rv64-riscv-tests.yaml +8 -5
  8. data/.data/cfgs/rv64-vector.yaml +8 -5
  9. data/.data/spec/custom/isa/qc_iu/ext/Xqccmi.yaml +107 -36
  10. data/.data/spec/custom/isa/qc_iu/inst/Xqccmi/qc.cm.ilut.yaml +52 -69
  11. data/.data/spec/custom/isa/qc_iu/isa/globals.isa +27 -5
  12. data/.data/spec/schemas/README.adoc +3 -0
  13. data/.data/spec/schemas/config_schema.json +1 -1
  14. data/.data/spec/schemas/mmr_schema.json +3 -3
  15. data/.data/spec/schemas/schema_defs.json +8 -3
  16. data/.data/spec/std/isa/csr/H/hcounteren.layout +3 -3
  17. data/.data/spec/std/isa/csr/H/hcounteren.yaml +31 -31
  18. data/.data/spec/std/isa/csr/H/henvcfg.yaml +25 -0
  19. data/.data/spec/std/isa/csr/H/htinst.yaml +3 -3
  20. data/.data/spec/std/isa/csr/H/htval.yaml +3 -3
  21. data/.data/spec/std/isa/csr/H/mtinst.yaml +1 -1
  22. data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +6 -4
  23. data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +6 -4
  24. data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +6 -4
  25. data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +6 -4
  26. data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +6 -4
  27. data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +6 -4
  28. data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +6 -4
  29. data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +6 -4
  30. data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +6 -4
  31. data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +6 -4
  32. data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +6 -4
  33. data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +6 -4
  34. data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +6 -4
  35. data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +6 -4
  36. data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +6 -4
  37. data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +6 -4
  38. data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +6 -4
  39. data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +6 -4
  40. data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +6 -4
  41. data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +6 -4
  42. data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +6 -4
  43. data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +6 -4
  44. data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +6 -4
  45. data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +6 -4
  46. data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +6 -4
  47. data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +6 -4
  48. data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +6 -4
  49. data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +6 -4
  50. data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +6 -4
  51. data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +6 -4
  52. data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +6 -4
  53. data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +6 -4
  54. data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +6 -4
  55. data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +6 -4
  56. data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +6 -4
  57. data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +6 -4
  58. data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +6 -4
  59. data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +6 -4
  60. data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +6 -4
  61. data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +6 -4
  62. data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +6 -4
  63. data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +6 -4
  64. data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +6 -4
  65. data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +6 -4
  66. data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +6 -4
  67. data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +6 -4
  68. data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +6 -4
  69. data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +6 -4
  70. data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +6 -4
  71. data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +6 -4
  72. data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +6 -4
  73. data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +6 -4
  74. data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +6 -4
  75. data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +6 -4
  76. data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +6 -4
  77. data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +6 -4
  78. data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +6 -4
  79. data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +6 -4
  80. data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +6 -4
  81. data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +6 -4
  82. data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +6 -4
  83. data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +6 -4
  84. data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +6 -4
  85. data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +6 -4
  86. data/.data/spec/std/isa/csr/I/pmpaddrN.layout +6 -4
  87. data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +120 -144
  88. data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +60 -72
  89. data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +120 -144
  90. data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +60 -72
  91. data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +120 -144
  92. data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +60 -72
  93. data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +120 -144
  94. data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +60 -72
  95. data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +120 -144
  96. data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +60 -72
  97. data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +120 -144
  98. data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +60 -72
  99. data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +120 -144
  100. data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +60 -72
  101. data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +120 -144
  102. data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +60 -72
  103. data/.data/spec/std/isa/csr/I/pmpcfgN.layout +15 -18
  104. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +1 -1
  105. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +1 -1
  106. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +1 -1
  107. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +1 -1
  108. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +1 -1
  109. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +29 -29
  110. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -4
  111. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +1 -1
  112. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -4
  113. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +1 -1
  114. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -4
  115. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +1 -1
  116. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -4
  117. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +1 -1
  118. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -4
  119. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +1 -1
  120. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -4
  121. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +1 -1
  122. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -4
  123. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +1 -1
  124. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -4
  125. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +1 -1
  126. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -4
  127. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +1 -1
  128. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -4
  129. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +1 -1
  130. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -4
  131. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +1 -1
  132. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -4
  133. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +1 -1
  134. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -4
  135. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +1 -1
  136. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -4
  137. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +1 -1
  138. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -4
  139. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +1 -1
  140. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -4
  141. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +1 -1
  142. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -4
  143. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +1 -1
  144. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -4
  145. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +1 -1
  146. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -4
  147. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +1 -1
  148. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -4
  149. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +1 -1
  150. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -4
  151. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -4
  152. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +1 -1
  153. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -4
  154. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +1 -1
  155. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +1 -1
  156. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -4
  157. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +1 -1
  158. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -4
  159. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +1 -1
  160. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -4
  161. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +1 -1
  162. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -4
  163. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +1 -1
  164. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -4
  165. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +1 -1
  166. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -4
  167. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +1 -1
  168. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -4
  169. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +1 -1
  170. data/.data/spec/std/isa/csr/hstatus.yaml +1 -1
  171. data/.data/spec/std/isa/csr/jvt.yaml +1 -0
  172. data/.data/spec/std/isa/csr/mcycle.yaml +6 -6
  173. data/.data/spec/std/isa/csr/menvcfg.yaml +20 -0
  174. data/.data/spec/std/isa/csr/minstret.yaml +3 -3
  175. data/.data/spec/std/isa/csr/minstreth.yaml +1 -1
  176. data/.data/spec/std/isa/csr/mstatus.yaml +21 -25
  177. data/.data/spec/std/isa/csr/mtvec.yaml +16 -57
  178. data/.data/spec/std/isa/csr/senvcfg.yaml +26 -0
  179. data/.data/spec/std/isa/csr/sie.yaml +30 -4
  180. data/.data/spec/std/isa/csr/sip.yaml +16 -2
  181. data/.data/spec/std/isa/csr/stvec.yaml +11 -12
  182. data/.data/spec/std/isa/csr/vstval.yaml +1 -1
  183. data/.data/spec/std/isa/csr/vstvec.yaml +14 -15
  184. data/.data/spec/std/isa/ext/Q.yaml +1 -1
  185. data/.data/spec/std/isa/ext/Shlcofideleg.yaml +24 -0
  186. data/.data/spec/std/isa/ext/Shvstvecd.yaml +2 -2
  187. data/.data/spec/std/isa/ext/Sspm.yaml +5 -0
  188. data/.data/spec/std/isa/ext/Sstvecd.yaml +2 -2
  189. data/.data/spec/std/isa/ext/Sstvecv.yaml +2 -2
  190. data/.data/spec/std/isa/ext/Supm.yaml +17 -0
  191. data/.data/spec/std/isa/ext/Zcb.yaml +3 -0
  192. data/.data/spec/std/isa/ext/Zfbfmin.yaml +3 -5
  193. data/.data/spec/std/isa/ext/Ziccid.yaml +29 -0
  194. data/.data/spec/std/isa/ext/Zicfilp.yaml +5 -1
  195. data/.data/spec/std/isa/ext/Zicfiss.yaml +20 -1
  196. data/.data/spec/std/isa/ext/Zihpm.yaml +3 -0
  197. data/.data/spec/std/isa/ext/Zilx.yaml +58 -0
  198. data/.data/spec/std/isa/ext/Zkt.yaml +33 -1
  199. data/.data/spec/std/isa/ext/Zvabd.yaml +21 -0
  200. data/.data/spec/std/isa/ext/Zvbc.yaml +3 -0
  201. data/.data/spec/std/isa/ext/Zvkb.yaml +3 -0
  202. data/.data/spec/std/isa/ext/Zvkg.yaml +3 -0
  203. data/.data/spec/std/isa/ext/Zvkned.yaml +3 -0
  204. data/.data/spec/std/isa/ext/Zvknha.yaml +3 -0
  205. data/.data/spec/std/isa/ext/Zvknhb.yaml +4 -2
  206. data/.data/spec/std/isa/ext/Zvksed.yaml +3 -0
  207. data/.data/spec/std/isa/ext/Zvksh.yaml +3 -0
  208. data/.data/spec/std/isa/ext/Zvkt.yaml +3 -0
  209. data/.data/spec/std/isa/inst/B/andn.yaml +10 -12
  210. data/.data/spec/std/isa/inst/B/clmul.yaml +9 -11
  211. data/.data/spec/std/isa/inst/B/clmulh.yaml +9 -11
  212. data/.data/spec/std/isa/inst/B/orn.yaml +9 -11
  213. data/.data/spec/std/isa/inst/B/rev8.yaml +1 -1
  214. data/.data/spec/std/isa/inst/B/rol.yaml +9 -11
  215. data/.data/spec/std/isa/inst/B/rolw.yaml +9 -11
  216. data/.data/spec/std/isa/inst/B/ror.yaml +9 -11
  217. data/.data/spec/std/isa/inst/B/rorw.yaml +9 -11
  218. data/.data/spec/std/isa/inst/B/xnor.yaml +9 -11
  219. data/.data/spec/std/isa/inst/C/c.add.yaml +1 -0
  220. data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
  221. data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
  222. data/.data/spec/std/isa/inst/C/c.addw.yaml +1 -0
  223. data/.data/spec/std/isa/inst/C/c.and.yaml +1 -0
  224. data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
  225. data/.data/spec/std/isa/inst/C/c.ldsp.yaml +3 -3
  226. data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
  227. data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -0
  228. data/.data/spec/std/isa/inst/C/c.nop.yaml +13 -2
  229. data/.data/spec/std/isa/inst/C/c.or.yaml +1 -0
  230. data/.data/spec/std/isa/inst/C/c.slli.yaml +1 -0
  231. data/.data/spec/std/isa/inst/C/c.srai.yaml +1 -0
  232. data/.data/spec/std/isa/inst/C/c.srli.yaml +1 -0
  233. data/.data/spec/std/isa/inst/C/c.sub.yaml +1 -0
  234. data/.data/spec/std/isa/inst/C/c.subw.yaml +1 -0
  235. data/.data/spec/std/isa/inst/C/c.xor.yaml +1 -0
  236. data/.data/spec/std/isa/inst/D/fld.yaml +1 -0
  237. data/.data/spec/std/isa/inst/D/fsd.yaml +1 -0
  238. data/.data/spec/std/isa/inst/F/fadd.s.yaml +1 -1
  239. data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
  240. data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
  241. data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
  242. data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
  243. data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
  244. data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
  245. data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
  246. data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
  247. data/.data/spec/std/isa/inst/F/feq.s.yaml +1 -1
  248. data/.data/spec/std/isa/inst/F/fle.s.yaml +1 -1
  249. data/.data/spec/std/isa/inst/F/fleq.s.yaml +1 -1
  250. data/.data/spec/std/isa/inst/F/flt.s.yaml +1 -1
  251. data/.data/spec/std/isa/inst/F/fltq.s.yaml +1 -1
  252. data/.data/spec/std/isa/inst/F/flw.yaml +2 -1
  253. data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
  254. data/.data/spec/std/isa/inst/F/fmax.s.yaml +1 -1
  255. data/.data/spec/std/isa/inst/F/fmin.s.yaml +1 -1
  256. data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
  257. data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
  258. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +1 -1
  259. data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
  260. data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +1 -1
  261. data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
  262. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +1 -1
  263. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +1 -1
  264. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +1 -1
  265. data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
  266. data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
  267. data/.data/spec/std/isa/inst/F/fsw.yaml +2 -1
  268. data/.data/spec/std/isa/inst/I/addi.yaml +1 -0
  269. data/.data/spec/std/isa/inst/I/addiw.yaml +1 -0
  270. data/.data/spec/std/isa/inst/I/andi.yaml +1 -0
  271. data/.data/spec/std/isa/inst/I/auipc.yaml +1 -0
  272. data/.data/spec/std/isa/inst/I/lb.yaml +1 -0
  273. data/.data/spec/std/isa/inst/I/lbu.yaml +1 -0
  274. data/.data/spec/std/isa/inst/I/ld.yaml +2 -0
  275. data/.data/spec/std/isa/inst/I/lh.yaml +1 -0
  276. data/.data/spec/std/isa/inst/I/lhu.yaml +1 -0
  277. data/.data/spec/std/isa/inst/I/lui.yaml +1 -0
  278. data/.data/spec/std/isa/inst/I/lw.yaml +1 -0
  279. data/.data/spec/std/isa/inst/I/lwu.yaml +1 -0
  280. data/.data/spec/std/isa/inst/I/ori.yaml +1 -0
  281. data/.data/spec/std/isa/inst/I/sb.yaml +1 -0
  282. data/.data/spec/std/isa/inst/I/sd.yaml +2 -1
  283. data/.data/spec/std/isa/inst/I/sh.yaml +1 -0
  284. data/.data/spec/std/isa/inst/I/slti.yaml +1 -0
  285. data/.data/spec/std/isa/inst/I/sltiu.yaml +1 -0
  286. data/.data/spec/std/isa/inst/I/sw.yaml +1 -0
  287. data/.data/spec/std/isa/inst/I/xori.yaml +1 -0
  288. data/.data/spec/std/isa/inst/Q/fadd.q.yaml +2 -2
  289. data/.data/spec/std/isa/inst/Q/fclass.q.yaml +5 -5
  290. data/.data/spec/std/isa/inst/Q/fleq.q.yaml +0 -1
  291. data/.data/spec/std/isa/inst/Q/fli.q.yaml +1 -1
  292. data/.data/spec/std/isa/inst/Q/flq.yaml +1 -0
  293. data/.data/spec/std/isa/inst/Q/fltq.q.yaml +0 -1
  294. data/.data/spec/std/isa/inst/Q/fmaxm.q.yaml +0 -1
  295. data/.data/spec/std/isa/inst/Q/fminm.q.yaml +0 -1
  296. data/.data/spec/std/isa/inst/Q/fmvp.q.x.yaml +1 -1
  297. data/.data/spec/std/isa/inst/Q/fsq.yaml +1 -0
  298. data/.data/spec/std/isa/inst/V/vadc.vim.yaml +1 -0
  299. data/.data/spec/std/isa/inst/V/vadd.vi.yaml +1 -0
  300. data/.data/spec/std/isa/inst/V/vand.vi.yaml +1 -0
  301. data/.data/spec/std/isa/inst/V/vle8.v.yaml +1 -0
  302. data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +1 -0
  303. data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +1 -0
  304. data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +1 -0
  305. data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +1 -0
  306. data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +1 -0
  307. data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +1 -0
  308. data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +1 -0
  309. data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +1 -0
  310. data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +1 -0
  311. data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +1 -0
  312. data/.data/spec/std/isa/inst/V/vor.vi.yaml +1 -0
  313. data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +1 -0
  314. data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +1 -0
  315. data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +1 -0
  316. data/.data/spec/std/isa/inst/V/vse8.v.yaml +1 -0
  317. data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +4 -2
  318. data/.data/spec/std/isa/inst/Zba/add.uw.yaml +9 -11
  319. data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +1 -1
  320. data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +3 -3
  321. data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +2 -2
  322. data/.data/spec/std/isa/inst/Zbkb/zip.yaml +2 -2
  323. data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +2 -2
  324. data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +2 -2
  325. data/.data/spec/std/isa/inst/Zcb/c.mul.yaml +1 -0
  326. data/.data/spec/std/isa/inst/Zcb/c.not.yaml +1 -0
  327. data/.data/spec/std/isa/inst/Zcb/c.zext.b.yaml +2 -7
  328. data/.data/spec/std/isa/inst/Zcb/c.zext.w.yaml +1 -1
  329. data/.data/spec/std/isa/inst/Zcmop/c.mop.1.yaml +2 -0
  330. data/.data/spec/std/isa/inst/Zcmop/c.mop.5.yaml +2 -0
  331. data/.data/spec/std/isa/inst/Zcmop/c.mop.N.layout +7 -0
  332. data/.data/spec/std/isa/inst/Zfa/fli.s.yaml +1 -1
  333. data/.data/spec/std/isa/inst/Zfa/fmaxm.s.yaml +1 -1
  334. data/.data/spec/std/isa/inst/Zfa/fminm.s.yaml +1 -1
  335. data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
  336. data/.data/spec/std/isa/inst/Zfa/froundnx.s.yaml +1 -1
  337. data/.data/spec/std/isa/inst/Zfh/flh.yaml +5 -2
  338. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +3 -1
  339. data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +3 -1
  340. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +4 -1
  341. data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +2 -0
  342. data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +2 -0
  343. data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +2 -0
  344. data/.data/spec/std/isa/inst/Zicfiss/c.sspopchk.yaml +30 -0
  345. data/.data/spec/std/isa/inst/Zicfiss/c.sspush.yaml +29 -0
  346. data/.data/spec/std/isa/inst/Zicond/czero.eqz.yaml +1 -1
  347. data/.data/spec/std/isa/inst/Zicond/czero.nez.yaml +1 -1
  348. data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +12 -0
  349. data/.data/spec/std/isa/inst/Zilx/lxd.yaml +38 -0
  350. data/.data/spec/std/isa/inst/Zilx/lxh.yaml +35 -0
  351. data/.data/spec/std/isa/inst/Zilx/lxhu.yaml +35 -0
  352. data/.data/spec/std/isa/inst/Zilx/lxsb.yaml +40 -0
  353. data/.data/spec/std/isa/inst/Zilx/lxsbu.yaml +40 -0
  354. data/.data/spec/std/isa/inst/Zilx/lxsd.yaml +38 -0
  355. data/.data/spec/std/isa/inst/Zilx/lxsh.yaml +35 -0
  356. data/.data/spec/std/isa/inst/Zilx/lxshu.yaml +35 -0
  357. data/.data/spec/std/isa/inst/Zilx/lxsuwb.yaml +40 -0
  358. data/.data/spec/std/isa/inst/Zilx/lxsuwbu.yaml +40 -0
  359. data/.data/spec/std/isa/inst/Zilx/lxsuwd.yaml +39 -0
  360. data/.data/spec/std/isa/inst/Zilx/lxsuwh.yaml +40 -0
  361. data/.data/spec/std/isa/inst/Zilx/lxsuwhu.yaml +40 -0
  362. data/.data/spec/std/isa/inst/Zilx/lxsuww.yaml +40 -0
  363. data/.data/spec/std/isa/inst/Zilx/lxsuwwu.yaml +40 -0
  364. data/.data/spec/std/isa/inst/Zilx/lxsw.yaml +35 -0
  365. data/.data/spec/std/isa/inst/Zilx/lxswu.yaml +39 -0
  366. data/.data/spec/std/isa/inst/Zilx/lxw.yaml +35 -0
  367. data/.data/spec/std/isa/inst/Zilx/lxwu.yaml +39 -0
  368. data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +1 -1
  369. data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +1 -1
  370. data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +1 -1
  371. data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +1 -1
  372. data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +67 -0
  373. data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +67 -0
  374. data/.data/spec/std/isa/inst/Zvabd/vabs.v.yaml +61 -0
  375. data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +72 -0
  376. data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +72 -0
  377. data/.data/spec/std/isa/isa/builtin_functions.idl +1 -0
  378. data/.data/spec/std/isa/isa/fp.idl +42 -18
  379. data/.data/spec/std/isa/isa/globals.isa +27 -7
  380. data/.data/spec/std/isa/isa/interrupts.idl +1 -0
  381. data/.data/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml +70 -6
  382. data/.data/spec/std/isa/param/ELEN.yaml +27 -5
  383. data/.data/spec/std/isa/param/HCOUNTENABLE_EN.yaml +13 -0
  384. data/.data/spec/std/isa/param/HPM_COUNTER_EN.yaml +13 -3
  385. data/.data/spec/std/isa/param/HPM_EVENTS.yaml +0 -3
  386. data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +1 -0
  387. data/.data/spec/std/isa/param/MCOUNTENABLE_EN.yaml +8 -0
  388. data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +1 -0
  389. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +71 -64
  390. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +71 -64
  391. data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +11 -22
  392. data/.data/spec/std/isa/param/NUM_USABLE_PMP_ENTRIES.yaml +35 -0
  393. data/.data/spec/std/isa/param/PMP_NA4_SUPPORTED.yaml +23 -0
  394. data/.data/spec/std/isa/param/{STVEC_MODE_VECTORED.yaml → PMP_NAPOT_SUPPORTED.yaml} +9 -9
  395. data/.data/spec/std/isa/param/{MSTATUS_TVM_IMPLEMENTED.yaml → PMP_TOR_SUPPORTED.yaml} +6 -6
  396. data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +1 -0
  397. data/.data/spec/std/isa/param/STVAL_WIDTH.yaml +3 -2
  398. data/.data/spec/std/isa/param/STVEC_BASE_ALIGNMENT_VECTORED.yaml +100 -0
  399. data/.data/spec/std/isa/param/STVEC_MODES.yaml +31 -0
  400. data/.data/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml +1 -1
  401. data/.data/spec/std/isa/param/SXLEN.yaml +2 -2
  402. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml +1 -1
  403. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml +1 -1
  404. data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml +1 -1
  405. data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml +1 -1
  406. data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml +1 -1
  407. data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +1 -0
  408. data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +1 -0
  409. data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +1 -0
  410. data/.data/spec/std/isa/param/UXLEN.yaml +1 -1
  411. data/.data/spec/std/isa/param/VLEN.yaml +16 -7
  412. data/.data/spec/std/isa/param/VSTVEC_MODES.yaml +31 -0
  413. data/.data/spec/std/isa/param/ZAWRS_NTO_IS_NOP.yaml +19 -0
  414. data/lib/udb/ESPRESSO_VERSION +1 -1
  415. data/lib/udb/Z3_VERSION +1 -1
  416. data/lib/udb/config.rb +14 -2
  417. data/lib/udb/doc_link.rb +3 -4
  418. data/lib/udb/obj/csr.rb +1 -1
  419. data/lib/udb/obj/csr_field.rb +1 -1
  420. data/lib/udb/obj/extension.rb +1 -1
  421. data/lib/udb/obj/instruction.rb +1 -1
  422. data/lib/udb/obj/non_isa_specification.rb +22 -100
  423. data/lib/udb/version.rb +1 -1
  424. data/lib/udb/version_spec.rb +1 -1
  425. data/lib/udb/z3.rb +31 -9
  426. metadata +42 -9
  427. data/.data/spec/std/isa/param/STVEC_MODE_DIRECT.yaml +0 -21
  428. data/.data/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml +0 -21
  429. data/.data/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml +0 -21
@@ -15,17 +15,15 @@ definedBy:
15
15
  - name: Zbc
16
16
  - name: Zbkc
17
17
  assembly: xd, xs1, xs2
18
- format:
19
- $inherits:
20
- - inst_subtype/R/R-x.yaml#/data
21
- opcodes:
22
- funct7:
23
- display_name: CLMUL
24
- value: 0b0000101
25
- funct3:
26
- display_name: CLMUL
27
- value: 0b001
28
- opcode: { $inherits: inst_opcode/OP.yaml#/data }
18
+ encoding:
19
+ match: 0000101----------001-----0110011
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
29
27
  access:
30
28
  s: always
31
29
  u: always
@@ -15,17 +15,15 @@ definedBy:
15
15
  - name: Zbc
16
16
  - name: Zbkc
17
17
  assembly: xd, xs1, xs2
18
- format:
19
- $inherits:
20
- - inst_subtype/R/R-x.yaml#/data
21
- opcodes:
22
- funct7:
23
- display_name: CLMUL
24
- value: 0b0000101
25
- funct3:
26
- display_name: CLMULH
27
- value: 0b011
28
- opcode: { $inherits: inst_opcode/OP.yaml#/data }
18
+ encoding:
19
+ match: 0000101----------011-----0110011
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
29
27
  access:
30
28
  s: always
31
29
  u: always
@@ -15,17 +15,15 @@ definedBy:
15
15
  - name: Zbb
16
16
  - name: Zbkb
17
17
  assembly: xd, xs1, xs2
18
- format:
19
- $inherits:
20
- - inst_subtype/R/R-x.yaml#/data
21
- opcodes:
22
- funct7:
23
- display_name: ORN
24
- value: 0b0100000
25
- funct3:
26
- display_name: ORN
27
- value: 0b110
28
- opcode: { $inherits: inst_opcode/OP.yaml#/data }
18
+ encoding:
19
+ match: 0100000----------110-----0110011
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
29
27
  access:
30
28
  s: always
31
29
  u: always
@@ -54,7 +54,7 @@ operation(): |
54
54
 
55
55
  XReg j = xlen() - 1;
56
56
 
57
- for (U32 i=0; i<(xlen()-8); i = i+8) {
57
+ for (U32 i=0; i < xlen(); i = i+8) {
58
58
  output[(i+7):i] = input[j:(j-7)];
59
59
  j = j - 8;
60
60
  }
@@ -15,17 +15,15 @@ definedBy:
15
15
  - name: Zbb
16
16
  - name: Zbkb
17
17
  assembly: xd, xs1, xs2
18
- format:
19
- $inherits:
20
- - inst_subtype/R/R-x.yaml#/data
21
- opcodes:
22
- funct7:
23
- display_name: ROL
24
- value: 0b0110000
25
- funct3:
26
- display_name: ROL
27
- value: 0b001
28
- opcode: { $inherits: inst_opcode/OP.yaml#/data }
18
+ encoding:
19
+ match: 0110000----------001-----0110011
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
29
27
  access:
30
28
  s: always
31
29
  u: always
@@ -18,17 +18,15 @@ definedBy:
18
18
  - name: Zbb
19
19
  - name: Zbkb
20
20
  assembly: xd, xs1, xs2
21
- format:
22
- $inherits:
23
- - inst_subtype/R/R-x.yaml#/data
24
- opcodes:
25
- funct7:
26
- display_name: ROLW
27
- value: 0b0110000
28
- funct3:
29
- display_name: ROLW
30
- value: 0b001
31
- opcode: { $inherits: inst_opcode/OP-32.yaml#/data }
21
+ encoding:
22
+ match: 0110000----------001-----0111011
23
+ variables:
24
+ - name: xs2
25
+ location: 24-20
26
+ - name: xs1
27
+ location: 19-15
28
+ - name: xd
29
+ location: 11-7
32
30
  access:
33
31
  s: always
34
32
  u: always
@@ -15,17 +15,15 @@ definedBy:
15
15
  - name: Zbb
16
16
  - name: Zbkb
17
17
  assembly: xd, xs1, xs2
18
- format:
19
- $inherits:
20
- - inst_subtype/R/R-x.yaml#/data
21
- opcodes:
22
- funct7:
23
- display_name: ROR
24
- value: 0b0110000
25
- funct3:
26
- display_name: ROR
27
- value: 0b101
28
- opcode: { $inherits: inst_opcode/OP.yaml#/data }
18
+ encoding:
19
+ match: 0110000----------101-----0110011
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
29
27
  access:
30
28
  s: always
31
29
  u: always
@@ -19,17 +19,15 @@ definedBy:
19
19
  - name: Zbb
20
20
  - name: Zbkb
21
21
  assembly: xd, xs1, xs2
22
- format:
23
- $inherits:
24
- - inst_subtype/R/R-x.yaml#/data
25
- opcodes:
26
- funct7:
27
- display_name: RORW
28
- value: 0b0110000
29
- funct3:
30
- display_name: RORW
31
- value: 0b101
32
- opcode: { $inherits: inst_opcode/OP-32.yaml#/data }
22
+ encoding:
23
+ match: 0110000----------101-----0111011
24
+ variables:
25
+ - name: xs2
26
+ location: 24-20
27
+ - name: xs1
28
+ location: 19-15
29
+ - name: xd
30
+ location: 11-7
33
31
  access:
34
32
  s: always
35
33
  u: always
@@ -15,17 +15,15 @@ definedBy:
15
15
  - name: Zbb
16
16
  - name: Zbkb
17
17
  assembly: xd, xs1, xs2
18
- format:
19
- $inherits:
20
- - inst_subtype/R/R-x.yaml#/data
21
- opcodes:
22
- funct7:
23
- display_name: XNOR
24
- value: 0b0100000
25
- funct3:
26
- display_name: XNOR
27
- value: 0b100
28
- opcode: { $inherits: inst_opcode/OP.yaml#/data }
18
+ encoding:
19
+ match: 0100000----------100-----0110011
20
+ variables:
21
+ - name: xs2
22
+ location: 24-20
23
+ - name: xs1
24
+ location: 19-15
25
+ - name: xd
26
+ location: 11-7
29
27
  access:
30
28
  s: always
31
29
  u: always
@@ -28,6 +28,7 @@ access:
28
28
  u: always
29
29
  vs: always
30
30
  vu: always
31
+ data_independent_timing: true
31
32
  hints:
32
33
  - { $ref: inst/Zihintntl/c.ntl.p1.yaml# }
33
34
  - { $ref: inst/Zihintntl/c.ntl.pall.yaml# }
@@ -31,6 +31,7 @@ access:
31
31
  u: always
32
32
  vs: always
33
33
  vu: always
34
+ data_independent_timing: true
34
35
  operation(): |
35
36
  if (implemented?(ExtensionName::C) && (CSR[misa].C == 1'b0)) {
36
37
  raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
@@ -32,6 +32,7 @@ access:
32
32
  u: always
33
33
  vs: always
34
34
  vu: always
35
+ data_independent_timing: true
35
36
  operation(): |
36
37
  if (implemented?(ExtensionName::C) && (CSR[misa].C == 1'b0)) {
37
38
  raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
@@ -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)];
@@ -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
  # shamt is between 0-63
33
34
  X[creg2reg(xd)] = X[creg2reg(xd)] & $signed(imm);
@@ -57,8 +57,8 @@ operation(): |
57
57
  Bits<64> value = read_memory(64, virtual_address, $encoding);
58
58
 
59
59
  if (xlen()== 64) {
60
- X[creg2reg(xd)] = value;
60
+ X[xd] = value;
61
61
  } else if (xlen() == 32) {
62
- X[creg2reg(xd)] = value[31:0];
63
- X[creg2reg(xd) + 1] = value[63:32];
62
+ X[xd] = value[31:0];
63
+ X[xd + 1] = value[63:32];
64
64
  }
@@ -31,6 +31,7 @@ access:
31
31
  u: always
32
32
  vs: always
33
33
  vu: always
34
+ data_independent_timing: true
34
35
  operation(): |
35
36
  if (implemented?(ExtensionName::C) && (CSR[misa].C == 1'b0)) {
36
37
  raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
@@ -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
  if (implemented?(ExtensionName::C) && (CSR[misa].C == 1'b0)) {
33
34
  raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
@@ -8,18 +8,29 @@ kind: instruction
8
8
  name: c.nop
9
9
  long_name: Non-operation
10
10
  description: |
11
+ C.NOP does not change any user-visible state, except for advancing the pc and
12
+ accepting any HINTs.
11
13
  C.NOP expands into `addi x0, x0, 0`.
14
+ C.NOP with non-zero immediate values are HINTs.
12
15
  definedBy:
13
16
  extension:
14
17
  name: Zca
15
- assembly: ""
18
+ assembly: imm
16
19
  encoding:
17
- match: "0000000000000001"
20
+ match: 000-00000-----01
21
+ variables:
22
+ - name: imm
23
+ location: 12|6-2
24
+ sign_extend: true
25
+ pseudoinstructions:
26
+ - when: imm == 0
27
+ to: "c.nop"
18
28
  access:
19
29
  s: always
20
30
  u: always
21
31
  vs: always
22
32
  vu: always
33
+ data_independent_timing: true
23
34
  operation(): |
24
35
  if (implemented?(ExtensionName::C) && (CSR[misa].C == 1'b0)) {
25
36
  raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
@@ -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
 
@@ -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
 
@@ -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
 
@@ -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
 
@@ -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,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