udb 0.1.9 → 0.1.14

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 (414) hide show
  1. checksums.yaml +4 -4
  2. data/.data/cfgs/example_rv64_with_overlay.yaml +20 -20
  3. data/.data/cfgs/mc100-32-full-example.yaml +1 -0
  4. data/.data/cfgs/profile/README.adoc +10 -0
  5. data/.data/cfgs/profile/RVA20S64.yaml +26 -6
  6. data/.data/cfgs/profile/RVA20U64.yaml +18 -4
  7. data/.data/cfgs/profile/RVA22S64.yaml +27 -7
  8. data/.data/cfgs/profile/RVA22U64.yaml +18 -4
  9. data/.data/cfgs/profile/RVA23S64.yaml +61 -7
  10. data/.data/cfgs/profile/RVA23U64.yaml +36 -4
  11. data/.data/cfgs/profile/RVB23S64.yaml +27 -7
  12. data/.data/cfgs/profile/RVB23U64.yaml +18 -4
  13. data/.data/cfgs/profile/RVI20U32.yaml +10 -4
  14. data/.data/cfgs/profile/RVI20U64.yaml +10 -4
  15. data/.data/cfgs/qc_iu.yaml +8 -1
  16. data/.data/cfgs/rv32-riscv-tests.yaml +6 -2
  17. data/.data/cfgs/rv32-vector.yaml +6 -2
  18. data/.data/cfgs/rv64-riscv-tests.yaml +6 -2
  19. data/.data/cfgs/rv64-vector.yaml +6 -2
  20. data/.data/spec/custom/isa/qc_iu/csr/Smrnmi/mnepc.yaml +17 -0
  21. data/.data/spec/custom/isa/qc_iu/csr/Xqccmi/qc.itba.yaml +45 -0
  22. data/.data/spec/custom/isa/qc_iu/csr/Xqccmi/qc.itdec.yaml +39 -0
  23. data/.data/spec/custom/isa/qc_iu/csr/jvt.yaml +11 -0
  24. data/.data/spec/custom/isa/qc_iu/csr/mepc.yaml +16 -0
  25. data/.data/spec/custom/isa/qc_iu/ext/Xqccmi.yaml +290 -0
  26. data/.data/spec/custom/isa/qc_iu/ext/Xqccmt.yaml +127 -0
  27. data/.data/spec/custom/isa/qc_iu/inst/Xqccmi/qc.cm.ilut.yaml +136 -0
  28. data/.data/spec/custom/isa/qc_iu/inst/Xqccmt/qc.cm.jalt.yaml +84 -0
  29. data/.data/spec/custom/isa/qc_iu/inst/Xqccmt/qc.cm.jt.yaml +60 -0
  30. data/.data/spec/custom/isa/qc_iu/isa/globals.isa +134 -0
  31. data/.data/spec/schemas/config_schema.json +220 -27
  32. data/.data/spec/schemas/csr_schema.json +0 -6
  33. data/.data/spec/schemas/ext_schema.json +80 -24
  34. data/.data/spec/schemas/inst_schema.json +0 -3
  35. data/.data/spec/schemas/mmr_schema.json +3 -3
  36. data/.data/spec/schemas/profile_release_schema.json +1 -1
  37. data/.data/spec/schemas/profile_schema.json +0 -3
  38. data/.data/spec/schemas/register_file_schema.json +8 -3
  39. data/.data/spec/schemas/schema_defs.json +13 -27
  40. data/.data/spec/std/isa/csr/H/henvcfg.yaml +25 -0
  41. data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +6 -4
  42. data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +6 -4
  43. data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +6 -4
  44. data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +6 -4
  45. data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +6 -4
  46. data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +6 -4
  47. data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +6 -4
  48. data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +6 -4
  49. data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +6 -4
  50. data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +6 -4
  51. data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +6 -4
  52. data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +6 -4
  53. data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +6 -4
  54. data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +6 -4
  55. data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +6 -4
  56. data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +6 -4
  57. data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +6 -4
  58. data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +6 -4
  59. data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +6 -4
  60. data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +6 -4
  61. data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +6 -4
  62. data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +6 -4
  63. data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +6 -4
  64. data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +6 -4
  65. data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +6 -4
  66. data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +6 -4
  67. data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +6 -4
  68. data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +6 -4
  69. data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +6 -4
  70. data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +6 -4
  71. data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +6 -4
  72. data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +6 -4
  73. data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +6 -4
  74. data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +6 -4
  75. data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +6 -4
  76. data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +6 -4
  77. data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +6 -4
  78. data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +6 -4
  79. data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +6 -4
  80. data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +6 -4
  81. data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +6 -4
  82. data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +6 -4
  83. data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +6 -4
  84. data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +6 -4
  85. data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +6 -4
  86. data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +6 -4
  87. data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +6 -4
  88. data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +6 -4
  89. data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +6 -4
  90. data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +6 -4
  91. data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +6 -4
  92. data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +6 -4
  93. data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +6 -4
  94. data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +6 -4
  95. data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +6 -4
  96. data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +6 -4
  97. data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +6 -4
  98. data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +6 -4
  99. data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +6 -4
  100. data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +6 -4
  101. data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +6 -4
  102. data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +6 -4
  103. data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +6 -4
  104. data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +6 -4
  105. data/.data/spec/std/isa/csr/I/pmpaddrN.layout +6 -4
  106. data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +128 -152
  107. data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +64 -76
  108. data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +128 -152
  109. data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +64 -76
  110. data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +128 -152
  111. data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +64 -76
  112. data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +128 -152
  113. data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +64 -76
  114. data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +128 -152
  115. data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +64 -76
  116. data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +128 -152
  117. data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +64 -76
  118. data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +128 -152
  119. data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +64 -76
  120. data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +128 -152
  121. data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +64 -76
  122. data/.data/spec/std/isa/csr/I/pmpcfgN.layout +16 -19
  123. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.layout +6 -2
  124. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.yaml +6 -2
  125. data/.data/spec/std/isa/csr/hstatus.yaml +16 -0
  126. data/.data/spec/std/isa/csr/jvt.yaml +1 -0
  127. data/.data/spec/std/isa/csr/mcycleh.yaml +1 -1
  128. data/.data/spec/std/isa/csr/menvcfg.yaml +20 -0
  129. data/.data/spec/std/isa/csr/misa.yaml +0 -12
  130. data/.data/spec/std/isa/csr/mstatus.yaml +46 -6
  131. data/.data/spec/std/isa/csr/mstatush.yaml +17 -15
  132. data/.data/spec/std/isa/csr/senvcfg.yaml +42 -0
  133. data/.data/spec/std/isa/csr/sstatus.yaml +12 -0
  134. data/.data/spec/std/isa/csr/vsstatus.yaml +24 -0
  135. data/.data/spec/std/isa/ext/A.yaml +5 -7
  136. data/.data/spec/std/isa/ext/S.yaml +12 -0
  137. data/.data/spec/std/isa/ext/Smpmpmt.yaml +52 -0
  138. data/.data/spec/std/isa/ext/Sv32.yaml +7 -19
  139. data/.data/spec/std/isa/ext/Sv39.yaml +7 -19
  140. data/.data/spec/std/isa/ext/Sv48.yaml +4 -20
  141. data/.data/spec/std/isa/ext/Sv57.yaml +4 -20
  142. data/.data/spec/std/isa/ext/Svukte.yaml +71 -0
  143. data/.data/spec/std/isa/ext/Zawrs.yaml +1 -1
  144. data/.data/spec/std/isa/ext/Zihpm.yaml +0 -12
  145. data/.data/spec/std/isa/inst/B/andn.yaml +10 -12
  146. data/.data/spec/std/isa/inst/B/clmul.yaml +9 -11
  147. data/.data/spec/std/isa/inst/B/clmulh.yaml +9 -11
  148. data/.data/spec/std/isa/inst/B/orn.yaml +9 -11
  149. data/.data/spec/std/isa/inst/B/rev8.yaml +1 -1
  150. data/.data/spec/std/isa/inst/B/rol.yaml +9 -11
  151. data/.data/spec/std/isa/inst/B/rolw.yaml +9 -11
  152. data/.data/spec/std/isa/inst/B/ror.yaml +9 -11
  153. data/.data/spec/std/isa/inst/B/rorw.yaml +9 -11
  154. data/.data/spec/std/isa/inst/B/xnor.yaml +9 -11
  155. data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
  156. data/.data/spec/std/isa/inst/C/c.addi16sp.yaml +1 -0
  157. data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
  158. data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
  159. data/.data/spec/std/isa/inst/C/c.ldsp.yaml +4 -4
  160. data/.data/spec/std/isa/inst/C/c.li.yaml +1 -0
  161. data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
  162. data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -1
  163. data/.data/spec/std/isa/inst/C/c.sdsp.yaml +1 -1
  164. data/.data/spec/std/isa/inst/D/fsgnj.d.yaml +3 -0
  165. data/.data/spec/std/isa/inst/D/fsgnjn.d.yaml +3 -0
  166. data/.data/spec/std/isa/inst/D/fsgnjx.d.yaml +3 -0
  167. data/.data/spec/std/isa/inst/F/fadd.s.yaml +5 -5
  168. data/.data/spec/std/isa/inst/F/fclass.s.yaml +2 -2
  169. data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
  170. data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
  171. data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
  172. data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
  173. data/.data/spec/std/isa/inst/F/fcvt.s.w.yaml +1 -1
  174. data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
  175. data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
  176. data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
  177. data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
  178. data/.data/spec/std/isa/inst/F/feq.s.yaml +2 -2
  179. data/.data/spec/std/isa/inst/F/fle.s.yaml +2 -2
  180. data/.data/spec/std/isa/inst/F/fleq.s.yaml +2 -2
  181. data/.data/spec/std/isa/inst/F/flt.s.yaml +2 -2
  182. data/.data/spec/std/isa/inst/F/fltq.s.yaml +2 -2
  183. data/.data/spec/std/isa/inst/F/flw.yaml +2 -2
  184. data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
  185. data/.data/spec/std/isa/inst/F/fmax.s.yaml +6 -6
  186. data/.data/spec/std/isa/inst/F/fmin.s.yaml +6 -6
  187. data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
  188. data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
  189. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +2 -2
  190. data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
  191. data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +2 -2
  192. data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
  193. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +4 -4
  194. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +3 -3
  195. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +4 -4
  196. data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
  197. data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
  198. data/.data/spec/std/isa/inst/F/fsw.yaml +1 -1
  199. data/.data/spec/std/isa/inst/I/addi.yaml +2 -1
  200. data/.data/spec/std/isa/inst/I/addiw.yaml +2 -1
  201. data/.data/spec/std/isa/inst/I/andi.yaml +2 -1
  202. data/.data/spec/std/isa/inst/I/auipc.yaml +1 -0
  203. data/.data/spec/std/isa/inst/I/beq.yaml +1 -1
  204. data/.data/spec/std/isa/inst/I/bge.yaml +4 -2
  205. data/.data/spec/std/isa/inst/I/bgeu.yaml +3 -0
  206. data/.data/spec/std/isa/inst/I/blt.yaml +4 -2
  207. data/.data/spec/std/isa/inst/I/bltu.yaml +3 -0
  208. data/.data/spec/std/isa/inst/I/bne.yaml +1 -1
  209. data/.data/spec/std/isa/inst/I/lb.yaml +1 -0
  210. data/.data/spec/std/isa/inst/I/lbu.yaml +1 -0
  211. data/.data/spec/std/isa/inst/I/ld.yaml +2 -0
  212. data/.data/spec/std/isa/inst/I/lh.yaml +1 -0
  213. data/.data/spec/std/isa/inst/I/lhu.yaml +1 -0
  214. data/.data/spec/std/isa/inst/I/lui.yaml +1 -0
  215. data/.data/spec/std/isa/inst/I/lw.yaml +1 -0
  216. data/.data/spec/std/isa/inst/I/lwu.yaml +1 -0
  217. data/.data/spec/std/isa/inst/I/ori.yaml +1 -0
  218. data/.data/spec/std/isa/inst/I/sb.yaml +1 -0
  219. data/.data/spec/std/isa/inst/I/sd.yaml +1 -0
  220. data/.data/spec/std/isa/inst/I/sh.yaml +1 -0
  221. data/.data/spec/std/isa/inst/I/slt.yaml +2 -2
  222. data/.data/spec/std/isa/inst/I/slti.yaml +1 -0
  223. data/.data/spec/std/isa/inst/I/sltiu.yaml +2 -1
  224. data/.data/spec/std/isa/inst/I/sltu.yaml +1 -1
  225. data/.data/spec/std/isa/inst/I/sub.yaml +1 -1
  226. data/.data/spec/std/isa/inst/I/subw.yaml +1 -1
  227. data/.data/spec/std/isa/inst/I/sw.yaml +1 -0
  228. data/.data/spec/std/isa/inst/I/xori.yaml +2 -1
  229. data/.data/spec/std/isa/inst/M/mul.yaml +0 -19
  230. data/.data/spec/std/isa/inst/Q/fsgnj.q.yaml +1 -1
  231. data/.data/spec/std/isa/inst/S/sret.yaml +3 -1
  232. data/.data/spec/std/isa/inst/V/vadc.vim.yaml +1 -0
  233. data/.data/spec/std/isa/inst/V/vadd.vi.yaml +1 -0
  234. data/.data/spec/std/isa/inst/V/vadd.vv.yaml +1 -5
  235. data/.data/spec/std/isa/inst/V/vand.vi.yaml +1 -0
  236. data/.data/spec/std/isa/inst/V/vfsgnjn.vv.yaml +3 -0
  237. data/.data/spec/std/isa/inst/V/vfsgnjx.vv.yaml +3 -0
  238. data/.data/spec/std/isa/inst/V/vl1re8.v.yaml +3 -0
  239. data/.data/spec/std/isa/inst/V/vl2re8.v.yaml +3 -0
  240. data/.data/spec/std/isa/inst/V/vl4re8.v.yaml +3 -0
  241. data/.data/spec/std/isa/inst/V/vl8re8.v.yaml +3 -0
  242. data/.data/spec/std/isa/inst/V/vle8.v.yaml +4 -8
  243. data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +1 -0
  244. data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +1 -0
  245. data/.data/spec/std/isa/inst/V/vmand.mm.yaml +3 -0
  246. data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +1 -0
  247. data/.data/spec/std/isa/inst/V/vmfle.vv.yaml +3 -0
  248. data/.data/spec/std/isa/inst/V/vmflt.vv.yaml +3 -0
  249. data/.data/spec/std/isa/inst/V/vmnand.mm.yaml +3 -0
  250. data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +1 -0
  251. data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +4 -0
  252. data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +4 -0
  253. data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +4 -0
  254. data/.data/spec/std/isa/inst/V/vmsle.vv.yaml +3 -0
  255. data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +4 -0
  256. data/.data/spec/std/isa/inst/V/vmsleu.vv.yaml +3 -0
  257. data/.data/spec/std/isa/inst/V/vmslt.vv.yaml +3 -0
  258. data/.data/spec/std/isa/inst/V/vmsltu.vv.yaml +3 -0
  259. data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +1 -0
  260. data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +2 -13
  261. data/.data/spec/std/isa/inst/V/vmv.x.s.yaml +1 -1
  262. data/.data/spec/std/isa/inst/V/vmxnor.mm.yaml +3 -0
  263. data/.data/spec/std/isa/inst/V/vmxor.mm.yaml +3 -0
  264. data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +3 -0
  265. data/.data/spec/std/isa/inst/V/vor.vi.yaml +1 -0
  266. data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +1 -0
  267. data/.data/spec/std/isa/inst/V/vrsub.vx.yaml +3 -0
  268. data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +1 -0
  269. data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +1 -0
  270. data/.data/spec/std/isa/inst/V/vse8.v.yaml +4 -4
  271. data/.data/spec/std/isa/inst/V/vwadd.vx.yaml +3 -0
  272. data/.data/spec/std/isa/inst/V/vwaddu.vx.yaml +3 -0
  273. data/.data/spec/std/isa/inst/V/vxor.vi.yaml +4 -0
  274. data/.data/spec/std/isa/inst/Zalasr/lSIZE.AQRL.layout +40 -5
  275. data/.data/spec/std/isa/inst/Zalasr/lb.aq.yaml +17 -1
  276. data/.data/spec/std/isa/inst/Zalasr/lb.aqrl.yaml +17 -1
  277. data/.data/spec/std/isa/inst/Zalasr/ld.aq.yaml +17 -1
  278. data/.data/spec/std/isa/inst/Zalasr/ld.aqrl.yaml +17 -1
  279. data/.data/spec/std/isa/inst/Zalasr/lh.aq.yaml +17 -1
  280. data/.data/spec/std/isa/inst/Zalasr/lh.aqrl.yaml +17 -1
  281. data/.data/spec/std/isa/inst/Zalasr/lw.aq.yaml +17 -1
  282. data/.data/spec/std/isa/inst/Zalasr/lw.aqrl.yaml +17 -1
  283. data/.data/spec/std/isa/inst/Zalasr/sSIZE.AQRL.layout +46 -5
  284. data/.data/spec/std/isa/inst/Zalasr/sb.aqrl.yaml +16 -1
  285. data/.data/spec/std/isa/inst/Zalasr/sb.rl.yaml +16 -1
  286. data/.data/spec/std/isa/inst/Zalasr/sd.aqrl.yaml +16 -1
  287. data/.data/spec/std/isa/inst/Zalasr/sd.rl.yaml +16 -1
  288. data/.data/spec/std/isa/inst/Zalasr/sh.aqrl.yaml +16 -1
  289. data/.data/spec/std/isa/inst/Zalasr/sh.rl.yaml +16 -1
  290. data/.data/spec/std/isa/inst/Zalasr/sw.aqrl.yaml +16 -1
  291. data/.data/spec/std/isa/inst/Zalasr/sw.rl.yaml +16 -1
  292. data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +4 -2
  293. data/.data/spec/std/isa/inst/Zba/add.uw.yaml +9 -11
  294. data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +1 -1
  295. data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +3 -3
  296. data/.data/spec/std/isa/inst/Zbkb/packw.yaml +1 -1
  297. data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +2 -2
  298. data/.data/spec/std/isa/inst/Zbkb/zip.yaml +2 -2
  299. data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +2 -2
  300. data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +2 -2
  301. data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +1 -1
  302. data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +1 -1
  303. data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +1 -1
  304. data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +1 -1
  305. data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +1 -1
  306. data/.data/spec/std/isa/inst/Zcmp/cm.pop.yaml +1 -1
  307. data/.data/spec/std/isa/inst/Zcmp/cm.popret.yaml +1 -1
  308. data/.data/spec/std/isa/inst/Zcmp/cm.popretz.yaml +1 -1
  309. data/.data/spec/std/isa/inst/Zcmp/cm.push.yaml +2 -3
  310. data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
  311. data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +6 -6
  312. data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +5 -5
  313. data/.data/spec/std/isa/inst/Zfh/flh.yaml +1 -1
  314. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +1 -1
  315. data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +1 -1
  316. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +1 -1
  317. data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +2 -0
  318. data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +2 -0
  319. data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +2 -0
  320. data/.data/spec/std/isa/inst/Zicsr/csrrc.yaml +1 -1
  321. data/.data/spec/std/isa/inst/Zicsr/csrrci.yaml +1 -1
  322. data/.data/spec/std/isa/inst/Zicsr/csrrs.yaml +2 -2
  323. data/.data/spec/std/isa/inst/Zicsr/csrrsi.yaml +1 -1
  324. data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +1 -1
  325. data/.data/spec/std/isa/inst/Zicsr/csrrwi.yaml +1 -1
  326. data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +1 -1
  327. data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +1 -1
  328. data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +1 -1
  329. data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +1 -1
  330. data/.data/spec/std/isa/isa/builtin_functions.idl +18 -0
  331. data/.data/spec/std/isa/isa/fp.idl +1 -5
  332. data/.data/spec/std/isa/isa/globals.isa +72 -21
  333. data/.data/spec/std/isa/isa/interrupts.idl +1 -0
  334. data/.data/spec/std/isa/isa/vec.idl +1 -2
  335. data/.data/spec/std/isa/manual_version/isa/20240411/isa_20240411.yaml +5 -5
  336. data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +8 -2
  337. data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +1 -0
  338. data/.data/spec/std/isa/param/JVT_BASE_MASK.yaml +1 -1
  339. data/.data/spec/std/isa/param/MCOUNTINHIBIT_IMPLEMENTED.yaml +25 -0
  340. data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +1 -0
  341. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +1 -0
  342. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +1 -0
  343. data/.data/spec/std/isa/param/MTVEC_MODES.yaml +10 -3
  344. data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +11 -22
  345. data/.data/spec/std/isa/param/NUM_USABLE_PMP_ENTRIES.yaml +35 -0
  346. data/.data/spec/std/isa/param/PMP_NA4_SUPPORTED.yaml +23 -0
  347. data/.data/spec/std/isa/param/PMP_NAPOT_SUPPORTED.yaml +19 -0
  348. data/.data/spec/std/isa/param/{MSTATUS_TVM_IMPLEMENTED.yaml → PMP_TOR_SUPPORTED.yaml} +6 -6
  349. data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +1 -0
  350. data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +1 -0
  351. data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +1 -0
  352. data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +1 -0
  353. data/.data/spec/std/isa/param/VLEN.yaml +2 -0
  354. data/.data/spec/std/isa/param/ZAWRS_NTO_IS_NOP.yaml +19 -0
  355. data/.data/spec/std/isa/profile/RVA20S64.yaml +11 -4
  356. data/.data/spec/std/isa/profile/RVA20U64.yaml +14 -5
  357. data/.data/spec/std/isa/profile/RVA22S64.yaml +14 -3
  358. data/.data/spec/std/isa/profile/RVA22U64.yaml +8 -1
  359. data/.data/spec/std/isa/profile/RVA23S64.yaml +13 -0
  360. data/.data/spec/std/isa/profile/RVA23U64.yaml +15 -1
  361. data/.data/spec/std/isa/profile/RVB23S64.yaml +15 -3
  362. data/.data/spec/std/isa/profile/RVB23U64.yaml +8 -1
  363. data/.data/spec/std/isa/profile/RVI20U32.yaml +8 -1
  364. data/.data/spec/std/isa/profile/RVI20U64.yaml +7 -0
  365. data/.data/spec/std/isa/register_file/F.yaml +3 -2
  366. data/.data/spec/std/isa/register_file/V.yaml +2 -2
  367. data/.data/spec/std/isa/register_file/X.yaml +2 -1
  368. data/lib/udb/ESPRESSO_VERSION +1 -1
  369. data/lib/udb/architecture.rb +4 -25
  370. data/lib/udb/cfg_arch.rb +171 -59
  371. data/lib/udb/cli.rb +10 -1
  372. data/lib/udb/condition.rb +38 -37
  373. data/lib/udb/config.rb +86 -8
  374. data/lib/udb/doc_link.rb +3 -4
  375. data/lib/udb/logic.rb +29 -56
  376. data/lib/udb/obj/csr.rb +23 -5
  377. data/lib/udb/obj/csr_field.rb +36 -21
  378. data/lib/udb/obj/database_obj.rb +2 -5
  379. data/lib/udb/obj/extension.rb +0 -3
  380. data/lib/udb/obj/instruction.rb +2 -5
  381. data/lib/udb/obj/non_isa_specification.rb +22 -100
  382. data/lib/udb/obj/portfolio.rb +75 -20
  383. data/lib/udb/obj/profile.rb +0 -4
  384. data/lib/udb/obj/register_file.rb +63 -2
  385. data/lib/udb/portfolio_design.rb +3 -6
  386. data/lib/udb/resolver.rb +84 -23
  387. data/lib/udb/version.rb +1 -1
  388. data/lib/udb/version_spec.rb +8 -0
  389. data/lib/udb/z3.rb +25 -2
  390. data/lib/udb.rb +0 -3
  391. metadata +30 -38
  392. data/.data/cfgs/profile/RVA23M64.yaml +0 -159
  393. data/.data/cfgs/profile/RVB23M64.yaml +0 -149
  394. data/.data/spec/schemas/proc_cert_class_schema.json +0 -35
  395. data/.data/spec/schemas/proc_cert_model_schema.json +0 -336
  396. data/.data/spec/std/isa/proc_cert_class/AC.yaml +0 -13
  397. data/.data/spec/std/isa/proc_cert_class/MC.yaml +0 -13
  398. data/.data/spec/std/isa/proc_cert_class/RVI.yaml +0 -16
  399. data/.data/spec/std/isa/proc_cert_model/AC100.yaml +0 -72
  400. data/.data/spec/std/isa/proc_cert_model/AC200.yaml +0 -58
  401. data/.data/spec/std/isa/proc_cert_model/MC100-32.yaml +0 -155
  402. data/.data/spec/std/isa/proc_cert_model/MC100-64.yaml +0 -21
  403. data/.data/spec/std/isa/proc_cert_model/MC200-32.yaml +0 -60
  404. data/.data/spec/std/isa/proc_cert_model/MC200-64.yaml +0 -21
  405. data/.data/spec/std/isa/proc_cert_model/MC300-32.yaml +0 -40
  406. data/.data/spec/std/isa/proc_cert_model/MC300-64.yaml +0 -21
  407. data/.data/spec/std/isa/proc_cert_model/RVI20-32.yaml +0 -39
  408. data/.data/spec/std/isa/proc_cert_model/RVI20-64.yaml +0 -19
  409. data/.data/spec/std/isa/profile/RVA23M64.yaml +0 -24
  410. data/.data/spec/std/isa/profile/RVB23M64.yaml +0 -86
  411. data/lib/udb/cert_normative_rule.rb +0 -41
  412. data/lib/udb/obj/certifiable_obj.rb +0 -21
  413. data/lib/udb/obj/certificate.rb +0 -230
  414. data/lib/udb/proc_cert_design.rb +0 -77
