1//===-- CodeViewRegisters.def - CodeView registers --------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// See CV_HREG_e in cvconst.h. This should match the constants there.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef CV_REGISTER
14#define CV_REGISTER(name, value)
15#endif
16
17#if !defined(CV_REGISTERS_ALL) && !defined(CV_REGISTERS_X86) && \
18 !defined(CV_REGISTERS_ARM) && \
19 !defined(CV_REGISTERS_ARM64) && \
20 !defined(CV_REGISTERS_MIPS)
21#error Need include at least one register set.
22#endif
23
24// This currently only contains the "register subset shared by all processor
25// types" (ERR etc.) and the x86/arm64 registers.
26
27#if defined(CV_REGISTERS_ALL) || defined(CV_REGISTERS_X86)
28
29// Some system headers define macros that conflict with our enums. Every
30// compiler supported by LLVM has the push_macro and pop_macro pragmas, so use
31// them to avoid the conflict.
32#pragma push_macro("CR0")
33#pragma push_macro("CR1")
34#pragma push_macro("CR2")
35#pragma push_macro("CR3")
36#pragma push_macro("CR4")
37
38CV_REGISTER(ERR, 30000)
39CV_REGISTER(TEB, 30001)
40CV_REGISTER(TIMER, 30002)
41CV_REGISTER(EFAD1, 30003)
42CV_REGISTER(EFAD2, 30004)
43CV_REGISTER(EFAD3, 30005)
44CV_REGISTER(VFRAME, 30006)
45CV_REGISTER(HANDLE, 30007)
46CV_REGISTER(PARAMS, 30008)
47CV_REGISTER(LOCALS, 30009)
48CV_REGISTER(TID, 30010)
49CV_REGISTER(ENV, 30011)
50CV_REGISTER(CMDLN, 30012)
51
52CV_REGISTER(NONE, 0)
53CV_REGISTER(AL, 1)
54CV_REGISTER(CL, 2)
55CV_REGISTER(DL, 3)
56CV_REGISTER(BL, 4)
57CV_REGISTER(AH, 5)
58CV_REGISTER(CH, 6)
59CV_REGISTER(DH, 7)
60CV_REGISTER(BH, 8)
61CV_REGISTER(AX, 9)
62CV_REGISTER(CX, 10)
63CV_REGISTER(DX, 11)
64CV_REGISTER(BX, 12)
65CV_REGISTER(SP, 13)
66CV_REGISTER(BP, 14)
67CV_REGISTER(SI, 15)
68CV_REGISTER(DI, 16)
69CV_REGISTER(EAX, 17)
70CV_REGISTER(ECX, 18)
71CV_REGISTER(EDX, 19)
72CV_REGISTER(EBX, 20)
73CV_REGISTER(ESP, 21)
74CV_REGISTER(EBP, 22)
75CV_REGISTER(ESI, 23)
76CV_REGISTER(EDI, 24)
77CV_REGISTER(ES, 25)
78CV_REGISTER(CS, 26)
79CV_REGISTER(SS, 27)
80CV_REGISTER(DS, 28)
81CV_REGISTER(FS, 29)
82CV_REGISTER(GS, 30)
83CV_REGISTER(IP, 31)
84CV_REGISTER(FLAGS, 32)
85CV_REGISTER(EIP, 33)
86CV_REGISTER(EFLAGS, 34)
87CV_REGISTER(TEMP, 40)
88CV_REGISTER(TEMPH, 41)
89CV_REGISTER(QUOTE, 42)
90CV_REGISTER(PCDR3, 43)
91CV_REGISTER(PCDR4, 44)
92CV_REGISTER(PCDR5, 45)
93CV_REGISTER(PCDR6, 46)
94CV_REGISTER(PCDR7, 47)
95CV_REGISTER(CR0, 80)
96CV_REGISTER(CR1, 81)
97CV_REGISTER(CR2, 82)
98CV_REGISTER(CR3, 83)
99CV_REGISTER(CR4, 84)
100CV_REGISTER(DR0, 90)
101CV_REGISTER(DR1, 91)
102CV_REGISTER(DR2, 92)
103CV_REGISTER(DR3, 93)
104CV_REGISTER(DR4, 94)
105CV_REGISTER(DR5, 95)
106CV_REGISTER(DR6, 96)
107CV_REGISTER(DR7, 97)
108CV_REGISTER(GDTR, 110)
109CV_REGISTER(GDTL, 111)
110CV_REGISTER(IDTR, 112)
111CV_REGISTER(IDTL, 113)
112CV_REGISTER(LDTR, 114)
113CV_REGISTER(TR, 115)
114
115CV_REGISTER(PSEUDO1, 116)
116CV_REGISTER(PSEUDO2, 117)
117CV_REGISTER(PSEUDO3, 118)
118CV_REGISTER(PSEUDO4, 119)
119CV_REGISTER(PSEUDO5, 120)
120CV_REGISTER(PSEUDO6, 121)
121CV_REGISTER(PSEUDO7, 122)
122CV_REGISTER(PSEUDO8, 123)
123CV_REGISTER(PSEUDO9, 124)
124
125CV_REGISTER(ST0, 128)
126CV_REGISTER(ST1, 129)
127CV_REGISTER(ST2, 130)
128CV_REGISTER(ST3, 131)
129CV_REGISTER(ST4, 132)
130CV_REGISTER(ST5, 133)
131CV_REGISTER(ST6, 134)
132CV_REGISTER(ST7, 135)
133CV_REGISTER(CTRL, 136)
134CV_REGISTER(STAT, 137)
135CV_REGISTER(TAG, 138)
136CV_REGISTER(FPIP, 139)
137CV_REGISTER(FPCS, 140)
138CV_REGISTER(FPDO, 141)
139CV_REGISTER(FPDS, 142)
140CV_REGISTER(ISEM, 143)
141CV_REGISTER(FPEIP, 144)
142CV_REGISTER(FPEDO, 145)
143
144CV_REGISTER(MM0, 146)
145CV_REGISTER(MM1, 147)
146CV_REGISTER(MM2, 148)
147CV_REGISTER(MM3, 149)
148CV_REGISTER(MM4, 150)
149CV_REGISTER(MM5, 151)
150CV_REGISTER(MM6, 152)
151CV_REGISTER(MM7, 153)
152
153CV_REGISTER(XMM0, 154)
154CV_REGISTER(XMM1, 155)
155CV_REGISTER(XMM2, 156)
156CV_REGISTER(XMM3, 157)
157CV_REGISTER(XMM4, 158)
158CV_REGISTER(XMM5, 159)
159CV_REGISTER(XMM6, 160)
160CV_REGISTER(XMM7, 161)
161
162CV_REGISTER(MXCSR, 211)
163
164CV_REGISTER(EDXEAX, 212)
165
166CV_REGISTER(EMM0L, 220)
167CV_REGISTER(EMM1L, 221)
168CV_REGISTER(EMM2L, 222)
169CV_REGISTER(EMM3L, 223)
170CV_REGISTER(EMM4L, 224)
171CV_REGISTER(EMM5L, 225)
172CV_REGISTER(EMM6L, 226)
173CV_REGISTER(EMM7L, 227)
174
175CV_REGISTER(EMM0H, 228)
176CV_REGISTER(EMM1H, 229)
177CV_REGISTER(EMM2H, 230)
178CV_REGISTER(EMM3H, 231)
179CV_REGISTER(EMM4H, 232)
180CV_REGISTER(EMM5H, 233)
181CV_REGISTER(EMM6H, 234)
182CV_REGISTER(EMM7H, 235)
183
184CV_REGISTER(MM00, 236)
185CV_REGISTER(MM01, 237)
186CV_REGISTER(MM10, 238)
187CV_REGISTER(MM11, 239)
188CV_REGISTER(MM20, 240)
189CV_REGISTER(MM21, 241)
190CV_REGISTER(MM30, 242)
191CV_REGISTER(MM31, 243)
192CV_REGISTER(MM40, 244)
193CV_REGISTER(MM41, 245)
194CV_REGISTER(MM50, 246)
195CV_REGISTER(MM51, 247)
196CV_REGISTER(MM60, 248)
197CV_REGISTER(MM61, 249)
198CV_REGISTER(MM70, 250)
199CV_REGISTER(MM71, 251)
200
201CV_REGISTER(BND0, 396)
202CV_REGISTER(BND1, 397)
203CV_REGISTER(BND2, 398)
204
205
206CV_REGISTER(XMM8, 252)
207CV_REGISTER(XMM9, 253)
208CV_REGISTER(XMM10, 254)
209CV_REGISTER(XMM11, 255)
210CV_REGISTER(XMM12, 256)
211CV_REGISTER(XMM13, 257)
212CV_REGISTER(XMM14, 258)
213CV_REGISTER(XMM15, 259)
214
215
216CV_REGISTER(SIL, 324)
217CV_REGISTER(DIL, 325)
218CV_REGISTER(BPL, 326)
219CV_REGISTER(SPL, 327)
220
221CV_REGISTER(RAX, 328)
222CV_REGISTER(RBX, 329)
223CV_REGISTER(RCX, 330)
224CV_REGISTER(RDX, 331)
225CV_REGISTER(RSI, 332)
226CV_REGISTER(RDI, 333)
227CV_REGISTER(RBP, 334)
228CV_REGISTER(RSP, 335)
229
230CV_REGISTER(R8, 336)
231CV_REGISTER(R9, 337)
232CV_REGISTER(R10, 338)
233CV_REGISTER(R11, 339)
234CV_REGISTER(R12, 340)
235CV_REGISTER(R13, 341)
236CV_REGISTER(R14, 342)
237CV_REGISTER(R15, 343)
238
239CV_REGISTER(R8B, 344)
240CV_REGISTER(R9B, 345)
241CV_REGISTER(R10B, 346)
242CV_REGISTER(R11B, 347)
243CV_REGISTER(R12B, 348)
244CV_REGISTER(R13B, 349)
245CV_REGISTER(R14B, 350)
246CV_REGISTER(R15B, 351)
247
248CV_REGISTER(R8W, 352)
249CV_REGISTER(R9W, 353)
250CV_REGISTER(R10W, 354)
251CV_REGISTER(R11W, 355)
252CV_REGISTER(R12W, 356)
253CV_REGISTER(R13W, 357)
254CV_REGISTER(R14W, 358)
255CV_REGISTER(R15W, 359)
256
257CV_REGISTER(R8D, 360)
258CV_REGISTER(R9D, 361)
259CV_REGISTER(R10D, 362)
260CV_REGISTER(R11D, 363)
261CV_REGISTER(R12D, 364)
262CV_REGISTER(R13D, 365)
263CV_REGISTER(R14D, 366)
264CV_REGISTER(R15D, 367)
265
266
267// cvconst.h defines both CV_REG_YMM0 (252) and CV_AMD64_YMM0 (368). Keep the
268// original prefix to distinguish them.
269
270CV_REGISTER(AMD64_YMM0, 368)
271CV_REGISTER(AMD64_YMM1, 369)
272CV_REGISTER(AMD64_YMM2, 370)
273CV_REGISTER(AMD64_YMM3, 371)
274CV_REGISTER(AMD64_YMM4, 372)
275CV_REGISTER(AMD64_YMM5, 373)
276CV_REGISTER(AMD64_YMM6, 374)
277CV_REGISTER(AMD64_YMM7, 375)
278CV_REGISTER(AMD64_YMM8, 376)
279CV_REGISTER(AMD64_YMM9, 377)
280CV_REGISTER(AMD64_YMM10, 378)
281CV_REGISTER(AMD64_YMM11, 379)
282CV_REGISTER(AMD64_YMM12, 380)
283CV_REGISTER(AMD64_YMM13, 381)
284CV_REGISTER(AMD64_YMM14, 382)
285CV_REGISTER(AMD64_YMM15, 383)
286
287CV_REGISTER(AMD64_XMM16, 694)
288CV_REGISTER(AMD64_XMM17, 695)
289CV_REGISTER(AMD64_XMM18, 696)
290CV_REGISTER(AMD64_XMM19, 697)
291CV_REGISTER(AMD64_XMM20, 698)
292CV_REGISTER(AMD64_XMM21, 699)
293CV_REGISTER(AMD64_XMM22, 700)
294CV_REGISTER(AMD64_XMM23, 701)
295CV_REGISTER(AMD64_XMM24, 702)
296CV_REGISTER(AMD64_XMM25, 703)
297CV_REGISTER(AMD64_XMM26, 704)
298CV_REGISTER(AMD64_XMM27, 705)
299CV_REGISTER(AMD64_XMM28, 706)
300CV_REGISTER(AMD64_XMM29, 707)
301CV_REGISTER(AMD64_XMM30, 708)
302CV_REGISTER(AMD64_XMM31, 709)
303
304CV_REGISTER(AMD64_YMM16, 710)
305CV_REGISTER(AMD64_YMM17, 711)
306CV_REGISTER(AMD64_YMM18, 712)
307CV_REGISTER(AMD64_YMM19, 713)
308CV_REGISTER(AMD64_YMM20, 714)
309CV_REGISTER(AMD64_YMM21, 715)
310CV_REGISTER(AMD64_YMM22, 716)
311CV_REGISTER(AMD64_YMM23, 717)
312CV_REGISTER(AMD64_YMM24, 718)
313CV_REGISTER(AMD64_YMM25, 719)
314CV_REGISTER(AMD64_YMM26, 720)
315CV_REGISTER(AMD64_YMM27, 721)
316CV_REGISTER(AMD64_YMM28, 722)
317CV_REGISTER(AMD64_YMM29, 723)
318CV_REGISTER(AMD64_YMM30, 724)
319CV_REGISTER(AMD64_YMM31, 725)
320
321CV_REGISTER(AMD64_ZMM0, 726)
322CV_REGISTER(AMD64_ZMM1, 727)
323CV_REGISTER(AMD64_ZMM2, 728)
324CV_REGISTER(AMD64_ZMM3, 729)
325CV_REGISTER(AMD64_ZMM4, 730)
326CV_REGISTER(AMD64_ZMM5, 731)
327CV_REGISTER(AMD64_ZMM6, 732)
328CV_REGISTER(AMD64_ZMM7, 733)
329CV_REGISTER(AMD64_ZMM8, 734)
330CV_REGISTER(AMD64_ZMM9, 735)
331CV_REGISTER(AMD64_ZMM10, 736)
332CV_REGISTER(AMD64_ZMM11, 737)
333CV_REGISTER(AMD64_ZMM12, 738)
334CV_REGISTER(AMD64_ZMM13, 739)
335CV_REGISTER(AMD64_ZMM14, 740)
336CV_REGISTER(AMD64_ZMM15, 741)
337CV_REGISTER(AMD64_ZMM16, 742)
338CV_REGISTER(AMD64_ZMM17, 743)
339CV_REGISTER(AMD64_ZMM18, 744)
340CV_REGISTER(AMD64_ZMM19, 745)
341CV_REGISTER(AMD64_ZMM20, 746)
342CV_REGISTER(AMD64_ZMM21, 747)
343CV_REGISTER(AMD64_ZMM22, 748)
344CV_REGISTER(AMD64_ZMM23, 749)
345CV_REGISTER(AMD64_ZMM24, 750)
346CV_REGISTER(AMD64_ZMM25, 751)
347CV_REGISTER(AMD64_ZMM26, 752)
348CV_REGISTER(AMD64_ZMM27, 753)
349CV_REGISTER(AMD64_ZMM28, 754)
350CV_REGISTER(AMD64_ZMM29, 755)
351CV_REGISTER(AMD64_ZMM30, 756)
352CV_REGISTER(AMD64_ZMM31, 757)
353
354CV_REGISTER(AMD64_K0, 758)
355CV_REGISTER(AMD64_K1, 759)
356CV_REGISTER(AMD64_K2, 760)
357CV_REGISTER(AMD64_K3, 761)
358CV_REGISTER(AMD64_K4, 762)
359CV_REGISTER(AMD64_K5, 763)
360CV_REGISTER(AMD64_K6, 764)
361CV_REGISTER(AMD64_K7, 765)
362
363#pragma pop_macro("CR0")
364#pragma pop_macro("CR1")
365#pragma pop_macro("CR2")
366#pragma pop_macro("CR3")
367#pragma pop_macro("CR4")
368
369#endif // defined(CV_REGISTERS_ALL) || defined(CV_REGISTERS_X86)
370
371#if defined(CV_REGISTERS_ALL) || defined(CV_REGISTERS_ARM)
372
373// ARM registers
374
375CV_REGISTER(ARM_NOREG, 0)
376
377// General purpose 32-bit integer registers
378
379CV_REGISTER(ARM_R0, 10)
380CV_REGISTER(ARM_R1, 11)
381CV_REGISTER(ARM_R2, 12)
382CV_REGISTER(ARM_R3, 13)
383CV_REGISTER(ARM_R4, 14)
384CV_REGISTER(ARM_R5, 15)
385CV_REGISTER(ARM_R6, 16)
386CV_REGISTER(ARM_R7, 17)
387CV_REGISTER(ARM_R8, 18)
388CV_REGISTER(ARM_R9, 19)
389CV_REGISTER(ARM_R10, 20)
390CV_REGISTER(ARM_R11, 21)
391CV_REGISTER(ARM_R12, 22)
392CV_REGISTER(ARM_SP, 23)
393CV_REGISTER(ARM_LR, 24)
394CV_REGISTER(ARM_PC, 25)
395
396// Status register
397
398CV_REGISTER(ARM_CPSR, 26)
399
400// ARM VFPv1 registers
401
402CV_REGISTER(ARM_FPSCR, 40)
403CV_REGISTER(ARM_FPEXC, 41)
404
405CV_REGISTER(ARM_FS0, 50)
406CV_REGISTER(ARM_FS1, 51)
407CV_REGISTER(ARM_FS2, 52)
408CV_REGISTER(ARM_FS3, 53)
409CV_REGISTER(ARM_FS4, 54)
410CV_REGISTER(ARM_FS5, 55)
411CV_REGISTER(ARM_FS6, 56)
412CV_REGISTER(ARM_FS7, 57)
413CV_REGISTER(ARM_FS8, 58)
414CV_REGISTER(ARM_FS9, 59)
415CV_REGISTER(ARM_FS10, 60)
416CV_REGISTER(ARM_FS11, 61)
417CV_REGISTER(ARM_FS12, 62)
418CV_REGISTER(ARM_FS13, 63)
419CV_REGISTER(ARM_FS14, 64)
420CV_REGISTER(ARM_FS15, 65)
421CV_REGISTER(ARM_FS16, 66)
422CV_REGISTER(ARM_FS17, 67)
423CV_REGISTER(ARM_FS18, 68)
424CV_REGISTER(ARM_FS19, 69)
425CV_REGISTER(ARM_FS20, 70)
426CV_REGISTER(ARM_FS21, 71)
427CV_REGISTER(ARM_FS22, 72)
428CV_REGISTER(ARM_FS23, 73)
429CV_REGISTER(ARM_FS24, 74)
430CV_REGISTER(ARM_FS25, 75)
431CV_REGISTER(ARM_FS26, 76)
432CV_REGISTER(ARM_FS27, 77)
433CV_REGISTER(ARM_FS28, 78)
434CV_REGISTER(ARM_FS29, 79)
435CV_REGISTER(ARM_FS30, 80)
436CV_REGISTER(ARM_FS31, 81)
437
438// ARM VFPv3/NEON registers
439
440CV_REGISTER(ARM_FS32, 200)
441CV_REGISTER(ARM_FS33, 201)
442CV_REGISTER(ARM_FS34, 202)
443CV_REGISTER(ARM_FS35, 203)
444CV_REGISTER(ARM_FS36, 204)
445CV_REGISTER(ARM_FS37, 205)
446CV_REGISTER(ARM_FS38, 206)
447CV_REGISTER(ARM_FS39, 207)
448CV_REGISTER(ARM_FS40, 208)
449CV_REGISTER(ARM_FS41, 209)
450CV_REGISTER(ARM_FS42, 210)
451CV_REGISTER(ARM_FS43, 211)
452CV_REGISTER(ARM_FS44, 212)
453CV_REGISTER(ARM_FS45, 213)
454CV_REGISTER(ARM_FS46, 214)
455CV_REGISTER(ARM_FS47, 215)
456CV_REGISTER(ARM_FS48, 216)
457CV_REGISTER(ARM_FS49, 217)
458CV_REGISTER(ARM_FS50, 218)
459CV_REGISTER(ARM_FS51, 219)
460CV_REGISTER(ARM_FS52, 220)
461CV_REGISTER(ARM_FS53, 221)
462CV_REGISTER(ARM_FS54, 222)
463CV_REGISTER(ARM_FS55, 223)
464CV_REGISTER(ARM_FS56, 224)
465CV_REGISTER(ARM_FS57, 225)
466CV_REGISTER(ARM_FS58, 226)
467CV_REGISTER(ARM_FS59, 227)
468CV_REGISTER(ARM_FS60, 228)
469CV_REGISTER(ARM_FS61, 229)
470CV_REGISTER(ARM_FS62, 230)
471CV_REGISTER(ARM_FS63, 231)
472
473CV_REGISTER(ARM_ND0, 300)
474CV_REGISTER(ARM_ND1, 301)
475CV_REGISTER(ARM_ND2, 302)
476CV_REGISTER(ARM_ND3, 303)
477CV_REGISTER(ARM_ND4, 304)
478CV_REGISTER(ARM_ND5, 305)
479CV_REGISTER(ARM_ND6, 306)
480CV_REGISTER(ARM_ND7, 307)
481CV_REGISTER(ARM_ND8, 308)
482CV_REGISTER(ARM_ND9, 309)
483CV_REGISTER(ARM_ND10, 310)
484CV_REGISTER(ARM_ND11, 311)
485CV_REGISTER(ARM_ND12, 312)
486CV_REGISTER(ARM_ND13, 313)
487CV_REGISTER(ARM_ND14, 314)
488CV_REGISTER(ARM_ND15, 315)
489CV_REGISTER(ARM_ND16, 316)
490CV_REGISTER(ARM_ND17, 317)
491CV_REGISTER(ARM_ND18, 318)
492CV_REGISTER(ARM_ND19, 319)
493CV_REGISTER(ARM_ND20, 320)
494CV_REGISTER(ARM_ND21, 321)
495CV_REGISTER(ARM_ND22, 322)
496CV_REGISTER(ARM_ND23, 323)
497CV_REGISTER(ARM_ND24, 324)
498CV_REGISTER(ARM_ND25, 325)
499CV_REGISTER(ARM_ND26, 326)
500CV_REGISTER(ARM_ND27, 327)
501CV_REGISTER(ARM_ND28, 328)
502CV_REGISTER(ARM_ND29, 329)
503CV_REGISTER(ARM_ND30, 330)
504CV_REGISTER(ARM_ND31, 331)
505
506CV_REGISTER(ARM_NQ0, 400)
507CV_REGISTER(ARM_NQ1, 401)
508CV_REGISTER(ARM_NQ2, 402)
509CV_REGISTER(ARM_NQ3, 403)
510CV_REGISTER(ARM_NQ4, 404)
511CV_REGISTER(ARM_NQ5, 405)
512CV_REGISTER(ARM_NQ6, 406)
513CV_REGISTER(ARM_NQ7, 407)
514CV_REGISTER(ARM_NQ8, 408)
515CV_REGISTER(ARM_NQ9, 409)
516CV_REGISTER(ARM_NQ10, 410)
517CV_REGISTER(ARM_NQ11, 411)
518CV_REGISTER(ARM_NQ12, 412)
519CV_REGISTER(ARM_NQ13, 413)
520CV_REGISTER(ARM_NQ14, 414)
521CV_REGISTER(ARM_NQ15, 415)
522
523#endif // defined(CV_REGISTERS_ALL) || defined(CV_REGISTERS_ARM)
524
525#if defined(CV_REGISTERS_ALL) || defined(CV_REGISTERS_ARM64)
526
527// arm64intr.h from MSVC defines ARM64_FPSR and ARM64_FPCR, which conflicts with
528// these declarations.
529#pragma push_macro("ARM64_FPSR")
530#pragma push_macro("ARM64_FPCR")
531#undef ARM64_FPSR
532#undef ARM64_FPCR
533
534// ARM64 registers
535
536CV_REGISTER(ARM64_NOREG, 0)
537
538// General purpose 32-bit integer registers
539
540CV_REGISTER(ARM64_W0, 10)
541CV_REGISTER(ARM64_W1, 11)
542CV_REGISTER(ARM64_W2, 12)
543CV_REGISTER(ARM64_W3, 13)
544CV_REGISTER(ARM64_W4, 14)
545CV_REGISTER(ARM64_W5, 15)
546CV_REGISTER(ARM64_W6, 16)
547CV_REGISTER(ARM64_W7, 17)
548CV_REGISTER(ARM64_W8, 18)
549CV_REGISTER(ARM64_W9, 19)
550CV_REGISTER(ARM64_W10, 20)
551CV_REGISTER(ARM64_W11, 21)
552CV_REGISTER(ARM64_W12, 22)
553CV_REGISTER(ARM64_W13, 23)
554CV_REGISTER(ARM64_W14, 24)
555CV_REGISTER(ARM64_W15, 25)
556CV_REGISTER(ARM64_W16, 26)
557CV_REGISTER(ARM64_W17, 27)
558CV_REGISTER(ARM64_W18, 28)
559CV_REGISTER(ARM64_W19, 29)
560CV_REGISTER(ARM64_W20, 30)
561CV_REGISTER(ARM64_W21, 31)
562CV_REGISTER(ARM64_W22, 32)
563CV_REGISTER(ARM64_W23, 33)
564CV_REGISTER(ARM64_W24, 34)
565CV_REGISTER(ARM64_W25, 35)
566CV_REGISTER(ARM64_W26, 36)
567CV_REGISTER(ARM64_W27, 37)
568CV_REGISTER(ARM64_W28, 38)
569CV_REGISTER(ARM64_W29, 39)
570CV_REGISTER(ARM64_W30, 40)
571CV_REGISTER(ARM64_WZR, 41)
572
573// General purpose 64-bit integer registers
574
575CV_REGISTER(ARM64_X0, 50)
576CV_REGISTER(ARM64_X1, 51)
577CV_REGISTER(ARM64_X2, 52)
578CV_REGISTER(ARM64_X3, 53)
579CV_REGISTER(ARM64_X4, 54)
580CV_REGISTER(ARM64_X5, 55)
581CV_REGISTER(ARM64_X6, 56)
582CV_REGISTER(ARM64_X7, 57)
583CV_REGISTER(ARM64_X8, 58)
584CV_REGISTER(ARM64_X9, 59)
585CV_REGISTER(ARM64_X10, 60)
586CV_REGISTER(ARM64_X11, 61)
587CV_REGISTER(ARM64_X12, 62)
588CV_REGISTER(ARM64_X13, 63)
589CV_REGISTER(ARM64_X14, 64)
590CV_REGISTER(ARM64_X15, 65)
591CV_REGISTER(ARM64_X16, 66)
592CV_REGISTER(ARM64_X17, 67)
593CV_REGISTER(ARM64_X18, 68)
594CV_REGISTER(ARM64_X19, 69)
595CV_REGISTER(ARM64_X20, 70)
596CV_REGISTER(ARM64_X21, 71)
597CV_REGISTER(ARM64_X22, 72)
598CV_REGISTER(ARM64_X23, 73)
599CV_REGISTER(ARM64_X24, 74)
600CV_REGISTER(ARM64_X25, 75)
601CV_REGISTER(ARM64_X26, 76)
602CV_REGISTER(ARM64_X27, 77)
603CV_REGISTER(ARM64_X28, 78)
604CV_REGISTER(ARM64_FP, 79)
605CV_REGISTER(ARM64_LR, 80)
606CV_REGISTER(ARM64_SP, 81)
607CV_REGISTER(ARM64_ZR, 82)
608
609// status register
610
611CV_REGISTER(ARM64_NZCV, 90)
612
613// 32-bit floating point registers
614
615CV_REGISTER(ARM64_S0, 100)
616CV_REGISTER(ARM64_S1, 101)
617CV_REGISTER(ARM64_S2, 102)
618CV_REGISTER(ARM64_S3, 103)
619CV_REGISTER(ARM64_S4, 104)
620CV_REGISTER(ARM64_S5, 105)
621CV_REGISTER(ARM64_S6, 106)
622CV_REGISTER(ARM64_S7, 107)
623CV_REGISTER(ARM64_S8, 108)
624CV_REGISTER(ARM64_S9, 109)
625CV_REGISTER(ARM64_S10, 110)
626CV_REGISTER(ARM64_S11, 111)
627CV_REGISTER(ARM64_S12, 112)
628CV_REGISTER(ARM64_S13, 113)
629CV_REGISTER(ARM64_S14, 114)
630CV_REGISTER(ARM64_S15, 115)
631CV_REGISTER(ARM64_S16, 116)
632CV_REGISTER(ARM64_S17, 117)
633CV_REGISTER(ARM64_S18, 118)
634CV_REGISTER(ARM64_S19, 119)
635CV_REGISTER(ARM64_S20, 120)
636CV_REGISTER(ARM64_S21, 121)
637CV_REGISTER(ARM64_S22, 122)
638CV_REGISTER(ARM64_S23, 123)
639CV_REGISTER(ARM64_S24, 124)
640CV_REGISTER(ARM64_S25, 125)
641CV_REGISTER(ARM64_S26, 126)
642CV_REGISTER(ARM64_S27, 127)
643CV_REGISTER(ARM64_S28, 128)
644CV_REGISTER(ARM64_S29, 129)
645CV_REGISTER(ARM64_S30, 130)
646CV_REGISTER(ARM64_S31, 131)
647
648// 64-bit floating point registers
649
650CV_REGISTER(ARM64_D0, 140)
651CV_REGISTER(ARM64_D1, 141)
652CV_REGISTER(ARM64_D2, 142)
653CV_REGISTER(ARM64_D3, 143)
654CV_REGISTER(ARM64_D4, 144)
655CV_REGISTER(ARM64_D5, 145)
656CV_REGISTER(ARM64_D6, 146)
657CV_REGISTER(ARM64_D7, 147)
658CV_REGISTER(ARM64_D8, 148)
659CV_REGISTER(ARM64_D9, 149)
660CV_REGISTER(ARM64_D10, 150)
661CV_REGISTER(ARM64_D11, 151)
662CV_REGISTER(ARM64_D12, 152)
663CV_REGISTER(ARM64_D13, 153)
664CV_REGISTER(ARM64_D14, 154)
665CV_REGISTER(ARM64_D15, 155)
666CV_REGISTER(ARM64_D16, 156)
667CV_REGISTER(ARM64_D17, 157)
668CV_REGISTER(ARM64_D18, 158)
669CV_REGISTER(ARM64_D19, 159)
670CV_REGISTER(ARM64_D20, 160)
671CV_REGISTER(ARM64_D21, 161)
672CV_REGISTER(ARM64_D22, 162)
673CV_REGISTER(ARM64_D23, 163)
674CV_REGISTER(ARM64_D24, 164)
675CV_REGISTER(ARM64_D25, 165)
676CV_REGISTER(ARM64_D26, 166)
677CV_REGISTER(ARM64_D27, 167)
678CV_REGISTER(ARM64_D28, 168)
679CV_REGISTER(ARM64_D29, 169)
680CV_REGISTER(ARM64_D30, 170)
681CV_REGISTER(ARM64_D31, 171)
682
683// 128-bit SIMD registers
684
685CV_REGISTER(ARM64_Q0, 180)
686CV_REGISTER(ARM64_Q1, 181)
687CV_REGISTER(ARM64_Q2, 182)
688CV_REGISTER(ARM64_Q3, 183)
689CV_REGISTER(ARM64_Q4, 184)
690CV_REGISTER(ARM64_Q5, 185)
691CV_REGISTER(ARM64_Q6, 186)
692CV_REGISTER(ARM64_Q7, 187)
693CV_REGISTER(ARM64_Q8, 188)
694CV_REGISTER(ARM64_Q9, 189)
695CV_REGISTER(ARM64_Q10, 190)
696CV_REGISTER(ARM64_Q11, 191)
697CV_REGISTER(ARM64_Q12, 192)
698CV_REGISTER(ARM64_Q13, 193)
699CV_REGISTER(ARM64_Q14, 194)
700CV_REGISTER(ARM64_Q15, 195)
701CV_REGISTER(ARM64_Q16, 196)
702CV_REGISTER(ARM64_Q17, 197)
703CV_REGISTER(ARM64_Q18, 198)
704CV_REGISTER(ARM64_Q19, 199)
705CV_REGISTER(ARM64_Q20, 200)
706CV_REGISTER(ARM64_Q21, 201)
707CV_REGISTER(ARM64_Q22, 202)
708CV_REGISTER(ARM64_Q23, 203)
709CV_REGISTER(ARM64_Q24, 204)
710CV_REGISTER(ARM64_Q25, 205)
711CV_REGISTER(ARM64_Q26, 206)
712CV_REGISTER(ARM64_Q27, 207)
713CV_REGISTER(ARM64_Q28, 208)
714CV_REGISTER(ARM64_Q29, 209)
715CV_REGISTER(ARM64_Q30, 210)
716CV_REGISTER(ARM64_Q31, 211)
717
718// Floating point status register
719
720CV_REGISTER(ARM64_FPSR, 220)
721CV_REGISTER(ARM64_FPCR, 221)
722
723// 8 bit floating point registers
724
725CV_REGISTER(ARM64_B0, 230)
726CV_REGISTER(ARM64_B1, 231)
727CV_REGISTER(ARM64_B2, 232)
728CV_REGISTER(ARM64_B3, 233)
729CV_REGISTER(ARM64_B4, 234)
730CV_REGISTER(ARM64_B5, 235)
731CV_REGISTER(ARM64_B6, 236)
732CV_REGISTER(ARM64_B7, 237)
733CV_REGISTER(ARM64_B8, 238)
734CV_REGISTER(ARM64_B9, 239)
735CV_REGISTER(ARM64_B10, 240)
736CV_REGISTER(ARM64_B11, 241)
737CV_REGISTER(ARM64_B12, 242)
738CV_REGISTER(ARM64_B13, 243)
739CV_REGISTER(ARM64_B14, 244)
740CV_REGISTER(ARM64_B15, 245)
741CV_REGISTER(ARM64_B16, 246)
742CV_REGISTER(ARM64_B17, 247)
743CV_REGISTER(ARM64_B18, 248)
744CV_REGISTER(ARM64_B19, 249)
745CV_REGISTER(ARM64_B20, 250)
746CV_REGISTER(ARM64_B21, 251)
747CV_REGISTER(ARM64_B22, 252)
748CV_REGISTER(ARM64_B23, 253)
749CV_REGISTER(ARM64_B24, 254)
750CV_REGISTER(ARM64_B25, 255)
751CV_REGISTER(ARM64_B26, 256)
752CV_REGISTER(ARM64_B27, 257)
753CV_REGISTER(ARM64_B28, 258)
754CV_REGISTER(ARM64_B29, 259)
755CV_REGISTER(ARM64_B30, 260)
756CV_REGISTER(ARM64_B31, 261)
757
758// 16 bit floating point registers
759
760CV_REGISTER(ARM64_H0, 270)
761CV_REGISTER(ARM64_H1, 271)
762CV_REGISTER(ARM64_H2, 272)
763CV_REGISTER(ARM64_H3, 273)
764CV_REGISTER(ARM64_H4, 274)
765CV_REGISTER(ARM64_H5, 275)
766CV_REGISTER(ARM64_H6, 276)
767CV_REGISTER(ARM64_H7, 277)
768CV_REGISTER(ARM64_H8, 278)
769CV_REGISTER(ARM64_H9, 279)
770CV_REGISTER(ARM64_H10, 280)
771CV_REGISTER(ARM64_H11, 281)
772CV_REGISTER(ARM64_H12, 282)
773CV_REGISTER(ARM64_H13, 283)
774CV_REGISTER(ARM64_H14, 284)
775CV_REGISTER(ARM64_H15, 285)
776CV_REGISTER(ARM64_H16, 286)
777CV_REGISTER(ARM64_H17, 287)
778CV_REGISTER(ARM64_H18, 288)
779CV_REGISTER(ARM64_H19, 289)
780CV_REGISTER(ARM64_H20, 290)
781CV_REGISTER(ARM64_H21, 291)
782CV_REGISTER(ARM64_H22, 292)
783CV_REGISTER(ARM64_H23, 293)
784CV_REGISTER(ARM64_H24, 294)
785CV_REGISTER(ARM64_H25, 295)
786CV_REGISTER(ARM64_H26, 296)
787CV_REGISTER(ARM64_H27, 297)
788CV_REGISTER(ARM64_H28, 298)
789CV_REGISTER(ARM64_H29, 299)
790CV_REGISTER(ARM64_H30, 300)
791CV_REGISTER(ARM64_H31, 301)
792
793#pragma pop_macro("ARM64_FPSR")
794#pragma pop_macro("ARM64_FPCR")
795
796#endif // defined(CV_REGISTERS_ALL) || defined(CV_REGISTERS_ARM64)
797
798#if defined(CV_REGISTERS_ALL) || defined(CV_REGISTERS_MIPS)
799
800// MIPS registers
801CV_REGISTER(MIPS_NOREG, 0)
802
803// General purpose integer registers
804
805CV_REGISTER(MIPS_ZERO, 10)
806CV_REGISTER(MIPS_AT, 11)
807CV_REGISTER(MIPS_V0, 12)
808CV_REGISTER(MIPS_V1, 13)
809CV_REGISTER(MIPS_A0, 14)
810CV_REGISTER(MIPS_A1, 15)
811CV_REGISTER(MIPS_A2, 16)
812CV_REGISTER(MIPS_A3, 17)
813CV_REGISTER(MIPS_T0, 18)
814CV_REGISTER(MIPS_T1, 19)
815CV_REGISTER(MIPS_T2, 20)
816CV_REGISTER(MIPS_T3, 21)
817CV_REGISTER(MIPS_T4, 22)
818CV_REGISTER(MIPS_T5, 23)
819CV_REGISTER(MIPS_T6, 24)
820CV_REGISTER(MIPS_T7, 25)
821CV_REGISTER(MIPS_S0, 26)
822CV_REGISTER(MIPS_S1, 27)
823CV_REGISTER(MIPS_S2, 28)
824CV_REGISTER(MIPS_S3, 29)
825CV_REGISTER(MIPS_S4, 30)
826CV_REGISTER(MIPS_S5, 31)
827CV_REGISTER(MIPS_S6, 32)
828CV_REGISTER(MIPS_S7, 33)
829CV_REGISTER(MIPS_T8, 34)
830CV_REGISTER(MIPS_T9, 35)
831CV_REGISTER(MIPS_K0, 36)
832CV_REGISTER(MIPS_K1, 37)
833CV_REGISTER(MIPS_GP, 38)
834CV_REGISTER(MIPS_SP, 39)
835CV_REGISTER(MIPS_S8, 40)
836CV_REGISTER(MIPS_RA, 41)
837CV_REGISTER(MIPS_LO, 42)
838CV_REGISTER(MIPS_HI, 43)
839
840// Status registers
841
842CV_REGISTER(MIPS_Fir, 50)
843CV_REGISTER(MIPS_Psr, 51)
844
845// Floating-point registers
846
847CV_REGISTER(MIPS_F0, 60)
848CV_REGISTER(MIPS_F1, 61)
849CV_REGISTER(MIPS_F2, 62)
850CV_REGISTER(MIPS_F3, 63)
851CV_REGISTER(MIPS_F4, 64)
852CV_REGISTER(MIPS_F5, 65)
853CV_REGISTER(MIPS_F6, 66)
854CV_REGISTER(MIPS_F7, 67)
855CV_REGISTER(MIPS_F8, 68)
856CV_REGISTER(MIPS_F9, 69)
857CV_REGISTER(MIPS_F10, 70)
858CV_REGISTER(MIPS_F11, 71)
859CV_REGISTER(MIPS_F12, 72)
860CV_REGISTER(MIPS_F13, 73)
861CV_REGISTER(MIPS_F14, 74)
862CV_REGISTER(MIPS_F15, 75)
863CV_REGISTER(MIPS_F16, 76)
864CV_REGISTER(MIPS_F17, 77)
865CV_REGISTER(MIPS_F18, 78)
866CV_REGISTER(MIPS_F19, 79)
867CV_REGISTER(MIPS_F20, 80)
868CV_REGISTER(MIPS_F21, 81)
869CV_REGISTER(MIPS_F22, 82)
870CV_REGISTER(MIPS_F23, 83)
871CV_REGISTER(MIPS_F24, 84)
872CV_REGISTER(MIPS_F25, 85)
873CV_REGISTER(MIPS_F26, 86)
874CV_REGISTER(MIPS_F27, 87)
875CV_REGISTER(MIPS_F28, 88)
876CV_REGISTER(MIPS_F29, 89)
877CV_REGISTER(MIPS_F30, 90)
878CV_REGISTER(MIPS_F31, 91)
879CV_REGISTER(MIPS_Fsr, 92)
880
881#endif // defined(CV_REGISTERS_ALL) || defined(CV_REGISTERS_MIPS)
882