asmjit 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/Rakefile +5 -3
  4. data/asmjit.gemspec +1 -3
  5. data/ext/asmjit/asmjit/.editorconfig +10 -0
  6. data/ext/asmjit/asmjit/.github/FUNDING.yml +1 -0
  7. data/ext/asmjit/asmjit/.github/workflows/build-config.json +47 -0
  8. data/ext/asmjit/asmjit/.github/workflows/build.yml +156 -0
  9. data/ext/asmjit/asmjit/.gitignore +6 -0
  10. data/ext/asmjit/asmjit/CMakeLists.txt +611 -0
  11. data/ext/asmjit/asmjit/LICENSE.md +17 -0
  12. data/ext/asmjit/asmjit/README.md +69 -0
  13. data/ext/asmjit/asmjit/src/asmjit/a64.h +62 -0
  14. data/ext/asmjit/asmjit/src/asmjit/arm/a64archtraits_p.h +81 -0
  15. data/ext/asmjit/asmjit/src/asmjit/arm/a64assembler.cpp +5115 -0
  16. data/ext/asmjit/asmjit/src/asmjit/arm/a64assembler.h +72 -0
  17. data/ext/asmjit/asmjit/src/asmjit/arm/a64builder.cpp +51 -0
  18. data/ext/asmjit/asmjit/src/asmjit/arm/a64builder.h +57 -0
  19. data/ext/asmjit/asmjit/src/asmjit/arm/a64compiler.cpp +60 -0
  20. data/ext/asmjit/asmjit/src/asmjit/arm/a64compiler.h +247 -0
  21. data/ext/asmjit/asmjit/src/asmjit/arm/a64emithelper.cpp +464 -0
  22. data/ext/asmjit/asmjit/src/asmjit/arm/a64emithelper_p.h +50 -0
  23. data/ext/asmjit/asmjit/src/asmjit/arm/a64emitter.h +1228 -0
  24. data/ext/asmjit/asmjit/src/asmjit/arm/a64formatter.cpp +298 -0
  25. data/ext/asmjit/asmjit/src/asmjit/arm/a64formatter_p.h +59 -0
  26. data/ext/asmjit/asmjit/src/asmjit/arm/a64func.cpp +189 -0
  27. data/ext/asmjit/asmjit/src/asmjit/arm/a64func_p.h +33 -0
  28. data/ext/asmjit/asmjit/src/asmjit/arm/a64globals.h +1894 -0
  29. data/ext/asmjit/asmjit/src/asmjit/arm/a64instapi.cpp +278 -0
  30. data/ext/asmjit/asmjit/src/asmjit/arm/a64instapi_p.h +41 -0
  31. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb.cpp +1957 -0
  32. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb.h +74 -0
  33. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb_p.h +876 -0
  34. data/ext/asmjit/asmjit/src/asmjit/arm/a64operand.cpp +85 -0
  35. data/ext/asmjit/asmjit/src/asmjit/arm/a64operand.h +312 -0
  36. data/ext/asmjit/asmjit/src/asmjit/arm/a64rapass.cpp +852 -0
  37. data/ext/asmjit/asmjit/src/asmjit/arm/a64rapass_p.h +105 -0
  38. data/ext/asmjit/asmjit/src/asmjit/arm/a64utils.h +179 -0
  39. data/ext/asmjit/asmjit/src/asmjit/arm/armformatter.cpp +143 -0
  40. data/ext/asmjit/asmjit/src/asmjit/arm/armformatter_p.h +44 -0
  41. data/ext/asmjit/asmjit/src/asmjit/arm/armglobals.h +21 -0
  42. data/ext/asmjit/asmjit/src/asmjit/arm/armoperand.h +621 -0
  43. data/ext/asmjit/asmjit/src/asmjit/arm.h +62 -0
  44. data/ext/asmjit/asmjit/src/asmjit/asmjit-scope-begin.h +17 -0
  45. data/ext/asmjit/asmjit/src/asmjit/asmjit-scope-end.h +9 -0
  46. data/ext/asmjit/asmjit/src/asmjit/asmjit.h +33 -0
  47. data/ext/asmjit/asmjit/src/asmjit/core/api-build_p.h +55 -0
  48. data/ext/asmjit/asmjit/src/asmjit/core/api-config.h +613 -0
  49. data/ext/asmjit/asmjit/src/asmjit/core/archcommons.h +229 -0
  50. data/ext/asmjit/asmjit/src/asmjit/core/archtraits.cpp +160 -0
  51. data/ext/asmjit/asmjit/src/asmjit/core/archtraits.h +290 -0
  52. data/ext/asmjit/asmjit/src/asmjit/core/assembler.cpp +406 -0
  53. data/ext/asmjit/asmjit/src/asmjit/core/assembler.h +129 -0
  54. data/ext/asmjit/asmjit/src/asmjit/core/builder.cpp +889 -0
  55. data/ext/asmjit/asmjit/src/asmjit/core/builder.h +1391 -0
  56. data/ext/asmjit/asmjit/src/asmjit/core/codebuffer.h +113 -0
  57. data/ext/asmjit/asmjit/src/asmjit/core/codeholder.cpp +1149 -0
  58. data/ext/asmjit/asmjit/src/asmjit/core/codeholder.h +1035 -0
  59. data/ext/asmjit/asmjit/src/asmjit/core/codewriter.cpp +175 -0
  60. data/ext/asmjit/asmjit/src/asmjit/core/codewriter_p.h +179 -0
  61. data/ext/asmjit/asmjit/src/asmjit/core/compiler.cpp +582 -0
  62. data/ext/asmjit/asmjit/src/asmjit/core/compiler.h +737 -0
  63. data/ext/asmjit/asmjit/src/asmjit/core/compilerdefs.h +173 -0
  64. data/ext/asmjit/asmjit/src/asmjit/core/constpool.cpp +363 -0
  65. data/ext/asmjit/asmjit/src/asmjit/core/constpool.h +250 -0
  66. data/ext/asmjit/asmjit/src/asmjit/core/cpuinfo.cpp +1162 -0
  67. data/ext/asmjit/asmjit/src/asmjit/core/cpuinfo.h +813 -0
  68. data/ext/asmjit/asmjit/src/asmjit/core/emithelper.cpp +323 -0
  69. data/ext/asmjit/asmjit/src/asmjit/core/emithelper_p.h +58 -0
  70. data/ext/asmjit/asmjit/src/asmjit/core/emitter.cpp +333 -0
  71. data/ext/asmjit/asmjit/src/asmjit/core/emitter.h +741 -0
  72. data/ext/asmjit/asmjit/src/asmjit/core/emitterutils.cpp +129 -0
  73. data/ext/asmjit/asmjit/src/asmjit/core/emitterutils_p.h +89 -0
  74. data/ext/asmjit/asmjit/src/asmjit/core/environment.cpp +46 -0
  75. data/ext/asmjit/asmjit/src/asmjit/core/environment.h +508 -0
  76. data/ext/asmjit/asmjit/src/asmjit/core/errorhandler.cpp +14 -0
  77. data/ext/asmjit/asmjit/src/asmjit/core/errorhandler.h +228 -0
  78. data/ext/asmjit/asmjit/src/asmjit/core/formatter.cpp +584 -0
  79. data/ext/asmjit/asmjit/src/asmjit/core/formatter.h +247 -0
  80. data/ext/asmjit/asmjit/src/asmjit/core/formatter_p.h +34 -0
  81. data/ext/asmjit/asmjit/src/asmjit/core/func.cpp +286 -0
  82. data/ext/asmjit/asmjit/src/asmjit/core/func.h +1445 -0
  83. data/ext/asmjit/asmjit/src/asmjit/core/funcargscontext.cpp +293 -0
  84. data/ext/asmjit/asmjit/src/asmjit/core/funcargscontext_p.h +199 -0
  85. data/ext/asmjit/asmjit/src/asmjit/core/globals.cpp +133 -0
  86. data/ext/asmjit/asmjit/src/asmjit/core/globals.h +393 -0
  87. data/ext/asmjit/asmjit/src/asmjit/core/inst.cpp +113 -0
  88. data/ext/asmjit/asmjit/src/asmjit/core/inst.h +772 -0
  89. data/ext/asmjit/asmjit/src/asmjit/core/jitallocator.cpp +1242 -0
  90. data/ext/asmjit/asmjit/src/asmjit/core/jitallocator.h +261 -0
  91. data/ext/asmjit/asmjit/src/asmjit/core/jitruntime.cpp +80 -0
  92. data/ext/asmjit/asmjit/src/asmjit/core/jitruntime.h +89 -0
  93. data/ext/asmjit/asmjit/src/asmjit/core/logger.cpp +69 -0
  94. data/ext/asmjit/asmjit/src/asmjit/core/logger.h +198 -0
  95. data/ext/asmjit/asmjit/src/asmjit/core/misc_p.h +33 -0
  96. data/ext/asmjit/asmjit/src/asmjit/core/operand.cpp +132 -0
  97. data/ext/asmjit/asmjit/src/asmjit/core/operand.h +1611 -0
  98. data/ext/asmjit/asmjit/src/asmjit/core/osutils.cpp +84 -0
  99. data/ext/asmjit/asmjit/src/asmjit/core/osutils.h +61 -0
  100. data/ext/asmjit/asmjit/src/asmjit/core/osutils_p.h +68 -0
  101. data/ext/asmjit/asmjit/src/asmjit/core/raassignment_p.h +418 -0
  102. data/ext/asmjit/asmjit/src/asmjit/core/rabuilders_p.h +612 -0
  103. data/ext/asmjit/asmjit/src/asmjit/core/radefs_p.h +1204 -0
  104. data/ext/asmjit/asmjit/src/asmjit/core/ralocal.cpp +1166 -0
  105. data/ext/asmjit/asmjit/src/asmjit/core/ralocal_p.h +254 -0
  106. data/ext/asmjit/asmjit/src/asmjit/core/rapass.cpp +1969 -0
  107. data/ext/asmjit/asmjit/src/asmjit/core/rapass_p.h +1183 -0
  108. data/ext/asmjit/asmjit/src/asmjit/core/rastack.cpp +184 -0
  109. data/ext/asmjit/asmjit/src/asmjit/core/rastack_p.h +171 -0
  110. data/ext/asmjit/asmjit/src/asmjit/core/string.cpp +559 -0
  111. data/ext/asmjit/asmjit/src/asmjit/core/string.h +372 -0
  112. data/ext/asmjit/asmjit/src/asmjit/core/support.cpp +494 -0
  113. data/ext/asmjit/asmjit/src/asmjit/core/support.h +1773 -0
  114. data/ext/asmjit/asmjit/src/asmjit/core/target.cpp +14 -0
  115. data/ext/asmjit/asmjit/src/asmjit/core/target.h +53 -0
  116. data/ext/asmjit/asmjit/src/asmjit/core/type.cpp +74 -0
  117. data/ext/asmjit/asmjit/src/asmjit/core/type.h +419 -0
  118. data/ext/asmjit/asmjit/src/asmjit/core/virtmem.cpp +722 -0
  119. data/ext/asmjit/asmjit/src/asmjit/core/virtmem.h +242 -0
  120. data/ext/asmjit/asmjit/src/asmjit/core/zone.cpp +353 -0
  121. data/ext/asmjit/asmjit/src/asmjit/core/zone.h +615 -0
  122. data/ext/asmjit/asmjit/src/asmjit/core/zonehash.cpp +309 -0
  123. data/ext/asmjit/asmjit/src/asmjit/core/zonehash.h +186 -0
  124. data/ext/asmjit/asmjit/src/asmjit/core/zonelist.cpp +163 -0
  125. data/ext/asmjit/asmjit/src/asmjit/core/zonelist.h +209 -0
  126. data/ext/asmjit/asmjit/src/asmjit/core/zonestack.cpp +176 -0
  127. data/ext/asmjit/asmjit/src/asmjit/core/zonestack.h +239 -0
  128. data/ext/asmjit/asmjit/src/asmjit/core/zonestring.h +120 -0
  129. data/ext/asmjit/asmjit/src/asmjit/core/zonetree.cpp +99 -0
  130. data/ext/asmjit/asmjit/src/asmjit/core/zonetree.h +380 -0
  131. data/ext/asmjit/asmjit/src/asmjit/core/zonevector.cpp +356 -0
  132. data/ext/asmjit/asmjit/src/asmjit/core/zonevector.h +690 -0
  133. data/ext/asmjit/asmjit/src/asmjit/core.h +1861 -0
  134. data/ext/asmjit/asmjit/src/asmjit/x86/x86archtraits_p.h +148 -0
  135. data/ext/asmjit/asmjit/src/asmjit/x86/x86assembler.cpp +5110 -0
  136. data/ext/asmjit/asmjit/src/asmjit/x86/x86assembler.h +685 -0
  137. data/ext/asmjit/asmjit/src/asmjit/x86/x86builder.cpp +52 -0
  138. data/ext/asmjit/asmjit/src/asmjit/x86/x86builder.h +351 -0
  139. data/ext/asmjit/asmjit/src/asmjit/x86/x86compiler.cpp +61 -0
  140. data/ext/asmjit/asmjit/src/asmjit/x86/x86compiler.h +721 -0
  141. data/ext/asmjit/asmjit/src/asmjit/x86/x86emithelper.cpp +619 -0
  142. data/ext/asmjit/asmjit/src/asmjit/x86/x86emithelper_p.h +60 -0
  143. data/ext/asmjit/asmjit/src/asmjit/x86/x86emitter.h +4315 -0
  144. data/ext/asmjit/asmjit/src/asmjit/x86/x86formatter.cpp +944 -0
  145. data/ext/asmjit/asmjit/src/asmjit/x86/x86formatter_p.h +58 -0
  146. data/ext/asmjit/asmjit/src/asmjit/x86/x86func.cpp +503 -0
  147. data/ext/asmjit/asmjit/src/asmjit/x86/x86func_p.h +33 -0
  148. data/ext/asmjit/asmjit/src/asmjit/x86/x86globals.h +2169 -0
  149. data/ext/asmjit/asmjit/src/asmjit/x86/x86instapi.cpp +1732 -0
  150. data/ext/asmjit/asmjit/src/asmjit/x86/x86instapi_p.h +41 -0
  151. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb.cpp +4427 -0
  152. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb.h +563 -0
  153. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb_p.h +311 -0
  154. data/ext/asmjit/asmjit/src/asmjit/x86/x86opcode_p.h +436 -0
  155. data/ext/asmjit/asmjit/src/asmjit/x86/x86operand.cpp +231 -0
  156. data/ext/asmjit/asmjit/src/asmjit/x86/x86operand.h +1085 -0
  157. data/ext/asmjit/asmjit/src/asmjit/x86/x86rapass.cpp +1509 -0
  158. data/ext/asmjit/asmjit/src/asmjit/x86/x86rapass_p.h +94 -0
  159. data/ext/asmjit/asmjit/src/asmjit/x86.h +93 -0
  160. data/ext/asmjit/asmjit/src/asmjit.natvis +245 -0
  161. data/ext/asmjit/asmjit/test/asmjit_test_assembler.cpp +84 -0
  162. data/ext/asmjit/asmjit/test/asmjit_test_assembler.h +85 -0
  163. data/ext/asmjit/asmjit/test/asmjit_test_assembler_a64.cpp +4006 -0
  164. data/ext/asmjit/asmjit/test/asmjit_test_assembler_x64.cpp +17833 -0
  165. data/ext/asmjit/asmjit/test/asmjit_test_assembler_x86.cpp +8300 -0
  166. data/ext/asmjit/asmjit/test/asmjit_test_compiler.cpp +253 -0
  167. data/ext/asmjit/asmjit/test/asmjit_test_compiler.h +73 -0
  168. data/ext/asmjit/asmjit/test/asmjit_test_compiler_a64.cpp +690 -0
  169. data/ext/asmjit/asmjit/test/asmjit_test_compiler_x86.cpp +4317 -0
  170. data/ext/asmjit/asmjit/test/asmjit_test_emitters.cpp +197 -0
  171. data/ext/asmjit/asmjit/test/asmjit_test_instinfo.cpp +181 -0
  172. data/ext/asmjit/asmjit/test/asmjit_test_misc.h +257 -0
  173. data/ext/asmjit/asmjit/test/asmjit_test_perf.cpp +62 -0
  174. data/ext/asmjit/asmjit/test/asmjit_test_perf.h +61 -0
  175. data/ext/asmjit/asmjit/test/asmjit_test_perf_a64.cpp +699 -0
  176. data/ext/asmjit/asmjit/test/asmjit_test_perf_x86.cpp +5032 -0
  177. data/ext/asmjit/asmjit/test/asmjit_test_unit.cpp +172 -0
  178. data/ext/asmjit/asmjit/test/asmjit_test_x86_sections.cpp +172 -0
  179. data/ext/asmjit/asmjit/test/asmjitutils.h +38 -0
  180. data/ext/asmjit/asmjit/test/broken.cpp +312 -0
  181. data/ext/asmjit/asmjit/test/broken.h +148 -0
  182. data/ext/asmjit/asmjit/test/cmdline.h +61 -0
  183. data/ext/asmjit/asmjit/test/performancetimer.h +41 -0
  184. data/ext/asmjit/asmjit/tools/configure-makefiles.sh +13 -0
  185. data/ext/asmjit/asmjit/tools/configure-ninja.sh +13 -0
  186. data/ext/asmjit/asmjit/tools/configure-sanitizers.sh +13 -0
  187. data/ext/asmjit/asmjit/tools/configure-vs2019-x64.bat +2 -0
  188. data/ext/asmjit/asmjit/tools/configure-vs2019-x86.bat +2 -0
  189. data/ext/asmjit/asmjit/tools/configure-vs2022-x64.bat +2 -0
  190. data/ext/asmjit/asmjit/tools/configure-vs2022-x86.bat +2 -0
  191. data/ext/asmjit/asmjit/tools/configure-xcode.sh +8 -0
  192. data/ext/asmjit/asmjit/tools/enumgen.js +417 -0
  193. data/ext/asmjit/asmjit/tools/enumgen.sh +3 -0
  194. data/ext/asmjit/asmjit/tools/tablegen-arm.js +365 -0
  195. data/ext/asmjit/asmjit/tools/tablegen-arm.sh +3 -0
  196. data/ext/asmjit/asmjit/tools/tablegen-x86.js +2638 -0
  197. data/ext/asmjit/asmjit/tools/tablegen-x86.sh +3 -0
  198. data/ext/asmjit/asmjit/tools/tablegen.js +947 -0
  199. data/ext/asmjit/asmjit/tools/tablegen.sh +4 -0
  200. data/ext/asmjit/asmjit.cc +167 -30
  201. data/ext/asmjit/extconf.rb +9 -9
  202. data/lib/asmjit/version.rb +1 -1
  203. data/lib/asmjit.rb +14 -4
  204. metadata +198 -17