@@ -29,6 +29,7 @@ encoding:
29
29
  variables:
30
30
  - name: imm
31
31
  location: 31-20
32
+ sign_extend: true
32
33
  - name: xs1
33
34
  location: 19-15
34
35
  - name: xd
@@ -39,6 +40,7 @@ encoding:
39
40
  variables:
40
41
  - name: imm
41
42
  location: 31-20
43
+ sign_extend: true
42
44
  - name: xs1
43
45
  location: 19-15
44
46
  - name: xd
@@ -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: xd
@@ -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: xd
@@ -18,6 +18,7 @@ encoding:
18
18
  - name: imm
19
19
  location: 31-12
20
20
  left_shift: 12
21
+ sign_extend: true
21
22
  - name: xd
22
23
  location: 11-7
23
24
  access:
@@ -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: xd
@@ -22,6 +22,7 @@ encoding:
22
22
  variables:
23
23
  - name: imm
24
24
  location: 31-20
25
+ sign_extend: true
25
26
  - name: xs1
26
27
  location: 19-15
27
28
  - name: xd
@@ -17,6 +17,7 @@ encoding:
17
17
  variables:
18
18
  - name: imm
19
19
  location: 31-20
20
+ sign_extend: true
20
21
  - name: xs1
21
22
  location: 19-15
