diff --git a/arch/inst/A/lr.w.yaml b/arch/inst/A/lr.w.yaml index 9df0a62c..46442c6b 100644 --- a/arch/inst/A/lr.w.yaml +++ b/arch/inst/A/lr.w.yaml @@ -45,7 +45,8 @@ lr.w: Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set. LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those with both bits clear, but may result in lower performance. - definedBy: A + definedBy: + anyOf: [A, Zalrsc] assembly: xd, xs1 encoding: match: 00010--00000-----010-----0101111 diff --git a/arch/inst/A/sc.d.yaml b/arch/inst/A/sc.d.yaml index 2a692b82..c50aaa02 100644 --- a/arch/inst/A/sc.d.yaml +++ b/arch/inst/A/sc.d.yaml @@ -96,7 +96,8 @@ sc.d: Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set. LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those with both bits clear, but may result in lower performance. - definedBy: A + definedBy: + anyOf: [A, Zalrsc] assembly: xd, xs2, xs1 encoding: match: 00011------------011-----0101111 diff --git a/arch/inst/A/sc.w.yaml b/arch/inst/A/sc.w.yaml index 94fd254d..efd798c9 100644 --- a/arch/inst/A/sc.w.yaml +++ b/arch/inst/A/sc.w.yaml @@ -102,7 +102,8 @@ sc.w: Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set. LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those with both bits clear, but may result in lower performance. - definedBy: A + definedBy: + anyOf: [A, Zalrsc] assembly: xd, xs2, xs1 encoding: match: 00011------------010-----0101111 diff --git a/arch/inst/B/andn.yaml b/arch/inst/B/andn.yaml index 82978d32..a09ed482 100644 --- a/arch/inst/B/andn.yaml +++ b/arch/inst/B/andn.yaml @@ -6,7 +6,7 @@ andn: This instruction performs the bitwise logical AND operation between `rs1` and the bitwise inversion of `rs2`. definedBy: - anyOf: [B, Zbb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, xs2 encoding: match: 0100000----------111-----0110011 diff --git a/arch/inst/B/clmul.yaml b/arch/inst/B/clmul.yaml index 7d99b153..f9394291 100644 --- a/arch/inst/B/clmul.yaml +++ b/arch/inst/B/clmul.yaml @@ -5,7 +5,7 @@ clmul: description: | `clmul` produces the lower half of the 2*XLEN carry-less product definedBy: - anyOf: [B, Zbc] + anyOf: [B, Zbc, Zbkc, Zk, Zkn, Zks] assembly: xd, xs1, xs2 encoding: match: 0000101----------001-----0110011 diff --git a/arch/inst/B/clmulh.yaml b/arch/inst/B/clmulh.yaml index f82e70dd..ee6cdb74 100644 --- a/arch/inst/B/clmulh.yaml +++ b/arch/inst/B/clmulh.yaml @@ -5,7 +5,7 @@ clmulh: description: | `clmulh` produces the upper half of the 2*XLEN carry-less product definedBy: - anyOf: [B, Zbc] + anyOf: [B, Zbc, Zbkc, Zk, Zkn, Zks] assembly: xd, xs1, xs2 encoding: match: 0000101----------011-----0110011 diff --git a/arch/inst/B/orn.yaml b/arch/inst/B/orn.yaml index 9fd1ef34..a54ae78c 100644 --- a/arch/inst/B/orn.yaml +++ b/arch/inst/B/orn.yaml @@ -5,7 +5,7 @@ orn: description: | This instruction performs the bitwise logical OR operation between rs1 and the bitwise inversion of rs2. definedBy: - anyOf: [B, Zbb, Zbkb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, xs2 encoding: match: 0100000----------110-----0110011 diff --git a/arch/inst/B/rol.yaml b/arch/inst/B/rol.yaml index 88227219..298719f1 100644 --- a/arch/inst/B/rol.yaml +++ b/arch/inst/B/rol.yaml @@ -5,7 +5,7 @@ rol: description: | This instruction performs a rotate left of rs1 by the amount in least-significant `log2(XLEN)` bits of rs2. definedBy: - anyOf: [B, Zbb, Zbkb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, xs2 encoding: match: 0110000----------001-----0110011 diff --git a/arch/inst/B/rolw.yaml b/arch/inst/B/rolw.yaml index ee2264e5..0a3d0e9b 100644 --- a/arch/inst/B/rolw.yaml +++ b/arch/inst/B/rolw.yaml @@ -6,7 +6,7 @@ rolw: This instruction performs a rotate left of the least-significant word of rs1 by the amount in least-significant 5 bits of rs2. The resulting word value is sign-extended by copying bit 31 to all of the more-significant bits. definedBy: - anyOf: [B, Zbb, Zbkb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, xs2 base: 64 encoding: diff --git a/arch/inst/B/ror.yaml b/arch/inst/B/ror.yaml index 603a6c96..522571ed 100644 --- a/arch/inst/B/ror.yaml +++ b/arch/inst/B/ror.yaml @@ -5,7 +5,7 @@ ror: description: | This instruction performs a rotate right of rs1 by the amount in least-significant `log2(XLEN)` bits of rs2. definedBy: - anyOf: [B, Zbb, Zbkb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, xs2 encoding: match: 0110000----------101-----0110011 diff --git a/arch/inst/B/rori.yaml b/arch/inst/B/rori.yaml index b59bc31d..5902f2d8 100644 --- a/arch/inst/B/rori.yaml +++ b/arch/inst/B/rori.yaml @@ -6,7 +6,7 @@ rori: This instruction performs a rotate right of rs1 by the amount in the least-significant log2(XLEN) bits of shamt. For RV32, the encodings corresponding to shamt[5]=1 are reserved. definedBy: - anyOf: [B, Zbb, Zbkb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, shamt encoding: RV32: diff --git a/arch/inst/B/roriw.yaml b/arch/inst/B/roriw.yaml index 4d7796ff..846d83ce 100644 --- a/arch/inst/B/roriw.yaml +++ b/arch/inst/B/roriw.yaml @@ -7,7 +7,7 @@ roriw: the least-significant log2(XLEN) bits of shamt. The resulting word value is sign-extended by copying bit 31 to all of the more-significant bits. definedBy: - anyOf: [B, Zbb, Zbkb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, shamt base: 64 encoding: diff --git a/arch/inst/B/rorw.yaml b/arch/inst/B/rorw.yaml index 3bba7f96..a34b959e 100644 --- a/arch/inst/B/rorw.yaml +++ b/arch/inst/B/rorw.yaml @@ -7,7 +7,7 @@ rorw: least-significant 5 bits of rs2. The resultant word is sign-extended by copying bit 31 to all of the more-significant bits. definedBy: - anyOf: [B, Zbb, Zbkb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, xs2 base: 64 encoding: diff --git a/arch/inst/B/xnor.yaml b/arch/inst/B/xnor.yaml index 498c9fc6..2a4512fe 100644 --- a/arch/inst/B/xnor.yaml +++ b/arch/inst/B/xnor.yaml @@ -5,7 +5,7 @@ xnor: description: | This instruction performs the bit-wise exclusive-NOR operation on rs1 and rs2. definedBy: - anyOf: [B, Zbb, Zbkb] + anyOf: [B, Zbb, Zbkb, Zk, Zkn, Zks] assembly: xd, xs1, xs2 encoding: match: 0100000----------100-----0110011 diff --git a/arch/inst/B/zext.h.yaml b/arch/inst/B/zext.h.yaml index b6cdb1cc..7bca6dd6 100644 --- a/arch/inst/B/zext.h.yaml +++ b/arch/inst/B/zext.h.yaml @@ -10,7 +10,7 @@ zext.h: The *zext.h* instruction is a pseudo-op for `pack` when `Zbkb` is implemented and XLEN == 32. [NOTE] - The *zext.h* instruction is a pseduo-op for `packw` when `Zbkb` is implmeneted and XLEN == 64. + The *zext.h* instruction is a pseudo-op for `packw` when `Zbkb` is implemented and XLEN == 64. definedBy: anyOf: [B, Zbb] encoding: @@ -28,7 +28,8 @@ zext.h: location: 19-15 - name: rd location: 11-7 - excludedBy: Zbkb # zext.h is a pseduo-op for pack/packw when Zbkb is implemented + excludedBy: + anyOf: [Zk, Zkn, Zks, Zbkb] # zext.h instruction is a pseudo-op for `packw` when `Zbkb` is implemented assembly: xd, xs1 access: s: always diff --git a/arch/inst/Zimop/mop.r.n.yaml b/arch/inst/Zimop/mop.r.n.yaml new file mode 100644 index 00000000..69acaabf --- /dev/null +++ b/arch/inst/Zimop/mop.r.n.yaml @@ -0,0 +1,94 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +mop.r.n: + long_name: No synopsis available. + description: | + No description available. + definedBy: Zimop + assembly: mop_r_t_30, mop_r_t_27_26, mop_r_t_21_20, xd, xs1 + encoding: + match: 1-00--0111-------100-----1110011 + variables: + - name: mop_r_t_30 + location: 30-30 + - name: mop_r_t_27_26 + location: 27-26 + - name: mop_r_t_21_20 + location: 21-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + pseudoinstructions: + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x0) && (mop_r_t_27_26 == 0x0) + to: mop.r.0 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x1) && (mop_r_t_27_26 == 0x0) + to: mop.r.1 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x2) && (mop_r_t_27_26 == 0x0) + to: mop.r.2 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x3) && (mop_r_t_27_26 == 0x0) + to: mop.r.3 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x0) && (mop_r_t_27_26 == 0x1) + to: mop.r.4 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x1) && (mop_r_t_27_26 == 0x1) + to: mop.r.5 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x2) && (mop_r_t_27_26 == 0x1) + to: mop.r.6 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x3) && (mop_r_t_27_26 == 0x1) + to: mop.r.7 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x0) && (mop_r_t_27_26 == 0x2) + to: mop.r.8 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x1) && (mop_r_t_27_26 == 0x2) + to: mop.r.9 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x2) && (mop_r_t_27_26 == 0x2) + to: mop.r.10 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x3) && (mop_r_t_27_26 == 0x2) + to: mop.r.11 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x0) && (mop_r_t_27_26 == 0x3) + to: mop.r.12 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x1) && (mop_r_t_27_26 == 0x3) + to: mop.r.13 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x2) && (mop_r_t_27_26 == 0x3) + to: mop.r.14 + - when: (mop_r_t_30 == 0x0) && (mop_r_t_21_20 == 0x3) && (mop_r_t_27_26 == 0x3) + to: mop.r.15 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x0) && (mop_r_t_27_26 == 0x0) + to: mop.r.16 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x1) && (mop_r_t_27_26 == 0x0) + to: mop.r.17 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x2) && (mop_r_t_27_26 == 0x0) + to: mop.r.18 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x3) && (mop_r_t_27_26 == 0x0) + to: mop.r.19 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x0) && (mop_r_t_27_26 == 0x1) + to: mop.r.20 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x1) && (mop_r_t_27_26 == 0x1) + to: mop.r.21 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x2) && (mop_r_t_27_26 == 0x1) + to: mop.r.22 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x3) && (mop_r_t_27_26 == 0x1) + to: mop.r.23 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x0) && (mop_r_t_27_26 == 0x2) + to: mop.r.24 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x1) && (mop_r_t_27_26 == 0x2) + to: mop.r.25 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x2) && (mop_r_t_27_26 == 0x2) + to: mop.r.26 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x3) && (mop_r_t_27_26 == 0x2) + to: mop.r.27 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x0) && (mop_r_t_27_26 == 0x3) + to: mop.r.28 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x1) && (mop_r_t_27_26 == 0x3) + to: mop.r.29 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x2) && (mop_r_t_27_26 == 0x3) + to: mop.r.30 + - when: (mop_r_t_30 == 0x1) && (mop_r_t_21_20 == 0x3) && (mop_r_t_27_26 == 0x3) + to: mop.r.31 + operation(): | + diff --git a/arch/inst/Zimop/mop.rr.n.yaml b/arch/inst/Zimop/mop.rr.n.yaml new file mode 100644 index 00000000..b0a35eb8 --- /dev/null +++ b/arch/inst/Zimop/mop.rr.n.yaml @@ -0,0 +1,46 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +mop.rr.n: + long_name: No synopsis available. + description: | + No description available. + definedBy: Zimop + assembly: mop_rr_t_30, mop_rr_t_27_26, xd, xs1, xs2 + encoding: + match: 1-00--1----------100-----1110011 + variables: + - name: mop_rr_t_30 + location: 30-30 + - name: mop_rr_t_27_26 + location: 27-26 + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + pseudoinstructions: + - when: (mop_rr_t_30 == 0x0) && (mop_rr_t_27_26 == 0x0) + to: mop.rr.0 + - when: (mop_rr_t_30 == 0x0) && (mop_rr_t_27_26 == 0x1) + to: mop.rr.1 + - when: (mop_rr_t_30 == 0x0) && (mop_rr_t_27_26 == 0x2) + to: mop.rr.2 + - when: (mop_rr_t_30 == 0x0) && (mop_rr_t_27_26 == 0x3) + to: mop.rr.3 + - when: (mop_rr_t_30 == 0x1) && (mop_rr_t_27_26 == 0x0) + to: mop.rr.4 + - when: (mop_rr_t_30 == 0x1) && (mop_rr_t_27_26 == 0x1) + to: mop.rr.5 + - when: (mop_rr_t_30 == 0x1) && (mop_rr_t_27_26 == 0x2) + to: mop.rr.6 + - when: (mop_rr_t_30 == 0x1) && (mop_rr_t_27_26 == 0x3) + to: mop.rr.7 + operation(): | + diff --git a/arch/inst/Zk/aes32dsi.yaml b/arch/inst/Zk/aes32dsi.yaml new file mode 100644 index 00000000..ed2481d9 --- /dev/null +++ b/arch/inst/Zk/aes32dsi.yaml @@ -0,0 +1,29 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes32dsi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknd] + base: 32 + assembly: xd, xs1, xs2, bs + encoding: + match: --10101----------000-----0110011 + variables: + - name: bs + location: 31-30 + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes32dsmi.yaml b/arch/inst/Zk/aes32dsmi.yaml new file mode 100644 index 00000000..5af88bf7 --- /dev/null +++ b/arch/inst/Zk/aes32dsmi.yaml @@ -0,0 +1,29 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes32dsmi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknd] + base: 32 + assembly: xd, xs1, xs2, bs + encoding: + match: --10111----------000-----0110011 + variables: + - name: bs + location: 31-30 + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes32esi.yaml b/arch/inst/Zk/aes32esi.yaml new file mode 100644 index 00000000..0e1e6924 --- /dev/null +++ b/arch/inst/Zk/aes32esi.yaml @@ -0,0 +1,29 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes32esi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zkne] + base: 32 + assembly: xd, xs1, xs2, bs + encoding: + match: --10001----------000-----0110011 + variables: + - name: bs + location: 31-30 + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes32esmi.yaml b/arch/inst/Zk/aes32esmi.yaml new file mode 100644 index 00000000..417b832f --- /dev/null +++ b/arch/inst/Zk/aes32esmi.yaml @@ -0,0 +1,29 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes32esmi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zkne] + base: 32 + assembly: xd, xs1, xs2, bs + encoding: + match: --10011----------000-----0110011 + variables: + - name: bs + location: 31-30 + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes64ds.yaml b/arch/inst/Zk/aes64ds.yaml new file mode 100644 index 00000000..a6ce4231 --- /dev/null +++ b/arch/inst/Zk/aes64ds.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes64ds: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknd] + base: 64 + assembly: xd, xs1, xs2 + encoding: + match: 0011101----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes64dsm.yaml b/arch/inst/Zk/aes64dsm.yaml new file mode 100644 index 00000000..19b28b71 --- /dev/null +++ b/arch/inst/Zk/aes64dsm.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes64dsm: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknd] + base: 64 + assembly: xd, xs1, xs2 + encoding: + match: 0011111----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes64es.yaml b/arch/inst/Zk/aes64es.yaml new file mode 100644 index 00000000..146578b2 --- /dev/null +++ b/arch/inst/Zk/aes64es.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes64es: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zkne] + base: 64 + assembly: xd, xs1, xs2 + encoding: + match: 0011001----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes64esm.yaml b/arch/inst/Zk/aes64esm.yaml new file mode 100644 index 00000000..c1393e49 --- /dev/null +++ b/arch/inst/Zk/aes64esm.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes64esm: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zkne] + base: 64 + assembly: xd, xs1, xs2 + encoding: + match: 0011011----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes64im.yaml b/arch/inst/Zk/aes64im.yaml new file mode 100644 index 00000000..b9966f8c --- /dev/null +++ b/arch/inst/Zk/aes64im.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes64im: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknd] + base: 64 + assembly: xd, xs1 + encoding: + match: 001100000000-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes64ks1i.yaml b/arch/inst/Zk/aes64ks1i.yaml new file mode 100644 index 00000000..d5b51f52 --- /dev/null +++ b/arch/inst/Zk/aes64ks1i.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes64ks1i: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknd, Zkne] + base: 64 + assembly: xd, xs1, rnum + encoding: + match: 00110001---------001-----0010011 + variables: + - name: rnum + location: 23-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/aes64ks2.yaml b/arch/inst/Zk/aes64ks2.yaml new file mode 100644 index 00000000..117f1158 --- /dev/null +++ b/arch/inst/Zk/aes64ks2.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +aes64ks2: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknd, Zkne] + base: 64 + assembly: xd, xs1, xs2 + encoding: + match: 0111111----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/pack.yaml b/arch/inst/Zk/pack.yaml new file mode 100644 index 00000000..c1946276 --- /dev/null +++ b/arch/inst/Zk/pack.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +pack: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zbkb, Zk, Zkn, Zks] + assembly: xd, xs1, xs2 + encoding: + match: 0000100----------100-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/packh.yaml b/arch/inst/Zk/packh.yaml new file mode 100644 index 00000000..2561af41 --- /dev/null +++ b/arch/inst/Zk/packh.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +packh: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zbkb, Zk, Zkn, Zks] + assembly: xd, xs1, xs2 + encoding: + match: 0000100----------111-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/packw.yaml b/arch/inst/Zk/packw.yaml new file mode 100644 index 00000000..71871de5 --- /dev/null +++ b/arch/inst/Zk/packw.yaml @@ -0,0 +1,30 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +packw: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zbkb, Zk, Zkn, Zks] + base: 64 + assembly: xd, xs1, xs2 + encoding: + match: 0000100----------100-----0111011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + pseudoinstructions: + - when: (rs2 == 0x0) + to: zext.h + operation(): | + diff --git a/arch/inst/Zk/sha256sig0.yaml b/arch/inst/Zk/sha256sig0.yaml new file mode 100644 index 00000000..ad1f81b3 --- /dev/null +++ b/arch/inst/Zk/sha256sig0.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha256sig0: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + assembly: xd, xs1 + encoding: + match: 000100000010-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha256sig1.yaml b/arch/inst/Zk/sha256sig1.yaml new file mode 100644 index 00000000..5b979578 --- /dev/null +++ b/arch/inst/Zk/sha256sig1.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha256sig1: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + assembly: xd, xs1 + encoding: + match: 000100000011-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha256sum0.yaml b/arch/inst/Zk/sha256sum0.yaml new file mode 100644 index 00000000..6cf26bda --- /dev/null +++ b/arch/inst/Zk/sha256sum0.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha256sum0: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + assembly: xd, xs1 + encoding: + match: 000100000000-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha256sum1.yaml b/arch/inst/Zk/sha256sum1.yaml new file mode 100644 index 00000000..98bc7c42 --- /dev/null +++ b/arch/inst/Zk/sha256sum1.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha256sum1: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + assembly: xd, xs1 + encoding: + match: 000100000001-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sig0.yaml b/arch/inst/Zk/sha512sig0.yaml new file mode 100644 index 00000000..7e36fb5d --- /dev/null +++ b/arch/inst/Zk/sha512sig0.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sig0: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 64 + assembly: xd, xs1 + encoding: + match: 000100000110-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sig0h.yaml b/arch/inst/Zk/sha512sig0h.yaml new file mode 100644 index 00000000..7aa00569 --- /dev/null +++ b/arch/inst/Zk/sha512sig0h.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sig0h: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 32 + assembly: xd, xs1, xs2 + encoding: + match: 0101110----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sig0l.yaml b/arch/inst/Zk/sha512sig0l.yaml new file mode 100644 index 00000000..e233b682 --- /dev/null +++ b/arch/inst/Zk/sha512sig0l.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sig0l: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 32 + assembly: xd, xs1, xs2 + encoding: + match: 0101010----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sig1.yaml b/arch/inst/Zk/sha512sig1.yaml new file mode 100644 index 00000000..1b455803 --- /dev/null +++ b/arch/inst/Zk/sha512sig1.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sig1: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 64 + assembly: xd, xs1 + encoding: + match: 000100000111-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sig1h.yaml b/arch/inst/Zk/sha512sig1h.yaml new file mode 100644 index 00000000..52c3e588 --- /dev/null +++ b/arch/inst/Zk/sha512sig1h.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sig1h: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 32 + assembly: xd, xs1, xs2 + encoding: + match: 0101111----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sig1l.yaml b/arch/inst/Zk/sha512sig1l.yaml new file mode 100644 index 00000000..8e281fad --- /dev/null +++ b/arch/inst/Zk/sha512sig1l.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sig1l: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 32 + assembly: xd, xs1, xs2 + encoding: + match: 0101011----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sum0.yaml b/arch/inst/Zk/sha512sum0.yaml new file mode 100644 index 00000000..0eff8a98 --- /dev/null +++ b/arch/inst/Zk/sha512sum0.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sum0: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 64 + assembly: xd, xs1 + encoding: + match: 000100000100-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sum0r.yaml b/arch/inst/Zk/sha512sum0r.yaml new file mode 100644 index 00000000..40dda3d2 --- /dev/null +++ b/arch/inst/Zk/sha512sum0r.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sum0r: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 32 + assembly: xd, xs1, xs2 + encoding: + match: 0101000----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sum1.yaml b/arch/inst/Zk/sha512sum1.yaml new file mode 100644 index 00000000..9b95f726 --- /dev/null +++ b/arch/inst/Zk/sha512sum1.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sum1: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 64 + assembly: xd, xs1 + encoding: + match: 000100000101-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zk/sha512sum1r.yaml b/arch/inst/Zk/sha512sum1r.yaml new file mode 100644 index 00000000..1795ec57 --- /dev/null +++ b/arch/inst/Zk/sha512sum1r.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sha512sum1r: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zk, Zkn, Zknh] + base: 32 + assembly: xd, xs1, xs2 + encoding: + match: 0101001----------000-----0110011 + variables: + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: true + operation(): | + diff --git a/arch/inst/Zks/sm3p0.yaml b/arch/inst/Zks/sm3p0.yaml new file mode 100644 index 00000000..47ee4748 --- /dev/null +++ b/arch/inst/Zks/sm3p0.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sm3p0: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zks, Zksh] + assembly: xd, xs1 + encoding: + match: 000100001000-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zks/sm3p1.yaml b/arch/inst/Zks/sm3p1.yaml new file mode 100644 index 00000000..2a21cd25 --- /dev/null +++ b/arch/inst/Zks/sm3p1.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sm3p1: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zks, Zksh] + assembly: xd, xs1 + encoding: + match: 000100001001-----001-----0010011 + variables: + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zks/sm4ed.yaml b/arch/inst/Zks/sm4ed.yaml new file mode 100644 index 00000000..24ac67f9 --- /dev/null +++ b/arch/inst/Zks/sm4ed.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sm4ed: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zks, Zksed] + assembly: xd, xs1, xs2, bs + encoding: + match: --11000----------000-----0110011 + variables: + - name: bs + location: 31-30 + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zks/sm4ks.yaml b/arch/inst/Zks/sm4ks.yaml new file mode 100644 index 00000000..2747eda6 --- /dev/null +++ b/arch/inst/Zks/sm4ks.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +sm4ks: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zks, Zksed] + assembly: xd, xs1, xs2, bs + encoding: + match: --11010----------000-----0110011 + variables: + - name: bs + location: 31-30 + - name: rs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: rd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vandn.vv.yaml b/arch/inst/Zvbb/vandn.vv.yaml new file mode 100644 index 00000000..2451fdd8 --- /dev/null +++ b/arch/inst/Zvbb/vandn.vv.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vandn.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vs1, vd + encoding: + match: 000001-----------000-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vandn.vx.yaml b/arch/inst/Zvbb/vandn.vx.yaml new file mode 100644 index 00000000..220e7d8b --- /dev/null +++ b/arch/inst/Zvbb/vandn.vx.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vandn.vx: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, xs1, vd + encoding: + match: 000001-----------100-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vbrev.v.yaml b/arch/inst/Zvbb/vbrev.v.yaml new file mode 100644 index 00000000..5e05e5ad --- /dev/null +++ b/arch/inst/Zvbb/vbrev.v.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vbrev.v: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vd + encoding: + match: 010010------01010010-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vbrev8.v.yaml b/arch/inst/Zvbb/vbrev8.v.yaml new file mode 100644 index 00000000..7418c0ac --- /dev/null +++ b/arch/inst/Zvbb/vbrev8.v.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vbrev8.v: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vd + encoding: + match: 010010------01000010-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vclz.v.yaml b/arch/inst/Zvbb/vclz.v.yaml new file mode 100644 index 00000000..24e7a1a0 --- /dev/null +++ b/arch/inst/Zvbb/vclz.v.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vclz.v: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vd + encoding: + match: 010010------01100010-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vcpop.v.yaml b/arch/inst/Zvbb/vcpop.v.yaml new file mode 100644 index 00000000..7ce03280 --- /dev/null +++ b/arch/inst/Zvbb/vcpop.v.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vcpop.v: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vd + encoding: + match: 010010------01110010-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vctz.v.yaml b/arch/inst/Zvbb/vctz.v.yaml new file mode 100644 index 00000000..6dde9823 --- /dev/null +++ b/arch/inst/Zvbb/vctz.v.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vctz.v: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vd + encoding: + match: 010010------01101010-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vrev8.v.yaml b/arch/inst/Zvbb/vrev8.v.yaml new file mode 100644 index 00000000..12d24260 --- /dev/null +++ b/arch/inst/Zvbb/vrev8.v.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vrev8.v: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vd + encoding: + match: 010010------01001010-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vrol.vv.yaml b/arch/inst/Zvbb/vrol.vv.yaml new file mode 100644 index 00000000..5bf9ee4c --- /dev/null +++ b/arch/inst/Zvbb/vrol.vv.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vrol.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vs1, vd + encoding: + match: 010101-----------000-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vrol.vx.yaml b/arch/inst/Zvbb/vrol.vx.yaml new file mode 100644 index 00000000..29f747ea --- /dev/null +++ b/arch/inst/Zvbb/vrol.vx.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vrol.vx: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, xs1, vd + encoding: + match: 010101-----------100-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vror.vi.yaml b/arch/inst/Zvbb/vror.vi.yaml new file mode 100644 index 00000000..ad3d0f3b --- /dev/null +++ b/arch/inst/Zvbb/vror.vi.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vror.vi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vd, imm + encoding: + match: 01010------------011-----1010111 + variables: + - name: imm + location: 26|19-15 + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vror.vv.yaml b/arch/inst/Zvbb/vror.vv.yaml new file mode 100644 index 00000000..879cd5c7 --- /dev/null +++ b/arch/inst/Zvbb/vror.vv.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vror.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vs1, vd + encoding: + match: 010100-----------000-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vror.vx.yaml b/arch/inst/Zvbb/vror.vx.yaml new file mode 100644 index 00000000..62c484d2 --- /dev/null +++ b/arch/inst/Zvbb/vror.vx.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vror.vx: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, xs1, vd + encoding: + match: 010100-----------100-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vwsll.vi.yaml b/arch/inst/Zvbb/vwsll.vi.yaml new file mode 100644 index 00000000..d616fdb8 --- /dev/null +++ b/arch/inst/Zvbb/vwsll.vi.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vwsll.vi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vd, imm + encoding: + match: 110101-----------011-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: zimm5 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vwsll.vv.yaml b/arch/inst/Zvbb/vwsll.vv.yaml new file mode 100644 index 00000000..f3566613 --- /dev/null +++ b/arch/inst/Zvbb/vwsll.vv.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vwsll.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, vs1, vd + encoding: + match: 110101-----------000-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbb/vwsll.vx.yaml b/arch/inst/Zvbb/vwsll.vx.yaml new file mode 100644 index 00000000..3361e5c8 --- /dev/null +++ b/arch/inst/Zvbb/vwsll.vx.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vwsll.vx: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbb, Zvkn, Zvks] + assembly: vm, vs2, xs1, vd + encoding: + match: 110101-----------100-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbc/vclmul.vv.yaml b/arch/inst/Zvbc/vclmul.vv.yaml new file mode 100644 index 00000000..cc40f7b2 --- /dev/null +++ b/arch/inst/Zvbc/vclmul.vv.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vclmul.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbc, Zvkn, Zvks] + assembly: vm, vs2, vs1, vd + encoding: + match: 001100-----------010-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbc/vclmul.vx.yaml b/arch/inst/Zvbc/vclmul.vx.yaml new file mode 100644 index 00000000..4de540ce --- /dev/null +++ b/arch/inst/Zvbc/vclmul.vx.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vclmul.vx: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbc, Zvkn, Zvks] + assembly: vm, vs2, xs1, vd + encoding: + match: 001100-----------110-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbc/vclmulh.vv.yaml b/arch/inst/Zvbc/vclmulh.vv.yaml new file mode 100644 index 00000000..822773bc --- /dev/null +++ b/arch/inst/Zvbc/vclmulh.vv.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vclmulh.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbc, Zvkn, Zvks] + assembly: vm, vs2, vs1, vd + encoding: + match: 001101-----------010-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvbc/vclmulh.vx.yaml b/arch/inst/Zvbc/vclmulh.vx.yaml new file mode 100644 index 00000000..14b8c33c --- /dev/null +++ b/arch/inst/Zvbc/vclmulh.vx.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vclmulh.vx: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvbc, Zvkn, Zvks] + assembly: vm, vs2, xs1, vd + encoding: + match: 001101-----------110-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml b/arch/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml new file mode 100644 index 00000000..8c4c0f7a --- /dev/null +++ b/arch/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vfncvtbf16.f.f.w: + long_name: No synopsis available. + description: | + No description available. + definedBy: Zvfbfmin + assembly: vm, vs2, vd + encoding: + match: 010010------11101001-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml b/arch/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml new file mode 100644 index 00000000..930df270 --- /dev/null +++ b/arch/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vfwcvtbf16.f.f.v: + long_name: No synopsis available. + description: | + No description available. + definedBy: Zvfbfmin + assembly: vm, vs2, vd + encoding: + match: 010010------01101001-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvfbfwma/vfwmaccbf16.vf.yaml b/arch/inst/Zvfbfwma/vfwmaccbf16.vf.yaml new file mode 100644 index 00000000..56943c08 --- /dev/null +++ b/arch/inst/Zvfbfwma/vfwmaccbf16.vf.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vfwmaccbf16.vf: + long_name: No synopsis available. + description: | + No description available. + definedBy: Zvfbfwma + assembly: vm, vs2, xs1, vd + encoding: + match: 111011-----------101-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: rs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvfbfwma/vfwmaccbf16.vv.yaml b/arch/inst/Zvfbfwma/vfwmaccbf16.vv.yaml new file mode 100644 index 00000000..1d258124 --- /dev/null +++ b/arch/inst/Zvfbfwma/vfwmaccbf16.vv.yaml @@ -0,0 +1,27 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vfwmaccbf16.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: Zvfbfwma + assembly: vm, vs2, vs1, vd + encoding: + match: 111011-----------001-----1010111 + variables: + - name: vm + location: 25-25 + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkg/vghsh.vv.yaml b/arch/inst/Zvkg/vghsh.vv.yaml new file mode 100644 index 00000000..6621787d --- /dev/null +++ b/arch/inst/Zvkg/vghsh.vv.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vghsh.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: Zvkg + assembly: vs2, vs1, vd + encoding: + match: 1011001----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkg/vgmul.vv.yaml b/arch/inst/Zvkg/vgmul.vv.yaml new file mode 100644 index 00000000..54471d29 --- /dev/null +++ b/arch/inst/Zvkg/vgmul.vv.yaml @@ -0,0 +1,23 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vgmul.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: Zvkg + assembly: vs2, vd + encoding: + match: 1010001-----10001010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesdf.vs.yaml b/arch/inst/Zvkn/vaesdf.vs.yaml new file mode 100644 index 00000000..ca1f5b7f --- /dev/null +++ b/arch/inst/Zvkn/vaesdf.vs.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesdf.vs: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010011-----00001010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesdf.vv.yaml b/arch/inst/Zvkn/vaesdf.vv.yaml new file mode 100644 index 00000000..61ebaeff --- /dev/null +++ b/arch/inst/Zvkn/vaesdf.vv.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesdf.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010001-----00001010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesdm.vs.yaml b/arch/inst/Zvkn/vaesdm.vs.yaml new file mode 100644 index 00000000..24154a4e --- /dev/null +++ b/arch/inst/Zvkn/vaesdm.vs.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesdm.vs: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010011-----00000010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesdm.vv.yaml b/arch/inst/Zvkn/vaesdm.vv.yaml new file mode 100644 index 00000000..b9bbc6c9 --- /dev/null +++ b/arch/inst/Zvkn/vaesdm.vv.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesdm.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010001-----00000010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesef.vs.yaml b/arch/inst/Zvkn/vaesef.vs.yaml new file mode 100644 index 00000000..a22ce5bc --- /dev/null +++ b/arch/inst/Zvkn/vaesef.vs.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesef.vs: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010011-----00011010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesef.vv.yaml b/arch/inst/Zvkn/vaesef.vv.yaml new file mode 100644 index 00000000..8495cca4 --- /dev/null +++ b/arch/inst/Zvkn/vaesef.vv.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesef.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010001-----00011010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesem.vs.yaml b/arch/inst/Zvkn/vaesem.vs.yaml new file mode 100644 index 00000000..f9c8a99d --- /dev/null +++ b/arch/inst/Zvkn/vaesem.vs.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesem.vs: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010011-----00010010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesem.vv.yaml b/arch/inst/Zvkn/vaesem.vv.yaml new file mode 100644 index 00000000..cf2fb6cc --- /dev/null +++ b/arch/inst/Zvkn/vaesem.vv.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesem.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010001-----00010010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaeskf1.vi.yaml b/arch/inst/Zvkn/vaeskf1.vi.yaml new file mode 100644 index 00000000..d3b688f7 --- /dev/null +++ b/arch/inst/Zvkn/vaeskf1.vi.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaeskf1.vi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd, imm + encoding: + match: 1000101----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: zimm5 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaeskf2.vi.yaml b/arch/inst/Zvkn/vaeskf2.vi.yaml new file mode 100644 index 00000000..4830e4f3 --- /dev/null +++ b/arch/inst/Zvkn/vaeskf2.vi.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaeskf2.vi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd, imm + encoding: + match: 1010101----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: zimm5 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vaesz.vs.yaml b/arch/inst/Zvkn/vaesz.vs.yaml new file mode 100644 index 00000000..a0454556 --- /dev/null +++ b/arch/inst/Zvkn/vaesz.vs.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vaesz.vs: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvkned] + assembly: vs2, vd + encoding: + match: 1010011-----00111010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vsha2ch.vv.yaml b/arch/inst/Zvkn/vsha2ch.vv.yaml new file mode 100644 index 00000000..30112ce0 --- /dev/null +++ b/arch/inst/Zvkn/vsha2ch.vv.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vsha2ch.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvknha, Zvknhb] + assembly: vs2, vs1, vd + encoding: + match: 1011101----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vsha2cl.vv.yaml b/arch/inst/Zvkn/vsha2cl.vv.yaml new file mode 100644 index 00000000..2824416f --- /dev/null +++ b/arch/inst/Zvkn/vsha2cl.vv.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vsha2cl.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvknha, Zvknhb] + assembly: vs2, vs1, vd + encoding: + match: 1011111----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvkn/vsha2ms.vv.yaml b/arch/inst/Zvkn/vsha2ms.vv.yaml new file mode 100644 index 00000000..4355c230 --- /dev/null +++ b/arch/inst/Zvkn/vsha2ms.vv.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vsha2ms.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvkn, Zvknha, Zvknhb] + assembly: vs2, vs1, vd + encoding: + match: 1011011----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvks/vsm3c.vi.yaml b/arch/inst/Zvks/vsm3c.vi.yaml new file mode 100644 index 00000000..a7920c09 --- /dev/null +++ b/arch/inst/Zvks/vsm3c.vi.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vsm3c.vi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvks, Zvksh] + assembly: vs2, vd, imm + encoding: + match: 1010111----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: zimm5 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvks/vsm3me.vv.yaml b/arch/inst/Zvks/vsm3me.vv.yaml new file mode 100644 index 00000000..a4c8393a --- /dev/null +++ b/arch/inst/Zvks/vsm3me.vv.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vsm3me.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvks, Zvksh] + assembly: vs2, vs1, vd + encoding: + match: 1000001----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vs1 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvks/vsm4k.vi.yaml b/arch/inst/Zvks/vsm4k.vi.yaml new file mode 100644 index 00000000..30451cc3 --- /dev/null +++ b/arch/inst/Zvks/vsm4k.vi.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vsm4k.vi: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvks, Zvksed] + assembly: vs2, vd, imm + encoding: + match: 1000011----------010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: zimm5 + location: 19-15 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvks/vsm4r.vs.yaml b/arch/inst/Zvks/vsm4r.vs.yaml new file mode 100644 index 00000000..1632907c --- /dev/null +++ b/arch/inst/Zvks/vsm4r.vs.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vsm4r.vs: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvks, Zvksed] + assembly: vs2, vd + encoding: + match: 1010011-----10000010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/arch/inst/Zvks/vsm4r.vv.yaml b/arch/inst/Zvks/vsm4r.vv.yaml new file mode 100644 index 00000000..ebd8aa3b --- /dev/null +++ b/arch/inst/Zvks/vsm4r.vv.yaml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=../../../schemas/inst_schema.json + +vsm4r.vv: + long_name: No synopsis available. + description: | + No description available. + definedBy: + anyOf: [Zvks, Zvksed] + assembly: vs2, vd + encoding: + match: 1010001-----10000010-----1110111 + variables: + - name: vs2 + location: 24-20 + - name: vd + location: 11-7 + access: + s: always + u: always + vs: always + vu: always + data_independent_timing: false + operation(): | + diff --git a/backends/arch_gen/lib/arch_gen.rb b/backends/arch_gen/lib/arch_gen.rb index 29d9f78e..1c03e9b3 100644 --- a/backends/arch_gen/lib/arch_gen.rb +++ b/backends/arch_gen/lib/arch_gen.rb @@ -470,31 +470,51 @@ def interrupt_codes end private :env - def merge_helper(base_obj, updates, path_so_far) - obj = path_so_far.empty? ? updates : updates.dig(*path_so_far) - obj.each do |key, value| - if value.is_a?(Hash) - merge_helper(base_obj, updates, (path_so_far + [key])) + # merges patch into base_obj based on JSON Merge Patch (RFC 7386) + # + # @param base_obj [Hash] base object to merge into + # @param patch [Hash] patch to merge into base_obj + # @param path_so_far [Array] path into the current object. Shouldn't be set by user (used during recursion) + # @return [Hash] merged object + def merge_patch(base, patch, path_so_far = []) + patch_obj = path_so_far.empty? ? patch : patch.dig(*path_so_far) + patch_obj.each do |key, patch_value| + if patch_value.is_a?(Hash) + # continue to dig + merge_patch(base, patch, (path_so_far + [key])) else - (path_so_far + [key]).each_with_index do |k, idx| - base_obj[k] ||= {} - if idx != path_so_far.size - base_obj = base_obj[k] - else - base_obj[k] = value + base_ptr = base.dig(*path_so_far) + base_value = base_ptr&.dig(key) + case patch_value + when nil + # remove from base, if it exists + unless base_value.nil? + base_ptr[key] = nil + end + else + # add or overwrite value in base + if base_ptr.nil? + # need to create intermediate nodes, too + base_ptr = base + path_so_far.each do |k| + base_ptr[k] = {} unless base_ptr.key?(k) + base_ptr = base_ptr[k] + end + base_ptr = base.dig(*path_so_far) end + base_ptr[key] = patch_value end end end end - private :merge_helper + private :merge_patch # overwrites base_obj with any data in update # # @param base_obj [Hash] Base object # @param updates [Hash] Object with overlays # @return [Hash] Updated object - def merge(base_obj, updates) = merge_helper(base_obj, updates, []) + def merge(base_obj, updates) = merge_patch(base_obj, updates, []) private :merge # @param type [Symbol] Type of the object (@see Validator::SCHEMA_PATHS) @@ -728,6 +748,7 @@ def maybe_add_csr(csr_name, extra_env = {}) end belongs = csr_obj.exists_in_cfg?(arch_def_mock) + @implemented_csrs ||= [] @implemented_csrs << csr_name if belongs @@ -784,7 +805,10 @@ def maybe_add_ext(ext_name) merged_path = gen_merged_def(:ext, arch_path, arch_overlay_path) - ext_obj = YAML.load_file(merged_path)[ext_name] + yaml_contents = YAML.load_file(merged_path) + raise "In #{merged_path}, key does not match file name" unless yaml_contents.key?(ext_name) + + ext_obj = yaml_contents[ext_name] ext_obj["name"] = ext_name @implied_ext_map ||= {} diff --git a/backends/ext_pdf_doc/tasks.rake b/backends/ext_pdf_doc/tasks.rake index b0a4852b..c4112ff0 100644 --- a/backends/ext_pdf_doc/tasks.rake +++ b/backends/ext_pdf_doc/tasks.rake @@ -120,7 +120,7 @@ rule %r{#{$root}/gen/ext_pdf_doc/.*/adoc/.*_extension\.adoc} => proc { |tname| end raise "Can't find extension '#{ext_name}'" if arch_yaml_paths.empty? - stamp = config_name == "_" ? "#{$root}/.stamps/arch-gen.stamp" : "#{$root}/.stamps/arch-gen-#{config_name}.stamp" + stamp = config_name == "_" ? "#{$root}/.stamps/arch-gen-_64.stamp" : "#{$root}/.stamps/arch-gen-#{config_name}.stamp" [ stamp, @@ -145,7 +145,12 @@ rule %r{#{$root}/gen/ext_pdf_doc/.*/adoc/.*_extension\.adoc} => proc { |tname| erb.filename = template_path.to_s ext = arch_def.extension(ext_name) - version_num = ENV.key?("EXT_VERSION") ? ENV["EXT_VERSION"] : ext.versions.sort { |v| Gem::Version.new(v["version"]) }.last["version"] + version_num = + if ENV.key?("EXT_VERSION") + ENV["EXT_VERSION"] + else + ext.versions.max { |a, b| Gem::Version.new(a["version"]) <=> Gem::Version.new(b["version"]) }["version"] + end ext_version = ext.versions.find { |v| v["version"] == version_num } FileUtils.mkdir_p File.dirname(t.name) File.write t.name, AsciidocUtils.resolve_links(arch_def.find_replace_links(erb.result(binding))) diff --git a/backends/ext_pdf_doc/templates/ext_pdf.adoc.erb b/backends/ext_pdf_doc/templates/ext_pdf.adoc.erb index bcc0b938..bce3131e 100644 --- a/backends/ext_pdf_doc/templates/ext_pdf.adoc.erb +++ b/backends/ext_pdf_doc/templates/ext_pdf.adoc.erb @@ -23,9 +23,9 @@ FROZEN_STATE when "development" <<~DEV_STATE - This document is in the http://riscv.org/spec-state[Development state]. - - Change should be expected + This document is in the http://riscv.org/spec-state[Development state]. + \\ + + \\ + Change should be expected + \\ DEV_STATE else raise "TODO: #{ext_version["state"]} description" @@ -37,11 +37,13 @@ :preface-title: Licensing and Acknowledgements :colophon: :appendix-caption: Appendix +<%- if !ext.company.nil? && (ext.company["name"] =~ /RISCV/) -%> :title-logo-image: image:risc-v_logo.png["RISC-V International Logo",pdfwidth=3.25in,align=center] +:back-cover-image: image:riscv-horizontal-color.svg[opacity=25%] +<%- end -%> <%- unless ext_version["state"] == "ratified" -%> :page-background-image: image:draft.png[opacity=20%] <%- end -%> -:back-cover-image: image:riscv-horizontal-color.svg[opacity=25%] // Settings :experimental: :reproducible: @@ -121,7 +123,7 @@ endif::[] == Copyright and license information This document is released under the <%= ext.doc_license.nil? ? "unknown" : ext.doc_license["url"] %>[<%= ext.doc_license.nil? ? "unknown" : ext.doc_license["name"] %>]. -Copyright <%= ext_version["ratification_date"].split("-")[0] %> by <%= ext.company.nil? ? "unknown" : ext.company["name"] %>. +Copyright <%= ext_version["ratification_date"].nil? ? Date.today.year : ext_version["ratification_date"].split("-")[0] %> by <%= ext.company.nil? ? "unknown" : ext.company["name"] %>. [preface] == Acknowledgements @@ -131,7 +133,8 @@ Contributors to version <%= version["version"] %> of the specification (in alpha <%- unless version["contributors"].nil? -%> <%- version["contributors"].sort { |a, b| a["name"].split(" ").last <=> b["name"].split(" ").last }.each do |c| -%> - * <%= c["name"] %> <<%= c["email"] %>> (<%= c["company"] %>) + * <%= c["name"] %> <<%= c["email"] %>> (<%= c["company"] %>) + <%- end -%> <%- end -%> <%- end -%> @@ -154,21 +157,69 @@ Ratification Date:: <%= version["ratification_date"] %> <%- if version.key?("url") -%> Design document:: <%= version["url"] %> <%- end -%> -<%- if version.key?("change") -%> +<%- if version.key?("changes") -%> Changes:: <%= version["changes"] %> <%- end -%> +<%- unless version["implies"].nil? || version["implies"].empty? -%> +Implies:: +* <%= version["implies"].map { |name, version| "#{name} (#{version})" }.join("\n* ") %> +<%- end -%> -- <%- end -%> + <<< == Extension description <%= ext.description %> <%- unless ext.implies.nil? -%> -<%- ext.implies.each do |e| -%> +=== Sub-extensions +The following sub-extensions are defined: + +<%- ext.implies.each do |sub_ext| -%> +==== <%= sub_ext.name %> + +<%= arch_def.extension(sub_ext.name).description %> + +<%- end -%> +<%- end -%> + +<%- unless ext.instructions.empty? -%> +<<< +== Instruction summary + +The following <%= ext.instructions.size %> instructions are added by this extension: + +[%autowidth] +|=== +| RV32 | RV64 | Mnemonic | Instruction | <%= ext.versions.map { |v| "v#{v["version"]}" }.join(" | ") %> + +<%- ext.instructions.each do |i| -%> +| <%= i.rv32? ? "✓" : "" %> +| <%= i.rv64? ? "✓" : "" %> +| `<%= i.name %> <%= i.assembly.gsub("x", "r").strip %>` +| xref:insns-<%= i.name.gsub('.', '_') %>[<%= i.long_name %>] +| <%= ext.versions.map { |v| i.defined_by?(ext.name, v["version"]) ? "✓" : "" }.join(" | ") %> +<%- end -%> +|=== + +<%- unless ext.implies.empty? -%> +=== Instructions by sub-extension + +|=== +| Mnemonic | `<%= ext.name %>` | <%= ext.implies.map { |e| "`#{e.name}`" }.join(" | ") %> + +<%- ext.instructions.each do |i| -%> +| `<%= i.name %>` +| ✓ +| <%= ext.implies.map { |e| i.defined_by?(e.name, arch_def.extension(e.name).max_version) ? "✓" : "" }.join(" | ") %> +<%- end -%> +|=== + <%- end -%> + <%- end -%> <%- unless ext.csrs.empty? -%> @@ -327,24 +378,6 @@ This CSR may return a value that is different from what is stored in hardware. <%- end -%> <%- unless ext.instructions.empty? -%> -<<< -== Instruction summary - -The following <%= ext.instructions.size %> instructions are added by this extension: - -[%autowidth] -|=== -| RV32 | RV64 | Mnemonic | Instruction | <%= ext.versions.map { |v| "v#{v["version"]}" }.join(" | ") %> - -<%- ext.instructions.each do |i| -%> -| <%= i.rv32? ? "✓" : "" %> -| <%= i.rv64? ? "✓" : "" %> -| `<%= i.name %> <%= i.assembly.gsub("x", "r") %>` -| xref:insns-<%= i.name.gsub('.', '_') %>[<%= i.long_name %>] -| <%= ext.versions.map { |v| i.defined_by?(ext.name, v["version"]) ? "✓" : "" }.join(" | ") %> -<%- end -%> -|=== - <<< [#insns,reftext="Instructions (in alphabetical order)"] == Instructions (in alphabetical order) @@ -387,8 +420,14 @@ RV64:: Description:: <%= i.description %> + Decode Variables:: +<%- if i.multi_encoding? ? (i.decode_variables(32).empty? && i.decode_variables(64).empty?) : i.decode_variables(i.base.nil? ? 64 : i.base).empty? -%> + +<%= i.name %> has no decode variables. + +<%- else -%> <%- if i.multi_encoding? -%> RV32:: + @@ -414,7 +453,8 @@ RV64:: <%= d.sext? ? 'signed ' : '' %>Bits<<%= d.size %>> <%= d.name %> = <%= d.extract %>; <%- end -%> ---- -<%- end -%> +<%- end # if multi_encoding? -%> +<%- end # if no decode variables-%> Operation:: <%- unless i.data["operation()"].nil? -%> @@ -455,4 +495,4 @@ h| Arguments l| <%= f.arguments_list_str.join (', ') %> ---- <%- end -%> -<%- end -%> \ No newline at end of file +<%- end -%> diff --git a/lib/idl/ast.rb b/lib/idl/ast.rb index acd5609f..159e819f 100644 --- a/lib/idl/ast.rb +++ b/lib/idl/ast.rb @@ -3601,7 +3601,11 @@ def initialize(input, interval, condition, true_expression, false_expression) # @!macro type_check def type_check(symtab) condition.type_check(symtab) - type_error "ternary selector must be bool" unless condition.type(symtab).kind == :boolean + if condition.type(symtab).kind == :bits + type_error "ternary selector must be bool (maybe you meant '#{condition.text_value} != 0'?)" + else + type_error "ternary selector must be bool" unless condition.type(symtab).kind == :boolean + end value_result = value_try do cond = condition.value(symtab) @@ -5740,9 +5744,9 @@ def calc_type(symtab) fd = field_def(symtab) if fd.nil? if @idx.is_a?(IntLiteralAst) - internal_error "Could not find CSR[#{@idx.to_idl}]" + internal_error "Could not find CSR[#{@idx.to_idl}].#{@field_name}" else - internal_error "Could not find CSR[#{@idx}]" + internal_error "Could not find CSR[#{@idx}].#{@field_name}" end end if fd.defined_in_all_bases? @@ -6026,7 +6030,7 @@ def value(symtab) when "sw_read" value_error "CSR not knowable" unless csr_known?(symtab) cd = csr_def(symtab) - cd.fields.each { |f| value_error "#{csr_name}.#{f.name} not RO" unless f.type == "RO" } + cd.fields.each { |f| value_error "#{csr_name(symtab)}.#{f.name} not RO" unless f.type(symtab) == "RO" } value_error "TODO: CSRs with sw_read function" when "address" diff --git a/schemas/arch_schema.json b/schemas/arch_schema.json index 4633d0a1..6cdedf4a 100644 --- a/schemas/arch_schema.json +++ b/schemas/arch_schema.json @@ -90,7 +90,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[a-z][a-zA-Z0-9]+$", + "pattern": "^[a-z][a-zA-Z0-9_]+$", "description": "CSR name" } }, diff --git a/schemas/csr_schema.json b/schemas/csr_schema.json index c522f360..daf3aac4 100644 --- a/schemas/csr_schema.json +++ b/schemas/csr_schema.json @@ -278,7 +278,7 @@ "misa:\\n long_name: Machine ISA Control\\n address: 0x301\\n priv_mode: M\\n length: 64\\n description: Reports the XLEN and 'major' extensions supported by the ISA.\\n definedBy: I\\n fields:\\n MXL:\\n location: 63-62\\n description: XLEN in M-mode.\\n type: RO\\n value: 2\\n Extensions: location: 25-0\\n description: |\\n Indicates support for major (single letter) ISA extensions.\\n\\n Value corresponds to A, D, F, H, I, M, S, U\\n type: RO\\n value: 0x1411A9" ], "patternProperties": { - "^[a-z][a-z0-9A-Z]+$": { + "^[a-z][a-z0-9A-Z_]+$": { "description": "CSR name", "$ref": "#/$defs/csr_register" } diff --git a/schemas/inst_schema.json b/schemas/inst_schema.json index f12507bf..2fad5777 100644 --- a/schemas/inst_schema.json +++ b/schemas/inst_schema.json @@ -62,6 +62,11 @@ "properties": { "match": { "oneOf": [ + { + "type": "string", + "pattern": "^[01-]{43}11111$", + "description": "48-bit encoding" + }, { "type": "string", "pattern": "^[01-]{30}11$", @@ -217,4 +222,4 @@ }, "additionalProperties": false, "maxProperties": 1 -} \ No newline at end of file +}