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