22
23
  - name: xd
@@ -19,6 +19,7 @@ encoding:
19
19
  variables:
20
20
  - name: imm
21
21
  location: 31-25|11-7
22
+ sign_extend: true
22
23
  - name: xs2
23
24
  location: 24-20
24
25
  - name: xs1
@@ -25,6 +25,7 @@ encoding:
25
25
  variables:
26
26
  - name: imm
27
27
  location: 31-25|11-7
28
+ sign_extend: true
28
29
  - name: xs2
29
30
  not: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
30
31
  location: 24-20
@@ -19,6 +19,7 @@ encoding:
19
19
  variables:
20
20
  - name: imm
21
21
  location: 31-25|11-7
22
+ sign_extend: true
22
23
  - name: xs2
23
24
  location: 24-20
24
25
  - name: xs1
@@ -31,9 +31,9 @@ access:
31
31
  data_independent_timing: true
32
32
  pseudoinstructions:
33
33
  - when: xs2 == 0
34
- to: sltz xd,xs1
34
+ to: sltz xd, xs1
35
35
  - when: xs1 == 0
36
- to: sgtz xd,xs2
36
+ to: sgtz xd, xs2
37
37
  operation(): |
38
38
  XReg src1 = X[xs1];
39
39
  XReg src2 = X[xs2];