@@ -0,0 +1,876 @@
1
+ // This file is part of AsmJit project <https://asmjit.com>
2
+ //
3
+ // See asmjit.h or LICENSE.md for license and copyright information
4
+ // SPDX-License-Identifier: Zlib
5
+
6
+ #ifndef ASMJIT_ARM_A64INSTDB_H_P_INCLUDED
7
+ #define ASMJIT_ARM_A64INSTDB_H_P_INCLUDED
8
+
9
+ #include "../core/codeholder.h"
10
+ #include "../arm/a64instdb.h"
11
+ #include "../arm/a64operand.h"
12
+
13
+ ASMJIT_BEGIN_SUB_NAMESPACE(a64)
14
+
15
+ //! \cond INTERNAL
16
+ //! \addtogroup asmjit_a64
17
+ //! \{
18
+
19
+ namespace InstDB {
20
+
21
+ // a64::InstDB - Constants Used by Instructions
22
+ // ============================================
23
+
24
+ // GP register types supported by base instructions.
25
+ static constexpr uint32_t kW = 0x1;
26
+ static constexpr uint32_t kX = 0x2;
27
+ static constexpr uint32_t kWX = 0x3;
28
+
29
+ // GP high register IDs supported by the instruction.
30
+ static constexpr uint32_t kZR = Gp::kIdZr;
31
+ static constexpr uint32_t kSP = Gp::kIdSp;
32
+
33
+ // a64::InstDB - RWInfo
34
+ // ====================
35
+
36
+ enum RWInfoType : uint32_t {
37
+ kRWI_R,
38
+ kRWI_RW,
39
+ kRWI_RX,
40
+ kRWI_RRW,
41
+ kRWI_RWX,
42
+ kRWI_W,
43
+ kRWI_WRW,
44
+ kRWI_WRX,
45
+ kRWI_WRRW,
46
+ kRWI_WRRX,
47
+ kRWI_WW,
48
+ kRWI_X,
49
+ kRWI_XRX,
50
+ kRWI_XXRRX,
51
+
52
+ kRWI_LDn,
53
+ kRWI_STn,
54
+
55
+ kRWI_SpecialStart = kRWI_LDn
56
+ };
57
+
58
+ // a64::InstDB - ElementType
59
+ // =========================
60
+
61
+ enum ElementType : uint8_t {
62
+ kET_None = Vec::kElementTypeNone,
63
+ kET_B = Vec::kElementTypeB,
64
+ kET_H = Vec::kElementTypeH,
65
+ kET_S = Vec::kElementTypeS,
66
+ kET_D = Vec::kElementTypeD,
67
+ kET_2H = Vec::kElementTypeH2,
68
+ kET_4B = Vec::kElementTypeB4
69
+ };
70
+
71
+ // a64::InstDB - GpType
72
+ // ====================
73
+
74
+ enum GpType : uint8_t {
75
+ kGp_W,
76
+ kGp_X,
77
+ kGp_X_SP
78
+ };
79
+
80
+ // a64::InstDB - OPSig
81
+ // ===================
82
+
83
+ enum kOpSignature : uint32_t {
84
+ kOp_GpW = GpW::kSignature,
85
+ kOp_GpX = GpX::kSignature,
86
+
87
+ kOp_B = VecB::kSignature,
88
+ kOp_H = VecH::kSignature,
89
+ kOp_S = VecS::kSignature,
90
+ kOp_D = VecD::kSignature,
91
+ kOp_Q = VecV::kSignature,
92
+
93
+ kOp_V8B = VecD::kSignature | Vec::kSignatureElementB,
94
+ kOp_V4H = VecD::kSignature | Vec::kSignatureElementH,
95
+ kOp_V2S = VecD::kSignature | Vec::kSignatureElementS,
96
+
97
+ kOp_V16B = VecV::kSignature | Vec::kSignatureElementB,
98
+ kOp_V8H = VecV::kSignature | Vec::kSignatureElementH,
99
+ kOp_V4S = VecV::kSignature | Vec::kSignatureElementS,
100
+ kOp_V2D = VecV::kSignature | Vec::kSignatureElementD
101
+ };
102
+
103
+ // a64::InstDB - HFConv
104
+ // ====================
105
+
106
+ enum kHFConv : uint32_t {
107
+ //! FP16 version of the instruction is not available.
108
+ kHF_N,
109
+
110
+ //! Doesn't do any change to the opcode.
111
+ kHF_0,
112
+
113
+ kHF_A,
114
+ kHF_B,
115
+ kHF_C,
116
+ kHF_D,
117
+
118
+ kHF_Count
119
+ };
120
+
121
+ // a64::InstDB - VOType
122
+ // ====================
123
+
124
+ //! Vector operand type combinations used by FP&SIMD instructions.
125
+ enum VOType : uint32_t {
126
+ kVO_V_B,
127
+ kVO_V_BH,
128
+ kVO_V_BH_4S,
129
+ kVO_V_BHS,
130
+ kVO_V_BHS_D2,
131
+ kVO_V_HS,
132
+ kVO_V_S,
133
+
134
+ kVO_V_B8H4,
135
+ kVO_V_B8H4S2,
136
+ kVO_V_B8D1,
137
+ kVO_V_H4S2,
138
+
139
+ kVO_V_B16,
140
+ kVO_V_B16H8,
141
+ kVO_V_B16H8S4,
142
+ kVO_V_B16D2,
143
+ kVO_V_H8S4,
144
+ kVO_V_S4,
145
+ kVO_V_D2,
146
+
147
+ kVO_SV_BHS,
148
+ kVO_SV_B8H4S2,
149
+ kVO_SV_HS,
150
+ kVO_V_Any,
151
+ kVO_SV_Any,
152
+
153
+ kVO_Count
154
+ };
155
+
156
+ // a64::InstDB - EncodingId
157
+ // ========================
158
+
159
+ // ${EncodingId:Begin}
160
+ // ------------------- Automatically generated, do not edit -------------------
161
+ enum EncodingId : uint32_t {
162
+ kEncodingNone = 0,
163
+ kEncodingBaseAddSub,
164
+ kEncodingBaseAdr,
165
+ kEncodingBaseAtDcIcTlbi,
166
+ kEncodingBaseAtomicCasp,
167
+ kEncodingBaseAtomicOp,
168
+ kEncodingBaseAtomicSt,
169
+ kEncodingBaseBfc,
170
+ kEncodingBaseBfi,
171
+ kEncodingBaseBfm,
172
+ kEncodingBaseBfx,
173
+ kEncodingBaseBranchCmp,
174
+ kEncodingBaseBranchReg,
175
+ kEncodingBaseBranchRel,
176
+ kEncodingBaseBranchTst,
177
+ kEncodingBaseCCmp,
178
+ kEncodingBaseCInc,
179
+ kEncodingBaseCSel,
180
+ kEncodingBaseCSet,
181
+ kEncodingBaseCmpCmn,
182
+ kEncodingBaseExtend,
183
+ kEncodingBaseExtract,
184
+ kEncodingBaseLdSt,
185
+ kEncodingBaseLdpStp,
186
+ kEncodingBaseLdxp,
187
+ kEncodingBaseLogical,
188
+ kEncodingBaseMov,
189
+ kEncodingBaseMovKNZ,
190
+ kEncodingBaseMrs,
191
+ kEncodingBaseMsr,
192
+ kEncodingBaseMvnNeg,
193
+ kEncodingBaseOp,
194
+ kEncodingBaseOpImm,
195
+ kEncodingBaseR,
196
+ kEncodingBaseRM_NoImm,
197
+ kEncodingBaseRM_SImm10,
198
+ kEncodingBaseRM_SImm9,
199
+ kEncodingBaseRR,
200
+ kEncodingBaseRRII,
201
+ kEncodingBaseRRR,
202
+ kEncodingBaseRRRR,
203
+ kEncodingBaseRev,
204
+ kEncodingBaseShift,
205
+ kEncodingBaseStx,
206
+ kEncodingBaseStxp,
207
+ kEncodingBaseSys,
208
+ kEncodingBaseTst,
209
+ kEncodingFSimdPair,
210
+ kEncodingFSimdSV,
211
+ kEncodingFSimdVV,
212
+ kEncodingFSimdVVV,
213
+ kEncodingFSimdVVVV,
214
+ kEncodingFSimdVVVe,
215
+ kEncodingISimdPair,
216
+ kEncodingISimdSV,
217
+ kEncodingISimdVV,
218
+ kEncodingISimdVVV,
219
+ kEncodingISimdVVVI,
220
+ kEncodingISimdVVVV,
221
+ kEncodingISimdVVVVx,
222
+ kEncodingISimdVVVe,
223
+ kEncodingISimdVVVx,
224
+ kEncodingISimdVVx,
225
+ kEncodingISimdWWV,
226
+ kEncodingSimdBicOrr,
227
+ kEncodingSimdCmp,
228
+ kEncodingSimdDot,
229
+ kEncodingSimdDup,
230
+ kEncodingSimdFcadd,
231
+ kEncodingSimdFccmpFccmpe,
232
+ kEncodingSimdFcm,
233
+ kEncodingSimdFcmla,
234
+ kEncodingSimdFcmpFcmpe,
235
+ kEncodingSimdFcsel,
236
+ kEncodingSimdFcvt,
237
+ kEncodingSimdFcvtLN,
238
+ kEncodingSimdFcvtSV,
239
+ kEncodingSimdFmlal,
240
+ kEncodingSimdFmov,
241
+ kEncodingSimdIns,
242
+ kEncodingSimdLdNStN,
243
+ kEncodingSimdLdSt,
244
+ kEncodingSimdLdpStp,
245
+ kEncodingSimdLdurStur,
246
+ kEncodingSimdMov,
247
+ kEncodingSimdMoviMvni,
248
+ kEncodingSimdShift,
249
+ kEncodingSimdShiftES,
250
+ kEncodingSimdSm3tt,
251
+ kEncodingSimdSmovUmov,
252
+ kEncodingSimdSxtlUxtl,
253
+ kEncodingSimdTblTbx
254
+ };
255
+ // ----------------------------------------------------------------------------
256
+ // ${EncodingId:End}
257
+
258
+ // a64::InstDB::EncodingData
259
+ // =========================
260
+
261
+ namespace EncodingData {
262
+
263
+ #define M_OPCODE(field, bits) \
264
+ uint32_t _##field : bits; \
265
+ inline constexpr uint32_t field() const noexcept { return uint32_t(_##field) << (32 - bits); }
266
+
267
+ struct BaseOp {
268
+ uint32_t opcode;
269
+ };
270
+
271
+ struct BaseOpImm {
272
+ uint32_t opcode;
273
+ uint16_t immBits;
274
+ uint16_t immOffset;
275
+ };
276
+
277
+ struct BaseR {
278
+ uint32_t opcode;
279
+ uint32_t rType : 8;
280
+ uint32_t rHiId : 8;
281
+ uint32_t rShift : 8;
282
+ };
283
+
284
+ struct BaseRR {
285
+ uint32_t opcode;
286
+ uint32_t aType : 2;
287
+ uint32_t aHiId : 6;
288
+ uint32_t aShift : 5;
289
+ uint32_t bType : 2;
290
+ uint32_t bHiId : 6;
291
+ uint32_t bShift : 5;
292
+ uint32_t uniform : 1;
293
+ };
294
+
295
+ struct BaseRRR {
296
+ M_OPCODE(opcode, 22)
297
+ uint32_t aType : 2;
298
+ uint32_t aHiId : 6;
299
+ uint32_t bType : 2;
300
+ uint32_t bHiId : 6;
301
+ uint32_t cType : 2;
302
+ uint32_t cHiId : 6;
303
+ uint32_t uniform : 1;
304
+ };
305
+
306
+ struct BaseRRRR {
307
+ M_OPCODE(opcode, 22)
308
+ uint32_t aType : 2;
309
+ uint32_t aHiId : 6;
310
+ uint32_t bType : 2;
311
+ uint32_t bHiId : 6;
312
+ uint32_t cType : 2;
313
+ uint32_t cHiId : 6;
314
+ uint32_t dType : 2;
315
+ uint32_t dHiId : 6;
316
+ uint32_t uniform : 1;
317
+ };
318
+
319
+ struct BaseRRII {
320
+ M_OPCODE(opcode, 22)
321
+ uint32_t aType : 2;
322
+ uint32_t aHiId : 6;
323
+ uint32_t bType : 2;
324
+ uint32_t bHiId : 6;
325
+ uint32_t aImmSize : 6;
326
+ uint32_t aImmDiscardLsb : 5;
327
+ uint32_t aImmOffset : 5;
328
+ uint32_t bImmSize : 6;
329
+ uint32_t bImmDiscardLsb : 5;
330
+ uint32_t bImmOffset : 5;
331
+ };
332
+
333
+ struct BaseAtDcIcTlbi {
334
+ uint32_t immVerifyMask : 14;
335
+ uint32_t immVerifyData : 14;
336
+ uint32_t mandatoryReg : 1;
337
+ };
338
+
339
+ struct BaseAdcSbc {
340
+ uint32_t opcode;
341
+ };
342
+
343
+ struct BaseAddSub {
344
+ uint32_t shiftedOp : 10; // sf|.......|Sh|.|Rm| Imm:6 |Rn|Rd|
345
+ uint32_t extendedOp : 10; // sf|.......|..|.|Rm|Opt|Imm3|Rn|Rd|
346
+ uint32_t immediateOp: 10; // sf|.......|Sh| Imm:12 |Rn|Rd|
347
+ };
348
+
349
+ struct BaseAdr {
350
+ M_OPCODE(opcode, 22)
351
+ OffsetType offsetType : 8;
352
+ };
353
+
354
+ struct BaseBfm {
355
+ uint32_t opcode; // sf|........|N|ImmR:6|ImmS:6|Rn|Rd|
356
+ };
357
+
358
+ struct BaseCmpCmn {
359
+ uint32_t shiftedOp : 10; // sf|.......|Sh|.|Rm| Imm:6 |Rn|11111|
360
+ uint32_t extendedOp : 10; // sf|.......|..|.|Rm|Opt|Imm3|Rn|11111|
361
+ uint32_t immediateOp: 10; // sf|.......|Sh| Imm:12 |Rn|11111|
362
+ };
363
+
364
+ struct BaseExtend {
365
+ M_OPCODE(opcode, 22) // sf|........|N|......|......|Rn|Rd|
366
+ uint32_t rType : 2;
367
+ uint32_t u : 1;
368
+ };
369
+
370
+ struct BaseLogical {
371
+ uint32_t shiftedOp : 10; // sf|.......|Sh|.|Rm| Imm:6 |Rn|Rd|
372
+ uint32_t immediateOp: 10; // sf|........|N|ImmR:6|ImmS:6|Rn|Rd|
373
+ uint32_t negateImm : 1 ; // True if this is an operation that must negate IMM.
374
+ };
375
+
376
+ struct BaseMvnNeg {
377
+ uint32_t opcode;
378
+ };
379
+
380
+ struct BaseShift {
381
+ M_OPCODE(registerOp, 22)
382
+ M_OPCODE(immediateOp, 22)
383
+ uint32_t ror : 2;
384
+ };
385
+
386
+ struct BaseTst {
387
+ uint32_t shiftedOp : 10; // sf|.......|Sh|.|Rm| Imm:6 |Rn|11111|
388
+ uint32_t immediateOp: 10; // sf|........|N|ImmR:6|ImmS:6|Rn|11111|
389
+ };
390
+
391
+ struct BaseRM_NoImm {
392
+ M_OPCODE(opcode, 22)
393
+ uint32_t rType : 2;
394
+ uint32_t rHiId : 6;
395
+ uint32_t xOffset : 5;
396
+ };
397
+
398
+ struct BaseRM_SImm9 {
399
+ M_OPCODE(offsetOp, 22)
400
+ M_OPCODE(prePostOp, 22)
401
+ uint32_t rType : 2;
402
+ uint32_t rHiId : 6;
403
+ uint32_t xOffset : 5;
404
+ uint32_t immShift : 4;
405
+ };
406
+
407
+ struct BaseRM_SImm10 {
408
+ M_OPCODE(opcode, 22)
409
+ uint32_t rType : 2;
410
+ uint32_t rHiId : 6;
411
+ uint32_t xOffset : 5;
412
+ uint32_t immShift : 4;
413
+ };
414
+
415
+ struct BaseLdSt {
416
+ uint32_t uOffsetOp : 10;
417
+ uint32_t prePostOp : 11;
418
+ uint32_t registerOp : 11;
419
+ uint32_t literalOp : 8;
420
+ uint32_t rType : 2;
421
+ uint32_t xOffset : 5;
422
+ uint32_t uOffsetShift : 3;
423
+ uint32_t uAltInstId : 14;
424
+ };
425
+
426
+ struct BaseLdpStp {
427
+ uint32_t offsetOp : 10;
428
+ uint32_t prePostOp : 10;
429
+ uint32_t rType : 2;
430
+ uint32_t xOffset : 5;
431
+ uint32_t offsetShift : 3;
432
+ };
433
+
434
+ struct BaseStx {
435
+ M_OPCODE(opcode, 22)
436
+ uint32_t rType : 2;
437
+ uint32_t xOffset : 5;
438
+ };
439
+
440
+ struct BaseLdxp {
441
+ M_OPCODE(opcode, 22)
442
+ uint32_t rType : 2;
443
+ uint32_t xOffset : 5;
444
+ };
445
+
446
+ struct BaseStxp {
447
+ M_OPCODE(opcode, 22)
448
+ uint32_t rType : 2;
449
+ uint32_t xOffset : 5;
450
+ };
451
+
452
+ struct BaseAtomicOp {
453
+ M_OPCODE(opcode, 22)
454
+ uint32_t rType : 2;
455
+ uint32_t xOffset : 5;
456
+ uint32_t zr : 1;
457
+ };
458
+
459
+ struct BaseAtomicSt {
460
+ M_OPCODE(opcode, 22)
461
+ uint32_t rType : 2;
462
+ uint32_t xOffset : 5;
463
+ };
464
+
465
+ struct BaseAtomicCasp {
466
+ M_OPCODE(opcode, 22)
467
+ uint32_t rType : 2;
468
+ uint32_t xOffset : 5;
469
+ };
470
+
471
+ typedef BaseOp BaseBranchReg;
472
+ typedef BaseOp BaseBranchRel;
473
+ typedef BaseOp BaseBranchCmp;
474
+ typedef BaseOp BaseBranchTst;
475
+ typedef BaseOp BaseExtract;
476
+ typedef BaseOp BaseBfc;
477
+ typedef BaseOp BaseBfi;
478
+ typedef BaseOp BaseBfx;
479
+ typedef BaseOp BaseCCmp;
480
+ typedef BaseOp BaseCInc;
481
+ typedef BaseOp BaseCSet;
482
+ typedef BaseOp BaseCSel;
483
+ typedef BaseOp BaseMovKNZ;
484
+ typedef BaseOp BaseMull;
485
+
486
+ struct FSimdGeneric {
487
+ uint32_t _scalarOp : 28;
488
+ uint32_t _scalarHf : 4;
489
+ uint32_t _vectorOp : 28;
490
+ uint32_t _vectorHf : 4;
491
+
492
+ constexpr uint32_t scalarOp() const noexcept { return uint32_t(_scalarOp) << 10; }
493
+ constexpr uint32_t vectorOp() const noexcept { return uint32_t(_vectorOp) << 10; }
494
+ constexpr uint32_t scalarHf() const noexcept { return uint32_t(_scalarHf); }
495
+ constexpr uint32_t vectorHf() const noexcept { return uint32_t(_vectorHf); }
496
+ };
497
+
498
+ typedef FSimdGeneric FSimdVV;
499
+ typedef FSimdGeneric FSimdVVV;
500
+ typedef FSimdGeneric FSimdVVVV;
501
+
502
+ struct FSimdSV {
503
+ uint32_t opcode;
504
+ };
505
+
506
+ struct FSimdVVVe {
507
+ uint32_t _scalarOp : 28;
508
+ uint32_t _scalarHf : 4;
509
+ uint32_t _vectorOp;
510
+ uint32_t _elementOp;
511
+
512
+ constexpr uint32_t scalarOp() const noexcept { return uint32_t(_scalarOp) << 10; }
513
+ constexpr uint32_t scalarHf() const noexcept { return uint32_t(_scalarHf); };
514
+ constexpr uint32_t vectorOp() const noexcept { return uint32_t(_vectorOp) << 10; }
515
+ constexpr uint32_t vectorHf() const noexcept { return kHF_C; }
516
+ constexpr uint32_t elementScalarOp() const noexcept { return (uint32_t(_elementOp) << 10) | (0x5u << 28); }
517
+ constexpr uint32_t elementVectorOp() const noexcept { return (uint32_t(_elementOp) << 10); }
518
+ };
519
+
520
+ struct SimdFcadd {
521
+ uint32_t _opcode;
522
+
523
+ constexpr uint32_t opcode() const noexcept { return _opcode << 10; }
524
+ };
525
+
526
+ struct SimdFcmla {
527
+ uint32_t _regularOp;
528
+ uint32_t _elementOp;
529
+
530
+ constexpr uint32_t regularOp() const noexcept { return uint32_t(_regularOp) << 10; }
531
+ constexpr uint32_t elementOp() const noexcept { return (uint32_t(_elementOp) << 10); }
532
+ };
533
+
534
+ struct SimdFccmpFccmpe {
535
+ uint32_t _opcode;
536
+ constexpr uint32_t opcode() const noexcept { return _opcode; }
537
+ };
538
+
539
+ struct SimdFcm {
540
+ uint32_t _registerOp : 28;
541
+ uint32_t _registerHf : 4;
542
+
543
+ uint32_t _zeroOp : 28;
544
+
545
+ constexpr bool hasRegisterOp() const noexcept { return _registerOp != 0; }
546
+ constexpr bool hasZeroOp() const noexcept { return _zeroOp != 0; }
547
+
548
+ constexpr uint32_t registerScalarOp() const noexcept { return (uint32_t(_registerOp) << 10) | (0x5u << 28); }
549
+ constexpr uint32_t registerVectorOp() const noexcept { return uint32_t(_registerOp) << 10; }
550
+ constexpr uint32_t registerScalarHf() const noexcept { return uint32_t(_registerHf); }
551
+ constexpr uint32_t registerVectorHf() const noexcept { return uint32_t(_registerHf); }
552
+
553
+ constexpr uint32_t zeroScalarOp() const noexcept { return (uint32_t(_zeroOp) << 10) | (0x5u << 28); }
554
+ constexpr uint32_t zeroVectorOp() const noexcept { return (uint32_t(_zeroOp) << 10); }
555
+ };
556
+
557
+ struct SimdFcmpFcmpe {
558
+ uint32_t _opcode;
559
+ constexpr uint32_t opcode() const noexcept { return _opcode; }
560
+ };
561
+
562
+ struct SimdFcvtLN {
563
+ uint32_t _opcode : 22;
564
+ uint32_t _isCvtxn : 1;
565
+ uint32_t _hasScalar : 1;
566
+
567
+ constexpr uint32_t scalarOp() const noexcept { return (uint32_t(_opcode) << 10) | (0x5u << 28); }
568
+ constexpr uint32_t vectorOp() const noexcept { return (uint32_t(_opcode) << 10); }
569
+
570
+ constexpr uint32_t isCvtxn() const noexcept { return _isCvtxn; }
571
+ constexpr uint32_t hasScalar() const noexcept { return _hasScalar; }
572
+ };
573
+
574
+ struct SimdFcvtSV {
575
+ uint32_t _vectorIntOp;
576
+ uint32_t _vectorFpOp;
577
+ uint32_t _generalOp : 31;
578
+ uint32_t _isFloatToInt : 1;
579
+
580
+ constexpr uint32_t scalarIntOp() const noexcept { return (uint32_t(_vectorIntOp) << 10) | (0x5u << 28); }
581
+ constexpr uint32_t vectorIntOp() const noexcept { return uint32_t(_vectorIntOp) << 10; }
582
+ constexpr uint32_t scalarFpOp() const noexcept { return (uint32_t(_vectorFpOp) << 10) | (0x5u << 28); }
583
+ constexpr uint32_t vectorFpOp() const noexcept { return uint32_t(_vectorFpOp) << 10; }
584
+ constexpr uint32_t generalOp() const noexcept { return (uint32_t(_generalOp) << 10); }
585
+
586
+ constexpr uint32_t isFloatToInt() const noexcept { return _isFloatToInt; }
587
+ constexpr uint32_t isFixedPoint() const noexcept { return _vectorFpOp != 0; }
588
+ };
589
+
590
+ struct SimdFmlal {
591
+ uint32_t _vectorOp;
592
+ uint32_t _elementOp;
593
+ uint8_t _optionalQ;
594
+ uint8_t tA;
595
+ uint8_t tB;
596
+ uint8_t tElement;
597
+
598
+ constexpr uint32_t vectorOp() const noexcept { return uint32_t(_vectorOp) << 10; }
599
+ constexpr uint32_t elementOp() const noexcept { return uint32_t(_elementOp) << 10; }
600
+ constexpr uint32_t optionalQ() const noexcept { return _optionalQ; }
601
+ };
602
+
603
+ struct FSimdPair {
604
+ uint32_t _scalarOp;
605
+ uint32_t _vectorOp;
606
+
607
+ constexpr uint32_t scalarOp() const noexcept { return uint32_t(_scalarOp) << 10; }
608
+ constexpr uint32_t vectorOp() const noexcept { return uint32_t(_vectorOp) << 10; }
609
+ };
610
+
611
+ struct ISimdVV {
612
+ M_OPCODE(opcode, 22)
613
+ uint32_t vecOpType : 6;
614
+ };
615
+
616
+ struct ISimdVVx {
617
+ M_OPCODE(opcode, 22)
618
+ uint32_t op0Signature;
619
+ uint32_t op1Signature;
620
+ };
621
+
622
+ struct ISimdSV {
623
+ M_OPCODE(opcode, 22)
624
+ uint32_t vecOpType : 6;
625
+ };
626
+
627
+ struct ISimdVVV {
628
+ M_OPCODE(opcode, 22)
629
+ uint32_t vecOpType : 6;
630
+ };
631
+
632
+ struct ISimdVVVx {
633
+ M_OPCODE(opcode, 22)
634
+ uint32_t op0Signature;
635
+ uint32_t op1Signature;
636
+ uint32_t op2Signature;
637
+ };
638
+
639
+ struct ISimdWWV {
640
+ M_OPCODE(opcode, 22)
641
+ uint32_t vecOpType : 6;
642
+ };
643
+
644
+ struct ISimdVVVe {
645
+ uint32_t regularOp : 26; // 22 bits used.
646
+ uint32_t regularVecType : 6;
647
+ uint32_t elementOp : 26; // 22 bits used.
648
+ uint32_t elementVecType : 6;
649
+ };
650
+
651
+ struct ISimdVVVI {
652
+ M_OPCODE(opcode, 22)
653
+ uint32_t vecOpType : 6;
654
+ uint32_t immSize : 4;
655
+ uint32_t immShift : 4;
656
+ uint32_t imm64HasOneBitLess : 1;
657
+ };
658
+
659
+ struct ISimdVVVV {
660
+ uint32_t opcode : 22;
661
+ uint32_t vecOpType : 6;
662
+ };
663
+
664
+ struct ISimdVVVVx {
665
+ uint32_t opcode;
666
+ uint32_t op0Signature;
667
+ uint32_t op1Signature;
668
+ uint32_t op2Signature;
669
+ uint32_t op3Signature;
670
+ };
671
+
672
+ struct SimdBicOrr {
673
+ uint32_t registerOp; // 22 bits used.
674
+ uint32_t immediateOp; // 22 bits used.
675
+ };
676
+
677
+ struct SimdCmp {
678
+ uint32_t regOp;
679
+ uint32_t zeroOp : 22;
680
+ uint32_t vecOpType : 6;
681
+ };
682
+
683
+ struct SimdDot {
684
+ uint32_t vectorOp; // 22 bits used.
685
+ uint32_t elementOp; // 22 bits used.
686
+ uint8_t tA; // Element-type of the first operand.
687
+ uint8_t tB; // Element-type of the second and third operands.
688
+ uint8_t tElement; // Element-type of the element index[] operand.
689
+ };
690
+
691
+ struct SimdMoviMvni {
692
+ uint32_t opcode : 31;
693
+ uint32_t inverted : 1;
694
+ };
695
+
696
+ struct SimdLdSt {
697
+ uint32_t uOffsetOp : 10;
698
+ uint32_t prePostOp : 11;
699
+ uint32_t registerOp : 11;
700
+ uint32_t literalOp : 8;
701
+ uint32_t uAltInstId : 16;
702
+ };
703
+
704
+ struct SimdLdNStN {
705
+ uint32_t singleOp;
706
+ uint32_t multipleOp : 22;
707
+ uint32_t n : 3;
708
+ uint32_t replicate : 1;
709
+ };
710
+
711
+ struct SimdLdpStp {
712
+ uint32_t offsetOp : 10;
713
+ uint32_t prePostOp : 10;
714
+ };
715
+
716
+ struct SimdLdurStur {
717
+ uint32_t opcode;
718
+ };
719
+
720
+ struct ISimdPair {
721
+ uint32_t opcode2; // 22 bits used.
722
+ uint32_t opcode3 : 26; // 22 bits used.
723
+ uint32_t opType3 : 6;
724
+ };
725
+
726
+ struct SimdShift {
727
+ uint32_t registerOp; // 22 bits used.
728
+ uint32_t immediateOp : 22; // 22 bits used.
729
+ uint32_t invertedImm : 1;
730
+ uint32_t vecOpType : 6;
731
+ };
732
+
733
+ struct SimdShiftES {
734
+ uint32_t opcode : 22;
735
+ uint32_t vecOpType : 6;
736
+ };
737
+
738
+ struct SimdSm3tt {
739
+ uint32_t opcode;
740
+ };
741
+
742
+ struct SimdSmovUmov {
743
+ uint32_t opcode : 22;
744
+ uint32_t vecOpType : 6;
745
+ uint32_t isSigned : 1;
746
+ };
747
+
748
+ struct SimdSxtlUxtl {
749
+ uint32_t opcode : 22;
750
+ uint32_t vecOpType : 6;
751
+ };
752
+
753
+ struct SimdTblTbx {
754
+ uint32_t opcode;
755
+ };
756
+
757
+ #undef M_OPCODE
758
+
759
+ // ${EncodingDataForward:Begin}
760
+ // ------------------- Automatically generated, do not edit -------------------
761
+ extern const BaseAddSub baseAddSub[4];
762
+ extern const BaseAdr baseAdr[2];
763
+ extern const BaseAtDcIcTlbi baseAtDcIcTlbi[4];
764
+ extern const BaseAtomicCasp baseAtomicCasp[4];
765
+ extern const BaseAtomicOp baseAtomicOp[123];
766
+ extern const BaseAtomicSt baseAtomicSt[48];
767
+ extern const BaseBfc baseBfc[1];
768
+ extern const BaseBfi baseBfi[3];
769
+ extern const BaseBfm baseBfm[3];
770
+ extern const BaseBfx baseBfx[3];
771
+ extern const BaseBranchCmp baseBranchCmp[2];
772
+ extern const BaseBranchReg baseBranchReg[3];
773
+ extern const BaseBranchRel baseBranchRel[2];
774
+ extern const BaseBranchTst baseBranchTst[2];
775
+ extern const BaseCCmp baseCCmp[2];
776
+ extern const BaseCInc baseCInc[3];
777
+ extern const BaseCSel baseCSel[4];
778
+ extern const BaseCSet baseCSet[2];
779
+ extern const BaseCmpCmn baseCmpCmn[2];
780
+ extern const BaseExtend baseExtend[5];
781
+ extern const BaseExtract baseExtract[1];
782
+ extern const BaseLdSt baseLdSt[9];
783
+ extern const BaseLdpStp baseLdpStp[6];
784
+ extern const BaseLdxp baseLdxp[2];
785
+ extern const BaseLogical baseLogical[8];
786
+ extern const BaseMovKNZ baseMovKNZ[3];
787
+ extern const BaseMvnNeg baseMvnNeg[3];
788
+ extern const BaseOp baseOp[23];
789
+ extern const BaseOpImm baseOpImm[14];
790
+ extern const BaseR baseR[10];
791
+ extern const BaseRM_NoImm baseRM_NoImm[21];
792
+ extern const BaseRM_SImm10 baseRM_SImm10[2];
793
+ extern const BaseRM_SImm9 baseRM_SImm9[23];
794
+ extern const BaseRR baseRR[15];
795
+ extern const BaseRRII baseRRII[2];
796
+ extern const BaseRRR baseRRR[26];
797
+ extern const BaseRRRR baseRRRR[6];
798
+ extern const BaseShift baseShift[8];
799
+ extern const BaseStx baseStx[3];
800
+ extern const BaseStxp baseStxp[2];
801
+ extern const BaseTst baseTst[1];
802
+ extern const FSimdPair fSimdPair[5];
803
+ extern const FSimdSV fSimdSV[4];
804
+ extern const FSimdVV fSimdVV[17];
805
+ extern const FSimdVVV fSimdVVV[13];
806
+ extern const FSimdVVVV fSimdVVVV[4];
807
+ extern const FSimdVVVe fSimdVVVe[4];
808
+ extern const ISimdPair iSimdPair[1];
809
+ extern const ISimdSV iSimdSV[7];
810
+ extern const ISimdVV iSimdVV[29];
811
+ extern const ISimdVVV iSimdVVV[65];
812
+ extern const ISimdVVVI iSimdVVVI[2];
813
+ extern const ISimdVVVV iSimdVVVV[2];
814
+ extern const ISimdVVVVx iSimdVVVVx[1];
815
+ extern const ISimdVVVe iSimdVVVe[25];
816
+ extern const ISimdVVVx iSimdVVVx[17];
817
+ extern const ISimdVVx iSimdVVx[13];
818
+ extern const ISimdWWV iSimdWWV[8];
819
+ extern const SimdBicOrr simdBicOrr[2];
820
+ extern const SimdCmp simdCmp[7];
821
+ extern const SimdDot simdDot[5];
822
+ extern const SimdFcadd simdFcadd[1];
823
+ extern const SimdFccmpFccmpe simdFccmpFccmpe[2];
824
+ extern const SimdFcm simdFcm[5];
825
+ extern const SimdFcmla simdFcmla[1];
826
+ extern const SimdFcmpFcmpe simdFcmpFcmpe[2];
827
+ extern const SimdFcvtLN simdFcvtLN[6];
828
+ extern const SimdFcvtSV simdFcvtSV[12];
829
+ extern const SimdFmlal simdFmlal[6];
830
+ extern const SimdLdNStN simdLdNStN[12];
831
+ extern const SimdLdSt simdLdSt[2];
832
+ extern const SimdLdpStp simdLdpStp[4];
833
+ extern const SimdLdurStur simdLdurStur[2];
834
+ extern const SimdMoviMvni simdMoviMvni[2];
835
+ extern const SimdShift simdShift[40];
836
+ extern const SimdShiftES simdShiftES[2];
837
+ extern const SimdSm3tt simdSm3tt[4];
838
+ extern const SimdSmovUmov simdSmovUmov[2];
839
+ extern const SimdSxtlUxtl simdSxtlUxtl[4];
840
+ extern const SimdTblTbx simdTblTbx[2];
841
+ // ----------------------------------------------------------------------------
842
+ // ${EncodingDataForward:End}
843
+
844
+ } // {EncodingData}
845
+
846
+ // a64::InstDB - InstNameIndex
847
+ // ===========================
848
+
849
+ // ${NameLimits:Begin}
850
+ // ------------------- Automatically generated, do not edit -------------------
851
+ enum : uint32_t { kMaxNameSize = 9 };
852
+ // ----------------------------------------------------------------------------
853
+ // ${NameLimits:End}
854
+
855
+ struct InstNameIndex {
856
+ uint16_t start;
857
+ uint16_t end;
858
+ };
859
+
860
+ // a64::InstDB - Tables
861
+ // ====================
862
+
863
+ #ifndef ASMJIT_NO_TEXT
864
+ extern const char _nameData[];
865
+ extern const InstNameIndex instNameIndex[26];
866
+ #endif // !ASMJIT_NO_TEXT
867
+
868
+ } // {InstDB}
869
+
870
+ //! \}
871
+ //! \endcond
872
+
873
+ ASMJIT_END_SUB_NAMESPACE
874
+
875
+ #endif // ASMJIT_A64_ARMINSTDB_H_P_INCLUDED
876
+