Skip to content

Commit 317dbf6

Browse files
committed
RISC-V: Add 29 extensions to be stabilized
This commit directly corresponds to rust-lang/rust#145948. See that proposal for criteria of 29 new extensions. Notes (for the Rust reference): * Updated existing `a` and `c` to imply its subset(s). * `a` equals `zalrsc` and `zaamo` combined (imply both from `a`). * The C extension always implies the Zca extension and conditionally implies Zcf and/or Zcd extensions (on RISC-V) but `c` (Rust target feature) only implies `zca` as both `zcf` and `zcd` are not to be stabilized on this proposal. * For each extension, linked to the first document containing it with the ratified state. For instance, all extensions present in the RVA23 profiles link to (3) (despite that they are present in (2)) because they were not ratified at the time when (2) is published. References: 1. RISC-V Instruction Set Manual (version 20250508): <https://github.com/riscv/riscv-isa-manual/tree/20250508> 2. RISC-V Profiles (version 1.0 - RVA23 profiles were not ratified at the time): <https://github.com/riscv/riscv-profiles/tree/v1.0> 3. RISC-V Profiles (RVA23/RVB23-ratified version): <https://github.com/riscv/riscv-profiles/tree/rva23-rvb23-ratified>
1 parent e11adf6 commit 317dbf6

File tree

1 file changed

+60
-2
lines changed

1 file changed

+60
-2
lines changed

src/attributes/codegen.md

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,16 +501,44 @@ specification. Many specifications are described in the [RISC-V ISA Manual],
501501

502502
Feature | Implicitly Enables | Description
503503
------------|---------------------|-------------------
504-
`a` | | [A][rv-a] --- Atomic instructions
505-
`c` | | [C][rv-c] --- Compressed instructions
504+
`a` | `zaamo`, `zalrsc` | [A][rv-a] --- Atomic instructions
505+
`b` | `zba`, `zbc`, `zbs` | [B][rv-b] --- Bit Manipulation instructions
506+
`c` | `zca` | [C][rv-c] --- Compressed instructions
506507
`m` | | [M][rv-m] --- Integer Multiplication and Division instructions
508+
`za64rs` | `za128rs` | [Za64rs][rv-za64rs] --- Platform Behavior: Naturally aligned Reservation sets with ≦ 64 Bytes
509+
`za128rs` | | [Za128rs][rv-za128rs] --- Platform Behavior: Naturally aligned Reservation sets with ≦ 128 Bytes
510+
`zaamo` | | [Zaamo][rv-zaamo] --- Atomic Memory Operation instructions
511+
`zabha` | `zaamo` | [Zabha][rv-zabha] --- Byte and Halfword Atomic Memory Operation instructions
512+
`zacas` | `zaamo` | [Zacas][rv-zacas] --- Atomic Compare-and-Swap (CAS) instructions
513+
`zalrsc` | | [Zalrsc][rv-zalrsc] --- Load-Reserved/Store-Conditional instructions
514+
`zama16b` | | [Zama16b][rv-zama16b] --- Platform Behavior: Misaligned loads, stores, and AMOs to main memory regions that do not cross a naturally aligned 16-byte boundary are atomic
515+
`zawrs` | | [Zawrs][rv-zawrs] --- Wait-on-Reservation-Set instructions
507516
`zba` | | [Zba][rv-zba] --- Address Generation instructions
508517
`zbb` | | [Zbb][rv-zbb] --- Basic bit-manipulation
509518
`zbc` | `zbkc` | [Zbc][rv-zbc] --- Carry-less multiplication
510519
`zbkb` | | [Zbkb][rv-zbkb] --- Bit Manipulation Instructions for Cryptography
511520
`zbkc` | | [Zbkc][rv-zbkc] --- Carry-less multiplication for Cryptography
512521
`zbkx` | | [Zbkx][rv-zbkx] --- Crossbar permutations
513522
`zbs` | | [Zbs][rv-zbs] --- Single-bit instructions
523+
`zca` | | [Zca][rv-zca] --- Compressed instructions: integer part subset
524+
`zcb` | `zca` | [Zcb][rv-zcb] --- Simple Code-size Saving Compressed instructions
525+
`zcmop` | `zca` | [Zcmop][rv-zcmop] --- Compressed May-Be-Operations
526+
`zic64b` | | [Zic64b][rv-zic64b] --- Platform Behavior: Naturally aligned 64 byte Cache blocks
527+
`zicbom` | | [Zicbom][rv-zicbom] --- Cache-Block Management instructions
528+
`zicbop` | | [Zicbop][rv-zicbop] --- Cache-Block Prefetch Hint instructions
529+
`zicboz` | | [Zicboz][rv-zicboz] --- Cache-Block Zero instruction
530+
`ziccamoa` | | [Ziccamoa][rv-ziccamoa] --- Platform Behavior: Cacheable and Coherent Main memory supports all basic atomic operations
531+
`ziccif` | | [Ziccif][rv-ziccif] --- Platform Behavior: Cacheable and Coherent Main memory supports instruction fetch and fetches of naturally aligned power-of-2 sizes up to `min(ILEN,XLEN)` are atomic
532+
`zicclsm` | | [Zicclsm][rv-zicclsm] --- Platform Behavior: Cacheable and Coherent Main memory supports misaligned load/store accesses
533+
`ziccrse` | | [Ziccrse][rv-ziccrse] --- Platform Behavior: Cacheable and Coherent Main memory guarantees eventual success on LR/SC sequences
534+
`zicntr` | `zicsr` | [Zicntr][rv-zicntr] --- Base Counters and Timers
535+
`zicond` | | [Zicond][rv-zicond] --- Integer Conditional Operation instructions
536+
`zicsr` | | [Zicsr][rv-zicsr] --- Control and Status Register (CSR) instructions
537+
`zifencei` | | [Zifencei][rv-zifencei] --- Instruction-Fetch Fence instruction
538+
`zihintntl` | | [Zihintntl][rv-zihintntl] --- Non-Temporal Locality Hint instructions
539+
`zihintpause` | | [Zihintpause][rv-zihintpause] --- Pause Hint instruction
540+
`zihpm` | `zicsr` | [Zihpm][rv-zihpm] --- Hardware Performance Counters
541+
`zimop` | | [Zimop][rv-zimop] --- May-Be-Operations
514542
`zk` | `zkn`, `zkr`, `zks`, `zkt`, `zbkb`, `zbkc`, `zkbx` | [Zk][rv-zk] --- Scalar Cryptography
515543
`zkn` | `zknd`, `zkne`, `zknh`, `zbkb`, `zbkc`, `zkbx` | [Zkn][rv-zkn] --- NIST Algorithm suite extension
516544
`zknd` | | [Zknd][rv-zknd] --- NIST Suite: AES Decryption
@@ -521,19 +549,48 @@ Feature | Implicitly Enables | Description
521549
`zksed` | | [Zksed][rv-zksed] --- ShangMi Suite: SM4 Block Cipher Instructions
522550
`zksh` | | [Zksh][rv-zksh] --- ShangMi Suite: SM3 Hash Function Instructions
523551
`zkt` | | [Zkt][rv-zkt] --- Data Independent Execution Latency Subset
552+
`ztso` | | [Ztso][rv-ztso] --- Total Store Ordering
524553