@@ -19,6 +19,7 @@ encoding:
19
19
  variables:
20
20
  - name: imm
21
21
  location: 31-20
22
+ sign_extend: true
22
23
  - name: xs1
23
24
  location: 19-15
24
25
  - name: xd
@@ -23,6 +23,7 @@ encoding:
23
23
  variables:
24
24
  - name: imm
25
25
  location: 31-20
26
+ sign_extend: true
26
27
  - name: xs1
27
28
  location: 19-15
28
29
  - name: xd
@@ -35,7 +36,7 @@ access:
35
36
  data_independent_timing: true
36
37
  pseudoinstructions:
37
38
  - when: imm == 1
38
- to: seqz xd,xs1
39
+ to: seqz xd, xs1
39
40
  operation(): |
40
41
  Bits<MXLEN> sign_extend_imm = $signed(imm);
41
42
  X[xd] = (X[xs1] < sign_extend_imm) ? 1 : 0;
@@ -31,6 +31,6 @@ access:
31
31
  data_independent_timing: true
32
32
  pseudoinstructions:
33
33
  - when: xs1 == 0
34
- to: snez xd,xs2
34
+ to: snez xd, xs2
35
35
  operation(): |
36
36
  X[xd] = (X[xs1] < X[xs2]) ? 1 : 0;
