1pub const STANDARD_EXTENSIONS: &[(char, &str, &str)] = &[
9 ('i', "I", "Base Integer Instructions"),
10 ('e', "E", "Embedded (16 registers)"),
11 ('m', "M", "Integer Multiply/Divide"),
12 ('a', "A", "Atomic Instructions"),
13 ('f', "F", "Single-Precision Float"),
14 ('d', "D", "Double-Precision Float"),
15 ('q', "Q", "Quad-Precision Float"),
16 ('c', "C", "Compressed (16-bit)"),
17 ('b', "B", "Bit Manipulation"),
18 ('v', "V", "Vector (SIMD)"),
19 ('h', "H", "Hypervisor"),
20];
21
22pub const Z_EXTENSIONS: &[(&str, &str, &str, &str)] = &[
25 ("zicsr", "Zicsr", "CSR Instructions", "base"),
27 ("zifencei", "Zifencei", "Instruction-Fetch Fence", "base"),
28 ("zicntr", "Zicntr", "Base Counters/Timers", "base"),
29 ("zihpm", "Zihpm", "Hardware Perf Counters", "base"),
30 ("zihintpause", "Zihintpause", "Pause Hint", "hint"),
32 ("zihintntl", "Zihintntl", "Non-Temporal Hints", "hint"),
33 ("zicbom", "Zicbom", "Cache-Block Management", "cache"),
35 ("zicboz", "Zicboz", "Cache-Block Zero", "cache"),
36 ("zicbop", "Zicbop", "Cache-Block Prefetch", "cache"),
37 ("zicond", "Zicond", "Conditional Operations", "cond"),
39 ("zba", "Zba", "Address Generation", "bit"),
41 ("zbb", "Zbb", "Basic Bit Manipulation", "bit"),
42 ("zbc", "Zbc", "Carry-less Multiply", "bit"),
43 ("zbs", "Zbs", "Single-bit Operations", "bit"),
44 ("zbkb", "Zbkb", "Bit Manip for Crypto", "crypto"),
46 ("zbkc", "Zbkc", "Carry-less for Crypto", "crypto"),
47 ("zbkx", "Zbkx", "Crossbar for Crypto", "crypto"),
48 ("zk", "Zk", "Scalar Crypto (All)", "crypto"),
49 ("zkn", "Zkn", "NIST Algorithm Suite", "crypto"),
50 ("zknd", "Zknd", "AES Decryption", "crypto"),
51 ("zkne", "Zkne", "AES Encryption", "crypto"),
52 ("zknh", "Zknh", "SHA-2 Hash", "crypto"),
53 ("zks", "Zks", "ShangMi Suite", "crypto"),
54 ("zksed", "Zksed", "SM4 Block Cipher", "crypto"),
55 ("zksh", "Zksh", "SM3 Hash", "crypto"),
56 ("zkr", "Zkr", "Entropy Source", "crypto"),
57 ("zkt", "Zkt", "Data-Indep Timing", "crypto"),
58 ("zfh", "Zfh", "Half-Precision Float", "fp"),
60 ("zfhmin", "Zfhmin", "Minimal Half-Precision", "fp"),
61 ("zfa", "Zfa", "Additional FP Instrs", "fp"),
62 ("zfinx", "Zfinx", "Float in Int Regs", "fp"),
63 ("zdinx", "Zdinx", "Double in Int Regs", "fp"),
64 ("zhinx", "Zhinx", "Half in Int Regs", "fp"),
65 ("zhinxmin", "Zhinxmin", "Min Half in Int Regs", "fp"),
66 ("zfbfmin", "Zfbfmin", "Scalar BFloat16", "fp"),
67 ("zca", "Zca", "Compressed Base", "comp"),
69 ("zcb", "Zcb", "Compressed Basic Ops", "comp"),
70 ("zcd", "Zcd", "Compressed Double FP", "comp"),
71 ("zcf", "Zcf", "Compressed Single FP", "comp"),
72 ("zcmp", "Zcmp", "Compressed Push/Pop", "comp"),
73 ("zcmt", "Zcmt", "Compressed Table Jump", "comp"),
74 ("zcmop", "Zcmop", "Compressed May-Be-Ops", "comp"),
75 ("zclsd", "Zclsd", "Compressed LD/SD Pair", "comp"),
76 ("zacas", "Zacas", "Atomic Compare-and-Swap", "atomic"),
78 ("zabha", "Zabha", "Atomic Byte/Halfword", "atomic"),
79 ("zaamo", "Zaamo", "Atomic AMO Subset", "atomic"),
80 ("zalrsc", "Zalrsc", "Atomic LR/SC Subset", "atomic"),
81 ("zawrs", "Zawrs", "Wait-on-Reservation-Set", "atomic"),
82 ("za64rs", "Za64rs", "Reservation Set 64B", "mem"),
84 ("za128rs", "Za128rs", "Reservation Set 128B", "mem"),
85 ("zama16b", "Zama16b", "Misaligned Atomics 16B", "mem"),
86 ("zic64b", "Zic64b", "64-byte Cache Block", "mem"),
87 ("ziccamoa", "Ziccamoa", "Main Mem Atomics AMO", "mem"),
88 ("ziccamoc", "Ziccamoc", "Main Mem Atomics CAS", "mem"),
89 ("ziccif", "Ziccif", "Inst Fetch Coherence", "mem"),
90 ("zicclsm", "Zicclsm", "Load/Store Misaligned", "mem"),
91 ("ziccrse", "Ziccrse", "Reservation Set Size", "mem"),
92 ("ztso", "Ztso", "Total Store Ordering", "mem"),
93 ("zmmul", "Zmmul", "Multiply Only (no Div)", "mul"),
95 ("zimop", "Zimop", "May-Be-Operations", "other"),
97 ("zilsd", "Zilsd", "Load/Store Pair", "other"),
98 ("zve32f", "Zve32f", "Vector 32-bit Float", "vec"),
100 ("zve32x", "Zve32x", "Vector 32-bit Int", "vec"),
101 ("zve64d", "Zve64d", "Vector 64-bit Double", "vec"),
102 ("zve64f", "Zve64f", "Vector 64-bit Float", "vec"),
103 ("zve64x", "Zve64x", "Vector 64-bit Int", "vec"),
104 ("zvfh", "Zvfh", "Vector Half-Precision", "vec"),
105 ("zvfhmin", "Zvfhmin", "Min Vector Half-Prec", "vec"),
106 ("zvfbfmin", "Zvfbfmin", "Vector BFloat16 Conv", "vec"),
107 ("zvfbfwma", "Zvfbfwma", "Vector BF16 Widen MA", "vec"),
108 ("zvl32b", "Zvl32b", "VLEN >= 32 bits", "vec"),
109 ("zvl64b", "Zvl64b", "VLEN >= 64 bits", "vec"),
110 ("zvl128b", "Zvl128b", "VLEN >= 128 bits", "vec"),
111 ("zvl256b", "Zvl256b", "VLEN >= 256 bits", "vec"),
112 ("zvl512b", "Zvl512b", "VLEN >= 512 bits", "vec"),
113 ("zvl1024b", "Zvl1024b", "VLEN >= 1024 bits", "vec"),
114 ("zvl2048b", "Zvl2048b", "VLEN >= 2048 bits", "vec"),
115 ("zvl4096b", "Zvl4096b", "VLEN >= 4096 bits", "vec"),
116 ("zvl8192b", "Zvl8192b", "VLEN >= 8192 bits", "vec"),
117 ("zvl16384b", "Zvl16384b", "VLEN >= 16384 bits", "vec"),
118 ("zvl32768b", "Zvl32768b", "VLEN >= 32768 bits", "vec"),
119 ("zvl65536b", "Zvl65536b", "VLEN >= 65536 bits", "vec"),
120 ("zvbb", "Zvbb", "Vector Bit Manipulation", "vcrypto"),
122 ("zvbc", "Zvbc", "Vector Carry-less Mul", "vcrypto"),
123 ("zvkb", "Zvkb", "Vector Crypto Bit Manip", "vcrypto"),
124 ("zvkg", "Zvkg", "Vector GCM/GMAC", "vcrypto"),
125 ("zvkn", "Zvkn", "Vector NIST (All)", "vcrypto"),
126 ("zvknc", "Zvknc", "Vector NIST+Carryless", "vcrypto"),
127 ("zvkned", "Zvkned", "Vector AES", "vcrypto"),
128 ("zvkng", "Zvkng", "Vector NIST+GCM", "vcrypto"),
129 ("zvknha", "Zvknha", "Vector SHA-2 (256)", "vcrypto"),
130 ("zvknhb", "Zvknhb", "Vector SHA-2 (512)", "vcrypto"),
131 ("zvks", "Zvks", "Vector ShangMi (All)", "vcrypto"),
132 ("zvksc", "Zvksc", "Vector SM+Carryless", "vcrypto"),
133 ("zvksed", "Zvksed", "Vector SM4", "vcrypto"),
134 ("zvksg", "Zvksg", "Vector SM+GCM", "vcrypto"),
135 ("zvksh", "Zvksh", "Vector SM3", "vcrypto"),
136 ("zvkt", "Zvkt", "Vector Data-Indep Time", "vcrypto"),
137];
138
139pub const S_EXTENSIONS: &[(&str, &str, &str, &str)] = &[
142 ("svinval", "Svinval", "Fine-Grained TLB Inv", "vm"),
144 ("svnapot", "Svnapot", "NAPOT Translation", "vm"),
145 ("svpbmt", "Svpbmt", "Page-Based Mem Types", "vm"),
146 ("svade", "Svade", "A/D Update on Fault", "vm"),
147 ("svadu", "Svadu", "A/D Hardware Update", "vm"),
148 ("svbare", "Svbare", "Bare Translation Mode", "vm"),
149 ("svvptc", "Svvptc", "VPTC Invalidation", "vm"),
150 ("ssaia", "Ssaia", "Adv Interrupt Arch", "sup"),
152 ("ssccfg", "Ssccfg", "Counter Config", "sup"),
153 ("ssccptr", "Ssccptr", "Common Ptr Convention", "sup"),
154 ("sscofpmf", "Sscofpmf", "Count Overflow/Filter", "sup"),
155 ("sscounterenw", "Sscounterenw", "Counter Enables", "sup"),
156 ("sscsrind", "Sscsrind", "Indirect CSR Access", "sup"),
157 ("ssctr", "Ssctr", "Control Transfer Rec", "sup"),
158 ("ssdbltrp", "Ssdbltrp", "Double Trap", "sup"),
159 ("ssnpm", "Ssnpm", "Pointer Masking", "sup"),
160 ("sspm", "Sspm", "Pointer Masking", "sup"),
161 ("ssqosid", "Ssqosid", "QoS Identifiers", "sup"),
162 ("ssstateen", "Ssstateen", "State Enable", "sup"),
163 ("ssstrict", "Ssstrict", "No Non-Conforming Ext", "sup"),
164 ("sstc", "Sstc", "Supervisor Timer", "sup"),
165 ("sstvala", "Sstvala", "Trap Value Address", "sup"),
166 ("sstvecd", "Sstvecd", "Trap Vector Mode", "sup"),
167 ("ssu64xl", "Ssu64xl", "U-mode 64-bit", "sup"),
168 ("smaia", "Smaia", "Adv Interrupt Arch", "mach"),
170 ("smcdeleg", "Smcdeleg", "Counter Delegation", "mach"),
171 ("smcntrpmf", "Smcntrpmf", "Counter PMF", "mach"),
172 ("smcsrind", "Smcsrind", "Indirect CSR Access", "mach"),
173 ("smctr", "Smctr", "Control Transfer Rec", "mach"),
174 ("smdbltrp", "Smdbltrp", "Double Trap", "mach"),
175 ("smepmp", "Smepmp", "Enhanced PMP", "mach"),
176 ("smmpm", "Smmpm", "M-mode Ptr Masking", "mach"),
177 ("smnpm", "Smnpm", "Nesting Ptr Masking", "mach"),
178 ("smrnmi", "Smrnmi", "Resumable NMI", "mach"),
179 ("smstateen", "Smstateen", "State Enable", "mach"),
180 ("sha", "Sha", "H-mode Ext Subset", "hyp"),
182 ("shcounterenw", "Shcounterenw", "Counter Enables", "hyp"),
183 ("shgatpa", "Shgatpa", "Guest Addr Translation", "hyp"),
184 (
185 "shlcofideleg",
186 "Shlcofideleg",
187 "Lcof Interrupt Deleg",
188 "hyp",
189 ),
190 ("shtvala", "Shtvala", "H-mode Trap Value", "hyp"),
191 ("shvsatpa", "Shvsatpa", "VS-mode Saturation", "hyp"),
192 ("shvstvala", "Shvstvala", "VS-mode Trap Value", "hyp"),
193 ("shvstvecd", "Shvstvecd", "VS-mode Trap Vector", "hyp"),
194 ("sdext", "Sdext", "External Debug", "debug"),
196 ("sdtrig", "Sdtrig", "Debug Triggers", "debug"),
197 ("supm", "Supm", "U-mode Ptr Masking", "user"),
199];
200
201pub const Z_CATEGORY_NAMES: &[(&str, &str)] = &[
203 ("base", "Base"),
204 ("hint", "Hints"),
205 ("cache", "Cache"),
206 ("cond", "Conditional"),
207 ("bit", "Bit Manipulation"),
208 ("crypto", "Cryptography"),
209 ("fp", "Floating Point"),
210 ("comp", "Compressed"),
211 ("atomic", "Atomics"),
212 ("mem", "Memory Model"),
213 ("mul", "Multiply"),
214 ("vec", "Vector"),
215 ("vcrypto", "Vector Crypto"),
216 ("other", "Other"),
217];
218
219pub const S_CATEGORY_NAMES: &[(&str, &str)] = &[
221 ("vm", "Virtual Memory"),
222 ("sup", "Supervisor"),
223 ("mach", "Machine"),
224 ("hyp", "Hypervisor"),
225 ("debug", "Debug"),
226 ("user", "User"),
227];