xref: /freebsd-src/sys/contrib/device-tree/Bindings/riscv/extensions.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
1f126890aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR MIT)
2f126890aSEmmanuel Vadot%YAML 1.2
3f126890aSEmmanuel Vadot---
4f126890aSEmmanuel Vadot$id: http://devicetree.org/schemas/riscv/extensions.yaml#
5f126890aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6f126890aSEmmanuel Vadot
7f126890aSEmmanuel Vadottitle: RISC-V ISA extensions
8f126890aSEmmanuel Vadot
9f126890aSEmmanuel Vadotmaintainers:
10f126890aSEmmanuel Vadot  - Paul Walmsley <paul.walmsley@sifive.com>
11f126890aSEmmanuel Vadot  - Palmer Dabbelt <palmer@sifive.com>
12f126890aSEmmanuel Vadot  - Conor Dooley <conor@kernel.org>
13f126890aSEmmanuel Vadot
14f126890aSEmmanuel Vadotdescription: |
15f126890aSEmmanuel Vadot  RISC-V has a large number of extensions, some of which are "standard"
16f126890aSEmmanuel Vadot  extensions, meaning they are ratified by RISC-V International, and others
17f126890aSEmmanuel Vadot  are "vendor" extensions.
18f126890aSEmmanuel Vadot  This document defines properties that indicate whether a hart supports a
19f126890aSEmmanuel Vadot  given extension.
20f126890aSEmmanuel Vadot
21f126890aSEmmanuel Vadot  Once a standard extension has been ratified, no changes in behaviour can be
22f126890aSEmmanuel Vadot  made without the creation of a new extension.
23f126890aSEmmanuel Vadot  The properties for standard extensions therefore map to their originally
24f126890aSEmmanuel Vadot  ratified states, with the exception of the I, Zicntr & Zihpm extensions.
25f126890aSEmmanuel Vadot  See the "i" property for more information.
26f126890aSEmmanuel Vadot
27f126890aSEmmanuel Vadotselect:
28f126890aSEmmanuel Vadot  properties:
29f126890aSEmmanuel Vadot    compatible:
30f126890aSEmmanuel Vadot      contains:
31f126890aSEmmanuel Vadot        const: riscv
32f126890aSEmmanuel Vadot
33f126890aSEmmanuel Vadotproperties:
34f126890aSEmmanuel Vadot  riscv,isa:
35f126890aSEmmanuel Vadot    description:
36f126890aSEmmanuel Vadot      Identifies the specific RISC-V instruction set architecture
37f126890aSEmmanuel Vadot      supported by the hart.  These are documented in the RISC-V
38f126890aSEmmanuel Vadot      User-Level ISA document, available from
39f126890aSEmmanuel Vadot      https://riscv.org/specifications/
40f126890aSEmmanuel Vadot
41f126890aSEmmanuel Vadot      Due to revisions of the ISA specification, some deviations
42f126890aSEmmanuel Vadot      have arisen over time.
43f126890aSEmmanuel Vadot      Notably, riscv,isa was defined prior to the creation of the
44f126890aSEmmanuel Vadot      Zicntr, Zicsr, Zifencei and Zihpm extensions and thus "i"
45f126890aSEmmanuel Vadot      implies "zicntr_zicsr_zifencei_zihpm".
46f126890aSEmmanuel Vadot
47f126890aSEmmanuel Vadot      While the isa strings in ISA specification are case
48f126890aSEmmanuel Vadot      insensitive, letters in the riscv,isa string must be all
49f126890aSEmmanuel Vadot      lowercase.
50f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string
518d13bc63SEmmanuel Vadot    pattern: ^rv(?:64|32)imaf?d?q?c?b?k?j?p?v?h?(?:[hsxz](?:[0-9a-z])+)?(?:_[hsxz](?:[0-9a-z])+)*$
52f126890aSEmmanuel Vadot    deprecated: true
53f126890aSEmmanuel Vadot
54f126890aSEmmanuel Vadot  riscv,isa-base:
55f126890aSEmmanuel Vadot    description:
56f126890aSEmmanuel Vadot      The base ISA implemented by this hart, as described by the 20191213
57f126890aSEmmanuel Vadot      version of the unprivileged ISA specification.
58f126890aSEmmanuel Vadot    enum:
59f126890aSEmmanuel Vadot      - rv32i
60f126890aSEmmanuel Vadot      - rv64i
61f126890aSEmmanuel Vadot
62f126890aSEmmanuel Vadot  riscv,isa-extensions:
63f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string-array
64f126890aSEmmanuel Vadot    minItems: 1
65f126890aSEmmanuel Vadot    description: Extensions supported by the hart.
66f126890aSEmmanuel Vadot    items:
67f126890aSEmmanuel Vadot      anyOf:
68f126890aSEmmanuel Vadot        # single letter extensions, in canonical order
69f126890aSEmmanuel Vadot        - const: i
70f126890aSEmmanuel Vadot          description: |
71f126890aSEmmanuel Vadot            The base integer instruction set, as ratified in the 20191213
72f126890aSEmmanuel Vadot            version of the unprivileged ISA specification.
73f126890aSEmmanuel Vadot
74f126890aSEmmanuel Vadot            This does not include Chapter 10, "Counters", which was moved into
75f126890aSEmmanuel Vadot            the Zicntr and Zihpm extensions after the ratification of the
76f126890aSEmmanuel Vadot            20191213 version of the unprivileged specification.
77f126890aSEmmanuel Vadot
78f126890aSEmmanuel Vadot        - const: m
79f126890aSEmmanuel Vadot          description:
80f126890aSEmmanuel Vadot            The standard M extension for integer multiplication and division, as
81f126890aSEmmanuel Vadot            ratified in the 20191213 version of the unprivileged ISA
82f126890aSEmmanuel Vadot            specification.
83f126890aSEmmanuel Vadot
84f126890aSEmmanuel Vadot        - const: a
85f126890aSEmmanuel Vadot          description:
86f126890aSEmmanuel Vadot            The standard A extension for atomic instructions, as ratified in the
87f126890aSEmmanuel Vadot            20191213 version of the unprivileged ISA specification.
88f126890aSEmmanuel Vadot
89f126890aSEmmanuel Vadot        - const: f
90f126890aSEmmanuel Vadot          description:
91f126890aSEmmanuel Vadot            The standard F extension for single-precision floating point, as
92f126890aSEmmanuel Vadot            ratified in the 20191213 version of the unprivileged ISA
93f126890aSEmmanuel Vadot            specification.
94f126890aSEmmanuel Vadot
95f126890aSEmmanuel Vadot        - const: d
96f126890aSEmmanuel Vadot          description:
97f126890aSEmmanuel Vadot            The standard D extension for double-precision floating-point, as
98f126890aSEmmanuel Vadot            ratified in the 20191213 version of the unprivileged ISA
99f126890aSEmmanuel Vadot            specification.
100f126890aSEmmanuel Vadot
101f126890aSEmmanuel Vadot        - const: q
102f126890aSEmmanuel Vadot          description:
103f126890aSEmmanuel Vadot            The standard Q extension for quad-precision floating-point, as
104f126890aSEmmanuel Vadot            ratified in the 20191213 version of the unprivileged ISA
105f126890aSEmmanuel Vadot            specification.
106f126890aSEmmanuel Vadot
107f126890aSEmmanuel Vadot        - const: c
108f126890aSEmmanuel Vadot          description:
109f126890aSEmmanuel Vadot            The standard C extension for compressed instructions, as ratified in
110f126890aSEmmanuel Vadot            the 20191213 version of the unprivileged ISA specification.
111f126890aSEmmanuel Vadot
112f126890aSEmmanuel Vadot        - const: v
113f126890aSEmmanuel Vadot          description:
114f126890aSEmmanuel Vadot            The standard V extension for vector operations, as ratified
115f126890aSEmmanuel Vadot            in-and-around commit 7a6c8ae ("Fix text that describes vfmv.v.f
116f126890aSEmmanuel Vadot            encoding") of the riscv-v-spec.
117f126890aSEmmanuel Vadot
118f126890aSEmmanuel Vadot        - const: h
119f126890aSEmmanuel Vadot          description:
120f126890aSEmmanuel Vadot            The standard H extension for hypervisors as ratified in the 20191213
121f126890aSEmmanuel Vadot            version of the privileged ISA specification.
122f126890aSEmmanuel Vadot
123f126890aSEmmanuel Vadot        # multi-letter extensions, sorted alphanumerically
124f126890aSEmmanuel Vadot        - const: smaia
125f126890aSEmmanuel Vadot          description: |
126f126890aSEmmanuel Vadot            The standard Smaia supervisor-level extension for the advanced
127f126890aSEmmanuel Vadot            interrupt architecture for machine-mode-visible csr and behavioural
128f126890aSEmmanuel Vadot            changes to interrupts as frozen at commit ccbddab ("Merge pull
129f126890aSEmmanuel Vadot            request #42 from riscv/jhauser-2023-RC4") of riscv-aia.
130f126890aSEmmanuel Vadot
13184943d6fSEmmanuel Vadot        - const: smstateen
13284943d6fSEmmanuel Vadot          description: |
13384943d6fSEmmanuel Vadot            The standard Smstateen extension for controlling access to CSRs
13484943d6fSEmmanuel Vadot            added by other RISC-V extensions in H/S/VS/U/VU modes and as
13584943d6fSEmmanuel Vadot            ratified at commit a28bfae (Ratified (#7)) of riscv-state-enable.
13684943d6fSEmmanuel Vadot
137f126890aSEmmanuel Vadot        - const: ssaia
138f126890aSEmmanuel Vadot          description: |
139f126890aSEmmanuel Vadot            The standard Ssaia supervisor-level extension for the advanced
140f126890aSEmmanuel Vadot            interrupt architecture for supervisor-mode-visible csr and
141f126890aSEmmanuel Vadot            behavioural changes to interrupts as frozen at commit ccbddab
142f126890aSEmmanuel Vadot            ("Merge pull request #42 from riscv/jhauser-2023-RC4") of riscv-aia.
143f126890aSEmmanuel Vadot
144f126890aSEmmanuel Vadot        - const: sscofpmf
145f126890aSEmmanuel Vadot          description: |
146f126890aSEmmanuel Vadot            The standard Sscofpmf supervisor-level extension for count overflow
147f126890aSEmmanuel Vadot            and mode-based filtering as ratified at commit 01d1df0 ("Add ability
148f126890aSEmmanuel Vadot            to manually trigger workflow. (#2)") of riscv-count-overflow.
149f126890aSEmmanuel Vadot
150f126890aSEmmanuel Vadot        - const: sstc
151f126890aSEmmanuel Vadot          description: |
152f126890aSEmmanuel Vadot            The standard Sstc supervisor-level extension for time compare as
153f126890aSEmmanuel Vadot            ratified at commit 3f9ed34 ("Add ability to manually trigger
154f126890aSEmmanuel Vadot            workflow. (#2)") of riscv-time-compare.
155f126890aSEmmanuel Vadot
156f126890aSEmmanuel Vadot        - const: svinval
157f126890aSEmmanuel Vadot          description:
158f126890aSEmmanuel Vadot            The standard Svinval supervisor-level extension for fine-grained
159f126890aSEmmanuel Vadot            address-translation cache invalidation as ratified in the 20191213
160f126890aSEmmanuel Vadot            version of the privileged ISA specification.
161f126890aSEmmanuel Vadot
162f126890aSEmmanuel Vadot        - const: svnapot
163f126890aSEmmanuel Vadot          description:
164f126890aSEmmanuel Vadot            The standard Svnapot supervisor-level extensions for napot
165f126890aSEmmanuel Vadot            translation contiguity as ratified in the 20191213 version of the
166f126890aSEmmanuel Vadot            privileged ISA specification.
167f126890aSEmmanuel Vadot
168f126890aSEmmanuel Vadot        - const: svpbmt
169f126890aSEmmanuel Vadot          description:
170f126890aSEmmanuel Vadot            The standard Svpbmt supervisor-level extensions for page-based
171f126890aSEmmanuel Vadot            memory types as ratified in the 20191213 version of the privileged
172f126890aSEmmanuel Vadot            ISA specification.
173f126890aSEmmanuel Vadot
174*b2d2a78aSEmmanuel Vadot        - const: svvptc
175*b2d2a78aSEmmanuel Vadot          description:
176*b2d2a78aSEmmanuel Vadot            The standard Svvptc supervisor-level extension for
177*b2d2a78aSEmmanuel Vadot            address-translation cache behaviour with respect to invalid entries
178*b2d2a78aSEmmanuel Vadot            as ratified at commit 4a69197e5617 ("Update to ratified state") of
179*b2d2a78aSEmmanuel Vadot            riscv-svvptc.
180*b2d2a78aSEmmanuel Vadot
1818d13bc63SEmmanuel Vadot        - const: zacas
1828d13bc63SEmmanuel Vadot          description: |
1838d13bc63SEmmanuel Vadot            The Zacas extension for Atomic Compare-and-Swap (CAS) instructions
1848d13bc63SEmmanuel Vadot            is supported as ratified at commit 5059e0ca641c ("update to
1858d13bc63SEmmanuel Vadot            ratified") of the riscv-zacas.
1868d13bc63SEmmanuel Vadot
1870e8011faSEmmanuel Vadot        - const: zawrs
1880e8011faSEmmanuel Vadot          description: |
1890e8011faSEmmanuel Vadot            The Zawrs extension for entering a low-power state or for trapping
1900e8011faSEmmanuel Vadot            to a hypervisor while waiting on a store to a memory location, as
1910e8011faSEmmanuel Vadot            ratified in commit 98918c844281 ("Merge pull request #1217 from
1920e8011faSEmmanuel Vadot            riscv/zawrs") of riscv-isa-manual.
1930e8011faSEmmanuel Vadot
194f126890aSEmmanuel Vadot        - const: zba
195f126890aSEmmanuel Vadot          description: |
196f126890aSEmmanuel Vadot            The standard Zba bit-manipulation extension for address generation
197f126890aSEmmanuel Vadot            acceleration instructions as ratified at commit 6d33919 ("Merge pull
198f126890aSEmmanuel Vadot            request #158 from hirooih/clmul-fix-loop-end-condition") of
199f126890aSEmmanuel Vadot            riscv-bitmanip.
200f126890aSEmmanuel Vadot
201f126890aSEmmanuel Vadot        - const: zbb
202f126890aSEmmanuel Vadot          description: |
203f126890aSEmmanuel Vadot            The standard Zbb bit-manipulation extension for basic bit-manipulation
204f126890aSEmmanuel Vadot            as ratified at commit 6d33919 ("Merge pull request #158 from
205f126890aSEmmanuel Vadot            hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
206f126890aSEmmanuel Vadot
207f126890aSEmmanuel Vadot        - const: zbc
208f126890aSEmmanuel Vadot          description: |
209f126890aSEmmanuel Vadot            The standard Zbc bit-manipulation extension for carry-less
210f126890aSEmmanuel Vadot            multiplication as ratified at commit 6d33919 ("Merge pull request
211f126890aSEmmanuel Vadot            #158 from hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
212f126890aSEmmanuel Vadot
2138d13bc63SEmmanuel Vadot        - const: zbkb
2148d13bc63SEmmanuel Vadot          description:
2158d13bc63SEmmanuel Vadot            The standard Zbkb bitmanip instructions for cryptography as ratified
2168d13bc63SEmmanuel Vadot            in version 1.0 of RISC-V Cryptography Extensions Volume I
2178d13bc63SEmmanuel Vadot            specification.
2188d13bc63SEmmanuel Vadot
2198d13bc63SEmmanuel Vadot        - const: zbkc
2208d13bc63SEmmanuel Vadot          description:
2218d13bc63SEmmanuel Vadot            The standard Zbkc carry-less multiply instructions as ratified
2228d13bc63SEmmanuel Vadot            in version 1.0 of RISC-V Cryptography Extensions Volume I
2238d13bc63SEmmanuel Vadot            specification.
2248d13bc63SEmmanuel Vadot
2258d13bc63SEmmanuel Vadot        - const: zbkx
2268d13bc63SEmmanuel Vadot          description:
2278d13bc63SEmmanuel Vadot            The standard Zbkx crossbar permutation instructions as ratified
2288d13bc63SEmmanuel Vadot            in version 1.0 of RISC-V Cryptography Extensions Volume I
2298d13bc63SEmmanuel Vadot            specification.
2308d13bc63SEmmanuel Vadot
231f126890aSEmmanuel Vadot        - const: zbs
232f126890aSEmmanuel Vadot          description: |
233f126890aSEmmanuel Vadot            The standard Zbs bit-manipulation extension for single-bit
234f126890aSEmmanuel Vadot            instructions as ratified at commit 6d33919 ("Merge pull request #158
235f126890aSEmmanuel Vadot            from hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
236f126890aSEmmanuel Vadot
2370e8011faSEmmanuel Vadot        - const: zca
2380e8011faSEmmanuel Vadot          description: |
2390e8011faSEmmanuel Vadot            The Zca extension part of Zc* standard extensions for code size
2400e8011faSEmmanuel Vadot            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
2410e8011faSEmmanuel Vadot            RV64 as it contains no instructions") of riscv-code-size-reduction,
2420e8011faSEmmanuel Vadot            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
2430e8011faSEmmanuel Vadot            of zc.adoc to src tree.").
2440e8011faSEmmanuel Vadot
2450e8011faSEmmanuel Vadot        - const: zcb
2460e8011faSEmmanuel Vadot          description: |
2470e8011faSEmmanuel Vadot            The Zcb extension part of Zc* standard extensions for code size
2480e8011faSEmmanuel Vadot            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
2490e8011faSEmmanuel Vadot            RV64 as it contains no instructions") of riscv-code-size-reduction,
2500e8011faSEmmanuel Vadot            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
2510e8011faSEmmanuel Vadot            of zc.adoc to src tree.").
2520e8011faSEmmanuel Vadot
2530e8011faSEmmanuel Vadot        - const: zcd
2540e8011faSEmmanuel Vadot          description: |
2550e8011faSEmmanuel Vadot            The Zcd extension part of Zc* standard extensions for code size
2560e8011faSEmmanuel Vadot            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
2570e8011faSEmmanuel Vadot            RV64 as it contains no instructions") of riscv-code-size-reduction,
2580e8011faSEmmanuel Vadot            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
2590e8011faSEmmanuel Vadot            of zc.adoc to src tree.").
2600e8011faSEmmanuel Vadot
2610e8011faSEmmanuel Vadot        - const: zcf
2620e8011faSEmmanuel Vadot          description: |
2630e8011faSEmmanuel Vadot            The Zcf extension part of Zc* standard extensions for code size
2640e8011faSEmmanuel Vadot            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
2650e8011faSEmmanuel Vadot            RV64 as it contains no instructions") of riscv-code-size-reduction,
2660e8011faSEmmanuel Vadot            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
2670e8011faSEmmanuel Vadot            of zc.adoc to src tree.").
2680e8011faSEmmanuel Vadot
2690e8011faSEmmanuel Vadot        - const: zcmop
2700e8011faSEmmanuel Vadot          description:
2710e8011faSEmmanuel Vadot            The standard Zcmop extension version 1.0, as ratified in commit
2720e8011faSEmmanuel Vadot            c732a4f39a4 ("Zcmop is ratified/1.0") of the riscv-isa-manual.
2730e8011faSEmmanuel Vadot
2748d13bc63SEmmanuel Vadot        - const: zfa
2758d13bc63SEmmanuel Vadot          description:
2768d13bc63SEmmanuel Vadot            The standard Zfa extension for additional floating point
2778d13bc63SEmmanuel Vadot            instructions, as ratified in commit 056b6ff ("Zfa is ratified") of
2788d13bc63SEmmanuel Vadot            riscv-isa-manual.
2798d13bc63SEmmanuel Vadot
2808d13bc63SEmmanuel Vadot        - const: zfh
2818d13bc63SEmmanuel Vadot          description:
2828d13bc63SEmmanuel Vadot            The standard Zfh extension for 16-bit half-precision binary
2838d13bc63SEmmanuel Vadot            floating-point instructions, as ratified in commit 64074bc ("Update
2848d13bc63SEmmanuel Vadot            version numbers for Zfh/Zfinx") of riscv-isa-manual.
2858d13bc63SEmmanuel Vadot
2868d13bc63SEmmanuel Vadot        - const: zfhmin
2878d13bc63SEmmanuel Vadot          description:
2888d13bc63SEmmanuel Vadot            The standard Zfhmin extension which provides minimal support for
2898d13bc63SEmmanuel Vadot            16-bit half-precision binary floating-point instructions, as ratified
2908d13bc63SEmmanuel Vadot            in commit 64074bc ("Update version numbers for Zfh/Zfinx") of
2918d13bc63SEmmanuel Vadot            riscv-isa-manual.
2928d13bc63SEmmanuel Vadot
2938d13bc63SEmmanuel Vadot        - const: zk
2948d13bc63SEmmanuel Vadot          description:
2958d13bc63SEmmanuel Vadot            The standard Zk Standard Scalar cryptography extension as ratified
2968d13bc63SEmmanuel Vadot            in version 1.0 of RISC-V Cryptography Extensions Volume I
2978d13bc63SEmmanuel Vadot            specification.
2988d13bc63SEmmanuel Vadot
2998d13bc63SEmmanuel Vadot        - const: zkn
3008d13bc63SEmmanuel Vadot          description:
3018d13bc63SEmmanuel Vadot            The standard Zkn NIST algorithm suite extensions as ratified in
3028d13bc63SEmmanuel Vadot            version 1.0 of RISC-V Cryptography Extensions Volume I
3038d13bc63SEmmanuel Vadot            specification.
3048d13bc63SEmmanuel Vadot
3058d13bc63SEmmanuel Vadot        - const: zknd
3068d13bc63SEmmanuel Vadot          description: |
3078d13bc63SEmmanuel Vadot            The standard Zknd for NIST suite: AES decryption instructions as
3088d13bc63SEmmanuel Vadot            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
3098d13bc63SEmmanuel Vadot            specification.
3108d13bc63SEmmanuel Vadot
3118d13bc63SEmmanuel Vadot        - const: zkne
3128d13bc63SEmmanuel Vadot          description: |
3138d13bc63SEmmanuel Vadot            The standard Zkne for NIST suite: AES encryption instructions as
3148d13bc63SEmmanuel Vadot            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
3158d13bc63SEmmanuel Vadot            specification.
3168d13bc63SEmmanuel Vadot
3178d13bc63SEmmanuel Vadot        - const: zknh
3188d13bc63SEmmanuel Vadot          description: |
3198d13bc63SEmmanuel Vadot            The standard Zknh for NIST suite: hash function instructions as
3208d13bc63SEmmanuel Vadot            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
3218d13bc63SEmmanuel Vadot            specification.
3228d13bc63SEmmanuel Vadot
3238d13bc63SEmmanuel Vadot        - const: zkr
3248d13bc63SEmmanuel Vadot          description:
3258d13bc63SEmmanuel Vadot            The standard Zkr entropy source extension as ratified in version
3268d13bc63SEmmanuel Vadot            1.0 of RISC-V Cryptography Extensions Volume I specification.
3278d13bc63SEmmanuel Vadot            This string being present means that the CSR associated to this
3288d13bc63SEmmanuel Vadot            extension is accessible at the privilege level to which that
3298d13bc63SEmmanuel Vadot            device-tree has been provided.
3308d13bc63SEmmanuel Vadot
3318d13bc63SEmmanuel Vadot        - const: zks
3328d13bc63SEmmanuel Vadot          description:
3338d13bc63SEmmanuel Vadot            The standard Zks ShangMi algorithm suite extensions as ratified in
3348d13bc63SEmmanuel Vadot            version 1.0 of RISC-V Cryptography Extensions Volume I
3358d13bc63SEmmanuel Vadot            specification.
3368d13bc63SEmmanuel Vadot
3378d13bc63SEmmanuel Vadot        - const: zksed
3388d13bc63SEmmanuel Vadot          description: |
3398d13bc63SEmmanuel Vadot            The standard Zksed for ShangMi suite: SM4 block cipher instructions
3408d13bc63SEmmanuel Vadot            as ratified in version 1.0 of RISC-V Cryptography Extensions
3418d13bc63SEmmanuel Vadot            Volume I specification.
3428d13bc63SEmmanuel Vadot
3438d13bc63SEmmanuel Vadot        - const: zksh
3448d13bc63SEmmanuel Vadot          description: |
3458d13bc63SEmmanuel Vadot            The standard Zksh for ShangMi suite: SM3 hash function instructions
3468d13bc63SEmmanuel Vadot            as ratified in version 1.0 of RISC-V Cryptography Extensions
3478d13bc63SEmmanuel Vadot            Volume I specification.
3488d13bc63SEmmanuel Vadot
3498d13bc63SEmmanuel Vadot        - const: zkt
3508d13bc63SEmmanuel Vadot          description:
3518d13bc63SEmmanuel Vadot            The standard Zkt for data independent execution latency as ratified
3528d13bc63SEmmanuel Vadot            in version 1.0 of RISC-V Cryptography Extensions Volume I
3538d13bc63SEmmanuel Vadot            specification.
3548d13bc63SEmmanuel Vadot
355f126890aSEmmanuel Vadot        - const: zicbom
356f126890aSEmmanuel Vadot          description:
357f126890aSEmmanuel Vadot            The standard Zicbom extension for base cache management operations as
358f126890aSEmmanuel Vadot            ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
359f126890aSEmmanuel Vadot
360f126890aSEmmanuel Vadot        - const: zicbop
361f126890aSEmmanuel Vadot          description:
362f126890aSEmmanuel Vadot            The standard Zicbop extension for cache-block prefetch instructions
363f126890aSEmmanuel Vadot            as ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of
364f126890aSEmmanuel Vadot            riscv-CMOs.
365f126890aSEmmanuel Vadot
366f126890aSEmmanuel Vadot        - const: zicboz
367f126890aSEmmanuel Vadot          description:
368f126890aSEmmanuel Vadot            The standard Zicboz extension for cache-block zeroing as ratified
369f126890aSEmmanuel Vadot            in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
370f126890aSEmmanuel Vadot
371f126890aSEmmanuel Vadot        - const: zicntr
372f126890aSEmmanuel Vadot          description:
373f126890aSEmmanuel Vadot            The standard Zicntr extension for base counters and timers, as
374f126890aSEmmanuel Vadot            ratified in the 20191213 version of the unprivileged ISA
375f126890aSEmmanuel Vadot            specification.
376f126890aSEmmanuel Vadot
37784943d6fSEmmanuel Vadot        - const: zicond
37884943d6fSEmmanuel Vadot          description:
37984943d6fSEmmanuel Vadot            The standard Zicond extension for conditional arithmetic and
38084943d6fSEmmanuel Vadot            conditional-select/move operations as ratified in commit 95cf1f9
38184943d6fSEmmanuel Vadot            ("Add changes requested by Ved during signoff") of riscv-zicond.
38284943d6fSEmmanuel Vadot
383f126890aSEmmanuel Vadot        - const: zicsr
384f126890aSEmmanuel Vadot          description: |
385f126890aSEmmanuel Vadot            The standard Zicsr extension for control and status register
386f126890aSEmmanuel Vadot            instructions, as ratified in the 20191213 version of the
387f126890aSEmmanuel Vadot            unprivileged ISA specification.
388f126890aSEmmanuel Vadot
389f126890aSEmmanuel Vadot            This does not include Chapter 10, "Counters", which documents
390f126890aSEmmanuel Vadot            special case read-only CSRs, that were moved into the Zicntr and
391f126890aSEmmanuel Vadot            Zihpm extensions after the ratification of the 20191213 version of
392f126890aSEmmanuel Vadot            the unprivileged specification.
393f126890aSEmmanuel Vadot
394f126890aSEmmanuel Vadot        - const: zifencei
395f126890aSEmmanuel Vadot          description:
396f126890aSEmmanuel Vadot            The standard Zifencei extension for instruction-fetch fence, as
397f126890aSEmmanuel Vadot            ratified in the 20191213 version of the unprivileged ISA
398f126890aSEmmanuel Vadot            specification.
399f126890aSEmmanuel Vadot
400f126890aSEmmanuel Vadot        - const: zihintpause
401f126890aSEmmanuel Vadot          description:
402f126890aSEmmanuel Vadot            The standard Zihintpause extension for pause hints, as ratified in
403f126890aSEmmanuel Vadot            commit d8ab5c7 ("Zihintpause is ratified") of the riscv-isa-manual.
404f126890aSEmmanuel Vadot
4058d13bc63SEmmanuel Vadot        - const: zihintntl
4068d13bc63SEmmanuel Vadot          description:
4078d13bc63SEmmanuel Vadot            The standard Zihintntl extension for non-temporal locality hints, as
4088d13bc63SEmmanuel Vadot            ratified in commit 0dc91f5 ("Zihintntl is ratified") of the
4098d13bc63SEmmanuel Vadot            riscv-isa-manual.
4108d13bc63SEmmanuel Vadot
411f126890aSEmmanuel Vadot        - const: zihpm
412f126890aSEmmanuel Vadot          description:
413f126890aSEmmanuel Vadot            The standard Zihpm extension for hardware performance counters, as
414f126890aSEmmanuel Vadot            ratified in the 20191213 version of the unprivileged ISA
415f126890aSEmmanuel Vadot            specification.
416f126890aSEmmanuel Vadot
4170e8011faSEmmanuel Vadot        - const: zimop
4180e8011faSEmmanuel Vadot          description:
4190e8011faSEmmanuel Vadot            The standard Zimop extension version 1.0, as ratified in commit
4200e8011faSEmmanuel Vadot            58220614a5f ("Zimop is ratified/1.0") of the riscv-isa-manual.
4210e8011faSEmmanuel Vadot
422f126890aSEmmanuel Vadot        - const: ztso
423f126890aSEmmanuel Vadot          description:
424f126890aSEmmanuel Vadot            The standard Ztso extension for total store ordering, as ratified
425f126890aSEmmanuel Vadot            in commit 2e5236 ("Ztso is now ratified.") of the
426f126890aSEmmanuel Vadot            riscv-isa-manual.
427f126890aSEmmanuel Vadot
4288d13bc63SEmmanuel Vadot        - const: zvbb
4298d13bc63SEmmanuel Vadot          description:
4308d13bc63SEmmanuel Vadot            The standard Zvbb extension for vectored basic bit-manipulation
4318d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
4328d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
4338d13bc63SEmmanuel Vadot
4348d13bc63SEmmanuel Vadot        - const: zvbc
4358d13bc63SEmmanuel Vadot          description:
4368d13bc63SEmmanuel Vadot            The standard Zvbc extension for vectored carryless multiplication
4378d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
4388d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
4398d13bc63SEmmanuel Vadot
4400e8011faSEmmanuel Vadot        - const: zve32f
4410e8011faSEmmanuel Vadot          description:
4420e8011faSEmmanuel Vadot            The standard Zve32f extension for embedded processors, as ratified
4430e8011faSEmmanuel Vadot            in commit 6f702a2 ("Vector extensions are now ratified") of
4440e8011faSEmmanuel Vadot            riscv-v-spec.
4450e8011faSEmmanuel Vadot
4460e8011faSEmmanuel Vadot        - const: zve32x
4470e8011faSEmmanuel Vadot          description:
4480e8011faSEmmanuel Vadot            The standard Zve32x extension for embedded processors, as ratified
4490e8011faSEmmanuel Vadot            in commit 6f702a2 ("Vector extensions are now ratified") of
4500e8011faSEmmanuel Vadot            riscv-v-spec.
4510e8011faSEmmanuel Vadot
4520e8011faSEmmanuel Vadot        - const: zve64d
4530e8011faSEmmanuel Vadot          description:
4540e8011faSEmmanuel Vadot            The standard Zve64d extension for embedded processors, as ratified
4550e8011faSEmmanuel Vadot            in commit 6f702a2 ("Vector extensions are now ratified") of
4560e8011faSEmmanuel Vadot            riscv-v-spec.
4570e8011faSEmmanuel Vadot
4580e8011faSEmmanuel Vadot        - const: zve64f
4590e8011faSEmmanuel Vadot          description:
4600e8011faSEmmanuel Vadot            The standard Zve64f extension for embedded processors, as ratified
4610e8011faSEmmanuel Vadot            in commit 6f702a2 ("Vector extensions are now ratified") of
4620e8011faSEmmanuel Vadot            riscv-v-spec.
4630e8011faSEmmanuel Vadot
4640e8011faSEmmanuel Vadot        - const: zve64x
4650e8011faSEmmanuel Vadot          description:
4660e8011faSEmmanuel Vadot            The standard Zve64x extension for embedded processors, as ratified
4670e8011faSEmmanuel Vadot            in commit 6f702a2 ("Vector extensions are now ratified") of
4680e8011faSEmmanuel Vadot            riscv-v-spec.
4690e8011faSEmmanuel Vadot
4708d13bc63SEmmanuel Vadot        - const: zvfh
4718d13bc63SEmmanuel Vadot          description:
4728d13bc63SEmmanuel Vadot            The standard Zvfh extension for vectored half-precision
4738d13bc63SEmmanuel Vadot            floating-point instructions, as ratified in commit e2ccd05
4748d13bc63SEmmanuel Vadot            ("Remove draft warnings from Zvfh[min]") of riscv-v-spec.
4758d13bc63SEmmanuel Vadot
4768d13bc63SEmmanuel Vadot        - const: zvfhmin
4778d13bc63SEmmanuel Vadot          description:
4788d13bc63SEmmanuel Vadot            The standard Zvfhmin extension for vectored minimal half-precision
4798d13bc63SEmmanuel Vadot            floating-point instructions, as ratified in commit e2ccd05
4808d13bc63SEmmanuel Vadot            ("Remove draft warnings from Zvfh[min]") of riscv-v-spec.
4818d13bc63SEmmanuel Vadot
4828d13bc63SEmmanuel Vadot        - const: zvkb
4838d13bc63SEmmanuel Vadot          description:
4848d13bc63SEmmanuel Vadot            The standard Zvkb extension for vector cryptography bit-manipulation
4858d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
4868d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
4878d13bc63SEmmanuel Vadot
4888d13bc63SEmmanuel Vadot        - const: zvkg
4898d13bc63SEmmanuel Vadot          description:
4908d13bc63SEmmanuel Vadot            The standard Zvkg extension for vector GCM/GMAC instructions, as
4918d13bc63SEmmanuel Vadot            ratified in commit 56ed795 ("Update riscv-crypto-spec-vector.adoc")
4928d13bc63SEmmanuel Vadot            of riscv-crypto.
4938d13bc63SEmmanuel Vadot
4948d13bc63SEmmanuel Vadot        - const: zvkn
4958d13bc63SEmmanuel Vadot          description:
4968d13bc63SEmmanuel Vadot            The standard Zvkn extension for NIST algorithm suite instructions, as
4978d13bc63SEmmanuel Vadot            ratified in commit 56ed795 ("Update riscv-crypto-spec-vector.adoc")
4988d13bc63SEmmanuel Vadot            of riscv-crypto.
4998d13bc63SEmmanuel Vadot
5008d13bc63SEmmanuel Vadot        - const: zvknc
5018d13bc63SEmmanuel Vadot          description:
5028d13bc63SEmmanuel Vadot            The standard Zvknc extension for NIST algorithm suite with carryless
5038d13bc63SEmmanuel Vadot            multiply instructions, as ratified in commit 56ed795 ("Update
5048d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
5058d13bc63SEmmanuel Vadot
5068d13bc63SEmmanuel Vadot        - const: zvkned
5078d13bc63SEmmanuel Vadot          description:
5088d13bc63SEmmanuel Vadot            The standard Zvkned extension for Vector AES block cipher
5098d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
5108d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
5118d13bc63SEmmanuel Vadot
5128d13bc63SEmmanuel Vadot        - const: zvkng
5138d13bc63SEmmanuel Vadot          description:
5148d13bc63SEmmanuel Vadot            The standard Zvkng extension for NIST algorithm suite with GCM
5158d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
5168d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
5178d13bc63SEmmanuel Vadot
5188d13bc63SEmmanuel Vadot        - const: zvknha
5198d13bc63SEmmanuel Vadot          description: |
5208d13bc63SEmmanuel Vadot            The standard Zvknha extension for NIST suite: vector SHA-2 secure,
5218d13bc63SEmmanuel Vadot            hash (SHA-256 only) instructions, as ratified in commit
5228d13bc63SEmmanuel Vadot            56ed795 ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
5238d13bc63SEmmanuel Vadot
5248d13bc63SEmmanuel Vadot        - const: zvknhb
5258d13bc63SEmmanuel Vadot          description: |
5268d13bc63SEmmanuel Vadot            The standard Zvknhb extension for NIST suite: vector SHA-2 secure,
5278d13bc63SEmmanuel Vadot            hash (SHA-256 and SHA-512) instructions, as ratified in commit
5288d13bc63SEmmanuel Vadot            56ed795 ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
5298d13bc63SEmmanuel Vadot
5308d13bc63SEmmanuel Vadot        - const: zvks
5318d13bc63SEmmanuel Vadot          description:
5328d13bc63SEmmanuel Vadot            The standard Zvks extension for ShangMi algorithm suite
5338d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
5348d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
5358d13bc63SEmmanuel Vadot
5368d13bc63SEmmanuel Vadot        - const: zvksc
5378d13bc63SEmmanuel Vadot          description:
5388d13bc63SEmmanuel Vadot            The standard Zvksc extension for ShangMi algorithm suite with
5398d13bc63SEmmanuel Vadot            carryless multiplication instructions, as ratified in commit 56ed795
5408d13bc63SEmmanuel Vadot            ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
5418d13bc63SEmmanuel Vadot
5428d13bc63SEmmanuel Vadot        - const: zvksed
5438d13bc63SEmmanuel Vadot          description: |
5448d13bc63SEmmanuel Vadot            The standard Zvksed extension for ShangMi suite: SM4 block cipher
5458d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
5468d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
5478d13bc63SEmmanuel Vadot
5488d13bc63SEmmanuel Vadot        - const: zvksh
5498d13bc63SEmmanuel Vadot          description: |
5508d13bc63SEmmanuel Vadot            The standard Zvksh extension for ShangMi suite: SM3 secure hash
5518d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
5528d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
5538d13bc63SEmmanuel Vadot
5548d13bc63SEmmanuel Vadot        - const: zvksg
5558d13bc63SEmmanuel Vadot          description:
5568d13bc63SEmmanuel Vadot            The standard Zvksg extension for ShangMi algorithm suite with GCM
5578d13bc63SEmmanuel Vadot            instructions, as ratified in commit 56ed795 ("Update
5588d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
5598d13bc63SEmmanuel Vadot
5608d13bc63SEmmanuel Vadot        - const: zvkt
5618d13bc63SEmmanuel Vadot          description:
5628d13bc63SEmmanuel Vadot            The standard Zvkt extension for vector data-independent execution
5638d13bc63SEmmanuel Vadot            latency, as ratified in commit 56ed795 ("Update
5648d13bc63SEmmanuel Vadot            riscv-crypto-spec-vector.adoc") of riscv-crypto.
5658d13bc63SEmmanuel Vadot
56601950c46SEmmanuel Vadot        - const: xandespmu
56701950c46SEmmanuel Vadot          description:
56801950c46SEmmanuel Vadot            The Andes Technology performance monitor extension for counter overflow
56901950c46SEmmanuel Vadot            and privilege mode filtering. For more details, see Counter Related
57001950c46SEmmanuel Vadot            Registers in the AX45MP datasheet.
57101950c46SEmmanuel Vadot            https://www.andestech.com/wp-content/uploads/AX45MP-1C-Rev.-5.0.0-Datasheet.pdf
57201950c46SEmmanuel Vadot
5730e8011faSEmmanuel Vadot    allOf:
5740e8011faSEmmanuel Vadot      # Zcb depends on Zca
5750e8011faSEmmanuel Vadot      - if:
5760e8011faSEmmanuel Vadot          contains:
5770e8011faSEmmanuel Vadot            const: zcb
5780e8011faSEmmanuel Vadot        then:
5790e8011faSEmmanuel Vadot          contains:
5800e8011faSEmmanuel Vadot            const: zca
5810e8011faSEmmanuel Vadot      # Zcd depends on Zca and D
5820e8011faSEmmanuel Vadot      - if:
5830e8011faSEmmanuel Vadot          contains:
5840e8011faSEmmanuel Vadot            const: zcd
5850e8011faSEmmanuel Vadot        then:
5860e8011faSEmmanuel Vadot          allOf:
5870e8011faSEmmanuel Vadot            - contains:
5880e8011faSEmmanuel Vadot                const: zca
5890e8011faSEmmanuel Vadot            - contains:
5900e8011faSEmmanuel Vadot                const: d
5910e8011faSEmmanuel Vadot      # Zcf depends on Zca and F
5920e8011faSEmmanuel Vadot      - if:
5930e8011faSEmmanuel Vadot          contains:
5940e8011faSEmmanuel Vadot            const: zcf
5950e8011faSEmmanuel Vadot        then:
5960e8011faSEmmanuel Vadot          allOf:
5970e8011faSEmmanuel Vadot            - contains:
5980e8011faSEmmanuel Vadot                const: zca
5990e8011faSEmmanuel Vadot            - contains:
6000e8011faSEmmanuel Vadot                const: f
6010e8011faSEmmanuel Vadot      # Zcmop depends on Zca
6020e8011faSEmmanuel Vadot      - if:
6030e8011faSEmmanuel Vadot          contains:
6040e8011faSEmmanuel Vadot            const: zcmop
6050e8011faSEmmanuel Vadot        then:
6060e8011faSEmmanuel Vadot          contains:
6070e8011faSEmmanuel Vadot            const: zca
6080e8011faSEmmanuel Vadot
6090e8011faSEmmanuel VadotallOf:
6100e8011faSEmmanuel Vadot  # Zcf extension does not exist on rv64
6110e8011faSEmmanuel Vadot  - if:
6120e8011faSEmmanuel Vadot      properties:
6130e8011faSEmmanuel Vadot        riscv,isa-extensions:
6140e8011faSEmmanuel Vadot          contains:
6150e8011faSEmmanuel Vadot            const: zcf
6160e8011faSEmmanuel Vadot        riscv,isa-base:
6170e8011faSEmmanuel Vadot          contains:
6180e8011faSEmmanuel Vadot            const: rv64i
6190e8011faSEmmanuel Vadot    then:
6200e8011faSEmmanuel Vadot      properties:
6210e8011faSEmmanuel Vadot        riscv,isa-extensions:
6220e8011faSEmmanuel Vadot          not:
6230e8011faSEmmanuel Vadot            contains:
6240e8011faSEmmanuel Vadot              const: zcf
6250e8011faSEmmanuel Vadot
626f126890aSEmmanuel VadotadditionalProperties: true
627f126890aSEmmanuel Vadot...
628