@@ -29,7 +29,7 @@ access:
29
29
  data_independent_timing: true
30
30
  pseudoinstructions:
31
31
  - when: xs1 == 0
32
- to: neg xd,xs2
32
+ to: neg xd, xs2
33
33
  operation(): |
34
34
  XReg t0 = X[xs1];
35
35
  XReg t1 = X[xs2];
@@ -33,7 +33,7 @@ access:
33
33
  data_independent_timing: true
34
34
  pseudoinstructions:
35
35
  - when: xs1 == 0
36
- to: negw xd,xs2
36
+ to: negw xd, xs2
37
37
  operation(): |
38
38
  Bits<32> t0 = X[xs1][31:0];
39
39
  Bits<32> t1 = X[xs2][31:0];
@@ -19,6 +19,7 @@ encoding:
19
19
  variables:
20
20
  - name: imm
21
21
  location: 31-25|11-7
22
+ sign_extend: true
22
23
  - name: xs2
23
24
  location: 24-20
24
25
  - name: xs1
@@ -19,6 +19,7 @@ encoding:
19
19
  variables:
20
20
  - name: imm
21
21
  location: 31-20
22
+ sign_extend: true
22
23
  - name: xs1
23
24
  location: 19-15
24
25
  - name: xd
@@ -31,5 +32,5 @@ access:
31
32
  data_independent_timing: true
