From 1e9dbf7a482e71bd4fc241674da6d3b85ee4f653 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 09:53:29 +0100 Subject: [PATCH 01/14] Added Zk instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zk/aes32dsi.yaml | 29 +++++++++++++++++++++++++++++ arch/inst/Zk/aes32dsmi.yaml | 29 +++++++++++++++++++++++++++++ arch/inst/Zk/aes32esi.yaml | 29 +++++++++++++++++++++++++++++ arch/inst/Zk/aes32esmi.yaml | 29 +++++++++++++++++++++++++++++ arch/inst/Zk/aes64ds.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/aes64dsm.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/aes64es.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/aes64esm.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/aes64im.yaml | 25 +++++++++++++++++++++++++ arch/inst/Zk/aes64ks1i.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/aes64ks2.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/pack.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zk/packh.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zk/packw.yaml | 30 ++++++++++++++++++++++++++++++ arch/inst/Zk/sha256sig0.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zk/sha256sig1.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zk/sha256sum0.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zk/sha256sum1.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zk/sha512sig0.yaml | 25 +++++++++++++++++++++++++ arch/inst/Zk/sha512sig0h.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/sha512sig0l.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/sha512sig1.yaml | 25 +++++++++++++++++++++++++ arch/inst/Zk/sha512sig1h.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/sha512sig1l.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/sha512sum0.yaml | 25 +++++++++++++++++++++++++ arch/inst/Zk/sha512sum0r.yaml | 27 +++++++++++++++++++++++++++ arch/inst/Zk/sha512sum1.yaml | 25 +++++++++++++++++++++++++ arch/inst/Zk/sha512sum1r.yaml | 27 +++++++++++++++++++++++++++ 28 files changed, 743 insertions(+) create mode 100644 arch/inst/Zk/aes32dsi.yaml create mode 100644 arch/inst/Zk/aes32dsmi.yaml create mode 100644 arch/inst/Zk/aes32esi.yaml create mode 100644 arch/inst/Zk/aes32esmi.yaml create mode 100644 arch/inst/Zk/aes64ds.yaml create mode 100644 arch/inst/Zk/aes64dsm.yaml create mode 100644 arch/inst/Zk/aes64es.yaml create mode 100644 arch/inst/Zk/aes64esm.yaml create mode 100644 arch/inst/Zk/aes64im.yaml create mode 100644 arch/inst/Zk/aes64ks1i.yaml create mode 100644 arch/inst/Zk/aes64ks2.yaml create mode 100644 arch/inst/Zk/pack.yaml create mode 100644 arch/inst/Zk/packh.yaml create mode 100644 arch/inst/Zk/packw.yaml create mode 100644 arch/inst/Zk/sha256sig0.yaml create mode 100644 arch/inst/Zk/sha256sig1.yaml create mode 100644 arch/inst/Zk/sha256sum0.yaml create mode 100644 arch/inst/Zk/sha256sum1.yaml create mode 100644 arch/inst/Zk/sha512sig0.yaml create mode 100644 arch/inst/Zk/sha512sig0h.yaml create mode 100644 arch/inst/Zk/sha512sig0l.yaml create mode 100644 arch/inst/Zk/sha512sig1.yaml create mode 100644 arch/inst/Zk/sha512sig1h.yaml create mode 100644 arch/inst/Zk/sha512sig1l.yaml create mode 100644 arch/inst/Zk/sha512sum0.yaml create mode 100644 arch/inst/Zk/sha512sum0r.yaml create mode 100644 arch/inst/Zk/sha512sum1.yaml create mode 100644 arch/inst/Zk/sha512sum1r.yaml diff --git a/arch/inst/Zk/aes32dsi.yaml b/arch/inst/Zk/aes32dsi.yaml new file mode 100644 index 000000000..ed2481d96 --- /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 000000000..5af88bf73 --- /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 000000000..0e1e69242 --- /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 000000000..417b832f9 --- /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 000000000..a6ce42312 --- /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 000000000..19b28b71a --- /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 000000000..146578b20 --- /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 000000000..c1393e491 --- /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 000000000..b9966f8c6 --- /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 000000000..d5b51f52c --- /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 000000000..117f1158c --- /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 000000000..c19462762 --- /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 000000000..2561af41b --- /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 000000000..71871de5b --- /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 000000000..ad1f81b39 --- /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 000000000..5b979578f --- /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 000000000..6cf26bda2 --- /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 000000000..98bc7c420 --- /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 000000000..7e36fb5d8 --- /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 000000000..7aa005691 --- /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 000000000..e233b6826 --- /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 000000000..1b4558038 --- /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 000000000..52c3e5881 --- /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 000000000..8e281fadb --- /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 000000000..0eff8a989 --- /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 000000000..40dda3d20 --- /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 000000000..9b95f7268 --- /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 000000000..1795ec57f --- /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(): | + From 1d6dcf5ff54044bd7557325dc9fb33c5f009c4cf Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 09:54:24 +0100 Subject: [PATCH 02/14] B instructions small changes to accomodate Zk --- arch/inst/B/andn.yaml | 2 +- arch/inst/B/clmul.yaml | 2 +- arch/inst/B/clmulh.yaml | 2 +- arch/inst/B/orn.yaml | 2 +- arch/inst/B/rol.yaml | 2 +- arch/inst/B/rolw.yaml | 2 +- arch/inst/B/ror.yaml | 2 +- arch/inst/B/rori.yaml | 2 +- arch/inst/B/roriw.yaml | 2 +- arch/inst/B/rorw.yaml | 2 +- arch/inst/B/xnor.yaml | 2 +- arch/inst/B/zext.h.yaml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/arch/inst/B/andn.yaml b/arch/inst/B/andn.yaml index 82978d32a..a09ed482e 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 7d99b1537..f9394291e 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 f82e70ddc..ee6cdb74a 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 9fd1ef345..a54ae78c4 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 882272194..298719f15 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 ee2264e57..0a3d0e9bc 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 603a6c964..522571edf 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 b59bc31d5..5902f2d85 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 4d7796ff9..846d83ce2 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 3bba7f966..a34b959e7 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 498c9fc63..2a4512fe5 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 b6cdb1cc0..4435e44e7 100644 --- a/arch/inst/B/zext.h.yaml +++ b/arch/inst/B/zext.h.yaml @@ -28,7 +28,7 @@ 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: [Zk, Zkn, Zks, Zbkb] # zext.h is a pseduo-op for pack/packw when Zbkb is implemented assembly: xd, xs1 access: s: always From 0284cad8c8f8caf1a20e5d14e5742c229adde585 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 11:11:15 +0100 Subject: [PATCH 03/14] Remove excludedBy enhancement due to #187 Signed-off-by: Afonso Oliveira --- arch/inst/B/zext.h.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/inst/B/zext.h.yaml b/arch/inst/B/zext.h.yaml index 4435e44e7..b6cdb1cc0 100644 --- a/arch/inst/B/zext.h.yaml +++ b/arch/inst/B/zext.h.yaml @@ -28,7 +28,7 @@ zext.h: location: 19-15 - name: rd location: 11-7 - excludedBy: [Zk, Zkn, Zks, Zbkb] # zext.h is a pseduo-op for pack/packw when Zbkb is implemented + excludedBy: Zbkb # zext.h is a pseduo-op for pack/packw when Zbkb is implemented assembly: xd, xs1 access: s: always From afefa4c5c97a1f6c2c50f7696185f1dcc1717368 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 11:18:04 +0100 Subject: [PATCH 04/14] Fix small typos Signed-off-by: Afonso Oliveira --- arch/inst/B/zext.h.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/inst/B/zext.h.yaml b/arch/inst/B/zext.h.yaml index b6cdb1cc0..07199f419 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,7 @@ 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: Zbkb # zext.h instruction is a pseudo-op for `packw` when `Zbkb` is implemented assembly: xd, xs1 access: s: always From 75c56854e7eec21093648f384af680100134d595 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:18:38 +0100 Subject: [PATCH 05/14] Added Zimop instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zimop/mop.r.n.yaml | 94 +++++++++++++++++++++++++++++++++++ arch/inst/Zimop/mop.rr.n.yaml | 46 +++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 arch/inst/Zimop/mop.r.n.yaml create mode 100644 arch/inst/Zimop/mop.rr.n.yaml diff --git a/arch/inst/Zimop/mop.r.n.yaml b/arch/inst/Zimop/mop.r.n.yaml new file mode 100644 index 000000000..69acaabf2 --- /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 000000000..b0a35eb8c --- /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(): | + From 6ad1f6fd3e2aaefc787c47a2de0f88a05f59fca9 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:18:52 +0100 Subject: [PATCH 06/14] Added Zks instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zks/sm3p0.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zks/sm3p1.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zks/sm4ed.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zks/sm4ks.yaml | 28 ++++++++++++++++++++++++++++ 4 files changed, 104 insertions(+) create mode 100644 arch/inst/Zks/sm3p0.yaml create mode 100644 arch/inst/Zks/sm3p1.yaml create mode 100644 arch/inst/Zks/sm4ed.yaml create mode 100644 arch/inst/Zks/sm4ks.yaml diff --git a/arch/inst/Zks/sm3p0.yaml b/arch/inst/Zks/sm3p0.yaml new file mode 100644 index 000000000..47ee47487 --- /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 000000000..2a21cd25d --- /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 000000000..24ac67f90 --- /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 000000000..2747eda6c --- /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(): | + From aa7139e6f6e4932923767524c4f625243c4cf47b Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:19:05 +0100 Subject: [PATCH 07/14] Added Zvbb instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zvbb/vandn.vv.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vandn.vx.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vbrev.v.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvbb/vbrev8.v.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvbb/vclz.v.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvbb/vcpop.v.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvbb/vctz.v.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvbb/vrev8.v.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvbb/vrol.vv.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vrol.vx.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vror.vi.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vror.vv.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vror.vx.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vwsll.vi.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vwsll.vv.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbb/vwsll.vx.yaml | 28 ++++++++++++++++++++++++++++ 16 files changed, 436 insertions(+) create mode 100644 arch/inst/Zvbb/vandn.vv.yaml create mode 100644 arch/inst/Zvbb/vandn.vx.yaml create mode 100644 arch/inst/Zvbb/vbrev.v.yaml create mode 100644 arch/inst/Zvbb/vbrev8.v.yaml create mode 100644 arch/inst/Zvbb/vclz.v.yaml create mode 100644 arch/inst/Zvbb/vcpop.v.yaml create mode 100644 arch/inst/Zvbb/vctz.v.yaml create mode 100644 arch/inst/Zvbb/vrev8.v.yaml create mode 100644 arch/inst/Zvbb/vrol.vv.yaml create mode 100644 arch/inst/Zvbb/vrol.vx.yaml create mode 100644 arch/inst/Zvbb/vror.vi.yaml create mode 100644 arch/inst/Zvbb/vror.vv.yaml create mode 100644 arch/inst/Zvbb/vror.vx.yaml create mode 100644 arch/inst/Zvbb/vwsll.vi.yaml create mode 100644 arch/inst/Zvbb/vwsll.vv.yaml create mode 100644 arch/inst/Zvbb/vwsll.vx.yaml diff --git a/arch/inst/Zvbb/vandn.vv.yaml b/arch/inst/Zvbb/vandn.vv.yaml new file mode 100644 index 000000000..2451fdd8b --- /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 000000000..220e7d8b3 --- /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 000000000..5e05e5ade --- /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 000000000..7418c0ac2 --- /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 000000000..24e7a1a0f --- /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 000000000..7ce032804 --- /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 000000000..6dde98235 --- /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 000000000..12d242602 --- /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 000000000..5bf9ee4c9 --- /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 000000000..29f747eaf --- /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 000000000..ad3d0f3b4 --- /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 000000000..879cd5c7a --- /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 000000000..62c484d27 --- /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 000000000..d616fdb87 --- /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 000000000..f35666130 --- /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 000000000..3361e5c8f --- /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(): | + From ee42b7f851db5e09d2e0fecc34608cc1c6dcd79f Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:19:16 +0100 Subject: [PATCH 08/14] Added Zvbc instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zvbc/vclmul.vv.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbc/vclmul.vx.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbc/vclmulh.vv.yaml | 28 ++++++++++++++++++++++++++++ arch/inst/Zvbc/vclmulh.vx.yaml | 28 ++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 arch/inst/Zvbc/vclmul.vv.yaml create mode 100644 arch/inst/Zvbc/vclmul.vx.yaml create mode 100644 arch/inst/Zvbc/vclmulh.vv.yaml create mode 100644 arch/inst/Zvbc/vclmulh.vx.yaml diff --git a/arch/inst/Zvbc/vclmul.vv.yaml b/arch/inst/Zvbc/vclmul.vv.yaml new file mode 100644 index 000000000..cc40f7b2e --- /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 000000000..4de540cea --- /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 000000000..822773bc4 --- /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 000000000..14b8c33c7 --- /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(): | + From 141c3a2c40d7290a255b98e498136fb6118a6b8d Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:19:44 +0100 Subject: [PATCH 09/14] Added Zvfbmin instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml | 25 ++++++++++++++++++++++++ arch/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml | 25 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 arch/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml create mode 100644 arch/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml 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 000000000..8c4c0f7a3 --- /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 000000000..930df2707 --- /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(): | + From 97b28b5001c90662c117d142b0dd190fb118aac9 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:20:04 +0100 Subject: [PATCH 10/14] Added Zvfbfwma instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zvfbfwma/vfwmaccbf16.vf.yaml | 27 ++++++++++++++++++++++++++ arch/inst/Zvfbfwma/vfwmaccbf16.vv.yaml | 27 ++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 arch/inst/Zvfbfwma/vfwmaccbf16.vf.yaml create mode 100644 arch/inst/Zvfbfwma/vfwmaccbf16.vv.yaml diff --git a/arch/inst/Zvfbfwma/vfwmaccbf16.vf.yaml b/arch/inst/Zvfbfwma/vfwmaccbf16.vf.yaml new file mode 100644 index 000000000..56943c085 --- /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 000000000..1d258124b --- /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(): | + From 3216eb916c99ec94bd17530d4c4ea2cfe9c1eea5 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:20:28 +0100 Subject: [PATCH 11/14] Added Zvkg instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zvkg/vghsh.vv.yaml | 25 +++++++++++++++++++++++++ arch/inst/Zvkg/vgmul.vv.yaml | 23 +++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 arch/inst/Zvkg/vghsh.vv.yaml create mode 100644 arch/inst/Zvkg/vgmul.vv.yaml diff --git a/arch/inst/Zvkg/vghsh.vv.yaml b/arch/inst/Zvkg/vghsh.vv.yaml new file mode 100644 index 000000000..6621787d8 --- /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 000000000..54471d29a --- /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(): | + From ff71990629d195f4bf774c61e32a6bedb3aab959 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:27:03 +0100 Subject: [PATCH 12/14] Added Zvkn instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zvkn/vaesdf.vs.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vaesdf.vv.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vaesdm.vs.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vaesdm.vv.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vaesef.vs.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vaesef.vv.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vaesem.vs.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vaesem.vv.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vaeskf1.vi.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvkn/vaeskf2.vi.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvkn/vaesz.vs.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvkn/vsha2ch.vv.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvkn/vsha2cl.vv.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvkn/vsha2ms.vv.yaml | 26 ++++++++++++++++++++++++++ 14 files changed, 346 insertions(+) create mode 100644 arch/inst/Zvkn/vaesdf.vs.yaml create mode 100644 arch/inst/Zvkn/vaesdf.vv.yaml create mode 100644 arch/inst/Zvkn/vaesdm.vs.yaml create mode 100644 arch/inst/Zvkn/vaesdm.vv.yaml create mode 100644 arch/inst/Zvkn/vaesef.vs.yaml create mode 100644 arch/inst/Zvkn/vaesef.vv.yaml create mode 100644 arch/inst/Zvkn/vaesem.vs.yaml create mode 100644 arch/inst/Zvkn/vaesem.vv.yaml create mode 100644 arch/inst/Zvkn/vaeskf1.vi.yaml create mode 100644 arch/inst/Zvkn/vaeskf2.vi.yaml create mode 100644 arch/inst/Zvkn/vaesz.vs.yaml create mode 100644 arch/inst/Zvkn/vsha2ch.vv.yaml create mode 100644 arch/inst/Zvkn/vsha2cl.vv.yaml create mode 100644 arch/inst/Zvkn/vsha2ms.vv.yaml diff --git a/arch/inst/Zvkn/vaesdf.vs.yaml b/arch/inst/Zvkn/vaesdf.vs.yaml new file mode 100644 index 000000000..ca1f5b7ff --- /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 000000000..61ebaeffc --- /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 000000000..24154a4ef --- /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 000000000..b9bbc6c9c --- /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 000000000..a22ce5bcf --- /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 000000000..8495cca4f --- /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 000000000..f9c8a99dd --- /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 000000000..cf2fb6cc4 --- /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 000000000..d3b688f78 --- /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 000000000..4830e4f37 --- /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 000000000..a0454556f --- /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 000000000..30112ce04 --- /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 000000000..2824416f4 --- /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 000000000..4355c230e --- /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(): | + From 7f292fb56603b73ee63ccdf7a25c085b7dc0c310 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 12:28:19 +0100 Subject: [PATCH 13/14] Added Zvks instructions Signed-off-by: Afonso Oliveira --- arch/inst/Zvks/vsm3c.vi.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvks/vsm3me.vv.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvks/vsm4k.vi.yaml | 26 ++++++++++++++++++++++++++ arch/inst/Zvks/vsm4r.vs.yaml | 24 ++++++++++++++++++++++++ arch/inst/Zvks/vsm4r.vv.yaml | 24 ++++++++++++++++++++++++ 5 files changed, 126 insertions(+) create mode 100644 arch/inst/Zvks/vsm3c.vi.yaml create mode 100644 arch/inst/Zvks/vsm3me.vv.yaml create mode 100644 arch/inst/Zvks/vsm4k.vi.yaml create mode 100644 arch/inst/Zvks/vsm4r.vs.yaml create mode 100644 arch/inst/Zvks/vsm4r.vv.yaml diff --git a/arch/inst/Zvks/vsm3c.vi.yaml b/arch/inst/Zvks/vsm3c.vi.yaml new file mode 100644 index 000000000..a7920c09a --- /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 000000000..a4c8393a8 --- /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 000000000..30451cc36 --- /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 000000000..1632907cd --- /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 000000000..ebd8aa3be --- /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(): | + From 99bbc15f257e9392ab1fd2f0266b6cc649f5c74e Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Sun, 27 Oct 2024 18:37:29 +0000 Subject: [PATCH 14/14] Enhanced excludedBy description on zext.h Signed-off-by: Afonso Oliveira --- arch/inst/B/zext.h.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/inst/B/zext.h.yaml b/arch/inst/B/zext.h.yaml index 07199f419..7bca6dd6a 100644 --- a/arch/inst/B/zext.h.yaml +++ b/arch/inst/B/zext.h.yaml @@ -28,7 +28,8 @@ zext.h: location: 19-15 - name: rd location: 11-7 - excludedBy: Zbkb # zext.h instruction is a pseudo-op for `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