RegList.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. // Internal Listing Machine
  6. // Name Name Encode Type BitVec
  7. //------------------------------------------------------------------------
  8. // Illegal registers - must be first and have a value of 0
  9. // Internal Name
  10. // / Listing Name
  11. // / / Machine Encode
  12. // / / / Type
  13. // / / / / BitVec
  14. // / / / / /
  15. REGDAT(NOREG, noreg, 0xf, TyIllegal, RA_DONTALLOCATE)
  16. // 64 bit Integer Registers
  17. REGDAT(X0, x0, 0, TyInt64, 0)
  18. REGDAT(X1, x1, 1, TyInt64, 0)
  19. REGDAT(X2, x2, 2, TyInt64, 0)
  20. REGDAT(X3, x3, 3, TyInt64, 0)
  21. REGDAT(X4, x4, 4, TyInt64, 0)
  22. REGDAT(X5, x5, 5, TyInt64, 0)
  23. REGDAT(X6, x6, 6, TyInt64, 0)
  24. REGDAT(X7, x7, 7, TyInt64, 0)
  25. REGDAT(X8, x8, 8, TyInt64, 0)
  26. REGDAT(X9, x9, 9, TyInt64, 0)
  27. REGDAT(X10, x10, 10, TyInt64, 0)
  28. REGDAT(X11, x11, 11, TyInt64, 0)
  29. REGDAT(X12, x12, 12, TyInt64, 0)
  30. REGDAT(X13, x13, 13, TyInt64, 0)
  31. REGDAT(X14, x14, 14, TyInt64, 0)
  32. REGDAT(X15, x15, 15, TyInt64, 0)
  33. REGDAT(X16, x16, 16, TyInt64, RA_DONTALLOCATE) // ?? Why is this marked RA_DONTTRACK in UTC?
  34. REGDAT(X17, x17, 17, TyInt64, RA_DONTALLOCATE) // ?? Why is this marked RA_DONTTRACK in UTC?
  35. REGDAT(X18, x18, 18, TyInt64, RA_DONTALLOCATE) //Platform register (TEB pointer)
  36. REGDAT(X19, x19, 19, TyInt64, RA_CALLEESAVE)
  37. REGDAT(X20, x20, 20, TyInt64, RA_CALLEESAVE)
  38. REGDAT(X21, x21, 21, TyInt64, RA_CALLEESAVE)
  39. REGDAT(X22, x22, 22, TyInt64, RA_CALLEESAVE)
  40. REGDAT(X23, x23, 23, TyInt64, RA_CALLEESAVE)
  41. REGDAT(X24, x24, 24, TyInt64, RA_CALLEESAVE)
  42. REGDAT(X25, x25, 25, TyInt64, RA_CALLEESAVE)
  43. REGDAT(X26, x26, 26, TyInt64, RA_CALLEESAVE)
  44. REGDAT(X27, x27, 27, TyInt64, RA_CALLEESAVE)
  45. REGDAT(X28, x28, 28, TyInt64, RA_CALLEESAVE)
  46. REGDAT(FP, fp, 29, TyInt64, RA_DONTALLOCATE) //Frame Pointer
  47. REGDAT(LR, lr, 30, TyInt64, 0)
  48. REGDAT(SP, sp, 31, TyInt64, RA_DONTALLOCATE)
  49. // VFP Floating Point Registers
  50. REGDAT(D0, d0, 0, TyFloat64, 0)
  51. REGDAT(D1, d1, 1, TyFloat64, 0)
  52. REGDAT(D2, d2, 2, TyFloat64, 0)
  53. REGDAT(D3, d3, 3, TyFloat64, 0)
  54. REGDAT(D4, d4, 4, TyFloat64, 0)
  55. REGDAT(D5, d5, 5, TyFloat64, 0)
  56. REGDAT(D6, d6, 6, TyFloat64, 0)
  57. REGDAT(D7, d7, 7, TyFloat64, 0)
  58. REGDAT(D8, d8, 8, TyFloat64, RA_CALLEESAVE)
  59. REGDAT(D9, d9, 9, TyFloat64, RA_CALLEESAVE)
  60. REGDAT(D10, d10, 10, TyFloat64, RA_CALLEESAVE)
  61. REGDAT(D11, d11, 11, TyFloat64, RA_CALLEESAVE)
  62. REGDAT(D12, d12, 12, TyFloat64, RA_CALLEESAVE)
  63. REGDAT(D13, d13, 13, TyFloat64, RA_CALLEESAVE)
  64. REGDAT(D14, d14, 14, TyFloat64, RA_CALLEESAVE)
  65. REGDAT(D15, d15, 15, TyFloat64, RA_CALLEESAVE)
  66. REGDAT(D16, d16, 16, TyFloat64, 0)
  67. REGDAT(D17, d17, 17, TyFloat64, 0)
  68. REGDAT(D18, d18, 18, TyFloat64, 0)
  69. REGDAT(D19, d19, 19, TyFloat64, 0)
  70. REGDAT(D20, d20, 20, TyFloat64, 0)
  71. REGDAT(D21, d21, 21, TyFloat64, 0)
  72. REGDAT(D22, d22, 22, TyFloat64, 0)
  73. REGDAT(D23, d23, 23, TyFloat64, 0)
  74. REGDAT(D24, d24, 24, TyFloat64, 0)
  75. REGDAT(D25, d25, 25, TyFloat64, 0)
  76. REGDAT(D26, d26, 26, TyFloat64, 0)
  77. REGDAT(D27, d27, 27, TyFloat64, 0)
  78. REGDAT(D28, d28, 28, TyFloat64, 0)
  79. REGDAT(D29, d29, 29, TyFloat64, 0)
  80. REGDAT(D30, d30, 30, TyFloat64, 0)
  81. REGDAT(D31, d31, 31, TyFloat64, 0)
  82. #define FIRST_DOUBLE_ARG_REG RegD0
  83. #define LAST_DOUBLE_REG RegD31
  84. #define LAST_DOUBLE_REG_NUM 31
  85. #define LAST_FLOAT_REG_NUM 31
  86. #define FIRST_DOUBLE_CALLEE_SAVED_REG_NUM 8
  87. #define LAST_DOUBLE_CALLEE_SAVED_REG_NUM 15
  88. #define VFP_REGCOUNT 31
  89. #define REGNUM_ISVFPREG(r) ((r) >= RegD0 && (r) <= LAST_DOUBLE_REG)