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