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: "q", .Version: {.Major: 2, .Minor: 2}},
15 {.Name: "sdext", .Version: {.Major: 1, .Minor: 0}},
16 {.Name: "sdtrig", .Version: {.Major: 1, .Minor: 0}},
17 {.Name: "sha", .Version: {.Major: 1, .Minor: 0}},
18 {.Name: "shcounterenw", .Version: {.Major: 1, .Minor: 0}},
19 {.Name: "shgatpa", .Version: {.Major: 1, .Minor: 0}},
20 {.Name: "shlcofideleg", .Version: {.Major: 1, .Minor: 0}},
21 {.Name: "shtvala", .Version: {.Major: 1, .Minor: 0}},
22 {.Name: "shvsatpa", .Version: {.Major: 1, .Minor: 0}},
23 {.Name: "shvstvala", .Version: {.Major: 1, .Minor: 0}},
24 {.Name: "shvstvecd", .Version: {.Major: 1, .Minor: 0}},
25 {.Name: "smaia", .Version: {.Major: 1, .Minor: 0}},
26 {.Name: "smcdeleg", .Version: {.Major: 1, .Minor: 0}},
27 {.Name: "smcntrpmf", .Version: {.Major: 1, .Minor: 0}},
28 {.Name: "smcsrind", .Version: {.Major: 1, .Minor: 0}},
29 {.Name: "smctr", .Version: {.Major: 1, .Minor: 0}},
30 {.Name: "smdbltrp", .Version: {.Major: 1, .Minor: 0}},
31 {.Name: "smepmp", .Version: {.Major: 1, .Minor: 0}},
32 {.Name: "smmpm", .Version: {.Major: 1, .Minor: 0}},
33 {.Name: "smnpm", .Version: {.Major: 1, .Minor: 0}},
34 {.Name: "smpmpdeleg", .Version: {.Major: 1, .Minor: 0}},
35 {.Name: "smrnmi", .Version: {.Major: 1, .Minor: 0}},
36 {.Name: "smstateen", .Version: {.Major: 1, .Minor: 0}},
37 {.Name: "ssaia", .Version: {.Major: 1, .Minor: 0}},
38 {.Name: "ssccfg", .Version: {.Major: 1, .Minor: 0}},
39 {.Name: "ssccptr", .Version: {.Major: 1, .Minor: 0}},
40 {.Name: "sscofpmf", .Version: {.Major: 1, .Minor: 0}},
41 {.Name: "sscounterenw", .Version: {.Major: 1, .Minor: 0}},
42 {.Name: "sscsrind", .Version: {.Major: 1, .Minor: 0}},
43 {.Name: "ssctr", .Version: {.Major: 1, .Minor: 0}},
44 {.Name: "ssdbltrp", .Version: {.Major: 1, .Minor: 0}},
45 {.Name: "ssnpm", .Version: {.Major: 1, .Minor: 0}},
46 {.Name: "sspm", .Version: {.Major: 1, .Minor: 0}},
47 {.Name: "sspmp", .Version: {.Major: 1, .Minor: 0}},
48 {.Name: "sspmpen", .Version: {.Major: 1, .Minor: 0}},
49 {.Name: "ssqosid", .Version: {.Major: 1, .Minor: 0}},
50 {.Name: "ssstateen", .Version: {.Major: 1, .Minor: 0}},
51 {.Name: "ssstrict", .Version: {.Major: 1, .Minor: 0}},
52 {.Name: "sstc", .Version: {.Major: 1, .Minor: 0}},
53 {.Name: "sstvala", .Version: {.Major: 1, .Minor: 0}},
54 {.Name: "sstvecd", .Version: {.Major: 1, .Minor: 0}},
55 {.Name: "ssu64xl", .Version: {.Major: 1, .Minor: 0}},
56 {.Name: "supm", .Version: {.Major: 1, .Minor: 0}},
57 {.Name: "svade", .Version: {.Major: 1, .Minor: 0}},
58 {.Name: "svadu", .Version: {.Major: 1, .Minor: 0}},
59 {.Name: "svbare", .Version: {.Major: 1, .Minor: 0}},
60 {.Name: "svinval", .Version: {.Major: 1, .Minor: 0}},
61 {.Name: "svnapot", .Version: {.Major: 1, .Minor: 0}},
62 {.Name: "svpbmt", .Version: {.Major: 1, .Minor: 0}},
63 {.Name: "svrsw60t59b", .Version: {.Major: 1, .Minor: 0}},
64 {.Name: "svvptc", .Version: {.Major: 1, .Minor: 0}},
65 {.Name: "v", .Version: {.Major: 1, .Minor: 0}},
66 {.Name: "xaifet", .Version: {.Major: 1, .Minor: 0}},
67 {.Name: "xandesbfhcvt", .Version: {.Major: 5, .Minor: 0}},
68 {.Name: "xandesperf", .Version: {.Major: 5, .Minor: 0}},
69 {.Name: "xandesvbfhcvt", .Version: {.Major: 5, .Minor: 0}},
70 {.Name: "xandesvdot", .Version: {.Major: 5, .Minor: 0}},
71 {.Name: "xandesvpackfph", .Version: {.Major: 5, .Minor: 0}},
72 {.Name: "xandesvsinth", .Version: {.Major: 5, .Minor: 0}},
73 {.Name: "xandesvsintload", .Version: {.Major: 5, .Minor: 0}},
74 {.Name: "xcheriot", .Version: {.Major: 1, .Minor: 0}},
75 {.Name: "xcvalu", .Version: {.Major: 1, .Minor: 0}},
76 {.Name: "xcvbi", .Version: {.Major: 1, .Minor: 0}},
77 {.Name: "xcvbitmanip", .Version: {.Major: 1, .Minor: 0}},
78 {.Name: "xcvelw", .Version: {.Major: 1, .Minor: 0}},
79 {.Name: "xcvmac", .Version: {.Major: 1, .Minor: 0}},
80 {.Name: "xcvmem", .Version: {.Major: 1, .Minor: 0}},
81 {.Name: "xcvsimd", .Version: {.Major: 1, .Minor: 0}},
82 {.Name: "xmipscbop", .Version: {.Major: 1, .Minor: 0}},
83 {.Name: "xmipscmov", .Version: {.Major: 1, .Minor: 0}},
84 {.Name: "xmipsexectl", .Version: {.Major: 1, .Minor: 0}},
85 {.Name: "xmipslsp", .Version: {.Major: 1, .Minor: 0}},
86 {.Name: "xqccmp", .Version: {.Major: 0, .Minor: 3}},
87 {.Name: "xqci", .Version: {.Major: 0, .Minor: 13}},
88 {.Name: "xqcia", .Version: {.Major: 0, .Minor: 7}},
89 {.Name: "xqciac", .Version: {.Major: 0, .Minor: 3}},
90 {.Name: "xqcibi", .Version: {.Major: 0, .Minor: 2}},
91 {.Name: "xqcibm", .Version: {.Major: 0, .Minor: 8}},
92 {.Name: "xqcicli", .Version: {.Major: 0, .Minor: 3}},
93 {.Name: "xqcicm", .Version: {.Major: 0, .Minor: 2}},
94 {.Name: "xqcics", .Version: {.Major: 0, .Minor: 2}},
95 {.Name: "xqcicsr", .Version: {.Major: 0, .Minor: 4}},
96 {.Name: "xqciint", .Version: {.Major: 0, .Minor: 10}},
97 {.Name: "xqciio", .Version: {.Major: 0, .Minor: 1}},
98 {.Name: "xqcilb", .Version: {.Major: 0, .Minor: 2}},
99 {.Name: "xqcili", .Version: {.Major: 0, .Minor: 2}},
100 {.Name: "xqcilia", .Version: {.Major: 0, .Minor: 2}},
101 {.Name: "xqcilo", .Version: {.Major: 0, .Minor: 3}},
102 {.Name: "xqcilsm", .Version: {.Major: 0, .Minor: 6}},
103 {.Name: "xqcisim", .Version: {.Major: 0, .Minor: 2}},
104 {.Name: "xqcisls", .Version: {.Major: 0, .Minor: 2}},
105 {.Name: "xqcisync", .Version: {.Major: 0, .Minor: 3}},
106 {.Name: "xsfcease", .Version: {.Major: 1, .Minor: 0}},
107 {.Name: "xsfmm128t", .Version: {.Major: 0, .Minor: 6}},
108 {.Name: "xsfmm16t", .Version: {.Major: 0, .Minor: 6}},
109 {.Name: "xsfmm32a", .Version: {.Major: 0, .Minor: 6}},
110 {.Name: "xsfmm32a16f", .Version: {.Major: 0, .Minor: 6}},
111 {.Name: "xsfmm32a32f", .Version: {.Major: 0, .Minor: 6}},
112 {.Name: "xsfmm32a8f", .Version: {.Major: 0, .Minor: 6}},
113 {.Name: "xsfmm32a8i", .Version: {.Major: 0, .Minor: 6}},
114 {.Name: "xsfmm32t", .Version: {.Major: 0, .Minor: 6}},
115 {.Name: "xsfmm64a64f", .Version: {.Major: 0, .Minor: 6}},
116 {.Name: "xsfmm64t", .Version: {.Major: 0, .Minor: 6}},
117 {.Name: "xsfmmbase", .Version: {.Major: 0, .Minor: 6}},
118 {.Name: "xsfvcp", .Version: {.Major: 1, .Minor: 0}},
119 {.Name: "xsfvfbfexp16e", .Version: {.Major: 0, .Minor: 5}},
120 {.Name: "xsfvfexp16e", .Version: {.Major: 0, .Minor: 5}},
121 {.Name: "xsfvfexp32e", .Version: {.Major: 0, .Minor: 5}},
122 {.Name: "xsfvfexpa", .Version: {.Major: 0, .Minor: 2}},
123 {.Name: "xsfvfexpa64e", .Version: {.Major: 0, .Minor: 2}},
124 {.Name: "xsfvfnrclipxfqf", .Version: {.Major: 1, .Minor: 0}},
125 {.Name: "xsfvfwmaccqqq", .Version: {.Major: 1, .Minor: 0}},
126 {.Name: "xsfvqmaccdod", .Version: {.Major: 1, .Minor: 0}},
127 {.Name: "xsfvqmaccqoq", .Version: {.Major: 1, .Minor: 0}},
128 {.Name: "xsifivecdiscarddlone", .Version: {.Major: 1, .Minor: 0}},
129 {.Name: "xsifivecflushdlone", .Version: {.Major: 1, .Minor: 0}},
130 {.Name: "xsmtvdot", .Version: {.Major: 1, .Minor: 0}},
131 {.Name: "xsmtvdotii", .Version: {.Major: 1, .Minor: 0}},
132 {.Name: "xtheadba", .Version: {.Major: 1, .Minor: 0}},
133 {.Name: "xtheadbb", .Version: {.Major: 1, .Minor: 0}},
134 {.Name: "xtheadbs", .Version: {.Major: 1, .Minor: 0}},
135 {.Name: "xtheadcmo", .Version: {.Major: 1, .Minor: 0}},
136 {.Name: "xtheadcondmov", .Version: {.Major: 1, .Minor: 0}},
137 {.Name: "xtheadfmemidx", .Version: {.Major: 1, .Minor: 0}},
138 {.Name: "xtheadmac", .Version: {.Major: 1, .Minor: 0}},
139 {.Name: "xtheadmemidx", .Version: {.Major: 1, .Minor: 0}},
140 {.Name: "xtheadmempair", .Version: {.Major: 1, .Minor: 0}},
141 {.Name: "xtheadsync", .Version: {.Major: 1, .Minor: 0}},
142 {.Name: "xtheadvdot", .Version: {.Major: 1, .Minor: 0}},
143 {.Name: "xwchc", .Version: {.Major: 2, .Minor: 2}},
144 {.Name: "za128rs", .Version: {.Major: 1, .Minor: 0}},
145 {.Name: "za64rs", .Version: {.Major: 1, .Minor: 0}},
146 {.Name: "zaamo", .Version: {.Major: 1, .Minor: 0}},
147 {.Name: "zabha", .Version: {.Major: 1, .Minor: 0}},
148 {.Name: "zacas", .Version: {.Major: 1, .Minor: 0}},
149 {.Name: "zalasr", .Version: {.Major: 1, .Minor: 0}},
150 {.Name: "zalrsc", .Version: {.Major: 1, .Minor: 0}},
151 {.Name: "zama16b", .Version: {.Major: 1, .Minor: 0}},
152 {.Name: "zawrs", .Version: {.Major: 1, .Minor: 0}},
153 {.Name: "zba", .Version: {.Major: 1, .Minor: 0}},
154 {.Name: "zbb", .Version: {.Major: 1, .Minor: 0}},
155 {.Name: "zbc", .Version: {.Major: 1, .Minor: 0}},
156 {.Name: "zbkb", .Version: {.Major: 1, .Minor: 0}},
157 {.Name: "zbkc", .Version: {.Major: 1, .Minor: 0}},
158 {.Name: "zbkx", .Version: {.Major: 1, .Minor: 0}},
159 {.Name: "zbs", .Version: {.Major: 1, .Minor: 0}},
160 {.Name: "zca", .Version: {.Major: 1, .Minor: 0}},
161 {.Name: "zcb", .Version: {.Major: 1, .Minor: 0}},
162 {.Name: "zcd", .Version: {.Major: 1, .Minor: 0}},
163 {.Name: "zce", .Version: {.Major: 1, .Minor: 0}},
164 {.Name: "zcf", .Version: {.Major: 1, .Minor: 0}},
165 {.Name: "zclsd", .Version: {.Major: 1, .Minor: 0}},
166 {.Name: "zcmop", .Version: {.Major: 1, .Minor: 0}},
167 {.Name: "zcmp", .Version: {.Major: 1, .Minor: 0}},
168 {.Name: "zcmt", .Version: {.Major: 1, .Minor: 0}},
169 {.Name: "zdinx", .Version: {.Major: 1, .Minor: 0}},
170 {.Name: "zfa", .Version: {.Major: 1, .Minor: 0}},
171 {.Name: "zfbfmin", .Version: {.Major: 1, .Minor: 0}},
172 {.Name: "zfh", .Version: {.Major: 1, .Minor: 0}},
173 {.Name: "zfhmin", .Version: {.Major: 1, .Minor: 0}},
174 {.Name: "zfinx", .Version: {.Major: 1, .Minor: 0}},
175 {.Name: "zhinx", .Version: {.Major: 1, .Minor: 0}},
176 {.Name: "zhinxmin", .Version: {.Major: 1, .Minor: 0}},
177 {.Name: "zic64b", .Version: {.Major: 1, .Minor: 0}},
178 {.Name: "zicbom", .Version: {.Major: 1, .Minor: 0}},
179 {.Name: "zicbop", .Version: {.Major: 1, .Minor: 0}},
180 {.Name: "zicboz", .Version: {.Major: 1, .Minor: 0}},
181 {.Name: "ziccamoa", .Version: {.Major: 1, .Minor: 0}},
182 {.Name: "ziccamoc", .Version: {.Major: 1, .Minor: 0}},
183 {.Name: "ziccid", .Version: {.Major: 1, .Minor: 0}},
184 {.Name: "ziccif", .Version: {.Major: 1, .Minor: 0}},
185 {.Name: "zicclsm", .Version: {.Major: 1, .Minor: 0}},
186 {.Name: "ziccrse", .Version: {.Major: 1, .Minor: 0}},
187 {.Name: "zicfiss", .Version: {.Major: 1, .Minor: 0}},
188 {.Name: "zicntr", .Version: {.Major: 2, .Minor: 0}},
189 {.Name: "zicond", .Version: {.Major: 1, .Minor: 0}},
190 {.Name: "zicsr", .Version: {.Major: 2, .Minor: 0}},
191 {.Name: "zifencei", .Version: {.Major: 2, .Minor: 0}},
192 {.Name: "zihintntl", .Version: {.Major: 1, .Minor: 0}},
193 {.Name: "zihintpause", .Version: {.Major: 2, .Minor: 0}},
194 {.Name: "zihpm", .Version: {.Major: 2, .Minor: 0}},
195 {.Name: "zilsd", .Version: {.Major: 1, .Minor: 0}},
196 {.Name: "zimop", .Version: {.Major: 1, .Minor: 0}},
197 {.Name: "zk", .Version: {.Major: 1, .Minor: 0}},
198 {.Name: "zkn", .Version: {.Major: 1, .Minor: 0}},
199 {.Name: "zknd", .Version: {.Major: 1, .Minor: 0}},
200 {.Name: "zkne", .Version: {.Major: 1, .Minor: 0}},
201 {.Name: "zknh", .Version: {.Major: 1, .Minor: 0}},
202 {.Name: "zkr", .Version: {.Major: 1, .Minor: 0}},
203 {.Name: "zks", .Version: {.Major: 1, .Minor: 0}},
204 {.Name: "zksed", .Version: {.Major: 1, .Minor: 0}},
205 {.Name: "zksh", .Version: {.Major: 1, .Minor: 0}},
206 {.Name: "zkt", .Version: {.Major: 1, .Minor: 0}},
207 {.Name: "zmmul", .Version: {.Major: 1, .Minor: 0}},
208 {.Name: "ztso", .Version: {.Major: 1, .Minor: 0}},
209 {.Name: "zvbb", .Version: {.Major: 1, .Minor: 0}},
210 {.Name: "zvbc", .Version: {.Major: 1, .Minor: 0}},
211 {.Name: "zve32f", .Version: {.Major: 1, .Minor: 0}},
212 {.Name: "zve32x", .Version: {.Major: 1, .Minor: 0}},
213 {.Name: "zve64d", .Version: {.Major: 1, .Minor: 0}},
214 {.Name: "zve64f", .Version: {.Major: 1, .Minor: 0}},
215 {.Name: "zve64x", .Version: {.Major: 1, .Minor: 0}},
216 {.Name: "zvfbfmin", .Version: {.Major: 1, .Minor: 0}},
217 {.Name: "zvfbfwma", .Version: {.Major: 1, .Minor: 0}},
218 {.Name: "zvfh", .Version: {.Major: 1, .Minor: 0}},
219 {.Name: "zvfhmin", .Version: {.Major: 1, .Minor: 0}},
220 {.Name: "zvkb", .Version: {.Major: 1, .Minor: 0}},
221 {.Name: "zvkg", .Version: {.Major: 1, .Minor: 0}},
222 {.Name: "zvkn", .Version: {.Major: 1, .Minor: 0}},
223 {.Name: "zvknc", .Version: {.Major: 1, .Minor: 0}},
224 {.Name: "zvkned", .Version: {.Major: 1, .Minor: 0}},
225 {.Name: "zvkng", .Version: {.Major: 1, .Minor: 0}},
226 {.Name: "zvknha", .Version: {.Major: 1, .Minor: 0}},
227 {.Name: "zvknhb", .Version: {.Major: 1, .Minor: 0}},
228 {.Name: "zvks", .Version: {.Major: 1, .Minor: 0}},
229 {.Name: "zvksc", .Version: {.Major: 1, .Minor: 0}},
230 {.Name: "zvksed", .Version: {.Major: 1, .Minor: 0}},
231 {.Name: "zvksg", .Version: {.Major: 1, .Minor: 0}},
232 {.Name: "zvksh", .Version: {.Major: 1, .Minor: 0}},
233 {.Name: "zvkt", .Version: {.Major: 1, .Minor: 0}},
234 {.Name: "zvl1024b", .Version: {.Major: 1, .Minor: 0}},
235 {.Name: "zvl128b", .Version: {.Major: 1, .Minor: 0}},
236 {.Name: "zvl16384b", .Version: {.Major: 1, .Minor: 0}},
237 {.Name: "zvl2048b", .Version: {.Major: 1, .Minor: 0}},
238 {.Name: "zvl256b", .Version: {.Major: 1, .Minor: 0}},
239 {.Name: "zvl32768b", .Version: {.Major: 1, .Minor: 0}},
240 {.Name: "zvl32b", .Version: {.Major: 1, .Minor: 0}},
241 {.Name: "zvl4096b", .Version: {.Major: 1, .Minor: 0}},
242 {.Name: "zvl512b", .Version: {.Major: 1, .Minor: 0}},
243 {.Name: "zvl64b", .Version: {.Major: 1, .Minor: 0}},
244 {.Name: "zvl65536b", .Version: {.Major: 1, .Minor: 0}},
245 {.Name: "zvl8192b", .Version: {.Major: 1, .Minor: 0}},
246};
247static const RISCVSupportedExtension SupportedExperimentalExtensions[] = {
248 {.Name: "p", .Version: {.Major: 0, .Minor: 21}},
249 {.Name: "smcsps", .Version: {.Major: 0, .Minor: 20}},
250 {.Name: "smehv", .Version: {.Major: 0, .Minor: 20}},
251 {.Name: "smidctrl", .Version: {.Major: 0, .Minor: 20}},
252 {.Name: "smijt", .Version: {.Major: 0, .Minor: 20}},
253 {.Name: "smip", .Version: {.Major: 0, .Minor: 20}},
254 {.Name: "smnip", .Version: {.Major: 0, .Minor: 20}},
255 {.Name: "smpmpmt", .Version: {.Major: 0, .Minor: 6}},
256 {.Name: "sscsps", .Version: {.Major: 0, .Minor: 20}},
257 {.Name: "ssehv", .Version: {.Major: 0, .Minor: 20}},
258 {.Name: "ssidctrl", .Version: {.Major: 0, .Minor: 20}},
259 {.Name: "ssijt", .Version: {.Major: 0, .Minor: 20}},
260 {.Name: "ssip", .Version: {.Major: 0, .Minor: 20}},
261 {.Name: "ssnip", .Version: {.Major: 0, .Minor: 20}},
262 {.Name: "svukte", .Version: {.Major: 1, .Minor: 0}},
263 {.Name: "xqccmt", .Version: {.Major: 0, .Minor: 1}},
264 {.Name: "xsfmclic", .Version: {.Major: 0, .Minor: 1}},
265 {.Name: "xsfsclic", .Version: {.Major: 0, .Minor: 1}},
266 {.Name: "y", .Version: {.Major: 0, .Minor: 98}},
267 {.Name: "zibi", .Version: {.Major: 0, .Minor: 1}},
268 {.Name: "zicfilp", .Version: {.Major: 1, .Minor: 0}},
269 {.Name: "zilx", .Version: {.Major: 0, .Minor: 1}},
270 {.Name: "zvabd", .Version: {.Major: 0, .Minor: 9}},
271 {.Name: "zvbc32e", .Version: {.Major: 0, .Minor: 7}},
272 {.Name: "zvdot4a8i", .Version: {.Major: 0, .Minor: 1}},
273 {.Name: "zvfbdota32f", .Version: {.Major: 0, .Minor: 2}},
274 {.Name: "zvfbfa", .Version: {.Major: 0, .Minor: 1}},
275 {.Name: "zvfofp8min", .Version: {.Major: 0, .Minor: 2}},
276 {.Name: "zvfqwbdota8f", .Version: {.Major: 0, .Minor: 2}},
277 {.Name: "zvfqwdota8f", .Version: {.Major: 0, .Minor: 2}},
278 {.Name: "zvfwbdota16bf", .Version: {.Major: 0, .Minor: 2}},
279 {.Name: "zvfwdota16bf", .Version: {.Major: 0, .Minor: 2}},
280 {.Name: "zvkgs", .Version: {.Major: 0, .Minor: 7}},
281 {.Name: "zvqwbdota16i", .Version: {.Major: 0, .Minor: 2}},
282 {.Name: "zvqwbdota8i", .Version: {.Major: 0, .Minor: 2}},
283 {.Name: "zvqwdota16i", .Version: {.Major: 0, .Minor: 2}},
284 {.Name: "zvqwdota8i", .Version: {.Major: 0, .Minor: 2}},
285 {.Name: "zvvfmm", .Version: {.Major: 0, .Minor: 1}},
286 {.Name: "zvvmm", .Version: {.Major: 0, .Minor: 1}},
287 {.Name: "zvvmtls", .Version: {.Major: 0, .Minor: 1}},
288 {.Name: "zvvmttls", .Version: {.Major: 0, .Minor: 1}},
289 {.Name: "zvzip", .Version: {.Major: 0, .Minor: 3}},
290};
291
292#endif // GET_SUPPORTED_EXTENSIONS
293
294#ifdef GET_IMPLIED_EXTENSIONS
295#undef GET_IMPLIED_EXTENSIONS
296
297
298static constexpr ImpliedExtsEntry ImpliedExts[] = {
299 { {"a"}, "zaamo"},
300 { {"a"}, "zalrsc"},
301 { {"b"}, "zba"},
302 { {"b"}, "zbb"},
303 { {"b"}, "zbs"},
304 { {"c"}, "zca"},
305 { {"d"}, "f"},
306 { {"f"}, "zicsr"},
307 { {"m"}, "zmmul"},
308 { {"p"}, "zba"},
309 { {"p"}, "zbb"},
310 { {"p"}, "zicsr"},
311 { {"p"}, "zmmul"},
312 { {"q"}, "d"},
313 { {"sha"}, "h"},
314 { {"sha"}, "shcounterenw"},
315 { {"sha"}, "shgatpa"},
316 { {"sha"}, "shtvala"},
317 { {"sha"}, "shvsatpa"},
318 { {"sha"}, "shvstvala"},
319 { {"sha"}, "shvstvecd"},
320 { {"sha"}, "ssstateen"},
321 { {"smctr"}, "sscsrind"},
322 { {"smdbltrp"}, "zicsr"},
323 { {"smehv"}, "smijt"},
324 { {"smidctrl"}, "smaia"},
325 { {"smidctrl"}, "smcsrind"},
326 { {"smnip"}, "smidctrl"},
327 { {"smpmpdeleg"}, "smcsrind"},
328 { {"smpmpdeleg"}, "sspmp"},
329 { {"sscsps"}, "smcsps"},
330 { {"ssctr"}, "sscsrind"},
331 { {"ssdbltrp"}, "zicsr"},
332 { {"ssehv"}, "ssijt"},
333 { {"ssidctrl"}, "ssaia"},
334 { {"ssidctrl"}, "sscsrind"},
335 { {"ssnip"}, "ssidctrl"},
336 { {"sspmp"}, "sscsrind"},
337 { {"sspmpen"}, "sspmp"},
338 { {"v"}, "zve64d"},
339 { {"v"}, "zvl128b"},
340 { {"xaifet"}, "f"},
341 { {"xandesbfhcvt"}, "f"},
342 { {"xandesvbfhcvt"}, "zve32f"},
343 { {"xandesvdot"}, "zve32x"},
344 { {"xandesvpackfph"}, "f"},
345 { {"xandesvsinth"}, "zve32x"},
346 { {"xandesvsintload"}, "zve32x"},
347 { {"xcheriot"}, "e"},
348 { {"xcheriot"}, "m"},
349 { {"xcheriot"}, "zca"},
350 { {"xqccmp"}, "zca"},
351 { {"xqccmt"}, "zca"},
352 { {"xqccmt"}, "zicsr"},
353 { {"xqci"}, "xqcia"},
354 { {"xqci"}, "xqciac"},
355 { {"xqci"}, "xqcibi"},
356 { {"xqci"}, "xqcibm"},
357 { {"xqci"}, "xqcicli"},
358 { {"xqci"}, "xqcicm"},
359 { {"xqci"}, "xqcics"},
360 { {"xqci"}, "xqcicsr"},
361 { {"xqci"}, "xqciint"},
362 { {"xqci"}, "xqciio"},
363 { {"xqci"}, "xqcilb"},
364 { {"xqci"}, "xqcili"},
365 { {"xqci"}, "xqcilia"},
366 { {"xqci"}, "xqcilo"},
367 { {"xqci"}, "xqcilsm"},
368 { {"xqci"}, "xqcisim"},
369 { {"xqci"}, "xqcisls"},
370 { {"xqci"}, "xqcisync"},
371 { {"xqciac"}, "zca"},
372 { {"xqcibi"}, "zca"},
373 { {"xqcibm"}, "zca"},
374 { {"xqcicm"}, "zca"},
375 { {"xqciint"}, "zca"},
376 { {"xqcilb"}, "zca"},
377 { {"xqcili"}, "zca"},
378 { {"xqcilia"}, "zca"},
379 { {"xqcilo"}, "zca"},
380 { {"xqcisim"}, "zca"},
381 { {"xqcisync"}, "zca"},
382 { {"xsfmm128t"}, "xsfmmbase"},
383 { {"xsfmm128t"}, "zvl512b"},
384 { {"xsfmm16t"}, "xsfmmbase"},
385 { {"xsfmm16t"}, "zvl64b"},
386 { {"xsfmm32a"}, "xsfmm32a16f"},
387 { {"xsfmm32a"}, "xsfmm32a32f"},
388 { {"xsfmm32a"}, "xsfmm32a8i"},
389 { {"xsfmm32a16f"}, "xsfmmbase"},
390 { {"xsfmm32a16f"}, "zve32f"},
391 { {"xsfmm32a32f"}, "xsfmmbase"},
392 { {"xsfmm32a32f"}, "zve32f"},
393 { {"xsfmm32a8f"}, "xsfmmbase"},
394 { {"xsfmm32a8f"}, "zve32f"},
395 { {"xsfmm32a8i"}, "xsfmmbase"},
396 { {"xsfmm32t"}, "xsfmmbase"},
397 { {"xsfmm32t"}, "zvl128b"},
398 { {"xsfmm64a64f"}, "xsfmmbase"},
399 { {"xsfmm64a64f"}, "zve64d"},
400 { {"xsfmm64t"}, "xsfmmbase"},
401 { {"xsfmm64t"}, "zvl256b"},
402 { {"xsfmmbase"}, "zve32x"},
403 { {"xsfvcp"}, "zve32x"},
404 { {"xsfvfexp16e"}, "zvfh"},
405 { {"xsfvfexp32e"}, "zve32f"},
406 { {"xsfvfexpa"}, "zve32f"},
407 { {"xsfvfexpa64e"}, "xsfvfexpa"},
408 { {"xsfvfexpa64e"}, "zve64d"},
409 { {"xsfvfnrclipxfqf"}, "zve32f"},
410 { {"xsfvfwmaccqqq"}, "zvfbfmin"},
411 { {"xsfvfwmaccqqq"}, "zvl128b"},
412 { {"xsfvqmaccdod"}, "zve32x"},
413 { {"xsfvqmaccdod"}, "zvl128b"},
414 { {"xsfvqmaccqoq"}, "zve32x"},
415 { {"xsfvqmaccqoq"}, "zvl256b"},
416 { {"xsmtvdot"}, "zve32f"},
417 { {"xsmtvdotii"}, "zve32f"},
418 { {"xtheadvdot"}, "v"},
419 { {"xwchc"}, "zca"},
420 { {"zabha"}, "zaamo"},
421 { {"zacas"}, "zaamo"},
422 { {"zbc"}, "zbkc"},
423 { {"zcb"}, "zca"},
424 { {"zcd"}, "d"},
425 { {"zcd"}, "zca"},
426 { {"zce"}, "zca"},
427 { {"zce"}, "zcb"},
428 { {"zce"}, "zcmp"},
429 { {"zce"}, "zcmt"},
430 { {"zcf"}, "f"},
431 { {"zcf"}, "zca"},
432 { {"zclsd"}, "zca"},
433 { {"zclsd"}, "zilsd"},
434 { {"zcmop"}, "zca"},
435 { {"zcmp"}, "zca"},
436 { {"zcmt"}, "zca"},
437 { {"zcmt"}, "zicsr"},
438 { {"zdinx"}, "zfinx"},
439 { {"zfa"}, "f"},
440 { {"zfbfmin"}, "f"},
441 { {"zfh"}, "zfhmin"},
442 { {"zfhmin"}, "f"},
443 { {"zfinx"}, "zicsr"},
444 { {"zhinx"}, "zhinxmin"},
445 { {"zhinxmin"}, "zfinx"},
446 { {"ziccid"}, "ziccif"},
447 { {"zicfilp"}, "zicsr"},
448 { {"zicfiss"}, "zicsr"},
449 { {"zicfiss"}, "zimop"},
450 { {"zicntr"}, "zicsr"},
451 { {"zihpm"}, "zicsr"},
452 { {"zk"}, "zkn"},
453 { {"zk"}, "zkr"},
454 { {"zk"}, "zkt"},
455 { {"zkn"}, "zbkb"},
456 { {"zkn"}, "zbkc"},
457 { {"zkn"}, "zbkx"},
458 { {"zkn"}, "zknd"},
459 { {"zkn"}, "zkne"},
460 { {"zkn"}, "zknh"},
461 { {"zks"}, "zbkb"},
462 { {"zks"}, "zbkc"},
463 { {"zks"}, "zbkx"},
464 { {"zks"}, "zksed"},
465 { {"zks"}, "zksh"},
466 { {"zvabd"}, "zve32x"},
467 { {"zvbb"}, "zvkb"},
468 { {"zvbc"}, "zve64x"},
469 { {"zvbc32e"}, "zve32x"},
470 { {"zvdot4a8i"}, "zve32x"},
471 { {"zve32f"}, "f"},
472 { {"zve32f"}, "zve32x"},
473 { {"zve32x"}, "zicsr"},
474 { {"zve32x"}, "zvl32b"},
475 { {"zve64d"}, "d"},
476 { {"zve64d"}, "zve64f"},
477 { {"zve64f"}, "zve32f"},
478 { {"zve64f"}, "zve64x"},
479 { {"zve64x"}, "zve32x"},
480 { {"zve64x"}, "zvl64b"},
481 { {"zvfbdota32f"}, "zve32f"},
482 { {"zvfbfa"}, "zfbfmin"},
483 { {"zvfbfa"}, "zve32f"},
484 { {"zvfbfmin"}, "zve32f"},
485 { {"zvfbfwma"}, "zfbfmin"},
486 { {"zvfbfwma"}, "zvfbfmin"},
487 { {"zvfh"}, "zfhmin"},
488 { {"zvfh"}, "zvfhmin"},
489 { {"zvfhmin"}, "zve32f"},
490 { {"zvfofp8min"}, "zve32f"},
491 { {"zvfqwbdota8f"}, "zve32f"},
492 { {"zvfqwdota8f"}, "zve32f"},
493 { {"zvfwbdota16bf"}, "zve32f"},
494 { {"zvfwdota16bf"}, "zve32f"},
495 { {"zvkb"}, "zve32x"},
496 { {"zvkg"}, "zve32x"},
497 { {"zvkgs"}, "zvkg"},
498 { {"zvkn"}, "zvkb"},
499 { {"zvkn"}, "zvkned"},
500 { {"zvkn"}, "zvknhb"},
501 { {"zvkn"}, "zvkt"},
502 { {"zvknc"}, "zvbc"},
503 { {"zvknc"}, "zvkn"},
504 { {"zvkned"}, "zve32x"},
505 { {"zvkng"}, "zvkg"},
506 { {"zvkng"}, "zvkn"},
507 { {"zvknha"}, "zve32x"},
508 { {"zvknhb"}, "zve64x"},
509 { {"zvknhb"}, "zvknha"},
510 { {"zvks"}, "zvkb"},
511 { {"zvks"}, "zvksed"},
512 { {"zvks"}, "zvksh"},
513 { {"zvks"}, "zvkt"},
514 { {"zvksc"}, "zvbc"},
515 { {"zvksc"}, "zvks"},
516 { {"zvksed"}, "zve32x"},
517 { {"zvksg"}, "zvkg"},
518 { {"zvksg"}, "zvks"},
519 { {"zvksh"}, "zve32x"},
520 { {"zvl1024b"}, "zvl512b"},
521 { {"zvl128b"}, "zvl64b"},
522 { {"zvl16384b"}, "zvl8192b"},
523 { {"zvl2048b"}, "zvl1024b"},
524 { {"zvl256b"}, "zvl128b"},
525 { {"zvl32768b"}, "zvl16384b"},
526 { {"zvl4096b"}, "zvl2048b"},
527 { {"zvl512b"}, "zvl256b"},
528 { {"zvl64b"}, "zvl32b"},
529 { {"zvl65536b"}, "zvl32768b"},
530 { {"zvl8192b"}, "zvl4096b"},
531 { {"zvqwbdota16i"}, "zve64x"},
532 { {"zvqwbdota8i"}, "zve32x"},
533 { {"zvqwdota16i"}, "zve64x"},
534 { {"zvqwdota8i"}, "zve32x"},
535 { {"zvvfmm"}, "zve32f"},
536 { {"zvvmm"}, "zve32x"},
537 { {"zvvmtls"}, "zve32x"},
538 { {"zvvmttls"}, "zve32x"},
539 { {"zvzip"}, "zve32x"},
540};
541
542#endif // GET_IMPLIED_EXTENSIONS
543
544#ifdef GET_SUPPORTED_PROFILES
545#undef GET_SUPPORTED_PROFILES
546
547static constexpr RISCVProfile SupportedProfiles[] = {
548 {"rva20s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zifencei2p0_za128rs1p0_ssccptr1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0"},
549 {"rva20u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_za128rs1p0"},
550 {"rva22s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0_ssccptr1p0_sscounterenw1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0_svinval1p0_svpbmt1p0"},
551 {"rva22u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0"},
552 {"rva23s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkt1p0_zvbb1p0_zvfhmin1p0_zvkt1p0_sha1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"},
553 {"rva23u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkt1p0_zvbb1p0_zvfhmin1p0_zvkt1p0_supm1p0"},
554 {"rvb23s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zcb1p0_zcmop1p0_zkt1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"},
555 {"rvb23u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zcb1p0_zcmop1p0_zkt1p0"},
556 {"rvi20u32","rv32i2p1"},
557 {"rvi20u64","rv64i2p1"},
558};
559static constexpr RISCVProfile SupportedExperimentalProfiles[] = {
560 {"rva23p1s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkt1p0_zvbb1p0_zvfhmin1p0_zvkt1p0_sha1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"},
561 {"rvb23p1s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zcb1p0_zcmop1p0_zkt1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"},
562 {"rvm23u32","rv32i2p1_m2p0_b1p0_zicbop1p0_zicond1p0_zihintntl1p0_zihintpause2p0_zimop1p0_zce1p0_zcmop1p0"},
563};
564
565#endif // GET_SUPPORTED_PROFILES
566
567#ifndef PROC
568#define PROC(ENUM, NAME, DEFAULT_MARCH, FAST_SCALAR_UNALIGN, FAST_VECTOR_UNALIGN, MVENDORID, MARCHID, MIMPID)
569#endif
570
571PROC(AINEKKO_ERBIUM, {"an-erbium"}, {"rv64m2p0_f2p2_c2p0_xaifet1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
572PROC(ANDES_A25, {"andes-a25"}, {"rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
573PROC(ANDES_A45, {"andes-a45"}, {"rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
574PROC(ANDES_AX25, {"andes-ax25"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
575PROC(ANDES_AX45, {"andes-ax45"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
576PROC(ANDES_AX45MPV, {"andes-ax45mpv"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
577PROC(ANDES_N45, {"andes-n45"}, {"rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
578PROC(ANDES_NX45, {"andes-nx45"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
579PROC(ESPERANTO_SOC1, {"et-soc1"}, {"rv64m2p0_f2p2_c2p0_xaifet1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
580PROC(GENERIC_RV32, {"generic-rv32"}, {"rv32i2p1"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
581PROC(GENERIC_RV64, {"generic-rv64"}, {"rv64i2p1"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
582PROC(MIPS_P8700, {"mips-p8700"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zba1p0_zbb1p0_xmipscbop1p0_xmipscmov1p0_xmipsexectl1p0_xmipslsp1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
583PROC(ROCKET_RV32, {"rocket-rv32"}, {"rv32i2p1_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
584PROC(ROCKET_RV64, {"rocket-rv64"}, {"rv64i2p1_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
585PROC(RP2350_HAZARD3, {"rp2350-hazard3"}, {"rv32i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0_zcb1p0_zcmp1p0_zba1p0_zbb1p0_zbkb1p0_zbs1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
586PROC(SIFIVE_E20, {"sifive-e20"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
587PROC(SIFIVE_E21, {"sifive-e21"}, {"rv32i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
588PROC(SIFIVE_E24, {"sifive-e24"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
589PROC(SIFIVE_E31, {"sifive-e31"}, {"rv32i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
590PROC(SIFIVE_E34, {"sifive-e34"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
591PROC(SIFIVE_E76, {"sifive-e76"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
592PROC(SIFIVE_P450, {"sifive-p450"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
593PROC(SIFIVE_P470, {"sifive-p470"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0_zvbb1p0_zvknc1p0_zvkng1p0_zvksc1p0_zvksg1p0_zvl128b1p0_xsifivecdiscarddlone1p0_xsifivecflushdlone1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
594PROC(SIFIVE_P550, {"sifive-p550"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0_zba1p0_zbb1p0"}, 0, 0, 0x00000489, 0x8000000000000008, 0x0000000006220425)
595PROC(SIFIVE_P670, {"sifive-p670"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0_zvbb1p0_zvknc1p0_zvkng1p0_zvksc1p0_zvksg1p0_zvl128b1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
596PROC(SIFIVE_P870_D, {"sifive-p870-d"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zama16b1p0_zawrs1p0_zfa1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkr1p0_zkt1p0_zvbb1p0_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvfhmin1p0_zvknc1p0_zvkng1p0_zvksc1p0_zvksg1p0_zvkt1p0_zvl128b1p0_supm1p0"}, 1, 1, 0x00000489, 0x8000000000000109, 0x0000000014250606)
597PROC(SIFIVE_S21, {"sifive-s21"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
598PROC(SIFIVE_S51, {"sifive-s51"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
599PROC(SIFIVE_S54, {"sifive-s54"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
600PROC(SIFIVE_S76, {"sifive-s76"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0_zihintpause2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
601PROC(SIFIVE_U54, {"sifive-u54"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
602PROC(SIFIVE_U74, {"sifive-u74"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
603PROC(SIFIVE_X160, {"sifive-x160"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_b1p0_zicbom1p0_zicbop1p0_zicboz1p0_zicfilp1p0_zicond1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zcb1p0_zce1p0_zcf1p0_zcmop1p0_zcmp1p0_zcmt1p0_zkt1p0_zvbb1p0_zvdot4a8i0p1_zve32f1p0_zve32x1p0_zvfbfa0p1_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvkt1p0_zvl128b1p0_xsfcease1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
604PROC(SIFIVE_X180, {"sifive-x180"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_ziccrse1p0_zicfilp1p0_zicond1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zcb1p0_zcd1p0_zcmop1p0_zkt1p0_zvbb1p0_zvdot4a8i0p1_zvfbfa0p1_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvkb1p0_zvkt1p0_zvl128b1p0_xsfcease1p0_xsfvfbfexp16e0p5_xsfvfexp16e0p5_xsfvfexp32e0p5_xsfvfexpa0p2_xsifivecflushdlone1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
605PROC(SIFIVE_X280, {"sifive-x280"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zifencei2p0_zfh1p0_zba1p0_zbb1p0_zvfh1p0_zvl512b1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
606PROC(SIFIVE_X390, {"sifive-x390"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_ziccrse1p0_zicfilp1p0_zicfiss1p0_zicntr2p0_zicond1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfh1p0_zcb1p0_zcmop1p0_zkr1p0_zkt1p0_zvbb1p0_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvkt1p0_zvl1024b1p0_xsifivecdiscarddlone1p0_xsifivecflushdlone1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
607PROC(SPACEMIT_A100, {"spacemit-a100"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zbc1p0_zbkc1p0_zkt1p0_zvbb1p0_zvbc1p0_zvfbfwma1p0_zvfh1p0_zvfhmin1p0_zvkng1p0_zvknha1p0_zvksc1p0_zvksg1p0_zvkt1p0_zvl1024b1p0_smepmp1p0_smnpm1p0_smstateen1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_sspm1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xsmtvdotii1p0"}, 1, 0, 0x00000710, 0x8000000041000002, 0x10000000d5686200)
608PROC(SPACEMIT_X60, {"spacemit-x60"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfh1p0_zfhmin1p0_zbc1p0_zbkc1p0_zkt1p0_zvfh1p0_zvkt1p0_zvl256b1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xsmtvdot1p0"}, 1, 0, 0x00000710, 0x8000000058000001, 0x1000000049772200)
609PROC(SPACEMIT_X100, {"spacemit-x100"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zbc1p0_zbkc1p0_zkt1p0_zvbb1p0_zvbc1p0_zvfbfwma1p0_zvfh1p0_zvfhmin1p0_zvkng1p0_zvknha1p0_zvksc1p0_zvksg1p0_zvkt1p0_zvl256b1p0_sha1p0_smepmp1p0_smnpm1p0_smstateen1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_sspm1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xsmtvdot1p0"}, 1, 0, 0x00000710, 0x8000000058000002, 0x0000000033d8a600)
610PROC(SYNTACORE_SCR1_BASE, {"syntacore-scr1-base"}, {"rv32i2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
611PROC(SYNTACORE_SCR1_MAX, {"syntacore-scr1-max"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
612PROC(SYNTACORE_SCR3_RV32, {"syntacore-scr3-rv32"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
613PROC(SYNTACORE_SCR3_RV64, {"syntacore-scr3-rv64"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
614PROC(SYNTACORE_SCR4_RV32, {"syntacore-scr4-rv32"}, {"rv32i2p1_m2p0_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
615PROC(SYNTACORE_SCR4_RV64, {"syntacore-scr4-rv64"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
616PROC(SYNTACORE_SCR5_RV32, {"syntacore-scr5-rv32"}, {"rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
617PROC(SYNTACORE_SCR5_RV64, {"syntacore-scr5-rv64"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
618PROC(SYNTACORE_SCR7, {"syntacore-scr7"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zba1p0_zbb1p0_zbc1p0_zbs1p0_zkn1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
619PROC(TENSTORRENT_ASCALON_X, {"tt-ascalon-x"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkr1p0_zkt1p0_zvbb1p0_zvbc1p0_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvfhmin1p0_zvkng1p0_zvkt1p0_zvl256b1p0_sha1p0_smaia1p0_smmpm1p0_smnpm1p0_smrnmi1p0_smstateen1p0_ssaia1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_ssstrict1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
620PROC(XIANGSHAN_KUNMINGHU, {"xiangshan-kunminghu"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zacas1p0_zawrs1p0_zfa1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zbc1p0_zkn1p0_zks1p0_zkt1p0_zvbb1p0_zvfh1p0_zvfhmin1p0_zvkt1p0_zvl128b1p0_sha1p0_smaia1p0_smcsrind1p0_smdbltrp1p0_smmpm1p0_smnpm1p0_smrnmi1p0_smstateen1p0_ssaia1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sscsrind1p0_ssdbltrp1p0_ssnpm1p0_sspm1p0_ssstrict1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
621PROC(XIANGSHAN_NANHU, {"xiangshan-nanhu"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicboz1p0_zicsr2p0_zifencei2p0_zba1p0_zbb1p0_zbc1p0_zbs1p0_zkn1p0_zksed1p0_zksh1p0_svinval1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
622PROC(XUANTIE_C910V2, {"xt-c910v2"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zca1p0_zcb1p0_zcd1p0_zcmop1p0_zbc1p0_zkt1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xtheadba1p0_xtheadbb1p0_xtheadbs1p0_xtheadcmo1p0_xtheadcondmov1p0_xtheadfmemidx1p0_xtheadmac1p0_xtheadmemidx1p0_xtheadmempair1p0_xtheadsync1p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
623PROC(XUANTIE_C920V2, {"xt-c920v2"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zca1p0_zcb1p0_zcd1p0_zcmop1p0_zbc1p0_zkt1p0_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xtheadba1p0_xtheadbb1p0_xtheadbs1p0_xtheadcmo1p0_xtheadcondmov1p0_xtheadfmemidx1p0_xtheadmac1p0_xtheadmemidx1p0_xtheadmempair1p0_xtheadsync1p0_xtheadvdot1p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
624
625#undef PROC
626
627#ifndef TUNE_PROC
628#define TUNE_PROC(ENUM, NAME)
629#endif
630
631TUNE_PROC(ANDES_45, "andes-45-series")
632TUNE_PROC(GENERIC, "generic")
633TUNE_PROC(GENERIC_OOO, "generic-ooo")
634TUNE_PROC(ROCKET, "rocket")
635TUNE_PROC(SIFIVE_7, "sifive-7-series")
636
637#undef TUNE_PROC
638#ifdef GET_RISCVExtensionBitmaskTable_IMPL
639
640static const RISCVExtensionBitmask ExtensionBitmask[]={
641 {"a", 0, 0ULL},
642 {"b", 0, 1ULL},
643 {"c", 0, 2ULL},
644 {"d", 0, 3ULL},
645 {"e", 0, 4ULL},
646 {"f", 0, 5ULL},
647 {"h", 0, 7ULL},
648 {"i", 0, 8ULL},
649 {"m", 0, 12ULL},
650 {"q", 0, 16ULL},
651 {"v", 0, 21ULL},
652 {"zacas", 0, 26ULL},
653 {"zba", 0, 27ULL},
654 {"zbb", 0, 28ULL},
655 {"zbc", 0, 29ULL},
656 {"zbkb", 0, 30ULL},
657 {"zbkc", 0, 31ULL},
658 {"zbkx", 0, 32ULL},
659 {"zbs", 0, 33ULL},
660 {"zfa", 0, 34ULL},
661 {"zfh", 0, 35ULL},
662 {"zfhmin", 0, 36ULL},
663 {"zicboz", 0, 37ULL},
664 {"zicond", 0, 38ULL},
665 {"zihintntl", 0, 39ULL},
666 {"zihintpause", 0, 40ULL},
667 {"zknd", 0, 41ULL},
668 {"zkne", 0, 42ULL},
669 {"zknh", 0, 43ULL},
670 {"zksed", 0, 44ULL},
671 {"zksh", 0, 45ULL},
672 {"zkt", 0, 46ULL},
673 {"ztso", 0, 47ULL},
674 {"zvbb", 0, 48ULL},
675 {"zvbc", 0, 49ULL},
676 {"zvfh", 0, 50ULL},
677 {"zvfhmin", 0, 51ULL},
678 {"zvkb", 0, 52ULL},
679 {"zvkg", 0, 53ULL},
680 {"zvkned", 0, 54ULL},
681 {"zvknha", 0, 55ULL},
682 {"zvknhb", 0, 56ULL},
683 {"zvksed", 0, 57ULL},
684 {"zvksh", 0, 58ULL},
685 {"zvkt", 0, 59ULL},
686 {"zve32x", 0, 60ULL},
687 {"zve32f", 0, 61ULL},
688 {"zve64x", 0, 62ULL},
689 {"zve64f", 0, 63ULL},
690 {"zve64d", 1, 0ULL},
691 {"zimop", 1, 1ULL},
692 {"zca", 1, 2ULL},
693 {"zcb", 1, 3ULL},
694 {"zcd", 1, 4ULL},
695 {"zcf", 1, 5ULL},
696 {"zcmop", 1, 6ULL},
697 {"zawrs", 1, 7ULL},
698 {"zilsd", 1, 8ULL},
699 {"zclsd", 1, 9ULL},
700 {"zcmp", 1, 10ULL},
701 {"zifencei", 1, 11ULL},
702 {"zmmul", 1, 12ULL},
703 {"zibi", 1, 13ULL},
704 {"supm", 1, 14ULL},
705 {"zicntr", 1, 15ULL},
706 {"zihpm", 1, 16ULL},
707 {"zfbfmin", 1, 17ULL},
708 {"zvfbfmin", 1, 18ULL},
709 {"zvfbfwma", 1, 19ULL},
710 {"zicbom", 1, 20ULL},
711 {"zaamo", 1, 21ULL},
712 {"zalrsc", 1, 22ULL},
713 {"zabha", 1, 23ULL},
714 {"zalasr", 1, 24ULL},
715 {"zicbop", 1, 25ULL},
716 {"zicfiss", 1, 27ULL},
717};
718
719#undef GET_RISCVExtensionBitmaskTable_IMPL
720#endif // GET_RISCVExtensionBitmaskTable_IMPL
721
722#ifdef GET_TUNE_FEATURES
723#undef GET_TUNE_FEATURES
724
725
726#ifdef __GNUC__
727#pragma GCC diagnostic push
728#pragma GCC diagnostic ignored "-Woverlength-strings"
729#endif
730static constexpr char TuneFeatureStringsStorage[] =
731 "\0"
732 "conditional-cmv-fusion\0"
733 "no-conditional-cmv-fusion\0"
734 "disable-latency-sched-heuristic\0"
735 "enable-latency-sched-heuristic\0"
736 "disable-misched-load-clustering\0"
737 "enable-misched-load-clustering\0"
738 "disable-misched-store-clustering\0"
739 "enable-misched-store-clustering\0"
740 "disable-postmisched-load-clustering\0"
741 "enable-postmisched-load-clustering\0"
742 "disable-postmisched-store-clustering\0"
743 "enable-postmisched-store-clustering\0"
744 "single-element-vec-fp64\0"
745 "full-vec-fp64\0"
746 "no-default-unroll\0"
747 "enable-default-unroll\0"
748 "no-sink-splat-operands\0"
749 "sink-splat-operands\0"
750 "use-postra-scheduler\0"
751 "no-use-postra-scheduler\0"
752 "predictable-select-expensive\0"
753 "no-predictable-select-expensive\0"
754 "prefer-ascending-load-store\0"
755 "no-prefer-ascending-load-store\0"
756 "prefer-vsetvli-over-read-vlenb\0"
757 "no-prefer-vsetvli-over-read-vlenb\0"
758 "prefer-w-inst\0"
759 "no-prefer-w-inst\0"
760 "short-forward-branch-ialu\0"
761 "no-short-forward-branch-ialu\0"
762 "short-forward-branch-iload\0"
763 "no-short-forward-branch-iload\0"
764 "short-forward-branch-iminmax\0"
765 "no-short-forward-branch-iminmax\0"
766 "short-forward-branch-imul\0"
767 "no-short-forward-branch-imul\0"
768 "vl-dependent-latency\0"
769 "no-vl-dependent-latency\0"
770 "vxrm-pipeline-flush\0"
771 "no-vxrm-pipeline-flush\0"
772 ;
773#ifdef __GNUC__
774#pragma GCC diagnostic pop
775#endif
776
777static constexpr llvm::StringTable
778TuneFeatureStrings = TuneFeatureStringsStorage;
779
780static constexpr RISCVTuneFeature TuneFeatures[] = {
781 { 1, 24, 1 }, // 'conditional-cmv-fusion'
782 { 50, 82, 50 }, // 'disable-latency-sched-heuristic'
783 { 113, 145, 113 }, // 'disable-misched-load-clustering'
784 { 176, 209, 176 }, // 'disable-misched-store-clustering'
785 { 241, 277, 241 }, // 'disable-postmisched-load-clustering'
786 { 312, 349, 312 }, // 'disable-postmisched-store-clustering'
787 { 385, 409, 385 }, // 'single-element-vec-fp64'
788 { 423, 441, 423 }, // 'no-default-unroll'
789 { 463, 486, 463 }, // 'no-sink-splat-operands'
790 { 506, 527, 506 }, // 'use-postra-scheduler'
791 { 551, 580, 551 }, // 'predictable-select-expensive'
792 { 612, 640, 612 }, // 'prefer-ascending-load-store'
793 { 671, 702, 671 }, // 'prefer-vsetvli-over-read-vlenb'
794 { 736, 750, 736 }, // 'prefer-w-inst'
795 { 767, 793, 767 }, // 'short-forward-branch-ialu'
796 { 822, 849, 822 }, // 'short-forward-branch-iload'
797 { 879, 908, 879 }, // 'short-forward-branch-iminmax'
798 { 940, 966, 940 }, // 'short-forward-branch-imul'
799 { 995, 1016, 995 }, // 'vl-dependent-latency'
800 { 1040, 1060, 1040 }, // 'vxrm-pipeline-flush'
801};
802
803static constexpr RISCVImpliedTuneFeature ImpliedTuneFeatures[] = {
804 { 822, 767 }, // 'short-forward-branch-iload' -> 'short-forward-branch-ialu'
805 { 879, 767 }, // 'short-forward-branch-iminmax' -> 'short-forward-branch-ialu'
806 { 940, 767 }, // 'short-forward-branch-imul' -> 'short-forward-branch-ialu'
807};
808
809#endif // GET_TUNE_FEATURES
810
811#ifdef GET_CONFIGURABLE_TUNE_FEATURES
812#undef GET_CONFIGURABLE_TUNE_FEATURES
813
814static constexpr RISCVConfigurableTuneFeatures ConfigurableTuneFeatures[] = {
815 { { "sifive-x280" }, 385 },
816 { { "sifive-x280" }, 409 },
817 { { "sifive-x390" }, 385 },
818 { { "sifive-x390" }, 409 },
819};
820
821#endif // GET_CONFIGURABLE_TUNE_FEATURES
822
823