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