525554
<!-- Keep links near each table to make it easier to move and update. -->
526555

527556
[rv-a]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/a-st-ext.adoc
557+
[rv-b]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/b-st-ext.adoc
528558
[rv-c]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/c-st-ext.adoc
529559
[rv-m]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/m-st-ext.adoc
560+
[rv-za64rs]: https://github.com/riscv/riscv-profiles/blob/rva23-rvb23-ratified/src/rva23-profile.adoc
561+
[rv-za128rs]: https://github.com/riscv/riscv-profiles/blob/v1.0/profiles.adoc
562+
[rv-zaamo]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/a-st-ext.adoc
563+
[rv-zabha]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zabha.adoc
564+
[rv-zacas]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zacas.adoc
565+
[rv-zalrsc]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/a-st-ext.adoc
566+
[rv-zama16b]: https://github.com/riscv/riscv-profiles/blob/rva23-rvb23-ratified/src/rva23-profile.adoc
567+
[rv-zawrs]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zawrs.adoc
530568
[rv-zba]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/b-st-ext.adoc
531569
[rv-zbb]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/b-st-ext.adoc
532570
[rv-zbc]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/b-st-ext.adoc
533571
[rv-zbkb]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/b-st-ext.adoc
534572
[rv-zbkc]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/b-st-ext.adoc
535573
[rv-zbkx]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/b-st-ext.adoc
536574
[rv-zbs]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/b-st-ext.adoc
575+
[rv-zca]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zc.adoc
576+
[rv-zcb]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zc.adoc
577+
[rv-zcmop]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zimop.adoc
578+
[rv-zic64b]: https://github.com/riscv/riscv-profiles/blob/v1.0/profiles.adoc
579+
[rv-zicbom]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/cmo.adoc
580+
[rv-zicbop]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/cmo.adoc
581+
[rv-zicboz]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/cmo.adoc
582+
[rv-ziccamoa]: https://github.com/riscv/riscv-profiles/blob/v1.0/profiles.adoc
583+
[rv-ziccif]: https://github.com/riscv/riscv-profiles/blob/v1.0/profiles.adoc
584+
[rv-zicclsm]: https://github.com/riscv/riscv-profiles/blob/v1.0/profiles.adoc
585+
[rv-ziccrse]: https://github.com/riscv/riscv-profiles/blob/v1.0/profiles.adoc
586+
[rv-zicntr]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/counters.adoc
587+
[rv-zicond]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zicond.adoc
588+
[rv-zicsr]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zicsr.adoc
589+
[rv-zifencei]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zifencei.adoc
590+
[rv-zihintntl]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zihintntl.adoc
591+
[rv-zihintpause]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zihintpause.adoc
592+
[rv-zihpm]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/counters.adoc
593+
[rv-zimop]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/zimop.adoc
537594
[rv-zk]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/scalar-crypto.adoc
538595
[rv-zkn]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/scalar-crypto.adoc
539596
[rv-zkne]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/scalar-crypto.adoc
@@ -544,6 +601,7 @@ Feature | Implicitly Enables | Description
544601
[rv-zksed]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/scalar-crypto.adoc
545602
[rv-zksh]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/scalar-crypto.adoc
546603
[rv-zkt]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/scalar-crypto.adoc
604+
[rv-ztso]: https://github.com/riscv/riscv-isa-manual/blob/20250508/src/ztso-st-ext.adoc
547605

548606
r[attributes.codegen.target_feature.wasm]
549607
#### `wasm32` or `wasm64`

0 commit comments

Comments
 (0)