xref: /aosp_15_r20/external/vixl/src/aarch32/constants-aarch32.h (revision f5c631da2f1efdd72b5fd1e20510e4042af13d77)
1*f5c631daSSadaf Ebrahimi // Copyright 2015, VIXL authors
2*f5c631daSSadaf Ebrahimi // All rights reserved.
3*f5c631daSSadaf Ebrahimi //
4*f5c631daSSadaf Ebrahimi // Redistribution and use in source and binary forms, with or without
5*f5c631daSSadaf Ebrahimi // modification, are permitted provided that the following conditions are met:
6*f5c631daSSadaf Ebrahimi //
7*f5c631daSSadaf Ebrahimi //   * Redistributions of source code must retain the above copyright notice,
8*f5c631daSSadaf Ebrahimi //     this list of conditions and the following disclaimer.
9*f5c631daSSadaf Ebrahimi //   * Redistributions in binary form must reproduce the above copyright
10*f5c631daSSadaf Ebrahimi //     notice, this list of conditions and the following disclaimer in the
11*f5c631daSSadaf Ebrahimi //     documentation and/or other materials provided with the distribution.
12*f5c631daSSadaf Ebrahimi //   * Neither the name of ARM Limited nor the names of its contributors may
13*f5c631daSSadaf Ebrahimi //     be used to endorse or promote products derived from this software
14*f5c631daSSadaf Ebrahimi //     without specific prior written permission.
15*f5c631daSSadaf Ebrahimi //
16*f5c631daSSadaf Ebrahimi // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17*f5c631daSSadaf Ebrahimi // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*f5c631daSSadaf Ebrahimi // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*f5c631daSSadaf Ebrahimi // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20*f5c631daSSadaf Ebrahimi // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*f5c631daSSadaf Ebrahimi // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*f5c631daSSadaf Ebrahimi // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*f5c631daSSadaf Ebrahimi // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*f5c631daSSadaf Ebrahimi // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*f5c631daSSadaf Ebrahimi // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26*f5c631daSSadaf Ebrahimi // POSSIBILITY OF SUCH DAMAGE.
27*f5c631daSSadaf Ebrahimi 
28*f5c631daSSadaf Ebrahimi #ifndef VIXL_CONSTANTS_AARCH32_H_
29*f5c631daSSadaf Ebrahimi #define VIXL_CONSTANTS_AARCH32_H_
30*f5c631daSSadaf Ebrahimi 
31*f5c631daSSadaf Ebrahimi extern "C" {
32*f5c631daSSadaf Ebrahimi #include <stdint.h>
33*f5c631daSSadaf Ebrahimi }
34*f5c631daSSadaf Ebrahimi 
35*f5c631daSSadaf Ebrahimi #include "globals-vixl.h"
36*f5c631daSSadaf Ebrahimi 
37*f5c631daSSadaf Ebrahimi 
38*f5c631daSSadaf Ebrahimi namespace vixl {
39*f5c631daSSadaf Ebrahimi namespace aarch32 {
40*f5c631daSSadaf Ebrahimi 
41*f5c631daSSadaf Ebrahimi enum InstructionSet { A32, T32 };
42*f5c631daSSadaf Ebrahimi #ifdef VIXL_INCLUDE_TARGET_T32_ONLY
43*f5c631daSSadaf Ebrahimi const InstructionSet kDefaultISA = T32;
44*f5c631daSSadaf Ebrahimi #else
45*f5c631daSSadaf Ebrahimi const InstructionSet kDefaultISA = A32;
46*f5c631daSSadaf Ebrahimi #endif
47*f5c631daSSadaf Ebrahimi 
48*f5c631daSSadaf Ebrahimi const unsigned kRegSizeInBits = 32;
49*f5c631daSSadaf Ebrahimi const unsigned kRegSizeInBytes = kRegSizeInBits / 8;
50*f5c631daSSadaf Ebrahimi const unsigned kSRegSizeInBits = 32;
51*f5c631daSSadaf Ebrahimi const unsigned kSRegSizeInBytes = kSRegSizeInBits / 8;
52*f5c631daSSadaf Ebrahimi const unsigned kDRegSizeInBits = 64;
53*f5c631daSSadaf Ebrahimi const unsigned kDRegSizeInBytes = kDRegSizeInBits / 8;
54*f5c631daSSadaf Ebrahimi const unsigned kQRegSizeInBits = 128;
55*f5c631daSSadaf Ebrahimi const unsigned kQRegSizeInBytes = kQRegSizeInBits / 8;
56*f5c631daSSadaf Ebrahimi 
57*f5c631daSSadaf Ebrahimi const unsigned kNumberOfRegisters = 16;
58*f5c631daSSadaf Ebrahimi const unsigned kNumberOfSRegisters = 32;
59*f5c631daSSadaf Ebrahimi const unsigned kMaxNumberOfDRegisters = 32;
60*f5c631daSSadaf Ebrahimi const unsigned kNumberOfQRegisters = 16;
61*f5c631daSSadaf Ebrahimi const unsigned kNumberOfT32LowRegisters = 8;
62*f5c631daSSadaf Ebrahimi 
63*f5c631daSSadaf Ebrahimi const unsigned kIpCode = 12;
64*f5c631daSSadaf Ebrahimi const unsigned kSpCode = 13;
65*f5c631daSSadaf Ebrahimi const unsigned kLrCode = 14;
66*f5c631daSSadaf Ebrahimi const unsigned kPcCode = 15;
67*f5c631daSSadaf Ebrahimi 
68*f5c631daSSadaf Ebrahimi const unsigned kT32PcDelta = 4;
69*f5c631daSSadaf Ebrahimi const unsigned kA32PcDelta = 8;
70*f5c631daSSadaf Ebrahimi 
71*f5c631daSSadaf Ebrahimi const unsigned kRRXEncodedValue = 3;
72*f5c631daSSadaf Ebrahimi 
73*f5c631daSSadaf Ebrahimi const unsigned kCoprocMask = 0xe;
74*f5c631daSSadaf Ebrahimi const unsigned kInvalidCoprocMask = 0xa;
75*f5c631daSSadaf Ebrahimi 
76*f5c631daSSadaf Ebrahimi const unsigned kLowestT32_32Opcode = 0xe8000000;
77*f5c631daSSadaf Ebrahimi 
78*f5c631daSSadaf Ebrahimi const uint32_t kUnknownValue = 0xdeadbeef;
79*f5c631daSSadaf Ebrahimi 
80*f5c631daSSadaf Ebrahimi const uint32_t kMaxInstructionSizeInBytes = 4;
81*f5c631daSSadaf Ebrahimi const uint32_t kA32InstructionSizeInBytes = 4;
82*f5c631daSSadaf Ebrahimi const uint32_t k32BitT32InstructionSizeInBytes = 4;
83*f5c631daSSadaf Ebrahimi const uint32_t k16BitT32InstructionSizeInBytes = 2;
84*f5c631daSSadaf Ebrahimi 
85*f5c631daSSadaf Ebrahimi // Maximum size emitted by a single T32 unconditional macro-instruction.
86*f5c631daSSadaf Ebrahimi const uint32_t kMaxT32MacroInstructionSizeInBytes = 32;
87*f5c631daSSadaf Ebrahimi 
88*f5c631daSSadaf Ebrahimi const uint32_t kCallerSavedRegistersMask = 0x500f;
89*f5c631daSSadaf Ebrahimi 
90*f5c631daSSadaf Ebrahimi const uint16_t k16BitT32NopOpcode = 0xbf00;
91*f5c631daSSadaf Ebrahimi const uint16_t kCbzCbnzMask = 0xf500;
92*f5c631daSSadaf Ebrahimi const uint16_t kCbzCbnzValue = 0xb100;
93*f5c631daSSadaf Ebrahimi 
94*f5c631daSSadaf Ebrahimi const int32_t kCbzCbnzRange = 126;
95*f5c631daSSadaf Ebrahimi const int32_t kBConditionalNarrowRange = 254;
96*f5c631daSSadaf Ebrahimi const int32_t kBNarrowRange = 2046;
97*f5c631daSSadaf Ebrahimi const int32_t kNearLabelRange = kBNarrowRange;
98*f5c631daSSadaf Ebrahimi 
99*f5c631daSSadaf Ebrahimi enum SystemFunctionsOpcodes { kPrintfCode };
100*f5c631daSSadaf Ebrahimi 
101*f5c631daSSadaf Ebrahimi enum BranchHint { kNear, kFar, kBranchWithoutHint };
102*f5c631daSSadaf Ebrahimi 
103*f5c631daSSadaf Ebrahimi // Start of generated code.
104*f5c631daSSadaf Ebrahimi // AArch32 version implemented by the library (v8.0).
105*f5c631daSSadaf Ebrahimi // The encoding for vX.Y is: (X << 8) | Y.
106*f5c631daSSadaf Ebrahimi #define AARCH32_VERSION 0x0800
107*f5c631daSSadaf Ebrahimi 
108*f5c631daSSadaf Ebrahimi enum InstructionAttribute {
109*f5c631daSSadaf Ebrahimi   kNoAttribute = 0,
110*f5c631daSSadaf Ebrahimi   kArithmetic = 0x1,
111*f5c631daSSadaf Ebrahimi   kBitwise = 0x2,
112*f5c631daSSadaf Ebrahimi   kShift = 0x4,
113*f5c631daSSadaf Ebrahimi   kAddress = 0x8,
114*f5c631daSSadaf Ebrahimi   kBranch = 0x10,
115*f5c631daSSadaf Ebrahimi   kSystem = 0x20,
116*f5c631daSSadaf Ebrahimi   kFpNeon = 0x40,
117*f5c631daSSadaf Ebrahimi   kLoadStore = 0x80,
118*f5c631daSSadaf Ebrahimi   kLoadStoreMultiple = 0x100
119*f5c631daSSadaf Ebrahimi };
120*f5c631daSSadaf Ebrahimi 
121*f5c631daSSadaf Ebrahimi enum InstructionType {
122*f5c631daSSadaf Ebrahimi   kUndefInstructionType,
123*f5c631daSSadaf Ebrahimi   kAdc,
124*f5c631daSSadaf Ebrahimi   kAdcs,
125*f5c631daSSadaf Ebrahimi   kAdd,
126*f5c631daSSadaf Ebrahimi   kAdds,
127*f5c631daSSadaf Ebrahimi   kAddw,
128*f5c631daSSadaf Ebrahimi   kAdr,
129*f5c631daSSadaf Ebrahimi   kAnd,
130*f5c631daSSadaf Ebrahimi   kAnds,
131*f5c631daSSadaf Ebrahimi   kAsr,
132*f5c631daSSadaf Ebrahimi   kAsrs,
133*f5c631daSSadaf Ebrahimi   kB,
134*f5c631daSSadaf Ebrahimi   kBfc,
135*f5c631daSSadaf Ebrahimi   kBfi,
136*f5c631daSSadaf Ebrahimi   kBic,
137*f5c631daSSadaf Ebrahimi   kBics,
138*f5c631daSSadaf Ebrahimi   kBkpt,
139*f5c631daSSadaf Ebrahimi   kBl,
140*f5c631daSSadaf Ebrahimi   kBlx,
141*f5c631daSSadaf Ebrahimi   kBx,
142*f5c631daSSadaf Ebrahimi   kBxj,
143*f5c631daSSadaf Ebrahimi   kCbnz,
144*f5c631daSSadaf Ebrahimi   kCbz,
145*f5c631daSSadaf Ebrahimi   kClrex,
146*f5c631daSSadaf Ebrahimi   kClz,
147*f5c631daSSadaf Ebrahimi   kCmn,
148*f5c631daSSadaf Ebrahimi   kCmp,
149*f5c631daSSadaf Ebrahimi   kCrc32b,
150*f5c631daSSadaf Ebrahimi   kCrc32cb,
151*f5c631daSSadaf Ebrahimi   kCrc32ch,
152*f5c631daSSadaf Ebrahimi   kCrc32cw,
153*f5c631daSSadaf Ebrahimi   kCrc32h,
154*f5c631daSSadaf Ebrahimi   kCrc32w,
155*f5c631daSSadaf Ebrahimi   kDmb,
156*f5c631daSSadaf Ebrahimi   kDsb,
157*f5c631daSSadaf Ebrahimi   kEor,
158*f5c631daSSadaf Ebrahimi   kEors,
159*f5c631daSSadaf Ebrahimi   kFldmdbx,
160*f5c631daSSadaf Ebrahimi   kFldmiax,
161*f5c631daSSadaf Ebrahimi   kFstmdbx,
162*f5c631daSSadaf Ebrahimi   kFstmiax,
163*f5c631daSSadaf Ebrahimi   kHlt,
164*f5c631daSSadaf Ebrahimi   kHvc,
165*f5c631daSSadaf Ebrahimi   kIsb,
166*f5c631daSSadaf Ebrahimi   kIt,
167*f5c631daSSadaf Ebrahimi   kLda,
168*f5c631daSSadaf Ebrahimi   kLdab,
169*f5c631daSSadaf Ebrahimi   kLdaex,
170*f5c631daSSadaf Ebrahimi   kLdaexb,
171*f5c631daSSadaf Ebrahimi   kLdaexd,
172*f5c631daSSadaf Ebrahimi   kLdaexh,
173*f5c631daSSadaf Ebrahimi   kLdah,
174*f5c631daSSadaf Ebrahimi   kLdm,
175*f5c631daSSadaf Ebrahimi   kLdmda,
176*f5c631daSSadaf Ebrahimi   kLdmdb,
177*f5c631daSSadaf Ebrahimi   kLdmea,
178*f5c631daSSadaf Ebrahimi   kLdmed,
179*f5c631daSSadaf Ebrahimi   kLdmfa,
180*f5c631daSSadaf Ebrahimi   kLdmfd,
181*f5c631daSSadaf Ebrahimi   kLdmib,
182*f5c631daSSadaf Ebrahimi   kLdr,
183*f5c631daSSadaf Ebrahimi   kLdrb,
184*f5c631daSSadaf Ebrahimi   kLdrd,
185*f5c631daSSadaf Ebrahimi   kLdrex,
186*f5c631daSSadaf Ebrahimi   kLdrexb,
187*f5c631daSSadaf Ebrahimi   kLdrexd,
188*f5c631daSSadaf Ebrahimi   kLdrexh,
189*f5c631daSSadaf Ebrahimi   kLdrh,
190*f5c631daSSadaf Ebrahimi   kLdrsb,
191*f5c631daSSadaf Ebrahimi   kLdrsh,
192*f5c631daSSadaf Ebrahimi   kLsl,
193*f5c631daSSadaf Ebrahimi   kLsls,
194*f5c631daSSadaf Ebrahimi   kLsr,
195*f5c631daSSadaf Ebrahimi   kLsrs,
196*f5c631daSSadaf Ebrahimi   kMla,
197*f5c631daSSadaf Ebrahimi   kMlas,
198*f5c631daSSadaf Ebrahimi   kMls,
199*f5c631daSSadaf Ebrahimi   kMov,
200*f5c631daSSadaf Ebrahimi   kMovs,
201*f5c631daSSadaf Ebrahimi   kMovt,
202*f5c631daSSadaf Ebrahimi   kMovw,
203*f5c631daSSadaf Ebrahimi   kMrs,
204*f5c631daSSadaf Ebrahimi   kMsr,
205*f5c631daSSadaf Ebrahimi   kMul,
206*f5c631daSSadaf Ebrahimi   kMuls,
207*f5c631daSSadaf Ebrahimi   kMvn,
208*f5c631daSSadaf Ebrahimi   kMvns,
209*f5c631daSSadaf Ebrahimi   kNop,
210*f5c631daSSadaf Ebrahimi   kOrn,
211*f5c631daSSadaf Ebrahimi   kOrns,
212*f5c631daSSadaf Ebrahimi   kOrr,
213*f5c631daSSadaf Ebrahimi   kOrrs,
214*f5c631daSSadaf Ebrahimi   kPkhbt,
215*f5c631daSSadaf Ebrahimi   kPkhtb,
216*f5c631daSSadaf Ebrahimi   kPld,
217*f5c631daSSadaf Ebrahimi   kPldw,
218*f5c631daSSadaf Ebrahimi   kPli,
219*f5c631daSSadaf Ebrahimi   kPop,
220*f5c631daSSadaf Ebrahimi   kPush,
221*f5c631daSSadaf Ebrahimi   kQadd,
222*f5c631daSSadaf Ebrahimi   kQadd16,
223*f5c631daSSadaf Ebrahimi   kQadd8,
224*f5c631daSSadaf Ebrahimi   kQasx,
225*f5c631daSSadaf Ebrahimi   kQdadd,
226*f5c631daSSadaf Ebrahimi   kQdsub,
227*f5c631daSSadaf Ebrahimi   kQsax,
228*f5c631daSSadaf Ebrahimi   kQsub,
229*f5c631daSSadaf Ebrahimi   kQsub16,
230*f5c631daSSadaf Ebrahimi   kQsub8,
231*f5c631daSSadaf Ebrahimi   kRbit,
232*f5c631daSSadaf Ebrahimi   kRev,
233*f5c631daSSadaf Ebrahimi   kRev16,
234*f5c631daSSadaf Ebrahimi   kRevsh,
235*f5c631daSSadaf Ebrahimi   kRor,
236*f5c631daSSadaf Ebrahimi   kRors,
237*f5c631daSSadaf Ebrahimi   kRrx,
238*f5c631daSSadaf Ebrahimi   kRrxs,
239*f5c631daSSadaf Ebrahimi   kRsb,
240*f5c631daSSadaf Ebrahimi   kRsbs,
241*f5c631daSSadaf Ebrahimi   kRsc,
242*f5c631daSSadaf Ebrahimi   kRscs,
243*f5c631daSSadaf Ebrahimi   kSadd16,
244*f5c631daSSadaf Ebrahimi   kSadd8,
245*f5c631daSSadaf Ebrahimi   kSasx,
246*f5c631daSSadaf Ebrahimi   kSbc,
247*f5c631daSSadaf Ebrahimi   kSbcs,
248*f5c631daSSadaf Ebrahimi   kSbfx,
249*f5c631daSSadaf Ebrahimi   kSdiv,
250*f5c631daSSadaf Ebrahimi   kSel,
251*f5c631daSSadaf Ebrahimi   kShadd16,
252*f5c631daSSadaf Ebrahimi   kShadd8,
253*f5c631daSSadaf Ebrahimi   kShasx,
254*f5c631daSSadaf Ebrahimi   kShsax,
255*f5c631daSSadaf Ebrahimi   kShsub16,
256*f5c631daSSadaf Ebrahimi   kShsub8,
257*f5c631daSSadaf Ebrahimi   kSmlabb,
258*f5c631daSSadaf Ebrahimi   kSmlabt,
259*f5c631daSSadaf Ebrahimi   kSmlad,
260*f5c631daSSadaf Ebrahimi   kSmladx,
261*f5c631daSSadaf Ebrahimi   kSmlal,
262*f5c631daSSadaf Ebrahimi   kSmlalbb,
263*f5c631daSSadaf Ebrahimi   kSmlalbt,
264*f5c631daSSadaf Ebrahimi   kSmlald,
265*f5c631daSSadaf Ebrahimi   kSmlaldx,
266*f5c631daSSadaf Ebrahimi   kSmlals,
267*f5c631daSSadaf Ebrahimi   kSmlaltb,
268*f5c631daSSadaf Ebrahimi   kSmlaltt,
269*f5c631daSSadaf Ebrahimi   kSmlatb,
270*f5c631daSSadaf Ebrahimi   kSmlatt,
271*f5c631daSSadaf Ebrahimi   kSmlawb,
272*f5c631daSSadaf Ebrahimi   kSmlawt,
273*f5c631daSSadaf Ebrahimi   kSmlsd,
274*f5c631daSSadaf Ebrahimi   kSmlsdx,
275*f5c631daSSadaf Ebrahimi   kSmlsld,
276*f5c631daSSadaf Ebrahimi   kSmlsldx,
277*f5c631daSSadaf Ebrahimi   kSmmla,
278*f5c631daSSadaf Ebrahimi   kSmmlar,
279*f5c631daSSadaf Ebrahimi   kSmmls,
280*f5c631daSSadaf Ebrahimi   kSmmlsr,
281*f5c631daSSadaf Ebrahimi   kSmmul,
282*f5c631daSSadaf Ebrahimi   kSmmulr,
283*f5c631daSSadaf Ebrahimi   kSmuad,
284*f5c631daSSadaf Ebrahimi   kSmuadx,
285*f5c631daSSadaf Ebrahimi   kSmulbb,
286*f5c631daSSadaf Ebrahimi   kSmulbt,
287*f5c631daSSadaf Ebrahimi   kSmull,
288*f5c631daSSadaf Ebrahimi   kSmulls,
289*f5c631daSSadaf Ebrahimi   kSmultb,
290*f5c631daSSadaf Ebrahimi   kSmultt,
291*f5c631daSSadaf Ebrahimi   kSmulwb,
292*f5c631daSSadaf Ebrahimi   kSmulwt,
293*f5c631daSSadaf Ebrahimi   kSmusd,
294*f5c631daSSadaf Ebrahimi   kSmusdx,
295*f5c631daSSadaf Ebrahimi   kSsat,
296*f5c631daSSadaf Ebrahimi   kSsat16,
297*f5c631daSSadaf Ebrahimi   kSsax,
298*f5c631daSSadaf Ebrahimi   kSsub16,
299*f5c631daSSadaf Ebrahimi   kSsub8,
300*f5c631daSSadaf Ebrahimi   kStl,
301*f5c631daSSadaf Ebrahimi   kStlb,
302*f5c631daSSadaf Ebrahimi   kStlex,
303*f5c631daSSadaf Ebrahimi   kStlexb,
304*f5c631daSSadaf Ebrahimi   kStlexd,
305*f5c631daSSadaf Ebrahimi   kStlexh,
306*f5c631daSSadaf Ebrahimi   kStlh,
307*f5c631daSSadaf Ebrahimi   kStm,
308*f5c631daSSadaf Ebrahimi   kStmda,
309*f5c631daSSadaf Ebrahimi   kStmdb,
310*f5c631daSSadaf Ebrahimi   kStmea,
311*f5c631daSSadaf Ebrahimi   kStmed,
312*f5c631daSSadaf Ebrahimi   kStmfa,
313*f5c631daSSadaf Ebrahimi   kStmfd,
314*f5c631daSSadaf Ebrahimi   kStmib,
315*f5c631daSSadaf Ebrahimi   kStr,
316*f5c631daSSadaf Ebrahimi   kStrb,
317*f5c631daSSadaf Ebrahimi   kStrd,
318*f5c631daSSadaf Ebrahimi   kStrex,
319*f5c631daSSadaf Ebrahimi   kStrexb,
320*f5c631daSSadaf Ebrahimi   kStrexd,
321*f5c631daSSadaf Ebrahimi   kStrexh,
322*f5c631daSSadaf Ebrahimi   kStrh,
323*f5c631daSSadaf Ebrahimi   kSub,
324*f5c631daSSadaf Ebrahimi   kSubs,
325*f5c631daSSadaf Ebrahimi   kSubw,
326*f5c631daSSadaf Ebrahimi   kSvc,
327*f5c631daSSadaf Ebrahimi   kSxtab,
328*f5c631daSSadaf Ebrahimi   kSxtab16,
329*f5c631daSSadaf Ebrahimi   kSxtah,
330*f5c631daSSadaf Ebrahimi   kSxtb,
331*f5c631daSSadaf Ebrahimi   kSxtb16,
332*f5c631daSSadaf Ebrahimi   kSxth,
333*f5c631daSSadaf Ebrahimi   kTbb,
334*f5c631daSSadaf Ebrahimi   kTbh,
335*f5c631daSSadaf Ebrahimi   kTeq,
336*f5c631daSSadaf Ebrahimi   kTst,
337*f5c631daSSadaf Ebrahimi   kUadd16,
338*f5c631daSSadaf Ebrahimi   kUadd8,
339*f5c631daSSadaf Ebrahimi   kUasx,
340*f5c631daSSadaf Ebrahimi   kUbfx,
341*f5c631daSSadaf Ebrahimi   kUdf,
342*f5c631daSSadaf Ebrahimi   kUdiv,
343*f5c631daSSadaf Ebrahimi   kUhadd16,
344*f5c631daSSadaf Ebrahimi   kUhadd8,
345*f5c631daSSadaf Ebrahimi   kUhasx,
346*f5c631daSSadaf Ebrahimi   kUhsax,
347*f5c631daSSadaf Ebrahimi   kUhsub16,
348*f5c631daSSadaf Ebrahimi   kUhsub8,
349*f5c631daSSadaf Ebrahimi   kUmaal,
350*f5c631daSSadaf Ebrahimi   kUmlal,
351*f5c631daSSadaf Ebrahimi   kUmlals,
352*f5c631daSSadaf Ebrahimi   kUmull,
353*f5c631daSSadaf Ebrahimi   kUmulls,
354*f5c631daSSadaf Ebrahimi   kUqadd16,
355*f5c631daSSadaf Ebrahimi   kUqadd8,
356*f5c631daSSadaf Ebrahimi   kUqasx,
357*f5c631daSSadaf Ebrahimi   kUqsax,
358*f5c631daSSadaf Ebrahimi   kUqsub16,
359*f5c631daSSadaf Ebrahimi   kUqsub8,
360*f5c631daSSadaf Ebrahimi   kUsad8,
361*f5c631daSSadaf Ebrahimi   kUsada8,
362*f5c631daSSadaf Ebrahimi   kUsat,
363*f5c631daSSadaf Ebrahimi   kUsat16,
364*f5c631daSSadaf Ebrahimi   kUsax,
365*f5c631daSSadaf Ebrahimi   kUsub16,
366*f5c631daSSadaf Ebrahimi   kUsub8,
367*f5c631daSSadaf Ebrahimi   kUxtab,
368*f5c631daSSadaf Ebrahimi   kUxtab16,
369*f5c631daSSadaf Ebrahimi   kUxtah,
370*f5c631daSSadaf Ebrahimi   kUxtb,
371*f5c631daSSadaf Ebrahimi   kUxtb16,
372*f5c631daSSadaf Ebrahimi   kUxth,
373*f5c631daSSadaf Ebrahimi   kVaba,
374*f5c631daSSadaf Ebrahimi   kVabal,
375*f5c631daSSadaf Ebrahimi   kVabd,
376*f5c631daSSadaf Ebrahimi   kVabdl,
377*f5c631daSSadaf Ebrahimi   kVabs,
378*f5c631daSSadaf Ebrahimi   kVacge,
379*f5c631daSSadaf Ebrahimi   kVacgt,
380*f5c631daSSadaf Ebrahimi   kVacle,
381*f5c631daSSadaf Ebrahimi   kVaclt,
382*f5c631daSSadaf Ebrahimi   kVadd,
383*f5c631daSSadaf Ebrahimi   kVaddhn,
384*f5c631daSSadaf Ebrahimi   kVaddl,
385*f5c631daSSadaf Ebrahimi   kVaddw,
386*f5c631daSSadaf Ebrahimi   kVand,
387*f5c631daSSadaf Ebrahimi   kVbic,
388*f5c631daSSadaf Ebrahimi   kVbif,
389*f5c631daSSadaf Ebrahimi   kVbit,
390*f5c631daSSadaf Ebrahimi   kVbsl,
391*f5c631daSSadaf Ebrahimi   kVceq,
392*f5c631daSSadaf Ebrahimi   kVcge,
393*f5c631daSSadaf Ebrahimi   kVcgt,
394*f5c631daSSadaf Ebrahimi   kVcle,
395*f5c631daSSadaf Ebrahimi   kVcls,
396*f5c631daSSadaf Ebrahimi   kVclt,
397*f5c631daSSadaf Ebrahimi   kVclz,
398*f5c631daSSadaf Ebrahimi   kVcmp,
399*f5c631daSSadaf Ebrahimi   kVcmpe,
400*f5c631daSSadaf Ebrahimi   kVcnt,
401*f5c631daSSadaf Ebrahimi   kVcvt,
402*f5c631daSSadaf Ebrahimi   kVcvta,
403*f5c631daSSadaf Ebrahimi   kVcvtb,
404*f5c631daSSadaf Ebrahimi   kVcvtm,
405*f5c631daSSadaf Ebrahimi   kVcvtn,
406*f5c631daSSadaf Ebrahimi   kVcvtp,
407*f5c631daSSadaf Ebrahimi   kVcvtr,
408*f5c631daSSadaf Ebrahimi   kVcvtt,
409*f5c631daSSadaf Ebrahimi   kVdiv,
410*f5c631daSSadaf Ebrahimi   kVdup,
411*f5c631daSSadaf Ebrahimi   kVeor,
412*f5c631daSSadaf Ebrahimi   kVext,
413*f5c631daSSadaf Ebrahimi   kVfma,
414*f5c631daSSadaf Ebrahimi   kVfms,
415*f5c631daSSadaf Ebrahimi   kVfnma,
416*f5c631daSSadaf Ebrahimi   kVfnms,
417*f5c631daSSadaf Ebrahimi   kVhadd,
418*f5c631daSSadaf Ebrahimi   kVhsub,
419*f5c631daSSadaf Ebrahimi   kVld1,
420*f5c631daSSadaf Ebrahimi   kVld2,
421*f5c631daSSadaf Ebrahimi   kVld3,
422*f5c631daSSadaf Ebrahimi   kVld4,
423*f5c631daSSadaf Ebrahimi   kVldm,
424*f5c631daSSadaf Ebrahimi   kVldmdb,
425*f5c631daSSadaf Ebrahimi   kVldmia,
426*f5c631daSSadaf Ebrahimi   kVldr,
427*f5c631daSSadaf Ebrahimi   kVmax,
428*f5c631daSSadaf Ebrahimi   kVmaxnm,
429*f5c631daSSadaf Ebrahimi   kVmin,
430*f5c631daSSadaf Ebrahimi   kVminnm,
431*f5c631daSSadaf Ebrahimi   kVmla,
432*f5c631daSSadaf Ebrahimi   kVmlal,
433*f5c631daSSadaf Ebrahimi   kVmls,
434*f5c631daSSadaf Ebrahimi   kVmlsl,
435*f5c631daSSadaf Ebrahimi   kVmov,
436*f5c631daSSadaf Ebrahimi   kVmovl,
437*f5c631daSSadaf Ebrahimi   kVmovn,
438*f5c631daSSadaf Ebrahimi   kVmrs,
439*f5c631daSSadaf Ebrahimi   kVmsr,
440*f5c631daSSadaf Ebrahimi   kVmul,
441*f5c631daSSadaf Ebrahimi   kVmull,
442*f5c631daSSadaf Ebrahimi   kVmvn,
443*f5c631daSSadaf Ebrahimi   kVneg,
444*f5c631daSSadaf Ebrahimi   kVnmla,
445*f5c631daSSadaf Ebrahimi   kVnmls,
446*f5c631daSSadaf Ebrahimi   kVnmul,
447*f5c631daSSadaf Ebrahimi   kVorn,
448*f5c631daSSadaf Ebrahimi   kVorr,
449*f5c631daSSadaf Ebrahimi   kVpadal,
450*f5c631daSSadaf Ebrahimi   kVpadd,
451*f5c631daSSadaf Ebrahimi   kVpaddl,
452*f5c631daSSadaf Ebrahimi   kVpmax,
453*f5c631daSSadaf Ebrahimi   kVpmin,
454*f5c631daSSadaf Ebrahimi   kVpop,
455*f5c631daSSadaf Ebrahimi   kVpush,
456*f5c631daSSadaf Ebrahimi   kVqabs,
457*f5c631daSSadaf Ebrahimi   kVqadd,
458*f5c631daSSadaf Ebrahimi   kVqdmlal,
459*f5c631daSSadaf Ebrahimi   kVqdmlsl,
460*f5c631daSSadaf Ebrahimi   kVqdmulh,
461*f5c631daSSadaf Ebrahimi   kVqdmull,
462*f5c631daSSadaf Ebrahimi   kVqmovn,
463*f5c631daSSadaf Ebrahimi   kVqmovun,
464*f5c631daSSadaf Ebrahimi   kVqneg,
465*f5c631daSSadaf Ebrahimi   kVqrdmulh,
466*f5c631daSSadaf Ebrahimi   kVqrshl,
467*f5c631daSSadaf Ebrahimi   kVqrshrn,
468*f5c631daSSadaf Ebrahimi   kVqrshrun,
469*f5c631daSSadaf Ebrahimi   kVqshl,
470*f5c631daSSadaf Ebrahimi   kVqshlu,
471*f5c631daSSadaf Ebrahimi   kVqshrn,
472*f5c631daSSadaf Ebrahimi   kVqshrun,
473*f5c631daSSadaf Ebrahimi   kVqsub,
474*f5c631daSSadaf Ebrahimi   kVraddhn,
475*f5c631daSSadaf Ebrahimi   kVrecpe,
476*f5c631daSSadaf Ebrahimi   kVrecps,
477*f5c631daSSadaf Ebrahimi   kVrev16,
478*f5c631daSSadaf Ebrahimi   kVrev32,
479*f5c631daSSadaf Ebrahimi   kVrev64,
480*f5c631daSSadaf Ebrahimi   kVrhadd,
481*f5c631daSSadaf Ebrahimi   kVrinta,
482*f5c631daSSadaf Ebrahimi   kVrintm,
483*f5c631daSSadaf Ebrahimi   kVrintn,
484*f5c631daSSadaf Ebrahimi   kVrintp,
485*f5c631daSSadaf Ebrahimi   kVrintr,
486*f5c631daSSadaf Ebrahimi   kVrintx,
487*f5c631daSSadaf Ebrahimi   kVrintz,
488*f5c631daSSadaf Ebrahimi   kVrshl,
489*f5c631daSSadaf Ebrahimi   kVrshr,
490*f5c631daSSadaf Ebrahimi   kVrshrn,
491*f5c631daSSadaf Ebrahimi   kVrsqrte,
492*f5c631daSSadaf Ebrahimi   kVrsqrts,
493*f5c631daSSadaf Ebrahimi   kVrsra,
494*f5c631daSSadaf Ebrahimi   kVrsubhn,
495*f5c631daSSadaf Ebrahimi   kVseleq,
496*f5c631daSSadaf Ebrahimi   kVselge,
497*f5c631daSSadaf Ebrahimi   kVselgt,
498*f5c631daSSadaf Ebrahimi   kVselvs,
499*f5c631daSSadaf Ebrahimi   kVshl,
500*f5c631daSSadaf Ebrahimi   kVshll,
501*f5c631daSSadaf Ebrahimi   kVshr,
502*f5c631daSSadaf Ebrahimi   kVshrn,
503*f5c631daSSadaf Ebrahimi   kVsli,
504*f5c631daSSadaf Ebrahimi   kVsqrt,
505*f5c631daSSadaf Ebrahimi   kVsra,
506*f5c631daSSadaf Ebrahimi   kVsri,
507*f5c631daSSadaf Ebrahimi   kVst1,
508*f5c631daSSadaf Ebrahimi   kVst2,
509*f5c631daSSadaf Ebrahimi   kVst3,
510*f5c631daSSadaf Ebrahimi   kVst4,
511*f5c631daSSadaf Ebrahimi   kVstm,
512*f5c631daSSadaf Ebrahimi   kVstmdb,
513*f5c631daSSadaf Ebrahimi   kVstmia,
514*f5c631daSSadaf Ebrahimi   kVstr,
515*f5c631daSSadaf Ebrahimi   kVsub,
516*f5c631daSSadaf Ebrahimi   kVsubhn,
517*f5c631daSSadaf Ebrahimi   kVsubl,
518*f5c631daSSadaf Ebrahimi   kVsubw,
519*f5c631daSSadaf Ebrahimi   kVswp,
520*f5c631daSSadaf Ebrahimi   kVtbl,
521*f5c631daSSadaf Ebrahimi   kVtbx,
522*f5c631daSSadaf Ebrahimi   kVtrn,
523*f5c631daSSadaf Ebrahimi   kVtst,
524*f5c631daSSadaf Ebrahimi   kVuzp,
525*f5c631daSSadaf Ebrahimi   kVzip,
526*f5c631daSSadaf Ebrahimi   kYield
527*f5c631daSSadaf Ebrahimi };
528*f5c631daSSadaf Ebrahimi 
529*f5c631daSSadaf Ebrahimi const char* ToCString(InstructionType type);
530*f5c631daSSadaf Ebrahimi // End of generated code.
531*f5c631daSSadaf Ebrahimi 
532*f5c631daSSadaf Ebrahimi inline InstructionAttribute operator|(InstructionAttribute left,
533*f5c631daSSadaf Ebrahimi                                       InstructionAttribute right) {
534*f5c631daSSadaf Ebrahimi   return static_cast<InstructionAttribute>(static_cast<uint32_t>(left) |
535*f5c631daSSadaf Ebrahimi                                            static_cast<uint32_t>(right));
536*f5c631daSSadaf Ebrahimi }
537*f5c631daSSadaf Ebrahimi 
538*f5c631daSSadaf Ebrahimi }  // namespace aarch32
539*f5c631daSSadaf Ebrahimi }  // namespace vixl
540*f5c631daSSadaf Ebrahimi 
541*f5c631daSSadaf Ebrahimi #endif  // VIXL_CONSTANTS_AARCH32_H_
542