asmjit 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/asmjit.gemspec +1 -1
  4. data/ext/asmjit/asmjit/.editorconfig +10 -0
  5. data/ext/asmjit/asmjit/.github/FUNDING.yml +1 -0
  6. data/ext/asmjit/asmjit/.github/workflows/build-config.json +47 -0
  7. data/ext/asmjit/asmjit/.github/workflows/build.yml +156 -0
  8. data/ext/asmjit/asmjit/.gitignore +6 -0
  9. data/ext/asmjit/asmjit/CMakeLists.txt +611 -0
  10. data/ext/asmjit/asmjit/LICENSE.md +17 -0
  11. data/ext/asmjit/asmjit/README.md +69 -0
  12. data/ext/asmjit/asmjit/src/asmjit/a64.h +62 -0
  13. data/ext/asmjit/asmjit/src/asmjit/arm/a64archtraits_p.h +81 -0
  14. data/ext/asmjit/asmjit/src/asmjit/arm/a64assembler.cpp +5115 -0
  15. data/ext/asmjit/asmjit/src/asmjit/arm/a64assembler.h +72 -0
  16. data/ext/asmjit/asmjit/src/asmjit/arm/a64builder.cpp +51 -0
  17. data/ext/asmjit/asmjit/src/asmjit/arm/a64builder.h +57 -0
  18. data/ext/asmjit/asmjit/src/asmjit/arm/a64compiler.cpp +60 -0
  19. data/ext/asmjit/asmjit/src/asmjit/arm/a64compiler.h +247 -0
  20. data/ext/asmjit/asmjit/src/asmjit/arm/a64emithelper.cpp +464 -0
  21. data/ext/asmjit/asmjit/src/asmjit/arm/a64emithelper_p.h +50 -0
  22. data/ext/asmjit/asmjit/src/asmjit/arm/a64emitter.h +1228 -0
  23. data/ext/asmjit/asmjit/src/asmjit/arm/a64formatter.cpp +298 -0
  24. data/ext/asmjit/asmjit/src/asmjit/arm/a64formatter_p.h +59 -0
  25. data/ext/asmjit/asmjit/src/asmjit/arm/a64func.cpp +189 -0
  26. data/ext/asmjit/asmjit/src/asmjit/arm/a64func_p.h +33 -0
  27. data/ext/asmjit/asmjit/src/asmjit/arm/a64globals.h +1894 -0
  28. data/ext/asmjit/asmjit/src/asmjit/arm/a64instapi.cpp +278 -0
  29. data/ext/asmjit/asmjit/src/asmjit/arm/a64instapi_p.h +41 -0
  30. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb.cpp +1957 -0
  31. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb.h +74 -0
  32. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb_p.h +876 -0
  33. data/ext/asmjit/asmjit/src/asmjit/arm/a64operand.cpp +85 -0
  34. data/ext/asmjit/asmjit/src/asmjit/arm/a64operand.h +312 -0
  35. data/ext/asmjit/asmjit/src/asmjit/arm/a64rapass.cpp +852 -0
  36. data/ext/asmjit/asmjit/src/asmjit/arm/a64rapass_p.h +105 -0
  37. data/ext/asmjit/asmjit/src/asmjit/arm/a64utils.h +179 -0
  38. data/ext/asmjit/asmjit/src/asmjit/arm/armformatter.cpp +143 -0
  39. data/ext/asmjit/asmjit/src/asmjit/arm/armformatter_p.h +44 -0
  40. data/ext/asmjit/asmjit/src/asmjit/arm/armglobals.h +21 -0
  41. data/ext/asmjit/asmjit/src/asmjit/arm/armoperand.h +621 -0
  42. data/ext/asmjit/asmjit/src/asmjit/arm.h +62 -0
  43. data/ext/asmjit/asmjit/src/asmjit/asmjit-scope-begin.h +17 -0
  44. data/ext/asmjit/asmjit/src/asmjit/asmjit-scope-end.h +9 -0
  45. data/ext/asmjit/asmjit/src/asmjit/asmjit.h +33 -0
  46. data/ext/asmjit/asmjit/src/asmjit/core/api-build_p.h +55 -0
  47. data/ext/asmjit/asmjit/src/asmjit/core/api-config.h +613 -0
  48. data/ext/asmjit/asmjit/src/asmjit/core/archcommons.h +229 -0
  49. data/ext/asmjit/asmjit/src/asmjit/core/archtraits.cpp +160 -0
  50. data/ext/asmjit/asmjit/src/asmjit/core/archtraits.h +290 -0
  51. data/ext/asmjit/asmjit/src/asmjit/core/assembler.cpp +406 -0
  52. data/ext/asmjit/asmjit/src/asmjit/core/assembler.h +129 -0
  53. data/ext/asmjit/asmjit/src/asmjit/core/builder.cpp +889 -0
  54. data/ext/asmjit/asmjit/src/asmjit/core/builder.h +1391 -0
  55. data/ext/asmjit/asmjit/src/asmjit/core/codebuffer.h +113 -0
  56. data/ext/asmjit/asmjit/src/asmjit/core/codeholder.cpp +1149 -0
  57. data/ext/asmjit/asmjit/src/asmjit/core/codeholder.h +1035 -0
  58. data/ext/asmjit/asmjit/src/asmjit/core/codewriter.cpp +175 -0
  59. data/ext/asmjit/asmjit/src/asmjit/core/codewriter_p.h +179 -0
  60. data/ext/asmjit/asmjit/src/asmjit/core/compiler.cpp +582 -0
  61. data/ext/asmjit/asmjit/src/asmjit/core/compiler.h +737 -0
  62. data/ext/asmjit/asmjit/src/asmjit/core/compilerdefs.h +173 -0
  63. data/ext/asmjit/asmjit/src/asmjit/core/constpool.cpp +363 -0
  64. data/ext/asmjit/asmjit/src/asmjit/core/constpool.h +250 -0
  65. data/ext/asmjit/asmjit/src/asmjit/core/cpuinfo.cpp +1162 -0
  66. data/ext/asmjit/asmjit/src/asmjit/core/cpuinfo.h +813 -0
  67. data/ext/asmjit/asmjit/src/asmjit/core/emithelper.cpp +323 -0
  68. data/ext/asmjit/asmjit/src/asmjit/core/emithelper_p.h +58 -0
  69. data/ext/asmjit/asmjit/src/asmjit/core/emitter.cpp +333 -0
  70. data/ext/asmjit/asmjit/src/asmjit/core/emitter.h +741 -0
  71. data/ext/asmjit/asmjit/src/asmjit/core/emitterutils.cpp +129 -0
  72. data/ext/asmjit/asmjit/src/asmjit/core/emitterutils_p.h +89 -0
  73. data/ext/asmjit/asmjit/src/asmjit/core/environment.cpp +46 -0
  74. data/ext/asmjit/asmjit/src/asmjit/core/environment.h +508 -0
  75. data/ext/asmjit/asmjit/src/asmjit/core/errorhandler.cpp +14 -0
  76. data/ext/asmjit/asmjit/src/asmjit/core/errorhandler.h +228 -0
  77. data/ext/asmjit/asmjit/src/asmjit/core/formatter.cpp +584 -0
  78. data/ext/asmjit/asmjit/src/asmjit/core/formatter.h +247 -0
  79. data/ext/asmjit/asmjit/src/asmjit/core/formatter_p.h +34 -0
  80. data/ext/asmjit/asmjit/src/asmjit/core/func.cpp +286 -0
  81. data/ext/asmjit/asmjit/src/asmjit/core/func.h +1445 -0
  82. data/ext/asmjit/asmjit/src/asmjit/core/funcargscontext.cpp +293 -0
  83. data/ext/asmjit/asmjit/src/asmjit/core/funcargscontext_p.h +199 -0
  84. data/ext/asmjit/asmjit/src/asmjit/core/globals.cpp +133 -0
  85. data/ext/asmjit/asmjit/src/asmjit/core/globals.h +393 -0
  86. data/ext/asmjit/asmjit/src/asmjit/core/inst.cpp +113 -0
  87. data/ext/asmjit/asmjit/src/asmjit/core/inst.h +772 -0
  88. data/ext/asmjit/asmjit/src/asmjit/core/jitallocator.cpp +1242 -0
  89. data/ext/asmjit/asmjit/src/asmjit/core/jitallocator.h +261 -0
  90. data/ext/asmjit/asmjit/src/asmjit/core/jitruntime.cpp +80 -0
  91. data/ext/asmjit/asmjit/src/asmjit/core/jitruntime.h +89 -0
  92. data/ext/asmjit/asmjit/src/asmjit/core/logger.cpp +69 -0
  93. data/ext/asmjit/asmjit/src/asmjit/core/logger.h +198 -0
  94. data/ext/asmjit/asmjit/src/asmjit/core/misc_p.h +33 -0
  95. data/ext/asmjit/asmjit/src/asmjit/core/operand.cpp +132 -0
  96. data/ext/asmjit/asmjit/src/asmjit/core/operand.h +1611 -0
  97. data/ext/asmjit/asmjit/src/asmjit/core/osutils.cpp +84 -0
  98. data/ext/asmjit/asmjit/src/asmjit/core/osutils.h +61 -0
  99. data/ext/asmjit/asmjit/src/asmjit/core/osutils_p.h +68 -0
  100. data/ext/asmjit/asmjit/src/asmjit/core/raassignment_p.h +418 -0
  101. data/ext/asmjit/asmjit/src/asmjit/core/rabuilders_p.h +612 -0
  102. data/ext/asmjit/asmjit/src/asmjit/core/radefs_p.h +1204 -0
  103. data/ext/asmjit/asmjit/src/asmjit/core/ralocal.cpp +1166 -0
  104. data/ext/asmjit/asmjit/src/asmjit/core/ralocal_p.h +254 -0
  105. data/ext/asmjit/asmjit/src/asmjit/core/rapass.cpp +1969 -0
  106. data/ext/asmjit/asmjit/src/asmjit/core/rapass_p.h +1183 -0
  107. data/ext/asmjit/asmjit/src/asmjit/core/rastack.cpp +184 -0
  108. data/ext/asmjit/asmjit/src/asmjit/core/rastack_p.h +171 -0
  109. data/ext/asmjit/asmjit/src/asmjit/core/string.cpp +559 -0
  110. data/ext/asmjit/asmjit/src/asmjit/core/string.h +372 -0
  111. data/ext/asmjit/asmjit/src/asmjit/core/support.cpp +494 -0
  112. data/ext/asmjit/asmjit/src/asmjit/core/support.h +1773 -0
  113. data/ext/asmjit/asmjit/src/asmjit/core/target.cpp +14 -0
  114. data/ext/asmjit/asmjit/src/asmjit/core/target.h +53 -0
  115. data/ext/asmjit/asmjit/src/asmjit/core/type.cpp +74 -0
  116. data/ext/asmjit/asmjit/src/asmjit/core/type.h +419 -0
  117. data/ext/asmjit/asmjit/src/asmjit/core/virtmem.cpp +722 -0
  118. data/ext/asmjit/asmjit/src/asmjit/core/virtmem.h +242 -0
  119. data/ext/asmjit/asmjit/src/asmjit/core/zone.cpp +353 -0
  120. data/ext/asmjit/asmjit/src/asmjit/core/zone.h +615 -0
  121. data/ext/asmjit/asmjit/src/asmjit/core/zonehash.cpp +309 -0
  122. data/ext/asmjit/asmjit/src/asmjit/core/zonehash.h +186 -0
  123. data/ext/asmjit/asmjit/src/asmjit/core/zonelist.cpp +163 -0
  124. data/ext/asmjit/asmjit/src/asmjit/core/zonelist.h +209 -0
  125. data/ext/asmjit/asmjit/src/asmjit/core/zonestack.cpp +176 -0
  126. data/ext/asmjit/asmjit/src/asmjit/core/zonestack.h +239 -0
  127. data/ext/asmjit/asmjit/src/asmjit/core/zonestring.h +120 -0
  128. data/ext/asmjit/asmjit/src/asmjit/core/zonetree.cpp +99 -0
  129. data/ext/asmjit/asmjit/src/asmjit/core/zonetree.h +380 -0
  130. data/ext/asmjit/asmjit/src/asmjit/core/zonevector.cpp +356 -0
  131. data/ext/asmjit/asmjit/src/asmjit/core/zonevector.h +690 -0
  132. data/ext/asmjit/asmjit/src/asmjit/core.h +1861 -0
  133. data/ext/asmjit/asmjit/src/asmjit/x86/x86archtraits_p.h +148 -0
  134. data/ext/asmjit/asmjit/src/asmjit/x86/x86assembler.cpp +5110 -0
  135. data/ext/asmjit/asmjit/src/asmjit/x86/x86assembler.h +685 -0
  136. data/ext/asmjit/asmjit/src/asmjit/x86/x86builder.cpp +52 -0
  137. data/ext/asmjit/asmjit/src/asmjit/x86/x86builder.h +351 -0
  138. data/ext/asmjit/asmjit/src/asmjit/x86/x86compiler.cpp +61 -0
  139. data/ext/asmjit/asmjit/src/asmjit/x86/x86compiler.h +721 -0
  140. data/ext/asmjit/asmjit/src/asmjit/x86/x86emithelper.cpp +619 -0
  141. data/ext/asmjit/asmjit/src/asmjit/x86/x86emithelper_p.h +60 -0
  142. data/ext/asmjit/asmjit/src/asmjit/x86/x86emitter.h +4315 -0
  143. data/ext/asmjit/asmjit/src/asmjit/x86/x86formatter.cpp +944 -0
  144. data/ext/asmjit/asmjit/src/asmjit/x86/x86formatter_p.h +58 -0
  145. data/ext/asmjit/asmjit/src/asmjit/x86/x86func.cpp +503 -0
  146. data/ext/asmjit/asmjit/src/asmjit/x86/x86func_p.h +33 -0
  147. data/ext/asmjit/asmjit/src/asmjit/x86/x86globals.h +2169 -0
  148. data/ext/asmjit/asmjit/src/asmjit/x86/x86instapi.cpp +1732 -0
  149. data/ext/asmjit/asmjit/src/asmjit/x86/x86instapi_p.h +41 -0
  150. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb.cpp +4427 -0
  151. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb.h +563 -0
  152. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb_p.h +311 -0
  153. data/ext/asmjit/asmjit/src/asmjit/x86/x86opcode_p.h +436 -0
  154. data/ext/asmjit/asmjit/src/asmjit/x86/x86operand.cpp +231 -0
  155. data/ext/asmjit/asmjit/src/asmjit/x86/x86operand.h +1085 -0
  156. data/ext/asmjit/asmjit/src/asmjit/x86/x86rapass.cpp +1509 -0
  157. data/ext/asmjit/asmjit/src/asmjit/x86/x86rapass_p.h +94 -0
  158. data/ext/asmjit/asmjit/src/asmjit/x86.h +93 -0
  159. data/ext/asmjit/asmjit/src/asmjit.natvis +245 -0
  160. data/ext/asmjit/asmjit/test/asmjit_test_assembler.cpp +84 -0
  161. data/ext/asmjit/asmjit/test/asmjit_test_assembler.h +85 -0
  162. data/ext/asmjit/asmjit/test/asmjit_test_assembler_a64.cpp +4006 -0
  163. data/ext/asmjit/asmjit/test/asmjit_test_assembler_x64.cpp +17833 -0
  164. data/ext/asmjit/asmjit/test/asmjit_test_assembler_x86.cpp +8300 -0
  165. data/ext/asmjit/asmjit/test/asmjit_test_compiler.cpp +253 -0
  166. data/ext/asmjit/asmjit/test/asmjit_test_compiler.h +73 -0
  167. data/ext/asmjit/asmjit/test/asmjit_test_compiler_a64.cpp +690 -0
  168. data/ext/asmjit/asmjit/test/asmjit_test_compiler_x86.cpp +4317 -0
  169. data/ext/asmjit/asmjit/test/asmjit_test_emitters.cpp +197 -0
  170. data/ext/asmjit/asmjit/test/asmjit_test_instinfo.cpp +181 -0
  171. data/ext/asmjit/asmjit/test/asmjit_test_misc.h +257 -0
  172. data/ext/asmjit/asmjit/test/asmjit_test_perf.cpp +62 -0
  173. data/ext/asmjit/asmjit/test/asmjit_test_perf.h +61 -0
  174. data/ext/asmjit/asmjit/test/asmjit_test_perf_a64.cpp +699 -0
  175. data/ext/asmjit/asmjit/test/asmjit_test_perf_x86.cpp +5032 -0
  176. data/ext/asmjit/asmjit/test/asmjit_test_unit.cpp +172 -0
  177. data/ext/asmjit/asmjit/test/asmjit_test_x86_sections.cpp +172 -0
  178. data/ext/asmjit/asmjit/test/asmjitutils.h +38 -0
  179. data/ext/asmjit/asmjit/test/broken.cpp +312 -0
  180. data/ext/asmjit/asmjit/test/broken.h +148 -0
  181. data/ext/asmjit/asmjit/test/cmdline.h +61 -0
  182. data/ext/asmjit/asmjit/test/performancetimer.h +41 -0
  183. data/ext/asmjit/asmjit/tools/configure-makefiles.sh +13 -0
  184. data/ext/asmjit/asmjit/tools/configure-ninja.sh +13 -0
  185. data/ext/asmjit/asmjit/tools/configure-sanitizers.sh +13 -0
  186. data/ext/asmjit/asmjit/tools/configure-vs2019-x64.bat +2 -0
  187. data/ext/asmjit/asmjit/tools/configure-vs2019-x86.bat +2 -0
  188. data/ext/asmjit/asmjit/tools/configure-vs2022-x64.bat +2 -0
  189. data/ext/asmjit/asmjit/tools/configure-vs2022-x86.bat +2 -0
  190. data/ext/asmjit/asmjit/tools/configure-xcode.sh +8 -0
  191. data/ext/asmjit/asmjit/tools/enumgen.js +417 -0
  192. data/ext/asmjit/asmjit/tools/enumgen.sh +3 -0
  193. data/ext/asmjit/asmjit/tools/tablegen-arm.js +365 -0
  194. data/ext/asmjit/asmjit/tools/tablegen-arm.sh +3 -0
  195. data/ext/asmjit/asmjit/tools/tablegen-x86.js +2638 -0
  196. data/ext/asmjit/asmjit/tools/tablegen-x86.sh +3 -0
  197. data/ext/asmjit/asmjit/tools/tablegen.js +947 -0
  198. data/ext/asmjit/asmjit/tools/tablegen.sh +4 -0
  199. data/ext/asmjit/asmjit.cc +18 -0
  200. data/lib/asmjit/version.rb +1 -1
  201. metadata +197 -2
