xref: /linux/Documentation/devicetree/bindings/riscv/extensions.yaml (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1aeb71e42SConor Dooley# SPDX-License-Identifier: (GPL-2.0 OR MIT)
2aeb71e42SConor Dooley%YAML 1.2
3aeb71e42SConor Dooley---
4aeb71e42SConor Dooley$id: http://devicetree.org/schemas/riscv/extensions.yaml#
5aeb71e42SConor Dooley$schema: http://devicetree.org/meta-schemas/core.yaml#
6aeb71e42SConor Dooley
7aeb71e42SConor Dooleytitle: RISC-V ISA extensions
8aeb71e42SConor Dooley
9aeb71e42SConor Dooleymaintainers:
10aeb71e42SConor Dooley  - Paul Walmsley <paul.walmsley@sifive.com>
11aeb71e42SConor Dooley  - Palmer Dabbelt <palmer@sifive.com>
12aeb71e42SConor Dooley  - Conor Dooley <conor@kernel.org>
13aeb71e42SConor Dooley
14aeb71e42SConor Dooleydescription: |
15aeb71e42SConor Dooley  RISC-V has a large number of extensions, some of which are "standard"
16aeb71e42SConor Dooley  extensions, meaning they are ratified by RISC-V International, and others
17aeb71e42SConor Dooley  are "vendor" extensions.
18aeb71e42SConor Dooley  This document defines properties that indicate whether a hart supports a
19aeb71e42SConor Dooley  given extension.
20aeb71e42SConor Dooley
21aeb71e42SConor Dooley  Once a standard extension has been ratified, no changes in behaviour can be
22aeb71e42SConor Dooley  made without the creation of a new extension.
23aeb71e42SConor Dooley  The properties for standard extensions therefore map to their originally
24aeb71e42SConor Dooley  ratified states, with the exception of the I, Zicntr & Zihpm extensions.
25aeb71e42SConor Dooley  See the "i" property for more information.
26aeb71e42SConor Dooley
27aeb71e42SConor Dooleyselect:
28aeb71e42SConor Dooley  properties:
29aeb71e42SConor Dooley    compatible:
30aeb71e42SConor Dooley      contains:
31aeb71e42SConor Dooley        const: riscv
32aeb71e42SConor Dooley
33aeb71e42SConor Dooleyproperties:
34aeb71e42SConor Dooley  riscv,isa:
35aeb71e42SConor Dooley    description:
36aeb71e42SConor Dooley      Identifies the specific RISC-V instruction set architecture
37aeb71e42SConor Dooley      supported by the hart.  These are documented in the RISC-V
38aeb71e42SConor Dooley      User-Level ISA document, available from
39aeb71e42SConor Dooley      https://riscv.org/specifications/
40aeb71e42SConor Dooley
41aeb71e42SConor Dooley      Due to revisions of the ISA specification, some deviations
42aeb71e42SConor Dooley      have arisen over time.
43aeb71e42SConor Dooley      Notably, riscv,isa was defined prior to the creation of the
44aeb71e42SConor Dooley      Zicntr, Zicsr, Zifencei and Zihpm extensions and thus "i"
45aeb71e42SConor Dooley      implies "zicntr_zicsr_zifencei_zihpm".
46aeb71e42SConor Dooley
47aeb71e42SConor Dooley      While the isa strings in ISA specification are case
48aeb71e42SConor Dooley      insensitive, letters in the riscv,isa string must be all
49aeb71e42SConor Dooley      lowercase.
50aeb71e42SConor Dooley    $ref: /schemas/types.yaml#/definitions/string
5107df87c0SConor Dooley    pattern: ^rv(?:64|32)imaf?d?q?c?b?k?j?p?v?h?(?:[hsxz](?:[0-9a-z])+)?(?:_[hsxz](?:[0-9a-z])+)*$
52aeb71e42SConor Dooley    deprecated: true
53aeb71e42SConor Dooley
54aeb71e42SConor Dooley  riscv,isa-base:
55aeb71e42SConor Dooley    description:
56aeb71e42SConor Dooley      The base ISA implemented by this hart, as described by the 20191213
57aeb71e42SConor Dooley      version of the unprivileged ISA specification.
58aeb71e42SConor Dooley    enum:
59aeb71e42SConor Dooley      - rv32i
60aeb71e42SConor Dooley      - rv64i
61aeb71e42SConor Dooley
62aeb71e42SConor Dooley  riscv,isa-extensions:
63aeb71e42SConor Dooley    $ref: /schemas/types.yaml#/definitions/string-array
64aeb71e42SConor Dooley    minItems: 1
65aeb71e42SConor Dooley    description: Extensions supported by the hart.
66aeb71e42SConor Dooley    items:
67aeb71e42SConor Dooley      anyOf:
68aeb71e42SConor Dooley        # single letter extensions, in canonical order
69aeb71e42SConor Dooley        - const: i
70aeb71e42SConor Dooley          description: |
71aeb71e42SConor Dooley            The base integer instruction set, as ratified in the 20191213
72aeb71e42SConor Dooley            version of the unprivileged ISA specification.
73aeb71e42SConor Dooley
74aeb71e42SConor Dooley            This does not include Chapter 10, "Counters", which was moved into
75aeb71e42SConor Dooley            the Zicntr and Zihpm extensions after the ratification of the
76aeb71e42SConor Dooley            20191213 version of the unprivileged specification.
77aeb71e42SConor Dooley
78aeb71e42SConor Dooley        - const: m
79aeb71e42SConor Dooley          description:
80aeb71e42SConor Dooley            The standard M extension for integer multiplication and division, as
81aeb71e42SConor Dooley            ratified in the 20191213 version of the unprivileged ISA
82aeb71e42SConor Dooley            specification.
83aeb71e42SConor Dooley
84aeb71e42SConor Dooley        - const: a
85aeb71e42SConor Dooley          description:
86aeb71e42SConor Dooley            The standard A extension for atomic instructions, as ratified in the
87aeb71e42SConor Dooley            20191213 version of the unprivileged ISA specification.
88aeb71e42SConor Dooley
89aeb71e42SConor Dooley        - const: f
90aeb71e42SConor Dooley          description:
91aeb71e42SConor Dooley            The standard F extension for single-precision floating point, as
92aeb71e42SConor Dooley            ratified in the 20191213 version of the unprivileged ISA
93aeb71e42SConor Dooley            specification.
94aeb71e42SConor Dooley
95aeb71e42SConor Dooley        - const: d
96aeb71e42SConor Dooley          description:
97aeb71e42SConor Dooley            The standard D extension for double-precision floating-point, as
98aeb71e42SConor Dooley            ratified in the 20191213 version of the unprivileged ISA
99aeb71e42SConor Dooley            specification.
100aeb71e42SConor Dooley
101aeb71e42SConor Dooley        - const: q
102aeb71e42SConor Dooley          description:
103aeb71e42SConor Dooley            The standard Q extension for quad-precision floating-point, as
104aeb71e42SConor Dooley            ratified in the 20191213 version of the unprivileged ISA
105aeb71e42SConor Dooley            specification.
106aeb71e42SConor Dooley
107aeb71e42SConor Dooley        - const: c
108aeb71e42SConor Dooley          description:
109aeb71e42SConor Dooley            The standard C extension for compressed instructions, as ratified in
110aeb71e42SConor Dooley            the 20191213 version of the unprivileged ISA specification.
111aeb71e42SConor Dooley
112aeb71e42SConor Dooley        - const: v
113aeb71e42SConor Dooley          description:
114aeb71e42SConor Dooley            The standard V extension for vector operations, as ratified
115aeb71e42SConor Dooley            in-and-around commit 7a6c8ae ("Fix text that describes vfmv.v.f
116aeb71e42SConor Dooley            encoding") of the riscv-v-spec.
117aeb71e42SConor Dooley
118aeb71e42SConor Dooley        - const: h
119aeb71e42SConor Dooley          description:
120aeb71e42SConor Dooley            The standard H extension for hypervisors as ratified in the 20191213
121aeb71e42SConor Dooley            version of the privileged ISA specification.
122aeb71e42SConor Dooley
123aeb71e42SConor Dooley        # multi-letter extensions, sorted alphanumerically
124aeb71e42SConor Dooley        - const: smaia
125aeb71e42SConor Dooley          description: |
126aeb71e42SConor Dooley            The standard Smaia supervisor-level extension for the advanced
127aeb71e42SConor Dooley            interrupt architecture for machine-mode-visible csr and behavioural
128aeb71e42SConor Dooley            changes to interrupts as frozen at commit ccbddab ("Merge pull
129aeb71e42SConor Dooley            request #42 from riscv/jhauser-2023-RC4") of riscv-aia.
130aeb71e42SConor Dooley
131a4f5f398SMayuresh Chitale        - const: smstateen
132a4f5f398SMayuresh Chitale          description: |
133a4f5f398SMayuresh Chitale            The standard Smstateen extension for controlling access to CSRs
134a4f5f398SMayuresh Chitale            added by other RISC-V extensions in H/S/VS/U/VU modes and as
135a4f5f398SMayuresh Chitale            ratified at commit a28bfae (Ratified (#7)) of riscv-state-enable.
136a4f5f398SMayuresh Chitale
137aeb71e42SConor Dooley        - const: ssaia
138aeb71e42SConor Dooley          description: |
139aeb71e42SConor Dooley            The standard Ssaia supervisor-level extension for the advanced
140aeb71e42SConor Dooley            interrupt architecture for supervisor-mode-visible csr and
141aeb71e42SConor Dooley            behavioural changes to interrupts as frozen at commit ccbddab
142aeb71e42SConor Dooley            ("Merge pull request #42 from riscv/jhauser-2023-RC4") of riscv-aia.
143aeb71e42SConor Dooley
144aeb71e42SConor Dooley        - const: sscofpmf
145aeb71e42SConor Dooley          description: |
146aeb71e42SConor Dooley            The standard Sscofpmf supervisor-level extension for count overflow
147aeb71e42SConor Dooley            and mode-based filtering as ratified at commit 01d1df0 ("Add ability
148aeb71e42SConor Dooley            to manually trigger workflow. (#2)") of riscv-count-overflow.
149aeb71e42SConor Dooley
150aeb71e42SConor Dooley        - const: sstc
151aeb71e42SConor Dooley          description: |
152aeb71e42SConor Dooley            The standard Sstc supervisor-level extension for time compare as
153aeb71e42SConor Dooley            ratified at commit 3f9ed34 ("Add ability to manually trigger
154aeb71e42SConor Dooley            workflow. (#2)") of riscv-time-compare.
155aeb71e42SConor Dooley
156aeb71e42SConor Dooley        - const: svinval
157aeb71e42SConor Dooley          description:
158aeb71e42SConor Dooley            The standard Svinval supervisor-level extension for fine-grained
159aeb71e42SConor Dooley            address-translation cache invalidation as ratified in the 20191213
160aeb71e42SConor Dooley            version of the privileged ISA specification.
161aeb71e42SConor Dooley
162aeb71e42SConor Dooley        - const: svnapot
163aeb71e42SConor Dooley          description:
164aeb71e42SConor Dooley            The standard Svnapot supervisor-level extensions for napot
165aeb71e42SConor Dooley            translation contiguity as ratified in the 20191213 version of the
166aeb71e42SConor Dooley            privileged ISA specification.
167aeb71e42SConor Dooley
168aeb71e42SConor Dooley        - const: svpbmt
169aeb71e42SConor Dooley          description:
170aeb71e42SConor Dooley            The standard Svpbmt supervisor-level extensions for page-based
171aeb71e42SConor Dooley            memory types as ratified in the 20191213 version of the privileged
172aeb71e42SConor Dooley            ISA specification.
173aeb71e42SConor Dooley
174*d25599b5SAlexandre Ghiti        - const: svvptc
175*d25599b5SAlexandre Ghiti          description:
176*d25599b5SAlexandre Ghiti            The standard Svvptc supervisor-level extension for
177*d25599b5SAlexandre Ghiti            address-translation cache behaviour with respect to invalid entries
178*d25599b5SAlexandre Ghiti            as ratified at commit 4a69197e5617 ("Update to ratified state") of
179*d25599b5SAlexandre Ghiti            riscv-svvptc.
180*d25599b5SAlexandre Ghiti
181cd7be4d0SClément Léger        - const: zacas
182cd7be4d0SClément Léger          description: |
183cd7be4d0SClément Léger            The Zacas extension for Atomic Compare-and-Swap (CAS) instructions
184cd7be4d0SClément Léger            is supported as ratified at commit 5059e0ca641c ("update to
185cd7be4d0SClément Léger            ratified") of the riscv-zacas.
186cd7be4d0SClément Léger
1876d585281SAndrew Jones        - const: zawrs
1886d585281SAndrew Jones          description: |
1896d585281SAndrew Jones            The Zawrs extension for entering a low-power state or for trapping
1906d585281SAndrew Jones            to a hypervisor while waiting on a store to a memory location, as
1916d585281SAndrew Jones            ratified in commit 98918c844281 ("Merge pull request #1217 from
1926d585281SAndrew Jones            riscv/zawrs") of riscv-isa-manual.
1936d585281SAndrew Jones
194aeb71e42SConor Dooley        - const: zba
195aeb71e42SConor Dooley          description: |
196aeb71e42SConor Dooley            The standard Zba bit-manipulation extension for address generation
197aeb71e42SConor Dooley            acceleration instructions as ratified at commit 6d33919 ("Merge pull
198aeb71e42SConor Dooley            request #158 from hirooih/clmul-fix-loop-end-condition") of
199aeb71e42SConor Dooley            riscv-bitmanip.
200aeb71e42SConor Dooley
201aeb71e42SConor Dooley        - const: zbb
202aeb71e42SConor Dooley          description: |
203aeb71e42SConor Dooley            The standard Zbb bit-manipulation extension for basic bit-manipulation
204aeb71e42SConor Dooley            as ratified at commit 6d33919 ("Merge pull request #158 from
205aeb71e42SConor Dooley            hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
206aeb71e42SConor Dooley
207aeb71e42SConor Dooley        - const: zbc
208aeb71e42SConor Dooley          description: |
209aeb71e42SConor Dooley            The standard Zbc bit-manipulation extension for carry-less
210aeb71e42SConor Dooley            multiplication as ratified at commit 6d33919 ("Merge pull request
211aeb71e42SConor Dooley            #158 from hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
212aeb71e42SConor Dooley
21393763962SClément Léger        - const: zbkb
21493763962SClément Léger          description:
21593763962SClément Léger            The standard Zbkb bitmanip instructions for cryptography as ratified
21693763962SClément Léger            in version 1.0 of RISC-V Cryptography Extensions Volume I
21793763962SClément Léger            specification.
21893763962SClément Léger
21993763962SClément Léger        - const: zbkc
22093763962SClément Léger          description:
22193763962SClément Léger            The standard Zbkc carry-less multiply instructions as ratified
22293763962SClément Léger            in version 1.0 of RISC-V Cryptography Extensions Volume I
22393763962SClément Léger            specification.
22493763962SClément Léger
22593763962SClément Léger        - const: zbkx
22693763962SClément Léger          description:
22793763962SClément Léger            The standard Zbkx crossbar permutation instructions as ratified
22893763962SClément Léger            in version 1.0 of RISC-V Cryptography Extensions Volume I
22993763962SClément Léger            specification.
23093763962SClément Léger
231aeb71e42SConor Dooley        - const: zbs
232aeb71e42SConor Dooley          description: |
233aeb71e42SConor Dooley            The standard Zbs bit-manipulation extension for single-bit
234aeb71e42SConor Dooley            instructions as ratified at commit 6d33919 ("Merge pull request #158
235aeb71e42SConor Dooley            from hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
236aeb71e42SConor Dooley
237e9f9946cSClément Léger        - const: zca
238e9f9946cSClément Léger          description: |
239e9f9946cSClément Léger            The Zca extension part of Zc* standard extensions for code size
240e9f9946cSClément Léger            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
241e9f9946cSClément Léger            RV64 as it contains no instructions") of riscv-code-size-reduction,
242e9f9946cSClément Léger            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
243e9f9946cSClément Léger            of zc.adoc to src tree.").
244e9f9946cSClément Léger
245e9f9946cSClément Léger        - const: zcb
246e9f9946cSClément Léger          description: |
247e9f9946cSClément Léger            The Zcb extension part of Zc* standard extensions for code size
248e9f9946cSClément Léger            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
249e9f9946cSClément Léger            RV64 as it contains no instructions") of riscv-code-size-reduction,
250e9f9946cSClément Léger            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
251e9f9946cSClément Léger            of zc.adoc to src tree.").
252e9f9946cSClément Léger
253e9f9946cSClément Léger        - const: zcd
254e9f9946cSClément Léger          description: |
255e9f9946cSClément Léger            The Zcd extension part of Zc* standard extensions for code size
256e9f9946cSClément Léger            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
257e9f9946cSClément Léger            RV64 as it contains no instructions") of riscv-code-size-reduction,
258e9f9946cSClément Léger            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
259e9f9946cSClément Léger            of zc.adoc to src tree.").
260e9f9946cSClément Léger
261e9f9946cSClément Léger        - const: zcf
262e9f9946cSClément Léger          description: |
263e9f9946cSClément Léger            The Zcf extension part of Zc* standard extensions for code size
264e9f9946cSClément Léger            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
265e9f9946cSClément Léger            RV64 as it contains no instructions") of riscv-code-size-reduction,
266e9f9946cSClément Léger            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
267e9f9946cSClément Léger            of zc.adoc to src tree.").
268e9f9946cSClément Léger
269700556a7SClément Léger        - const: zcmop
270700556a7SClément Léger          description:
271700556a7SClément Léger            The standard Zcmop extension version 1.0, as ratified in commit
272700556a7SClément Léger            c732a4f39a4 ("Zcmop is ratified/1.0") of the riscv-isa-manual.
273700556a7SClément Léger
2749726acfdSClément Léger        - const: zfa
2759726acfdSClément Léger          description:
2769726acfdSClément Léger            The standard Zfa extension for additional floating point
2779726acfdSClément Léger            instructions, as ratified in commit 056b6ff ("Zfa is ratified") of
2789726acfdSClément Léger            riscv-isa-manual.
2799726acfdSClément Léger
280c44714c3SClément Léger        - const: zfh
281c44714c3SClément Léger          description:
282c44714c3SClément Léger            The standard Zfh extension for 16-bit half-precision binary
283c44714c3SClément Léger            floating-point instructions, as ratified in commit 64074bc ("Update
284c44714c3SClément Léger            version numbers for Zfh/Zfinx") of riscv-isa-manual.
285c44714c3SClément Léger
286c44714c3SClément Léger        - const: zfhmin
287c44714c3SClément Léger          description:
288c44714c3SClément Léger            The standard Zfhmin extension which provides minimal support for
289c44714c3SClément Léger            16-bit half-precision binary floating-point instructions, as ratified
290c44714c3SClément Léger            in commit 64074bc ("Update version numbers for Zfh/Zfinx") of
291c44714c3SClément Léger            riscv-isa-manual.
292c44714c3SClément Léger
29393763962SClément Léger        - const: zk
29493763962SClément Léger          description:
29593763962SClément Léger            The standard Zk Standard Scalar cryptography extension as ratified
29693763962SClément Léger            in version 1.0 of RISC-V Cryptography Extensions Volume I
29793763962SClément Léger            specification.
29893763962SClément Léger
29993763962SClément Léger        - const: zkn
30093763962SClément Léger          description:
30193763962SClément Léger            The standard Zkn NIST algorithm suite extensions as ratified in
30293763962SClément Léger            version 1.0 of RISC-V Cryptography Extensions Volume I
30393763962SClément Léger            specification.
30493763962SClément Léger
30593763962SClément Léger        - const: zknd
30693763962SClément Léger          description: |
30793763962SClément Léger            The standard Zknd for NIST suite: AES decryption instructions as
30893763962SClément Léger            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
30993763962SClément Léger            specification.
31093763962SClément Léger
31193763962SClément Léger        - const: zkne
31293763962SClément Léger          description: |
31393763962SClément Léger            The standard Zkne for NIST suite: AES encryption instructions as
31493763962SClément Léger            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
31593763962SClément Léger            specification.
31693763962SClément Léger
31793763962SClément Léger        - const: zknh
31893763962SClément Léger          description: |
31993763962SClément Léger            The standard Zknh for NIST suite: hash function instructions as
32093763962SClément Léger            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
32193763962SClément Léger            specification.
32293763962SClément Léger
32393763962SClément Léger        - const: zkr
32493763962SClément Léger          description:
32593763962SClément Léger            The standard Zkr entropy source extension as ratified in version
32693763962SClément Léger            1.0 of RISC-V Cryptography Extensions Volume I specification.
32793763962SClément Léger            This string being present means that the CSR associated to this
32893763962SClément Léger            extension is accessible at the privilege level to which that
32993763962SClément Léger            device-tree has been provided.
33093763962SClément Léger
33193763962SClément Léger        - const: zks
33293763962SClément Léger          description:
33393763962SClément Léger            The standard Zks ShangMi algorithm suite extensions as ratified in
33493763962SClément Léger            version 1.0 of RISC-V Cryptography Extensions Volume I
33593763962SClément Léger            specification.
33693763962SClément Léger
33793763962SClément Léger        - const: zksed
33893763962SClément Léger          description: |
33993763962SClément Léger            The standard Zksed for ShangMi suite: SM4 block cipher instructions
34093763962SClément Léger            as ratified in version 1.0 of RISC-V Cryptography Extensions
34193763962SClément Léger            Volume I specification.
34293763962SClément Léger
34393763962SClément Léger        - const: zksh
34493763962SClément Léger          description: |
34593763962SClément Léger            The standard Zksh for ShangMi suite: SM3 hash function instructions
34693763962SClément Léger            as ratified in version 1.0 of RISC-V Cryptography Extensions
34793763962SClément Léger            Volume I specification.
34893763962SClément Léger
34993763962SClément Léger        - const: zkt
35093763962SClément Léger          description:
35193763962SClément Léger            The standard Zkt for data independent execution latency as ratified
35293763962SClément Léger            in version 1.0 of RISC-V Cryptography Extensions Volume I
35393763962SClément Léger            specification.
35493763962SClément Léger
355aeb71e42SConor Dooley        - const: zicbom
356aeb71e42SConor Dooley          description:
357aeb71e42SConor Dooley            The standard Zicbom extension for base cache management operations as
358aeb71e42SConor Dooley            ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
359aeb71e42SConor Dooley
360aeb71e42SConor Dooley        - const: zicbop
361aeb71e42SConor Dooley          description:
362aeb71e42SConor Dooley            The standard Zicbop extension for cache-block prefetch instructions
363aeb71e42SConor Dooley            as ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of
364aeb71e42SConor Dooley            riscv-CMOs.
365aeb71e42SConor Dooley
366aeb71e42SConor Dooley        - const: zicboz
367aeb71e42SConor Dooley          description:
368aeb71e42SConor Dooley            The standard Zicboz extension for cache-block zeroing as ratified
369aeb71e42SConor Dooley            in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
370aeb71e42SConor Dooley
371aeb71e42SConor Dooley        - const: zicntr
372aeb71e42SConor Dooley          description:
373aeb71e42SConor Dooley            The standard Zicntr extension for base counters and timers, as
374aeb71e42SConor Dooley            ratified in the 20191213 version of the unprivileged ISA
375aeb71e42SConor Dooley            specification.
376aeb71e42SConor Dooley
37700c6f39cSAnup Patel        - const: zicond
37800c6f39cSAnup Patel          description:
37900c6f39cSAnup Patel            The standard Zicond extension for conditional arithmetic and
38000c6f39cSAnup Patel            conditional-select/move operations as ratified in commit 95cf1f9
38100c6f39cSAnup Patel            ("Add changes requested by Ved during signoff") of riscv-zicond.
38200c6f39cSAnup Patel
383aeb71e42SConor Dooley        - const: zicsr
384aeb71e42SConor Dooley          description: |
385aeb71e42SConor Dooley            The standard Zicsr extension for control and status register
386aeb71e42SConor Dooley            instructions, as ratified in the 20191213 version of the
387aeb71e42SConor Dooley            unprivileged ISA specification.
388aeb71e42SConor Dooley
389aeb71e42SConor Dooley            This does not include Chapter 10, "Counters", which documents
390aeb71e42SConor Dooley            special case read-only CSRs, that were moved into the Zicntr and
391aeb71e42SConor Dooley            Zihpm extensions after the ratification of the 20191213 version of
392aeb71e42SConor Dooley            the unprivileged specification.
393aeb71e42SConor Dooley
394aeb71e42SConor Dooley        - const: zifencei
395aeb71e42SConor Dooley          description:
396aeb71e42SConor Dooley            The standard Zifencei extension for instruction-fetch fence, as
397aeb71e42SConor Dooley            ratified in the 20191213 version of the unprivileged ISA
398aeb71e42SConor Dooley            specification.
399aeb71e42SConor Dooley
400aeb71e42SConor Dooley        - const: zihintpause
401aeb71e42SConor Dooley          description:
402aeb71e42SConor Dooley            The standard Zihintpause extension for pause hints, as ratified in
403aeb71e42SConor Dooley            commit d8ab5c7 ("Zihintpause is ratified") of the riscv-isa-manual.
404aeb71e42SConor Dooley
405892f10c8SClément Léger        - const: zihintntl
406892f10c8SClément Léger          description:
407892f10c8SClément Léger            The standard Zihintntl extension for non-temporal locality hints, as
408892f10c8SClément Léger            ratified in commit 0dc91f5 ("Zihintntl is ratified") of the
409892f10c8SClément Léger            riscv-isa-manual.
410892f10c8SClément Léger
411aeb71e42SConor Dooley        - const: zihpm
412aeb71e42SConor Dooley          description:
413aeb71e42SConor Dooley            The standard Zihpm extension for hardware performance counters, as
414aeb71e42SConor Dooley            ratified in the 20191213 version of the unprivileged ISA
415aeb71e42SConor Dooley            specification.
416aeb71e42SConor Dooley
417a57b68bcSClément Léger        - const: zimop
418a57b68bcSClément Léger          description:
419a57b68bcSClément Léger            The standard Zimop extension version 1.0, as ratified in commit
420a57b68bcSClément Léger            58220614a5f ("Zimop is ratified/1.0") of the riscv-isa-manual.
421a57b68bcSClément Léger
422aeb71e42SConor Dooley        - const: ztso
423aeb71e42SConor Dooley          description:
424aeb71e42SConor Dooley            The standard Ztso extension for total store ordering, as ratified
425aeb71e42SConor Dooley            in commit 2e5236 ("Ztso is now ratified.") of the
426aeb71e42SConor Dooley            riscv-isa-manual.
427aeb71e42SConor Dooley
42810815531SClément Léger        - const: zvbb
42910815531SClément Léger          description:
43010815531SClément Léger            The standard Zvbb extension for vectored basic bit-manipulation
43110815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
43210815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
43310815531SClément Léger
43410815531SClément Léger        - const: zvbc
43510815531SClément Léger          description:
43610815531SClément Léger            The standard Zvbc extension for vectored carryless multiplication
43710815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
43810815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
43910815531SClément Léger
440037df296SAndy Chiu        - const: zve32f
441037df296SAndy Chiu          description:
442037df296SAndy Chiu            The standard Zve32f extension for embedded processors, as ratified
443037df296SAndy Chiu            in commit 6f702a2 ("Vector extensions are now ratified") of
444037df296SAndy Chiu            riscv-v-spec.
445037df296SAndy Chiu
446037df296SAndy Chiu        - const: zve32x
447037df296SAndy Chiu          description:
448037df296SAndy Chiu            The standard Zve32x extension for embedded processors, as ratified
449037df296SAndy Chiu            in commit 6f702a2 ("Vector extensions are now ratified") of
450037df296SAndy Chiu            riscv-v-spec.
451037df296SAndy Chiu
452037df296SAndy Chiu        - const: zve64d
453037df296SAndy Chiu          description:
454037df296SAndy Chiu            The standard Zve64d extension for embedded processors, as ratified
455037df296SAndy Chiu            in commit 6f702a2 ("Vector extensions are now ratified") of
456037df296SAndy Chiu            riscv-v-spec.
457037df296SAndy Chiu
458037df296SAndy Chiu        - const: zve64f
459037df296SAndy Chiu          description:
460037df296SAndy Chiu            The standard Zve64f extension for embedded processors, as ratified
461037df296SAndy Chiu            in commit 6f702a2 ("Vector extensions are now ratified") of
462037df296SAndy Chiu            riscv-v-spec.
463037df296SAndy Chiu
464037df296SAndy Chiu        - const: zve64x
465037df296SAndy Chiu          description:
466037df296SAndy Chiu            The standard Zve64x extension for embedded processors, as ratified
467037df296SAndy Chiu            in commit 6f702a2 ("Vector extensions are now ratified") of
468037df296SAndy Chiu            riscv-v-spec.
469037df296SAndy Chiu
470e11880b4SClément Léger        - const: zvfh
471e11880b4SClément Léger          description:
472e11880b4SClément Léger            The standard Zvfh extension for vectored half-precision
473e11880b4SClément Léger            floating-point instructions, as ratified in commit e2ccd05
474e11880b4SClément Léger            ("Remove draft warnings from Zvfh[min]") of riscv-v-spec.
475e11880b4SClément Léger
476e11880b4SClément Léger        - const: zvfhmin
477e11880b4SClément Léger          description:
478e11880b4SClément Léger            The standard Zvfhmin extension for vectored minimal half-precision
479e11880b4SClément Léger            floating-point instructions, as ratified in commit e2ccd05
480e11880b4SClément Léger            ("Remove draft warnings from Zvfh[min]") of riscv-v-spec.
481e11880b4SClément Léger
48210815531SClément Léger        - const: zvkb
48310815531SClément Léger          description:
48410815531SClément Léger            The standard Zvkb extension for vector cryptography bit-manipulation
48510815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
48610815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
48710815531SClément Léger
48810815531SClément Léger        - const: zvkg
48910815531SClément Léger          description:
49010815531SClément Léger            The standard Zvkg extension for vector GCM/GMAC instructions, as
49110815531SClément Léger            ratified in commit 56ed795 ("Update riscv-crypto-spec-vector.adoc")
49210815531SClément Léger            of riscv-crypto.
49310815531SClément Léger
49410815531SClément Léger        - const: zvkn
49510815531SClément Léger          description:
49610815531SClément Léger            The standard Zvkn extension for NIST algorithm suite instructions, as
49710815531SClément Léger            ratified in commit 56ed795 ("Update riscv-crypto-spec-vector.adoc")
49810815531SClément Léger            of riscv-crypto.
49910815531SClément Léger
50010815531SClément Léger        - const: zvknc
50110815531SClément Léger          description:
50210815531SClément Léger            The standard Zvknc extension for NIST algorithm suite with carryless
50310815531SClément Léger            multiply instructions, as ratified in commit 56ed795 ("Update
50410815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
50510815531SClément Léger
50610815531SClément Léger        - const: zvkned
50710815531SClément Léger          description:
50810815531SClément Léger            The standard Zvkned extension for Vector AES block cipher
50910815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
51010815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
51110815531SClément Léger
51210815531SClément Léger        - const: zvkng
51310815531SClément Léger          description:
51410815531SClément Léger            The standard Zvkng extension for NIST algorithm suite with GCM
51510815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
51610815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
51710815531SClément Léger
51810815531SClément Léger        - const: zvknha
51910815531SClément Léger          description: |
52010815531SClément Léger            The standard Zvknha extension for NIST suite: vector SHA-2 secure,
52110815531SClément Léger            hash (SHA-256 only) instructions, as ratified in commit
52210815531SClément Léger            56ed795 ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
52310815531SClément Léger
52410815531SClément Léger        - const: zvknhb
52510815531SClément Léger          description: |
52610815531SClément Léger            The standard Zvknhb extension for NIST suite: vector SHA-2 secure,
52710815531SClément Léger            hash (SHA-256 and SHA-512) instructions, as ratified in commit
52810815531SClément Léger            56ed795 ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
52910815531SClément Léger
53010815531SClément Léger        - const: zvks
53110815531SClément Léger          description:
53210815531SClément Léger            The standard Zvks extension for ShangMi algorithm suite
53310815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
53410815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
53510815531SClément Léger
53610815531SClément Léger        - const: zvksc
53710815531SClément Léger          description:
53810815531SClément Léger            The standard Zvksc extension for ShangMi algorithm suite with
53910815531SClément Léger            carryless multiplication instructions, as ratified in commit 56ed795
54010815531SClément Léger            ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
54110815531SClément Léger
54210815531SClément Léger        - const: zvksed
54310815531SClément Léger          description: |
54410815531SClément Léger            The standard Zvksed extension for ShangMi suite: SM4 block cipher
54510815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
54610815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
54710815531SClément Léger
54810815531SClément Léger        - const: zvksh
54910815531SClément Léger          description: |
55010815531SClément Léger            The standard Zvksh extension for ShangMi suite: SM3 secure hash
55110815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
55210815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
55310815531SClément Léger
55410815531SClément Léger        - const: zvksg
55510815531SClément Léger          description:
55610815531SClément Léger            The standard Zvksg extension for ShangMi algorithm suite with GCM
55710815531SClément Léger            instructions, as ratified in commit 56ed795 ("Update
55810815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
55910815531SClément Léger
56010815531SClément Léger        - const: zvkt
56110815531SClément Léger          description:
56210815531SClément Léger            The standard Zvkt extension for vector data-independent execution
56310815531SClément Léger            latency, as ratified in commit 56ed795 ("Update
56410815531SClément Léger            riscv-crypto-spec-vector.adoc") of riscv-crypto.
56510815531SClément Léger
56661609bf2SYu Chien Peter Lin        - const: xandespmu
56761609bf2SYu Chien Peter Lin          description:
56861609bf2SYu Chien Peter Lin            The Andes Technology performance monitor extension for counter overflow
56961609bf2SYu Chien Peter Lin            and privilege mode filtering. For more details, see Counter Related
57061609bf2SYu Chien Peter Lin            Registers in the AX45MP datasheet.
57161609bf2SYu Chien Peter Lin            https://www.andestech.com/wp-content/uploads/AX45MP-1C-Rev.-5.0.0-Datasheet.pdf
57261609bf2SYu Chien Peter Lin
573e9f9946cSClément Léger    allOf:
574e9f9946cSClément Léger      # Zcb depends on Zca
575e9f9946cSClément Léger      - if:
576e9f9946cSClément Léger          contains:
577e9f9946cSClément Léger            const: zcb
578e9f9946cSClément Léger        then:
579e9f9946cSClément Léger          contains:
580e9f9946cSClément Léger            const: zca
581e9f9946cSClément Léger      # Zcd depends on Zca and D
582e9f9946cSClément Léger      - if:
583e9f9946cSClément Léger          contains:
584e9f9946cSClément Léger            const: zcd
585e9f9946cSClément Léger        then:
586e9f9946cSClément Léger          allOf:
587e9f9946cSClément Léger            - contains:
588e9f9946cSClément Léger                const: zca
589e9f9946cSClément Léger            - contains:
590e9f9946cSClément Léger                const: d
591e9f9946cSClément Léger      # Zcf depends on Zca and F
592e9f9946cSClément Léger      - if:
593e9f9946cSClément Léger          contains:
594e9f9946cSClément Léger            const: zcf
595e9f9946cSClément Léger        then:
596e9f9946cSClément Léger          allOf:
597e9f9946cSClément Léger            - contains:
598e9f9946cSClément Léger                const: zca
599e9f9946cSClément Léger            - contains:
600e9f9946cSClément Léger                const: f
601700556a7SClément Léger      # Zcmop depends on Zca
602700556a7SClément Léger      - if:
603700556a7SClément Léger          contains:
604700556a7SClément Léger            const: zcmop
605700556a7SClément Léger        then:
606700556a7SClément Léger          contains:
607700556a7SClément Léger            const: zca
608e9f9946cSClément Léger
609e9f9946cSClément LégerallOf:
610e9f9946cSClément Léger  # Zcf extension does not exist on rv64
611e9f9946cSClément Léger  - if:
612e9f9946cSClément Léger      properties:
613e9f9946cSClément Léger        riscv,isa-extensions:
614e9f9946cSClément Léger          contains:
615e9f9946cSClément Léger            const: zcf
616e9f9946cSClément Léger        riscv,isa-base:
617e9f9946cSClément Léger          contains:
618e9f9946cSClément Léger            const: rv64i
619e9f9946cSClément Léger    then:
620e9f9946cSClément Léger      properties:
621e9f9946cSClément Léger        riscv,isa-extensions:
622e9f9946cSClément Léger          not:
623e9f9946cSClément Léger            contains:
624e9f9946cSClément Léger              const: zcf
625e9f9946cSClément Léger
626aeb71e42SConor DooleyadditionalProperties: true
627aeb71e42SConor Dooley...
628