32
33
  pseudoinstructions:
33
34
  - when: $signed(imm) == -1
34
- to: not xd,xs1
35
+ to: not xd, xs1
35
36
  operation(): X[xd] = X[xs1] ^ $signed(imm);
@@ -50,22 +50,3 @@ operation(): |
50
50
  XReg src2 = X[xs2];
51
51
 
52
52
  X[xd] = (src1 * src2)[MXLEN-1:0];
53
-
54
- cert_normative_rules:
55
- - id: inst.mul.encoding
56
- name: Encoding
57
- description: Encoding of `mul` instruction
58
- doc_links:
59
- - manual:inst:mul:encoding
60
- - id: inst.mul.basic_op
61
- name: Basic operation
62
- description: Basic operation of `mul` instruction
63
- doc_links:
64
- - manual:inst:mul:operation
65
- - id: inst.mul.ill_exc_misa_M_disabled
66
- name: Illegal instruction exception when misa.M is 0
67
- description: |
68
- An illegal instruction exception is raised when the instruction is executed
69
- and `misa.M` is 0.
70
- doc_links:
71
- - manual:csr:misa:disabling-extension
@@ -32,5 +32,5 @@ access:
32
32
  data_independent_timing: false
33
33
  pseudoinstructions:
34
34
  - when: (fs2 == fs1)