@@ -0,0 +1,1228 @@
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_A64EMITTER_H_INCLUDED
7
+ #define ASMJIT_ARM_A64EMITTER_H_INCLUDED
8
+
9
+ #include "../core/emitter.h"
10
+ #include "../core/support.h"
11
+ #include "../arm/a64instdb.h"
12
+ #include "../arm/a64operand.h"
13
+
14
+ ASMJIT_BEGIN_SUB_NAMESPACE(a64)
15
+
16
+ #define ASMJIT_INST_0x(NAME, ID) \
17
+ inline Error NAME() { return _emitter()->_emitI(Inst::kId##ID); }
18
+
19
+ #define ASMJIT_INST_1x(NAME, ID, T0) \
20
+ inline Error NAME(const T0& o0) { return _emitter()->_emitI(Inst::kId##ID, o0); }
21
+
22
+ #define ASMJIT_INST_2x(NAME, ID, T0, T1) \
23
+ inline Error NAME(const T0& o0, const T1& o1) { return _emitter()->_emitI(Inst::kId##ID, o0, o1); }
24
+
25
+ #define ASMJIT_INST_3x(NAME, ID, T0, T1, T2) \
26
+ inline Error NAME(const T0& o0, const T1& o1, const T2& o2) { return _emitter()->_emitI(Inst::kId##ID, o0, o1, o2); }
27
+
28
+ #define ASMJIT_INST_4x(NAME, ID, T0, T1, T2, T3) \
29
+ inline Error NAME(const T0& o0, const T1& o1, const T2& o2, const T3& o3) { return _emitter()->_emitI(Inst::kId##ID, o0, o1, o2, o3); }
30
+
31
+ #define ASMJIT_INST_5x(NAME, ID, T0, T1, T2, T3, T4) \
32
+ inline Error NAME(const T0& o0, const T1& o1, const T2& o2, const T3& o3, const T4& o4) { return _emitter()->_emitI(Inst::kId##ID, o0, o1, o2, o3, o4); }
33
+
34
+ #define ASMJIT_INST_6x(NAME, ID, T0, T1, T2, T3, T4, T5) \
35
+ inline Error NAME(const T0& o0, const T1& o1, const T2& o2, const T3& o3, const T4& o4, const T5& o5) { return _emitter()->_emitI(Inst::kId##ID, o0, o1, o2, o3, o4, o5); }
36
+
37
+ #define ASMJIT_INST_1cc(NAME, ID, T0) \
38
+ inline Error NAME(const T0& o0) { return _emitter()->_emitI(Inst::kId##ID, o0); } \
39
+ \
40
+ inline Error NAME(CondCode cc, const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, cc), o0); } \
41
+ \
42
+ inline Error NAME##_eq(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kEQ), o0); } \
43
+ inline Error NAME##_ne(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kNE), o0); } \
44
+ inline Error NAME##_cs(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kCS), o0); } \
45
+ inline Error NAME##_hs(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kHS), o0); } \
46
+ inline Error NAME##_cc(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kCC), o0); } \
47
+ inline Error NAME##_lo(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kLO), o0); } \
48
+ inline Error NAME##_mi(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kMI), o0); } \
49
+ inline Error NAME##_pl(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kPL), o0); } \
50
+ inline Error NAME##_vs(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kVS), o0); } \
51
+ inline Error NAME##_vc(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kVC), o0); } \
52
+ inline Error NAME##_hi(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kHI), o0); } \
53
+ inline Error NAME##_ls(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kLS), o0); } \
54
+ inline Error NAME##_ge(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kGE), o0); } \
55
+ inline Error NAME##_lt(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kLT), o0); } \
56
+ inline Error NAME##_gt(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kGT), o0); } \
57
+ inline Error NAME##_le(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kLE), o0); } \
58
+ inline Error NAME##_al(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kAL), o0); }
59
+
60
+ //! \addtogroup asmjit_a64
61
+ //! \{
62
+
63
+ //! ARM emitter.
64
+ //!
65
+ //! NOTE: This class cannot be instantiated, you can only cast to it and use it as emitter that emits to either
66
+ //! \ref Assembler, \ref Builder, or \ref Compiler (use withcaution with \ref Compiler as it expects virtual
67
+ //! registers to be used).
68
+ template<typename This>
69
+ struct EmitterExplicitT {
70
+ //! \cond
71
+
72
+ // These two are unfortunately reported by the sanitizer. We know what we do, however, the sanitizer doesn't.
73
+ // I have tried to use reinterpret_cast instead, but that would generate bad code when compiled by MSC.
74
+ ASMJIT_ATTRIBUTE_NO_SANITIZE_UNDEF inline This* _emitter() noexcept { return static_cast<This*>(this); }
75
+ ASMJIT_ATTRIBUTE_NO_SANITIZE_UNDEF inline const This* _emitter() const noexcept { return static_cast<const This*>(this); }
76
+
77
+ //! \endcond
78
+
79
+ // --------------------------------------------------------------------------
80
+ // [Options]
81
+ // --------------------------------------------------------------------------
82
+
83
+ protected:
84
+ inline This& _addInstOptions(InstOptions options) noexcept {
85
+ static_cast<This*>(this)->addInstOptions(options);
86
+ return *static_cast<This*>(this);
87
+ }
88
+
89
+ public:
90
+ //! \name General Purpose Instructions
91
+ //! \{
92
+
93
+ ASMJIT_INST_3x(adc, Adc, Gp, Gp, Gp)
94
+ ASMJIT_INST_3x(adcs, Adcs, Gp, Gp, Gp)
95
+
96
+ ASMJIT_INST_3x(add, Add, Gp, Gp, Gp)
97
+ ASMJIT_INST_4x(add, Add, Gp, Gp, Gp, Imm)
98
+ ASMJIT_INST_3x(add, Add, Gp, Gp, Imm)
99
+ ASMJIT_INST_4x(add, Add, Gp, Gp, Imm, Imm)
100
+ ASMJIT_INST_3x(adds, Adds, Gp, Gp, Gp)
101
+ ASMJIT_INST_3x(adds, Adds, Gp, Gp, Imm)
102
+ ASMJIT_INST_4x(adds, Adds, Gp, Gp, Gp, Imm)
103
+ ASMJIT_INST_4x(adds, Adds, Gp, Gp, Imm, Imm)
104
+
105
+ ASMJIT_INST_2x(adr, Adr, Gp, Imm)
106
+ ASMJIT_INST_2x(adr, Adr, Gp, Label)
107
+ ASMJIT_INST_2x(adrp, Adrp, Gp, Imm)
108
+ ASMJIT_INST_2x(adrp, Adrp, Gp, Label)
109
+
110
+ ASMJIT_INST_3x(and_, And, Gp, Gp, Imm)
111
+ ASMJIT_INST_3x(and_, And, Gp, Gp, Gp)
112
+ ASMJIT_INST_4x(and_, And, Gp, Gp, Gp, Imm)
113
+ ASMJIT_INST_3x(ands, Ands, Gp, Gp, Imm)
114
+ ASMJIT_INST_3x(ands, Ands, Gp, Gp, Gp)
115
+ ASMJIT_INST_4x(ands, Ands, Gp, Gp, Gp, Imm)
116
+
117
+ ASMJIT_INST_3x(asr, Asr, Gp, Gp, Imm)
118
+ ASMJIT_INST_3x(asr, Asr, Gp, Gp, Gp)
119
+ ASMJIT_INST_3x(asrv, Asrv, Gp, Gp, Gp)
120
+
121
+ ASMJIT_INST_2x(at, At, Imm, Gp)
122
+
123
+ ASMJIT_INST_3x(bfc, Bfc, Gp, Imm, Imm)
124
+ ASMJIT_INST_4x(bfi, Bfi, Gp, Gp, Imm, Imm)
125
+ ASMJIT_INST_4x(bfm, Bfm, Gp, Gp, Imm, Imm)
126
+ ASMJIT_INST_4x(bfxil, Bfxil, Gp, Gp, Imm, Imm)
127
+
128
+ ASMJIT_INST_3x(bic, Bic, Gp, Gp, Imm);
129
+ ASMJIT_INST_3x(bic, Bic, Gp, Gp, Gp);
130
+ ASMJIT_INST_4x(bic, Bic, Gp, Gp, Gp, Imm);
131
+ ASMJIT_INST_3x(bics, Bics, Gp, Gp, Imm);
132
+ ASMJIT_INST_3x(bics, Bics, Gp, Gp, Gp);
133
+ ASMJIT_INST_4x(bics, Bics, Gp, Gp, Gp, Imm);
134
+
135
+ ASMJIT_INST_1x(brk, Brk, Imm)
136
+
137
+ ASMJIT_INST_4x(ccmn, Ccmn, Gp, Gp, Imm, Imm);
138
+ ASMJIT_INST_4x(ccmn, Ccmn, Gp, Imm, Imm, Imm);
139
+ ASMJIT_INST_4x(ccmp, Ccmp, Gp, Gp, Imm, Imm);
140
+ ASMJIT_INST_4x(ccmp, Ccmp, Gp, Imm, Imm, Imm);
141
+
142
+ ASMJIT_INST_3x(cinc, Cinc, Gp, Gp, Imm);
143
+ ASMJIT_INST_3x(cinv, Cinv, Gp, Gp, Imm);
144
+
145
+ ASMJIT_INST_1x(clrex, Clrex, Imm)
146
+
147
+ ASMJIT_INST_2x(cls, Cls, Gp, Gp)
148
+ ASMJIT_INST_2x(clz, Clz, Gp, Gp)
149
+
150
+ ASMJIT_INST_2x(cmn, Cmn, Gp, Gp)
151
+ ASMJIT_INST_3x(cmn, Cmn, Gp, Gp, Imm)
152
+ ASMJIT_INST_2x(cmn, Cmn, Gp, Imm)
153
+ ASMJIT_INST_3x(cmn, Cmn, Gp, Imm, Imm)
154
+ ASMJIT_INST_2x(cmp, Cmp, Gp, Gp)
155
+ ASMJIT_INST_3x(cmp, Cmp, Gp, Gp, Imm)
156
+ ASMJIT_INST_2x(cmp, Cmp, Gp, Imm)
157
+ ASMJIT_INST_3x(cmp, Cmp, Gp, Imm, Imm)
158
+
159
+ ASMJIT_INST_3x(cneg, Cneg, Gp, Gp, Imm);
160
+
161
+ ASMJIT_INST_4x(csel, Csel, Gp, Gp, Gp, Imm);
162
+ ASMJIT_INST_2x(cset, Cset, Gp, Imm);
163
+ ASMJIT_INST_2x(csetm, Csetm, Gp, Imm);
164
+
165
+ ASMJIT_INST_4x(csinc, Csinc, Gp, Gp, Gp, Imm);
166
+ ASMJIT_INST_4x(csinv, Csinv, Gp, Gp, Gp, Imm);
167
+ ASMJIT_INST_4x(csneg, Csneg, Gp, Gp, Gp, Imm);
168
+
169
+ ASMJIT_INST_2x(dc, Dc, Imm, Gp)
170
+ ASMJIT_INST_1x(dmb, Dmb, Imm)
171
+ ASMJIT_INST_1x(dsb, Dsb, Imm)
172
+ ASMJIT_INST_0x(drps, Drps)
173
+
174
+ ASMJIT_INST_3x(eon, Eon, Gp, Gp, Gp)
175
+ ASMJIT_INST_4x(eon, Eon, Gp, Gp, Gp, Imm)
176
+
177
+ ASMJIT_INST_3x(eor, Eor, Gp, Gp, Imm)
178
+ ASMJIT_INST_3x(eor, Eor, Gp, Gp, Gp)
179
+ ASMJIT_INST_4x(eor, Eor, Gp, Gp, Gp, Imm)
180
+
181
+ ASMJIT_INST_0x(eret, Eret)
182
+ ASMJIT_INST_0x(esb, Esb)
183
+
184
+ ASMJIT_INST_4x(extr, Extr, Gp, Gp, Gp, Imm)
185
+
186
+ ASMJIT_INST_1x(hlt, Hlt, Imm)
187
+ ASMJIT_INST_1x(hvc, Hvc, Imm)
188
+ ASMJIT_INST_2x(ic, Ic, Imm, Gp)
189
+ ASMJIT_INST_1x(isb, Isb, Imm)
190
+
191
+ ASMJIT_INST_3x(lsl, Lsl, Gp, Gp, Imm)
192
+ ASMJIT_INST_3x(lsl, Lsl, Gp, Gp, Gp)
193
+ ASMJIT_INST_3x(lslv, Lslv, Gp, Gp, Gp)
194
+
195
+ ASMJIT_INST_3x(lsr, Lsr, Gp, Gp, Imm)
196
+ ASMJIT_INST_3x(lsr, Lsr, Gp, Gp, Gp)
197
+ ASMJIT_INST_3x(lsrv, Lsrv, Gp, Gp, Gp)
198
+
199
+ ASMJIT_INST_4x(madd, Madd, Gp, Gp, Gp, Gp)
200
+ ASMJIT_INST_3x(mneg, Mneg, Gp, Gp, Gp)
201
+
202
+ ASMJIT_INST_2x(mov, Mov, Gp, Gp)
203
+ ASMJIT_INST_2x(mov, Mov, Gp, Imm)
204
+ ASMJIT_INST_2x(movk, Movk, Gp, Imm)
205
+ ASMJIT_INST_3x(movk, Movk, Gp, Imm, Imm)
206
+ ASMJIT_INST_2x(movn, Movn, Gp, Imm)
207
+ ASMJIT_INST_3x(movn, Movn, Gp, Imm, Imm)
208
+ ASMJIT_INST_2x(movz, Movz, Gp, Imm)
209
+ ASMJIT_INST_3x(movz, Movz, Gp, Imm, Imm)
210
+
211
+ ASMJIT_INST_2x(mrs, Mrs, Gp, Imm)
212
+ ASMJIT_INST_2x(msr, Msr, Imm, Gp)
213
+ ASMJIT_INST_2x(msr, Msr, Imm, Imm)
214
+
215
+ ASMJIT_INST_4x(msub, Msub, Gp, Gp, Gp, Gp)
216
+ ASMJIT_INST_3x(mul, Mul, Gp, Gp, Gp)
217
+
218
+ ASMJIT_INST_2x(mvn, Mvn, Gp, Gp)
219
+ ASMJIT_INST_3x(mvn, Mvn, Gp, Gp, Imm)
220
+
221
+ ASMJIT_INST_2x(neg, Neg, Gp, Gp)
222
+ ASMJIT_INST_3x(neg, Neg, Gp, Gp, Imm)
223
+ ASMJIT_INST_2x(negs, Negs, Gp, Gp)
224
+ ASMJIT_INST_3x(negs, Negs, Gp, Gp, Imm)
225
+
226
+ ASMJIT_INST_2x(ngc, Ngc, Gp, Gp)
227
+ ASMJIT_INST_2x(ngcs, Ngcs, Gp, Gp)
228
+
229
+ ASMJIT_INST_3x(orn, Orn, Gp, Gp, Gp)
230
+ ASMJIT_INST_4x(orn, Orn, Gp, Gp, Gp, Imm)
231
+
232
+ ASMJIT_INST_3x(orr, Orr, Gp, Gp, Imm)
233
+ ASMJIT_INST_3x(orr, Orr, Gp, Gp, Gp)
234
+ ASMJIT_INST_4x(orr, Orr, Gp, Gp, Gp, Imm)
235
+
236
+ ASMJIT_INST_2x(rbit, Rbit, Gp, Gp)
237
+ ASMJIT_INST_1x(ret, Ret, Gp)
238
+
239
+ ASMJIT_INST_2x(rev, Rev, Gp, Gp)
240
+ ASMJIT_INST_2x(rev16, Rev16, Gp, Gp)
241
+ ASMJIT_INST_2x(rev32, Rev32, Gp, Gp)
242
+ ASMJIT_INST_2x(rev64, Rev64, Gp, Gp)
243
+
244
+ ASMJIT_INST_3x(ror, Ror, Gp, Gp, Imm)
245
+ ASMJIT_INST_3x(ror, Ror, Gp, Gp, Gp)
246
+ ASMJIT_INST_3x(rorv, Rorv, Gp, Gp, Gp)
247
+
248
+ ASMJIT_INST_3x(sbc, Sbc, Gp, Gp, Gp)
249
+ ASMJIT_INST_3x(sbcs, Sbcs, Gp, Gp, Gp)
250
+
251
+ ASMJIT_INST_4x(sbfiz, Sbfiz, Gp, Gp, Imm, Imm)
252
+ ASMJIT_INST_4x(sbfm, Sbfm, Gp, Gp, Imm, Imm)
253
+ ASMJIT_INST_4x(sbfx, Sbfx, Gp, Gp, Imm, Imm)
254
+
255
+ ASMJIT_INST_3x(sdiv, Sdiv, Gp, Gp, Gp)
256
+
257
+ ASMJIT_INST_4x(smaddl, Smaddl, Gp, Gp, Gp, Gp)
258
+ ASMJIT_INST_1x(smc, Smc, Imm)
259
+ ASMJIT_INST_3x(smnegl, Smnegl, Gp, Gp, Gp)
260
+ ASMJIT_INST_4x(smsubl, Smsubl, Gp, Gp, Gp, Gp)
261
+ ASMJIT_INST_3x(smulh, Smulh, Gp, Gp, Gp)
262
+ ASMJIT_INST_3x(smull, Smull, Gp, Gp, Gp)
263
+
264
+ ASMJIT_INST_3x(sub, Sub, Gp, Gp, Gp)
265
+ ASMJIT_INST_4x(sub, Sub, Gp, Gp, Gp, Imm)
266
+ ASMJIT_INST_3x(sub, Sub, Gp, Gp, Imm)
267
+ ASMJIT_INST_4x(sub, Sub, Gp, Gp, Imm, Imm)
268
+ ASMJIT_INST_3x(subs, Subs, Gp, Gp, Gp)
269
+ ASMJIT_INST_4x(subs, Subs, Gp, Gp, Gp, Imm)
270
+ ASMJIT_INST_3x(subs, Subs, Gp, Gp, Imm)
271
+ ASMJIT_INST_4x(subs, Subs, Gp, Gp, Imm, Imm)
272
+
273
+ ASMJIT_INST_1x(svc, Svc, Imm)
274
+
275
+ ASMJIT_INST_2x(sxtb, Sxtb, Gp, Gp)
276
+ ASMJIT_INST_2x(sxth, Sxth, Gp, Gp)
277
+ ASMJIT_INST_2x(sxtw, Sxtw, Gp, Gp)
278
+
279
+ ASMJIT_INST_4x(sys, Sys, Imm, Imm, Imm, Imm)
280
+ ASMJIT_INST_5x(sys, Sys, Imm, Imm, Imm, Imm, Gp)
281
+
282
+ ASMJIT_INST_2x(tlbi, Tlbi, Imm, Gp)
283
+ ASMJIT_INST_2x(tst, Tst, Gp, Imm)
284
+ ASMJIT_INST_2x(tst, Tst, Gp, Gp)
285
+ ASMJIT_INST_3x(tst, Tst, Gp, Gp, Imm)
286
+
287
+ ASMJIT_INST_3x(udiv, Udiv, Gp, Gp, Gp)
288
+
289
+ ASMJIT_INST_4x(ubfiz, Ubfiz, Gp, Gp, Imm, Imm)
290
+ ASMJIT_INST_4x(ubfm, Ubfm, Gp, Gp, Imm, Imm)
291
+ ASMJIT_INST_4x(ubfx, Ubfx, Gp, Gp, Imm, Imm)
292
+
293
+ ASMJIT_INST_4x(umaddl, Umaddl, Gp, Gp, Gp, Gp)
294
+ ASMJIT_INST_3x(umnegl, Umnegl, Gp, Gp, Gp)
295
+ ASMJIT_INST_4x(umsubl, Umsubl, Gp, Gp, Gp, Gp)
296
+ ASMJIT_INST_3x(umull, Umull, Gp, Gp, Gp)
297
+ ASMJIT_INST_3x(umulh, Umulh, Gp, Gp, Gp)
298
+
299
+ ASMJIT_INST_2x(uxtb, Uxtb, Gp, Gp)
300
+ ASMJIT_INST_2x(uxth, Uxth, Gp, Gp)
301
+
302
+ ASMJIT_INST_0x(csdb, Csdb)
303
+ ASMJIT_INST_1x(dcps1, Dcps1, Imm)
304
+ ASMJIT_INST_1x(dcps2, Dcps2, Imm)
305
+ ASMJIT_INST_1x(dcps3, Dcps3, Imm)
306
+ ASMJIT_INST_0x(dgh, Dgh)
307
+ ASMJIT_INST_0x(pssbb, Pssbb)
308
+ ASMJIT_INST_0x(ssbb, Ssbb)
309
+ ASMJIT_INST_1x(udf, Udf, Imm)
310
+ ASMJIT_INST_1x(setf8, Setf8, Gp)
311
+ ASMJIT_INST_1x(setf16, Setf16, Gp)
312
+
313
+ //! \}
314
+
315
+ //! \name ARMv8.4 Instructions
316
+ //! \{
317
+
318
+ ASMJIT_INST_0x(cfinv, Cfinv)
319
+
320
+ //! \}
321
+
322
+ //! \name ARMv8.5 Instructions
323
+ //! \{
324
+
325
+ ASMJIT_INST_0x(axflag, Axflag)
326
+ ASMJIT_INST_0x(xaflag, Xaflag)
327
+
328
+ //! \}
329
+
330
+ //! \name Branch Instructions
331
+ //! \{
332
+
333
+ ASMJIT_INST_1cc(b, B, Imm)
334
+ ASMJIT_INST_1cc(b, B, Label)
335
+ ASMJIT_INST_1x(bl, Bl, Imm)
336
+ ASMJIT_INST_1x(bl, Bl, Label)
337
+ ASMJIT_INST_1x(blr, Blr, Gp)
338
+ ASMJIT_INST_1x(br, Br, Gp)
339
+ ASMJIT_INST_2x(cbz, Cbz, Gp, Imm)
340
+ ASMJIT_INST_2x(cbz, Cbz, Gp, Label)
341
+ ASMJIT_INST_2x(cbnz, Cbnz, Gp, Imm)
342
+ ASMJIT_INST_2x(cbnz, Cbnz, Gp, Label)
343
+ ASMJIT_INST_3x(tbnz, Tbnz, Gp, Imm, Imm)
344
+ ASMJIT_INST_3x(tbnz, Tbnz, Gp, Imm, Label)
345
+ ASMJIT_INST_3x(tbz, Tbz, Gp, Imm, Imm)
346
+ ASMJIT_INST_3x(tbz, Tbz, Gp, Imm, Label)
347
+
348
+ //! \}
349
+
350
+ //! \name Load & Store Instructions
351
+ //! \{
352
+
353
+ ASMJIT_INST_3x(cas, Cas, Gp, Gp, Mem)
354
+ ASMJIT_INST_3x(casa, Casa, Gp, Gp, Mem)
355
+ ASMJIT_INST_3x(casab, Casab, Gp, Gp, Mem)
356
+ ASMJIT_INST_3x(casah, Casah, Gp, Gp, Mem)
357
+ ASMJIT_INST_3x(casal, Casal, Gp, Gp, Mem)
358
+ ASMJIT_INST_3x(casalb, Casalb, Gp, Gp, Mem)
359
+ ASMJIT_INST_3x(casalh, Casalh, Gp, Gp, Mem)
360
+ ASMJIT_INST_3x(casb, Casb, Gp, Gp, Mem)
361
+ ASMJIT_INST_3x(cash, Cash, Gp, Gp, Mem)
362
+ ASMJIT_INST_3x(casl, Casl, Gp, Gp, Mem)
363
+ ASMJIT_INST_3x(caslb, Caslb, Gp, Gp, Mem)
364
+ ASMJIT_INST_3x(caslh, Caslh, Gp, Gp, Mem)
365
+
366
+ ASMJIT_INST_5x(casp, Casp, Gp, Gp, Gp, Gp, Mem)
367
+ ASMJIT_INST_5x(caspa, Caspa, Gp, Gp, Gp, Gp, Mem)
368
+ ASMJIT_INST_5x(caspal, Caspal, Gp, Gp, Gp, Gp, Mem)
369
+ ASMJIT_INST_5x(caspl, Caspl, Gp, Gp, Gp, Gp, Mem)
370
+
371
+ ASMJIT_INST_3x(ldadd, Ldadd, Gp, Gp, Mem)
372
+ ASMJIT_INST_3x(ldadda, Ldadda, Gp, Gp, Mem)
373
+ ASMJIT_INST_3x(ldaddab, Ldaddab, Gp, Gp, Mem)
374
+ ASMJIT_INST_3x(ldaddah, Ldaddah, Gp, Gp, Mem)
375
+ ASMJIT_INST_3x(ldaddal, Ldaddal, Gp, Gp, Mem)
376
+ ASMJIT_INST_3x(ldaddalb, Ldaddalb, Gp, Gp, Mem)
377
+ ASMJIT_INST_3x(ldaddalh, Ldaddalh, Gp, Gp, Mem)
378
+ ASMJIT_INST_3x(ldaddb, Ldaddb, Gp, Gp, Mem)
379
+ ASMJIT_INST_3x(ldaddh, Ldaddh, Gp, Gp, Mem)
380
+ ASMJIT_INST_3x(ldaddl, Ldaddl, Gp, Gp, Mem)
381
+ ASMJIT_INST_3x(ldaddlb, Ldaddlb, Gp, Gp, Mem)
382
+ ASMJIT_INST_3x(ldaddlh, Ldaddlh, Gp, Gp, Mem)
383
+
384
+ ASMJIT_INST_2x(ldar, Ldar, Gp, Mem)
385
+ ASMJIT_INST_2x(ldarb, Ldarb, Gp, Mem)
386
+ ASMJIT_INST_2x(ldarh, Ldarh, Gp, Mem)
387
+
388
+ ASMJIT_INST_2x(ldaxr, Ldaxr, Gp, Mem)
389
+ ASMJIT_INST_2x(ldaxrb, Ldaxrb, Gp, Mem)
390
+ ASMJIT_INST_2x(ldaxrh, Ldaxrh, Gp, Mem)
391
+
392
+ ASMJIT_INST_3x(ldclr, Ldclr, Gp, Gp, Mem)
393
+ ASMJIT_INST_3x(ldclra, Ldclra, Gp, Gp, Mem)
394
+ ASMJIT_INST_3x(ldclrab, Ldclrab, Gp, Gp, Mem)
395
+ ASMJIT_INST_3x(ldclrah, Ldclrah, Gp, Gp, Mem)
396
+ ASMJIT_INST_3x(ldclral, Ldclral, Gp, Gp, Mem)
397
+ ASMJIT_INST_3x(ldclralb, Ldclralb, Gp, Gp, Mem)
398
+ ASMJIT_INST_3x(ldclralh, Ldclralh, Gp, Gp, Mem)
399
+ ASMJIT_INST_3x(ldclrb, Ldclrb, Gp, Gp, Mem)
400
+ ASMJIT_INST_3x(ldclrh, Ldclrh, Gp, Gp, Mem)
401
+ ASMJIT_INST_3x(ldclrl, Ldclrl, Gp, Gp, Mem)
402
+ ASMJIT_INST_3x(ldclrlb, Ldclrlb, Gp, Gp, Mem)
403
+ ASMJIT_INST_3x(ldclrlh, Ldclrlh, Gp, Gp, Mem)
404
+
405
+ ASMJIT_INST_3x(ldeor, Ldeor, Gp, Gp, Mem)
406
+ ASMJIT_INST_3x(ldeora, Ldeora, Gp, Gp, Mem)
407
+ ASMJIT_INST_3x(ldeorab, Ldeorab, Gp, Gp, Mem)
408
+ ASMJIT_INST_3x(ldeorah, Ldeorah, Gp, Gp, Mem)
409
+ ASMJIT_INST_3x(ldeoral, Ldeoral, Gp, Gp, Mem)
410
+ ASMJIT_INST_3x(ldeoralb, Ldeoralb, Gp, Gp, Mem)
411
+ ASMJIT_INST_3x(ldeoralh, Ldeoralh, Gp, Gp, Mem)
412
+ ASMJIT_INST_3x(ldeorb, Ldeorb, Gp, Gp, Mem)
413
+ ASMJIT_INST_3x(ldeorh, Ldeorh, Gp, Gp, Mem)
414
+ ASMJIT_INST_3x(ldeorl, Ldeorl, Gp, Gp, Mem)
415
+ ASMJIT_INST_3x(ldeorlb, Ldeorlb, Gp, Gp, Mem)
416
+ ASMJIT_INST_3x(ldeorlh, Ldeorlh, Gp, Gp, Mem)
417
+
418
+ ASMJIT_INST_2x(ldlar, Ldlar, Gp, Mem)
419
+ ASMJIT_INST_2x(ldlarb, Ldlarb, Gp, Mem)
420
+ ASMJIT_INST_2x(ldlarh, Ldlarh, Gp, Mem)
421
+
422
+ ASMJIT_INST_3x(ldnp, Ldnp, Gp, Gp, Mem)
423
+
424
+ ASMJIT_INST_3x(ldp, Ldp, Gp, Gp, Mem)
425
+ ASMJIT_INST_3x(ldpsw, Ldpsw, Gp, Gp, Mem)
426
+
427
+ ASMJIT_INST_2x(ldr, Ldr, Gp, Mem)
428
+ ASMJIT_INST_2x(ldrb, Ldrb, Gp, Mem)
429
+ ASMJIT_INST_2x(ldrh, Ldrh, Gp, Mem)
430
+ ASMJIT_INST_2x(ldrsb, Ldrsb, Gp, Mem)
431
+ ASMJIT_INST_2x(ldrsh, Ldrsh, Gp, Mem)
432
+ ASMJIT_INST_2x(ldrsw, Ldrsw, Gp, Mem)
433
+
434
+ ASMJIT_INST_3x(ldset, Ldset, Gp, Gp, Mem)
435
+ ASMJIT_INST_3x(ldseta, Ldseta, Gp, Gp, Mem)
436
+ ASMJIT_INST_3x(ldsetab, Ldsetab, Gp, Gp, Mem)
437
+ ASMJIT_INST_3x(ldsetah, Ldsetah, Gp, Gp, Mem)
438
+ ASMJIT_INST_3x(ldsetal, Ldsetal, Gp, Gp, Mem)
439
+ ASMJIT_INST_3x(ldsetalb, Ldsetalb, Gp, Gp, Mem)
440
+ ASMJIT_INST_3x(ldsetalh, Ldsetalh, Gp, Gp, Mem)
441
+ ASMJIT_INST_3x(ldsetb, Ldsetb, Gp, Gp, Mem)
442
+ ASMJIT_INST_3x(ldseth, Ldseth, Gp, Gp, Mem)
443
+ ASMJIT_INST_3x(ldsetl, Ldsetl, Gp, Gp, Mem)
444
+ ASMJIT_INST_3x(ldsetlb, Ldsetlb, Gp, Gp, Mem)
445
+ ASMJIT_INST_3x(ldsetlh, Ldsetlh, Gp, Gp, Mem)
446
+
447
+ ASMJIT_INST_3x(ldsmax, Ldsmax, Gp, Gp, Mem)
448
+ ASMJIT_INST_3x(ldsmaxa, Ldsmaxa, Gp, Gp, Mem)
449
+ ASMJIT_INST_3x(ldsmaxab, Ldsmaxab, Gp, Gp, Mem)
450
+ ASMJIT_INST_3x(ldsmaxah, Ldsmaxah, Gp, Gp, Mem)
451
+ ASMJIT_INST_3x(ldsmaxal, Ldsmaxal, Gp, Gp, Mem)
452
+ ASMJIT_INST_3x(ldsmaxalb, Ldsmaxalb, Gp, Gp, Mem)
453
+ ASMJIT_INST_3x(ldsmaxalh, Ldsmaxalh, Gp, Gp, Mem)
454
+ ASMJIT_INST_3x(ldsmaxb, Ldsmaxb, Gp, Gp, Mem)
455
+ ASMJIT_INST_3x(ldsmaxh, Ldsmaxh, Gp, Gp, Mem)
456
+ ASMJIT_INST_3x(ldsmaxl, Ldsmaxl, Gp, Gp, Mem)
457
+ ASMJIT_INST_3x(ldsmaxlb, Ldsmaxlb, Gp, Gp, Mem)
458
+ ASMJIT_INST_3x(ldsmaxlh, Ldsmaxlh, Gp, Gp, Mem)
459
+
460
+ ASMJIT_INST_3x(ldsmin, Ldsmin, Gp, Gp, Mem)
461
+ ASMJIT_INST_3x(ldsmina, Ldsmina, Gp, Gp, Mem)
462
+ ASMJIT_INST_3x(ldsminab, Ldsminab, Gp, Gp, Mem)
463
+ ASMJIT_INST_3x(ldsminah, Ldsminah, Gp, Gp, Mem)
464
+ ASMJIT_INST_3x(ldsminal, Ldsminal, Gp, Gp, Mem)
465
+ ASMJIT_INST_3x(ldsminalb, Ldsminalb, Gp, Gp, Mem)
466
+ ASMJIT_INST_3x(ldsminalh, Ldsminalh, Gp, Gp, Mem)
467
+ ASMJIT_INST_3x(ldsminb, Ldsminb, Gp, Gp, Mem)
468
+ ASMJIT_INST_3x(ldsminh, Ldsminh, Gp, Gp, Mem)
469
+ ASMJIT_INST_3x(ldsminl, Ldsminl, Gp, Gp, Mem)
470
+ ASMJIT_INST_3x(ldsminlb, Ldsminlb, Gp, Gp, Mem)
471
+ ASMJIT_INST_3x(ldsminlh, Ldsminlh, Gp, Gp, Mem)
472
+
473
+ ASMJIT_INST_2x(ldtr, Ldtr, Gp, Mem)
474
+ ASMJIT_INST_2x(ldtrb, Ldtrb, Gp, Mem)
475
+ ASMJIT_INST_2x(ldtrh, Ldtrh, Gp, Mem)
476
+ ASMJIT_INST_2x(ldtrsb, Ldtrsb, Gp, Mem)
477
+ ASMJIT_INST_2x(ldtrsh, Ldtrsh, Gp, Mem)
478
+ ASMJIT_INST_2x(ldtrsw, Ldtrsw, Gp, Mem)
479
+
480
+ ASMJIT_INST_3x(ldumax, Ldumax, Gp, Gp, Mem)
481
+ ASMJIT_INST_3x(ldumaxa, Ldumaxa, Gp, Gp, Mem)
482
+ ASMJIT_INST_3x(ldumaxab, Ldumaxab, Gp, Gp, Mem)
483
+ ASMJIT_INST_3x(ldumaxah, Ldumaxah, Gp, Gp, Mem)
484
+ ASMJIT_INST_3x(ldumaxal, Ldumaxal, Gp, Gp, Mem)
485
+ ASMJIT_INST_3x(ldumaxalb, Ldumaxalb, Gp, Gp, Mem)
486
+ ASMJIT_INST_3x(ldumaxalh, Ldumaxalh, Gp, Gp, Mem)
487
+ ASMJIT_INST_3x(ldumaxb, Ldumaxb, Gp, Gp, Mem)
488
+ ASMJIT_INST_3x(ldumaxh, Ldumaxh, Gp, Gp, Mem)
489
+ ASMJIT_INST_3x(ldumaxl, Ldumaxl, Gp, Gp, Mem)
490
+ ASMJIT_INST_3x(ldumaxlb, Ldumaxlb, Gp, Gp, Mem)
491
+ ASMJIT_INST_3x(ldumaxlh, Ldumaxlh, Gp, Gp, Mem)
492
+
493
+ ASMJIT_INST_3x(ldumin, Ldumin, Gp, Gp, Mem)
494
+ ASMJIT_INST_3x(ldumina, Ldumina, Gp, Gp, Mem)
495
+ ASMJIT_INST_3x(lduminab, Lduminab, Gp, Gp, Mem)
496
+ ASMJIT_INST_3x(lduminah, Lduminah, Gp, Gp, Mem)
497
+ ASMJIT_INST_3x(lduminal, Lduminal, Gp, Gp, Mem)
498
+ ASMJIT_INST_3x(lduminalb, Lduminalb, Gp, Gp, Mem)
499
+ ASMJIT_INST_3x(lduminalh, Lduminalh, Gp, Gp, Mem)
500
+ ASMJIT_INST_3x(lduminb, Lduminb, Gp, Gp, Mem)
501
+ ASMJIT_INST_3x(lduminh, Lduminh, Gp, Gp, Mem)
502
+ ASMJIT_INST_3x(lduminl, Lduminl, Gp, Gp, Mem)
503
+ ASMJIT_INST_3x(lduminlb, Lduminlb, Gp, Gp, Mem)
504
+ ASMJIT_INST_3x(lduminlh, Lduminlh, Gp, Gp, Mem)
505
+
506
+ ASMJIT_INST_2x(ldur, Ldur, Gp, Mem)
507
+ ASMJIT_INST_2x(ldurb, Ldurb, Gp, Mem)
508
+ ASMJIT_INST_2x(ldurh, Ldurh, Gp, Mem)
509
+ ASMJIT_INST_2x(ldursb, Ldursb, Gp, Mem)
510
+ ASMJIT_INST_2x(ldursh, Ldursh, Gp, Mem)
511
+ ASMJIT_INST_2x(ldursw, Ldursw, Gp, Mem)
512
+
513
+ ASMJIT_INST_3x(ldxp, Ldxp, Gp, Gp, Mem)
514
+ ASMJIT_INST_3x(ldaxp, Ldaxp, Gp, Gp, Mem)
515
+
516
+ ASMJIT_INST_2x(ldxr, Ldxr, Gp, Mem)
517
+ ASMJIT_INST_2x(ldxrb, Ldxrb, Gp, Mem)
518
+ ASMJIT_INST_2x(ldxrh, Ldxrh, Gp, Mem)
519
+
520
+ ASMJIT_INST_2x(stadd, Stadd, Gp, Mem)
521
+ ASMJIT_INST_2x(staddb, Staddb, Gp, Mem)
522
+ ASMJIT_INST_2x(staddh, Staddh, Gp, Mem)
523
+ ASMJIT_INST_2x(staddl, Staddl, Gp, Mem)
524
+ ASMJIT_INST_2x(staddlb, Staddlb, Gp, Mem)
525
+ ASMJIT_INST_2x(staddlh, Staddlh, Gp, Mem)
526
+
527
+ ASMJIT_INST_2x(stclr, Stclr, Gp, Mem)
528
+ ASMJIT_INST_2x(stclrb, Stclrb, Gp, Mem)
529
+ ASMJIT_INST_2x(stclrh, Stclrh, Gp, Mem)
530
+ ASMJIT_INST_2x(stclrl, Stclrl, Gp, Mem)
531
+ ASMJIT_INST_2x(stclrlb, Stclrlb, Gp, Mem)
532
+ ASMJIT_INST_2x(stclrlh, Stclrlh, Gp, Mem)
533
+
534
+ ASMJIT_INST_2x(steor, Steor, Gp, Mem)
535
+ ASMJIT_INST_2x(steorb, Steorb, Gp, Mem)
536
+ ASMJIT_INST_2x(steorh, Steorh, Gp, Mem)
537
+ ASMJIT_INST_2x(steorl, Steorl, Gp, Mem)
538
+ ASMJIT_INST_2x(steorlb, Steorlb, Gp, Mem)
539
+ ASMJIT_INST_2x(steorlh, Steorlh, Gp, Mem)
540
+
541
+ ASMJIT_INST_2x(stllr, Stllr, Gp, Mem)
542
+ ASMJIT_INST_2x(stllrb, Stllrb, Gp, Mem)
543
+ ASMJIT_INST_2x(stllrh, Stllrh, Gp, Mem)
544
+
545
+ ASMJIT_INST_2x(stlr, Stllr, Gp, Mem)
546
+ ASMJIT_INST_2x(stlrb, Stllrb, Gp, Mem)
547
+ ASMJIT_INST_2x(stlrh, Stllrh, Gp, Mem)
548
+
549
+ ASMJIT_INST_3x(stlxr, Stlxr, Gp, Gp, Mem)
550
+ ASMJIT_INST_3x(stlxrb, Stlxrb, Gp, Gp, Mem)
551
+ ASMJIT_INST_3x(stlxrh, Stlxrh, Gp, Gp, Mem)
552
+
553
+ ASMJIT_INST_3x(stnp, Stnp, Gp, Gp, Mem)
554
+ ASMJIT_INST_3x(stp, Stp, Gp, Gp, Mem)
555
+
556
+ ASMJIT_INST_2x(str, Str, Gp, Mem)
557
+ ASMJIT_INST_2x(strb, Strb, Gp, Mem)
558
+ ASMJIT_INST_2x(strh, Strh, Gp, Mem)
559
+
560
+ ASMJIT_INST_2x(stset, Stset, Gp, Mem)
561
+ ASMJIT_INST_2x(stsetb, Stsetb, Gp, Mem)
562
+ ASMJIT_INST_2x(stseth, Stseth, Gp, Mem)
563
+ ASMJIT_INST_2x(stsetl, Stsetl, Gp, Mem)
564
+ ASMJIT_INST_2x(stsetlb, Stsetlb, Gp, Mem)
565
+ ASMJIT_INST_2x(stsetlh, Stsetlh, Gp, Mem)
566
+
567
+ ASMJIT_INST_2x(stsmax, Stsmax, Gp, Mem)
568
+ ASMJIT_INST_2x(stsmaxb, Stsmaxb, Gp, Mem)
569
+ ASMJIT_INST_2x(stsmaxh, Stsmaxh, Gp, Mem)
570
+ ASMJIT_INST_2x(stsmaxl, Stsmaxl, Gp, Mem)
571
+ ASMJIT_INST_2x(stsmaxlb, Stsmaxlb, Gp, Mem)
572
+ ASMJIT_INST_2x(stsmaxlh, Stsmaxlh, Gp, Mem)
573
+
574
+ ASMJIT_INST_2x(stsmin, Stsmin, Gp, Mem)
575
+ ASMJIT_INST_2x(stsminb, Stsminb, Gp, Mem)
576
+ ASMJIT_INST_2x(stsminh, Stsminh, Gp, Mem)
577
+ ASMJIT_INST_2x(stsminl, Stsminl, Gp, Mem)
578
+ ASMJIT_INST_2x(stsminlb, Stsminlb, Gp, Mem)
579
+ ASMJIT_INST_2x(stsminlh, Stsminlh, Gp, Mem)
580
+
581
+ ASMJIT_INST_2x(sttr, Sttr, Gp, Mem)
582
+ ASMJIT_INST_2x(sttrb, Sttrb, Gp, Mem)
583
+ ASMJIT_INST_2x(sttrh, Sttrh, Gp, Mem)
584
+
585
+ ASMJIT_INST_2x(stumax, Stumax, Gp, Mem)
586
+ ASMJIT_INST_2x(stumaxb, Stumaxb, Gp, Mem)
587
+ ASMJIT_INST_2x(stumaxh, Stumaxh, Gp, Mem)
588
+ ASMJIT_INST_2x(stumaxl, Stumaxl, Gp, Mem)
589
+ ASMJIT_INST_2x(stumaxlb, Stumaxlb, Gp, Mem)
590
+ ASMJIT_INST_2x(stumaxlh, Stumaxlh, Gp, Mem)
591
+
592
+ ASMJIT_INST_2x(stumin, Stumin, Gp, Mem)
593
+ ASMJIT_INST_2x(stuminb, Stuminb, Gp, Mem)
594
+ ASMJIT_INST_2x(stuminh, Stuminh, Gp, Mem)
595
+ ASMJIT_INST_2x(stuminl, Stuminl, Gp, Mem)
596
+ ASMJIT_INST_2x(stuminlb, Stuminlb, Gp, Mem)
597
+ ASMJIT_INST_2x(stuminlh, Stuminlh, Gp, Mem)
598
+
599
+ ASMJIT_INST_2x(stur, Stur, Gp, Mem)
600
+ ASMJIT_INST_2x(sturb, Sturb, Gp, Mem)
601
+ ASMJIT_INST_2x(sturh, Sturh, Gp, Mem)
602
+
603
+ ASMJIT_INST_4x(stxp, Stxp, Gp, Gp, Gp, Mem)
604
+ ASMJIT_INST_4x(stlxp, Stlxp, Gp, Gp, Gp, Mem)
605
+
606
+ ASMJIT_INST_3x(stxr, Stxr, Gp, Gp, Mem)
607
+ ASMJIT_INST_3x(stxrb, Stxrb, Gp, Gp, Mem)
608
+ ASMJIT_INST_3x(stxrh, Stxrh, Gp, Gp, Mem)
609
+
610
+ ASMJIT_INST_3x(swp, Swp, Gp, Gp, Mem)
611
+ ASMJIT_INST_3x(swpa, Swpa, Gp, Gp, Mem)
612
+ ASMJIT_INST_3x(swpab, Swpab, Gp, Gp, Mem)
613
+ ASMJIT_INST_3x(swpah, Swpah, Gp, Gp, Mem)
614
+ ASMJIT_INST_3x(swpal, Swpal, Gp, Gp, Mem)
615
+ ASMJIT_INST_3x(swpalb, Swpalb, Gp, Gp, Mem)
616
+ ASMJIT_INST_3x(swpalh, Swpalh, Gp, Gp, Mem)
617
+ ASMJIT_INST_3x(swpb, Swpb, Gp, Gp, Mem)
618
+ ASMJIT_INST_3x(swph, Swph, Gp, Gp, Mem)
619
+ ASMJIT_INST_3x(swpl, Swpl, Gp, Gp, Mem)
620
+ ASMJIT_INST_3x(swplb, Swplb, Gp, Gp, Mem)
621
+ ASMJIT_INST_3x(swplh, Swplh, Gp, Gp, Mem)
622
+ //! \}
623
+
624
+ //! \name CRC Instructions (ARMv8.1-A, optional in ARMv8.0-A)
625
+ //! \{
626
+
627
+ ASMJIT_INST_3x(crc32b, Crc32b, Gp, Gp, Gp);
628
+ ASMJIT_INST_3x(crc32h, Crc32h, Gp, Gp, Gp);
629
+ ASMJIT_INST_3x(crc32w, Crc32w, Gp, Gp, Gp);
630
+ ASMJIT_INST_3x(crc32x, Crc32x, Gp, Gp, Gp);
631
+
632
+ ASMJIT_INST_3x(crc32cb, Crc32cb, Gp, Gp, Gp);
633
+ ASMJIT_INST_3x(crc32ch, Crc32ch, Gp, Gp, Gp);
634
+ ASMJIT_INST_3x(crc32cw, Crc32cw, Gp, Gp, Gp);
635
+ ASMJIT_INST_3x(crc32cx, Crc32cx, Gp, Gp, Gp);
636
+
637
+ //! \}
638
+
639
+ //! \name MTE Instructions
640
+ //! \{
641
+
642
+ ASMJIT_INST_2x(autda, Autda, Gp, Gp);
643
+ ASMJIT_INST_2x(autdb, Autdb, Gp, Gp);
644
+ ASMJIT_INST_1x(autdza, Autdza, Gp);
645
+ ASMJIT_INST_1x(autdzb, Autdzb, Gp);
646
+ ASMJIT_INST_2x(autia, Autia, Gp, Gp);
647
+ ASMJIT_INST_0x(autia1716, Autia1716);
648
+ ASMJIT_INST_0x(autiasp, Autiasp);
649
+ ASMJIT_INST_0x(autiaz, Autiaz);
650
+ ASMJIT_INST_2x(autib, Autib, Gp, Gp);
651
+ ASMJIT_INST_0x(autib1716, Autib1716);
652
+ ASMJIT_INST_0x(autibsp, Autibsp);
653
+ ASMJIT_INST_0x(autibz, Autibz);
654
+ ASMJIT_INST_1x(autiza, Autiza, Gp);
655
+ ASMJIT_INST_1x(autizb, Autizb, Gp);
656
+
657
+ ASMJIT_INST_3x(gmi, Gmi, Gp, Gp, Gp);
658
+
659
+ ASMJIT_INST_2x(cmpp, Cmpp, Gp, Gp);
660
+ ASMJIT_INST_4x(addg, Addg, Gp, Gp, Imm, Imm);
661
+
662
+ ASMJIT_INST_2x(ldg, Ldg, Gp, Mem)
663
+ ASMJIT_INST_2x(ldgm, Ldgm, Gp, Mem)
664
+ ASMJIT_INST_2x(ldraa, Ldraa, Gp, Mem)
665
+ ASMJIT_INST_2x(ldrab, Ldrab, Gp, Mem)
666
+
667
+ ASMJIT_INST_2x(pacda, Pacda, Gp, Gp);
668
+ ASMJIT_INST_2x(pacdb, Pacdb, Gp, Gp);
669
+ ASMJIT_INST_1x(pacdza, Pacdza, Gp);
670
+ ASMJIT_INST_1x(pacdzb, Pacdzb, Gp);
671
+ ASMJIT_INST_3x(pacga, Pacga, Gp, Gp, Gp);
672
+
673
+ ASMJIT_INST_3x(subp, Subp, Gp, Gp, Gp);
674
+ ASMJIT_INST_3x(subps, Subps, Gp, Gp, Gp);
675
+ ASMJIT_INST_4x(subg, Subg, Gp, Gp, Imm, Imm);
676
+
677
+ ASMJIT_INST_2x(st2g, St2g, Gp, Mem)
678
+ ASMJIT_INST_2x(stg, Stg, Gp, Mem)
679
+ ASMJIT_INST_3x(stgp, Stgp, Gp, Gp, Mem)
680
+ ASMJIT_INST_2x(stgm, Stgm, Gp, Mem)
681
+ ASMJIT_INST_2x(stzg, Stzg, Gp, Mem)
682
+ ASMJIT_INST_2x(stz2g, Stz2g, Gp, Mem)
683
+ ASMJIT_INST_2x(stzgm, Stzgm, Gp, Mem)
684
+
685
+ ASMJIT_INST_1x(xpacd, Xpacd, Gp);
686
+ ASMJIT_INST_1x(xpaci, Xpaci, Gp);
687
+ ASMJIT_INST_0x(xpaclri, Xpaclri);
688
+
689
+ //! \}
690
+
691
+ //! \name Hint Instructions
692
+ //! \{
693
+
694
+ ASMJIT_INST_1x(hint, Hint, Imm)
695
+ ASMJIT_INST_0x(nop, Nop)
696
+ ASMJIT_INST_0x(sev, Sev)
697
+ ASMJIT_INST_0x(sevl, Sevl)
698
+ ASMJIT_INST_0x(wfe, Wfe)
699
+ ASMJIT_INST_0x(wfi, Wfi)
700
+ ASMJIT_INST_0x(yield, Yield)
701
+
702
+ //! \}
703
+
704
+ //! \name SIMD & FP Instructions
705
+ //! \{
706
+
707
+ ASMJIT_INST_2x(abs, Abs_v, Vec, Vec);
708
+ ASMJIT_INST_3x(add, Add_v, Vec, Vec, Vec);
709
+ ASMJIT_INST_3x(addhn, Addhn_v, Vec, Vec, Vec);
710
+ ASMJIT_INST_3x(addhn2, Addhn2_v, Vec, Vec, Vec);
711
+ ASMJIT_INST_2x(addp, Addp_v, Vec, Vec);
712
+ ASMJIT_INST_3x(addp, Addp_v, Vec, Vec, Vec);
713
+ ASMJIT_INST_2x(addv, Addv_v, Vec, Vec);
714
+ ASMJIT_INST_3x(and_, And_v, Vec, Vec, Vec);
715
+ ASMJIT_INST_2x(bic, Bic_v, Vec, Imm);
716
+ ASMJIT_INST_3x(bic, Bic_v, Vec, Vec, Vec);
717
+ ASMJIT_INST_3x(bic, Bic_v, Vec, Imm, Imm);
718
+ ASMJIT_INST_3x(bif, Bif_v, Vec, Vec, Vec);
719
+ ASMJIT_INST_3x(bit, Bit_v, Vec, Vec, Vec);
720
+ ASMJIT_INST_3x(bsl, Bsl_v, Vec, Vec, Vec);
721
+ ASMJIT_INST_2x(cls, Cls_v, Vec, Vec);
722
+ ASMJIT_INST_2x(clz, Clz_v, Vec, Vec);
723
+ ASMJIT_INST_3x(cmeq, Cmeq_v, Vec, Vec, Vec);
724
+ ASMJIT_INST_3x(cmeq, Cmeq_v, Vec, Vec, Imm);
725
+ ASMJIT_INST_3x(cmge, Cmge_v, Vec, Vec, Vec);
726
+ ASMJIT_INST_3x(cmge, Cmge_v, Vec, Vec, Imm);
727
+ ASMJIT_INST_3x(cmgt, Cmgt_v, Vec, Vec, Vec);
728
+ ASMJIT_INST_3x(cmgt, Cmgt_v, Vec, Vec, Imm);
729
+ ASMJIT_INST_3x(cmhi, Cmhi_v, Vec, Vec, Vec);
730
+ ASMJIT_INST_3x(cmhs, Cmhs_v, Vec, Vec, Vec);
731
+ ASMJIT_INST_3x(cmle, Cmle_v, Vec, Vec, Imm);
732
+ ASMJIT_INST_3x(cmlt, Cmlt_v, Vec, Vec, Imm);
733
+ ASMJIT_INST_3x(cmtst, Cmtst_v, Vec, Vec, Vec);
734
+ ASMJIT_INST_2x(cnt, Cnt_v, Vec, Vec);
735
+ ASMJIT_INST_2x(dup, Dup_v, Vec, Gp);
736
+ ASMJIT_INST_2x(dup, Dup_v, Vec, Vec);
737
+ ASMJIT_INST_3x(eor, Eor_v, Vec, Vec, Vec);
738
+ ASMJIT_INST_4x(ext, Ext_v, Vec, Vec, Vec, Imm);
739
+ ASMJIT_INST_3x(fabd, Fabd_v, Vec, Vec, Vec);
740
+ ASMJIT_INST_2x(fabs, Fabs_v, Vec, Vec);
741
+ ASMJIT_INST_3x(facge, Facge_v, Vec, Vec, Vec);
742
+ ASMJIT_INST_3x(facgt, Facgt_v, Vec, Vec, Vec);
743
+ ASMJIT_INST_3x(fadd, Fadd_v, Vec, Vec, Vec);
744
+ ASMJIT_INST_2x(faddp, Faddp_v, Vec, Vec);
745
+ ASMJIT_INST_3x(faddp, Faddp_v, Vec, Vec, Vec);
746
+ ASMJIT_INST_4x(fccmp, Fccmp_v, Vec, Vec, Imm, Imm);
747
+ ASMJIT_INST_4x(fccmpe, Fccmpe_v, Vec, Vec, Imm, Imm);
748
+ ASMJIT_INST_3x(fcmeq, Fcmeq_v, Vec, Vec, Vec);
749
+ ASMJIT_INST_3x(fcmeq, Fcmeq_v, Vec, Vec, Imm);
750
+ ASMJIT_INST_3x(fcmge, Fcmge_v, Vec, Vec, Vec);
751
+ ASMJIT_INST_3x(fcmge, Fcmge_v, Vec, Vec, Imm);
752
+ ASMJIT_INST_3x(fcmgt, Fcmgt_v, Vec, Vec, Vec);
753
+ ASMJIT_INST_3x(fcmgt, Fcmgt_v, Vec, Vec, Imm);
754
+ ASMJIT_INST_3x(fcmle, Fcmle_v, Vec, Vec, Imm);
755
+ ASMJIT_INST_3x(fcmlt, Fcmlt_v, Vec, Vec, Imm);
756
+ ASMJIT_INST_2x(fcmp, Fcmp_v, Vec, Vec);
757
+ ASMJIT_INST_2x(fcmp, Fcmp_v, Vec, Imm);
758
+ ASMJIT_INST_2x(fcmpe, Fcmpe_v, Vec, Vec);
759
+ ASMJIT_INST_2x(fcmpe, Fcmpe_v, Vec, Imm);
760
+ ASMJIT_INST_4x(fcsel, Fcsel_v, Vec, Vec, Vec, Imm);
761
+ ASMJIT_INST_2x(fcvt, Fcvt_v, Vec, Vec);
762
+ ASMJIT_INST_2x(fcvtas, Fcvtas_v, Gp, Vec);
763
+ ASMJIT_INST_2x(fcvtas, Fcvtas_v, Vec, Vec);
764
+ ASMJIT_INST_2x(fcvtau, Fcvtau_v, Gp, Vec);
765
+ ASMJIT_INST_2x(fcvtau, Fcvtau_v, Vec, Vec);
766
+ ASMJIT_INST_2x(fcvtl, Fcvtl_v, Vec, Vec);
767
+ ASMJIT_INST_2x(fcvtl2, Fcvtl2_v, Vec, Vec);
768
+ ASMJIT_INST_2x(fcvtms, Fcvtms_v, Gp, Vec);
769
+ ASMJIT_INST_2x(fcvtms, Fcvtms_v, Vec, Vec);
770
+ ASMJIT_INST_2x(fcvtmu, Fcvtmu_v, Gp, Vec);
771
+ ASMJIT_INST_2x(fcvtmu, Fcvtmu_v, Vec, Vec);
772
+ ASMJIT_INST_2x(fcvtn, Fcvtn_v, Vec, Vec);
773
+ ASMJIT_INST_2x(fcvtn2, Fcvtn2_v, Vec, Vec);
774
+ ASMJIT_INST_2x(fcvtns, Fcvtns_v, Gp, Vec);
775
+ ASMJIT_INST_2x(fcvtns, Fcvtns_v, Vec, Vec);
776
+ ASMJIT_INST_2x(fcvtnu, Fcvtnu_v, Gp, Vec);
777
+ ASMJIT_INST_2x(fcvtnu, Fcvtnu_v, Vec, Vec);
778
+ ASMJIT_INST_2x(fcvtps, Fcvtps_v, Gp, Vec);
779
+ ASMJIT_INST_2x(fcvtps, Fcvtps_v, Vec, Vec);
780
+ ASMJIT_INST_2x(fcvtpu, Fcvtpu_v, Gp, Vec);
781
+ ASMJIT_INST_2x(fcvtpu, Fcvtpu_v, Vec, Vec);
782
+ ASMJIT_INST_2x(fcvtxn, Fcvtxn_v, Vec, Vec);
783
+ ASMJIT_INST_2x(fcvtxn2, Fcvtxn2_v, Vec, Vec);
784
+ ASMJIT_INST_2x(fcvtzs, Fcvtzs_v, Gp, Vec);
785
+ ASMJIT_INST_3x(fcvtzs, Fcvtzs_v, Gp, Vec, Imm);
786
+ ASMJIT_INST_2x(fcvtzs, Fcvtzs_v, Vec, Vec);
787
+ ASMJIT_INST_3x(fcvtzs, Fcvtzs_v, Vec, Vec, Imm);
788
+ ASMJIT_INST_2x(fcvtzu, Fcvtzu_v, Gp, Vec);
789
+ ASMJIT_INST_3x(fcvtzu, Fcvtzu_v, Gp, Vec, Imm);
790
+ ASMJIT_INST_2x(fcvtzu, Fcvtzu_v, Vec, Vec);
791
+ ASMJIT_INST_3x(fcvtzu, Fcvtzu_v, Vec, Vec, Imm);
792
+ ASMJIT_INST_3x(fdiv, Fdiv_v, Vec, Vec, Vec);
793
+ ASMJIT_INST_4x(fmadd, Fmadd_v, Vec, Vec, Vec, Vec);
794
+ ASMJIT_INST_3x(fmax, Fmax_v, Vec, Vec, Vec);
795
+ ASMJIT_INST_3x(fmaxnm, Fmaxnm_v, Vec, Vec, Vec);
796
+ ASMJIT_INST_3x(fmaxnmp, Fmaxnmp_v, Vec, Vec, Vec);
797
+ ASMJIT_INST_2x(fmaxnmp, Fmaxnmp_v, Vec, Vec);
798
+ ASMJIT_INST_2x(fmaxnmv, Fmaxnmv_v, Vec, Vec);
799
+ ASMJIT_INST_3x(fmaxp, Fmaxp_v, Vec, Vec, Vec);
800
+ ASMJIT_INST_2x(fmaxp, Fmaxp_v, Vec, Vec);
801
+ ASMJIT_INST_2x(fmaxv, Fmaxv_v, Vec, Vec);
802
+ ASMJIT_INST_3x(fmin, Fmin_v, Vec, Vec, Vec);
803
+ ASMJIT_INST_3x(fminnm, Fminnm_v, Vec, Vec, Vec);
804
+ ASMJIT_INST_2x(fminnmv, Fminnmv_v, Vec, Vec);
805
+ ASMJIT_INST_3x(fminnmp, Fminnmp_v, Vec, Vec, Vec);
806
+ ASMJIT_INST_2x(fminnmp, Fminnmp_v, Vec, Vec);
807
+ ASMJIT_INST_2x(fminp, Fminp_v, Vec, Vec);
808
+ ASMJIT_INST_3x(fminp, Fminp_v, Vec, Vec, Vec);
809
+ ASMJIT_INST_2x(fminv, Fminv_v, Vec, Vec);
810
+ ASMJIT_INST_3x(fmla, Fmla_v, Vec, Vec, Vec);
811
+ ASMJIT_INST_3x(fmls, Fmls_v, Vec, Vec, Vec);
812
+ ASMJIT_INST_2x(fmov, Fmov_v, Gp, Vec);
813
+ ASMJIT_INST_2x(fmov, Fmov_v, Vec, Gp);
814
+ ASMJIT_INST_2x(fmov, Fmov_v, Vec, Vec);
815
+ ASMJIT_INST_2x(fmov, Fmov_v, Vec, Imm);
816
+ ASMJIT_INST_4x(fmsub, Fmsub_v, Vec, Vec, Vec, Vec);
817
+ ASMJIT_INST_3x(fmul, Fmul_v, Vec, Vec, Vec);
818
+ ASMJIT_INST_3x(fmulx, Fmulx_v, Vec, Vec, Vec);
819
+ ASMJIT_INST_2x(fneg, Fneg_v, Vec, Vec);
820
+ ASMJIT_INST_4x(fnmadd, Fnmadd_v, Vec, Vec, Vec, Vec);
821
+ ASMJIT_INST_4x(fnmsub, Fnmsub_v, Vec, Vec, Vec, Vec);
822
+ ASMJIT_INST_3x(fnmul, Fnmul_v, Vec, Vec, Vec);
823
+ ASMJIT_INST_2x(frecpe, Frecpe_v, Vec, Vec);
824
+ ASMJIT_INST_3x(frecps, Frecps_v, Vec, Vec, Vec);
825
+ ASMJIT_INST_2x(frecpx, Frecpx_v, Vec, Vec);
826
+ ASMJIT_INST_2x(frint32x, Frint32x_v, Vec, Vec);
827
+ ASMJIT_INST_2x(frint32z, Frint32z_v, Vec, Vec);
828
+ ASMJIT_INST_2x(frint64x, Frint64x_v, Vec, Vec);
829
+ ASMJIT_INST_2x(frint64z, Frint64z_v, Vec, Vec);
830
+ ASMJIT_INST_2x(frinta, Frinta_v, Vec, Vec);
831
+ ASMJIT_INST_2x(frinti, Frinti_v, Vec, Vec);
832
+ ASMJIT_INST_2x(frintm, Frintm_v, Vec, Vec);
833
+ ASMJIT_INST_2x(frintn, Frintn_v, Vec, Vec);
834
+ ASMJIT_INST_2x(frintp, Frintp_v, Vec, Vec);
835
+ ASMJIT_INST_2x(frintx, Frintx_v, Vec, Vec);
836
+ ASMJIT_INST_2x(frintz, Frintz_v, Vec, Vec);
837
+ ASMJIT_INST_2x(frsqrte, Frsqrte_v, Vec, Vec);
838
+ ASMJIT_INST_3x(frsqrts, Frsqrts_v, Vec, Vec, Vec);
839
+ ASMJIT_INST_2x(fsqrt, Fsqrt_v, Vec, Vec);
840
+ ASMJIT_INST_3x(fsub, Fsub_v, Vec, Vec, Vec);
841
+ ASMJIT_INST_2x(ins, Ins_v, Vec, Gp);
842
+ ASMJIT_INST_2x(ins, Ins_v, Vec, Vec);
843
+ ASMJIT_INST_2x(ld1, Ld1_v, Vec, Mem);
844
+ ASMJIT_INST_3x(ld1, Ld1_v, Vec, Vec, Mem);
845
+ ASMJIT_INST_4x(ld1, Ld1_v, Vec, Vec, Vec, Mem);
846
+ ASMJIT_INST_5x(ld1, Ld1_v, Vec, Vec, Vec, Vec, Mem);
847
+ ASMJIT_INST_2x(ld1r, Ld1r_v, Vec, Mem);
848
+ ASMJIT_INST_3x(ld2, Ld2_v, Vec, Vec, Mem);
849
+ ASMJIT_INST_3x(ld2r, Ld2r_v, Vec, Vec, Mem);
850
+ ASMJIT_INST_4x(ld3, Ld3_v, Vec, Vec, Vec, Mem);
851
+ ASMJIT_INST_4x(ld3r, Ld3r_v, Vec, Vec, Vec, Mem);
852
+ ASMJIT_INST_5x(ld4, Ld4_v, Vec, Vec, Vec, Vec, Mem);
853
+ ASMJIT_INST_5x(ld4r, Ld4r_v, Vec, Vec, Vec, Vec, Mem);
854
+ ASMJIT_INST_3x(ldnp, Ldnp_v, Vec, Vec, Mem);
855
+ ASMJIT_INST_3x(ldp, Ldp_v, Vec, Vec, Mem);
856
+ ASMJIT_INST_2x(ldr, Ldr_v, Vec, Mem);
857
+ ASMJIT_INST_2x(ldur, Ldur_v, Vec, Mem);
858
+ ASMJIT_INST_3x(mla, Mla_v, Vec, Vec, Vec);
859
+ ASMJIT_INST_3x(mls, Mls_v, Vec, Vec, Vec);
860
+ ASMJIT_INST_2x(mov, Mov_v, Vec, Vec);
861
+ ASMJIT_INST_2x(mov, Mov_v, Gp, Vec);
862
+ ASMJIT_INST_2x(mov, Mov_v, Vec, Gp);
863
+ ASMJIT_INST_2x(movi, Movi_v, Vec, Imm);
864
+ ASMJIT_INST_3x(movi, Movi_v, Vec, Imm, Imm);
865
+ ASMJIT_INST_3x(mul, Mul_v, Vec, Vec, Vec);
866
+ ASMJIT_INST_2x(mvn, Mvn_v, Vec, Vec);
867
+ ASMJIT_INST_2x(mvni, Mvni_v, Vec, Imm);
868
+ ASMJIT_INST_3x(mvni, Mvni_v, Vec, Imm, Imm);
869
+ ASMJIT_INST_2x(neg, Neg_v, Vec, Vec);
870
+ ASMJIT_INST_2x(not_, Not_v, Vec, Vec);
871
+ ASMJIT_INST_3x(orn, Orn_v, Vec, Vec, Vec);
872
+ ASMJIT_INST_2x(orr, Orr_v, Vec, Imm);
873
+ ASMJIT_INST_3x(orr, Orr_v, Vec, Vec, Vec);
874
+ ASMJIT_INST_3x(orr, Orr_v, Vec, Imm, Imm);
875
+ ASMJIT_INST_3x(pmul, Pmul_v, Vec, Vec, Vec);
876
+ ASMJIT_INST_3x(pmull, Pmull_v, Vec, Vec, Vec);
877
+ ASMJIT_INST_3x(pmull2, Pmull2_v, Vec, Vec, Vec);
878
+ ASMJIT_INST_3x(raddhn, Raddhn_v, Vec, Vec, Vec);
879
+ ASMJIT_INST_3x(raddhn2, Raddhn2_v, Vec, Vec, Vec);
880
+ ASMJIT_INST_2x(rbit, Rbit_v, Vec, Vec);
881
+ ASMJIT_INST_2x(rev16, Rev16_v, Vec, Vec);
882
+ ASMJIT_INST_2x(rev32, Rev32_v, Vec, Vec);
883
+ ASMJIT_INST_2x(rev64, Rev64_v, Vec, Vec);
884
+ ASMJIT_INST_3x(rshrn, Rshrn_v, Vec, Vec, Imm);
885
+ ASMJIT_INST_3x(rshrn2, Rshrn2_v, Vec, Vec, Imm);
886
+ ASMJIT_INST_3x(rsubhn, Rsubhn_v, Vec, Vec, Vec);
887
+ ASMJIT_INST_3x(rsubhn2, Rsubhn2_v, Vec, Vec, Vec);
888
+ ASMJIT_INST_3x(saba, Saba_v, Vec, Vec, Vec);
889
+ ASMJIT_INST_3x(sabal, Sabal_v, Vec, Vec, Vec);
890
+ ASMJIT_INST_3x(sabal2, Sabal2_v, Vec, Vec, Vec);
891
+ ASMJIT_INST_3x(sabd, Sabd_v, Vec, Vec, Vec);
892
+ ASMJIT_INST_3x(sabdl, Sabdl_v, Vec, Vec, Vec);
893
+ ASMJIT_INST_3x(sabdl2, Sabdl2_v, Vec, Vec, Vec);
894
+ ASMJIT_INST_2x(sadalp, Sadalp_v, Vec, Vec);
895
+ ASMJIT_INST_3x(saddl, Saddl_v, Vec, Vec, Vec);
896
+ ASMJIT_INST_3x(saddl2, Saddl2_v, Vec, Vec, Vec);
897
+ ASMJIT_INST_2x(saddlp, Saddlp_v, Vec, Vec);
898
+ ASMJIT_INST_2x(saddlv, Saddlv_v, Vec, Vec);
899
+ ASMJIT_INST_3x(saddw, Saddw_v, Vec, Vec, Vec);
900
+ ASMJIT_INST_3x(saddw2, Saddw2_v, Vec, Vec, Vec);
901
+ ASMJIT_INST_2x(scvtf, Scvtf_v, Vec, Gp);
902
+ ASMJIT_INST_3x(scvtf, Scvtf_v, Vec, Gp, Imm);
903
+ ASMJIT_INST_2x(scvtf, Scvtf_v, Vec, Vec);
904
+ ASMJIT_INST_3x(scvtf, Scvtf_v, Vec, Vec, Imm);
905
+ ASMJIT_INST_3x(shadd, Shadd_v, Vec, Vec, Vec);
906
+ ASMJIT_INST_3x(shl, Shl_v, Vec, Vec, Imm);
907
+ ASMJIT_INST_3x(shll, Shll_v, Vec, Vec, Imm);
908
+ ASMJIT_INST_3x(shll2, Shll2_v, Vec, Vec, Imm);
909
+ ASMJIT_INST_3x(shrn, Shrn_v, Vec, Vec, Imm);
910
+ ASMJIT_INST_3x(shrn2, Shrn2_v, Vec, Vec, Imm);
911
+ ASMJIT_INST_3x(shsub, Shsub_v, Vec, Vec, Vec);
912
+ ASMJIT_INST_3x(sli, Sli_v, Vec, Vec, Imm);
913
+ ASMJIT_INST_3x(smax, Smax_v, Vec, Vec, Vec);
914
+ ASMJIT_INST_3x(smaxp, Smaxp_v, Vec, Vec, Vec);
915
+ ASMJIT_INST_2x(smaxv, Smaxv_v, Vec, Vec);
916
+ ASMJIT_INST_3x(smin, Smin_v, Vec, Vec, Vec);
917
+ ASMJIT_INST_3x(sminp, Sminp_v, Vec, Vec, Vec);
918
+ ASMJIT_INST_2x(sminv, Sminv_v, Vec, Vec);
919
+ ASMJIT_INST_3x(smlal, Smlal_v, Vec, Vec, Vec);
920
+ ASMJIT_INST_3x(smlal2, Smlal2_v, Vec, Vec, Vec);
921
+ ASMJIT_INST_3x(smlsl, Smlsl_v, Vec, Vec, Vec);
922
+ ASMJIT_INST_3x(smlsl2, Smlsl2_v, Vec, Vec, Vec);
923
+ ASMJIT_INST_2x(smov, Smov_v, Gp, Vec);
924
+ ASMJIT_INST_3x(smull, Smull_v, Vec, Vec, Vec);
925
+ ASMJIT_INST_3x(smull2, Smull2_v, Vec, Vec, Vec);
926
+ ASMJIT_INST_2x(sqabs, Sqabs_v, Vec, Vec);
927
+ ASMJIT_INST_3x(sqadd, Sqadd_v, Vec, Vec, Vec);
928
+ ASMJIT_INST_3x(sqdmlal, Sqdmlal_v, Vec, Vec, Vec);
929
+ ASMJIT_INST_3x(sqdmlal2, Sqdmlal2_v, Vec, Vec, Vec);
930
+ ASMJIT_INST_3x(sqdmlsl, Sqdmlsl_v, Vec, Vec, Vec);
931
+ ASMJIT_INST_3x(sqdmlsl2, Sqdmlsl2_v, Vec, Vec, Vec);
932
+ ASMJIT_INST_3x(sqdmulh, Sqdmulh_v, Vec, Vec, Vec);
933
+ ASMJIT_INST_3x(sqdmull, Sqdmull_v, Vec, Vec, Vec);
934
+ ASMJIT_INST_3x(sqdmull2, Sqdmull2_v, Vec, Vec, Vec);
935
+ ASMJIT_INST_2x(sqneg, Sqneg_v, Vec, Vec);
936
+ ASMJIT_INST_3x(sqrdmulh, Sqrdmulh_v, Vec, Vec, Vec);
937
+ ASMJIT_INST_3x(sqrshl, Sqrshl_v, Vec, Vec, Vec);
938
+ ASMJIT_INST_3x(sqrshrn, Sqrshrn_v, Vec, Vec, Imm);
939
+ ASMJIT_INST_3x(sqrshrn2, Sqrshrn2_v, Vec, Vec, Imm);
940
+ ASMJIT_INST_3x(sqrshrun, Sqrshrun_v, Vec, Vec, Imm);
941
+ ASMJIT_INST_3x(sqrshrun2, Sqrshrun2_v, Vec, Vec, Imm);
942
+ ASMJIT_INST_3x(sqshl, Sqshl_v, Vec, Vec, Vec);
943
+ ASMJIT_INST_3x(sqshl, Sqshl_v, Vec, Vec, Imm);
944
+ ASMJIT_INST_3x(sqshlu, Sqshlu_v, Vec, Vec, Imm);
945
+ ASMJIT_INST_3x(sqshrn, Sqshrn_v, Vec, Vec, Imm);
946
+ ASMJIT_INST_3x(sqshrn2, Sqshrn2_v, Vec, Vec, Imm);
947
+ ASMJIT_INST_3x(sqshrun, Sqshrun_v, Vec, Vec, Imm);
948
+ ASMJIT_INST_3x(sqshrun2, Sqshrun2_v, Vec, Vec, Imm);
949
+ ASMJIT_INST_3x(sqsub, Sqsub_v, Vec, Vec, Vec);
950
+ ASMJIT_INST_2x(sqxtn, Sqxtn_v, Vec, Vec);
951
+ ASMJIT_INST_2x(sqxtn2, Sqxtn2_v, Vec, Vec);
952
+ ASMJIT_INST_2x(sqxtun, Sqxtun_v, Vec, Vec);
953
+ ASMJIT_INST_2x(sqxtun2, Sqxtun2_v, Vec, Vec);
954
+ ASMJIT_INST_3x(srhadd, Srhadd_v, Vec, Vec, Vec);
955
+ ASMJIT_INST_3x(sri, Sri_v, Vec, Vec, Imm);
956
+ ASMJIT_INST_3x(srshl, Srshl_v, Vec, Vec, Vec);
957
+ ASMJIT_INST_3x(srshr, Srshr_v, Vec, Vec, Imm);
958
+ ASMJIT_INST_3x(srsra, Srsra_v, Vec, Vec, Imm);
959
+ ASMJIT_INST_3x(sshl, Sshl_v, Vec, Vec, Vec);
960
+ ASMJIT_INST_3x(sshll, Sshll_v, Vec, Vec, Imm);
961
+ ASMJIT_INST_3x(sshll2, Sshll2_v, Vec, Vec, Imm);
962
+ ASMJIT_INST_3x(sshr, Sshr_v, Vec, Vec, Imm);
963
+ ASMJIT_INST_3x(ssra, Ssra_v, Vec, Vec, Imm);
964
+ ASMJIT_INST_3x(ssubl, Ssubl_v, Vec, Vec, Vec);
965
+ ASMJIT_INST_3x(ssubl2, Ssubl2_v, Vec, Vec, Vec);
966
+ ASMJIT_INST_3x(ssubw, Ssubw_v, Vec, Vec, Vec);
967
+ ASMJIT_INST_3x(ssubw2, Ssubw2_v, Vec, Vec, Vec);
968
+ ASMJIT_INST_2x(st1, St1_v, Vec, Mem);
969
+ ASMJIT_INST_3x(st1, St1_v, Vec, Vec, Mem);
970
+ ASMJIT_INST_4x(st1, St1_v, Vec, Vec, Vec, Mem);
971
+ ASMJIT_INST_5x(st1, St1_v, Vec, Vec, Vec, Vec, Mem);
972
+ ASMJIT_INST_3x(st2, St2_v, Vec, Vec, Mem);
973
+ ASMJIT_INST_4x(st3, St3_v, Vec, Vec, Vec, Mem);
974
+ ASMJIT_INST_5x(st4, St4_v, Vec, Vec, Vec, Vec, Mem);
975
+ ASMJIT_INST_3x(stnp, Stnp_v, Vec, Vec, Mem);
976
+ ASMJIT_INST_3x(stp, Stp_v, Vec, Vec, Mem);
977
+ ASMJIT_INST_2x(str, Str_v, Vec, Mem);
978
+ ASMJIT_INST_2x(stur, Stur_v, Vec, Mem);
979
+ ASMJIT_INST_3x(sub, Sub_v, Vec, Vec, Vec);
980
+ ASMJIT_INST_3x(subhn, Subhn_v, Vec, Vec, Vec);
981
+ ASMJIT_INST_3x(subhn2, Subhn2_v, Vec, Vec, Vec);
982
+ ASMJIT_INST_2x(suqadd, Suqadd_v, Vec, Vec);
983
+ ASMJIT_INST_2x(sxtl, Sxtl_v, Vec, Vec);
984
+ ASMJIT_INST_2x(sxtl2, Sxtl2_v, Vec, Vec);
985
+ ASMJIT_INST_3x(tbl, Tbl_v, Vec, Vec, Vec);
986
+ ASMJIT_INST_4x(tbl, Tbl_v, Vec, Vec, Vec, Vec);
987
+ ASMJIT_INST_5x(tbl, Tbl_v, Vec, Vec, Vec, Vec, Vec);
988
+ ASMJIT_INST_6x(tbl, Tbl_v, Vec, Vec, Vec, Vec, Vec, Vec);
989
+ ASMJIT_INST_3x(tbx, Tbx_v, Vec, Vec, Vec);
990
+ ASMJIT_INST_4x(tbx, Tbx_v, Vec, Vec, Vec, Vec);
991
+ ASMJIT_INST_5x(tbx, Tbx_v, Vec, Vec, Vec, Vec, Vec);
992
+ ASMJIT_INST_6x(tbx, Tbx_v, Vec, Vec, Vec, Vec, Vec, Vec);
993
+ ASMJIT_INST_3x(trn1, Trn1_v, Vec, Vec, Vec);
994
+ ASMJIT_INST_3x(trn2, Trn2_v, Vec, Vec, Vec);
995
+ ASMJIT_INST_3x(uaba, Uaba_v, Vec, Vec, Vec);
996
+ ASMJIT_INST_3x(uabal, Uabal_v, Vec, Vec, Vec);
997
+ ASMJIT_INST_3x(uabal2, Uabal2_v, Vec, Vec, Vec);
998
+ ASMJIT_INST_3x(uabd, Uabd_v, Vec, Vec, Vec);
999
+ ASMJIT_INST_3x(uabdl, Uabdl_v, Vec, Vec, Vec);
1000
+ ASMJIT_INST_3x(uabdl2, Uabdl2_v, Vec, Vec, Vec);
1001
+ ASMJIT_INST_2x(uadalp, Uadalp_v, Vec, Vec);
1002
+ ASMJIT_INST_3x(uaddl, Uaddl_v, Vec, Vec, Vec);
1003
+ ASMJIT_INST_3x(uaddl2, Uaddl2_v, Vec, Vec, Vec);
1004
+ ASMJIT_INST_2x(uaddlp, Uaddlp_v, Vec, Vec);
1005
+ ASMJIT_INST_2x(uaddlv, Uaddlv_v, Vec, Vec);
1006
+ ASMJIT_INST_3x(uaddw, Uaddw_v, Vec, Vec, Vec);
1007
+ ASMJIT_INST_3x(uaddw2, Uaddw2_v, Vec, Vec, Vec);
1008
+ ASMJIT_INST_2x(ucvtf, Ucvtf_v, Vec, Gp);
1009
+ ASMJIT_INST_3x(ucvtf, Ucvtf_v, Vec, Gp, Imm);
1010
+ ASMJIT_INST_2x(ucvtf, Ucvtf_v, Vec, Vec);
1011
+ ASMJIT_INST_3x(ucvtf, Ucvtf_v, Vec, Vec, Imm);
1012
+ ASMJIT_INST_3x(uhadd, Uhadd_v, Vec, Vec, Vec);
1013
+ ASMJIT_INST_3x(uhsub, Uhsub_v, Vec, Vec, Vec);
1014
+ ASMJIT_INST_3x(umax, Umax_v, Vec, Vec, Vec);
1015
+ ASMJIT_INST_3x(umaxp, Umaxp_v, Vec, Vec, Vec);
1016
+ ASMJIT_INST_2x(umaxv, Umaxv_v, Vec, Vec);
1017
+ ASMJIT_INST_3x(umin, Umin_v, Vec, Vec, Vec);
1018
+ ASMJIT_INST_3x(uminp, Uminp_v, Vec, Vec, Vec);
1019
+ ASMJIT_INST_2x(uminv, Uminv_v, Vec, Vec);
1020
+ ASMJIT_INST_3x(umlal, Umlal_v, Vec, Vec, Vec);
1021
+ ASMJIT_INST_3x(umlal2, Umlal2_v, Vec, Vec, Vec);
1022
+ ASMJIT_INST_3x(umlsl, Umlsl_v, Vec, Vec, Vec);
1023
+ ASMJIT_INST_3x(umlsl2, Umlsl2_v, Vec, Vec, Vec);
1024
+ ASMJIT_INST_2x(umov, Umov_v, Gp, Vec);
1025
+ ASMJIT_INST_3x(umull, Umull_v, Vec, Vec, Vec);
1026
+ ASMJIT_INST_3x(umull2, Umull2_v, Vec, Vec, Vec);
1027
+ ASMJIT_INST_3x(uqadd, Uqadd_v, Vec, Vec, Vec);
1028
+ ASMJIT_INST_3x(uqrshl, Uqrshl_v, Vec, Vec, Vec);
1029
+ ASMJIT_INST_3x(uqrshl, Uqrshl_v, Vec, Vec, Imm);
1030
+ ASMJIT_INST_3x(uqrshrn, Uqrshrn_v, Vec, Vec, Imm);
1031
+ ASMJIT_INST_3x(uqrshrn2, Uqrshrn2_v, Vec, Vec, Imm);
1032
+ ASMJIT_INST_3x(uqshl, Uqshl_v, Vec, Vec, Vec);
1033
+ ASMJIT_INST_3x(uqshl, Uqshl_v, Vec, Vec, Imm);
1034
+ ASMJIT_INST_3x(uqshrn, Uqshrn_v, Vec, Vec, Imm);
1035
+ ASMJIT_INST_3x(uqshrn2, Uqshrn2_v, Vec, Vec, Imm);
1036
+ ASMJIT_INST_3x(uqsub, Uqsub_v, Vec, Vec, Vec);
1037
+ ASMJIT_INST_2x(uqxtn, Uqxtn_v, Vec, Vec);
1038
+ ASMJIT_INST_2x(uqxtn2, Uqxtn2_v, Vec, Vec);
1039
+ ASMJIT_INST_2x(urecpe, Urecpe_v, Vec, Vec);
1040
+ ASMJIT_INST_3x(urhadd, Urhadd_v, Vec, Vec, Vec);
1041
+ ASMJIT_INST_3x(urshl, Urshl_v, Vec, Vec, Vec);
1042
+ ASMJIT_INST_3x(urshr, Urshr_v, Vec, Vec, Imm);
1043
+ ASMJIT_INST_2x(ursqrte, Ursqrte_v, Vec, Vec);
1044
+ ASMJIT_INST_3x(ursra, Ursra_v, Vec, Vec, Imm);
1045
+ ASMJIT_INST_3x(ushl, Ushl_v, Vec, Vec, Vec);
1046
+ ASMJIT_INST_3x(ushll, Ushll_v, Vec, Vec, Imm);
1047
+ ASMJIT_INST_3x(ushll2, Ushll2_v, Vec, Vec, Imm);
1048
+ ASMJIT_INST_3x(ushr, Ushr_v, Vec, Vec, Imm);
1049
+ ASMJIT_INST_2x(usqadd, Usqadd_v, Vec, Vec);
1050
+ ASMJIT_INST_3x(usra, Usra_v, Vec, Vec, Imm);
1051
+ ASMJIT_INST_3x(usubl, Usubl_v, Vec, Vec, Vec);
1052
+ ASMJIT_INST_3x(usubl2, Usubl2_v, Vec, Vec, Vec);
1053
+ ASMJIT_INST_3x(usubw, Usubw_v, Vec, Vec, Vec);
1054
+ ASMJIT_INST_3x(usubw2, Usubw2_v, Vec, Vec, Vec);
1055
+ ASMJIT_INST_2x(uxtl, Uxtl_v, Vec, Vec);
1056
+ ASMJIT_INST_2x(uxtl2, Uxtl2_v, Vec, Vec);
1057
+ ASMJIT_INST_3x(uzp1, Uzp1_v, Vec, Vec, Vec);
1058
+ ASMJIT_INST_3x(uzp2, Uzp2_v, Vec, Vec, Vec);
1059
+ ASMJIT_INST_2x(xtn, Xtn_v, Vec, Vec);
1060
+ ASMJIT_INST_2x(xtn2, Xtn2_v, Vec, Vec);
1061
+ ASMJIT_INST_3x(zip1, Zip1_v, Vec, Vec, Vec);
1062
+ ASMJIT_INST_3x(zip2, Zip2_v, Vec, Vec, Vec);
1063
+
1064
+ //! \}
1065
+
1066
+ //! \name AES Instructions
1067
+ //! \{
1068
+
1069
+ ASMJIT_INST_2x(aesd, Aesd_v, Vec, Vec);
1070
+ ASMJIT_INST_2x(aese, Aese_v, Vec, Vec);
1071
+ ASMJIT_INST_2x(aesimc, Aesimc_v, Vec, Vec);
1072
+ ASMJIT_INST_2x(aesmc, Aesmc_v, Vec, Vec);
1073
+
1074
+ //! \}
1075
+
1076
+ //! \name SHA1 Instructions
1077
+ //! \{
1078
+
1079
+ ASMJIT_INST_3x(sha1c, Sha1c_v, Vec, Vec, Vec);
1080
+ ASMJIT_INST_2x(sha1h, Sha1h_v, Vec, Vec);
1081
+ ASMJIT_INST_3x(sha1m, Sha1m_v, Vec, Vec, Vec);
1082
+ ASMJIT_INST_3x(sha1p, Sha1p_v, Vec, Vec, Vec);
1083
+ ASMJIT_INST_3x(sha1su0, Sha1su0_v, Vec, Vec, Vec);
1084
+ ASMJIT_INST_2x(sha1su1, Sha1su1_v, Vec, Vec);
1085
+
1086
+ //! \}
1087
+
1088
+ //! \name SHA2 Instructions
1089
+ //! \{
1090
+
1091
+ ASMJIT_INST_3x(sha256h, Sha256h_v, Vec, Vec, Vec);
1092
+ ASMJIT_INST_3x(sha256h2, Sha256h2_v, Vec, Vec, Vec);
1093
+ ASMJIT_INST_2x(sha256su0, Sha256su0_v, Vec, Vec);
1094
+ ASMJIT_INST_3x(sha256su1, Sha256su1_v, Vec, Vec, Vec);
1095
+
1096
+ //! \}
1097
+
1098
+ //! \name RDMA Instructions (ARMv8.1-A)
1099
+ //! \{
1100
+
1101
+ ASMJIT_INST_3x(sqrdmlah, Sqrdmlah_v, Vec, Vec, Vec);
1102
+ ASMJIT_INST_3x(sqrdmlsh, Sqrdmlsh_v, Vec, Vec, Vec);
1103
+
1104
+ //! \}
1105
+
1106
+ //! \name FCMA Instruction (ARMv8.3-A)
1107
+ //! \{
1108
+
1109
+ ASMJIT_INST_4x(fcadd, Fcadd_v, Vec, Vec, Vec, Imm);
1110
+ ASMJIT_INST_4x(fcmla, Fcmla_v, Vec, Vec, Vec, Imm);
1111
+
1112
+ //! \}
1113
+
1114
+ //! \name FJCVTZS Instruction (ARMv8.3-A)
1115
+ //! \{
1116
+
1117
+ ASMJIT_INST_2x(fjcvtzs, Fjcvtzs_v, Gp, Vec);
1118
+
1119
+ //! \}
1120
+
1121
+ //! \name FP16FML Instructions (ARMv8.4-A, optional in ARMv8.2-A)
1122
+ //! \{
1123
+
1124
+ ASMJIT_INST_3x(fmlal, Fmlal_v, Vec, Vec, Vec);
1125
+ ASMJIT_INST_3x(fmlal2, Fmlal2_v, Vec, Vec, Vec);
1126
+ ASMJIT_INST_3x(fmlsl, Fmlsl_v, Vec, Vec, Vec);
1127
+ ASMJIT_INST_3x(fmlsl2, Fmlsl2_v, Vec, Vec, Vec);
1128
+
1129
+
1130
+ //! \}
1131
+
1132
+ //! \name SHA3 Instructions (ARMv8.4-A, optional in ARMv8.2-A)
1133
+ //! \{
1134
+
1135
+ ASMJIT_INST_4x(bcax, Bcax_v, Vec, Vec, Vec, Vec);
1136
+ ASMJIT_INST_4x(eor3, Eor3_v, Vec, Vec, Vec, Vec);
1137
+ ASMJIT_INST_3x(rax1, Rax1_v, Vec, Vec, Vec);
1138
+ ASMJIT_INST_4x(xar, Xar_v, Vec, Vec, Vec, Imm);
1139
+
1140
+ //! \}
1141
+
1142
+ //! \name SHA512 Instructions (ARMv8.4-A)
1143
+ //! \{
1144
+
1145
+ ASMJIT_INST_3x(sha512h, Sha512h_v, Vec, Vec, Vec);
1146
+ ASMJIT_INST_3x(sha512h2, Sha512h2_v, Vec, Vec, Vec);
1147
+ ASMJIT_INST_2x(sha512su0, Sha512su0_v, Vec, Vec);
1148
+ ASMJIT_INST_3x(sha512su1, Sha512su1_v, Vec, Vec, Vec);
1149
+
1150
+ //! \}
1151
+
1152
+ //! \name SM3 Instructions (ARMv8.4-A)
1153
+ //! \{
1154
+
1155
+ ASMJIT_INST_3x(sm3partw1, Sm3partw1_v, Vec, Vec, Vec);
1156
+ ASMJIT_INST_3x(sm3partw2, Sm3partw2_v, Vec, Vec, Vec);
1157
+ ASMJIT_INST_4x(sm3ss1, Sm3ss1_v, Vec, Vec, Vec, Vec);
1158
+ ASMJIT_INST_3x(sm3tt1a, Sm3tt1a_v, Vec, Vec, Vec);
1159
+ ASMJIT_INST_3x(sm3tt1b, Sm3tt1b_v, Vec, Vec, Vec);
1160
+ ASMJIT_INST_3x(sm3tt2a, Sm3tt2a_v, Vec, Vec, Vec);
1161
+ ASMJIT_INST_3x(sm3tt2b, Sm3tt2b_v, Vec, Vec, Vec);
1162
+
1163
+ //! \}
1164
+
1165
+ //! \name SM4 Instructions (ARMv8.4-A)
1166
+ //! \{
1167
+
1168
+ ASMJIT_INST_2x(sm4e, Sm4e_v, Vec, Vec);
1169
+ ASMJIT_INST_3x(sm4ekey, Sm4ekey_v, Vec, Vec, Vec);
1170
+
1171
+ //! \}
1172
+
1173
+ //! \name DOTPROD Instructions (ARMv8.4-A, optional in ARMv8.2-A)
1174
+ //! \{
1175
+
1176
+ ASMJIT_INST_3x(sdot, Sdot_v, Vec, Vec, Vec);
1177
+ ASMJIT_INST_3x(udot, Udot_v, Vec, Vec, Vec);
1178
+
1179
+ //! \}
1180
+
1181
+ //! \name BF16 Instructions (ARMv8.6-A)
1182
+ //! \{
1183
+
1184
+ ASMJIT_INST_2x(bfcvt, Bfcvt_v, Vec, Vec);
1185
+ ASMJIT_INST_2x(bfcvtn, Bfcvtn_v, Vec, Vec);
1186
+ ASMJIT_INST_2x(bfcvtn2, Bfcvtn2_v, Vec, Vec);
1187
+ ASMJIT_INST_3x(bfmlalb, Bfmlalb_v, Vec, Vec, Vec);
1188
+ ASMJIT_INST_3x(bfmlalt, Bfmlalt_v, Vec, Vec, Vec);
1189
+ ASMJIT_INST_3x(bfmmla, Bfmmla_v, Vec, Vec, Vec);
1190
+ ASMJIT_INST_3x(bfdot, Bfdot_v, Vec, Vec, Vec);
1191
+
1192
+ //! \}
1193
+
1194
+ //! \name I8MM Instructions (ARMv8.6-A)
1195
+ //! \{
1196
+
1197
+ ASMJIT_INST_3x(smmla, Smmla_v, Vec, Vec, Vec);
1198
+ ASMJIT_INST_3x(sudot, Sudot_v, Vec, Vec, Vec);
1199
+ ASMJIT_INST_3x(ummla, Ummla_v, Vec, Vec, Vec);
1200
+ ASMJIT_INST_3x(usdot, Usdot_v, Vec, Vec, Vec);
1201
+ ASMJIT_INST_3x(usmmla, Usmmla_v, Vec, Vec, Vec);
1202
+
1203
+ //! \}
1204
+ };
1205
+
1206
+ //! Emitter (ARM).
1207
+ //!
1208
+ //! \note This class cannot be instantiated, you can only cast to it and use it as emitter that emits to either
1209
+ //! `a64::Assembler`, `a64::Builder`, or `a64::Compiler` (use with caution with `a64::Compiler` as it requires
1210
+ //! virtual registers).
1211
+ class Emitter : public BaseEmitter, public EmitterExplicitT<Emitter> {
1212
+ ASMJIT_NONCONSTRUCTIBLE(Emitter)
1213
+ };
1214
+
1215
+ //! \}
1216
+
1217
+ #undef ASMJIT_INST_0x
1218
+ #undef ASMJIT_INST_1x
1219
+ #undef ASMJIT_INST_2x
1220
+ #undef ASMJIT_INST_3x
1221
+ #undef ASMJIT_INST_4x
1222
+ #undef ASMJIT_INST_5x
1223
+ #undef ASMJIT_INST_6x
1224
+ #undef ASMJIT_INST_1cc
1225
+
1226
+ ASMJIT_END_SUB_NAMESPACE
1227
+
1228
+ #endif // ASMJIT_ARM_A64EMITTER_H_INCLUDED