xref: /linux/Documentation/devicetree/bindings/riscv/extensions.yaml (revision 38ef046544aad88de3b520f38fa3eed2c44dc0a8)
1# SPDX-License-Identifier: (GPL-2.0 OR MIT)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/riscv/extensions.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: RISC-V ISA extensions
8
9maintainers:
10  - Paul Walmsley <paul.walmsley@sifive.com>
11  - Palmer Dabbelt <palmer@sifive.com>
12  - Conor Dooley <conor@kernel.org>
13
14description: |
15  RISC-V has a large number of extensions, some of which are "standard"
16  extensions, meaning they are ratified by RISC-V International, and others
17  are "vendor" extensions.
18  This document defines properties that indicate whether a hart supports a
19  given extension.
20
21  Once a standard extension has been ratified, no changes in behaviour can be
22  made without the creation of a new extension.
23  The properties for standard extensions therefore map to their originally
24  ratified states, with the exception of the I, Zicntr & Zihpm extensions.
25  See the "i" property for more information.
26
27properties:
28  riscv,isa:
29    description:
30      Identifies the specific RISC-V instruction set architecture
31      supported by the hart.  These are documented in the RISC-V
32      User-Level ISA document, available from
33      https://riscv.org/specifications/
34
35      Due to revisions of the ISA specification, some deviations
36      have arisen over time.
37      Notably, riscv,isa was defined prior to the creation of the
38      Zicntr, Zicsr, Zifencei and Zihpm extensions and thus "i"
39      implies "zicntr_zicsr_zifencei_zihpm".
40
41      While the isa strings in ISA specification are case
42      insensitive, letters in the riscv,isa string must be all
43      lowercase.
44    $ref: /schemas/types.yaml#/definitions/string
45    pattern: ^rv(?:64|32)imaf?d?q?c?b?k?j?p?v?h?(?:[hsxz](?:[0-9a-z])+)?(?:_[hsxz](?:[0-9a-z])+)*$
46    deprecated: true
47
48  riscv,isa-base:
49    description:
50      The base ISA implemented by this hart, as described by the 20191213
51      version of the unprivileged ISA specification.
52    enum:
53      - rv32i
54      - rv64i
55
56  riscv,isa-extensions:
57    $ref: /schemas/types.yaml#/definitions/string-array
58    minItems: 1
59    description: Extensions supported by the hart.
60    items:
61      anyOf:
62        # single letter extensions, in canonical order
63        - const: i
64          description: |
65            The base integer instruction set, as ratified in the 20191213
66            version of the unprivileged ISA specification.
67
68            This does not include Chapter 10, "Counters", which was moved into
69            the Zicntr and Zihpm extensions after the ratification of the
70            20191213 version of the unprivileged specification.
71
72        - const: m
73          description:
74            The standard M extension for integer multiplication and division, as
75            ratified in the 20191213 version of the unprivileged ISA
76            specification.
77
78        - const: a
79          description:
80            The standard A extension for atomic instructions, as ratified in the
81            20191213 version of the unprivileged ISA specification.
82
83        - const: f
84          description:
85            The standard F extension for single-precision floating point, as
86            ratified in the 20191213 version of the unprivileged ISA
87            specification.
88
89        - const: d
90          description:
91            The standard D extension for double-precision floating-point, as
92            ratified in the 20191213 version of the unprivileged ISA
93            specification.
94
95        - const: q
96          description:
97            The standard Q extension for quad-precision floating-point, as
98            ratified in the 20191213 version of the unprivileged ISA
99            specification.
100
101        - const: c
102          description:
103            The standard C extension for compressed instructions, as ratified in
104            the 20191213 version of the unprivileged ISA specification.
105
106        - const: b
107          description:
108            The standard B extension for bit manipulation instructions, as
109            ratified in the 20240411 version of the unprivileged ISA
110            specification. The B standard extension comprises instructions
111            provided by the Zba, Zbb, and Zbs extensions.
112
113        - const: v
114          description:
115            The standard V extension for vector operations, as ratified
116            in-and-around commit 7a6c8ae ("Fix text that describes vfmv.v.f
117            encoding") of the riscv-v-spec.
118
119        - const: h
120          description:
121            The standard H extension for hypervisors as ratified in the RISC-V
122            Instruction Set Manual, Volume II Privileged Architecture,
123            Document Version 20211203.
124
125        # multi-letter extensions, sorted alphanumerically
126        - const: sha
127          description: |
128            The standard Sha extension for augmented hypervisor extension as
129            ratified in RVA23 Profiles Version 1.0, with commit 0273f3c921b6
130            ("rva23/rvb23 ratified").
131
132            Sha captures the full set of features that are mandated to be
133            supported along with the H extension. Sha comprises the following
134            extensions: H, Shcounterenw, Shgatpa, Shtvala, Shvsatpa, Shvstvala,
135            Shvstvecd, and Ssstateen.
136
137        - const: shcounterenw
138          description: |
139            The standard Shcounterenw extension for support writable enables
140            in hcounteren for any supported counter, as ratified in RISC-V
141            Profiles Version 1.0, with commit b1d806605f87 ("Updated to
142            ratified state.")
143
144        - const: shgatpa
145          description: |
146            The standard Shgatpa extension indicates that for each supported
147            virtual memory scheme SvNN supported in satp, the corresponding
148            hgatp SvNNx4 mode must be supported. The hgatp mode Bare must
149            also be supported. It is ratified in RISC-V Profiles Version 1.0,
150            with commit b1d806605f87 ("Updated to ratified state.")
151
152        - const: shtvala
153          description: |
154            The standard Shtvala extension for htval be written with the
155            faulting guest physical address in all circumstances permitted by
156            the ISA. It is ratified in RISC-V Profiles Version 1.0, with
157            commit b1d806605f87 ("Updated to ratified state.")
158
159        - const: shvsatpa
160          description: |
161            The standard Shvsatpa extension for vsatp supporting all translation
162            modes supported in satp, as ratified in RISC-V Profiles Version 1.0,
163            with commit b1d806605f87 ("Updated to ratified state.")
164
165        - const: shvstvala
166          description: |
167            The standard Shvstvala extension for vstval provides all needed
168            values as ratified in RISC-V Profiles Version 1.0, with commit
169            b1d806605f87 ("Updated to ratified state.")
170
171        - const: shvstvecd
172          description: |
173            The standard Shvstvecd extension for vstvec supporting Direct mode,
174            as ratified in RISC-V Profiles Version 1.0, with commit b1d806605f87
175            ("Updated to ratified state.")
176
177        - const: smaia
178          description: |
179            The standard Smaia supervisor-level extension for the advanced
180            interrupt architecture for machine-mode-visible csr and behavioural
181            changes to interrupts as frozen at commit ccbddab ("Merge pull
182            request #42 from riscv/jhauser-2023-RC4") of riscv-aia.
183
184        - const: smmpm
185          description: |
186            The standard Smmpm extension for M-mode pointer masking as
187            ratified at commit d70011dde6c2 ("Update to ratified state")
188            of riscv-j-extension.
189
190        - const: smnpm
191          description: |
192            The standard Smnpm extension for next-mode pointer masking as
193            ratified at commit d70011dde6c2 ("Update to ratified state")
194            of riscv-j-extension.
195
196        - const: smstateen
197          description: |
198            The standard Smstateen extension for controlling access to CSRs
199            added by other RISC-V extensions in H/S/VS/U/VU modes and as
200            ratified at commit a28bfae (Ratified (#7)) of riscv-state-enable.
201
202        - const: ssaia
203          description: |
204            The standard Ssaia supervisor-level extension for the advanced
205            interrupt architecture for supervisor-mode-visible csr and
206            behavioural changes to interrupts as frozen at commit ccbddab
207            ("Merge pull request #42 from riscv/jhauser-2023-RC4") of riscv-aia.
208
209        - const: ssccptr
210          description: |
211            The standard Ssccptr extension for main memory (cacheability and
212            coherence) hardware page-table reads, as ratified in RISC-V
213            Profiles Version 1.0, with commit b1d806605f87 ("Updated to
214            ratified state.")
215
216        - const: sscofpmf
217          description: |
218            The standard Sscofpmf supervisor-level extension for count overflow
219            and mode-based filtering as ratified at commit 01d1df0 ("Add ability
220            to manually trigger workflow. (#2)") of riscv-count-overflow.
221
222        - const: sscounterenw
223          description: |
224            The standard Sscounterenw extension for support writable enables
225            in scounteren for any supported counter, as ratified in RISC-V
226            Profiles Version 1.0, with commit b1d806605f87 ("Updated to
227            ratified state.")
228
229        - const: ssnpm
230          description: |
231            The standard Ssnpm extension for next-mode pointer masking as
232            ratified at commit d70011dde6c2 ("Update to ratified state")
233            of riscv-j-extension.
234
235        - const: ssstateen
236          description: |
237            The standard Ssstateen extension for supervisor-mode view of the
238            state-enable extension, as ratified in RISC-V Profiles Version 1.0,
239            with commit b1d806605f87 ("Updated to ratified state.")
240
241        - const: sstc
242          description: |
243            The standard Sstc supervisor-level extension for time compare as
244            ratified at commit 3f9ed34 ("Add ability to manually trigger
245            workflow. (#2)") of riscv-time-compare.
246
247        - const: sstvala
248          description: |
249            The standard Sstvala extension for stval provides all needed values
250            as ratified in RISC-V Profiles Version 1.0, with commit b1d806605f87
251            ("Updated to ratified state.")
252
253        - const: sstvecd
254          description: |
255            The standard Sstvecd extension for stvec supports Direct mode as
256            ratified in RISC-V Profiles Version 1.0, with commit b1d806605f87
257            ("Updated to ratified state.")
258
259        - const: ssu64xl
260          description: |
261            The standard Ssu64xl extension for UXLEN=64 must be supported, as
262            ratified in RISC-V Profiles Version 1.0, with commit b1d806605f87
263            ("Updated to ratified state.")
264
265        - const: svade
266          description: |
267            The standard Svade supervisor-level extension for SW-managed PTE A/D
268            bit updates as ratified in the 20240213 version of the privileged
269            ISA specification.
270
271            Both Svade and Svadu extensions control the hardware behavior when
272            the PTE A/D bits need to be set. The default behavior for the four
273            possible combinations of these extensions in the device tree are:
274            1) Neither Svade nor Svadu present in DT => It is technically
275               unknown whether the platform uses Svade or Svadu. Supervisor
276               software should be prepared to handle either hardware updating
277               of the PTE A/D bits or page faults when they need updated.
278            2) Only Svade present in DT => Supervisor must assume Svade to be
279               always enabled.
280            3) Only Svadu present in DT => Supervisor must assume Svadu to be
281               always enabled.
282            4) Both Svade and Svadu present in DT => Supervisor must assume
283               Svadu turned-off at boot time. To use Svadu, supervisor must
284               explicitly enable it using the SBI FWFT extension.
285
286        - const: svadu
287          description: |
288            The standard Svadu supervisor-level extension for hardware updating
289            of PTE A/D bits as ratified in the 20240528 version of the
290            privileged ISA specification. Please refer to Svade dt-binding
291            description for more details.
292
293        - const: svinval
294          description:
295            The standard Svinval supervisor-level extension for fine-grained
296            address-translation cache invalidation as ratified in the RISC-V
297            Instruction Set Manual, Volume II Privileged Architecture,
298            Document Version 20211203.
299
300        - const: svnapot
301          description:
302            The standard Svnapot supervisor-level extensions for napot
303            translation contiguity as ratified in the RISC-V Instruction Set
304            Manual, Volume II Privileged Architecture, Document Version
305            20211203.
306
307        - const: svpbmt
308          description:
309            The standard Svpbmt supervisor-level extensions for page-based
310            memory types as ratified in the RISC-V Instruction Set Manual,
311            Volume II Privileged Architecture, Document Version 20211203.
312
313        - const: svrsw60t59b
314          description:
315            The Svrsw60t59b extension for providing two more bits[60:59] to
316            PTE/PMD entry as ratified at commit 28bde925e7a7 ("PTE Reserved
317            for SW bits 60:59") of riscv-non-isa/riscv-iommu.
318
319        - const: svvptc
320          description:
321            The standard Svvptc supervisor-level extension for
322            address-translation cache behaviour with respect to invalid entries
323            as ratified at commit 4a69197e5617 ("Update to ratified state") of
324            riscv-svvptc.
325
326        - const: za64rs
327          description:
328            The standard Za64rs extension for reservation set size of at most
329            64 bytes, as ratified in RISC-V Profiles Version 1.0, with commit
330            b1d806605f87 ("Updated to ratified state.")
331
332        - const: zaamo
333          description: |
334            The standard Zaamo extension for atomic memory operations as
335            ratified at commit e87412e621f1 ("integrate Zaamo and Zalrsc text
336            (#1304)") of the unprivileged ISA specification.
337
338        - const: zabha
339          description: |
340            The Zabha extension for Byte and Halfword Atomic Memory Operations
341            as ratified at commit 49f49c842ff9 ("Update to Rafified state") of
342            riscv-zabha.
343
344        - const: zacas
345          description: |
346            The Zacas extension for Atomic Compare-and-Swap (CAS) instructions
347            is supported as ratified at commit 5059e0ca641c ("update to
348            ratified") of the riscv-zacas.
349
350        - const: zalasr
351          description: |
352            The standard Zalasr extension for load-acquire/store-release as frozen
353            at commit 194f0094 ("Version 0.9 for freeze") of riscv-zalasr.
354
355        - const: zalrsc
356          description: |
357            The standard Zalrsc extension for load-reserved/store-conditional as
358            ratified at commit e87412e621f1 ("integrate Zaamo and Zalrsc text
359            (#1304)") of the unprivileged ISA specification.
360
361        - const: zawrs
362          description: |
363            The Zawrs extension for entering a low-power state or for trapping
364            to a hypervisor while waiting on a store to a memory location, as
365            ratified in commit 98918c844281 ("Merge pull request #1217 from
366            riscv/zawrs") of riscv-isa-manual.
367
368        - const: zba
369          description: |
370            The standard Zba bit-manipulation extension for address generation
371            acceleration instructions as ratified at commit 6d33919 ("Merge pull
372            request #158 from hirooih/clmul-fix-loop-end-condition") of
373            riscv-bitmanip.
374
375        - const: zbb
376          description: |
377            The standard Zbb bit-manipulation extension for basic bit-manipulation
378            as ratified at commit 6d33919 ("Merge pull request #158 from
379            hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
380
381        - const: zbc
382          description: |
383            The standard Zbc bit-manipulation extension for carry-less
384            multiplication as ratified at commit 6d33919 ("Merge pull request
385            #158 from hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
386
387        - const: zbkb
388          description:
389            The standard Zbkb bitmanip instructions for cryptography as ratified
390            in version 1.0 of RISC-V Cryptography Extensions Volume I
391            specification.
392
393        - const: zbkc
394          description:
395            The standard Zbkc carry-less multiply instructions as ratified
396            in version 1.0 of RISC-V Cryptography Extensions Volume I
397            specification.
398
399        - const: zbkx
400          description:
401            The standard Zbkx crossbar permutation instructions as ratified
402            in version 1.0 of RISC-V Cryptography Extensions Volume I
403            specification.
404
405        - const: zbs
406          description: |
407            The standard Zbs bit-manipulation extension for single-bit
408            instructions as ratified at commit 6d33919 ("Merge pull request #158
409            from hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
410
411        - const: zca
412          description: |
413            The Zca extension part of Zc* standard extensions for code size
414            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
415            RV64 as it contains no instructions") of riscv-code-size-reduction,
416            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
417            of zc.adoc to src tree.").
418
419        - const: zcb
420          description: |
421            The Zcb extension part of Zc* standard extensions for code size
422            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
423            RV64 as it contains no instructions") of riscv-code-size-reduction,
424            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
425            of zc.adoc to src tree.").
426
427        - const: zcd
428          description: |
429            The Zcd extension part of Zc* standard extensions for code size
430            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
431            RV64 as it contains no instructions") of riscv-code-size-reduction,
432            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
433            of zc.adoc to src tree.").
434
435        - const: zcf
436          description: |
437            The Zcf extension part of Zc* standard extensions for code size
438            reduction, as ratified in commit 8be3419c1c0 ("Zcf doesn't exist on
439            RV64 as it contains no instructions") of riscv-code-size-reduction,
440            merged in the riscv-isa-manual by commit dbc79cf28a2 ("Initial seed
441            of zc.adoc to src tree.").
442
443        - const: zcmop
444          description:
445            The standard Zcmop extension version 1.0, as ratified in commit
446            c732a4f39a4 ("Zcmop is ratified/1.0") of the riscv-isa-manual.
447
448        - const: zfa
449          description:
450            The standard Zfa extension for additional floating point
451            instructions, as ratified in commit 056b6ff ("Zfa is ratified") of
452            riscv-isa-manual.
453
454        - const: zfbfmin
455          description:
456            The standard Zfbfmin extension which provides minimal support for
457            16-bit half-precision brain floating-point instructions, as ratified
458            in commit 4dc23d62 ("Added Chapter title to BF16") of riscv-isa-manual.
459
460        - const: zfh
461          description:
462            The standard Zfh extension for 16-bit half-precision binary
463            floating-point instructions, as ratified in commit 64074bc ("Update
464            version numbers for Zfh/Zfinx") of riscv-isa-manual.
465
466        - const: zfhmin
467          description:
468            The standard Zfhmin extension which provides minimal support for
469            16-bit half-precision binary floating-point instructions, as ratified
470            in commit 64074bc ("Update version numbers for Zfh/Zfinx") of
471            riscv-isa-manual.
472
473        - const: ziccamoa
474          description:
475            The standard Ziccamoa extension for main memory (cacheability and
476            coherence) must support all atomics in A, as ratified in RISC-V
477            Profiles Version 1.0, with commit b1d806605f87 ("Updated to
478            ratified state.")
479
480        - const: ziccif
481          description:
482            The standard Ziccif extension for main memory (cacheability and
483            coherence) instruction fetch atomicity, as ratified in RISC-V
484            Profiles Version 1.0, with commit b1d806605f87 ("Updated to
485            ratified state.")
486
487        - const: zicclsm
488          description:
489            The standard Zicclsm extension for main memory (cacheability and
490            coherence) must support misaligned loads and stores, as ratified
491            in RISC-V Profiles Version 1.0, with commit b1d806605f87 ("Updated
492            to ratified state.")
493
494        - const: ziccrse
495          description:
496            The standard Ziccrse extension which provides forward progress
497            guarantee on LR/SC sequences, as ratified in commit b1d806605f87
498            ("Updated to ratified state.") of the riscv profiles specification.
499
500        - const: zilsd
501          description:
502            The standard Zilsd extension which provides support for aligned
503            register-pair load and store operations in 32-bit instruction
504            encodings, as ratified in commit f88abf1 ("Integrating
505            load/store pair for RV32 with the main manual") of riscv-isa-manual.
506
507        - const: zclsd
508          description:
509            The Zclsd extension implements the compressed (16-bit) version of the
510            Load/Store Pair for RV32. As with Zilsd, this extension was ratified
511            in commit f88abf1 ("Integrating load/store pair for RV32 with the
512            main manual") of riscv-isa-manual.
513
514        - const: zk
515          description:
516            The standard Zk Standard Scalar cryptography extension as ratified
517            in version 1.0 of RISC-V Cryptography Extensions Volume I
518            specification.
519
520        - const: zkn
521          description:
522            The standard Zkn NIST algorithm suite extensions as ratified in
523            version 1.0 of RISC-V Cryptography Extensions Volume I
524            specification.
525
526        - const: zknd
527          description: |
528            The standard Zknd for NIST suite: AES decryption instructions as
529            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
530            specification.
531
532        - const: zkne
533          description: |
534            The standard Zkne for NIST suite: AES encryption instructions as
535            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
536            specification.
537
538        - const: zknh
539          description: |
540            The standard Zknh for NIST suite: hash function instructions as
541            ratified in version 1.0 of RISC-V Cryptography Extensions Volume I
542            specification.
543
544        - const: zkr
545          description:
546            The standard Zkr entropy source extension as ratified in version
547            1.0 of RISC-V Cryptography Extensions Volume I specification.
548            This string being present means that the CSR associated to this
549            extension is accessible at the privilege level to which that
550            device-tree has been provided.
551
552        - const: zks
553          description:
554            The standard Zks ShangMi algorithm suite extensions as ratified in
555            version 1.0 of RISC-V Cryptography Extensions Volume I
556            specification.
557
558        - const: zksed
559          description: |
560            The standard Zksed for ShangMi suite: SM4 block cipher instructions
561            as ratified in version 1.0 of RISC-V Cryptography Extensions
562            Volume I specification.
563
564        - const: zksh
565          description: |
566            The standard Zksh for ShangMi suite: SM3 hash function instructions
567            as ratified in version 1.0 of RISC-V Cryptography Extensions
568            Volume I specification.
569
570        - const: zkt
571          description:
572            The standard Zkt for data independent execution latency as ratified
573            in version 1.0 of RISC-V Cryptography Extensions Volume I
574            specification.
575
576        - const: zicbom
577          description:
578            The standard Zicbom extension for base cache management operations as
579            ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
580
581        - const: zicbop
582          description:
583            The standard Zicbop extension for cache-block prefetch instructions
584            as ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of
585            riscv-CMOs.
586
587        - const: zicboz
588          description:
589            The standard Zicboz extension for cache-block zeroing as ratified
590            in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
591
592        - const: zicntr
593          description:
594            The standard Zicntr extension for base counters and timers, as
595            ratified in the 20191213 version of the unprivileged ISA
596            specification.
597
598        - const: zicond
599          description:
600            The standard Zicond extension for conditional arithmetic and
601            conditional-select/move operations as ratified in commit 95cf1f9
602            ("Add changes requested by Ved during signoff") of riscv-zicond.
603
604        - const: zicsr
605          description: |
606            The standard Zicsr extension for control and status register
607            instructions, as ratified in the 20191213 version of the
608            unprivileged ISA specification.
609
610            This does not include Chapter 10, "Counters", which documents
611            special case read-only CSRs, that were moved into the Zicntr and
612            Zihpm extensions after the ratification of the 20191213 version of
613            the unprivileged specification.
614
615        - const: zifencei
616          description:
617            The standard Zifencei extension for instruction-fetch fence, as
618            ratified in the 20191213 version of the unprivileged ISA
619            specification.
620
621        - const: zihintpause
622          description:
623            The standard Zihintpause extension for pause hints, as ratified in
624            commit d8ab5c7 ("Zihintpause is ratified") of the riscv-isa-manual.
625
626        - const: zihintntl
627          description:
628            The standard Zihintntl extension for non-temporal locality hints, as
629            ratified in commit 0dc91f5 ("Zihintntl is ratified") of the
630            riscv-isa-manual.
631
632        - const: zihpm
633          description:
634            The standard Zihpm extension for hardware performance counters, as
635            ratified in the 20191213 version of the unprivileged ISA
636            specification.
637
638        - const: zimop
639          description:
640            The standard Zimop extension version 1.0, as ratified in commit
641            58220614a5f ("Zimop is ratified/1.0") of the riscv-isa-manual.
642
643        - const: ztso
644          description:
645            The standard Ztso extension for total store ordering, as ratified
646            in commit 2e5236 ("Ztso is now ratified.") of the
647            riscv-isa-manual.
648
649        - const: zvbb
650          description:
651            The standard Zvbb extension for vectored basic bit-manipulation
652            instructions, as ratified in commit 56ed795 ("Update
653            riscv-crypto-spec-vector.adoc") of riscv-crypto.
654
655        - const: zvbc
656          description:
657            The standard Zvbc extension for vectored carryless multiplication
658            instructions, as ratified in commit 56ed795 ("Update
659            riscv-crypto-spec-vector.adoc") of riscv-crypto.
660
661        - const: zve32f
662          description:
663            The standard Zve32f extension for embedded processors, as ratified
664            in commit 6f702a2 ("Vector extensions are now ratified") of
665            riscv-v-spec.
666
667        - const: zve32x
668          description:
669            The standard Zve32x extension for embedded processors, as ratified
670            in commit 6f702a2 ("Vector extensions are now ratified") of
671            riscv-v-spec.
672
673        - const: zve64d
674          description:
675            The standard Zve64d extension for embedded processors, as ratified
676            in commit 6f702a2 ("Vector extensions are now ratified") of
677            riscv-v-spec.
678
679        - const: zve64f
680          description:
681            The standard Zve64f extension for embedded processors, as ratified
682            in commit 6f702a2 ("Vector extensions are now ratified") of
683            riscv-v-spec.
684
685        - const: zve64x
686          description:
687            The standard Zve64x extension for embedded processors, as ratified
688            in commit 6f702a2 ("Vector extensions are now ratified") of
689            riscv-v-spec.
690
691        - const: zvfbfmin
692          description:
693            The standard Zvfbfmin extension for minimal support for vectored
694            16-bit half-precision brain floating-point instructions, as ratified
695            in commit 4dc23d62 ("Added Chapter title to BF16") of riscv-isa-manual.
696
697        - const: zvfbfwma
698          description:
699            The standard Zvfbfwma extension for vectored half-precision brain
700            floating-point widening multiply-accumulate instructions, as ratified
701            in commit 4dc23d62 ("Added Chapter title to BF16") of riscv-isa-manual.
702
703        - const: zvfh
704          description:
705            The standard Zvfh extension for vectored half-precision
706            floating-point instructions, as ratified in commit e2ccd05
707            ("Remove draft warnings from Zvfh[min]") of riscv-v-spec.
708
709        - const: zvfhmin
710          description:
711            The standard Zvfhmin extension for vectored minimal half-precision
712            floating-point instructions, as ratified in commit e2ccd05
713            ("Remove draft warnings from Zvfh[min]") of riscv-v-spec.
714
715        - const: zvkb
716          description:
717            The standard Zvkb extension for vector cryptography bit-manipulation
718            instructions, as ratified in commit 56ed795 ("Update
719            riscv-crypto-spec-vector.adoc") of riscv-crypto.
720
721        - const: zvkg
722          description:
723            The standard Zvkg extension for vector GCM/GMAC instructions, as
724            ratified in commit 56ed795 ("Update riscv-crypto-spec-vector.adoc")
725            of riscv-crypto.
726
727        - const: zvkn
728          description:
729            The standard Zvkn extension for NIST algorithm suite instructions, as
730            ratified in commit 56ed795 ("Update riscv-crypto-spec-vector.adoc")
731            of riscv-crypto.
732
733        - const: zvknc
734          description:
735            The standard Zvknc extension for NIST algorithm suite with carryless
736            multiply instructions, as ratified in commit 56ed795 ("Update
737            riscv-crypto-spec-vector.adoc") of riscv-crypto.
738
739        - const: zvkned
740          description:
741            The standard Zvkned extension for Vector AES block cipher
742            instructions, as ratified in commit 56ed795 ("Update
743            riscv-crypto-spec-vector.adoc") of riscv-crypto.
744
745        - const: zvkng
746          description:
747            The standard Zvkng extension for NIST algorithm suite with GCM
748            instructions, as ratified in commit 56ed795 ("Update
749            riscv-crypto-spec-vector.adoc") of riscv-crypto.
750
751        - const: zvknha
752          description: |
753            The standard Zvknha extension for NIST suite: vector SHA-2 secure,
754            hash (SHA-256 only) instructions, as ratified in commit
755            56ed795 ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
756
757        - const: zvknhb
758          description: |
759            The standard Zvknhb extension for NIST suite: vector SHA-2 secure,
760            hash (SHA-256 and SHA-512) instructions, as ratified in commit
761            56ed795 ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
762
763        - const: zvks
764          description:
765            The standard Zvks extension for ShangMi algorithm suite
766            instructions, as ratified in commit 56ed795 ("Update
767            riscv-crypto-spec-vector.adoc") of riscv-crypto.
768
769        - const: zvksc
770          description:
771            The standard Zvksc extension for ShangMi algorithm suite with
772            carryless multiplication instructions, as ratified in commit 56ed795
773            ("Update riscv-crypto-spec-vector.adoc") of riscv-crypto.
774
775        - const: zvksed
776          description: |
777            The standard Zvksed extension for ShangMi suite: SM4 block cipher
778            instructions, as ratified in commit 56ed795 ("Update
779            riscv-crypto-spec-vector.adoc") of riscv-crypto.
780
781        - const: zvksh
782          description: |
783            The standard Zvksh extension for ShangMi suite: SM3 secure hash
784            instructions, as ratified in commit 56ed795 ("Update
785            riscv-crypto-spec-vector.adoc") of riscv-crypto.
786
787        - const: zvksg
788          description:
789            The standard Zvksg extension for ShangMi algorithm suite with GCM
790            instructions, as ratified in commit 56ed795 ("Update
791            riscv-crypto-spec-vector.adoc") of riscv-crypto.
792
793        - const: zvkt
794          description:
795            The standard Zvkt extension for vector data-independent execution
796            latency, as ratified in commit 56ed795 ("Update
797            riscv-crypto-spec-vector.adoc") of riscv-crypto.
798
799        # vendor extensions, each extension sorted alphanumerically under the
800        # vendor they belong to. Vendors are sorted alphanumerically as well.
801
802        # Andes
803        - const: xandespmu
804          description:
805            The Andes Technology performance monitor extension for counter overflow
806            and privilege mode filtering. For more details, see Counter Related
807            Registers in the AX45MP datasheet.
808            https://www.andestech.com/wp-content/uploads/AX45MP-1C-Rev.-5.0.0-Datasheet.pdf
809
810        # MIPS
811        - const: xmipsexectl
812          description:
813            The MIPS extension for execution control as documented in
814            https://mips.com/wp-content/uploads/2025/06/P8700_Programmers_Reference_Manual_Rev1.84_5-31-2025.pdf
815
816        # SiFive
817        - const: xsfcease
818          description:
819            SiFive CEASE Instruction Extensions Specification.
820            See more details in
821            https://www.sifive.com/document-file/freedom-u740-c000-manual
822
823        - const: xsfcflushdlone
824          description:
825            SiFive L1D Cache Flush Instruction Extensions Specification.
826            See more details in
827            https://www.sifive.com/document-file/freedom-u740-c000-manual
828
829        - const: xsfpgflushdlone
830          description:
831            SiFive PGFLUSH Instruction Extensions for the power management. The
832            CPU will flush the L1D and enter the cease state after executing
833            the instruction.
834
835        - const: xsfvqmaccdod
836          description:
837            SiFive Int8 Matrix Multiplication Extensions Specification.
838            See more details in
839            https://www.sifive.com/document-file/sifive-int8-matrix-multiplication-extensions-specification
840
841        - const: xsfvqmaccqoq
842          description:
843            SiFive Int8 Matrix Multiplication Extensions Specification.
844            See more details in
845            https://www.sifive.com/document-file/sifive-int8-matrix-multiplication-extensions-specification
846
847        - const: xsfvfnrclipxfqf
848          description:
849            SiFive FP32-to-int8 Ranged Clip Instructions Extensions Specification.
850            See more details in
851            https://www.sifive.com/document-file/fp32-to-int8-ranged-clip-instructions
852
853        - const: xsfvfwmaccqqq
854          description:
855            SiFive Matrix Multiply Accumulate Instruction Extensions Specification.
856            See more details in
857            https://www.sifive.com/document-file/matrix-multiply-accumulate-instruction
858
859        # T-HEAD
860        - const: xtheadvector
861          description:
862            The T-HEAD specific 0.7.1 vector implementation as written in
863            https://github.com/T-head-Semi/thead-extension-spec/blob/95358cb2cca9489361c61d335e03d3134b14133f/xtheadvector.adoc.
864
865    allOf:
866      - if:
867          contains:
868            const: d
869        then:
870          contains:
871            const: f
872      # B comprises Zba, Zbb, and Zbs
873      - if:
874          contains:
875            const: b
876        then:
877          allOf:
878            - contains:
879                const: zba
880            - contains:
881                const: zbb
882            - contains:
883                const: zbs
884      # Zba, Zbb, Zbs together require B
885      - if:
886          allOf:
887            - contains:
888                const: zba
889            - contains:
890                const: zbb
891            - contains:
892                const: zbs
893        then:
894          contains:
895            const: b
896      # Za64rs and Ziccrse depend on Zalrsc or A
897      - if:
898          contains:
899            anyOf:
900              - const: za64rs
901              - const: ziccrse
902        then:
903          oneOf:
904            - contains:
905                const: zalrsc
906            - contains:
907                const: a
908      # Zcb depends on Zca
909      - if:
910          contains:
911            const: zcb
912        then:
913          contains:
914            const: zca
915      # Zcd depends on Zca and D
916      - if:
917          contains:
918            const: zcd
919        then:
920          allOf:
921            - contains:
922                const: zca
923            - contains:
924                const: d
925      # Zcf depends on Zca and F
926      - if:
927          contains:
928            const: zcf
929        then:
930          allOf:
931            - contains:
932                const: zca
933            - contains:
934                const: f
935      # Zcmop depends on Zca
936      - if:
937          contains:
938            const: zcmop
939        then:
940          contains:
941            const: zca
942      # Zfbfmin depends on F
943      - if:
944          contains:
945            const: zfbfmin
946        then:
947          contains:
948            const: f
949      # Ziccamoa depends on Zaamo or A
950      - if:
951          contains:
952            const: ziccamoa
953        then:
954          oneOf:
955            - contains:
956                const: zaamo
957            - contains:
958                const: a
959      # Zvfbfmin depends on V or Zve32f
960      - if:
961          contains:
962            const: zvfbfmin
963        then:
964          oneOf:
965            - contains:
966                const: v
967            - contains:
968                const: zve32f
969      # Zvfbfwma depends on Zfbfmin and Zvfbfmin
970      - if:
971          contains:
972            const: zvfbfwma
973        then:
974          allOf:
975            - contains:
976                const: zfbfmin
977            - contains:
978                const: zvfbfmin
979      # Zacas depends on Zaamo
980      - if:
981          contains:
982            const: zacas
983        then:
984          contains:
985            const: zaamo
986
987      - if:
988          contains:
989            const: zve32x
990        then:
991          contains:
992            const: zicsr
993
994      - if:
995          contains:
996            const: zve32f
997        then:
998          allOf:
999            - contains:
1000                const: f
1001            - contains:
1002                const: zve32x
1003
1004      - if:
1005          contains:
1006            const: zve64x
1007        then:
1008          contains:
1009            const: zve32x
1010
1011      - if:
1012          contains:
1013            const: zve64f
1014        then:
1015          allOf:
1016            - contains:
1017                const: f
1018            - contains:
1019                const: zve32f
1020            - contains:
1021                const: zve64x
1022
1023      - if:
1024          contains:
1025            const: zve64d
1026        then:
1027          allOf:
1028            - contains:
1029                const: d
1030            - contains:
1031                const: zve64f
1032
1033      - if:
1034          contains:
1035            anyOf:
1036              - const: zvbc
1037              - const: zvkn
1038              - const: zvknc
1039              - const: zvkng
1040              - const: zvknhb
1041              - const: zvksc
1042        then:
1043          contains:
1044            anyOf:
1045              - const: v
1046              - const: zve64x
1047
1048      - if:
1049          contains:
1050            anyOf:
1051              - const: zvbb
1052              - const: zvkb
1053              - const: zvkg
1054              - const: zvkned
1055              - const: zvknha
1056              - const: zvksed
1057              - const: zvksh
1058              - const: zvks
1059              - const: zvkt
1060        then:
1061          contains:
1062            anyOf:
1063              - const: v
1064              - const: zve32x
1065      # Zclsd depends on Zilsd and Zca
1066      - if:
1067          contains:
1068            anyOf:
1069              - const: zclsd
1070        then:
1071          contains:
1072            allOf:
1073              - const: zilsd
1074              - const: zca
1075
1076allOf:
1077  # Zcf extension does not exist on rv64
1078  - if:
1079      properties:
1080        riscv,isa-extensions:
1081          contains:
1082            const: zcf
1083        riscv,isa-base:
1084          contains:
1085            const: rv64i
1086    then:
1087      properties:
1088        riscv,isa-extensions:
1089          not:
1090            contains:
1091              const: zcf
1092  # Zilsd extension does not exist on rv64
1093  - if:
1094      properties:
1095        riscv,isa-base:
1096          contains:
1097            const: rv64i
1098    then:
1099      properties:
1100        riscv,isa-extensions:
1101          not:
1102            contains:
1103              const: zilsd
1104
1105additionalProperties: true
1106...
1107