Skip to content

Commit

Permalink
Move the Version Numbering and Underscore section down. Add 'Name' to…
Browse files Browse the repository at this point in the history
… the end of the multi-letter section names.
  • Loading branch information
topperc committed Oct 3, 2024
1 parent 6b959c1 commit 564cb0d
Showing 1 changed file with 32 additions and 32 deletions.
64 changes: 32 additions & 32 deletions src/naming.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -45,35 +45,6 @@ Some ISA extensions depend on the presence of other extensions, e.g.,
may be implicit in the ISA name: for example, RV32IF is equivalent to
RV32IFZicsr, and RV32ID is equivalent to RV32IFD and RV32IFDZicsr.

=== Version Numbers

Recognizing that instruction sets may expand or alter over time, we
encode extension version numbers following the extension name. Version
numbers are divided into major and minor version numbers, separated by a
"p". If the minor version is "0", then "p0" can be omitted from
the version string. Changes in major version numbers imply a loss of
backwards compatibility, whereas changes in only the minor version
number must be backwards-compatible. For example, the original 64-bit
standard ISA defined in release 1.0 of this manual can be written in
full as "RV64I1p0M1p0A1p0F1p0D1p0", more concisely as
"RV64I1M1A1F1D1".

We introduced the version numbering scheme with the second release.
Hence, we define the default version of a standard extension to be the
version present at that time, e.g., "RV32I" is equivalent to
"RV32I2".

=== Underscores

Underscores "_" may be used to separate ISA extensions to improve
readability and to provide disambiguation, e.g., "RV32I2_M2_A2".

Because the "P" extension for Packed SIMD can be confused for the
decimal point in a version number, it must be preceded by an underscore
if it follows a number. For example, "rv32i2p2" means version 2.2 of
RV32I, whereas "rv32i2_p2" means version 2.0 of RV32I with version 2.0
of the P extension.

=== Additional Standard Unprivileged Extension Names

Standard unprivileged extensions can also be named by using a single "Z" followed by an
Expand All @@ -94,7 +65,7 @@ All multi-letter extensions, including those with the "Z" prefix, must be
separated from other multi-letter extensions by an underscore, e.g.,
"RV32IMACZicsr_Zifencei".

=== Supervisor-level Instruction-Set Extensions
=== Supervisor-level Instruction-Set Extension Names

Standard extensions that extend the supervisor-level virtual-memory
architecture are prefixed with the letters "Sv", followed by an alphabetical
Expand All @@ -112,7 +83,7 @@ Standard supervisor-level extensions should be listed after standard
unprivileged extensions. If multiple supervisor-level extensions are
listed, they should be ordered alphabetically.

=== Hypervisor-level Instruction-Set Extensions
=== Hypervisor-level Instruction-Set Extension Names

Standard extensions that extend the hypervisor-level architecture are prefixed
with the letters "Sh".
Expand All @@ -125,7 +96,7 @@ described in the previous section.
The "Sh" prefix is used by the few hypervisor-level extensions that have no
supervisor-visible effects.

=== Machine-level Instruction-Set Extensions
=== Machine-level Instruction-Set Extension Names

Standard machine-level instruction-set extensions are prefixed with the
letters "Sm".
Expand All @@ -151,6 +122,35 @@ Bargle may be named "RV64IZifencei_Xargle_Xbargle".
If multiple non-standard extensions are listed, they should be ordered
alphabetically.

=== Version Numbers

Recognizing that instruction sets may expand or alter over time, we
encode extension version numbers following the extension name. Version
numbers are divided into major and minor version numbers, separated by a
"p". If the minor version is "0", then "p0" can be omitted from
the version string. Changes in major version numbers imply a loss of
backwards compatibility, whereas changes in only the minor version
number must be backwards-compatible. For example, the original 64-bit
standard ISA defined in release 1.0 of this manual can be written in
full as "RV64I1p0M1p0A1p0F1p0D1p0", more concisely as
"RV64I1M1A1F1D1".

We introduced the version numbering scheme with the second release.
Hence, we define the default version of a standard extension to be the
version present at that time, e.g., "RV32I" is equivalent to
"RV32I2".

=== Underscores

Underscores "_" may be used to separate ISA extensions to improve
readability and to provide disambiguation, e.g., "RV32I2_M2_A2".

Because the "P" extension for Packed SIMD can be confused for the
decimal point in a version number, it must be preceded by an underscore
if it follows a number. For example, "rv32i2p2" means version 2.2 of
RV32I, whereas "rv32i2_p2" means version 2.0 of RV32I with version 2.0
of the P extension.

=== Subset Naming Convention

<<isanametable>> summarizes the standardized extension
Expand Down

0 comments on commit 564cb0d

Please sign in to comment.