35
- to: fmv.q fd,fs1
35
+ to: fmv.q fd, fs1
36
36
  operation(): |
@@ -133,7 +133,7 @@ operation(): |
133
133
  CSR[mstatus].SPIE = 1;
134
134
  CSR[mstatus].SPP = 2'b00;
135
135
  $pc = $bits(CSR[sepc]);
136
- } else {
136
+ } else if (implemented?(ExtensionName::H)) {
137
137
  if (CSR[mstatus].TSR == 1'b1) {
138
138
  raise (ExceptionCode::IllegalInstruction, mode(), $encoding);
139
139
  }
@@ -141,4 +141,6 @@ operation(): |
141
141
  CSR[vsstatus].SIE = CSR[vsstatus].SPIE;
142
142
  CSR[vsstatus].SPIE = 1;
143
143
  $pc = $bits(CSR[vsepc]);
144
+ } else {
145
+ unreachable();
144
146
  }
@@ -20,6 +20,7 @@ encoding:
20
20
  location: 24-20
21
21
  - name: imm
22
22
  location: 19-15
23
+ sign_extend: true
23
24
  - name: vd
24
25
  location: 11-7
25
26
  access:
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -47,11 +47,7 @@ operation(): |
47
47
  for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
48
48
  U32 start_bit_pos = i * state.sew;
49
49
  U32 end_bit_pos = start_bit_pos + state.sew - 1;
50
- v[vd] = {
51
- v[vd][VLEN-1:end_bit_pos + 1],
52
- (v[vs2])[end_bit_pos:start_bit_pos] + (v[vs1])[end_bit_pos:start_bit_pos],
53
- v[vd][start_bit_pos-1:0]
54
- };
50
+ V[vd][end_bit_pos:start_bit_pos] = V[vs2][end_bit_pos:start_bit_pos] + V[vs1][end_bit_pos:start_bit_pos];
55
51
  }
56
52
 
57
53
  CSR[vstart].VALUE = 0;
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: vs2 == vs1
34
+ to: vfneg.v vd, vs2
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: vs2 == vs1
34
+ to: vfabs.v vd, vs2
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -25,5 +25,8 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
+ pseudoinstructions:
29
+ - when: "true"
30
+ to: vl1r.v vd, (xs1)
28
31
  data_independent_timing: false
29
32
  operation(): |
@@ -25,5 +25,8 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
+ pseudoinstructions:
29
+ - when: "true"
30
+ to: vl2r.v vd, (xs1)
28
31
  data_independent_timing: false
29
32
  operation(): |
@@ -25,5 +25,8 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
+ pseudoinstructions:
29
+ - when: "true"
30
+ to: vl4r.v vd, (xs1)
28
31
  data_independent_timing: false
29
32
  operation(): |
@@ -25,5 +25,8 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
+ pseudoinstructions:
29
+ - when: "true"
30
+ to: vl8r.v vd, (xs1)
28
31
  data_independent_timing: false
29
32
  operation(): |
@@ -31,13 +31,9 @@ data_independent_timing: false
31
31
  operation(): |
32
32
  XReg virtual_address = X[xs1];
33
33
  # "A simple in-order implementation can ignore the settings and simply execute all vector instructions using the undisturbed policy"
34
- for (U32 i = 0; i < CSR[vl].VALUE; i++) {
35
- U32 start_bit_pos = (CSR[vstart].VALUE + i) * 8;
34
+ for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
35
+ U32 start_bit_pos = i * 8;
36
36
  U32 end_bit_pos = start_bit_pos + 7;
37
- v[vd] = {
38
- v[vd][VLEN-1:end_bit_pos + 1],
39
- sext(read_memory(8, virtual_address, $encoding), 8),
40
- v[vd][start_bit_pos-1:0]
41
- };
42
- virtual_address = virtual_address + 1;
37
+ V[vd][end_bit_pos:start_bit_pos] = read_memory(8, virtual_address + i, $encoding)[7:0];
43
38
  }
39
+ CSR[vstart].VALUE = 0;
@@ -20,6 +20,7 @@ encoding:
20
20
  location: 24-20
21
21
  - name: imm
22
22
  location: 19-15
23
+ sign_extend: true
23
24
  - name: vd
24
25
  location: 11-7
25
26
  access:
@@ -20,6 +20,7 @@ encoding:
20
20
  location: 24-20
21
21
  - name: imm
22
22
  location: 19-15
23
+ sign_extend: true
23
24
  - name: vd
24
25
  location: 11-7
25
26
  access:
