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