@@ -45,13 +45,18 @@ Some ISA extensions depend on the presence of other extensions, e.g.,
4545may be implicit in the ISA name: for example, RV32IF is equivalent to
4646RV32IFZicsr, and RV32ID is equivalent to RV32IFD and RV32IFDZicsr.
4747
48+ === Underscores
49+
50+ Underscores "_" may be used to separate ISA extensions to improve
51+ readability and to provide disambiguation, e.g., "RV32I2_M2_A2".
52+
4853=== Additional Standard Unprivileged Extension Names
4954
5055Standard unprivileged extensions can also be named by using a single "Z" followed by an
51- alphanumeric name. The name must end with an alphabetical character or an
52- optional version number. The second letter from the end cannot be numeric if the
56+ alphanumeric name. The name must end with an alphabetical character.
57+ The second letter from the end cannot be numeric if the
5358last letter is "p". For example, "Zifencei" names the instruction-fetch fence extension
54- described in <<zifencei>>; "Zifencei2" and "Zifencei2p0" name version 2.0 are the same .
59+ described in <<zifencei>>.
5560
5661The first letter following the "Z" conventionally indicates the most
5762closely related alphabetical extension category, IMAFDQLCBKJTPVH. For the
@@ -68,20 +73,20 @@ separated from other multi-letter extensions by an underscore, e.g.,
6873=== Supervisor-level Instruction-Set Extension Names
6974
7075Standard extensions that extend the supervisor-level virtual-memory
71- architecture are prefixed with the letters "Sv", followed by an alphabetical
72- name and an optional version number, or by a numeric name with no version number.
76+ architecture are prefixed with the letters "Sv", followed by an alphanumeric
77+ name. Other standard extensions that extend the supervisor-level architecture are
78+ prefixed with thel letters "Ss", followed by an alphanumeric name. The name
79+ must end with an alphabetical character. The second letter from the end cannot
80+ be numeric if the last letter is "p". These extensions are further defined in
81+ Volume II.
7382
74- Other standard extensions that extend the supervisor-level architecture are
75- named by using "Ss" as a prefix, followed by an alphanumeric name. The name
76- must end with an alphabetical character or an optional
77- version number. The second letter from the end cannot be numeric character
78- if the last letter is "p". Supervisor-level extensions must be separated
79- from other multi-letter extensions by an underscore. These extensions are further
80- defined in Volume II.
83+ The extensions "sv32", "sv39", "sv48", and "sv59" were defined before the rule
84+ against extension names ending in numbers was established.
8185
8286Standard supervisor-level extensions should be listed after standard
83- unprivileged extensions. If multiple supervisor-level extensions are
84- listed, they should be ordered alphabetically.
87+ unprivileged extensions, and like other multi-letter extensions, must be
88+ separated from other multi-letter extensions by an underscore. If multiple
89+ supervisor-level extensions are listed, they should be ordered alphabetically.
8590
8691=== Hypervisor-level Instruction-Set Extension Names
8792
@@ -102,16 +107,17 @@ Standard machine-level instruction-set extensions are prefixed with the
102107letters "Sm".
103108
104109Standard machine-level extensions should be listed after standard
105- lesser-privileged extensions. If multiple machine-level extensions are
106- listed, they should be ordered alphabetically.
110+ lesser-privileged extensions, and like other multi-letter extensions, must be
111+ separated from other multi-letter extensions by an underscore. If multiple
112+ machine-level extensions are listed, they should be ordered alphabetically.
107113
108114=== Non-Standard Extension Names
109115
110116Non-standard extensions are named by using a single "X" followed by the alphanumeric
111- name. The name must end with an alphabetic character or an optional version number . The
117+ name. The name must end with an alphabetic character. The
112118second letter from the end cannot be numeric if the last letter is
113119"p". For example, "Xhwacha" names the Hwacha vector-fetch ISA
114- extension; "Xhwacha2" and "Xhwacha2p0" name version 2.0 of same.
120+ extension;
115121
116122Non-standard extensions must be listed after all standard extensions, and,
117123like other multi-letter extensions, must be separated from other multi-letter
@@ -120,15 +126,25 @@ For example, an ISA with non-standard extensions Argle and
120126Bargle may be named "RV64IZifencei_Xargle_Xbargle".
121127
122128If multiple non-standard extensions are listed, they should be ordered
123- alphabetically.
129+ alphabetically. Like other multi-letter extensions, they should should be
130+ separated from other multi-leter extensions by an underscore.
124131
125132=== Version Numbers
126133
127134Recognizing that instruction sets may expand or alter over time, we
128135encode extension version numbers following the extension name. Version
129136numbers are divided into major and minor version numbers, separated by a
130137"p". If the minor version is "0", then "p0" can be omitted from
131- the version string. Changes in major version numbers imply a loss of
138+ the version string. To avoid ambiguity, no extension name may end with a number
139+ or a "p" preceded by a number.
140+
141+ Because the "P" extension for Packed SIMD can be confused for the
142+ decimal point in a version number, it must be preceded by an underscore
143+ if it follows another extension with a version number. For example, "rv32i2p2"
144+ means version 2.2 of RV32I, whereas "rv32i2_p2" means version 2.0 of RV32I with
145+ version 2.0 of the P extension.
146+
147+ Changes in major version numbers imply a loss of
132148backwards compatibility, whereas changes in only the minor version
133149number must be backwards-compatible. For example, the original 64-bit
134150standard ISA defined in release 1.0 of this manual can be written in
@@ -140,17 +156,6 @@ Hence, we define the default version of a standard extension to be the
140156version present at that time, e.g., "RV32I" is equivalent to
141157"RV32I2".
142158
143- === Underscores
144-
145- Underscores "_" may be used to separate ISA extensions to improve
146- readability and to provide disambiguation, e.g., "RV32I2_M2_A2".
147-
148- Because the "P" extension for Packed SIMD can be confused for the
149- decimal point in a version number, it must be preceded by an underscore
150- if it follows a number. For example, "rv32i2p2" means version 2.2 of
151- RV32I, whereas "rv32i2_p2" means version 2.0 of RV32I with version 2.0
152- of the P extension.
153-
154159=== Subset Naming Convention
155160
156161<<isanametable>> summarizes the standardized extension
0 commit comments