@@ -27,5 +27,8 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
+ pseudoinstructions:
31
+ - when: vs2 == vs1
32
+ to: vmmv.m vd, vs2
30
33
  data_independent_timing: false
31
34
  operation(): |
@@ -20,6 +20,7 @@ encoding:
20
20
  location: 24-20
21
21
  - name: imm
22
22
  location: 19-15
23
+ sign_extend: true
23
24
  - name: vd
24
25
  location: 11-7
25
26
  access:
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: "true"
34
+ to: vmfge.vv vd, vs1, vs2, vm
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: "true"
34
+ to: vmfgt.vv vd, vs1, vs2, vm
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -27,5 +27,8 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
+ pseudoinstructions:
31
+ - when: vs2 == vs1
32
+ to: vmnot.m vd, vs2
30
33
  data_independent_timing: false
31
34
  operation(): |
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -29,5 +30,8 @@ access:
29
30
  u: always
30
31
  vs: always
31
32
  vu: always
33
+ pseudoinstructions:
34
+ - when: imm < 5'b11111
35
+ to: vmsge.vi vd, vs2, imm+1, vm
32
36
  data_independent_timing: false
33
37
  operation(): |
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -29,5 +30,8 @@ access:
29
30
  u: always
30
31
  vs: always
31
32
  vu: always
33
+ pseudoinstructions:
34
+ - when: imm < 5'b11111
35
+ to: vmsgeu.vi vd, vs2, imm+1, vm
32
36
  data_independent_timing: false
33
37
  operation(): |
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -29,5 +30,8 @@ access:
29
30
  u: always
30
31
  vs: always
31
32
  vu: always
33
+ pseudoinstructions:
34
+ - when: imm < 5'b11111
35
+ to: vmslt.vi vd, vs2, imm+1, vm
32
36
  data_independent_timing: false
33
37
  operation(): |
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: "true"
34
+ to: vmsge.vv vd, vs1, vs2, vm
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -29,5 +30,8 @@ access:
29
30
  u: always
30
31
  vs: always
31
32
  vu: always
33
+ pseudoinstructions:
34
+ - when: imm < 5'b11111
35
+ to: vmsltu.vi vd, vs2, imm+1, vm
32
36
  data_independent_timing: false
33
37
  operation(): |
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: "true"
34
+ to: vmsgeu.vv vd, vs1, vs2, vm
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: "true"
34
+ to: vmsgt.vv vd, vs1, vs2, vm
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: "true"
34
+ to: vmsgtu.vv vd, vs1, vs2, vm
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -54,19 +54,8 @@ operation(): |
54
54
  U32 start_bit_pos = i * state.sew;
55
55
  U32 end_bit_pos = start_bit_pos + state.sew - 1;
56
56
 
57
- # Write the sign-extended immediate (truncated to SEW bits) to the element,
58
- # guarding against invalid bit-slice ranges at vector register boundaries
59
- if (start_bit_pos == 0) {
60
- if (end_bit_pos == VLEN - 1) {
61
- v[vd] = sext_imm[state.sew-1:0];
62
- } else {
63
- v[vd] = {v[vd][VLEN-1:end_bit_pos + 1], sext_imm[state.sew-1:0]};
64
- }
65
- } else if (end_bit_pos == VLEN - 1) {
66
- v[vd] = {sext_imm[state.sew-1:0], v[vd][start_bit_pos-1:0]};
67
- } else {
68
- v[vd] = {v[vd][VLEN-1:end_bit_pos + 1], sext_imm[state.sew-1:0], v[vd][start_bit_pos-1:0]};
69
- }
57
+ # Write the sign-extended immediate (truncated to SEW bits) to the element
58
+ V[vd][end_bit_pos:start_bit_pos] = sext_imm[state.sew-1:0];
70
59
  }
71
60
 
72
61
  CSR[vstart].VALUE = 0;
@@ -34,6 +34,6 @@ operation(): |
34
34
  VectorState state = vector_state();
35
35
 
36
36
  # vmv.x.s copies element 0 of vs2 to xd, sign-extending to XLEN
37
- X[xd] = $signed(v[vs2][state.sew-1:0]);
37
+ X[xd] = $signed(V[vs2][state.sew-1:0]);
38
38
 
39
39
  CSR[vstart].VALUE = 0;
@@ -27,5 +27,8 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
+ pseudoinstructions:
31
+ - when: (vs2 == vs1) && (vd == vs2)
32
+ to: vmset.m vd
30
33
  data_independent_timing: false
31
34
  operation(): |
@@ -27,5 +27,8 @@ access:
27
27
  u: always
28
28
  vs: always
29
29
  vu: always
30
+ pseudoinstructions:
31
+ - when: (vs2 == vs1) && (vd == vs2)
32
+ to: vmclr.m vd
30
33
  data_independent_timing: false
31
34
  operation(): |
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: xs1 == 0
34
+ to: vncvt.x.x.w vd, vs2, vm
32
35
  data_independent_timing: false
33
36
  operation(): |
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access:
@@ -29,5 +29,8 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
+ pseudoinstructions:
33
+ - when: xs1 == 0
34
+ to: vneg.v vd, vs2, vm
32
35
  data_independent_timing: true
33
36
  operation(): |
@@ -22,6 +22,7 @@ encoding:
22
22
  location: 24-20
23
23
  - name: imm
24
24
  location: 19-15
25
+ sign_extend: true
25
26
  - name: vd
26
27
  location: 11-7
27
28
  access: