xref: /llvm-project/llvm/lib/Target/ARM/ARMProcessors.td (revision 2d8e8dd2b83da113dd94f01c67fb8b3e3ce38cc9)
1class ProcNoItin<string Name, list<SubtargetFeature> Features>
2  : Processor<Name, NoItineraries, Features>;
3
4//===----------------------------------------------------------------------===//
5// ARM Processor subtarget features.
6//
7
8def ProcA5      : SubtargetFeature<"a5", "ARMProcFamily", "CortexA5",
9                                   "Cortex-A5 ARM processors", []>;
10def ProcA7      : SubtargetFeature<"a7", "ARMProcFamily", "CortexA7",
11                                   "Cortex-A7 ARM processors", []>;
12def ProcA8      : SubtargetFeature<"a8", "ARMProcFamily", "CortexA8",
13                                   "Cortex-A8 ARM processors", []>;
14def ProcA9      : SubtargetFeature<"a9", "ARMProcFamily", "CortexA9",
15                                   "Cortex-A9 ARM processors", []>;
16def ProcA12     : SubtargetFeature<"a12", "ARMProcFamily", "CortexA12",
17                                   "Cortex-A12 ARM processors", []>;
18def ProcA15     : SubtargetFeature<"a15", "ARMProcFamily", "CortexA15",
19                                   "Cortex-A15 ARM processors", []>;
20def ProcA17     : SubtargetFeature<"a17", "ARMProcFamily", "CortexA17",
21                                   "Cortex-A17 ARM processors", []>;
22def ProcA32     : SubtargetFeature<"a32", "ARMProcFamily", "CortexA32",
23                                   "Cortex-A32 ARM processors", []>;
24def ProcA35     : SubtargetFeature<"a35", "ARMProcFamily", "CortexA35",
25                                   "Cortex-A35 ARM processors", []>;
26def ProcA53     : SubtargetFeature<"a53", "ARMProcFamily", "CortexA53",
27                                   "Cortex-A53 ARM processors", []>;
28def ProcA55     : SubtargetFeature<"a55", "ARMProcFamily", "CortexA55",
29                                   "Cortex-A55 ARM processors", []>;
30def ProcA57     : SubtargetFeature<"a57", "ARMProcFamily", "CortexA57",
31                                   "Cortex-A57 ARM processors", []>;
32def ProcA72     : SubtargetFeature<"a72", "ARMProcFamily", "CortexA72",
33                                   "Cortex-A72 ARM processors", []>;
34def ProcA73     : SubtargetFeature<"a73", "ARMProcFamily", "CortexA73",
35                                   "Cortex-A73 ARM processors", []>;
36def ProcA75     : SubtargetFeature<"a75", "ARMProcFamily", "CortexA75",
37                                   "Cortex-A75 ARM processors", []>;
38def ProcA76     : SubtargetFeature<"a76", "ARMProcFamily", "CortexA76",
39                                   "Cortex-A76 ARM processors", []>;
40def ProcA77     : SubtargetFeature<"a77", "ARMProcFamily", "CortexA77",
41                                   "Cortex-A77 ARM processors", []>;
42def ProcA78     : SubtargetFeature<"cortex-a78", "ARMProcFamily", "CortexA78",
43                                   "Cortex-A78 ARM processors", []>;
44def ProcA78AE   : SubtargetFeature<"cortex-a78ae", "ARMProcFamily", "CortexA78AE",
45                                   "Cortex-A78AE ARM processors", []>;
46def ProcA78C    : SubtargetFeature<"a78c", "ARMProcFamily", "CortexA78C",
47                                   "Cortex-A78C ARM processors", []>;
48def ProcA510    : SubtargetFeature<"cortex-a510", "ARMProcFamily",
49                                   "CortexA510", "Cortex-A510 ARM processors", []>;
50def ProcA710    : SubtargetFeature<"cortex-a710", "ARMProcFamily",
51                                   "CortexA710", "Cortex-A710 ARM processors", []>;
52def ProcX1      : SubtargetFeature<"cortex-x1", "ARMProcFamily", "CortexX1",
53                                   "Cortex-X1 ARM processors", []>;
54def ProcX1C     : SubtargetFeature<"cortex-x1c", "ARMProcFamily", "CortexX1C",
55                                   "Cortex-X1C ARM processors", []>;
56
57def ProcV1      : SubtargetFeature<"neoverse-v1", "ARMProcFamily",
58                                   "NeoverseV1", "Neoverse-V1 ARM processors", []>;
59
60def ProcKrait   : SubtargetFeature<"krait", "ARMProcFamily", "Krait",
61                                   "Qualcomm Krait processors", []>;
62def ProcKryo    : SubtargetFeature<"kryo", "ARMProcFamily", "Kryo",
63                                   "Qualcomm Kryo processors", []>;
64def ProcSwift   : SubtargetFeature<"swift", "ARMProcFamily", "Swift",
65                                   "Swift ARM processors", []>;
66
67def ProcExynos  : SubtargetFeature<"exynos", "ARMProcFamily", "Exynos",
68                                   "Samsung Exynos processors",
69                                   [FeatureZCZeroing,
70                                    FeatureUseWideStrideVFP,
71                                    FeatureSplatVFPToNeon,
72                                    FeatureSlowVGETLNi32,
73                                    FeatureSlowVDUP32,
74                                    FeatureSlowFPBrcc,
75                                    FeatureProfUnpredicate,
76                                    FeatureHWDivThumb,
77                                    FeatureHWDivARM,
78                                    FeatureHasSlowFPVMLx,
79                                    FeatureHasSlowFPVFMx,
80                                    FeatureHasRetAddrStack,
81                                    FeatureFuseLiterals,
82                                    FeatureFuseAES,
83                                    FeatureExpandMLx,
84                                    FeatureCrypto,
85                                    FeatureCRC]>;
86
87def ProcR4      : SubtargetFeature<"r4", "ARMProcFamily", "CortexR4",
88                                   "Cortex-R4 ARM processors", []>;
89def ProcR5      : SubtargetFeature<"r5", "ARMProcFamily", "CortexR5",
90                                   "Cortex-R5 ARM processors", []>;
91def ProcR7      : SubtargetFeature<"r7", "ARMProcFamily", "CortexR7",
92                                   "Cortex-R7 ARM processors", []>;
93def ProcR52     : SubtargetFeature<"r52", "ARMProcFamily", "CortexR52",
94                                   "Cortex-R52 ARM processors", []>;
95def ProcR52plus  : SubtargetFeature<"r52plus", "ARMProcFamily", "CortexR52plus",
96                                   "Cortex-R52plus ARM processors", []>;
97
98def ProcM3      : SubtargetFeature<"m3", "ARMProcFamily", "CortexM3",
99                                   "Cortex-M3 ARM processors", []>;
100def ProcM55      : SubtargetFeature<"m55", "ARMProcFamily", "CortexM55",
101                                   "Cortex-M55 ARM processors", []>;
102def ProcM7      : SubtargetFeature<"m7", "ARMProcFamily", "CortexM7",
103                                   "Cortex-M7 ARM processors", []>;
104def ProcM85      : SubtargetFeature<"m85", "ARMProcFamily", "CortexM85",
105                                   "Cortex-M85 ARM processors", []>;
106
107//===----------------------------------------------------------------------===//
108// ARM processors
109//
110// Dummy CPU, used to target architectures
111def : ProcessorModel<"generic",     CortexA8Model,      []>;
112
113// FIXME: Several processors below are not using their own scheduler
114// model, but one of similar/previous processor. These should be fixed.
115
116def : ProcNoItin<"arm8",                                [ARMv4]>;
117def : ProcNoItin<"arm810",                              [ARMv4]>;
118def : ProcNoItin<"strongarm",                           [ARMv4]>;
119def : ProcNoItin<"strongarm110",                        [ARMv4]>;
120def : ProcNoItin<"strongarm1100",                       [ARMv4]>;
121def : ProcNoItin<"strongarm1110",                       [ARMv4]>;
122
123def : ProcNoItin<"arm7tdmi",                            [ARMv4t]>;
124def : ProcNoItin<"arm7tdmi-s",                          [ARMv4t]>;
125def : ProcNoItin<"arm710t",                             [ARMv4t]>;
126def : ProcNoItin<"arm720t",                             [ARMv4t]>;
127def : ProcNoItin<"arm9",                                [ARMv4t]>;
128def : ProcNoItin<"arm9tdmi",                            [ARMv4t]>;
129def : ProcNoItin<"arm920",                              [ARMv4t]>;
130def : ProcNoItin<"arm920t",                             [ARMv4t]>;
131def : ProcNoItin<"arm922t",                             [ARMv4t]>;
132def : ProcNoItin<"arm940t",                             [ARMv4t]>;
133def : ProcNoItin<"ep9312",                              [ARMv4t]>;
134
135def : ProcNoItin<"arm10tdmi",                           [ARMv5t]>;
136def : ProcNoItin<"arm1020t",                            [ARMv5t]>;
137
138def : ProcNoItin<"arm9e",                               [ARMv5te]>;
139def : ProcNoItin<"arm926ej-s",                          [ARMv5te]>;
140def : ProcNoItin<"arm946e-s",                           [ARMv5te]>;
141def : ProcNoItin<"arm966e-s",                           [ARMv5te]>;
142def : ProcNoItin<"arm968e-s",                           [ARMv5te]>;
143def : ProcNoItin<"arm10e",                              [ARMv5te]>;
144def : ProcNoItin<"arm1020e",                            [ARMv5te]>;
145def : ProcNoItin<"arm1022e",                            [ARMv5te]>;
146def : ProcNoItin<"xscale",                              [ARMv5te]>;
147def : ProcNoItin<"iwmmxt",                              [ARMv5te]>;
148
149def : Processor<"arm1136j-s",       ARMV6Itineraries,   [ARMv6]>;
150def : Processor<"arm1136jf-s",      ARMV6Itineraries,   [ARMv6,
151                                                         FeatureVFP2,
152                                                         FeatureHasSlowFPVMLx]>;
153
154def : Processor<"cortex-m0",        ARMV6Itineraries,   [ARMv6m,
155                                                         FeatureHasNoBranchPredictor]>;
156def : Processor<"cortex-m0plus",    ARMV6Itineraries,   [ARMv6m,
157                                                         FeatureHasNoBranchPredictor]>;
158def : Processor<"cortex-m1",        ARMV6Itineraries,   [ARMv6m,
159                                                         FeatureHasNoBranchPredictor]>;
160def : Processor<"sc000",            ARMV6Itineraries,   [ARMv6m,
161                                                         FeatureHasNoBranchPredictor]>;
162
163def : Processor<"arm1176jz-s",      ARMV6Itineraries,   [ARMv6kz]>;
164def : Processor<"arm1176jzf-s",     ARMV6Itineraries,   [ARMv6kz,
165                                                         FeatureVFP2,
166                                                         FeatureHasSlowFPVMLx]>;
167
168def : Processor<"mpcorenovfp",      ARMV6Itineraries,   [ARMv6k]>;
169def : Processor<"mpcore",           ARMV6Itineraries,   [ARMv6k,
170                                                         FeatureVFP2,
171                                                         FeatureHasSlowFPVMLx]>;
172
173def : Processor<"arm1156t2-s",      ARMV6Itineraries,   [ARMv6t2]>;
174def : Processor<"arm1156t2f-s",     ARMV6Itineraries,   [ARMv6t2,
175                                                         FeatureVFP2,
176                                                         FeatureHasSlowFPVMLx]>;
177
178def : ProcessorModel<"cortex-a5",   CortexA8Model,      [ARMv7a, ProcA5,
179                                                         FeatureHasRetAddrStack,
180                                                         FeatureTrustZone,
181                                                         FeatureSlowFPBrcc,
182                                                         FeatureHasSlowFPVMLx,
183                                                         FeatureHasSlowFPVFMx,
184                                                         FeatureVMLxForwarding,
185                                                         FeatureMP,
186                                                         FeatureVFP4]>;
187
188def : ProcessorModel<"cortex-a7",   CortexA8Model,      [ARMv7a, ProcA7,
189                                                         FeatureHasRetAddrStack,
190                                                         FeatureTrustZone,
191                                                         FeatureSlowFPBrcc,
192                                                         FeatureHasVMLxHazards,
193                                                         FeatureHasSlowFPVMLx,
194                                                         FeatureHasSlowFPVFMx,
195                                                         FeatureVMLxForwarding,
196                                                         FeatureMP,
197                                                         FeatureVFP4,
198                                                         FeatureVirtualization]>;
199
200def : ProcessorModel<"cortex-a8",   CortexA8Model,      [ARMv7a, ProcA8,
201                                                         FeatureHasRetAddrStack,
202                                                         FeatureNonpipelinedVFP,
203                                                         FeatureTrustZone,
204                                                         FeatureSlowFPBrcc,
205                                                         FeatureHasVMLxHazards,
206                                                         FeatureHasSlowFPVMLx,
207                                                         FeatureHasSlowFPVFMx,
208                                                         FeatureVMLxForwarding]>;
209
210def : ProcessorModel<"cortex-a9",   CortexA9Model,      [ARMv7a, ProcA9,
211                                                         FeatureHasRetAddrStack,
212                                                         FeatureTrustZone,
213                                                         FeatureHasVMLxHazards,
214                                                         FeatureVMLxForwarding,
215                                                         FeatureFP16,
216                                                         FeatureAvoidPartialCPSR,
217                                                         FeatureExpandMLx,
218                                                         FeaturePreferVMOVSR,
219                                                         FeatureMuxedUnits,
220                                                         FeatureNEONForFPMovs,
221                                                         FeatureCheckVLDnAlign,
222                                                         FeatureMP]>;
223
224def : ProcessorModel<"cortex-a12",  CortexA9Model,      [ARMv7a, ProcA12,
225                                                         FeatureHasRetAddrStack,
226                                                         FeatureTrustZone,
227                                                         FeatureVMLxForwarding,
228                                                         FeatureVFP4,
229                                                         FeatureAvoidPartialCPSR,
230                                                         FeatureVirtualization,
231                                                         FeatureMP]>;
232
233def : ProcessorModel<"cortex-a15",  CortexA9Model,      [ARMv7a, ProcA15,
234                                                         FeatureDontWidenVMOVS,
235                                                         FeatureSplatVFPToNeon,
236                                                         FeatureHasRetAddrStack,
237                                                         FeatureMuxedUnits,
238                                                         FeatureTrustZone,
239                                                         FeatureVFP4,
240                                                         FeatureMP,
241                                                         FeatureCheckVLDnAlign,
242                                                         FeatureAvoidPartialCPSR,
243                                                         FeatureVirtualization]>;
244
245def : ProcessorModel<"cortex-a17",  CortexA9Model,      [ARMv7a, ProcA17,
246                                                         FeatureHasRetAddrStack,
247                                                         FeatureTrustZone,
248                                                         FeatureMP,
249                                                         FeatureVMLxForwarding,
250                                                         FeatureVFP4,
251                                                         FeatureAvoidPartialCPSR,
252                                                         FeatureVirtualization]>;
253
254// FIXME: krait has currently the same features as A9 plus VFP4 and  HWDiv
255def : ProcessorModel<"krait",       CortexA9Model,      [ARMv7a, ProcKrait,
256                                                         FeatureHasRetAddrStack,
257                                                         FeatureMuxedUnits,
258                                                         FeatureCheckVLDnAlign,
259                                                         FeatureVMLxForwarding,
260                                                         FeatureFP16,
261                                                         FeatureAvoidPartialCPSR,
262                                                         FeatureVFP4,
263                                                         FeatureHWDivThumb,
264                                                         FeatureHWDivARM]>;
265
266def : ProcessorModel<"swift",       SwiftModel,         [ARMv7a, ProcSwift,
267                                                         FeatureHasRetAddrStack,
268                                                         FeatureNEONForFP,
269                                                         FeatureVFP4,
270                                                         FeatureUseWideStrideVFP,
271                                                         FeatureMP,
272                                                         FeatureHWDivThumb,
273                                                         FeatureHWDivARM,
274                                                         FeatureAvoidPartialCPSR,
275                                                         FeatureAvoidMOVsShOp,
276                                                         FeatureHasSlowFPVMLx,
277                                                         FeatureHasSlowFPVFMx,
278                                                         FeatureHasVMLxHazards,
279                                                         FeatureProfUnpredicate,
280                                                         FeaturePrefISHSTBarrier,
281                                                         FeatureSlowOddRegister,
282                                                         FeatureSlowLoadDSubreg,
283                                                         FeatureSlowVGETLNi32,
284                                                         FeatureSlowVDUP32,
285                                                         FeatureUseMISched,
286                                                         FeatureNoPostRASched]>;
287
288def : ProcessorModel<"cortex-r4",   CortexA8Model,      [ARMv7r, ProcR4,
289                                                         FeatureHasRetAddrStack,
290                                                         FeatureAvoidPartialCPSR]>;
291
292def : ProcessorModel<"cortex-r4f",  CortexA8Model,      [ARMv7r, ProcR4,
293                                                         FeatureHasRetAddrStack,
294                                                         FeatureSlowFPBrcc,
295                                                         FeatureHasSlowFPVMLx,
296                                                         FeatureHasSlowFPVFMx,
297                                                         FeatureVFP3_D16,
298                                                         FeatureAvoidPartialCPSR]>;
299
300def : ProcessorModel<"cortex-r5",   CortexA8Model,      [ARMv7r, ProcR5,
301                                                         FeatureHasRetAddrStack,
302                                                         FeatureVFP3_D16,
303                                                         FeatureSlowFPBrcc,
304                                                         FeatureHWDivARM,
305                                                         FeatureHasSlowFPVMLx,
306                                                         FeatureHasSlowFPVFMx,
307                                                         FeatureAvoidPartialCPSR]>;
308
309def : ProcessorModel<"cortex-r7",   CortexA8Model,      [ARMv7r, ProcR7,
310                                                         FeatureHasRetAddrStack,
311                                                         FeatureVFP3_D16,
312                                                         FeatureFP16,
313                                                         FeatureMP,
314                                                         FeatureSlowFPBrcc,
315                                                         FeatureHWDivARM,
316                                                         FeatureHasSlowFPVMLx,
317                                                         FeatureHasSlowFPVFMx,
318                                                         FeatureAvoidPartialCPSR]>;
319
320def : ProcessorModel<"cortex-r8",   CortexA8Model,      [ARMv7r,
321                                                         FeatureHasRetAddrStack,
322                                                         FeatureVFP3_D16,
323                                                         FeatureFP16,
324                                                         FeatureMP,
325                                                         FeatureSlowFPBrcc,
326                                                         FeatureHWDivARM,
327                                                         FeatureHasSlowFPVMLx,
328                                                         FeatureHasSlowFPVFMx,
329                                                         FeatureAvoidPartialCPSR]>;
330
331def : ProcessorModel<"cortex-m3",   CortexM4Model,      [ARMv7m,
332                                                         ProcM3,
333                                                         FeaturePreferBranchAlign32,
334                                                         FeatureUseMISched,
335                                                         FeatureHasNoBranchPredictor]>;
336
337def : ProcessorModel<"sc300",       CortexM4Model,      [ARMv7m,
338                                                         ProcM3,
339                                                         FeatureUseMISched,
340                                                         FeatureHasNoBranchPredictor]>;
341
342def : ProcessorModel<"cortex-m4", CortexM4Model,        [ARMv7em,
343                                                         FeatureVFP4_D16_SP,
344                                                         FeaturePreferBranchAlign32,
345                                                         FeatureHasSlowFPVMLx,
346                                                         FeatureHasSlowFPVFMx,
347                                                         FeatureUseMISched,
348                                                         FeatureHasNoBranchPredictor]>;
349
350def : ProcessorModel<"cortex-m7", CortexM7Model,        [ARMv7em,
351                                                         ProcM7,
352                                                         FeatureFPARMv8_D16,
353                                                         FeaturePreferBranchAlign64,
354                                                         FeatureUseMIPipeliner,
355                                                         FeatureUseMISched]>;
356
357def : ProcNoItin<"cortex-m23",                          [ARMv8mBaseline,
358                                                         FeatureNoMovt,
359                                                         FeatureHasNoBranchPredictor]>;
360
361def : ProcessorModel<"cortex-m33", CortexM4Model,       [ARMv8mMainline,
362                                                         FeatureDSP,
363                                                         FeatureFPARMv8_D16_SP,
364                                                         FeaturePreferBranchAlign32,
365                                                         FeatureHasSlowFPVMLx,
366                                                         FeatureHasSlowFPVFMx,
367                                                         FeatureUseMISched,
368                                                         FeatureHasNoBranchPredictor,
369                                                         FeatureAvoidMULS,
370                                                         FeatureFixCMSE_CVE_2021_35465]>;
371
372def : ProcessorModel<"star-mc1", CortexM4Model,         [ARMv8mMainline,
373                                                         FeatureDSP,
374                                                         FeatureFPARMv8_D16_SP,
375                                                         FeaturePreferBranchAlign32,
376                                                         FeatureHasSlowFPVMLx,
377                                                         FeatureHasSlowFPVFMx,
378                                                         FeatureUseMISched,
379                                                         FeatureHasNoBranchPredictor,
380                                                         FeatureFixCMSE_CVE_2021_35465]>;
381
382def : ProcessorModel<"cortex-m35p", CortexM4Model,      [ARMv8mMainline,
383                                                         FeatureDSP,
384                                                         FeatureFPARMv8_D16_SP,
385                                                         FeaturePreferBranchAlign32,
386                                                         FeatureHasSlowFPVMLx,
387                                                         FeatureHasSlowFPVFMx,
388                                                         FeatureUseMISched,
389                                                         FeatureHasNoBranchPredictor,
390                                                         FeatureFixCMSE_CVE_2021_35465]>;
391
392def : ProcessorModel<"cortex-m55", CortexM55Model,      [ARMv81mMainline,
393                                                         ProcM55,
394                                                         FeatureDSP,
395                                                         FeatureFPARMv8_D16,
396                                                         FeatureUseMISched,
397                                                         FeatureHasNoBranchPredictor,
398                                                         FeaturePreferBranchAlign32,
399                                                         FeatureHasSlowFPVMLx,
400                                                         HasMVEFloatOps,
401                                                         FeatureFixCMSE_CVE_2021_35465]>;
402
403def : ProcessorModel<"cortex-m85", CortexM85Model,      [ARMv81mMainline,
404                                                         ProcM85,
405                                                         FeatureDSP,
406                                                         FeatureFPARMv8_D16,
407                                                         FeaturePACBTI,
408                                                         FeaturePreferBranchAlign64,
409                                                         FeatureUseMISched,
410                                                         HasMVEFloatOps]>;
411
412def : ProcessorModel<"cortex-m52", CortexM55Model,      [ARMv81mMainline,
413                                                         FeatureDSP,
414                                                         FeatureFPARMv8_D16,
415                                                         FeatureHasNoBranchPredictor,
416                                                         FeaturePACBTI,
417                                                         FeatureUseMISched,
418                                                         FeaturePreferBranchAlign32,
419                                                         FeatureHasSlowFPVMLx,
420                                                         FeatureMVEVectorCostFactor1,
421                                                         HasMVEFloatOps]>;
422
423def : ProcNoItin<"cortex-a32",                           [ARMv8a,
424                                                         FeatureHWDivThumb,
425                                                         FeatureHWDivARM,
426                                                         FeatureCrypto,
427                                                         FeatureCRC]>;
428
429def : ProcNoItin<"cortex-a35",                          [ARMv8a, ProcA35,
430                                                         FeatureHWDivThumb,
431                                                         FeatureHWDivARM,
432                                                         FeatureCrypto,
433                                                         FeatureCRC]>;
434
435def : ProcNoItin<"cortex-a53",                          [ARMv8a, ProcA53,
436                                                         FeatureHWDivThumb,
437                                                         FeatureHWDivARM,
438                                                         FeatureCrypto,
439                                                         FeatureCRC,
440                                                         FeatureFPAO]>;
441
442def : ProcNoItin<"cortex-a55",                          [ARMv82a, ProcA55,
443                                                         FeatureHWDivThumb,
444                                                         FeatureHWDivARM,
445                                                         FeatureDotProd]>;
446
447def : ProcessorModel<"cortex-a57",  CortexA57Model,     [ARMv8a, ProcA57,
448                                                         FeatureHWDivThumb,
449                                                         FeatureHWDivARM,
450                                                         FeatureCrypto,
451                                                         FeatureCRC,
452                                                         FeatureFPAO,
453                                                         FeatureAvoidPartialCPSR,
454                                                         FeatureCheapPredicableCPSR,
455                                                         FeatureFixCortexA57AES1742098]>;
456
457def : ProcessorModel<"cortex-a72",  CortexA57Model,     [ARMv8a, ProcA72,
458                                                         FeatureHWDivThumb,
459                                                         FeatureHWDivARM,
460                                                         FeatureCrypto,
461                                                         FeatureCRC,
462                                                         FeatureFixCortexA57AES1742098]>;
463
464def : ProcNoItin<"cortex-a73",                          [ARMv8a, ProcA73,
465                                                         FeatureHWDivThumb,
466                                                         FeatureHWDivARM,
467                                                         FeatureCrypto,
468                                                         FeatureCRC]>;
469
470def : ProcNoItin<"cortex-a75",                          [ARMv82a, ProcA75,
471                                                         FeatureHWDivThumb,
472                                                         FeatureHWDivARM,
473                                                         FeatureDotProd]>;
474
475def : ProcNoItin<"cortex-a76",                          [ARMv82a, ProcA76,
476                                                         FeatureHWDivThumb,
477                                                         FeatureHWDivARM,
478                                                         FeatureCrypto,
479                                                         FeatureCRC,
480                                                         FeatureFullFP16,
481                                                         FeatureDotProd]>;
482
483def : ProcNoItin<"cortex-a76ae",                        [ARMv82a, ProcA76,
484                                                         FeatureHWDivThumb,
485                                                         FeatureHWDivARM,
486                                                         FeatureCrypto,
487                                                         FeatureCRC,
488                                                         FeatureFullFP16,
489                                                         FeatureDotProd]>;
490
491def : ProcNoItin<"cortex-a77",                          [ARMv82a, ProcA77,
492                                                         FeatureHWDivThumb,
493                                                         FeatureHWDivARM,
494                                                         FeatureCrypto,
495                                                         FeatureCRC,
496                                                         FeatureFullFP16,
497                                                         FeatureDotProd]>;
498
499def : ProcNoItin<"cortex-a78",                          [ARMv82a, ProcA78,
500                                                         FeatureHWDivThumb,
501                                                         FeatureHWDivARM,
502                                                         FeatureCrypto,
503                                                         FeatureCRC,
504                                                         FeatureFullFP16,
505                                                         FeatureDotProd]>;
506
507def : ProcNoItin<"cortex-a78ae",                        [ARMv82a, ProcA78AE,
508                                                         FeatureHWDivThumb,
509                                                         FeatureHWDivARM,
510                                                         FeatureCrypto,
511                                                         FeatureCRC,
512                                                         FeatureFullFP16,
513                                                         FeatureDotProd]>;
514
515def : ProcNoItin<"cortex-a78c",                         [ARMv82a, ProcA78C,
516                                                         FeatureHWDivThumb,
517                                                         FeatureHWDivARM,
518                                                         FeatureCrypto,
519                                                         FeatureCRC,
520                                                         FeatureDotProd,
521                                                         FeatureFullFP16]>;
522
523def : ProcNoItin<"cortex-a510",                         [ARMv9a, ProcA710,
524                                                         FeatureHWDivThumb,
525                                                         FeatureHWDivARM,
526                                                         FeatureFP16FML,
527                                                         FeatureBF16,
528                                                         FeatureMatMulInt8,
529                                                         FeatureSB]>;
530
531def : ProcNoItin<"cortex-a710",                         [ARMv9a, ProcA710,
532                                                         FeatureHWDivThumb,
533                                                         FeatureHWDivARM,
534                                                         FeatureFP16FML,
535                                                         FeatureBF16,
536                                                         FeatureMatMulInt8,
537                                                         FeatureSB]>;
538
539def : ProcNoItin<"cortex-x1",                           [ARMv82a, ProcX1,
540                                                         FeatureHWDivThumb,
541                                                         FeatureHWDivARM,
542                                                         FeatureCrypto,
543                                                         FeatureCRC,
544                                                         FeatureFullFP16,
545                                                         FeatureDotProd]>;
546
547def : ProcNoItin<"cortex-x1c",                          [ARMv82a, ProcX1C,
548                                                         FeatureHWDivThumb,
549                                                         FeatureHWDivARM,
550                                                         FeatureCrypto,
551                                                         FeatureCRC,
552                                                         FeatureFullFP16,
553                                                         FeatureDotProd]>;
554
555def : ProcNoItin<"neoverse-v1",                         [ARMv84a,
556                                                         FeatureHWDivThumb,
557                                                         FeatureHWDivARM,
558                                                         FeatureCrypto,
559                                                         FeatureCRC,
560                                                         FeatureFullFP16,
561                                                         FeatureBF16,
562                                                         FeatureMatMulInt8]>;
563
564def : ProcNoItin<"neoverse-n1",                         [ARMv82a,
565                                                         FeatureHWDivThumb,
566                                                         FeatureHWDivARM,
567                                                         FeatureCrypto,
568                                                         FeatureCRC,
569                                                         FeatureDotProd]>;
570
571def : ProcNoItin<"neoverse-n2",                         [ARMv9a,
572                                                         FeatureBF16,
573                                                         FeatureFP16FML,
574                                                         FeatureMatMulInt8]>;
575
576def : ProcessorModel<"cyclone",     SwiftModel,         [ARMv8a, ProcSwift,
577                                                         FeatureHasRetAddrStack,
578                                                         FeatureNEONForFP,
579                                                         FeatureVFP4,
580                                                         FeatureMP,
581                                                         FeatureHWDivThumb,
582                                                         FeatureHWDivARM,
583                                                         FeatureAvoidPartialCPSR,
584                                                         FeatureAvoidMOVsShOp,
585                                                         FeatureHasSlowFPVMLx,
586                                                         FeatureHasSlowFPVFMx,
587                                                         FeatureCrypto,
588                                                         FeatureUseMISched,
589                                                         FeatureZCZeroing,
590                                                         FeatureNoPostRASched]>;
591
592def : ProcNoItin<"exynos-m3",                           [ARMv8a, ProcExynos]>;
593def : ProcNoItin<"exynos-m4",                           [ARMv82a, ProcExynos,
594                                                         FeatureFullFP16,
595                                                         FeatureDotProd]>;
596def : ProcNoItin<"exynos-m5",                           [ARMv82a, ProcExynos,
597                                                         FeatureFullFP16,
598                                                         FeatureDotProd]>;
599
600def : ProcNoItin<"kryo",                                [ARMv8a, ProcKryo,
601                                                         FeatureHWDivThumb,
602                                                         FeatureHWDivARM,
603                                                         FeatureCrypto,
604                                                         FeatureCRC]>;
605
606def : ProcessorModel<"cortex-r52", CortexR52Model,      [ARMv8r, ProcR52,
607                                                         FeatureFPARMv8,
608                                                         FeatureNEON,
609                                                         FeatureUseMISched,
610                                                         FeatureFPAO]>;
611
612def : ProcessorModel<"cortex-r52plus", CortexR52Model,  [ARMv8r, ProcR52plus,
613                                                         FeatureFPARMv8,
614                                                         FeatureNEON,
615                                                         FeatureUseMISched,
616                                                         FeatureFPAO]>;
617