xref: /freebsd/contrib/llvm-project/llvm/lib/Target/ARM/ARMArchitectures.td (revision b64c5a0ace59af62eff52bfe110a521dc73c937b)
1class Architecture<string fname, string aname, list<SubtargetFeature> features>
2  : SubtargetFeature<fname, "ARMArch", aname,
3                     !strconcat(aname, " architecture"), features>;
4
5//===----------------------------------------------------------------------===//
6// ARM architectures
7//
8
9def ARMv4     : Architecture<"armv4",     "ARMv4",    []>;
10
11def ARMv4t    : Architecture<"armv4t",    "ARMv4t",   [HasV4TOps]>;
12
13def ARMv5t    : Architecture<"armv5t",    "ARMv5t",   [HasV5TOps]>;
14
15def ARMv5te   : Architecture<"armv5te",   "ARMv5te",  [HasV5TEOps]>;
16
17def ARMv5tej  : Architecture<"armv5tej",  "ARMv5tej", [HasV5TEOps]>;
18
19def ARMv6     : Architecture<"armv6",     "ARMv6",    [HasV6Ops,
20                                                       FeatureDSP]>;
21
22def ARMv6t2   : Architecture<"armv6t2",   "ARMv6t2",  [HasV6T2Ops,
23                                                       FeatureDSP]>;
24
25def ARMv6k    : Architecture<"armv6k",    "ARMv6k",   [HasV6KOps]>;
26
27def ARMv6kz   : Architecture<"armv6kz",   "ARMv6kz",  [HasV6KOps,
28                                                       FeatureTrustZone]>;
29
30def ARMv6m    : Architecture<"armv6-m",   "ARMv6m",   [HasV6MOps,
31                                                       FeatureNoARM,
32                                                       ModeThumb,
33                                                       FeatureDB,
34                                                       FeatureMClass,
35                                                       FeatureStrictAlign]>;
36
37def ARMv6sm   : Architecture<"armv6s-m",  "ARMv6sm",  [HasV6MOps,
38                                                       FeatureNoARM,
39                                                       ModeThumb,
40                                                       FeatureDB,
41                                                       FeatureMClass,
42                                                       FeatureStrictAlign]>;
43
44def ARMv7a    : Architecture<"armv7-a",   "ARMv7a",   [HasV7Ops,
45                                                       FeatureNEON,
46                                                       FeatureDB,
47                                                       FeatureDSP,
48                                                       FeatureAClass,
49                                                       FeaturePerfMon]>;
50
51def ARMv7ve   : Architecture<"armv7ve",   "ARMv7ve",  [HasV7Ops,
52                                                       FeatureNEON,
53                                                       FeatureDB,
54                                                       FeatureDSP,
55                                                       FeatureTrustZone,
56                                                       FeatureMP,
57                                                       FeatureVirtualization,
58                                                       FeatureAClass,
59                                                       FeaturePerfMon]>;
60
61def ARMv7r    : Architecture<"armv7-r",   "ARMv7r",   [HasV7Ops,
62                                                       FeatureDB,
63                                                       FeatureDSP,
64                                                       FeatureHWDivThumb,
65                                                       FeatureRClass,
66                                                       FeaturePerfMon]>;
67
68def ARMv7m    : Architecture<"armv7-m",   "ARMv7m",   [HasV7Ops,
69                                                       FeatureThumb2,
70                                                       FeatureNoARM,
71                                                       ModeThumb,
72                                                       FeatureDB,
73                                                       FeatureHWDivThumb,
74                                                       FeatureMClass]>;
75
76def ARMv7em   : Architecture<"armv7e-m",  "ARMv7em",  [HasV7Ops,
77                                                       FeatureThumb2,
78                                                       FeatureNoARM,
79                                                       ModeThumb,
80                                                       FeatureDB,
81                                                       FeatureHWDivThumb,
82                                                       FeatureMClass,
83                                                       FeatureDSP]>;
84
85def ARMv8a    : Architecture<"armv8-a",   "ARMv8a",   [HasV8Ops,
86                                                       FeatureAClass,
87                                                       FeatureDB,
88                                                       FeatureFPARMv8,
89                                                       FeatureNEON,
90                                                       FeatureDSP,
91                                                       FeatureTrustZone,
92                                                       FeatureMP,
93                                                       FeatureVirtualization,
94                                                       FeatureCrypto,
95                                                       FeatureCRC]>;
96
97def ARMv81a   : Architecture<"armv8.1-a", "ARMv81a",  [HasV8_1aOps,
98                                                       FeatureAClass,
99                                                       FeatureDB,
100                                                       FeatureFPARMv8,
101                                                       FeatureNEON,
102                                                       FeatureDSP,
103                                                       FeatureTrustZone,
104                                                       FeatureMP,
105                                                       FeatureVirtualization,
106                                                       FeatureCrypto,
107                                                       FeatureCRC]>;
108
109def ARMv82a   : Architecture<"armv8.2-a", "ARMv82a",  [HasV8_2aOps,
110                                                       FeatureAClass,
111                                                       FeatureDB,
112                                                       FeatureFPARMv8,
113                                                       FeatureNEON,
114                                                       FeatureDSP,
115                                                       FeatureTrustZone,
116                                                       FeatureMP,
117                                                       FeatureVirtualization,
118                                                       FeatureCrypto,
119                                                       FeatureCRC,
120                                                       FeatureRAS]>;
121
122def ARMv83a   : Architecture<"armv8.3-a", "ARMv83a",  [HasV8_3aOps,
123                                                       FeatureAClass,
124                                                       FeatureDB,
125                                                       FeatureFPARMv8,
126                                                       FeatureNEON,
127                                                       FeatureDSP,
128                                                       FeatureTrustZone,
129                                                       FeatureMP,
130                                                       FeatureVirtualization,
131                                                       FeatureCrypto,
132                                                       FeatureCRC,
133                                                       FeatureRAS]>;
134
135def ARMv84a   : Architecture<"armv8.4-a", "ARMv84a",  [HasV8_4aOps,
136                                                       FeatureAClass,
137                                                       FeatureDB,
138                                                       FeatureFPARMv8,
139                                                       FeatureNEON,
140                                                       FeatureDSP,
141                                                       FeatureTrustZone,
142                                                       FeatureMP,
143                                                       FeatureVirtualization,
144                                                       FeatureCrypto,
145                                                       FeatureCRC,
146                                                       FeatureRAS,
147                                                       FeatureDotProd]>;
148
149def ARMv85a   : Architecture<"armv8.5-a", "ARMv85a",  [HasV8_5aOps,
150                                                       FeatureAClass,
151                                                       FeatureDB,
152                                                       FeatureFPARMv8,
153                                                       FeatureNEON,
154                                                       FeatureDSP,
155                                                       FeatureTrustZone,
156                                                       FeatureMP,
157                                                       FeatureVirtualization,
158                                                       FeatureCrypto,
159                                                       FeatureCRC,
160                                                       FeatureRAS,
161                                                       FeatureDotProd]>;
162def ARMv86a   : Architecture<"armv8.6-a", "ARMv86a",  [HasV8_6aOps,
163                                                       FeatureAClass,
164                                                       FeatureDB,
165                                                       FeatureFPARMv8,
166                                                       FeatureNEON,
167                                                       FeatureDSP,
168                                                       FeatureTrustZone,
169                                                       FeatureMP,
170                                                       FeatureVirtualization,
171                                                       FeatureCrypto,
172                                                       FeatureCRC,
173                                                       FeatureRAS,
174                                                       FeatureDotProd]>;
175def ARMv87a   : Architecture<"armv8.7-a", "ARMv87a",  [HasV8_7aOps,
176                                                       FeatureAClass,
177                                                       FeatureDB,
178                                                       FeatureFPARMv8,
179                                                       FeatureNEON,
180                                                       FeatureDSP,
181                                                       FeatureTrustZone,
182                                                       FeatureMP,
183                                                       FeatureVirtualization,
184                                                       FeatureCrypto,
185                                                       FeatureCRC,
186                                                       FeatureRAS,
187                                                       FeatureDotProd]>;
188def ARMv88a   : Architecture<"armv8.8-a", "ARMv88a",  [HasV8_8aOps,
189                                                       FeatureAClass,
190                                                       FeatureDB,
191                                                       FeatureFPARMv8,
192                                                       FeatureNEON,
193                                                       FeatureDSP,
194                                                       FeatureTrustZone,
195                                                       FeatureMP,
196                                                       FeatureVirtualization,
197                                                       FeatureCrypto,
198                                                       FeatureCRC,
199                                                       FeatureRAS,
200                                                       FeatureDotProd]>;
201def ARMv89a   : Architecture<"armv8.9-a", "ARMv89a",  [HasV8_9aOps,
202                                                       FeatureAClass,
203                                                       FeatureDB,
204                                                       FeatureFPARMv8,
205                                                       FeatureNEON,
206                                                       FeatureDSP,
207                                                       FeatureTrustZone,
208                                                       FeatureMP,
209                                                       FeatureVirtualization,
210                                                       FeatureCrypto,
211                                                       FeatureCRC,
212                                                       FeatureRAS,
213                                                       FeatureDotProd]>;
214
215def ARMv9a   : Architecture<"armv9-a", "ARMv9a",       [HasV9_0aOps,
216                                                       FeatureAClass,
217                                                       FeatureDB,
218                                                       FeatureFPARMv8,
219                                                       FeatureNEON,
220                                                       FeatureDSP,
221                                                       FeatureTrustZone,
222                                                       FeatureMP,
223                                                       FeatureVirtualization,
224                                                       FeatureCRC,
225                                                       FeatureRAS,
226                                                       FeatureDotProd]>;
227def ARMv91a   : Architecture<"armv9.1-a", "ARMv91a",   [HasV9_1aOps,
228                                                       FeatureAClass,
229                                                       FeatureDB,
230                                                       FeatureFPARMv8,
231                                                       FeatureNEON,
232                                                       FeatureDSP,
233                                                       FeatureTrustZone,
234                                                       FeatureMP,
235                                                       FeatureVirtualization,
236                                                       FeatureCRC,
237                                                       FeatureRAS,
238                                                       FeatureDotProd]>;
239def ARMv92a   : Architecture<"armv9.2-a", "ARMv92a",  [HasV9_2aOps,
240                                                       FeatureAClass,
241                                                       FeatureDB,
242                                                       FeatureFPARMv8,
243                                                       FeatureNEON,
244                                                       FeatureDSP,
245                                                       FeatureTrustZone,
246                                                       FeatureMP,
247                                                       FeatureVirtualization,
248                                                       FeatureCRC,
249                                                       FeatureRAS,
250                                                       FeatureDotProd]>;
251def ARMv93a   : Architecture<"armv9.3-a", "ARMv93a",  [HasV9_3aOps,
252                                                       FeatureAClass,
253                                                       FeatureDB,
254                                                       FeatureFPARMv8,
255                                                       FeatureNEON,
256                                                       FeatureDSP,
257                                                       FeatureTrustZone,
258                                                       FeatureMP,
259                                                       FeatureVirtualization,
260                                                       FeatureCrypto,
261                                                       FeatureCRC,
262                                                       FeatureRAS,
263                                                       FeatureDotProd]>;
264def ARMv94a   : Architecture<"armv9.4-a", "ARMv94a",  [HasV9_4aOps,
265                                                       FeatureAClass,
266                                                       FeatureDB,
267                                                       FeatureFPARMv8,
268                                                       FeatureNEON,
269                                                       FeatureDSP,
270                                                       FeatureTrustZone,
271                                                       FeatureMP,
272                                                       FeatureVirtualization,
273                                                       FeatureCRC,
274                                                       FeatureRAS,
275                                                       FeatureDotProd]>;
276def ARMv95a   : Architecture<"armv9.5-a", "ARMv95a",  [HasV9_5aOps,
277                                                       FeatureAClass,
278                                                       FeatureDB,
279                                                       FeatureFPARMv8,
280                                                       FeatureNEON,
281                                                       FeatureDSP,
282                                                       FeatureTrustZone,
283                                                       FeatureMP,
284                                                       FeatureVirtualization,
285                                                       FeatureCRC,
286                                                       FeatureRAS,
287                                                       FeatureDotProd]>;
288
289def ARMv8r    : Architecture<"armv8-r",   "ARMv8r",   [HasV8Ops,
290                                                       FeatureRClass,
291                                                       FeatureDB,
292                                                       FeatureDFB,
293                                                       FeatureDSP,
294                                                       FeatureCRC,
295                                                       FeatureMP,
296                                                       FeatureFPARMv8_D16_SP,
297                                                       FeatureVirtualization]>;
298
299def ARMv8mBaseline : Architecture<"armv8-m.base", "ARMv8mBaseline",
300                                                      [HasV8MBaselineOps,
301                                                       FeatureNoARM,
302                                                       ModeThumb,
303                                                       FeatureDB,
304                                                       FeatureHWDivThumb,
305                                                       FeatureV7Clrex,
306                                                       Feature8MSecExt,
307                                                       FeatureAcquireRelease,
308                                                       FeatureMClass,
309                                                       FeatureStrictAlign]>;
310
311def ARMv8mMainline : Architecture<"armv8-m.main", "ARMv8mMainline",
312                                                      [HasV8MMainlineOps,
313                                                       FeatureNoARM,
314                                                       ModeThumb,
315                                                       FeatureDB,
316                                                       FeatureHWDivThumb,
317                                                       Feature8MSecExt,
318                                                       FeatureAcquireRelease,
319                                                       FeatureMClass]>;
320
321def ARMv81mMainline : Architecture<"armv8.1-m.main", "ARMv81mMainline",
322                                                      [HasV8_1MMainlineOps,
323                                                       FeatureNoARM,
324                                                       ModeThumb,
325                                                       FeatureDB,
326                                                       FeatureHWDivThumb,
327                                                       Feature8MSecExt,
328                                                       FeatureAcquireRelease,
329                                                       FeatureMClass,
330                                                       FeatureRAS,
331                                                       FeatureLOB]>;
332
333// Aliases
334def IWMMXT   : Architecture<"iwmmxt",      "ARMv5te",  [ARMv5te]>;
335def IWMMXT2  : Architecture<"iwmmxt2",     "ARMv5te",  [ARMv5te]>;
336def XScale   : Architecture<"xscale",      "ARMv5te",  [ARMv5te]>;
337def ARMv6j   : Architecture<"armv6j",      "ARMv7a",   [ARMv6]>;
338def ARMv7k   : Architecture<"armv7k",      "ARMv7a",   [ARMv7a]>;
339def ARMv7s   : Architecture<"armv7s",      "ARMv7a",   [ARMv7a]>;
340