1#ifdef GET_SUPPORTED_EXTENSIONS
2#undef GET_SUPPORTED_EXTENSIONS
3
4static const RISCVSupportedExtension SupportedExtensions[] = {
5 {.Name: "a", .Version: {.Major: 2, .Minor: 1}},
6 {.Name: "b", .Version: {.Major: 1, .Minor: 0}},
7 {.Name: "c", .Version: {.Major: 2, .Minor: 0}},
8 {.Name: "d", .Version: {.Major: 2, .Minor: 2}},
9 {.Name: "e", .Version: {.Major: 2, .Minor: 0}},
10 {.Name: "f", .Version: {.Major: 2, .Minor: 2}},
11 {.Name: "h", .Version: {.Major: 1, .Minor: 0}},
12 {.Name: "i", .Version: {.Major: 2, .Minor: 1}},
13 {.Name: "m", .Version: {.Major: 2, .Minor: 0}},
14 {.Name: "shcounterenw", .Version: {.Major: 1, .Minor: 0}},
15 {.Name: "shgatpa", .Version: {.Major: 1, .Minor: 0}},
16 {.Name: "shtvala", .Version: {.Major: 1, .Minor: 0}},
17 {.Name: "shvsatpa", .Version: {.Major: 1, .Minor: 0}},
18 {.Name: "shvstvala", .Version: {.Major: 1, .Minor: 0}},
19 {.Name: "shvstvecd", .Version: {.Major: 1, .Minor: 0}},
20 {.Name: "smaia", .Version: {.Major: 1, .Minor: 0}},
21 {.Name: "smcdeleg", .Version: {.Major: 1, .Minor: 0}},
22 {.Name: "smcsrind", .Version: {.Major: 1, .Minor: 0}},
23 {.Name: "smepmp", .Version: {.Major: 1, .Minor: 0}},
24 {.Name: "smstateen", .Version: {.Major: 1, .Minor: 0}},
25 {.Name: "ssaia", .Version: {.Major: 1, .Minor: 0}},
26 {.Name: "ssccfg", .Version: {.Major: 1, .Minor: 0}},
27 {.Name: "ssccptr", .Version: {.Major: 1, .Minor: 0}},
28 {.Name: "sscofpmf", .Version: {.Major: 1, .Minor: 0}},
29 {.Name: "sscounterenw", .Version: {.Major: 1, .Minor: 0}},
30 {.Name: "sscsrind", .Version: {.Major: 1, .Minor: 0}},
31 {.Name: "ssstateen", .Version: {.Major: 1, .Minor: 0}},
32 {.Name: "ssstrict", .Version: {.Major: 1, .Minor: 0}},
33 {.Name: "sstc", .Version: {.Major: 1, .Minor: 0}},
34 {.Name: "sstvala", .Version: {.Major: 1, .Minor: 0}},
35 {.Name: "sstvecd", .Version: {.Major: 1, .Minor: 0}},
36 {.Name: "ssu64xl", .Version: {.Major: 1, .Minor: 0}},
37 {.Name: "svade", .Version: {.Major: 1, .Minor: 0}},
38 {.Name: "svadu", .Version: {.Major: 1, .Minor: 0}},
39 {.Name: "svbare", .Version: {.Major: 1, .Minor: 0}},
40 {.Name: "svinval", .Version: {.Major: 1, .Minor: 0}},
41 {.Name: "svnapot", .Version: {.Major: 1, .Minor: 0}},
42 {.Name: "svpbmt", .Version: {.Major: 1, .Minor: 0}},
43 {.Name: "v", .Version: {.Major: 1, .Minor: 0}},
44 {.Name: "xcvalu", .Version: {.Major: 1, .Minor: 0}},
45 {.Name: "xcvbi", .Version: {.Major: 1, .Minor: 0}},
46 {.Name: "xcvbitmanip", .Version: {.Major: 1, .Minor: 0}},
47 {.Name: "xcvelw", .Version: {.Major: 1, .Minor: 0}},
48 {.Name: "xcvmac", .Version: {.Major: 1, .Minor: 0}},
49 {.Name: "xcvmem", .Version: {.Major: 1, .Minor: 0}},
50 {.Name: "xcvsimd", .Version: {.Major: 1, .Minor: 0}},
51 {.Name: "xsfcease", .Version: {.Major: 1, .Minor: 0}},
52 {.Name: "xsfvcp", .Version: {.Major: 1, .Minor: 0}},
53 {.Name: "xsfvfnrclipxfqf", .Version: {.Major: 1, .Minor: 0}},
54 {.Name: "xsfvfwmaccqqq", .Version: {.Major: 1, .Minor: 0}},
55 {.Name: "xsfvqmaccdod", .Version: {.Major: 1, .Minor: 0}},
56 {.Name: "xsfvqmaccqoq", .Version: {.Major: 1, .Minor: 0}},
57 {.Name: "xsifivecdiscarddlone", .Version: {.Major: 1, .Minor: 0}},
58 {.Name: "xsifivecflushdlone", .Version: {.Major: 1, .Minor: 0}},
59 {.Name: "xtheadba", .Version: {.Major: 1, .Minor: 0}},
60 {.Name: "xtheadbb", .Version: {.Major: 1, .Minor: 0}},
61 {.Name: "xtheadbs", .Version: {.Major: 1, .Minor: 0}},
62 {.Name: "xtheadcmo", .Version: {.Major: 1, .Minor: 0}},
63 {.Name: "xtheadcondmov", .Version: {.Major: 1, .Minor: 0}},
64 {.Name: "xtheadfmemidx", .Version: {.Major: 1, .Minor: 0}},
65 {.Name: "xtheadmac", .Version: {.Major: 1, .Minor: 0}},
66 {.Name: "xtheadmemidx", .Version: {.Major: 1, .Minor: 0}},
67 {.Name: "xtheadmempair", .Version: {.Major: 1, .Minor: 0}},
68 {.Name: "xtheadsync", .Version: {.Major: 1, .Minor: 0}},
69 {.Name: "xtheadvdot", .Version: {.Major: 1, .Minor: 0}},
70 {.Name: "xventanacondops", .Version: {.Major: 1, .Minor: 0}},
71 {.Name: "xwchc", .Version: {.Major: 2, .Minor: 2}},
72 {.Name: "za128rs", .Version: {.Major: 1, .Minor: 0}},
73 {.Name: "za64rs", .Version: {.Major: 1, .Minor: 0}},
74 {.Name: "zaamo", .Version: {.Major: 1, .Minor: 0}},
75 {.Name: "zabha", .Version: {.Major: 1, .Minor: 0}},
76 {.Name: "zalrsc", .Version: {.Major: 1, .Minor: 0}},
77 {.Name: "zama16b", .Version: {.Major: 1, .Minor: 0}},
78 {.Name: "zawrs", .Version: {.Major: 1, .Minor: 0}},
79 {.Name: "zba", .Version: {.Major: 1, .Minor: 0}},
80 {.Name: "zbb", .Version: {.Major: 1, .Minor: 0}},
81 {.Name: "zbc", .Version: {.Major: 1, .Minor: 0}},
82 {.Name: "zbkb", .Version: {.Major: 1, .Minor: 0}},
83 {.Name: "zbkc", .Version: {.Major: 1, .Minor: 0}},
84 {.Name: "zbkx", .Version: {.Major: 1, .Minor: 0}},
85 {.Name: "zbs", .Version: {.Major: 1, .Minor: 0}},
86 {.Name: "zca", .Version: {.Major: 1, .Minor: 0}},
87 {.Name: "zcb", .Version: {.Major: 1, .Minor: 0}},
88 {.Name: "zcd", .Version: {.Major: 1, .Minor: 0}},
89 {.Name: "zce", .Version: {.Major: 1, .Minor: 0}},
90 {.Name: "zcf", .Version: {.Major: 1, .Minor: 0}},
91 {.Name: "zcmop", .Version: {.Major: 1, .Minor: 0}},
92 {.Name: "zcmp", .Version: {.Major: 1, .Minor: 0}},
93 {.Name: "zcmt", .Version: {.Major: 1, .Minor: 0}},
94 {.Name: "zdinx", .Version: {.Major: 1, .Minor: 0}},
95 {.Name: "zfa", .Version: {.Major: 1, .Minor: 0}},
96 {.Name: "zfbfmin", .Version: {.Major: 1, .Minor: 0}},
97 {.Name: "zfh", .Version: {.Major: 1, .Minor: 0}},
98 {.Name: "zfhmin", .Version: {.Major: 1, .Minor: 0}},
99 {.Name: "zfinx", .Version: {.Major: 1, .Minor: 0}},
100 {.Name: "zhinx", .Version: {.Major: 1, .Minor: 0}},
101 {.Name: "zhinxmin", .Version: {.Major: 1, .Minor: 0}},
102 {.Name: "zic64b", .Version: {.Major: 1, .Minor: 0}},
103 {.Name: "zicbom", .Version: {.Major: 1, .Minor: 0}},
104 {.Name: "zicbop", .Version: {.Major: 1, .Minor: 0}},
105 {.Name: "zicboz", .Version: {.Major: 1, .Minor: 0}},
106 {.Name: "ziccamoa", .Version: {.Major: 1, .Minor: 0}},
107 {.Name: "ziccif", .Version: {.Major: 1, .Minor: 0}},
108 {.Name: "zicclsm", .Version: {.Major: 1, .Minor: 0}},
109 {.Name: "ziccrse", .Version: {.Major: 1, .Minor: 0}},
110 {.Name: "zicntr", .Version: {.Major: 2, .Minor: 0}},
111 {.Name: "zicond", .Version: {.Major: 1, .Minor: 0}},
112 {.Name: "zicsr", .Version: {.Major: 2, .Minor: 0}},
113 {.Name: "zifencei", .Version: {.Major: 2, .Minor: 0}},
114 {.Name: "zihintntl", .Version: {.Major: 1, .Minor: 0}},
115 {.Name: "zihintpause", .Version: {.Major: 2, .Minor: 0}},
116 {.Name: "zihpm", .Version: {.Major: 2, .Minor: 0}},
117 {.Name: "zimop", .Version: {.Major: 1, .Minor: 0}},
118 {.Name: "zk", .Version: {.Major: 1, .Minor: 0}},
119 {.Name: "zkn", .Version: {.Major: 1, .Minor: 0}},
120 {.Name: "zknd", .Version: {.Major: 1, .Minor: 0}},
121 {.Name: "zkne", .Version: {.Major: 1, .Minor: 0}},
122 {.Name: "zknh", .Version: {.Major: 1, .Minor: 0}},
123 {.Name: "zkr", .Version: {.Major: 1, .Minor: 0}},
124 {.Name: "zks", .Version: {.Major: 1, .Minor: 0}},
125 {.Name: "zksed", .Version: {.Major: 1, .Minor: 0}},
126 {.Name: "zksh", .Version: {.Major: 1, .Minor: 0}},
127 {.Name: "zkt", .Version: {.Major: 1, .Minor: 0}},
128 {.Name: "zmmul", .Version: {.Major: 1, .Minor: 0}},
129 {.Name: "ztso", .Version: {.Major: 1, .Minor: 0}},
130 {.Name: "zvbb", .Version: {.Major: 1, .Minor: 0}},
131 {.Name: "zvbc", .Version: {.Major: 1, .Minor: 0}},
132 {.Name: "zve32f", .Version: {.Major: 1, .Minor: 0}},
133 {.Name: "zve32x", .Version: {.Major: 1, .Minor: 0}},
134 {.Name: "zve64d", .Version: {.Major: 1, .Minor: 0}},
135 {.Name: "zve64f", .Version: {.Major: 1, .Minor: 0}},
136 {.Name: "zve64x", .Version: {.Major: 1, .Minor: 0}},
137 {.Name: "zvfbfmin", .Version: {.Major: 1, .Minor: 0}},
138 {.Name: "zvfbfwma", .Version: {.Major: 1, .Minor: 0}},
139 {.Name: "zvfh", .Version: {.Major: 1, .Minor: 0}},
140 {.Name: "zvfhmin", .Version: {.Major: 1, .Minor: 0}},
141 {.Name: "zvkb", .Version: {.Major: 1, .Minor: 0}},
142 {.Name: "zvkg", .Version: {.Major: 1, .Minor: 0}},
143 {.Name: "zvkn", .Version: {.Major: 1, .Minor: 0}},
144 {.Name: "zvknc", .Version: {.Major: 1, .Minor: 0}},
145 {.Name: "zvkned", .Version: {.Major: 1, .Minor: 0}},
146 {.Name: "zvkng", .Version: {.Major: 1, .Minor: 0}},
147 {.Name: "zvknha", .Version: {.Major: 1, .Minor: 0}},
148 {.Name: "zvknhb", .Version: {.Major: 1, .Minor: 0}},
149 {.Name: "zvks", .Version: {.Major: 1, .Minor: 0}},
150 {.Name: "zvksc", .Version: {.Major: 1, .Minor: 0}},
151 {.Name: "zvksed", .Version: {.Major: 1, .Minor: 0}},
152 {.Name: "zvksg", .Version: {.Major: 1, .Minor: 0}},
153 {.Name: "zvksh", .Version: {.Major: 1, .Minor: 0}},
154 {.Name: "zvkt", .Version: {.Major: 1, .Minor: 0}},
155 {.Name: "zvl1024b", .Version: {.Major: 1, .Minor: 0}},
156 {.Name: "zvl128b", .Version: {.Major: 1, .Minor: 0}},
157 {.Name: "zvl16384b", .Version: {.Major: 1, .Minor: 0}},
158 {.Name: "zvl2048b", .Version: {.Major: 1, .Minor: 0}},
159 {.Name: "zvl256b", .Version: {.Major: 1, .Minor: 0}},
160 {.Name: "zvl32768b", .Version: {.Major: 1, .Minor: 0}},
161 {.Name: "zvl32b", .Version: {.Major: 1, .Minor: 0}},
162 {.Name: "zvl4096b", .Version: {.Major: 1, .Minor: 0}},
163 {.Name: "zvl512b", .Version: {.Major: 1, .Minor: 0}},
164 {.Name: "zvl64b", .Version: {.Major: 1, .Minor: 0}},
165 {.Name: "zvl65536b", .Version: {.Major: 1, .Minor: 0}},
166 {.Name: "zvl8192b", .Version: {.Major: 1, .Minor: 0}},
167};
168
169static const RISCVSupportedExtension SupportedExperimentalExtensions[] = {
170 {.Name: "smmpm", .Version: {.Major: 1, .Minor: 0}},
171 {.Name: "smnpm", .Version: {.Major: 1, .Minor: 0}},
172 {.Name: "ssnpm", .Version: {.Major: 1, .Minor: 0}},
173 {.Name: "sspm", .Version: {.Major: 1, .Minor: 0}},
174 {.Name: "ssqosid", .Version: {.Major: 1, .Minor: 0}},
175 {.Name: "supm", .Version: {.Major: 1, .Minor: 0}},
176 {.Name: "zacas", .Version: {.Major: 1, .Minor: 0}},
177 {.Name: "zalasr", .Version: {.Major: 0, .Minor: 1}},
178 {.Name: "zicfilp", .Version: {.Major: 1, .Minor: 0}},
179 {.Name: "zicfiss", .Version: {.Major: 1, .Minor: 0}},
180};
181
182#endif // GET_SUPPORTED_EXTENSIONS
183
184#ifdef GET_IMPLIED_EXTENSIONS
185#undef GET_IMPLIED_EXTENSIONS
186
187
188static constexpr ImpliedExtsEntry ImpliedExts[] = {
189 { {"b"}, "zba"},
190 { {"b"}, "zbb"},
191 { {"b"}, "zbs"},
192 { {"d"}, "f"},
193 { {"f"}, "zicsr"},
194 { {"m"}, "zmmul"},
195 { {"v"}, "zvl128b"},
196 { {"v"}, "zve64d"},
197 { {"xsfvcp"}, "zve32x"},
198 { {"xsfvfnrclipxfqf"}, "zve32f"},
199 { {"xsfvfwmaccqqq"}, "zvfbfmin"},
200 { {"xsfvqmaccdod"}, "zve32x"},
201 { {"xsfvqmaccqoq"}, "zve32x"},
202 { {"xtheadvdot"}, "v"},
203 { {"zcb"}, "zca"},
204 { {"zcd"}, "d"},
205 { {"zcd"}, "zca"},
206 { {"zce"}, "zcb"},
207 { {"zce"}, "zcmp"},
208 { {"zce"}, "zcmt"},
209 { {"zcf"}, "f"},
210 { {"zcf"}, "zca"},
211 { {"zcmop"}, "zca"},
212 { {"zcmp"}, "zca"},
213 { {"zcmt"}, "zca"},
214 { {"zcmt"}, "zicsr"},
215 { {"zdinx"}, "zfinx"},
216 { {"zfa"}, "f"},
217 { {"zfbfmin"}, "f"},
218 { {"zfh"}, "zfhmin"},
219 { {"zfhmin"}, "f"},
220 { {"zfinx"}, "zicsr"},
221 { {"zhinx"}, "zhinxmin"},
222 { {"zhinxmin"}, "zfinx"},
223 { {"zicfilp"}, "zicsr"},
224 { {"zicfiss"}, "zicsr"},
225 { {"zicfiss"}, "zimop"},
226 { {"zicntr"}, "zicsr"},
227 { {"zihpm"}, "zicsr"},
228 { {"zk"}, "zkn"},
229 { {"zk"}, "zkr"},
230 { {"zk"}, "zkt"},
231 { {"zkn"}, "zbkb"},
232 { {"zkn"}, "zbkc"},
233 { {"zkn"}, "zbkx"},
234 { {"zkn"}, "zkne"},
235 { {"zkn"}, "zknd"},
236 { {"zkn"}, "zknh"},
237 { {"zks"}, "zbkb"},
238 { {"zks"}, "zbkc"},
239 { {"zks"}, "zbkx"},
240 { {"zks"}, "zksed"},
241 { {"zks"}, "zksh"},
242 { {"zvbb"}, "zvkb"},
243 { {"zve32f"}, "zve32x"},
244 { {"zve32f"}, "f"},
245 { {"zve32x"}, "zicsr"},
246 { {"zve32x"}, "zvl32b"},
247 { {"zve64d"}, "zve64f"},
248 { {"zve64d"}, "d"},
249 { {"zve64f"}, "zve32f"},
250 { {"zve64f"}, "zve64x"},
251 { {"zve64x"}, "zve32x"},
252 { {"zve64x"}, "zvl64b"},
253 { {"zvfbfmin"}, "zve32f"},
254 { {"zvfbfwma"}, "zvfbfmin"},
255 { {"zvfbfwma"}, "zfbfmin"},
256 { {"zvfh"}, "zvfhmin"},
257 { {"zvfh"}, "zfhmin"},
258 { {"zvfhmin"}, "zve32f"},
259 { {"zvkn"}, "zvkned"},
260 { {"zvkn"}, "zvknhb"},
261 { {"zvkn"}, "zvkb"},
262 { {"zvkn"}, "zvkt"},
263 { {"zvknc"}, "zvkn"},
264 { {"zvknc"}, "zvbc"},
265 { {"zvkng"}, "zvkn"},
266 { {"zvkng"}, "zvkg"},
267 { {"zvknhb"}, "zve64x"},
268 { {"zvks"}, "zvksed"},
269 { {"zvks"}, "zvksh"},
270 { {"zvks"}, "zvkb"},
271 { {"zvks"}, "zvkt"},
272 { {"zvksc"}, "zvks"},
273 { {"zvksc"}, "zvbc"},
274 { {"zvksg"}, "zvks"},
275 { {"zvksg"}, "zvkg"},
276 { {"zvl1024b"}, "zvl512b"},
277 { {"zvl128b"}, "zvl64b"},
278 { {"zvl16384b"}, "zvl8192b"},
279 { {"zvl2048b"}, "zvl1024b"},
280 { {"zvl256b"}, "zvl128b"},
281 { {"zvl32768b"}, "zvl16384b"},
282 { {"zvl4096b"}, "zvl2048b"},
283 { {"zvl512b"}, "zvl256b"},
284 { {"zvl64b"}, "zvl32b"},
285 { {"zvl65536b"}, "zvl32768b"},
286 { {"zvl8192b"}, "zvl4096b"},
287};
288
289#endif // GET_IMPLIED_EXTENSIONS
290
291#ifdef GET_SUPPORTED_PROFILES
292#undef GET_SUPPORTED_PROFILES
293
294static constexpr RISCVProfile SupportedProfiles[] = {
295 {"rva20s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zifencei2p0_za128rs1p0_ssccptr1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0"},
296 {"rva20u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_za128rs1p0"},
297 {"rva22s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_ssccptr1p0_sscounterenw1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0_svinval1p0_svpbmt1p0"},
298 {"rva22u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0"},
299 {"rvi20u32","rv32i2p1"},
300 {"rvi20u64","rv64i2p1"},
301};
302
303static constexpr RISCVProfile SupportedExperimentalProfiles[] = {
304 {"rva23s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_h1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_zvbb1p0_zvfhmin1p0_zvkt1p0_shcounterenw1p0_shgatpa1p0_shtvala1p0_shvsatpa1p0_shvstvala1p0_shvstvecd1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_ssstateen1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"},
305 {"rva23u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_zvbb1p0_zvfhmin1p0_zvkt1p0"},
306 {"rvb23s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"},
307 {"rvb23u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0"},
308 {"rvm23u32","rv32i2p1_m2p0_zicbop1p0_zicond1p0_zihintntl1p0_zihintpause2p0_zimop1p0_zce1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0"},
309};
310
311#endif // GET_SUPPORTED_PROFILES
312
313#ifndef PROC
314#define PROC(ENUM, NAME, DEFAULT_MARCH, FAST_SCALAR_UNALIGN, FAST_VECTOR_UNALIGN)
315#endif
316
317PROC(GENERIC_RV32, {"generic-rv32"}, {"rv32i2p1"}, 0, 0)
318PROC(GENERIC_RV64, {"generic-rv64"}, {"rv64i2p1"}, 0, 0)
319PROC(ROCKET_RV32, {"rocket-rv32"}, {"rv32i2p1_zicsr2p0_zifencei2p0"}, 0, 0)
320PROC(ROCKET_RV64, {"rocket-rv64"}, {"rv64i2p1_zicsr2p0_zifencei2p0"}, 0, 0)
321PROC(SIFIVE_E20, {"sifive-e20"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
322PROC(SIFIVE_E21, {"sifive-e21"}, {"rv32i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
323PROC(SIFIVE_E24, {"sifive-e24"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0)
324PROC(SIFIVE_E31, {"sifive-e31"}, {"rv32i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
325PROC(SIFIVE_E34, {"sifive-e34"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0)
326PROC(SIFIVE_E76, {"sifive-e76"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0)
327PROC(SIFIVE_P450, {"sifive-p450"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zba1p0_zbb1p0_zbs1p0"}, 1, 1)
328PROC(SIFIVE_P670, {"sifive-p670"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zba1p0_zbb1p0_zbs1p0_zvbb1p0_zvknc1p0_zvkng1p0_zvksc1p0_zvksg1p0_zvl128b1p0"}, 1, 1)
329PROC(SIFIVE_S21, {"sifive-s21"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
330PROC(SIFIVE_S51, {"sifive-s51"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
331PROC(SIFIVE_S54, {"sifive-s54"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0)
332PROC(SIFIVE_S76, {"sifive-s76"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0_zihintpause2p0"}, 0, 0)
333PROC(SIFIVE_U54, {"sifive-u54"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0)
334PROC(SIFIVE_U74, {"sifive-u74"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0)
335PROC(SIFIVE_X280, {"sifive-x280"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zifencei2p0_zfh1p0_zba1p0_zbb1p0_zvfh1p0_zvl512b1p0"}, 0, 0)
336PROC(SPACEMIT_X60, {"spacemit-x60"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zifencei2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfh1p0_zfhmin1p0_zba1p0_zbb1p0_zbc1p0_zbkc1p0_zbs1p0_zkt1p0_zvfh1p0_zvkt1p0_zvl256b1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"}, 0, 0)
337PROC(SYNTACORE_SCR1_BASE, {"syntacore-scr1-base"}, {"rv32i2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
338PROC(SYNTACORE_SCR1_MAX, {"syntacore-scr1-max"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
339PROC(SYNTACORE_SCR3_RV32, {"syntacore-scr3-rv32"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
340PROC(SYNTACORE_SCR3_RV64, {"syntacore-scr3-rv64"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0)
341PROC(VENTANA_VEYRON_V1, {"veyron-v1"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicbop1p0_zicboz1p0_zicntr2p0_zicsr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_zba1p0_zbb1p0_zbc1p0_zbs1p0_xventanacondops1p0"}, 0, 0)
342PROC(XIANGSHAN_NANHU, {"xiangshan-nanhu"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicboz1p0_zicsr2p0_zifencei2p0_zba1p0_zbb1p0_zbc1p0_zbs1p0_zkn1p0_zksed1p0_zksh1p0_svinval1p0"}, 0, 0)
343
344#undef PROC
345
346#ifndef TUNE_PROC
347#define TUNE_PROC(ENUM, NAME)
348#endif
349
350TUNE_PROC(GENERIC, "generic")
351TUNE_PROC(ROCKET, "rocket")
352TUNE_PROC(SIFIVE_7, "sifive-7-series")
353
354#undef TUNE_PROC
355#ifdef GET_RISCVExtensionBitmaskTable_IMPL
356static const RISCVExtensionBitmask ExtensionBitmask[]={
357 {"a", 0, 0ULL},
358 {"c", 0, 2ULL},
359 {"d", 0, 3ULL},
360 {"f", 0, 5ULL},
361 {"i", 0, 8ULL},
362 {"m", 0, 12ULL},
363 {"v", 0, 21ULL},
364 {"zacas", 0, 26ULL},
365 {"zba", 0, 27ULL},
366 {"zbb", 0, 28ULL},
367 {"zbc", 0, 29ULL},
368 {"zbkb", 0, 30ULL},
369 {"zbkc", 0, 31ULL},
370 {"zbkx", 0, 32ULL},
371 {"zbs", 0, 33ULL},
372 {"zfa", 0, 34ULL},
373 {"zfh", 0, 35ULL},
374 {"zfhmin", 0, 36ULL},
375 {"zicboz", 0, 37ULL},
376 {"zicond", 0, 38ULL},
377 {"zihintntl", 0, 39ULL},
378 {"zihintpause", 0, 40ULL},
379 {"zknd", 0, 41ULL},
380 {"zkne", 0, 42ULL},
381 {"zknh", 0, 43ULL},
382 {"zksed", 0, 44ULL},
383 {"zksh", 0, 45ULL},
384 {"zkt", 0, 46ULL},
385 {"ztso", 0, 47ULL},
386 {"zvbb", 0, 48ULL},
387 {"zvbc", 0, 49ULL},
388 {"zvfh", 0, 50ULL},
389 {"zvfhmin", 0, 51ULL},
390 {"zvkb", 0, 52ULL},
391 {"zvkg", 0, 53ULL},
392 {"zvkned", 0, 54ULL},
393 {"zvknha", 0, 55ULL},
394 {"zvknhb", 0, 56ULL},
395 {"zvksed", 0, 57ULL},
396 {"zvksh", 0, 58ULL},
397 {"zvkt", 0, 59ULL},
398};
399#endif
400