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,2169 @@
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_X86_X86GLOBALS_H_INCLUDED
7
+ #define ASMJIT_X86_X86GLOBALS_H_INCLUDED
8
+
9
+ #include "../core/archtraits.h"
10
+ #include "../core/inst.h"
11
+
12
+ //! \namespace asmjit::x86
13
+ //! \ingroup asmjit_x86
14
+ //!
15
+ //! X86/X64 API.
16
+
17
+ ASMJIT_BEGIN_SUB_NAMESPACE(x86)
18
+
19
+ //! \addtogroup asmjit_x86
20
+ //! \{
21
+
22
+ //! Condition code.
23
+ enum class CondCode : uint8_t {
24
+ kO = 0x00u, //!< OF==1
25
+ kNO = 0x01u, //!< OF==0
26
+ kC = 0x02u, //!< CF==1
27
+ kB = 0x02u, //!< CF==1 (unsigned < )
28
+ kNAE = 0x02u, //!< CF==1 (unsigned < )
29
+ kNC = 0x03u, //!< CF==0
30
+ kAE = 0x03u, //!< CF==0 (unsigned >=)
31
+ kNB = 0x03u, //!< CF==0 (unsigned >=)
32
+ kE = 0x04u, //!< ZF==1 (any_sign ==)
33
+ kZ = 0x04u, //!< ZF==1 (any_sign ==)
34
+ kNE = 0x05u, //!< ZF==0 (any_sign !=)
35
+ kNZ = 0x05u, //!< ZF==0 (any_sign !=)
36
+ kBE = 0x06u, //!< CF==1 | ZF==1 (unsigned <=)
37
+ kNA = 0x06u, //!< CF==1 | ZF==1 (unsigned <=)
38
+ kA = 0x07u, //!< CF==0 & ZF==0 (unsigned > )
39
+ kNBE = 0x07u, //!< CF==0 & ZF==0 (unsigned > )
40
+ kS = 0x08u, //!< SF==1 (is negative)
41
+ kNS = 0x09u, //!< SF==0 (is positive or zero)
42
+ kP = 0x0Au, //!< PF==1
43
+ kPE = 0x0Au, //!< PF==1
44
+ kPO = 0x0Bu, //!< PF==0
45
+ kNP = 0x0Bu, //!< PF==0
46
+ kL = 0x0Cu, //!< SF!=OF (signed < )
47
+ kNGE = 0x0Cu, //!< SF!=OF (signed < )
48
+ kGE = 0x0Du, //!< SF==OF (signed >=)
49
+ kNL = 0x0Du, //!< SF==OF (signed >=)
50
+ kLE = 0x0Eu, //!< ZF==1 | SF!=OF (signed <=)
51
+ kNG = 0x0Eu, //!< ZF==1 | SF!=OF (signed <=)
52
+ kG = 0x0Fu, //!< ZF==0 & SF==OF (signed > )
53
+ kNLE = 0x0Fu, //!< ZF==0 & SF==OF (signed > )
54
+
55
+ kZero = kZ, //!< Zero flag.
56
+ kNotZero = kNZ, //!< Non-zero flag.
57
+
58
+ kSign = kS, //!< Sign flag.
59
+ kNotSign = kNS, //!< No sign flag.
60
+
61
+ kNegative = kS, //!< Sign flag.
62
+ kPositive = kNS, //!< No sign flag.
63
+
64
+ kOverflow = kO, //!< Overflow (signed).
65
+ kNotOverflow = kNO, //!< Not overflow (signed).
66
+
67
+ kEqual = kE, //!< `a == b` (equal).
68
+ kNotEqual = kNE, //!< `a != b` (not equal).
69
+
70
+ kSignedLT = kL, //!< `a < b` (signed).
71
+ kSignedLE = kLE, //!< `a <= b` (signed).
72
+ kSignedGT = kG, //!< `a > b` (signed).
73
+ kSignedGE = kGE, //!< `a >= b` (signed).
74
+
75
+ kUnsignedLT = kB, //!< `a < b` (unsigned).
76
+ kUnsignedLE = kBE, //!< `a <= b` (unsigned).
77
+ kUnsignedGT = kA, //!< `a > b` (unsigned).
78
+ kUnsignedGE = kAE, //!< `a >= b` (unsigned).
79
+
80
+ kParityEven = kP, //!< Even parity flag.
81
+ kParityOdd = kPO, //!< Odd parity flag.
82
+
83
+ kMaxValue = 0x0Fu
84
+ };
85
+
86
+ //! \cond
87
+ static constexpr CondCode _reverseCondTable[] = {
88
+ CondCode::kO, // O <- O
89
+ CondCode::kNO, // NO <- NO
90
+ CondCode::kA , // A <- B
91
+ CondCode::kBE, // BE <- AE
92
+ CondCode::kE, // E <- E
93
+ CondCode::kNE, // NE <- NE
94
+ CondCode::kAE, // AE <- BE
95
+ CondCode::kB , // B <- A
96
+ CondCode::kS, // S <- S
97
+ CondCode::kNS, // NS <- NS
98
+ CondCode::kPE, // PE <- PE
99
+ CondCode::kPO, // PO <- PO
100
+ CondCode::kG, // G <- L
101
+ CondCode::kLE, // LE <- GE
102
+ CondCode::kGE, // GE <- LE
103
+ CondCode::kL // L <- G
104
+ };
105
+ //! \endcond
106
+
107
+ //! Reverses a condition code (reverses the corresponding operands of a comparison).
108
+ static inline constexpr CondCode reverseCond(CondCode cond) noexcept { return _reverseCondTable[uint8_t(cond)]; }
109
+ //! Negates a condition code.
110
+ static inline constexpr CondCode negateCond(CondCode cond) noexcept { return CondCode(uint8_t(cond) ^ 1u); }
111
+
112
+ //! Instruction.
113
+ //!
114
+ //! \note Only used to hold x86-specific instruction identifiers and some additional helper functions.
115
+ namespace Inst {
116
+ //! Instruction id.
117
+ enum Id : uint32_t {
118
+ // ${InstId:Begin}
119
+ kIdNone = 0, //!< Invalid instruction id.
120
+ kIdAaa, //!< Instruction 'aaa' (X86).
121
+ kIdAad, //!< Instruction 'aad' (X86).
122
+ kIdAam, //!< Instruction 'aam' (X86).
123
+ kIdAas, //!< Instruction 'aas' (X86).
124
+ kIdAdc, //!< Instruction 'adc'.
125
+ kIdAdcx, //!< Instruction 'adcx' {ADX}.
126
+ kIdAdd, //!< Instruction 'add'.
127
+ kIdAddpd, //!< Instruction 'addpd' {SSE2}.
128
+ kIdAddps, //!< Instruction 'addps' {SSE}.
129
+ kIdAddsd, //!< Instruction 'addsd' {SSE2}.
130
+ kIdAddss, //!< Instruction 'addss' {SSE}.
131
+ kIdAddsubpd, //!< Instruction 'addsubpd' {SSE3}.
132
+ kIdAddsubps, //!< Instruction 'addsubps' {SSE3}.
133
+ kIdAdox, //!< Instruction 'adox' {ADX}.
134
+ kIdAesdec, //!< Instruction 'aesdec' {AESNI}.
135
+ kIdAesdeclast, //!< Instruction 'aesdeclast' {AESNI}.
136
+ kIdAesenc, //!< Instruction 'aesenc' {AESNI}.
137
+ kIdAesenclast, //!< Instruction 'aesenclast' {AESNI}.
138
+ kIdAesimc, //!< Instruction 'aesimc' {AESNI}.
139
+ kIdAeskeygenassist, //!< Instruction 'aeskeygenassist' {AESNI}.
140
+ kIdAnd, //!< Instruction 'and'.
141
+ kIdAndn, //!< Instruction 'andn' {BMI}.
142
+ kIdAndnpd, //!< Instruction 'andnpd' {SSE2}.
143
+ kIdAndnps, //!< Instruction 'andnps' {SSE}.
144
+ kIdAndpd, //!< Instruction 'andpd' {SSE2}.
145
+ kIdAndps, //!< Instruction 'andps' {SSE}.
146
+ kIdArpl, //!< Instruction 'arpl' (X86).
147
+ kIdBextr, //!< Instruction 'bextr' {BMI}.
148
+ kIdBlcfill, //!< Instruction 'blcfill' {TBM}.
149
+ kIdBlci, //!< Instruction 'blci' {TBM}.
150
+ kIdBlcic, //!< Instruction 'blcic' {TBM}.
151
+ kIdBlcmsk, //!< Instruction 'blcmsk' {TBM}.
152
+ kIdBlcs, //!< Instruction 'blcs' {TBM}.
153
+ kIdBlendpd, //!< Instruction 'blendpd' {SSE4_1}.
154
+ kIdBlendps, //!< Instruction 'blendps' {SSE4_1}.
155
+ kIdBlendvpd, //!< Instruction 'blendvpd' {SSE4_1}.
156
+ kIdBlendvps, //!< Instruction 'blendvps' {SSE4_1}.
157
+ kIdBlsfill, //!< Instruction 'blsfill' {TBM}.
158
+ kIdBlsi, //!< Instruction 'blsi' {BMI}.
159
+ kIdBlsic, //!< Instruction 'blsic' {TBM}.
160
+ kIdBlsmsk, //!< Instruction 'blsmsk' {BMI}.
161
+ kIdBlsr, //!< Instruction 'blsr' {BMI}.
162
+ kIdBndcl, //!< Instruction 'bndcl' {MPX}.
163
+ kIdBndcn, //!< Instruction 'bndcn' {MPX}.
164
+ kIdBndcu, //!< Instruction 'bndcu' {MPX}.
165
+ kIdBndldx, //!< Instruction 'bndldx' {MPX}.
166
+ kIdBndmk, //!< Instruction 'bndmk' {MPX}.
167
+ kIdBndmov, //!< Instruction 'bndmov' {MPX}.
168
+ kIdBndstx, //!< Instruction 'bndstx' {MPX}.
169
+ kIdBound, //!< Instruction 'bound' (X86).
170
+ kIdBsf, //!< Instruction 'bsf'.
171
+ kIdBsr, //!< Instruction 'bsr'.
172
+ kIdBswap, //!< Instruction 'bswap'.
173
+ kIdBt, //!< Instruction 'bt'.
174
+ kIdBtc, //!< Instruction 'btc'.
175
+ kIdBtr, //!< Instruction 'btr'.
176
+ kIdBts, //!< Instruction 'bts'.
177
+ kIdBzhi, //!< Instruction 'bzhi' {BMI2}.
178
+ kIdCall, //!< Instruction 'call'.
179
+ kIdCbw, //!< Instruction 'cbw'.
180
+ kIdCdq, //!< Instruction 'cdq'.
181
+ kIdCdqe, //!< Instruction 'cdqe' (X64).
182
+ kIdClac, //!< Instruction 'clac' {SMAP}.
183
+ kIdClc, //!< Instruction 'clc'.
184
+ kIdCld, //!< Instruction 'cld'.
185
+ kIdCldemote, //!< Instruction 'cldemote' {CLDEMOTE}.
186
+ kIdClflush, //!< Instruction 'clflush' {CLFLUSH}.
187
+ kIdClflushopt, //!< Instruction 'clflushopt' {CLFLUSHOPT}.
188
+ kIdClgi, //!< Instruction 'clgi' {SVM}.
189
+ kIdCli, //!< Instruction 'cli'.
190
+ kIdClrssbsy, //!< Instruction 'clrssbsy' {CET_SS}.
191
+ kIdClts, //!< Instruction 'clts'.
192
+ kIdClui, //!< Instruction 'clui' {UINTR} (X64).
193
+ kIdClwb, //!< Instruction 'clwb' {CLWB}.
194
+ kIdClzero, //!< Instruction 'clzero' {CLZERO}.
195
+ kIdCmc, //!< Instruction 'cmc'.
196
+ kIdCmova, //!< Instruction 'cmova' {CMOV}.
197
+ kIdCmovae, //!< Instruction 'cmovae' {CMOV}.
198
+ kIdCmovb, //!< Instruction 'cmovb' {CMOV}.
199
+ kIdCmovbe, //!< Instruction 'cmovbe' {CMOV}.
200
+ kIdCmovc, //!< Instruction 'cmovc' {CMOV}.
201
+ kIdCmove, //!< Instruction 'cmove' {CMOV}.
202
+ kIdCmovg, //!< Instruction 'cmovg' {CMOV}.
203
+ kIdCmovge, //!< Instruction 'cmovge' {CMOV}.
204
+ kIdCmovl, //!< Instruction 'cmovl' {CMOV}.
205
+ kIdCmovle, //!< Instruction 'cmovle' {CMOV}.
206
+ kIdCmovna, //!< Instruction 'cmovna' {CMOV}.
207
+ kIdCmovnae, //!< Instruction 'cmovnae' {CMOV}.
208
+ kIdCmovnb, //!< Instruction 'cmovnb' {CMOV}.
209
+ kIdCmovnbe, //!< Instruction 'cmovnbe' {CMOV}.
210
+ kIdCmovnc, //!< Instruction 'cmovnc' {CMOV}.
211
+ kIdCmovne, //!< Instruction 'cmovne' {CMOV}.
212
+ kIdCmovng, //!< Instruction 'cmovng' {CMOV}.
213
+ kIdCmovnge, //!< Instruction 'cmovnge' {CMOV}.
214
+ kIdCmovnl, //!< Instruction 'cmovnl' {CMOV}.
215
+ kIdCmovnle, //!< Instruction 'cmovnle' {CMOV}.
216
+ kIdCmovno, //!< Instruction 'cmovno' {CMOV}.
217
+ kIdCmovnp, //!< Instruction 'cmovnp' {CMOV}.
218
+ kIdCmovns, //!< Instruction 'cmovns' {CMOV}.
219
+ kIdCmovnz, //!< Instruction 'cmovnz' {CMOV}.
220
+ kIdCmovo, //!< Instruction 'cmovo' {CMOV}.
221
+ kIdCmovp, //!< Instruction 'cmovp' {CMOV}.
222
+ kIdCmovpe, //!< Instruction 'cmovpe' {CMOV}.
223
+ kIdCmovpo, //!< Instruction 'cmovpo' {CMOV}.
224
+ kIdCmovs, //!< Instruction 'cmovs' {CMOV}.
225
+ kIdCmovz, //!< Instruction 'cmovz' {CMOV}.
226
+ kIdCmp, //!< Instruction 'cmp'.
227
+ kIdCmppd, //!< Instruction 'cmppd' {SSE2}.
228
+ kIdCmpps, //!< Instruction 'cmpps' {SSE}.
229
+ kIdCmps, //!< Instruction 'cmps'.
230
+ kIdCmpsd, //!< Instruction 'cmpsd' {SSE2}.
231
+ kIdCmpss, //!< Instruction 'cmpss' {SSE}.
232
+ kIdCmpxchg, //!< Instruction 'cmpxchg' {I486}.
233
+ kIdCmpxchg16b, //!< Instruction 'cmpxchg16b' {CMPXCHG16B} (X64).
234
+ kIdCmpxchg8b, //!< Instruction 'cmpxchg8b' {CMPXCHG8B}.
235
+ kIdComisd, //!< Instruction 'comisd' {SSE2}.
236
+ kIdComiss, //!< Instruction 'comiss' {SSE}.
237
+ kIdCpuid, //!< Instruction 'cpuid' {I486}.
238
+ kIdCqo, //!< Instruction 'cqo' (X64).
239
+ kIdCrc32, //!< Instruction 'crc32' {SSE4_2}.
240
+ kIdCvtdq2pd, //!< Instruction 'cvtdq2pd' {SSE2}.
241
+ kIdCvtdq2ps, //!< Instruction 'cvtdq2ps' {SSE2}.
242
+ kIdCvtpd2dq, //!< Instruction 'cvtpd2dq' {SSE2}.
243
+ kIdCvtpd2pi, //!< Instruction 'cvtpd2pi' {SSE2}.
244
+ kIdCvtpd2ps, //!< Instruction 'cvtpd2ps' {SSE2}.
245
+ kIdCvtpi2pd, //!< Instruction 'cvtpi2pd' {SSE2}.
246
+ kIdCvtpi2ps, //!< Instruction 'cvtpi2ps' {SSE}.
247
+ kIdCvtps2dq, //!< Instruction 'cvtps2dq' {SSE2}.
248
+ kIdCvtps2pd, //!< Instruction 'cvtps2pd' {SSE2}.
249
+ kIdCvtps2pi, //!< Instruction 'cvtps2pi' {SSE}.
250
+ kIdCvtsd2si, //!< Instruction 'cvtsd2si' {SSE2}.
251
+ kIdCvtsd2ss, //!< Instruction 'cvtsd2ss' {SSE2}.
252
+ kIdCvtsi2sd, //!< Instruction 'cvtsi2sd' {SSE2}.
253
+ kIdCvtsi2ss, //!< Instruction 'cvtsi2ss' {SSE}.
254
+ kIdCvtss2sd, //!< Instruction 'cvtss2sd' {SSE2}.
255
+ kIdCvtss2si, //!< Instruction 'cvtss2si' {SSE}.
256
+ kIdCvttpd2dq, //!< Instruction 'cvttpd2dq' {SSE2}.
257
+ kIdCvttpd2pi, //!< Instruction 'cvttpd2pi' {SSE2}.
258
+ kIdCvttps2dq, //!< Instruction 'cvttps2dq' {SSE2}.
259
+ kIdCvttps2pi, //!< Instruction 'cvttps2pi' {SSE}.
260
+ kIdCvttsd2si, //!< Instruction 'cvttsd2si' {SSE2}.
261
+ kIdCvttss2si, //!< Instruction 'cvttss2si' {SSE}.
262
+ kIdCwd, //!< Instruction 'cwd'.
263
+ kIdCwde, //!< Instruction 'cwde'.
264
+ kIdDaa, //!< Instruction 'daa' (X86).
265
+ kIdDas, //!< Instruction 'das' (X86).
266
+ kIdDec, //!< Instruction 'dec'.
267
+ kIdDiv, //!< Instruction 'div'.
268
+ kIdDivpd, //!< Instruction 'divpd' {SSE2}.
269
+ kIdDivps, //!< Instruction 'divps' {SSE}.
270
+ kIdDivsd, //!< Instruction 'divsd' {SSE2}.
271
+ kIdDivss, //!< Instruction 'divss' {SSE}.
272
+ kIdDppd, //!< Instruction 'dppd' {SSE4_1}.
273
+ kIdDpps, //!< Instruction 'dpps' {SSE4_1}.
274
+ kIdEmms, //!< Instruction 'emms' {MMX}.
275
+ kIdEndbr32, //!< Instruction 'endbr32' {CET_IBT}.
276
+ kIdEndbr64, //!< Instruction 'endbr64' {CET_IBT}.
277
+ kIdEnqcmd, //!< Instruction 'enqcmd' {ENQCMD}.
278
+ kIdEnqcmds, //!< Instruction 'enqcmds' {ENQCMD}.
279
+ kIdEnter, //!< Instruction 'enter'.
280
+ kIdExtractps, //!< Instruction 'extractps' {SSE4_1}.
281
+ kIdExtrq, //!< Instruction 'extrq' {SSE4A}.
282
+ kIdF2xm1, //!< Instruction 'f2xm1'.
283
+ kIdFabs, //!< Instruction 'fabs'.
284
+ kIdFadd, //!< Instruction 'fadd'.
285
+ kIdFaddp, //!< Instruction 'faddp'.
286
+ kIdFbld, //!< Instruction 'fbld'.
287
+ kIdFbstp, //!< Instruction 'fbstp'.
288
+ kIdFchs, //!< Instruction 'fchs'.
289
+ kIdFclex, //!< Instruction 'fclex'.
290
+ kIdFcmovb, //!< Instruction 'fcmovb' {CMOV}.
291
+ kIdFcmovbe, //!< Instruction 'fcmovbe' {CMOV}.
292
+ kIdFcmove, //!< Instruction 'fcmove' {CMOV}.
293
+ kIdFcmovnb, //!< Instruction 'fcmovnb' {CMOV}.
294
+ kIdFcmovnbe, //!< Instruction 'fcmovnbe' {CMOV}.
295
+ kIdFcmovne, //!< Instruction 'fcmovne' {CMOV}.
296
+ kIdFcmovnu, //!< Instruction 'fcmovnu' {CMOV}.
297
+ kIdFcmovu, //!< Instruction 'fcmovu' {CMOV}.
298
+ kIdFcom, //!< Instruction 'fcom'.
299
+ kIdFcomi, //!< Instruction 'fcomi'.
300
+ kIdFcomip, //!< Instruction 'fcomip'.
301
+ kIdFcomp, //!< Instruction 'fcomp'.
302
+ kIdFcompp, //!< Instruction 'fcompp'.
303
+ kIdFcos, //!< Instruction 'fcos'.
304
+ kIdFdecstp, //!< Instruction 'fdecstp'.
305
+ kIdFdiv, //!< Instruction 'fdiv'.
306
+ kIdFdivp, //!< Instruction 'fdivp'.
307
+ kIdFdivr, //!< Instruction 'fdivr'.
308
+ kIdFdivrp, //!< Instruction 'fdivrp'.
309
+ kIdFemms, //!< Instruction 'femms' {3DNOW}.
310
+ kIdFfree, //!< Instruction 'ffree'.
311
+ kIdFiadd, //!< Instruction 'fiadd'.
312
+ kIdFicom, //!< Instruction 'ficom'.
313
+ kIdFicomp, //!< Instruction 'ficomp'.
314
+ kIdFidiv, //!< Instruction 'fidiv'.
315
+ kIdFidivr, //!< Instruction 'fidivr'.
316
+ kIdFild, //!< Instruction 'fild'.
317
+ kIdFimul, //!< Instruction 'fimul'.
318
+ kIdFincstp, //!< Instruction 'fincstp'.
319
+ kIdFinit, //!< Instruction 'finit'.
320
+ kIdFist, //!< Instruction 'fist'.
321
+ kIdFistp, //!< Instruction 'fistp'.
322
+ kIdFisttp, //!< Instruction 'fisttp' {SSE3}.
323
+ kIdFisub, //!< Instruction 'fisub'.
324
+ kIdFisubr, //!< Instruction 'fisubr'.
325
+ kIdFld, //!< Instruction 'fld'.
326
+ kIdFld1, //!< Instruction 'fld1'.
327
+ kIdFldcw, //!< Instruction 'fldcw'.
328
+ kIdFldenv, //!< Instruction 'fldenv'.
329
+ kIdFldl2e, //!< Instruction 'fldl2e'.
330
+ kIdFldl2t, //!< Instruction 'fldl2t'.
331
+ kIdFldlg2, //!< Instruction 'fldlg2'.
332
+ kIdFldln2, //!< Instruction 'fldln2'.
333
+ kIdFldpi, //!< Instruction 'fldpi'.
334
+ kIdFldz, //!< Instruction 'fldz'.
335
+ kIdFmul, //!< Instruction 'fmul'.
336
+ kIdFmulp, //!< Instruction 'fmulp'.
337
+ kIdFnclex, //!< Instruction 'fnclex'.
338
+ kIdFninit, //!< Instruction 'fninit'.
339
+ kIdFnop, //!< Instruction 'fnop'.
340
+ kIdFnsave, //!< Instruction 'fnsave'.
341
+ kIdFnstcw, //!< Instruction 'fnstcw'.
342
+ kIdFnstenv, //!< Instruction 'fnstenv'.
343
+ kIdFnstsw, //!< Instruction 'fnstsw'.
344
+ kIdFpatan, //!< Instruction 'fpatan'.
345
+ kIdFprem, //!< Instruction 'fprem'.
346
+ kIdFprem1, //!< Instruction 'fprem1'.
347
+ kIdFptan, //!< Instruction 'fptan'.
348
+ kIdFrndint, //!< Instruction 'frndint'.
349
+ kIdFrstor, //!< Instruction 'frstor'.
350
+ kIdFsave, //!< Instruction 'fsave'.
351
+ kIdFscale, //!< Instruction 'fscale'.
352
+ kIdFsin, //!< Instruction 'fsin'.
353
+ kIdFsincos, //!< Instruction 'fsincos'.
354
+ kIdFsqrt, //!< Instruction 'fsqrt'.
355
+ kIdFst, //!< Instruction 'fst'.
356
+ kIdFstcw, //!< Instruction 'fstcw'.
357
+ kIdFstenv, //!< Instruction 'fstenv'.
358
+ kIdFstp, //!< Instruction 'fstp'.
359
+ kIdFstsw, //!< Instruction 'fstsw'.
360
+ kIdFsub, //!< Instruction 'fsub'.
361
+ kIdFsubp, //!< Instruction 'fsubp'.
362
+ kIdFsubr, //!< Instruction 'fsubr'.
363
+ kIdFsubrp, //!< Instruction 'fsubrp'.
364
+ kIdFtst, //!< Instruction 'ftst'.
365
+ kIdFucom, //!< Instruction 'fucom'.
366
+ kIdFucomi, //!< Instruction 'fucomi'.
367
+ kIdFucomip, //!< Instruction 'fucomip'.
368
+ kIdFucomp, //!< Instruction 'fucomp'.
369
+ kIdFucompp, //!< Instruction 'fucompp'.
370
+ kIdFwait, //!< Instruction 'fwait'.
371
+ kIdFxam, //!< Instruction 'fxam'.
372
+ kIdFxch, //!< Instruction 'fxch'.
373
+ kIdFxrstor, //!< Instruction 'fxrstor' {FXSR}.
374
+ kIdFxrstor64, //!< Instruction 'fxrstor64' {FXSR} (X64).
375
+ kIdFxsave, //!< Instruction 'fxsave' {FXSR}.
376
+ kIdFxsave64, //!< Instruction 'fxsave64' {FXSR} (X64).
377
+ kIdFxtract, //!< Instruction 'fxtract'.
378
+ kIdFyl2x, //!< Instruction 'fyl2x'.
379
+ kIdFyl2xp1, //!< Instruction 'fyl2xp1'.
380
+ kIdGetsec, //!< Instruction 'getsec' {SMX}.
381
+ kIdGf2p8affineinvqb, //!< Instruction 'gf2p8affineinvqb' {GFNI}.
382
+ kIdGf2p8affineqb, //!< Instruction 'gf2p8affineqb' {GFNI}.
383
+ kIdGf2p8mulb, //!< Instruction 'gf2p8mulb' {GFNI}.
384
+ kIdHaddpd, //!< Instruction 'haddpd' {SSE3}.
385
+ kIdHaddps, //!< Instruction 'haddps' {SSE3}.
386
+ kIdHlt, //!< Instruction 'hlt'.
387
+ kIdHreset, //!< Instruction 'hreset' {HRESET}.
388
+ kIdHsubpd, //!< Instruction 'hsubpd' {SSE3}.
389
+ kIdHsubps, //!< Instruction 'hsubps' {SSE3}.
390
+ kIdIdiv, //!< Instruction 'idiv'.
391
+ kIdImul, //!< Instruction 'imul'.
392
+ kIdIn, //!< Instruction 'in'.
393
+ kIdInc, //!< Instruction 'inc'.
394
+ kIdIncsspd, //!< Instruction 'incsspd' {CET_SS}.
395
+ kIdIncsspq, //!< Instruction 'incsspq' {CET_SS} (X64).
396
+ kIdIns, //!< Instruction 'ins'.
397
+ kIdInsertps, //!< Instruction 'insertps' {SSE4_1}.
398
+ kIdInsertq, //!< Instruction 'insertq' {SSE4A}.
399
+ kIdInt, //!< Instruction 'int'.
400
+ kIdInt3, //!< Instruction 'int3'.
401
+ kIdInto, //!< Instruction 'into' (X86).
402
+ kIdInvd, //!< Instruction 'invd' {I486}.
403
+ kIdInvept, //!< Instruction 'invept' {VMX}.
404
+ kIdInvlpg, //!< Instruction 'invlpg' {I486}.
405
+ kIdInvlpga, //!< Instruction 'invlpga' {SVM}.
406
+ kIdInvpcid, //!< Instruction 'invpcid' {I486}.
407
+ kIdInvvpid, //!< Instruction 'invvpid' {VMX}.
408
+ kIdIret, //!< Instruction 'iret'.
409
+ kIdIretd, //!< Instruction 'iretd'.
410
+ kIdIretq, //!< Instruction 'iretq' (X64).
411
+ kIdJa, //!< Instruction 'ja'.
412
+ kIdJae, //!< Instruction 'jae'.
413
+ kIdJb, //!< Instruction 'jb'.
414
+ kIdJbe, //!< Instruction 'jbe'.
415
+ kIdJc, //!< Instruction 'jc'.
416
+ kIdJe, //!< Instruction 'je'.
417
+ kIdJecxz, //!< Instruction 'jecxz'.
418
+ kIdJg, //!< Instruction 'jg'.
419
+ kIdJge, //!< Instruction 'jge'.
420
+ kIdJl, //!< Instruction 'jl'.
421
+ kIdJle, //!< Instruction 'jle'.
422
+ kIdJmp, //!< Instruction 'jmp'.
423
+ kIdJna, //!< Instruction 'jna'.
424
+ kIdJnae, //!< Instruction 'jnae'.
425
+ kIdJnb, //!< Instruction 'jnb'.
426
+ kIdJnbe, //!< Instruction 'jnbe'.
427
+ kIdJnc, //!< Instruction 'jnc'.
428
+ kIdJne, //!< Instruction 'jne'.
429
+ kIdJng, //!< Instruction 'jng'.
430
+ kIdJnge, //!< Instruction 'jnge'.
431
+ kIdJnl, //!< Instruction 'jnl'.
432
+ kIdJnle, //!< Instruction 'jnle'.
433
+ kIdJno, //!< Instruction 'jno'.
434
+ kIdJnp, //!< Instruction 'jnp'.
435
+ kIdJns, //!< Instruction 'jns'.
436
+ kIdJnz, //!< Instruction 'jnz'.
437
+ kIdJo, //!< Instruction 'jo'.
438
+ kIdJp, //!< Instruction 'jp'.
439
+ kIdJpe, //!< Instruction 'jpe'.
440
+ kIdJpo, //!< Instruction 'jpo'.
441
+ kIdJs, //!< Instruction 'js'.
442
+ kIdJz, //!< Instruction 'jz'.
443
+ kIdKaddb, //!< Instruction 'kaddb' {AVX512_DQ}.
444
+ kIdKaddd, //!< Instruction 'kaddd' {AVX512_BW}.
445
+ kIdKaddq, //!< Instruction 'kaddq' {AVX512_BW}.
446
+ kIdKaddw, //!< Instruction 'kaddw' {AVX512_DQ}.
447
+ kIdKandb, //!< Instruction 'kandb' {AVX512_DQ}.
448
+ kIdKandd, //!< Instruction 'kandd' {AVX512_BW}.
449
+ kIdKandnb, //!< Instruction 'kandnb' {AVX512_DQ}.
450
+ kIdKandnd, //!< Instruction 'kandnd' {AVX512_BW}.
451
+ kIdKandnq, //!< Instruction 'kandnq' {AVX512_BW}.
452
+ kIdKandnw, //!< Instruction 'kandnw' {AVX512_F}.
453
+ kIdKandq, //!< Instruction 'kandq' {AVX512_BW}.
454
+ kIdKandw, //!< Instruction 'kandw' {AVX512_F}.
455
+ kIdKmovb, //!< Instruction 'kmovb' {AVX512_DQ}.
456
+ kIdKmovd, //!< Instruction 'kmovd' {AVX512_BW}.
457
+ kIdKmovq, //!< Instruction 'kmovq' {AVX512_BW}.
458
+ kIdKmovw, //!< Instruction 'kmovw' {AVX512_F}.
459
+ kIdKnotb, //!< Instruction 'knotb' {AVX512_DQ}.
460
+ kIdKnotd, //!< Instruction 'knotd' {AVX512_BW}.
461
+ kIdKnotq, //!< Instruction 'knotq' {AVX512_BW}.
462
+ kIdKnotw, //!< Instruction 'knotw' {AVX512_F}.
463
+ kIdKorb, //!< Instruction 'korb' {AVX512_DQ}.
464
+ kIdKord, //!< Instruction 'kord' {AVX512_BW}.
465
+ kIdKorq, //!< Instruction 'korq' {AVX512_BW}.
466
+ kIdKortestb, //!< Instruction 'kortestb' {AVX512_DQ}.
467
+ kIdKortestd, //!< Instruction 'kortestd' {AVX512_BW}.
468
+ kIdKortestq, //!< Instruction 'kortestq' {AVX512_BW}.
469
+ kIdKortestw, //!< Instruction 'kortestw' {AVX512_F}.
470
+ kIdKorw, //!< Instruction 'korw' {AVX512_F}.
471
+ kIdKshiftlb, //!< Instruction 'kshiftlb' {AVX512_DQ}.
472
+ kIdKshiftld, //!< Instruction 'kshiftld' {AVX512_BW}.
473
+ kIdKshiftlq, //!< Instruction 'kshiftlq' {AVX512_BW}.
474
+ kIdKshiftlw, //!< Instruction 'kshiftlw' {AVX512_F}.
475
+ kIdKshiftrb, //!< Instruction 'kshiftrb' {AVX512_DQ}.
476
+ kIdKshiftrd, //!< Instruction 'kshiftrd' {AVX512_BW}.
477
+ kIdKshiftrq, //!< Instruction 'kshiftrq' {AVX512_BW}.
478
+ kIdKshiftrw, //!< Instruction 'kshiftrw' {AVX512_F}.
479
+ kIdKtestb, //!< Instruction 'ktestb' {AVX512_DQ}.
480
+ kIdKtestd, //!< Instruction 'ktestd' {AVX512_BW}.
481
+ kIdKtestq, //!< Instruction 'ktestq' {AVX512_BW}.
482
+ kIdKtestw, //!< Instruction 'ktestw' {AVX512_DQ}.
483
+ kIdKunpckbw, //!< Instruction 'kunpckbw' {AVX512_F}.
484
+ kIdKunpckdq, //!< Instruction 'kunpckdq' {AVX512_BW}.
485
+ kIdKunpckwd, //!< Instruction 'kunpckwd' {AVX512_BW}.
486
+ kIdKxnorb, //!< Instruction 'kxnorb' {AVX512_DQ}.
487
+ kIdKxnord, //!< Instruction 'kxnord' {AVX512_BW}.
488
+ kIdKxnorq, //!< Instruction 'kxnorq' {AVX512_BW}.
489
+ kIdKxnorw, //!< Instruction 'kxnorw' {AVX512_F}.
490
+ kIdKxorb, //!< Instruction 'kxorb' {AVX512_DQ}.
491
+ kIdKxord, //!< Instruction 'kxord' {AVX512_BW}.
492
+ kIdKxorq, //!< Instruction 'kxorq' {AVX512_BW}.
493
+ kIdKxorw, //!< Instruction 'kxorw' {AVX512_F}.
494
+ kIdLahf, //!< Instruction 'lahf' {LAHFSAHF}.
495
+ kIdLar, //!< Instruction 'lar'.
496
+ kIdLcall, //!< Instruction 'lcall'.
497
+ kIdLddqu, //!< Instruction 'lddqu' {SSE3}.
498
+ kIdLdmxcsr, //!< Instruction 'ldmxcsr' {SSE}.
499
+ kIdLds, //!< Instruction 'lds' (X86).
500
+ kIdLdtilecfg, //!< Instruction 'ldtilecfg' {AMX_TILE} (X64).
501
+ kIdLea, //!< Instruction 'lea'.
502
+ kIdLeave, //!< Instruction 'leave'.
503
+ kIdLes, //!< Instruction 'les' (X86).
504
+ kIdLfence, //!< Instruction 'lfence' {SSE2}.
505
+ kIdLfs, //!< Instruction 'lfs'.
506
+ kIdLgdt, //!< Instruction 'lgdt'.
507
+ kIdLgs, //!< Instruction 'lgs'.
508
+ kIdLidt, //!< Instruction 'lidt'.
509
+ kIdLjmp, //!< Instruction 'ljmp'.
510
+ kIdLldt, //!< Instruction 'lldt'.
511
+ kIdLlwpcb, //!< Instruction 'llwpcb' {LWP}.
512
+ kIdLmsw, //!< Instruction 'lmsw'.
513
+ kIdLods, //!< Instruction 'lods'.
514
+ kIdLoop, //!< Instruction 'loop'.
515
+ kIdLoope, //!< Instruction 'loope'.
516
+ kIdLoopne, //!< Instruction 'loopne'.
517
+ kIdLsl, //!< Instruction 'lsl'.
518
+ kIdLss, //!< Instruction 'lss'.
519
+ kIdLtr, //!< Instruction 'ltr'.
520
+ kIdLwpins, //!< Instruction 'lwpins' {LWP}.
521
+ kIdLwpval, //!< Instruction 'lwpval' {LWP}.
522
+ kIdLzcnt, //!< Instruction 'lzcnt' {LZCNT}.
523
+ kIdMaskmovdqu, //!< Instruction 'maskmovdqu' {SSE2}.
524
+ kIdMaskmovq, //!< Instruction 'maskmovq' {MMX2}.
525
+ kIdMaxpd, //!< Instruction 'maxpd' {SSE2}.
526
+ kIdMaxps, //!< Instruction 'maxps' {SSE}.
527
+ kIdMaxsd, //!< Instruction 'maxsd' {SSE2}.
528
+ kIdMaxss, //!< Instruction 'maxss' {SSE}.
529
+ kIdMcommit, //!< Instruction 'mcommit' {MCOMMIT}.
530
+ kIdMfence, //!< Instruction 'mfence' {SSE2}.
531
+ kIdMinpd, //!< Instruction 'minpd' {SSE2}.
532
+ kIdMinps, //!< Instruction 'minps' {SSE}.
533
+ kIdMinsd, //!< Instruction 'minsd' {SSE2}.
534
+ kIdMinss, //!< Instruction 'minss' {SSE}.
535
+ kIdMonitor, //!< Instruction 'monitor' {MONITOR}.
536
+ kIdMonitorx, //!< Instruction 'monitorx' {MONITORX}.
537
+ kIdMov, //!< Instruction 'mov'.
538
+ kIdMovabs, //!< Instruction 'movabs' (X64).
539
+ kIdMovapd, //!< Instruction 'movapd' {SSE2}.
540
+ kIdMovaps, //!< Instruction 'movaps' {SSE}.
541
+ kIdMovbe, //!< Instruction 'movbe' {MOVBE}.
542
+ kIdMovd, //!< Instruction 'movd' {MMX|SSE2}.
543
+ kIdMovddup, //!< Instruction 'movddup' {SSE3}.
544
+ kIdMovdir64b, //!< Instruction 'movdir64b' {MOVDIR64B}.
545
+ kIdMovdiri, //!< Instruction 'movdiri' {MOVDIRI}.
546
+ kIdMovdq2q, //!< Instruction 'movdq2q' {SSE2}.
547
+ kIdMovdqa, //!< Instruction 'movdqa' {SSE2}.
548
+ kIdMovdqu, //!< Instruction 'movdqu' {SSE2}.
549
+ kIdMovhlps, //!< Instruction 'movhlps' {SSE}.
550
+ kIdMovhpd, //!< Instruction 'movhpd' {SSE2}.
551
+ kIdMovhps, //!< Instruction 'movhps' {SSE}.
552
+ kIdMovlhps, //!< Instruction 'movlhps' {SSE}.
553
+ kIdMovlpd, //!< Instruction 'movlpd' {SSE2}.
554
+ kIdMovlps, //!< Instruction 'movlps' {SSE}.
555
+ kIdMovmskpd, //!< Instruction 'movmskpd' {SSE2}.
556
+ kIdMovmskps, //!< Instruction 'movmskps' {SSE}.
557
+ kIdMovntdq, //!< Instruction 'movntdq' {SSE2}.
558
+ kIdMovntdqa, //!< Instruction 'movntdqa' {SSE4_1}.
559
+ kIdMovnti, //!< Instruction 'movnti' {SSE2}.
560
+ kIdMovntpd, //!< Instruction 'movntpd' {SSE2}.
561
+ kIdMovntps, //!< Instruction 'movntps' {SSE}.
562
+ kIdMovntq, //!< Instruction 'movntq' {MMX2}.
563
+ kIdMovntsd, //!< Instruction 'movntsd' {SSE4A}.
564
+ kIdMovntss, //!< Instruction 'movntss' {SSE4A}.
565
+ kIdMovq, //!< Instruction 'movq' {MMX|SSE2}.
566
+ kIdMovq2dq, //!< Instruction 'movq2dq' {SSE2}.
567
+ kIdMovs, //!< Instruction 'movs'.
568
+ kIdMovsd, //!< Instruction 'movsd' {SSE2}.
569
+ kIdMovshdup, //!< Instruction 'movshdup' {SSE3}.
570
+ kIdMovsldup, //!< Instruction 'movsldup' {SSE3}.
571
+ kIdMovss, //!< Instruction 'movss' {SSE}.
572
+ kIdMovsx, //!< Instruction 'movsx'.
573
+ kIdMovsxd, //!< Instruction 'movsxd' (X64).
574
+ kIdMovupd, //!< Instruction 'movupd' {SSE2}.
575
+ kIdMovups, //!< Instruction 'movups' {SSE}.
576
+ kIdMovzx, //!< Instruction 'movzx'.
577
+ kIdMpsadbw, //!< Instruction 'mpsadbw' {SSE4_1}.
578
+ kIdMul, //!< Instruction 'mul'.
579
+ kIdMulpd, //!< Instruction 'mulpd' {SSE2}.
580
+ kIdMulps, //!< Instruction 'mulps' {SSE}.
581
+ kIdMulsd, //!< Instruction 'mulsd' {SSE2}.
582
+ kIdMulss, //!< Instruction 'mulss' {SSE}.
583
+ kIdMulx, //!< Instruction 'mulx' {BMI2}.
584
+ kIdMwait, //!< Instruction 'mwait' {MONITOR}.
585
+ kIdMwaitx, //!< Instruction 'mwaitx' {MONITORX}.
586
+ kIdNeg, //!< Instruction 'neg'.
587
+ kIdNop, //!< Instruction 'nop'.
588
+ kIdNot, //!< Instruction 'not'.
589
+ kIdOr, //!< Instruction 'or'.
590
+ kIdOrpd, //!< Instruction 'orpd' {SSE2}.
591
+ kIdOrps, //!< Instruction 'orps' {SSE}.
592
+ kIdOut, //!< Instruction 'out'.
593
+ kIdOuts, //!< Instruction 'outs'.
594
+ kIdPabsb, //!< Instruction 'pabsb' {SSSE3}.
595
+ kIdPabsd, //!< Instruction 'pabsd' {SSSE3}.
596
+ kIdPabsw, //!< Instruction 'pabsw' {SSSE3}.
597
+ kIdPackssdw, //!< Instruction 'packssdw' {MMX|SSE2}.
598
+ kIdPacksswb, //!< Instruction 'packsswb' {MMX|SSE2}.
599
+ kIdPackusdw, //!< Instruction 'packusdw' {SSE4_1}.
600
+ kIdPackuswb, //!< Instruction 'packuswb' {MMX|SSE2}.
601
+ kIdPaddb, //!< Instruction 'paddb' {MMX|SSE2}.
602
+ kIdPaddd, //!< Instruction 'paddd' {MMX|SSE2}.
603
+ kIdPaddq, //!< Instruction 'paddq' {SSE2}.
604
+ kIdPaddsb, //!< Instruction 'paddsb' {MMX|SSE2}.
605
+ kIdPaddsw, //!< Instruction 'paddsw' {MMX|SSE2}.
606
+ kIdPaddusb, //!< Instruction 'paddusb' {MMX|SSE2}.
607
+ kIdPaddusw, //!< Instruction 'paddusw' {MMX|SSE2}.
608
+ kIdPaddw, //!< Instruction 'paddw' {MMX|SSE2}.
609
+ kIdPalignr, //!< Instruction 'palignr' {SSE3}.
610
+ kIdPand, //!< Instruction 'pand' {MMX|SSE2}.
611
+ kIdPandn, //!< Instruction 'pandn' {MMX|SSE2}.
612
+ kIdPause, //!< Instruction 'pause'.
613
+ kIdPavgb, //!< Instruction 'pavgb' {MMX2|SSE2}.
614
+ kIdPavgusb, //!< Instruction 'pavgusb' {3DNOW}.
615
+ kIdPavgw, //!< Instruction 'pavgw' {MMX2|SSE2}.
616
+ kIdPblendvb, //!< Instruction 'pblendvb' {SSE4_1}.
617
+ kIdPblendw, //!< Instruction 'pblendw' {SSE4_1}.
618
+ kIdPclmulqdq, //!< Instruction 'pclmulqdq' {PCLMULQDQ}.
619
+ kIdPcmpeqb, //!< Instruction 'pcmpeqb' {MMX|SSE2}.
620
+ kIdPcmpeqd, //!< Instruction 'pcmpeqd' {MMX|SSE2}.
621
+ kIdPcmpeqq, //!< Instruction 'pcmpeqq' {SSE4_1}.
622
+ kIdPcmpeqw, //!< Instruction 'pcmpeqw' {MMX|SSE2}.
623
+ kIdPcmpestri, //!< Instruction 'pcmpestri' {SSE4_2}.
624
+ kIdPcmpestrm, //!< Instruction 'pcmpestrm' {SSE4_2}.
625
+ kIdPcmpgtb, //!< Instruction 'pcmpgtb' {MMX|SSE2}.
626
+ kIdPcmpgtd, //!< Instruction 'pcmpgtd' {MMX|SSE2}.
627
+ kIdPcmpgtq, //!< Instruction 'pcmpgtq' {SSE4_2}.
628
+ kIdPcmpgtw, //!< Instruction 'pcmpgtw' {MMX|SSE2}.
629
+ kIdPcmpistri, //!< Instruction 'pcmpistri' {SSE4_2}.
630
+ kIdPcmpistrm, //!< Instruction 'pcmpistrm' {SSE4_2}.
631
+ kIdPconfig, //!< Instruction 'pconfig' {PCONFIG}.
632
+ kIdPdep, //!< Instruction 'pdep' {BMI2}.
633
+ kIdPext, //!< Instruction 'pext' {BMI2}.
634
+ kIdPextrb, //!< Instruction 'pextrb' {SSE4_1}.
635
+ kIdPextrd, //!< Instruction 'pextrd' {SSE4_1}.
636
+ kIdPextrq, //!< Instruction 'pextrq' {SSE4_1} (X64).
637
+ kIdPextrw, //!< Instruction 'pextrw' {MMX2|SSE2|SSE4_1}.
638
+ kIdPf2id, //!< Instruction 'pf2id' {3DNOW}.
639
+ kIdPf2iw, //!< Instruction 'pf2iw' {3DNOW2}.
640
+ kIdPfacc, //!< Instruction 'pfacc' {3DNOW}.
641
+ kIdPfadd, //!< Instruction 'pfadd' {3DNOW}.
642
+ kIdPfcmpeq, //!< Instruction 'pfcmpeq' {3DNOW}.
643
+ kIdPfcmpge, //!< Instruction 'pfcmpge' {3DNOW}.
644
+ kIdPfcmpgt, //!< Instruction 'pfcmpgt' {3DNOW}.
645
+ kIdPfmax, //!< Instruction 'pfmax' {3DNOW}.
646
+ kIdPfmin, //!< Instruction 'pfmin' {3DNOW}.
647
+ kIdPfmul, //!< Instruction 'pfmul' {3DNOW}.
648
+ kIdPfnacc, //!< Instruction 'pfnacc' {3DNOW2}.
649
+ kIdPfpnacc, //!< Instruction 'pfpnacc' {3DNOW2}.
650
+ kIdPfrcp, //!< Instruction 'pfrcp' {3DNOW}.
651
+ kIdPfrcpit1, //!< Instruction 'pfrcpit1' {3DNOW}.
652
+ kIdPfrcpit2, //!< Instruction 'pfrcpit2' {3DNOW}.
653
+ kIdPfrcpv, //!< Instruction 'pfrcpv' {GEODE}.
654
+ kIdPfrsqit1, //!< Instruction 'pfrsqit1' {3DNOW}.
655
+ kIdPfrsqrt, //!< Instruction 'pfrsqrt' {3DNOW}.
656
+ kIdPfrsqrtv, //!< Instruction 'pfrsqrtv' {GEODE}.
657
+ kIdPfsub, //!< Instruction 'pfsub' {3DNOW}.
658
+ kIdPfsubr, //!< Instruction 'pfsubr' {3DNOW}.
659
+ kIdPhaddd, //!< Instruction 'phaddd' {SSSE3}.
660
+ kIdPhaddsw, //!< Instruction 'phaddsw' {SSSE3}.
661
+ kIdPhaddw, //!< Instruction 'phaddw' {SSSE3}.
662
+ kIdPhminposuw, //!< Instruction 'phminposuw' {SSE4_1}.
663
+ kIdPhsubd, //!< Instruction 'phsubd' {SSSE3}.
664
+ kIdPhsubsw, //!< Instruction 'phsubsw' {SSSE3}.
665
+ kIdPhsubw, //!< Instruction 'phsubw' {SSSE3}.
666
+ kIdPi2fd, //!< Instruction 'pi2fd' {3DNOW}.
667
+ kIdPi2fw, //!< Instruction 'pi2fw' {3DNOW2}.
668
+ kIdPinsrb, //!< Instruction 'pinsrb' {SSE4_1}.
669
+ kIdPinsrd, //!< Instruction 'pinsrd' {SSE4_1}.
670
+ kIdPinsrq, //!< Instruction 'pinsrq' {SSE4_1} (X64).
671
+ kIdPinsrw, //!< Instruction 'pinsrw' {MMX2|SSE2}.
672
+ kIdPmaddubsw, //!< Instruction 'pmaddubsw' {SSSE3}.
673
+ kIdPmaddwd, //!< Instruction 'pmaddwd' {MMX|SSE2}.
674
+ kIdPmaxsb, //!< Instruction 'pmaxsb' {SSE4_1}.
675
+ kIdPmaxsd, //!< Instruction 'pmaxsd' {SSE4_1}.
676
+ kIdPmaxsw, //!< Instruction 'pmaxsw' {MMX2|SSE2}.
677
+ kIdPmaxub, //!< Instruction 'pmaxub' {MMX2|SSE2}.
678
+ kIdPmaxud, //!< Instruction 'pmaxud' {SSE4_1}.
679
+ kIdPmaxuw, //!< Instruction 'pmaxuw' {SSE4_1}.
680
+ kIdPminsb, //!< Instruction 'pminsb' {SSE4_1}.
681
+ kIdPminsd, //!< Instruction 'pminsd' {SSE4_1}.
682
+ kIdPminsw, //!< Instruction 'pminsw' {MMX2|SSE2}.
683
+ kIdPminub, //!< Instruction 'pminub' {MMX2|SSE2}.
684
+ kIdPminud, //!< Instruction 'pminud' {SSE4_1}.
685
+ kIdPminuw, //!< Instruction 'pminuw' {SSE4_1}.
686
+ kIdPmovmskb, //!< Instruction 'pmovmskb' {MMX2|SSE2}.
687
+ kIdPmovsxbd, //!< Instruction 'pmovsxbd' {SSE4_1}.
688
+ kIdPmovsxbq, //!< Instruction 'pmovsxbq' {SSE4_1}.
689
+ kIdPmovsxbw, //!< Instruction 'pmovsxbw' {SSE4_1}.
690
+ kIdPmovsxdq, //!< Instruction 'pmovsxdq' {SSE4_1}.
691
+ kIdPmovsxwd, //!< Instruction 'pmovsxwd' {SSE4_1}.
692
+ kIdPmovsxwq, //!< Instruction 'pmovsxwq' {SSE4_1}.
693
+ kIdPmovzxbd, //!< Instruction 'pmovzxbd' {SSE4_1}.
694
+ kIdPmovzxbq, //!< Instruction 'pmovzxbq' {SSE4_1}.
695
+ kIdPmovzxbw, //!< Instruction 'pmovzxbw' {SSE4_1}.
696
+ kIdPmovzxdq, //!< Instruction 'pmovzxdq' {SSE4_1}.
697
+ kIdPmovzxwd, //!< Instruction 'pmovzxwd' {SSE4_1}.
698
+ kIdPmovzxwq, //!< Instruction 'pmovzxwq' {SSE4_1}.
699
+ kIdPmuldq, //!< Instruction 'pmuldq' {SSE4_1}.
700
+ kIdPmulhrsw, //!< Instruction 'pmulhrsw' {SSSE3}.
701
+ kIdPmulhrw, //!< Instruction 'pmulhrw' {3DNOW}.
702
+ kIdPmulhuw, //!< Instruction 'pmulhuw' {MMX2|SSE2}.
703
+ kIdPmulhw, //!< Instruction 'pmulhw' {MMX|SSE2}.
704
+ kIdPmulld, //!< Instruction 'pmulld' {SSE4_1}.
705
+ kIdPmullw, //!< Instruction 'pmullw' {MMX|SSE2}.
706
+ kIdPmuludq, //!< Instruction 'pmuludq' {SSE2}.
707
+ kIdPop, //!< Instruction 'pop'.
708
+ kIdPopa, //!< Instruction 'popa' (X86).
709
+ kIdPopad, //!< Instruction 'popad' (X86).
710
+ kIdPopcnt, //!< Instruction 'popcnt' {POPCNT}.
711
+ kIdPopf, //!< Instruction 'popf'.
712
+ kIdPopfd, //!< Instruction 'popfd' (X86).
713
+ kIdPopfq, //!< Instruction 'popfq' (X64).
714
+ kIdPor, //!< Instruction 'por' {MMX|SSE2}.
715
+ kIdPrefetch, //!< Instruction 'prefetch' {3DNOW}.
716
+ kIdPrefetchnta, //!< Instruction 'prefetchnta' {MMX2}.
717
+ kIdPrefetcht0, //!< Instruction 'prefetcht0' {MMX2}.
718
+ kIdPrefetcht1, //!< Instruction 'prefetcht1' {MMX2}.
719
+ kIdPrefetcht2, //!< Instruction 'prefetcht2' {MMX2}.
720
+ kIdPrefetchw, //!< Instruction 'prefetchw' {PREFETCHW}.
721
+ kIdPrefetchwt1, //!< Instruction 'prefetchwt1' {PREFETCHWT1}.
722
+ kIdPsadbw, //!< Instruction 'psadbw' {MMX2|SSE2}.
723
+ kIdPshufb, //!< Instruction 'pshufb' {SSSE3}.
724
+ kIdPshufd, //!< Instruction 'pshufd' {SSE2}.
725
+ kIdPshufhw, //!< Instruction 'pshufhw' {SSE2}.
726
+ kIdPshuflw, //!< Instruction 'pshuflw' {SSE2}.
727
+ kIdPshufw, //!< Instruction 'pshufw' {MMX2}.
728
+ kIdPsignb, //!< Instruction 'psignb' {SSSE3}.
729
+ kIdPsignd, //!< Instruction 'psignd' {SSSE3}.
730
+ kIdPsignw, //!< Instruction 'psignw' {SSSE3}.
731
+ kIdPslld, //!< Instruction 'pslld' {MMX|SSE2}.
732
+ kIdPslldq, //!< Instruction 'pslldq' {SSE2}.
733
+ kIdPsllq, //!< Instruction 'psllq' {MMX|SSE2}.
734
+ kIdPsllw, //!< Instruction 'psllw' {MMX|SSE2}.
735
+ kIdPsmash, //!< Instruction 'psmash' {SNP} (X64).
736
+ kIdPsrad, //!< Instruction 'psrad' {MMX|SSE2}.
737
+ kIdPsraw, //!< Instruction 'psraw' {MMX|SSE2}.
738
+ kIdPsrld, //!< Instruction 'psrld' {MMX|SSE2}.
739
+ kIdPsrldq, //!< Instruction 'psrldq' {SSE2}.
740
+ kIdPsrlq, //!< Instruction 'psrlq' {MMX|SSE2}.
741
+ kIdPsrlw, //!< Instruction 'psrlw' {MMX|SSE2}.
742
+ kIdPsubb, //!< Instruction 'psubb' {MMX|SSE2}.
743
+ kIdPsubd, //!< Instruction 'psubd' {MMX|SSE2}.
744
+ kIdPsubq, //!< Instruction 'psubq' {SSE2}.
745
+ kIdPsubsb, //!< Instruction 'psubsb' {MMX|SSE2}.
746
+ kIdPsubsw, //!< Instruction 'psubsw' {MMX|SSE2}.
747
+ kIdPsubusb, //!< Instruction 'psubusb' {MMX|SSE2}.
748
+ kIdPsubusw, //!< Instruction 'psubusw' {MMX|SSE2}.
749
+ kIdPsubw, //!< Instruction 'psubw' {MMX|SSE2}.
750
+ kIdPswapd, //!< Instruction 'pswapd' {3DNOW2}.
751
+ kIdPtest, //!< Instruction 'ptest' {SSE4_1}.
752
+ kIdPtwrite, //!< Instruction 'ptwrite' {PTWRITE}.
753
+ kIdPunpckhbw, //!< Instruction 'punpckhbw' {MMX|SSE2}.
754
+ kIdPunpckhdq, //!< Instruction 'punpckhdq' {MMX|SSE2}.
755
+ kIdPunpckhqdq, //!< Instruction 'punpckhqdq' {SSE2}.
756
+ kIdPunpckhwd, //!< Instruction 'punpckhwd' {MMX|SSE2}.
757
+ kIdPunpcklbw, //!< Instruction 'punpcklbw' {MMX|SSE2}.
758
+ kIdPunpckldq, //!< Instruction 'punpckldq' {MMX|SSE2}.
759
+ kIdPunpcklqdq, //!< Instruction 'punpcklqdq' {SSE2}.
760
+ kIdPunpcklwd, //!< Instruction 'punpcklwd' {MMX|SSE2}.
761
+ kIdPush, //!< Instruction 'push'.
762
+ kIdPusha, //!< Instruction 'pusha' (X86).
763
+ kIdPushad, //!< Instruction 'pushad' (X86).
764
+ kIdPushf, //!< Instruction 'pushf'.
765
+ kIdPushfd, //!< Instruction 'pushfd' (X86).
766
+ kIdPushfq, //!< Instruction 'pushfq' (X64).
767
+ kIdPvalidate, //!< Instruction 'pvalidate' {SNP}.
768
+ kIdPxor, //!< Instruction 'pxor' {MMX|SSE2}.
769
+ kIdRcl, //!< Instruction 'rcl'.
770
+ kIdRcpps, //!< Instruction 'rcpps' {SSE}.
771
+ kIdRcpss, //!< Instruction 'rcpss' {SSE}.
772
+ kIdRcr, //!< Instruction 'rcr'.
773
+ kIdRdfsbase, //!< Instruction 'rdfsbase' {FSGSBASE} (X64).
774
+ kIdRdgsbase, //!< Instruction 'rdgsbase' {FSGSBASE} (X64).
775
+ kIdRdmsr, //!< Instruction 'rdmsr' {MSR}.
776
+ kIdRdpid, //!< Instruction 'rdpid' {RDPID}.
777
+ kIdRdpkru, //!< Instruction 'rdpkru' {OSPKE}.
778
+ kIdRdpmc, //!< Instruction 'rdpmc'.
779
+ kIdRdpru, //!< Instruction 'rdpru' {RDPRU}.
780
+ kIdRdrand, //!< Instruction 'rdrand' {RDRAND}.
781
+ kIdRdseed, //!< Instruction 'rdseed' {RDSEED}.
782
+ kIdRdsspd, //!< Instruction 'rdsspd' {CET_SS}.
783
+ kIdRdsspq, //!< Instruction 'rdsspq' {CET_SS} (X64).
784
+ kIdRdtsc, //!< Instruction 'rdtsc' {RDTSC}.
785
+ kIdRdtscp, //!< Instruction 'rdtscp' {RDTSCP}.
786
+ kIdRet, //!< Instruction 'ret'.
787
+ kIdRetf, //!< Instruction 'retf'.
788
+ kIdRmpadjust, //!< Instruction 'rmpadjust' {SNP} (X64).
789
+ kIdRmpupdate, //!< Instruction 'rmpupdate' {SNP} (X64).
790
+ kIdRol, //!< Instruction 'rol'.
791
+ kIdRor, //!< Instruction 'ror'.
792
+ kIdRorx, //!< Instruction 'rorx' {BMI2}.
793
+ kIdRoundpd, //!< Instruction 'roundpd' {SSE4_1}.
794
+ kIdRoundps, //!< Instruction 'roundps' {SSE4_1}.
795
+ kIdRoundsd, //!< Instruction 'roundsd' {SSE4_1}.
796
+ kIdRoundss, //!< Instruction 'roundss' {SSE4_1}.
797
+ kIdRsm, //!< Instruction 'rsm' (X86).
798
+ kIdRsqrtps, //!< Instruction 'rsqrtps' {SSE}.
799
+ kIdRsqrtss, //!< Instruction 'rsqrtss' {SSE}.
800
+ kIdRstorssp, //!< Instruction 'rstorssp' {CET_SS}.
801
+ kIdSahf, //!< Instruction 'sahf' {LAHFSAHF}.
802
+ kIdSal, //!< Instruction 'sal'.
803
+ kIdSar, //!< Instruction 'sar'.
804
+ kIdSarx, //!< Instruction 'sarx' {BMI2}.
805
+ kIdSaveprevssp, //!< Instruction 'saveprevssp' {CET_SS}.
806
+ kIdSbb, //!< Instruction 'sbb'.
807
+ kIdScas, //!< Instruction 'scas'.
808
+ kIdSenduipi, //!< Instruction 'senduipi' {UINTR} (X64).
809
+ kIdSerialize, //!< Instruction 'serialize' {SERIALIZE}.
810
+ kIdSeta, //!< Instruction 'seta'.
811
+ kIdSetae, //!< Instruction 'setae'.
812
+ kIdSetb, //!< Instruction 'setb'.
813
+ kIdSetbe, //!< Instruction 'setbe'.
814
+ kIdSetc, //!< Instruction 'setc'.
815
+ kIdSete, //!< Instruction 'sete'.
816
+ kIdSetg, //!< Instruction 'setg'.
817
+ kIdSetge, //!< Instruction 'setge'.
818
+ kIdSetl, //!< Instruction 'setl'.
819
+ kIdSetle, //!< Instruction 'setle'.
820
+ kIdSetna, //!< Instruction 'setna'.
821
+ kIdSetnae, //!< Instruction 'setnae'.
822
+ kIdSetnb, //!< Instruction 'setnb'.
823
+ kIdSetnbe, //!< Instruction 'setnbe'.
824
+ kIdSetnc, //!< Instruction 'setnc'.
825
+ kIdSetne, //!< Instruction 'setne'.
826
+ kIdSetng, //!< Instruction 'setng'.
827
+ kIdSetnge, //!< Instruction 'setnge'.
828
+ kIdSetnl, //!< Instruction 'setnl'.
829
+ kIdSetnle, //!< Instruction 'setnle'.
830
+ kIdSetno, //!< Instruction 'setno'.
831
+ kIdSetnp, //!< Instruction 'setnp'.
832
+ kIdSetns, //!< Instruction 'setns'.
833
+ kIdSetnz, //!< Instruction 'setnz'.
834
+ kIdSeto, //!< Instruction 'seto'.
835
+ kIdSetp, //!< Instruction 'setp'.
836
+ kIdSetpe, //!< Instruction 'setpe'.
837
+ kIdSetpo, //!< Instruction 'setpo'.
838
+ kIdSets, //!< Instruction 'sets'.
839
+ kIdSetssbsy, //!< Instruction 'setssbsy' {CET_SS}.
840
+ kIdSetz, //!< Instruction 'setz'.
841
+ kIdSfence, //!< Instruction 'sfence' {MMX2}.
842
+ kIdSgdt, //!< Instruction 'sgdt'.
843
+ kIdSha1msg1, //!< Instruction 'sha1msg1' {SHA}.
844
+ kIdSha1msg2, //!< Instruction 'sha1msg2' {SHA}.
845
+ kIdSha1nexte, //!< Instruction 'sha1nexte' {SHA}.
846
+ kIdSha1rnds4, //!< Instruction 'sha1rnds4' {SHA}.
847
+ kIdSha256msg1, //!< Instruction 'sha256msg1' {SHA}.
848
+ kIdSha256msg2, //!< Instruction 'sha256msg2' {SHA}.
849
+ kIdSha256rnds2, //!< Instruction 'sha256rnds2' {SHA}.
850
+ kIdShl, //!< Instruction 'shl'.
851
+ kIdShld, //!< Instruction 'shld'.
852
+ kIdShlx, //!< Instruction 'shlx' {BMI2}.
853
+ kIdShr, //!< Instruction 'shr'.
854
+ kIdShrd, //!< Instruction 'shrd'.
855
+ kIdShrx, //!< Instruction 'shrx' {BMI2}.
856
+ kIdShufpd, //!< Instruction 'shufpd' {SSE2}.
857
+ kIdShufps, //!< Instruction 'shufps' {SSE}.
858
+ kIdSidt, //!< Instruction 'sidt'.
859
+ kIdSkinit, //!< Instruction 'skinit' {SKINIT}.
860
+ kIdSldt, //!< Instruction 'sldt'.
861
+ kIdSlwpcb, //!< Instruction 'slwpcb' {LWP}.
862
+ kIdSmsw, //!< Instruction 'smsw'.
863
+ kIdSqrtpd, //!< Instruction 'sqrtpd' {SSE2}.
864
+ kIdSqrtps, //!< Instruction 'sqrtps' {SSE}.
865
+ kIdSqrtsd, //!< Instruction 'sqrtsd' {SSE2}.
866
+ kIdSqrtss, //!< Instruction 'sqrtss' {SSE}.
867
+ kIdStac, //!< Instruction 'stac' {SMAP}.
868
+ kIdStc, //!< Instruction 'stc'.
869
+ kIdStd, //!< Instruction 'std'.
870
+ kIdStgi, //!< Instruction 'stgi' {SKINIT}.
871
+ kIdSti, //!< Instruction 'sti'.
872
+ kIdStmxcsr, //!< Instruction 'stmxcsr' {SSE}.
873
+ kIdStos, //!< Instruction 'stos'.
874
+ kIdStr, //!< Instruction 'str'.
875
+ kIdSttilecfg, //!< Instruction 'sttilecfg' {AMX_TILE} (X64).
876
+ kIdStui, //!< Instruction 'stui' {UINTR} (X64).
877
+ kIdSub, //!< Instruction 'sub'.
878
+ kIdSubpd, //!< Instruction 'subpd' {SSE2}.
879
+ kIdSubps, //!< Instruction 'subps' {SSE}.
880
+ kIdSubsd, //!< Instruction 'subsd' {SSE2}.
881
+ kIdSubss, //!< Instruction 'subss' {SSE}.
882
+ kIdSwapgs, //!< Instruction 'swapgs' (X64).
883
+ kIdSyscall, //!< Instruction 'syscall' (X64).
884
+ kIdSysenter, //!< Instruction 'sysenter'.
885
+ kIdSysexit, //!< Instruction 'sysexit'.
886
+ kIdSysexitq, //!< Instruction 'sysexitq'.
887
+ kIdSysret, //!< Instruction 'sysret' (X64).
888
+ kIdSysretq, //!< Instruction 'sysretq' (X64).
889
+ kIdT1mskc, //!< Instruction 't1mskc' {TBM}.
890
+ kIdTdpbf16ps, //!< Instruction 'tdpbf16ps' {AMX_BF16} (X64).
891
+ kIdTdpbssd, //!< Instruction 'tdpbssd' {AMX_INT8} (X64).
892
+ kIdTdpbsud, //!< Instruction 'tdpbsud' {AMX_INT8} (X64).
893
+ kIdTdpbusd, //!< Instruction 'tdpbusd' {AMX_INT8} (X64).
894
+ kIdTdpbuud, //!< Instruction 'tdpbuud' {AMX_INT8} (X64).
895
+ kIdTest, //!< Instruction 'test'.
896
+ kIdTestui, //!< Instruction 'testui' {UINTR} (X64).
897
+ kIdTileloadd, //!< Instruction 'tileloadd' {AMX_TILE} (X64).
898
+ kIdTileloaddt1, //!< Instruction 'tileloaddt1' {AMX_TILE} (X64).
899
+ kIdTilerelease, //!< Instruction 'tilerelease' {AMX_TILE} (X64).
900
+ kIdTilestored, //!< Instruction 'tilestored' {AMX_TILE} (X64).
901
+ kIdTilezero, //!< Instruction 'tilezero' {AMX_TILE} (X64).
902
+ kIdTpause, //!< Instruction 'tpause' {WAITPKG}.
903
+ kIdTzcnt, //!< Instruction 'tzcnt' {BMI}.
904
+ kIdTzmsk, //!< Instruction 'tzmsk' {TBM}.
905
+ kIdUcomisd, //!< Instruction 'ucomisd' {SSE2}.
906
+ kIdUcomiss, //!< Instruction 'ucomiss' {SSE}.
907
+ kIdUd0, //!< Instruction 'ud0'.
908
+ kIdUd1, //!< Instruction 'ud1'.
909
+ kIdUd2, //!< Instruction 'ud2'.
910
+ kIdUiret, //!< Instruction 'uiret' {UINTR} (X64).
911
+ kIdUmonitor, //!< Instruction 'umonitor' {WAITPKG}.
912
+ kIdUmwait, //!< Instruction 'umwait' {WAITPKG}.
913
+ kIdUnpckhpd, //!< Instruction 'unpckhpd' {SSE2}.
914
+ kIdUnpckhps, //!< Instruction 'unpckhps' {SSE}.
915
+ kIdUnpcklpd, //!< Instruction 'unpcklpd' {SSE2}.
916
+ kIdUnpcklps, //!< Instruction 'unpcklps' {SSE}.
917
+ kIdV4fmaddps, //!< Instruction 'v4fmaddps' {AVX512_4FMAPS}.
918
+ kIdV4fmaddss, //!< Instruction 'v4fmaddss' {AVX512_4FMAPS}.
919
+ kIdV4fnmaddps, //!< Instruction 'v4fnmaddps' {AVX512_4FMAPS}.
920
+ kIdV4fnmaddss, //!< Instruction 'v4fnmaddss' {AVX512_4FMAPS}.
921
+ kIdVaddpd, //!< Instruction 'vaddpd' {AVX|AVX512_F+VL}.
922
+ kIdVaddph, //!< Instruction 'vaddph' {AVX512_FP16+VL}.
923
+ kIdVaddps, //!< Instruction 'vaddps' {AVX|AVX512_F+VL}.
924
+ kIdVaddsd, //!< Instruction 'vaddsd' {AVX|AVX512_F}.
925
+ kIdVaddsh, //!< Instruction 'vaddsh' {AVX512_FP16}.
926
+ kIdVaddss, //!< Instruction 'vaddss' {AVX|AVX512_F}.
927
+ kIdVaddsubpd, //!< Instruction 'vaddsubpd' {AVX}.
928
+ kIdVaddsubps, //!< Instruction 'vaddsubps' {AVX}.
929
+ kIdVaesdec, //!< Instruction 'vaesdec' {AVX|AVX512_F+VL & AESNI|VAES}.
930
+ kIdVaesdeclast, //!< Instruction 'vaesdeclast' {AVX|AVX512_F+VL & AESNI|VAES}.
931
+ kIdVaesenc, //!< Instruction 'vaesenc' {AVX|AVX512_F+VL & AESNI|VAES}.
932
+ kIdVaesenclast, //!< Instruction 'vaesenclast' {AVX|AVX512_F+VL & AESNI|VAES}.
933
+ kIdVaesimc, //!< Instruction 'vaesimc' {AVX & AESNI}.
934
+ kIdVaeskeygenassist, //!< Instruction 'vaeskeygenassist' {AVX & AESNI}.
935
+ kIdValignd, //!< Instruction 'valignd' {AVX512_F+VL}.
936
+ kIdValignq, //!< Instruction 'valignq' {AVX512_F+VL}.
937
+ kIdVandnpd, //!< Instruction 'vandnpd' {AVX|AVX512_DQ+VL}.
938
+ kIdVandnps, //!< Instruction 'vandnps' {AVX|AVX512_DQ+VL}.
939
+ kIdVandpd, //!< Instruction 'vandpd' {AVX|AVX512_DQ+VL}.
940
+ kIdVandps, //!< Instruction 'vandps' {AVX|AVX512_DQ+VL}.
941
+ kIdVblendmpd, //!< Instruction 'vblendmpd' {AVX512_F+VL}.
942
+ kIdVblendmps, //!< Instruction 'vblendmps' {AVX512_F+VL}.
943
+ kIdVblendpd, //!< Instruction 'vblendpd' {AVX}.
944
+ kIdVblendps, //!< Instruction 'vblendps' {AVX}.
945
+ kIdVblendvpd, //!< Instruction 'vblendvpd' {AVX}.
946
+ kIdVblendvps, //!< Instruction 'vblendvps' {AVX}.
947
+ kIdVbroadcastf128, //!< Instruction 'vbroadcastf128' {AVX}.
948
+ kIdVbroadcastf32x2, //!< Instruction 'vbroadcastf32x2' {AVX512_DQ+VL}.
949
+ kIdVbroadcastf32x4, //!< Instruction 'vbroadcastf32x4' {AVX512_F}.
950
+ kIdVbroadcastf32x8, //!< Instruction 'vbroadcastf32x8' {AVX512_DQ}.
951
+ kIdVbroadcastf64x2, //!< Instruction 'vbroadcastf64x2' {AVX512_DQ+VL}.
952
+ kIdVbroadcastf64x4, //!< Instruction 'vbroadcastf64x4' {AVX512_F}.
953
+ kIdVbroadcasti128, //!< Instruction 'vbroadcasti128' {AVX2}.
954
+ kIdVbroadcasti32x2, //!< Instruction 'vbroadcasti32x2' {AVX512_DQ+VL}.
955
+ kIdVbroadcasti32x4, //!< Instruction 'vbroadcasti32x4' {AVX512_F+VL}.
956
+ kIdVbroadcasti32x8, //!< Instruction 'vbroadcasti32x8' {AVX512_DQ}.
957
+ kIdVbroadcasti64x2, //!< Instruction 'vbroadcasti64x2' {AVX512_DQ+VL}.
958
+ kIdVbroadcasti64x4, //!< Instruction 'vbroadcasti64x4' {AVX512_F}.
959
+ kIdVbroadcastsd, //!< Instruction 'vbroadcastsd' {AVX|AVX2|AVX512_F+VL}.
960
+ kIdVbroadcastss, //!< Instruction 'vbroadcastss' {AVX|AVX2|AVX512_F+VL}.
961
+ kIdVcmppd, //!< Instruction 'vcmppd' {AVX|AVX512_F+VL}.
962
+ kIdVcmpph, //!< Instruction 'vcmpph' {AVX512_FP16+VL}.
963
+ kIdVcmpps, //!< Instruction 'vcmpps' {AVX|AVX512_F+VL}.
964
+ kIdVcmpsd, //!< Instruction 'vcmpsd' {AVX|AVX512_F}.
965
+ kIdVcmpsh, //!< Instruction 'vcmpsh' {AVX512_FP16}.
966
+ kIdVcmpss, //!< Instruction 'vcmpss' {AVX|AVX512_F}.
967
+ kIdVcomisd, //!< Instruction 'vcomisd' {AVX|AVX512_F}.
968
+ kIdVcomish, //!< Instruction 'vcomish' {AVX512_FP16}.
969
+ kIdVcomiss, //!< Instruction 'vcomiss' {AVX|AVX512_F}.
970
+ kIdVcompresspd, //!< Instruction 'vcompresspd' {AVX512_F+VL}.
971
+ kIdVcompressps, //!< Instruction 'vcompressps' {AVX512_F+VL}.
972
+ kIdVcvtdq2pd, //!< Instruction 'vcvtdq2pd' {AVX|AVX512_F+VL}.
973
+ kIdVcvtdq2ph, //!< Instruction 'vcvtdq2ph' {AVX512_FP16+VL}.
974
+ kIdVcvtdq2ps, //!< Instruction 'vcvtdq2ps' {AVX|AVX512_F+VL}.
975
+ kIdVcvtne2ps2bf16, //!< Instruction 'vcvtne2ps2bf16' {AVX512_BF16+VL}.
976
+ kIdVcvtneps2bf16, //!< Instruction 'vcvtneps2bf16' {AVX512_BF16+VL}.
977
+ kIdVcvtpd2dq, //!< Instruction 'vcvtpd2dq' {AVX|AVX512_F+VL}.
978
+ kIdVcvtpd2ph, //!< Instruction 'vcvtpd2ph' {AVX512_FP16+VL}.
979
+ kIdVcvtpd2ps, //!< Instruction 'vcvtpd2ps' {AVX|AVX512_F+VL}.
980
+ kIdVcvtpd2qq, //!< Instruction 'vcvtpd2qq' {AVX512_DQ+VL}.
981
+ kIdVcvtpd2udq, //!< Instruction 'vcvtpd2udq' {AVX512_F+VL}.
982
+ kIdVcvtpd2uqq, //!< Instruction 'vcvtpd2uqq' {AVX512_DQ+VL}.
983
+ kIdVcvtph2dq, //!< Instruction 'vcvtph2dq' {AVX512_FP16+VL}.
984
+ kIdVcvtph2pd, //!< Instruction 'vcvtph2pd' {AVX512_FP16+VL}.
985
+ kIdVcvtph2ps, //!< Instruction 'vcvtph2ps' {AVX512_F+VL & F16C}.
986
+ kIdVcvtph2psx, //!< Instruction 'vcvtph2psx' {AVX512_FP16+VL}.
987
+ kIdVcvtph2qq, //!< Instruction 'vcvtph2qq' {AVX512_FP16+VL}.
988
+ kIdVcvtph2udq, //!< Instruction 'vcvtph2udq' {AVX512_FP16+VL}.
989
+ kIdVcvtph2uqq, //!< Instruction 'vcvtph2uqq' {AVX512_FP16+VL}.
990
+ kIdVcvtph2uw, //!< Instruction 'vcvtph2uw' {AVX512_FP16+VL}.
991
+ kIdVcvtph2w, //!< Instruction 'vcvtph2w' {AVX512_FP16+VL}.
992
+ kIdVcvtps2dq, //!< Instruction 'vcvtps2dq' {AVX|AVX512_F+VL}.
993
+ kIdVcvtps2pd, //!< Instruction 'vcvtps2pd' {AVX|AVX512_F+VL}.
994
+ kIdVcvtps2ph, //!< Instruction 'vcvtps2ph' {AVX512_F+VL & F16C}.
995
+ kIdVcvtps2phx, //!< Instruction 'vcvtps2phx' {AVX512_FP16+VL}.
996
+ kIdVcvtps2qq, //!< Instruction 'vcvtps2qq' {AVX512_DQ+VL}.
997
+ kIdVcvtps2udq, //!< Instruction 'vcvtps2udq' {AVX512_F+VL}.
998
+ kIdVcvtps2uqq, //!< Instruction 'vcvtps2uqq' {AVX512_DQ+VL}.
999
+ kIdVcvtqq2pd, //!< Instruction 'vcvtqq2pd' {AVX512_DQ+VL}.
1000
+ kIdVcvtqq2ph, //!< Instruction 'vcvtqq2ph' {AVX512_FP16+VL}.
1001
+ kIdVcvtqq2ps, //!< Instruction 'vcvtqq2ps' {AVX512_DQ+VL}.
1002
+ kIdVcvtsd2sh, //!< Instruction 'vcvtsd2sh' {AVX512_FP16}.
1003
+ kIdVcvtsd2si, //!< Instruction 'vcvtsd2si' {AVX|AVX512_F}.
1004
+ kIdVcvtsd2ss, //!< Instruction 'vcvtsd2ss' {AVX|AVX512_F}.
1005
+ kIdVcvtsd2usi, //!< Instruction 'vcvtsd2usi' {AVX512_F}.
1006
+ kIdVcvtsh2sd, //!< Instruction 'vcvtsh2sd' {AVX512_FP16}.
1007
+ kIdVcvtsh2si, //!< Instruction 'vcvtsh2si' {AVX512_FP16}.
1008
+ kIdVcvtsh2ss, //!< Instruction 'vcvtsh2ss' {AVX512_FP16}.
1009
+ kIdVcvtsh2usi, //!< Instruction 'vcvtsh2usi' {AVX512_FP16}.
1010
+ kIdVcvtsi2sd, //!< Instruction 'vcvtsi2sd' {AVX|AVX512_F}.
1011
+ kIdVcvtsi2sh, //!< Instruction 'vcvtsi2sh' {AVX512_FP16}.
1012
+ kIdVcvtsi2ss, //!< Instruction 'vcvtsi2ss' {AVX|AVX512_F}.
1013
+ kIdVcvtss2sd, //!< Instruction 'vcvtss2sd' {AVX|AVX512_F}.
1014
+ kIdVcvtss2sh, //!< Instruction 'vcvtss2sh' {AVX512_FP16}.
1015
+ kIdVcvtss2si, //!< Instruction 'vcvtss2si' {AVX|AVX512_F}.
1016
+ kIdVcvtss2usi, //!< Instruction 'vcvtss2usi' {AVX512_F}.
1017
+ kIdVcvttpd2dq, //!< Instruction 'vcvttpd2dq' {AVX|AVX512_F+VL}.
1018
+ kIdVcvttpd2qq, //!< Instruction 'vcvttpd2qq' {AVX512_F+VL}.
1019
+ kIdVcvttpd2udq, //!< Instruction 'vcvttpd2udq' {AVX512_F+VL}.
1020
+ kIdVcvttpd2uqq, //!< Instruction 'vcvttpd2uqq' {AVX512_DQ+VL}.
1021
+ kIdVcvttph2dq, //!< Instruction 'vcvttph2dq' {AVX512_FP16+VL}.
1022
+ kIdVcvttph2qq, //!< Instruction 'vcvttph2qq' {AVX512_FP16+VL}.
1023
+ kIdVcvttph2udq, //!< Instruction 'vcvttph2udq' {AVX512_FP16+VL}.
1024
+ kIdVcvttph2uqq, //!< Instruction 'vcvttph2uqq' {AVX512_FP16+VL}.
1025
+ kIdVcvttph2uw, //!< Instruction 'vcvttph2uw' {AVX512_FP16+VL}.
1026
+ kIdVcvttph2w, //!< Instruction 'vcvttph2w' {AVX512_FP16+VL}.
1027
+ kIdVcvttps2dq, //!< Instruction 'vcvttps2dq' {AVX|AVX512_F+VL}.
1028
+ kIdVcvttps2qq, //!< Instruction 'vcvttps2qq' {AVX512_DQ+VL}.
1029
+ kIdVcvttps2udq, //!< Instruction 'vcvttps2udq' {AVX512_F+VL}.
1030
+ kIdVcvttps2uqq, //!< Instruction 'vcvttps2uqq' {AVX512_DQ+VL}.
1031
+ kIdVcvttsd2si, //!< Instruction 'vcvttsd2si' {AVX|AVX512_F}.
1032
+ kIdVcvttsd2usi, //!< Instruction 'vcvttsd2usi' {AVX512_F}.
1033
+ kIdVcvttsh2si, //!< Instruction 'vcvttsh2si' {AVX512_FP16}.
1034
+ kIdVcvttsh2usi, //!< Instruction 'vcvttsh2usi' {AVX512_FP16}.
1035
+ kIdVcvttss2si, //!< Instruction 'vcvttss2si' {AVX|AVX512_F}.
1036
+ kIdVcvttss2usi, //!< Instruction 'vcvttss2usi' {AVX512_F}.
1037
+ kIdVcvtudq2pd, //!< Instruction 'vcvtudq2pd' {AVX512_F+VL}.
1038
+ kIdVcvtudq2ph, //!< Instruction 'vcvtudq2ph' {AVX512_FP16+VL}.
1039
+ kIdVcvtudq2ps, //!< Instruction 'vcvtudq2ps' {AVX512_F+VL}.
1040
+ kIdVcvtuqq2pd, //!< Instruction 'vcvtuqq2pd' {AVX512_DQ+VL}.
1041
+ kIdVcvtuqq2ph, //!< Instruction 'vcvtuqq2ph' {AVX512_FP16+VL}.
1042
+ kIdVcvtuqq2ps, //!< Instruction 'vcvtuqq2ps' {AVX512_DQ+VL}.
1043
+ kIdVcvtusi2sd, //!< Instruction 'vcvtusi2sd' {AVX512_F}.
1044
+ kIdVcvtusi2sh, //!< Instruction 'vcvtusi2sh' {AVX512_FP16}.
1045
+ kIdVcvtusi2ss, //!< Instruction 'vcvtusi2ss' {AVX512_F}.
1046
+ kIdVcvtuw2ph, //!< Instruction 'vcvtuw2ph' {AVX512_FP16+VL}.
1047
+ kIdVcvtw2ph, //!< Instruction 'vcvtw2ph' {AVX512_FP16+VL}.
1048
+ kIdVdbpsadbw, //!< Instruction 'vdbpsadbw' {AVX512_BW+VL}.
1049
+ kIdVdivpd, //!< Instruction 'vdivpd' {AVX|AVX512_F+VL}.
1050
+ kIdVdivph, //!< Instruction 'vdivph' {AVX512_FP16+VL}.
1051
+ kIdVdivps, //!< Instruction 'vdivps' {AVX|AVX512_F+VL}.
1052
+ kIdVdivsd, //!< Instruction 'vdivsd' {AVX|AVX512_F}.
1053
+ kIdVdivsh, //!< Instruction 'vdivsh' {AVX512_FP16}.
1054
+ kIdVdivss, //!< Instruction 'vdivss' {AVX|AVX512_F}.
1055
+ kIdVdpbf16ps, //!< Instruction 'vdpbf16ps' {AVX512_BF16+VL}.
1056
+ kIdVdppd, //!< Instruction 'vdppd' {AVX}.
1057
+ kIdVdpps, //!< Instruction 'vdpps' {AVX}.
1058
+ kIdVerr, //!< Instruction 'verr'.
1059
+ kIdVerw, //!< Instruction 'verw'.
1060
+ kIdVexp2pd, //!< Instruction 'vexp2pd' {AVX512_ERI}.
1061
+ kIdVexp2ps, //!< Instruction 'vexp2ps' {AVX512_ERI}.
1062
+ kIdVexpandpd, //!< Instruction 'vexpandpd' {AVX512_F+VL}.
1063
+ kIdVexpandps, //!< Instruction 'vexpandps' {AVX512_F+VL}.
1064
+ kIdVextractf128, //!< Instruction 'vextractf128' {AVX}.
1065
+ kIdVextractf32x4, //!< Instruction 'vextractf32x4' {AVX512_F+VL}.
1066
+ kIdVextractf32x8, //!< Instruction 'vextractf32x8' {AVX512_DQ}.
1067
+ kIdVextractf64x2, //!< Instruction 'vextractf64x2' {AVX512_DQ+VL}.
1068
+ kIdVextractf64x4, //!< Instruction 'vextractf64x4' {AVX512_F}.
1069
+ kIdVextracti128, //!< Instruction 'vextracti128' {AVX2}.
1070
+ kIdVextracti32x4, //!< Instruction 'vextracti32x4' {AVX512_F+VL}.
1071
+ kIdVextracti32x8, //!< Instruction 'vextracti32x8' {AVX512_DQ}.
1072
+ kIdVextracti64x2, //!< Instruction 'vextracti64x2' {AVX512_DQ+VL}.
1073
+ kIdVextracti64x4, //!< Instruction 'vextracti64x4' {AVX512_F}.
1074
+ kIdVextractps, //!< Instruction 'vextractps' {AVX|AVX512_F}.
1075
+ kIdVfcmaddcph, //!< Instruction 'vfcmaddcph' {AVX512_FP16+VL}.
1076
+ kIdVfcmaddcsh, //!< Instruction 'vfcmaddcsh' {AVX512_FP16+VL}.
1077
+ kIdVfcmulcph, //!< Instruction 'vfcmulcph' {AVX512_FP16+VL}.
1078
+ kIdVfcmulcsh, //!< Instruction 'vfcmulcsh' {AVX512_FP16+VL}.
1079
+ kIdVfixupimmpd, //!< Instruction 'vfixupimmpd' {AVX512_F+VL}.
1080
+ kIdVfixupimmps, //!< Instruction 'vfixupimmps' {AVX512_F+VL}.
1081
+ kIdVfixupimmsd, //!< Instruction 'vfixupimmsd' {AVX512_F}.
1082
+ kIdVfixupimmss, //!< Instruction 'vfixupimmss' {AVX512_F}.
1083
+ kIdVfmadd132pd, //!< Instruction 'vfmadd132pd' {FMA|AVX512_F+VL}.
1084
+ kIdVfmadd132ph, //!< Instruction 'vfmadd132ph' {AVX512_FP16+VL}.
1085
+ kIdVfmadd132ps, //!< Instruction 'vfmadd132ps' {FMA|AVX512_F+VL}.
1086
+ kIdVfmadd132sd, //!< Instruction 'vfmadd132sd' {FMA|AVX512_F}.
1087
+ kIdVfmadd132sh, //!< Instruction 'vfmadd132sh' {AVX512_FP16}.
1088
+ kIdVfmadd132ss, //!< Instruction 'vfmadd132ss' {FMA|AVX512_F}.
1089
+ kIdVfmadd213pd, //!< Instruction 'vfmadd213pd' {FMA|AVX512_F+VL}.
1090
+ kIdVfmadd213ph, //!< Instruction 'vfmadd213ph' {AVX512_FP16+VL}.
1091
+ kIdVfmadd213ps, //!< Instruction 'vfmadd213ps' {FMA|AVX512_F+VL}.
1092
+ kIdVfmadd213sd, //!< Instruction 'vfmadd213sd' {FMA|AVX512_F}.
1093
+ kIdVfmadd213sh, //!< Instruction 'vfmadd213sh' {AVX512_FP16}.
1094
+ kIdVfmadd213ss, //!< Instruction 'vfmadd213ss' {FMA|AVX512_F}.
1095
+ kIdVfmadd231pd, //!< Instruction 'vfmadd231pd' {FMA|AVX512_F+VL}.
1096
+ kIdVfmadd231ph, //!< Instruction 'vfmadd231ph' {AVX512_FP16+VL}.
1097
+ kIdVfmadd231ps, //!< Instruction 'vfmadd231ps' {FMA|AVX512_F+VL}.
1098
+ kIdVfmadd231sd, //!< Instruction 'vfmadd231sd' {FMA|AVX512_F}.
1099
+ kIdVfmadd231sh, //!< Instruction 'vfmadd231sh' {AVX512_FP16}.
1100
+ kIdVfmadd231ss, //!< Instruction 'vfmadd231ss' {FMA|AVX512_F}.
1101
+ kIdVfmaddcph, //!< Instruction 'vfmaddcph' {AVX512_FP16+VL}.
1102
+ kIdVfmaddcsh, //!< Instruction 'vfmaddcsh' {AVX512_FP16+VL}.
1103
+ kIdVfmaddpd, //!< Instruction 'vfmaddpd' {FMA4}.
1104
+ kIdVfmaddps, //!< Instruction 'vfmaddps' {FMA4}.
1105
+ kIdVfmaddsd, //!< Instruction 'vfmaddsd' {FMA4}.
1106
+ kIdVfmaddss, //!< Instruction 'vfmaddss' {FMA4}.
1107
+ kIdVfmaddsub132pd, //!< Instruction 'vfmaddsub132pd' {FMA|AVX512_F+VL}.
1108
+ kIdVfmaddsub132ph, //!< Instruction 'vfmaddsub132ph' {AVX512_FP16+VL}.
1109
+ kIdVfmaddsub132ps, //!< Instruction 'vfmaddsub132ps' {FMA|AVX512_F+VL}.
1110
+ kIdVfmaddsub213pd, //!< Instruction 'vfmaddsub213pd' {FMA|AVX512_F+VL}.
1111
+ kIdVfmaddsub213ph, //!< Instruction 'vfmaddsub213ph' {AVX512_FP16+VL}.
1112
+ kIdVfmaddsub213ps, //!< Instruction 'vfmaddsub213ps' {FMA|AVX512_F+VL}.
1113
+ kIdVfmaddsub231pd, //!< Instruction 'vfmaddsub231pd' {FMA|AVX512_F+VL}.
1114
+ kIdVfmaddsub231ph, //!< Instruction 'vfmaddsub231ph' {AVX512_FP16+VL}.
1115
+ kIdVfmaddsub231ps, //!< Instruction 'vfmaddsub231ps' {FMA|AVX512_F+VL}.
1116
+ kIdVfmaddsubpd, //!< Instruction 'vfmaddsubpd' {FMA4}.
1117
+ kIdVfmaddsubps, //!< Instruction 'vfmaddsubps' {FMA4}.
1118
+ kIdVfmsub132pd, //!< Instruction 'vfmsub132pd' {FMA|AVX512_F+VL}.
1119
+ kIdVfmsub132ph, //!< Instruction 'vfmsub132ph' {AVX512_FP16+VL}.
1120
+ kIdVfmsub132ps, //!< Instruction 'vfmsub132ps' {FMA|AVX512_F+VL}.
1121
+ kIdVfmsub132sd, //!< Instruction 'vfmsub132sd' {FMA|AVX512_F}.
1122
+ kIdVfmsub132sh, //!< Instruction 'vfmsub132sh' {AVX512_FP16}.
1123
+ kIdVfmsub132ss, //!< Instruction 'vfmsub132ss' {FMA|AVX512_F}.
1124
+ kIdVfmsub213pd, //!< Instruction 'vfmsub213pd' {FMA|AVX512_F+VL}.
1125
+ kIdVfmsub213ph, //!< Instruction 'vfmsub213ph' {AVX512_FP16+VL}.
1126
+ kIdVfmsub213ps, //!< Instruction 'vfmsub213ps' {FMA|AVX512_F+VL}.
1127
+ kIdVfmsub213sd, //!< Instruction 'vfmsub213sd' {FMA|AVX512_F}.
1128
+ kIdVfmsub213sh, //!< Instruction 'vfmsub213sh' {AVX512_FP16}.
1129
+ kIdVfmsub213ss, //!< Instruction 'vfmsub213ss' {FMA|AVX512_F}.
1130
+ kIdVfmsub231pd, //!< Instruction 'vfmsub231pd' {FMA|AVX512_F+VL}.
1131
+ kIdVfmsub231ph, //!< Instruction 'vfmsub231ph' {AVX512_FP16+VL}.
1132
+ kIdVfmsub231ps, //!< Instruction 'vfmsub231ps' {FMA|AVX512_F+VL}.
1133
+ kIdVfmsub231sd, //!< Instruction 'vfmsub231sd' {FMA|AVX512_F}.
1134
+ kIdVfmsub231sh, //!< Instruction 'vfmsub231sh' {AVX512_FP16}.
1135
+ kIdVfmsub231ss, //!< Instruction 'vfmsub231ss' {FMA|AVX512_F}.
1136
+ kIdVfmsubadd132pd, //!< Instruction 'vfmsubadd132pd' {FMA|AVX512_F+VL}.
1137
+ kIdVfmsubadd132ph, //!< Instruction 'vfmsubadd132ph' {AVX512_FP16+VL}.
1138
+ kIdVfmsubadd132ps, //!< Instruction 'vfmsubadd132ps' {FMA|AVX512_F+VL}.
1139
+ kIdVfmsubadd213pd, //!< Instruction 'vfmsubadd213pd' {FMA|AVX512_F+VL}.
1140
+ kIdVfmsubadd213ph, //!< Instruction 'vfmsubadd213ph' {AVX512_FP16+VL}.
1141
+ kIdVfmsubadd213ps, //!< Instruction 'vfmsubadd213ps' {FMA|AVX512_F+VL}.
1142
+ kIdVfmsubadd231pd, //!< Instruction 'vfmsubadd231pd' {FMA|AVX512_F+VL}.
1143
+ kIdVfmsubadd231ph, //!< Instruction 'vfmsubadd231ph' {AVX512_FP16+VL}.
1144
+ kIdVfmsubadd231ps, //!< Instruction 'vfmsubadd231ps' {FMA|AVX512_F+VL}.
1145
+ kIdVfmsubaddpd, //!< Instruction 'vfmsubaddpd' {FMA4}.
1146
+ kIdVfmsubaddps, //!< Instruction 'vfmsubaddps' {FMA4}.
1147
+ kIdVfmsubpd, //!< Instruction 'vfmsubpd' {FMA4}.
1148
+ kIdVfmsubps, //!< Instruction 'vfmsubps' {FMA4}.
1149
+ kIdVfmsubsd, //!< Instruction 'vfmsubsd' {FMA4}.
1150
+ kIdVfmsubss, //!< Instruction 'vfmsubss' {FMA4}.
1151
+ kIdVfmulcph, //!< Instruction 'vfmulcph' {AVX512_FP16+VL}.
1152
+ kIdVfmulcsh, //!< Instruction 'vfmulcsh' {AVX512_FP16+VL}.
1153
+ kIdVfnmadd132pd, //!< Instruction 'vfnmadd132pd' {FMA|AVX512_F+VL}.
1154
+ kIdVfnmadd132ph, //!< Instruction 'vfnmadd132ph' {AVX512_FP16+VL}.
1155
+ kIdVfnmadd132ps, //!< Instruction 'vfnmadd132ps' {FMA|AVX512_F+VL}.
1156
+ kIdVfnmadd132sd, //!< Instruction 'vfnmadd132sd' {FMA|AVX512_F}.
1157
+ kIdVfnmadd132sh, //!< Instruction 'vfnmadd132sh' {AVX512_FP16}.
1158
+ kIdVfnmadd132ss, //!< Instruction 'vfnmadd132ss' {FMA|AVX512_F}.
1159
+ kIdVfnmadd213pd, //!< Instruction 'vfnmadd213pd' {FMA|AVX512_F+VL}.
1160
+ kIdVfnmadd213ph, //!< Instruction 'vfnmadd213ph' {AVX512_FP16+VL}.
1161
+ kIdVfnmadd213ps, //!< Instruction 'vfnmadd213ps' {FMA|AVX512_F+VL}.
1162
+ kIdVfnmadd213sd, //!< Instruction 'vfnmadd213sd' {FMA|AVX512_F}.
1163
+ kIdVfnmadd213sh, //!< Instruction 'vfnmadd213sh' {AVX512_FP16}.
1164
+ kIdVfnmadd213ss, //!< Instruction 'vfnmadd213ss' {FMA|AVX512_F}.
1165
+ kIdVfnmadd231pd, //!< Instruction 'vfnmadd231pd' {FMA|AVX512_F+VL}.
1166
+ kIdVfnmadd231ph, //!< Instruction 'vfnmadd231ph' {AVX512_FP16+VL}.
1167
+ kIdVfnmadd231ps, //!< Instruction 'vfnmadd231ps' {FMA|AVX512_F+VL}.
1168
+ kIdVfnmadd231sd, //!< Instruction 'vfnmadd231sd' {FMA|AVX512_F}.
1169
+ kIdVfnmadd231sh, //!< Instruction 'vfnmadd231sh' {AVX512_FP16}.
1170
+ kIdVfnmadd231ss, //!< Instruction 'vfnmadd231ss' {FMA|AVX512_F}.
1171
+ kIdVfnmaddpd, //!< Instruction 'vfnmaddpd' {FMA4}.
1172
+ kIdVfnmaddps, //!< Instruction 'vfnmaddps' {FMA4}.
1173
+ kIdVfnmaddsd, //!< Instruction 'vfnmaddsd' {FMA4}.
1174
+ kIdVfnmaddss, //!< Instruction 'vfnmaddss' {FMA4}.
1175
+ kIdVfnmsub132pd, //!< Instruction 'vfnmsub132pd' {FMA|AVX512_F+VL}.
1176
+ kIdVfnmsub132ph, //!< Instruction 'vfnmsub132ph' {AVX512_FP16+VL}.
1177
+ kIdVfnmsub132ps, //!< Instruction 'vfnmsub132ps' {FMA|AVX512_F+VL}.
1178
+ kIdVfnmsub132sd, //!< Instruction 'vfnmsub132sd' {FMA|AVX512_F}.
1179
+ kIdVfnmsub132sh, //!< Instruction 'vfnmsub132sh' {AVX512_FP16}.
1180
+ kIdVfnmsub132ss, //!< Instruction 'vfnmsub132ss' {FMA|AVX512_F}.
1181
+ kIdVfnmsub213pd, //!< Instruction 'vfnmsub213pd' {FMA|AVX512_F+VL}.
1182
+ kIdVfnmsub213ph, //!< Instruction 'vfnmsub213ph' {AVX512_FP16+VL}.
1183
+ kIdVfnmsub213ps, //!< Instruction 'vfnmsub213ps' {FMA|AVX512_F+VL}.
1184
+ kIdVfnmsub213sd, //!< Instruction 'vfnmsub213sd' {FMA|AVX512_F}.
1185
+ kIdVfnmsub213sh, //!< Instruction 'vfnmsub213sh' {AVX512_FP16}.
1186
+ kIdVfnmsub213ss, //!< Instruction 'vfnmsub213ss' {FMA|AVX512_F}.
1187
+ kIdVfnmsub231pd, //!< Instruction 'vfnmsub231pd' {FMA|AVX512_F+VL}.
1188
+ kIdVfnmsub231ph, //!< Instruction 'vfnmsub231ph' {AVX512_FP16+VL}.
1189
+ kIdVfnmsub231ps, //!< Instruction 'vfnmsub231ps' {FMA|AVX512_F+VL}.
1190
+ kIdVfnmsub231sd, //!< Instruction 'vfnmsub231sd' {FMA|AVX512_F}.
1191
+ kIdVfnmsub231sh, //!< Instruction 'vfnmsub231sh' {AVX512_FP16}.
1192
+ kIdVfnmsub231ss, //!< Instruction 'vfnmsub231ss' {FMA|AVX512_F}.
1193
+ kIdVfnmsubpd, //!< Instruction 'vfnmsubpd' {FMA4}.
1194
+ kIdVfnmsubps, //!< Instruction 'vfnmsubps' {FMA4}.
1195
+ kIdVfnmsubsd, //!< Instruction 'vfnmsubsd' {FMA4}.
1196
+ kIdVfnmsubss, //!< Instruction 'vfnmsubss' {FMA4}.
1197
+ kIdVfpclasspd, //!< Instruction 'vfpclasspd' {AVX512_DQ+VL}.
1198
+ kIdVfpclassph, //!< Instruction 'vfpclassph' {AVX512_FP16+VL}.
1199
+ kIdVfpclassps, //!< Instruction 'vfpclassps' {AVX512_DQ+VL}.
1200
+ kIdVfpclasssd, //!< Instruction 'vfpclasssd' {AVX512_DQ}.
1201
+ kIdVfpclasssh, //!< Instruction 'vfpclasssh' {AVX512_FP16}.
1202
+ kIdVfpclassss, //!< Instruction 'vfpclassss' {AVX512_DQ}.
1203
+ kIdVfrczpd, //!< Instruction 'vfrczpd' {XOP}.
1204
+ kIdVfrczps, //!< Instruction 'vfrczps' {XOP}.
1205
+ kIdVfrczsd, //!< Instruction 'vfrczsd' {XOP}.
1206
+ kIdVfrczss, //!< Instruction 'vfrczss' {XOP}.
1207
+ kIdVgatherdpd, //!< Instruction 'vgatherdpd' {AVX2|AVX512_F+VL}.
1208
+ kIdVgatherdps, //!< Instruction 'vgatherdps' {AVX2|AVX512_F+VL}.
1209
+ kIdVgatherpf0dpd, //!< Instruction 'vgatherpf0dpd' {AVX512_PFI}.
1210
+ kIdVgatherpf0dps, //!< Instruction 'vgatherpf0dps' {AVX512_PFI}.
1211
+ kIdVgatherpf0qpd, //!< Instruction 'vgatherpf0qpd' {AVX512_PFI}.
1212
+ kIdVgatherpf0qps, //!< Instruction 'vgatherpf0qps' {AVX512_PFI}.
1213
+ kIdVgatherpf1dpd, //!< Instruction 'vgatherpf1dpd' {AVX512_PFI}.
1214
+ kIdVgatherpf1dps, //!< Instruction 'vgatherpf1dps' {AVX512_PFI}.
1215
+ kIdVgatherpf1qpd, //!< Instruction 'vgatherpf1qpd' {AVX512_PFI}.
1216
+ kIdVgatherpf1qps, //!< Instruction 'vgatherpf1qps' {AVX512_PFI}.
1217
+ kIdVgatherqpd, //!< Instruction 'vgatherqpd' {AVX2|AVX512_F+VL}.
1218
+ kIdVgatherqps, //!< Instruction 'vgatherqps' {AVX2|AVX512_F+VL}.
1219
+ kIdVgetexppd, //!< Instruction 'vgetexppd' {AVX512_F+VL}.
1220
+ kIdVgetexpph, //!< Instruction 'vgetexpph' {AVX512_FP16+VL}.
1221
+ kIdVgetexpps, //!< Instruction 'vgetexpps' {AVX512_F+VL}.
1222
+ kIdVgetexpsd, //!< Instruction 'vgetexpsd' {AVX512_F}.
1223
+ kIdVgetexpsh, //!< Instruction 'vgetexpsh' {AVX512_FP16}.
1224
+ kIdVgetexpss, //!< Instruction 'vgetexpss' {AVX512_F}.
1225
+ kIdVgetmantpd, //!< Instruction 'vgetmantpd' {AVX512_F+VL}.
1226
+ kIdVgetmantph, //!< Instruction 'vgetmantph' {AVX512_FP16+VL}.
1227
+ kIdVgetmantps, //!< Instruction 'vgetmantps' {AVX512_F+VL}.
1228
+ kIdVgetmantsd, //!< Instruction 'vgetmantsd' {AVX512_F}.
1229
+ kIdVgetmantsh, //!< Instruction 'vgetmantsh' {AVX512_FP16}.
1230
+ kIdVgetmantss, //!< Instruction 'vgetmantss' {AVX512_F}.
1231
+ kIdVgf2p8affineinvqb, //!< Instruction 'vgf2p8affineinvqb' {AVX|AVX512_F+VL & GFNI}.
1232
+ kIdVgf2p8affineqb, //!< Instruction 'vgf2p8affineqb' {AVX|AVX512_F+VL & GFNI}.
1233
+ kIdVgf2p8mulb, //!< Instruction 'vgf2p8mulb' {AVX|AVX512_F+VL & GFNI}.
1234
+ kIdVhaddpd, //!< Instruction 'vhaddpd' {AVX}.
1235
+ kIdVhaddps, //!< Instruction 'vhaddps' {AVX}.
1236
+ kIdVhsubpd, //!< Instruction 'vhsubpd' {AVX}.
1237
+ kIdVhsubps, //!< Instruction 'vhsubps' {AVX}.
1238
+ kIdVinsertf128, //!< Instruction 'vinsertf128' {AVX}.
1239
+ kIdVinsertf32x4, //!< Instruction 'vinsertf32x4' {AVX512_F+VL}.
1240
+ kIdVinsertf32x8, //!< Instruction 'vinsertf32x8' {AVX512_DQ}.
1241
+ kIdVinsertf64x2, //!< Instruction 'vinsertf64x2' {AVX512_DQ+VL}.
1242
+ kIdVinsertf64x4, //!< Instruction 'vinsertf64x4' {AVX512_F}.
1243
+ kIdVinserti128, //!< Instruction 'vinserti128' {AVX2}.
1244
+ kIdVinserti32x4, //!< Instruction 'vinserti32x4' {AVX512_F+VL}.
1245
+ kIdVinserti32x8, //!< Instruction 'vinserti32x8' {AVX512_DQ}.
1246
+ kIdVinserti64x2, //!< Instruction 'vinserti64x2' {AVX512_DQ+VL}.
1247
+ kIdVinserti64x4, //!< Instruction 'vinserti64x4' {AVX512_F}.
1248
+ kIdVinsertps, //!< Instruction 'vinsertps' {AVX|AVX512_F}.
1249
+ kIdVlddqu, //!< Instruction 'vlddqu' {AVX}.
1250
+ kIdVldmxcsr, //!< Instruction 'vldmxcsr' {AVX}.
1251
+ kIdVmaskmovdqu, //!< Instruction 'vmaskmovdqu' {AVX}.
1252
+ kIdVmaskmovpd, //!< Instruction 'vmaskmovpd' {AVX}.
1253
+ kIdVmaskmovps, //!< Instruction 'vmaskmovps' {AVX}.
1254
+ kIdVmaxpd, //!< Instruction 'vmaxpd' {AVX|AVX512_F+VL}.
1255
+ kIdVmaxph, //!< Instruction 'vmaxph' {AVX512_FP16+VL}.
1256
+ kIdVmaxps, //!< Instruction 'vmaxps' {AVX|AVX512_F+VL}.
1257
+ kIdVmaxsd, //!< Instruction 'vmaxsd' {AVX|AVX512_F+VL}.
1258
+ kIdVmaxsh, //!< Instruction 'vmaxsh' {AVX512_FP16}.
1259
+ kIdVmaxss, //!< Instruction 'vmaxss' {AVX|AVX512_F+VL}.
1260
+ kIdVmcall, //!< Instruction 'vmcall' {VMX}.
1261
+ kIdVmclear, //!< Instruction 'vmclear' {VMX}.
1262
+ kIdVmfunc, //!< Instruction 'vmfunc' {VMX}.
1263
+ kIdVminpd, //!< Instruction 'vminpd' {AVX|AVX512_F+VL}.
1264
+ kIdVminph, //!< Instruction 'vminph' {AVX512_FP16+VL}.
1265
+ kIdVminps, //!< Instruction 'vminps' {AVX|AVX512_F+VL}.
1266
+ kIdVminsd, //!< Instruction 'vminsd' {AVX|AVX512_F+VL}.
1267
+ kIdVminsh, //!< Instruction 'vminsh' {AVX512_FP16}.
1268
+ kIdVminss, //!< Instruction 'vminss' {AVX|AVX512_F+VL}.
1269
+ kIdVmlaunch, //!< Instruction 'vmlaunch' {VMX}.
1270
+ kIdVmload, //!< Instruction 'vmload' {SVM}.
1271
+ kIdVmmcall, //!< Instruction 'vmmcall' {SVM}.
1272
+ kIdVmovapd, //!< Instruction 'vmovapd' {AVX|AVX512_F+VL}.
1273
+ kIdVmovaps, //!< Instruction 'vmovaps' {AVX|AVX512_F+VL}.
1274
+ kIdVmovd, //!< Instruction 'vmovd' {AVX|AVX512_F}.
1275
+ kIdVmovddup, //!< Instruction 'vmovddup' {AVX|AVX512_F+VL}.
1276
+ kIdVmovdqa, //!< Instruction 'vmovdqa' {AVX}.
1277
+ kIdVmovdqa32, //!< Instruction 'vmovdqa32' {AVX512_F+VL}.
1278
+ kIdVmovdqa64, //!< Instruction 'vmovdqa64' {AVX512_F+VL}.
1279
+ kIdVmovdqu, //!< Instruction 'vmovdqu' {AVX}.
1280
+ kIdVmovdqu16, //!< Instruction 'vmovdqu16' {AVX512_BW+VL}.
1281
+ kIdVmovdqu32, //!< Instruction 'vmovdqu32' {AVX512_F+VL}.
1282
+ kIdVmovdqu64, //!< Instruction 'vmovdqu64' {AVX512_F+VL}.
1283
+ kIdVmovdqu8, //!< Instruction 'vmovdqu8' {AVX512_BW+VL}.
1284
+ kIdVmovhlps, //!< Instruction 'vmovhlps' {AVX|AVX512_F}.
1285
+ kIdVmovhpd, //!< Instruction 'vmovhpd' {AVX|AVX512_F}.
1286
+ kIdVmovhps, //!< Instruction 'vmovhps' {AVX|AVX512_F}.
1287
+ kIdVmovlhps, //!< Instruction 'vmovlhps' {AVX|AVX512_F}.
1288
+ kIdVmovlpd, //!< Instruction 'vmovlpd' {AVX|AVX512_F}.
1289
+ kIdVmovlps, //!< Instruction 'vmovlps' {AVX|AVX512_F}.
1290
+ kIdVmovmskpd, //!< Instruction 'vmovmskpd' {AVX}.
1291
+ kIdVmovmskps, //!< Instruction 'vmovmskps' {AVX}.
1292
+ kIdVmovntdq, //!< Instruction 'vmovntdq' {AVX|AVX512_F+VL}.
1293
+ kIdVmovntdqa, //!< Instruction 'vmovntdqa' {AVX|AVX2|AVX512_F+VL}.
1294
+ kIdVmovntpd, //!< Instruction 'vmovntpd' {AVX|AVX512_F+VL}.
1295
+ kIdVmovntps, //!< Instruction 'vmovntps' {AVX|AVX512_F+VL}.
1296
+ kIdVmovq, //!< Instruction 'vmovq' {AVX|AVX512_F}.
1297
+ kIdVmovsd, //!< Instruction 'vmovsd' {AVX|AVX512_F}.
1298
+ kIdVmovsh, //!< Instruction 'vmovsh' {AVX512_FP16}.
1299
+ kIdVmovshdup, //!< Instruction 'vmovshdup' {AVX|AVX512_F+VL}.
1300
+ kIdVmovsldup, //!< Instruction 'vmovsldup' {AVX|AVX512_F+VL}.
1301
+ kIdVmovss, //!< Instruction 'vmovss' {AVX|AVX512_F}.
1302
+ kIdVmovupd, //!< Instruction 'vmovupd' {AVX|AVX512_F+VL}.
1303
+ kIdVmovups, //!< Instruction 'vmovups' {AVX|AVX512_F+VL}.
1304
+ kIdVmovw, //!< Instruction 'vmovw' {AVX512_FP16}.
1305
+ kIdVmpsadbw, //!< Instruction 'vmpsadbw' {AVX|AVX2}.
1306
+ kIdVmptrld, //!< Instruction 'vmptrld' {VMX}.
1307
+ kIdVmptrst, //!< Instruction 'vmptrst' {VMX}.
1308
+ kIdVmread, //!< Instruction 'vmread' {VMX}.
1309
+ kIdVmresume, //!< Instruction 'vmresume' {VMX}.
1310
+ kIdVmrun, //!< Instruction 'vmrun' {SVM}.
1311
+ kIdVmsave, //!< Instruction 'vmsave' {SVM}.
1312
+ kIdVmulpd, //!< Instruction 'vmulpd' {AVX|AVX512_F+VL}.
1313
+ kIdVmulph, //!< Instruction 'vmulph' {AVX512_FP16+VL}.
1314
+ kIdVmulps, //!< Instruction 'vmulps' {AVX|AVX512_F+VL}.
1315
+ kIdVmulsd, //!< Instruction 'vmulsd' {AVX|AVX512_F}.
1316
+ kIdVmulsh, //!< Instruction 'vmulsh' {AVX512_FP16}.
1317
+ kIdVmulss, //!< Instruction 'vmulss' {AVX|AVX512_F}.
1318
+ kIdVmwrite, //!< Instruction 'vmwrite' {VMX}.
1319
+ kIdVmxon, //!< Instruction 'vmxon' {VMX}.
1320
+ kIdVorpd, //!< Instruction 'vorpd' {AVX|AVX512_DQ+VL}.
1321
+ kIdVorps, //!< Instruction 'vorps' {AVX|AVX512_DQ+VL}.
1322
+ kIdVp2intersectd, //!< Instruction 'vp2intersectd' {AVX512_VP2INTERSECT}.
1323
+ kIdVp2intersectq, //!< Instruction 'vp2intersectq' {AVX512_VP2INTERSECT}.
1324
+ kIdVp4dpwssd, //!< Instruction 'vp4dpwssd' {AVX512_4VNNIW}.
1325
+ kIdVp4dpwssds, //!< Instruction 'vp4dpwssds' {AVX512_4VNNIW}.
1326
+ kIdVpabsb, //!< Instruction 'vpabsb' {AVX|AVX2|AVX512_BW+VL}.
1327
+ kIdVpabsd, //!< Instruction 'vpabsd' {AVX|AVX2|AVX512_F+VL}.
1328
+ kIdVpabsq, //!< Instruction 'vpabsq' {AVX512_F+VL}.
1329
+ kIdVpabsw, //!< Instruction 'vpabsw' {AVX|AVX2|AVX512_BW+VL}.
1330
+ kIdVpackssdw, //!< Instruction 'vpackssdw' {AVX|AVX2|AVX512_BW+VL}.
1331
+ kIdVpacksswb, //!< Instruction 'vpacksswb' {AVX|AVX2|AVX512_BW+VL}.
1332
+ kIdVpackusdw, //!< Instruction 'vpackusdw' {AVX|AVX2|AVX512_BW+VL}.
1333
+ kIdVpackuswb, //!< Instruction 'vpackuswb' {AVX|AVX2|AVX512_BW+VL}.
1334
+ kIdVpaddb, //!< Instruction 'vpaddb' {AVX|AVX2|AVX512_BW+VL}.
1335
+ kIdVpaddd, //!< Instruction 'vpaddd' {AVX|AVX2|AVX512_F+VL}.
1336
+ kIdVpaddq, //!< Instruction 'vpaddq' {AVX|AVX2|AVX512_F+VL}.
1337
+ kIdVpaddsb, //!< Instruction 'vpaddsb' {AVX|AVX2|AVX512_BW+VL}.
1338
+ kIdVpaddsw, //!< Instruction 'vpaddsw' {AVX|AVX2|AVX512_BW+VL}.
1339
+ kIdVpaddusb, //!< Instruction 'vpaddusb' {AVX|AVX2|AVX512_BW+VL}.
1340
+ kIdVpaddusw, //!< Instruction 'vpaddusw' {AVX|AVX2|AVX512_BW+VL}.
1341
+ kIdVpaddw, //!< Instruction 'vpaddw' {AVX|AVX2|AVX512_BW+VL}.
1342
+ kIdVpalignr, //!< Instruction 'vpalignr' {AVX|AVX2|AVX512_BW+VL}.
1343
+ kIdVpand, //!< Instruction 'vpand' {AVX|AVX2}.
1344
+ kIdVpandd, //!< Instruction 'vpandd' {AVX512_F+VL}.
1345
+ kIdVpandn, //!< Instruction 'vpandn' {AVX|AVX2}.
1346
+ kIdVpandnd, //!< Instruction 'vpandnd' {AVX512_F+VL}.
1347
+ kIdVpandnq, //!< Instruction 'vpandnq' {AVX512_F+VL}.
1348
+ kIdVpandq, //!< Instruction 'vpandq' {AVX512_F+VL}.
1349
+ kIdVpavgb, //!< Instruction 'vpavgb' {AVX|AVX2|AVX512_BW+VL}.
1350
+ kIdVpavgw, //!< Instruction 'vpavgw' {AVX|AVX2|AVX512_BW+VL}.
1351
+ kIdVpblendd, //!< Instruction 'vpblendd' {AVX2}.
1352
+ kIdVpblendmb, //!< Instruction 'vpblendmb' {AVX512_BW+VL}.
1353
+ kIdVpblendmd, //!< Instruction 'vpblendmd' {AVX512_F+VL}.
1354
+ kIdVpblendmq, //!< Instruction 'vpblendmq' {AVX512_F+VL}.
1355
+ kIdVpblendmw, //!< Instruction 'vpblendmw' {AVX512_BW+VL}.
1356
+ kIdVpblendvb, //!< Instruction 'vpblendvb' {AVX|AVX2}.
1357
+ kIdVpblendw, //!< Instruction 'vpblendw' {AVX|AVX2}.
1358
+ kIdVpbroadcastb, //!< Instruction 'vpbroadcastb' {AVX2|AVX512_BW+VL}.
1359
+ kIdVpbroadcastd, //!< Instruction 'vpbroadcastd' {AVX2|AVX512_F+VL}.
1360
+ kIdVpbroadcastmb2q, //!< Instruction 'vpbroadcastmb2q' {AVX512_CDI+VL}.
1361
+ kIdVpbroadcastmw2d, //!< Instruction 'vpbroadcastmw2d' {AVX512_CDI+VL}.
1362
+ kIdVpbroadcastq, //!< Instruction 'vpbroadcastq' {AVX2|AVX512_F+VL}.
1363
+ kIdVpbroadcastw, //!< Instruction 'vpbroadcastw' {AVX2|AVX512_BW+VL}.
1364
+ kIdVpclmulqdq, //!< Instruction 'vpclmulqdq' {AVX|AVX512_F+VL & PCLMULQDQ|VPCLMULQDQ}.
1365
+ kIdVpcmov, //!< Instruction 'vpcmov' {XOP}.
1366
+ kIdVpcmpb, //!< Instruction 'vpcmpb' {AVX512_BW+VL}.
1367
+ kIdVpcmpd, //!< Instruction 'vpcmpd' {AVX512_F+VL}.
1368
+ kIdVpcmpeqb, //!< Instruction 'vpcmpeqb' {AVX|AVX2|AVX512_BW+VL}.
1369
+ kIdVpcmpeqd, //!< Instruction 'vpcmpeqd' {AVX|AVX2|AVX512_F+VL}.
1370
+ kIdVpcmpeqq, //!< Instruction 'vpcmpeqq' {AVX|AVX2|AVX512_F+VL}.
1371
+ kIdVpcmpeqw, //!< Instruction 'vpcmpeqw' {AVX|AVX2|AVX512_BW+VL}.
1372
+ kIdVpcmpestri, //!< Instruction 'vpcmpestri' {AVX}.
1373
+ kIdVpcmpestrm, //!< Instruction 'vpcmpestrm' {AVX}.
1374
+ kIdVpcmpgtb, //!< Instruction 'vpcmpgtb' {AVX|AVX2|AVX512_BW+VL}.
1375
+ kIdVpcmpgtd, //!< Instruction 'vpcmpgtd' {AVX|AVX2|AVX512_F+VL}.
1376
+ kIdVpcmpgtq, //!< Instruction 'vpcmpgtq' {AVX|AVX2|AVX512_F+VL}.
1377
+ kIdVpcmpgtw, //!< Instruction 'vpcmpgtw' {AVX|AVX2|AVX512_BW+VL}.
1378
+ kIdVpcmpistri, //!< Instruction 'vpcmpistri' {AVX}.
1379
+ kIdVpcmpistrm, //!< Instruction 'vpcmpistrm' {AVX}.
1380
+ kIdVpcmpq, //!< Instruction 'vpcmpq' {AVX512_F+VL}.
1381
+ kIdVpcmpub, //!< Instruction 'vpcmpub' {AVX512_BW+VL}.
1382
+ kIdVpcmpud, //!< Instruction 'vpcmpud' {AVX512_F+VL}.
1383
+ kIdVpcmpuq, //!< Instruction 'vpcmpuq' {AVX512_F+VL}.
1384
+ kIdVpcmpuw, //!< Instruction 'vpcmpuw' {AVX512_BW+VL}.
1385
+ kIdVpcmpw, //!< Instruction 'vpcmpw' {AVX512_BW+VL}.
1386
+ kIdVpcomb, //!< Instruction 'vpcomb' {XOP}.
1387
+ kIdVpcomd, //!< Instruction 'vpcomd' {XOP}.
1388
+ kIdVpcompressb, //!< Instruction 'vpcompressb' {AVX512_VBMI2+VL}.
1389
+ kIdVpcompressd, //!< Instruction 'vpcompressd' {AVX512_F+VL}.
1390
+ kIdVpcompressq, //!< Instruction 'vpcompressq' {AVX512_F+VL}.
1391
+ kIdVpcompressw, //!< Instruction 'vpcompressw' {AVX512_VBMI2+VL}.
1392
+ kIdVpcomq, //!< Instruction 'vpcomq' {XOP}.
1393
+ kIdVpcomub, //!< Instruction 'vpcomub' {XOP}.
1394
+ kIdVpcomud, //!< Instruction 'vpcomud' {XOP}.
1395
+ kIdVpcomuq, //!< Instruction 'vpcomuq' {XOP}.
1396
+ kIdVpcomuw, //!< Instruction 'vpcomuw' {XOP}.
1397
+ kIdVpcomw, //!< Instruction 'vpcomw' {XOP}.
1398
+ kIdVpconflictd, //!< Instruction 'vpconflictd' {AVX512_CDI+VL}.
1399
+ kIdVpconflictq, //!< Instruction 'vpconflictq' {AVX512_CDI+VL}.
1400
+ kIdVpdpbusd, //!< Instruction 'vpdpbusd' {AVX_VNNI|AVX512_VNNI+VL}.
1401
+ kIdVpdpbusds, //!< Instruction 'vpdpbusds' {AVX_VNNI|AVX512_VNNI+VL}.
1402
+ kIdVpdpwssd, //!< Instruction 'vpdpwssd' {AVX_VNNI|AVX512_VNNI+VL}.
1403
+ kIdVpdpwssds, //!< Instruction 'vpdpwssds' {AVX_VNNI|AVX512_VNNI+VL}.
1404
+ kIdVperm2f128, //!< Instruction 'vperm2f128' {AVX}.
1405
+ kIdVperm2i128, //!< Instruction 'vperm2i128' {AVX2}.
1406
+ kIdVpermb, //!< Instruction 'vpermb' {AVX512_VBMI+VL}.
1407
+ kIdVpermd, //!< Instruction 'vpermd' {AVX2|AVX512_F+VL}.
1408
+ kIdVpermi2b, //!< Instruction 'vpermi2b' {AVX512_VBMI+VL}.
1409
+ kIdVpermi2d, //!< Instruction 'vpermi2d' {AVX512_F+VL}.
1410
+ kIdVpermi2pd, //!< Instruction 'vpermi2pd' {AVX512_F+VL}.
1411
+ kIdVpermi2ps, //!< Instruction 'vpermi2ps' {AVX512_F+VL}.
1412
+ kIdVpermi2q, //!< Instruction 'vpermi2q' {AVX512_F+VL}.
1413
+ kIdVpermi2w, //!< Instruction 'vpermi2w' {AVX512_BW+VL}.
1414
+ kIdVpermil2pd, //!< Instruction 'vpermil2pd' {XOP}.
1415
+ kIdVpermil2ps, //!< Instruction 'vpermil2ps' {XOP}.
1416
+ kIdVpermilpd, //!< Instruction 'vpermilpd' {AVX|AVX512_F+VL}.
1417
+ kIdVpermilps, //!< Instruction 'vpermilps' {AVX|AVX512_F+VL}.
1418
+ kIdVpermpd, //!< Instruction 'vpermpd' {AVX2|AVX512_F+VL}.
1419
+ kIdVpermps, //!< Instruction 'vpermps' {AVX2|AVX512_F+VL}.
1420
+ kIdVpermq, //!< Instruction 'vpermq' {AVX2|AVX512_F+VL}.
1421
+ kIdVpermt2b, //!< Instruction 'vpermt2b' {AVX512_VBMI+VL}.
1422
+ kIdVpermt2d, //!< Instruction 'vpermt2d' {AVX512_F+VL}.
1423
+ kIdVpermt2pd, //!< Instruction 'vpermt2pd' {AVX512_F+VL}.
1424
+ kIdVpermt2ps, //!< Instruction 'vpermt2ps' {AVX512_F+VL}.
1425
+ kIdVpermt2q, //!< Instruction 'vpermt2q' {AVX512_F+VL}.
1426
+ kIdVpermt2w, //!< Instruction 'vpermt2w' {AVX512_BW+VL}.
1427
+ kIdVpermw, //!< Instruction 'vpermw' {AVX512_BW+VL}.
1428
+ kIdVpexpandb, //!< Instruction 'vpexpandb' {AVX512_VBMI2+VL}.
1429
+ kIdVpexpandd, //!< Instruction 'vpexpandd' {AVX512_F+VL}.
1430
+ kIdVpexpandq, //!< Instruction 'vpexpandq' {AVX512_F+VL}.
1431
+ kIdVpexpandw, //!< Instruction 'vpexpandw' {AVX512_VBMI2+VL}.
1432
+ kIdVpextrb, //!< Instruction 'vpextrb' {AVX|AVX512_BW}.
1433
+ kIdVpextrd, //!< Instruction 'vpextrd' {AVX|AVX512_DQ}.
1434
+ kIdVpextrq, //!< Instruction 'vpextrq' {AVX|AVX512_DQ} (X64).
1435
+ kIdVpextrw, //!< Instruction 'vpextrw' {AVX|AVX512_BW}.
1436
+ kIdVpgatherdd, //!< Instruction 'vpgatherdd' {AVX2|AVX512_F+VL}.
1437
+ kIdVpgatherdq, //!< Instruction 'vpgatherdq' {AVX2|AVX512_F+VL}.
1438
+ kIdVpgatherqd, //!< Instruction 'vpgatherqd' {AVX2|AVX512_F+VL}.
1439
+ kIdVpgatherqq, //!< Instruction 'vpgatherqq' {AVX2|AVX512_F+VL}.
1440
+ kIdVphaddbd, //!< Instruction 'vphaddbd' {XOP}.
1441
+ kIdVphaddbq, //!< Instruction 'vphaddbq' {XOP}.
1442
+ kIdVphaddbw, //!< Instruction 'vphaddbw' {XOP}.
1443
+ kIdVphaddd, //!< Instruction 'vphaddd' {AVX|AVX2}.
1444
+ kIdVphadddq, //!< Instruction 'vphadddq' {XOP}.
1445
+ kIdVphaddsw, //!< Instruction 'vphaddsw' {AVX|AVX2}.
1446
+ kIdVphaddubd, //!< Instruction 'vphaddubd' {XOP}.
1447
+ kIdVphaddubq, //!< Instruction 'vphaddubq' {XOP}.
1448
+ kIdVphaddubw, //!< Instruction 'vphaddubw' {XOP}.
1449
+ kIdVphaddudq, //!< Instruction 'vphaddudq' {XOP}.
1450
+ kIdVphadduwd, //!< Instruction 'vphadduwd' {XOP}.
1451
+ kIdVphadduwq, //!< Instruction 'vphadduwq' {XOP}.
1452
+ kIdVphaddw, //!< Instruction 'vphaddw' {AVX|AVX2}.
1453
+ kIdVphaddwd, //!< Instruction 'vphaddwd' {XOP}.
1454
+ kIdVphaddwq, //!< Instruction 'vphaddwq' {XOP}.
1455
+ kIdVphminposuw, //!< Instruction 'vphminposuw' {AVX}.
1456
+ kIdVphsubbw, //!< Instruction 'vphsubbw' {XOP}.
1457
+ kIdVphsubd, //!< Instruction 'vphsubd' {AVX|AVX2}.
1458
+ kIdVphsubdq, //!< Instruction 'vphsubdq' {XOP}.
1459
+ kIdVphsubsw, //!< Instruction 'vphsubsw' {AVX|AVX2}.
1460
+ kIdVphsubw, //!< Instruction 'vphsubw' {AVX|AVX2}.
1461
+ kIdVphsubwd, //!< Instruction 'vphsubwd' {XOP}.
1462
+ kIdVpinsrb, //!< Instruction 'vpinsrb' {AVX|AVX512_BW}.
1463
+ kIdVpinsrd, //!< Instruction 'vpinsrd' {AVX|AVX512_DQ}.
1464
+ kIdVpinsrq, //!< Instruction 'vpinsrq' {AVX|AVX512_DQ} (X64).
1465
+ kIdVpinsrw, //!< Instruction 'vpinsrw' {AVX|AVX512_BW}.
1466
+ kIdVplzcntd, //!< Instruction 'vplzcntd' {AVX512_CDI+VL}.
1467
+ kIdVplzcntq, //!< Instruction 'vplzcntq' {AVX512_CDI+VL}.
1468
+ kIdVpmacsdd, //!< Instruction 'vpmacsdd' {XOP}.
1469
+ kIdVpmacsdqh, //!< Instruction 'vpmacsdqh' {XOP}.
1470
+ kIdVpmacsdql, //!< Instruction 'vpmacsdql' {XOP}.
1471
+ kIdVpmacssdd, //!< Instruction 'vpmacssdd' {XOP}.
1472
+ kIdVpmacssdqh, //!< Instruction 'vpmacssdqh' {XOP}.
1473
+ kIdVpmacssdql, //!< Instruction 'vpmacssdql' {XOP}.
1474
+ kIdVpmacsswd, //!< Instruction 'vpmacsswd' {XOP}.
1475
+ kIdVpmacssww, //!< Instruction 'vpmacssww' {XOP}.
1476
+ kIdVpmacswd, //!< Instruction 'vpmacswd' {XOP}.
1477
+ kIdVpmacsww, //!< Instruction 'vpmacsww' {XOP}.
1478
+ kIdVpmadcsswd, //!< Instruction 'vpmadcsswd' {XOP}.
1479
+ kIdVpmadcswd, //!< Instruction 'vpmadcswd' {XOP}.
1480
+ kIdVpmadd52huq, //!< Instruction 'vpmadd52huq' {AVX512_IFMA+VL}.
1481
+ kIdVpmadd52luq, //!< Instruction 'vpmadd52luq' {AVX512_IFMA+VL}.
1482
+ kIdVpmaddubsw, //!< Instruction 'vpmaddubsw' {AVX|AVX2|AVX512_BW+VL}.
1483
+ kIdVpmaddwd, //!< Instruction 'vpmaddwd' {AVX|AVX2|AVX512_BW+VL}.
1484
+ kIdVpmaskmovd, //!< Instruction 'vpmaskmovd' {AVX2}.
1485
+ kIdVpmaskmovq, //!< Instruction 'vpmaskmovq' {AVX2}.
1486
+ kIdVpmaxsb, //!< Instruction 'vpmaxsb' {AVX|AVX2|AVX512_BW+VL}.
1487
+ kIdVpmaxsd, //!< Instruction 'vpmaxsd' {AVX|AVX2|AVX512_F+VL}.
1488
+ kIdVpmaxsq, //!< Instruction 'vpmaxsq' {AVX512_F+VL}.
1489
+ kIdVpmaxsw, //!< Instruction 'vpmaxsw' {AVX|AVX2|AVX512_BW+VL}.
1490
+ kIdVpmaxub, //!< Instruction 'vpmaxub' {AVX|AVX2|AVX512_BW+VL}.
1491
+ kIdVpmaxud, //!< Instruction 'vpmaxud' {AVX|AVX2|AVX512_F+VL}.
1492
+ kIdVpmaxuq, //!< Instruction 'vpmaxuq' {AVX512_F+VL}.
1493
+ kIdVpmaxuw, //!< Instruction 'vpmaxuw' {AVX|AVX2|AVX512_BW+VL}.
1494
+ kIdVpminsb, //!< Instruction 'vpminsb' {AVX|AVX2|AVX512_BW+VL}.
1495
+ kIdVpminsd, //!< Instruction 'vpminsd' {AVX|AVX2|AVX512_F+VL}.
1496
+ kIdVpminsq, //!< Instruction 'vpminsq' {AVX512_F+VL}.
1497
+ kIdVpminsw, //!< Instruction 'vpminsw' {AVX|AVX2|AVX512_BW+VL}.
1498
+ kIdVpminub, //!< Instruction 'vpminub' {AVX|AVX2|AVX512_BW+VL}.
1499
+ kIdVpminud, //!< Instruction 'vpminud' {AVX|AVX2|AVX512_F+VL}.
1500
+ kIdVpminuq, //!< Instruction 'vpminuq' {AVX512_F+VL}.
1501
+ kIdVpminuw, //!< Instruction 'vpminuw' {AVX|AVX2|AVX512_BW+VL}.
1502
+ kIdVpmovb2m, //!< Instruction 'vpmovb2m' {AVX512_BW+VL}.
1503
+ kIdVpmovd2m, //!< Instruction 'vpmovd2m' {AVX512_DQ+VL}.
1504
+ kIdVpmovdb, //!< Instruction 'vpmovdb' {AVX512_F+VL}.
1505
+ kIdVpmovdw, //!< Instruction 'vpmovdw' {AVX512_F+VL}.
1506
+ kIdVpmovm2b, //!< Instruction 'vpmovm2b' {AVX512_BW+VL}.
1507
+ kIdVpmovm2d, //!< Instruction 'vpmovm2d' {AVX512_DQ+VL}.
1508
+ kIdVpmovm2q, //!< Instruction 'vpmovm2q' {AVX512_DQ+VL}.
1509
+ kIdVpmovm2w, //!< Instruction 'vpmovm2w' {AVX512_BW+VL}.
1510
+ kIdVpmovmskb, //!< Instruction 'vpmovmskb' {AVX|AVX2}.
1511
+ kIdVpmovq2m, //!< Instruction 'vpmovq2m' {AVX512_DQ+VL}.
1512
+ kIdVpmovqb, //!< Instruction 'vpmovqb' {AVX512_F+VL}.
1513
+ kIdVpmovqd, //!< Instruction 'vpmovqd' {AVX512_F+VL}.
1514
+ kIdVpmovqw, //!< Instruction 'vpmovqw' {AVX512_F+VL}.
1515
+ kIdVpmovsdb, //!< Instruction 'vpmovsdb' {AVX512_F+VL}.
1516
+ kIdVpmovsdw, //!< Instruction 'vpmovsdw' {AVX512_F+VL}.
1517
+ kIdVpmovsqb, //!< Instruction 'vpmovsqb' {AVX512_F+VL}.
1518
+ kIdVpmovsqd, //!< Instruction 'vpmovsqd' {AVX512_F+VL}.
1519
+ kIdVpmovsqw, //!< Instruction 'vpmovsqw' {AVX512_F+VL}.
1520
+ kIdVpmovswb, //!< Instruction 'vpmovswb' {AVX512_BW+VL}.
1521
+ kIdVpmovsxbd, //!< Instruction 'vpmovsxbd' {AVX|AVX2|AVX512_F+VL}.
1522
+ kIdVpmovsxbq, //!< Instruction 'vpmovsxbq' {AVX|AVX2|AVX512_F+VL}.
1523
+ kIdVpmovsxbw, //!< Instruction 'vpmovsxbw' {AVX|AVX2|AVX512_BW+VL}.
1524
+ kIdVpmovsxdq, //!< Instruction 'vpmovsxdq' {AVX|AVX2|AVX512_F+VL}.
1525
+ kIdVpmovsxwd, //!< Instruction 'vpmovsxwd' {AVX|AVX2|AVX512_F+VL}.
1526
+ kIdVpmovsxwq, //!< Instruction 'vpmovsxwq' {AVX|AVX2|AVX512_F+VL}.
1527
+ kIdVpmovusdb, //!< Instruction 'vpmovusdb' {AVX512_F+VL}.
1528
+ kIdVpmovusdw, //!< Instruction 'vpmovusdw' {AVX512_F+VL}.
1529
+ kIdVpmovusqb, //!< Instruction 'vpmovusqb' {AVX512_F+VL}.
1530
+ kIdVpmovusqd, //!< Instruction 'vpmovusqd' {AVX512_F+VL}.
1531
+ kIdVpmovusqw, //!< Instruction 'vpmovusqw' {AVX512_F+VL}.
1532
+ kIdVpmovuswb, //!< Instruction 'vpmovuswb' {AVX512_BW+VL}.
1533
+ kIdVpmovw2m, //!< Instruction 'vpmovw2m' {AVX512_BW+VL}.
1534
+ kIdVpmovwb, //!< Instruction 'vpmovwb' {AVX512_BW+VL}.
1535
+ kIdVpmovzxbd, //!< Instruction 'vpmovzxbd' {AVX|AVX2|AVX512_F+VL}.
1536
+ kIdVpmovzxbq, //!< Instruction 'vpmovzxbq' {AVX|AVX2|AVX512_F+VL}.
1537
+ kIdVpmovzxbw, //!< Instruction 'vpmovzxbw' {AVX|AVX2|AVX512_BW+VL}.
1538
+ kIdVpmovzxdq, //!< Instruction 'vpmovzxdq' {AVX|AVX2|AVX512_F+VL}.
1539
+ kIdVpmovzxwd, //!< Instruction 'vpmovzxwd' {AVX|AVX2|AVX512_F+VL}.
1540
+ kIdVpmovzxwq, //!< Instruction 'vpmovzxwq' {AVX|AVX2|AVX512_F+VL}.
1541
+ kIdVpmuldq, //!< Instruction 'vpmuldq' {AVX|AVX2|AVX512_F+VL}.
1542
+ kIdVpmulhrsw, //!< Instruction 'vpmulhrsw' {AVX|AVX2|AVX512_BW+VL}.
1543
+ kIdVpmulhuw, //!< Instruction 'vpmulhuw' {AVX|AVX2|AVX512_BW+VL}.
1544
+ kIdVpmulhw, //!< Instruction 'vpmulhw' {AVX|AVX2|AVX512_BW+VL}.
1545
+ kIdVpmulld, //!< Instruction 'vpmulld' {AVX|AVX2|AVX512_F+VL}.
1546
+ kIdVpmullq, //!< Instruction 'vpmullq' {AVX512_DQ+VL}.
1547
+ kIdVpmullw, //!< Instruction 'vpmullw' {AVX|AVX2|AVX512_BW+VL}.
1548
+ kIdVpmultishiftqb, //!< Instruction 'vpmultishiftqb' {AVX512_VBMI+VL}.
1549
+ kIdVpmuludq, //!< Instruction 'vpmuludq' {AVX|AVX2|AVX512_F+VL}.
1550
+ kIdVpopcntb, //!< Instruction 'vpopcntb' {AVX512_BITALG+VL}.
1551
+ kIdVpopcntd, //!< Instruction 'vpopcntd' {AVX512_VPOPCNTDQ+VL}.
1552
+ kIdVpopcntq, //!< Instruction 'vpopcntq' {AVX512_VPOPCNTDQ+VL}.
1553
+ kIdVpopcntw, //!< Instruction 'vpopcntw' {AVX512_BITALG+VL}.
1554
+ kIdVpor, //!< Instruction 'vpor' {AVX|AVX2}.
1555
+ kIdVpord, //!< Instruction 'vpord' {AVX512_F+VL}.
1556
+ kIdVporq, //!< Instruction 'vporq' {AVX512_F+VL}.
1557
+ kIdVpperm, //!< Instruction 'vpperm' {XOP}.
1558
+ kIdVprold, //!< Instruction 'vprold' {AVX512_F+VL}.
1559
+ kIdVprolq, //!< Instruction 'vprolq' {AVX512_F+VL}.
1560
+ kIdVprolvd, //!< Instruction 'vprolvd' {AVX512_F+VL}.
1561
+ kIdVprolvq, //!< Instruction 'vprolvq' {AVX512_F+VL}.
1562
+ kIdVprord, //!< Instruction 'vprord' {AVX512_F+VL}.
1563
+ kIdVprorq, //!< Instruction 'vprorq' {AVX512_F+VL}.
1564
+ kIdVprorvd, //!< Instruction 'vprorvd' {AVX512_F+VL}.
1565
+ kIdVprorvq, //!< Instruction 'vprorvq' {AVX512_F+VL}.
1566
+ kIdVprotb, //!< Instruction 'vprotb' {XOP}.
1567
+ kIdVprotd, //!< Instruction 'vprotd' {XOP}.
1568
+ kIdVprotq, //!< Instruction 'vprotq' {XOP}.
1569
+ kIdVprotw, //!< Instruction 'vprotw' {XOP}.
1570
+ kIdVpsadbw, //!< Instruction 'vpsadbw' {AVX|AVX2|AVX512_BW+VL}.
1571
+ kIdVpscatterdd, //!< Instruction 'vpscatterdd' {AVX512_F+VL}.
1572
+ kIdVpscatterdq, //!< Instruction 'vpscatterdq' {AVX512_F+VL}.
1573
+ kIdVpscatterqd, //!< Instruction 'vpscatterqd' {AVX512_F+VL}.
1574
+ kIdVpscatterqq, //!< Instruction 'vpscatterqq' {AVX512_F+VL}.
1575
+ kIdVpshab, //!< Instruction 'vpshab' {XOP}.
1576
+ kIdVpshad, //!< Instruction 'vpshad' {XOP}.
1577
+ kIdVpshaq, //!< Instruction 'vpshaq' {XOP}.
1578
+ kIdVpshaw, //!< Instruction 'vpshaw' {XOP}.
1579
+ kIdVpshlb, //!< Instruction 'vpshlb' {XOP}.
1580
+ kIdVpshld, //!< Instruction 'vpshld' {XOP}.
1581
+ kIdVpshldd, //!< Instruction 'vpshldd' {AVX512_VBMI2+VL}.
1582
+ kIdVpshldq, //!< Instruction 'vpshldq' {AVX512_VBMI2+VL}.
1583
+ kIdVpshldvd, //!< Instruction 'vpshldvd' {AVX512_VBMI2+VL}.
1584
+ kIdVpshldvq, //!< Instruction 'vpshldvq' {AVX512_VBMI2+VL}.
1585
+ kIdVpshldvw, //!< Instruction 'vpshldvw' {AVX512_VBMI2+VL}.
1586
+ kIdVpshldw, //!< Instruction 'vpshldw' {AVX512_VBMI2+VL}.
1587
+ kIdVpshlq, //!< Instruction 'vpshlq' {XOP}.
1588
+ kIdVpshlw, //!< Instruction 'vpshlw' {XOP}.
1589
+ kIdVpshrdd, //!< Instruction 'vpshrdd' {AVX512_VBMI2+VL}.
1590
+ kIdVpshrdq, //!< Instruction 'vpshrdq' {AVX512_VBMI2+VL}.
1591
+ kIdVpshrdvd, //!< Instruction 'vpshrdvd' {AVX512_VBMI2+VL}.
1592
+ kIdVpshrdvq, //!< Instruction 'vpshrdvq' {AVX512_VBMI2+VL}.
1593
+ kIdVpshrdvw, //!< Instruction 'vpshrdvw' {AVX512_VBMI2+VL}.
1594
+ kIdVpshrdw, //!< Instruction 'vpshrdw' {AVX512_VBMI2+VL}.
1595
+ kIdVpshufb, //!< Instruction 'vpshufb' {AVX|AVX2|AVX512_BW+VL}.
1596
+ kIdVpshufbitqmb, //!< Instruction 'vpshufbitqmb' {AVX512_BITALG+VL}.
1597
+ kIdVpshufd, //!< Instruction 'vpshufd' {AVX|AVX2|AVX512_F+VL}.
1598
+ kIdVpshufhw, //!< Instruction 'vpshufhw' {AVX|AVX2|AVX512_BW+VL}.
1599
+ kIdVpshuflw, //!< Instruction 'vpshuflw' {AVX|AVX2|AVX512_BW+VL}.
1600
+ kIdVpsignb, //!< Instruction 'vpsignb' {AVX|AVX2}.
1601
+ kIdVpsignd, //!< Instruction 'vpsignd' {AVX|AVX2}.
1602
+ kIdVpsignw, //!< Instruction 'vpsignw' {AVX|AVX2}.
1603
+ kIdVpslld, //!< Instruction 'vpslld' {AVX|AVX2|AVX512_F+VL}.
1604
+ kIdVpslldq, //!< Instruction 'vpslldq' {AVX|AVX2|AVX512_BW+VL}.
1605
+ kIdVpsllq, //!< Instruction 'vpsllq' {AVX|AVX2|AVX512_F+VL}.
1606
+ kIdVpsllvd, //!< Instruction 'vpsllvd' {AVX2|AVX512_F+VL}.
1607
+ kIdVpsllvq, //!< Instruction 'vpsllvq' {AVX2|AVX512_F+VL}.
1608
+ kIdVpsllvw, //!< Instruction 'vpsllvw' {AVX512_BW+VL}.
1609
+ kIdVpsllw, //!< Instruction 'vpsllw' {AVX|AVX2|AVX512_BW+VL}.
1610
+ kIdVpsrad, //!< Instruction 'vpsrad' {AVX|AVX2|AVX512_F+VL}.
1611
+ kIdVpsraq, //!< Instruction 'vpsraq' {AVX512_F+VL}.
1612
+ kIdVpsravd, //!< Instruction 'vpsravd' {AVX2|AVX512_F+VL}.
1613
+ kIdVpsravq, //!< Instruction 'vpsravq' {AVX512_F+VL}.
1614
+ kIdVpsravw, //!< Instruction 'vpsravw' {AVX512_BW+VL}.
1615
+ kIdVpsraw, //!< Instruction 'vpsraw' {AVX|AVX2|AVX512_BW+VL}.
1616
+ kIdVpsrld, //!< Instruction 'vpsrld' {AVX|AVX2|AVX512_F+VL}.
1617
+ kIdVpsrldq, //!< Instruction 'vpsrldq' {AVX|AVX2|AVX512_BW+VL}.
1618
+ kIdVpsrlq, //!< Instruction 'vpsrlq' {AVX|AVX2|AVX512_F+VL}.
1619
+ kIdVpsrlvd, //!< Instruction 'vpsrlvd' {AVX2|AVX512_F+VL}.
1620
+ kIdVpsrlvq, //!< Instruction 'vpsrlvq' {AVX2|AVX512_F+VL}.
1621
+ kIdVpsrlvw, //!< Instruction 'vpsrlvw' {AVX512_BW+VL}.
1622
+ kIdVpsrlw, //!< Instruction 'vpsrlw' {AVX|AVX2|AVX512_BW+VL}.
1623
+ kIdVpsubb, //!< Instruction 'vpsubb' {AVX|AVX2|AVX512_BW+VL}.
1624
+ kIdVpsubd, //!< Instruction 'vpsubd' {AVX|AVX2|AVX512_F+VL}.
1625
+ kIdVpsubq, //!< Instruction 'vpsubq' {AVX|AVX2|AVX512_F+VL}.
1626
+ kIdVpsubsb, //!< Instruction 'vpsubsb' {AVX|AVX2|AVX512_BW+VL}.
1627
+ kIdVpsubsw, //!< Instruction 'vpsubsw' {AVX|AVX2|AVX512_BW+VL}.
1628
+ kIdVpsubusb, //!< Instruction 'vpsubusb' {AVX|AVX2|AVX512_BW+VL}.
1629
+ kIdVpsubusw, //!< Instruction 'vpsubusw' {AVX|AVX2|AVX512_BW+VL}.
1630
+ kIdVpsubw, //!< Instruction 'vpsubw' {AVX|AVX2|AVX512_BW+VL}.
1631
+ kIdVpternlogd, //!< Instruction 'vpternlogd' {AVX512_F+VL}.
1632
+ kIdVpternlogq, //!< Instruction 'vpternlogq' {AVX512_F+VL}.
1633
+ kIdVptest, //!< Instruction 'vptest' {AVX}.
1634
+ kIdVptestmb, //!< Instruction 'vptestmb' {AVX512_BW+VL}.
1635
+ kIdVptestmd, //!< Instruction 'vptestmd' {AVX512_F+VL}.
1636
+ kIdVptestmq, //!< Instruction 'vptestmq' {AVX512_F+VL}.
1637
+ kIdVptestmw, //!< Instruction 'vptestmw' {AVX512_BW+VL}.
1638
+ kIdVptestnmb, //!< Instruction 'vptestnmb' {AVX512_BW+VL}.
1639
+ kIdVptestnmd, //!< Instruction 'vptestnmd' {AVX512_F+VL}.
1640
+ kIdVptestnmq, //!< Instruction 'vptestnmq' {AVX512_F+VL}.
1641
+ kIdVptestnmw, //!< Instruction 'vptestnmw' {AVX512_BW+VL}.
1642
+ kIdVpunpckhbw, //!< Instruction 'vpunpckhbw' {AVX|AVX2|AVX512_BW+VL}.
1643
+ kIdVpunpckhdq, //!< Instruction 'vpunpckhdq' {AVX|AVX2|AVX512_F+VL}.
1644
+ kIdVpunpckhqdq, //!< Instruction 'vpunpckhqdq' {AVX|AVX2|AVX512_F+VL}.
1645
+ kIdVpunpckhwd, //!< Instruction 'vpunpckhwd' {AVX|AVX2|AVX512_BW+VL}.
1646
+ kIdVpunpcklbw, //!< Instruction 'vpunpcklbw' {AVX|AVX2|AVX512_BW+VL}.
1647
+ kIdVpunpckldq, //!< Instruction 'vpunpckldq' {AVX|AVX2|AVX512_F+VL}.
1648
+ kIdVpunpcklqdq, //!< Instruction 'vpunpcklqdq' {AVX|AVX2|AVX512_F+VL}.
1649
+ kIdVpunpcklwd, //!< Instruction 'vpunpcklwd' {AVX|AVX2|AVX512_BW+VL}.
1650
+ kIdVpxor, //!< Instruction 'vpxor' {AVX|AVX2}.
1651
+ kIdVpxord, //!< Instruction 'vpxord' {AVX512_F+VL}.
1652
+ kIdVpxorq, //!< Instruction 'vpxorq' {AVX512_F+VL}.
1653
+ kIdVrangepd, //!< Instruction 'vrangepd' {AVX512_DQ+VL}.
1654
+ kIdVrangeps, //!< Instruction 'vrangeps' {AVX512_DQ+VL}.
1655
+ kIdVrangesd, //!< Instruction 'vrangesd' {AVX512_DQ}.
1656
+ kIdVrangess, //!< Instruction 'vrangess' {AVX512_DQ}.
1657
+ kIdVrcp14pd, //!< Instruction 'vrcp14pd' {AVX512_F+VL}.
1658
+ kIdVrcp14ps, //!< Instruction 'vrcp14ps' {AVX512_F+VL}.
1659
+ kIdVrcp14sd, //!< Instruction 'vrcp14sd' {AVX512_F}.
1660
+ kIdVrcp14ss, //!< Instruction 'vrcp14ss' {AVX512_F}.
1661
+ kIdVrcp28pd, //!< Instruction 'vrcp28pd' {AVX512_ERI}.
1662
+ kIdVrcp28ps, //!< Instruction 'vrcp28ps' {AVX512_ERI}.
1663
+ kIdVrcp28sd, //!< Instruction 'vrcp28sd' {AVX512_ERI}.
1664
+ kIdVrcp28ss, //!< Instruction 'vrcp28ss' {AVX512_ERI}.
1665
+ kIdVrcpph, //!< Instruction 'vrcpph' {AVX512_FP16}.
1666
+ kIdVrcpps, //!< Instruction 'vrcpps' {AVX}.
1667
+ kIdVrcpsh, //!< Instruction 'vrcpsh' {AVX512_FP16}.
1668
+ kIdVrcpss, //!< Instruction 'vrcpss' {AVX}.
1669
+ kIdVreducepd, //!< Instruction 'vreducepd' {AVX512_DQ+VL}.
1670
+ kIdVreduceph, //!< Instruction 'vreduceph' {AVX512_FP16+VL}.
1671
+ kIdVreduceps, //!< Instruction 'vreduceps' {AVX512_DQ+VL}.
1672
+ kIdVreducesd, //!< Instruction 'vreducesd' {AVX512_DQ}.
1673
+ kIdVreducesh, //!< Instruction 'vreducesh' {AVX512_FP16}.
1674
+ kIdVreducess, //!< Instruction 'vreducess' {AVX512_DQ}.
1675
+ kIdVrndscalepd, //!< Instruction 'vrndscalepd' {AVX512_F+VL}.
1676
+ kIdVrndscaleph, //!< Instruction 'vrndscaleph' {AVX512_FP16+VL}.
1677
+ kIdVrndscaleps, //!< Instruction 'vrndscaleps' {AVX512_F+VL}.
1678
+ kIdVrndscalesd, //!< Instruction 'vrndscalesd' {AVX512_F}.
1679
+ kIdVrndscalesh, //!< Instruction 'vrndscalesh' {AVX512_FP16}.
1680
+ kIdVrndscaless, //!< Instruction 'vrndscaless' {AVX512_F}.
1681
+ kIdVroundpd, //!< Instruction 'vroundpd' {AVX}.
1682
+ kIdVroundps, //!< Instruction 'vroundps' {AVX}.
1683
+ kIdVroundsd, //!< Instruction 'vroundsd' {AVX}.
1684
+ kIdVroundss, //!< Instruction 'vroundss' {AVX}.
1685
+ kIdVrsqrt14pd, //!< Instruction 'vrsqrt14pd' {AVX512_F+VL}.
1686
+ kIdVrsqrt14ps, //!< Instruction 'vrsqrt14ps' {AVX512_F+VL}.
1687
+ kIdVrsqrt14sd, //!< Instruction 'vrsqrt14sd' {AVX512_F}.
1688
+ kIdVrsqrt14ss, //!< Instruction 'vrsqrt14ss' {AVX512_F}.
1689
+ kIdVrsqrt28pd, //!< Instruction 'vrsqrt28pd' {AVX512_ERI}.
1690
+ kIdVrsqrt28ps, //!< Instruction 'vrsqrt28ps' {AVX512_ERI}.
1691
+ kIdVrsqrt28sd, //!< Instruction 'vrsqrt28sd' {AVX512_ERI}.
1692
+ kIdVrsqrt28ss, //!< Instruction 'vrsqrt28ss' {AVX512_ERI}.
1693
+ kIdVrsqrtph, //!< Instruction 'vrsqrtph' {AVX512_FP16+VL}.
1694
+ kIdVrsqrtps, //!< Instruction 'vrsqrtps' {AVX}.
1695
+ kIdVrsqrtsh, //!< Instruction 'vrsqrtsh' {AVX512_FP16}.
1696
+ kIdVrsqrtss, //!< Instruction 'vrsqrtss' {AVX}.
1697
+ kIdVscalefpd, //!< Instruction 'vscalefpd' {AVX512_F+VL}.
1698
+ kIdVscalefph, //!< Instruction 'vscalefph' {AVX512_FP16+VL}.
1699
+ kIdVscalefps, //!< Instruction 'vscalefps' {AVX512_F+VL}.
1700
+ kIdVscalefsd, //!< Instruction 'vscalefsd' {AVX512_F}.
1701
+ kIdVscalefsh, //!< Instruction 'vscalefsh' {AVX512_FP16}.
1702
+ kIdVscalefss, //!< Instruction 'vscalefss' {AVX512_F}.
1703
+ kIdVscatterdpd, //!< Instruction 'vscatterdpd' {AVX512_F+VL}.
1704
+ kIdVscatterdps, //!< Instruction 'vscatterdps' {AVX512_F+VL}.
1705
+ kIdVscatterpf0dpd, //!< Instruction 'vscatterpf0dpd' {AVX512_PFI}.
1706
+ kIdVscatterpf0dps, //!< Instruction 'vscatterpf0dps' {AVX512_PFI}.
1707
+ kIdVscatterpf0qpd, //!< Instruction 'vscatterpf0qpd' {AVX512_PFI}.
1708
+ kIdVscatterpf0qps, //!< Instruction 'vscatterpf0qps' {AVX512_PFI}.
1709
+ kIdVscatterpf1dpd, //!< Instruction 'vscatterpf1dpd' {AVX512_PFI}.
1710
+ kIdVscatterpf1dps, //!< Instruction 'vscatterpf1dps' {AVX512_PFI}.
1711
+ kIdVscatterpf1qpd, //!< Instruction 'vscatterpf1qpd' {AVX512_PFI}.
1712
+ kIdVscatterpf1qps, //!< Instruction 'vscatterpf1qps' {AVX512_PFI}.
1713
+ kIdVscatterqpd, //!< Instruction 'vscatterqpd' {AVX512_F+VL}.
1714
+ kIdVscatterqps, //!< Instruction 'vscatterqps' {AVX512_F+VL}.
1715
+ kIdVshuff32x4, //!< Instruction 'vshuff32x4' {AVX512_F+VL}.
1716
+ kIdVshuff64x2, //!< Instruction 'vshuff64x2' {AVX512_F+VL}.
1717
+ kIdVshufi32x4, //!< Instruction 'vshufi32x4' {AVX512_F+VL}.
1718
+ kIdVshufi64x2, //!< Instruction 'vshufi64x2' {AVX512_F+VL}.
1719
+ kIdVshufpd, //!< Instruction 'vshufpd' {AVX|AVX512_F+VL}.
1720
+ kIdVshufps, //!< Instruction 'vshufps' {AVX|AVX512_F+VL}.
1721
+ kIdVsqrtpd, //!< Instruction 'vsqrtpd' {AVX|AVX512_F+VL}.
1722
+ kIdVsqrtph, //!< Instruction 'vsqrtph' {AVX512_FP16+VL}.
1723
+ kIdVsqrtps, //!< Instruction 'vsqrtps' {AVX|AVX512_F+VL}.
1724
+ kIdVsqrtsd, //!< Instruction 'vsqrtsd' {AVX|AVX512_F}.
1725
+ kIdVsqrtsh, //!< Instruction 'vsqrtsh' {AVX512_FP16}.
1726
+ kIdVsqrtss, //!< Instruction 'vsqrtss' {AVX|AVX512_F}.
1727
+ kIdVstmxcsr, //!< Instruction 'vstmxcsr' {AVX}.
1728
+ kIdVsubpd, //!< Instruction 'vsubpd' {AVX|AVX512_F+VL}.
1729
+ kIdVsubph, //!< Instruction 'vsubph' {AVX512_FP16+VL}.
1730
+ kIdVsubps, //!< Instruction 'vsubps' {AVX|AVX512_F+VL}.
1731
+ kIdVsubsd, //!< Instruction 'vsubsd' {AVX|AVX512_F}.
1732
+ kIdVsubsh, //!< Instruction 'vsubsh' {AVX512_FP16}.
1733
+ kIdVsubss, //!< Instruction 'vsubss' {AVX|AVX512_F}.
1734
+ kIdVtestpd, //!< Instruction 'vtestpd' {AVX}.
1735
+ kIdVtestps, //!< Instruction 'vtestps' {AVX}.
1736
+ kIdVucomisd, //!< Instruction 'vucomisd' {AVX|AVX512_F}.
1737
+ kIdVucomish, //!< Instruction 'vucomish' {AVX512_FP16}.
1738
+ kIdVucomiss, //!< Instruction 'vucomiss' {AVX|AVX512_F}.
1739
+ kIdVunpckhpd, //!< Instruction 'vunpckhpd' {AVX|AVX512_F+VL}.
1740
+ kIdVunpckhps, //!< Instruction 'vunpckhps' {AVX|AVX512_F+VL}.
1741
+ kIdVunpcklpd, //!< Instruction 'vunpcklpd' {AVX|AVX512_F+VL}.
1742
+ kIdVunpcklps, //!< Instruction 'vunpcklps' {AVX|AVX512_F+VL}.
1743
+ kIdVxorpd, //!< Instruction 'vxorpd' {AVX|AVX512_DQ+VL}.
1744
+ kIdVxorps, //!< Instruction 'vxorps' {AVX|AVX512_DQ+VL}.
1745
+ kIdVzeroall, //!< Instruction 'vzeroall' {AVX}.
1746
+ kIdVzeroupper, //!< Instruction 'vzeroupper' {AVX}.
1747
+ kIdWbinvd, //!< Instruction 'wbinvd'.
1748
+ kIdWbnoinvd, //!< Instruction 'wbnoinvd' {WBNOINVD}.
1749
+ kIdWrfsbase, //!< Instruction 'wrfsbase' {FSGSBASE} (X64).
1750
+ kIdWrgsbase, //!< Instruction 'wrgsbase' {FSGSBASE} (X64).
1751
+ kIdWrmsr, //!< Instruction 'wrmsr' {MSR}.
1752
+ kIdWrssd, //!< Instruction 'wrssd' {CET_SS}.
1753
+ kIdWrssq, //!< Instruction 'wrssq' {CET_SS} (X64).
1754
+ kIdWrussd, //!< Instruction 'wrussd' {CET_SS}.
1755
+ kIdWrussq, //!< Instruction 'wrussq' {CET_SS} (X64).
1756
+ kIdXabort, //!< Instruction 'xabort' {RTM}.
1757
+ kIdXadd, //!< Instruction 'xadd' {I486}.
1758
+ kIdXbegin, //!< Instruction 'xbegin' {RTM}.
1759
+ kIdXchg, //!< Instruction 'xchg'.
1760
+ kIdXend, //!< Instruction 'xend' {RTM}.
1761
+ kIdXgetbv, //!< Instruction 'xgetbv' {XSAVE}.
1762
+ kIdXlatb, //!< Instruction 'xlatb'.
1763
+ kIdXor, //!< Instruction 'xor'.
1764
+ kIdXorpd, //!< Instruction 'xorpd' {SSE2}.
1765
+ kIdXorps, //!< Instruction 'xorps' {SSE}.
1766
+ kIdXresldtrk, //!< Instruction 'xresldtrk' {TSXLDTRK}.
1767
+ kIdXrstor, //!< Instruction 'xrstor' {XSAVE}.
1768
+ kIdXrstor64, //!< Instruction 'xrstor64' {XSAVE} (X64).
1769
+ kIdXrstors, //!< Instruction 'xrstors' {XSAVES}.
1770
+ kIdXrstors64, //!< Instruction 'xrstors64' {XSAVES} (X64).
1771
+ kIdXsave, //!< Instruction 'xsave' {XSAVE}.
1772
+ kIdXsave64, //!< Instruction 'xsave64' {XSAVE} (X64).
1773
+ kIdXsavec, //!< Instruction 'xsavec' {XSAVEC}.
1774
+ kIdXsavec64, //!< Instruction 'xsavec64' {XSAVEC} (X64).
1775
+ kIdXsaveopt, //!< Instruction 'xsaveopt' {XSAVEOPT}.
1776
+ kIdXsaveopt64, //!< Instruction 'xsaveopt64' {XSAVEOPT} (X64).
1777
+ kIdXsaves, //!< Instruction 'xsaves' {XSAVES}.
1778
+ kIdXsaves64, //!< Instruction 'xsaves64' {XSAVES} (X64).
1779
+ kIdXsetbv, //!< Instruction 'xsetbv' {XSAVE}.
1780
+ kIdXsusldtrk, //!< Instruction 'xsusldtrk' {TSXLDTRK}.
1781
+ kIdXtest, //!< Instruction 'xtest' {TSX}.
1782
+ _kIdCount
1783
+ // ${InstId:End}
1784
+ };
1785
+
1786
+ //! Tests whether the `instId` is defined.
1787
+ static inline constexpr bool isDefinedId(InstId instId) noexcept { return instId < _kIdCount; }
1788
+
1789
+ //! \cond
1790
+ #define ASMJIT_INST_FROM_COND(ID) \
1791
+ ID##o, ID##no, ID##b , ID##ae, \
1792
+ ID##e, ID##ne, ID##be, ID##a , \
1793
+ ID##s, ID##ns, ID##pe, ID##po, \
1794
+ ID##l, ID##ge, ID##le, ID##g
1795
+
1796
+ static constexpr uint16_t _jccTable[] = { ASMJIT_INST_FROM_COND(Inst::kIdJ) };
1797
+ static constexpr uint16_t _setccTable[] = { ASMJIT_INST_FROM_COND(Inst::kIdSet) };
1798
+ static constexpr uint16_t _cmovccTable[] = { ASMJIT_INST_FROM_COND(Inst::kIdCmov) };
1799
+
1800
+ #undef ASMJIT_INST_FROM_COND
1801
+ //! \endcond
1802
+
1803
+ //! Translates a condition code `cond` to a `jcc` instruction id.
1804
+ static constexpr InstId jccFromCond(CondCode cond) noexcept { return _jccTable[uint8_t(cond)]; }
1805
+ //! Translates a condition code `cond` to a `setcc` instruction id.
1806
+ static constexpr InstId setccFromCond(CondCode cond) noexcept { return _setccTable[uint8_t(cond)]; }
1807
+ //! Translates a condition code `cond` to a `cmovcc` instruction id.
1808
+ static constexpr InstId cmovccFromCond(CondCode cond) noexcept { return _cmovccTable[uint8_t(cond)]; }
1809
+ } // {Inst}
1810
+
1811
+ //! FPU status word bits.
1812
+ enum class FpuStatusWord : uint16_t {
1813
+ kNone = 0x0000u, //!< No bits set.
1814
+
1815
+ kInvalid = 0x0001u, //!< Invalid operation.
1816
+ kDenormalized = 0x0002u, //!< Denormalized operand.
1817
+ kDivByZero = 0x0004u, //!< Division by zero.
1818
+ kOverflow = 0x0008u, //!< Overflown.
1819
+ kUnderflow = 0x0010u, //!< Underflown.
1820
+ kPrecision = 0x0020u, //!< Precision lost.
1821
+ kStackFault = 0x0040u, //!< Stack fault.
1822
+ kInterrupt = 0x0080u, //!< Interrupt.
1823
+ kC0 = 0x0100u, //!< C0 flag.
1824
+ kC1 = 0x0200u, //!< C1 flag.
1825
+ kC2 = 0x0400u, //!< C2 flag.
1826
+ kTopMask = 0x3800u, //!< Top of the stack (mask).
1827
+ kC3 = 0x4000u, //!< C3 flag.
1828
+ kBusy = 0x8000u //!< FPU is busy.
1829
+ };
1830
+ ASMJIT_DEFINE_ENUM_FLAGS(FpuStatusWord)
1831
+
1832
+ //! FPU control word bits.
1833
+ enum class FpuControlWord : uint16_t {
1834
+ kNone = 0x0000u, //!< No bits set.
1835
+
1836
+ // Bits 0-5
1837
+ // --------
1838
+
1839
+ kEM_Mask = 0x003Fu, //!< Exception mask (0x3F).
1840
+ kEM_Invalid = 0x0001u, //!< Invalid operation exception.
1841
+ kEM_Denormal = 0x0002u, //!< Denormalized operand exception.
1842
+ kEM_DivByZero = 0x0004u, //!< Division by zero exception.
1843
+ kEM_Overflow = 0x0008u, //!< Overflow exception.
1844
+ kEM_Underflow = 0x0010u, //!< Underflow exception.
1845
+ kEM_Inexact = 0x0020u, //!< Inexact operation exception.
1846
+
1847
+ // Bits 8-9
1848
+ // --------
1849
+
1850
+ kPC_Mask = 0x0300u, //!< Precision control mask.
1851
+ kPC_Float = 0x0000u, //!< Single precision (24 bits).
1852
+ kPC_Reserved = 0x0100u, //!< Reserved.
1853
+ kPC_Double = 0x0200u, //!< Double precision (53 bits).
1854
+ kPC_Extended = 0x0300u, //!< Extended precision (64 bits).
1855
+
1856
+ // Bits 10-11
1857
+ // ----------
1858
+
1859
+ kRC_Mask = 0x0C00u, //!< Rounding control mask.
1860
+ kRC_Nearest = 0x0000u, //!< Round to nearest even.
1861
+ kRC_Down = 0x0400u, //!< Round down (floor).
1862
+ kRC_Up = 0x0800u, //!< Round up (ceil).
1863
+ kRC_Truncate = 0x0C00u, //!< Round towards zero (truncate).
1864
+
1865
+ // Bit 12
1866
+ // ------
1867
+
1868
+ kIC_Mask = 0x1000u, //!< Infinity control.
1869
+ kIC_Projective = 0x0000u, //!< Projective (not supported on X64).
1870
+ kIC_Affine = 0x1000u //!< Affine (default).
1871
+ };
1872
+ ASMJIT_DEFINE_ENUM_FLAGS(FpuControlWord)
1873
+
1874
+ //! An immediate value that can be used with CMP[PD|PS|SD|SS] instructions.
1875
+ enum class CmpImm : uint8_t {
1876
+ kEQ = 0x00u, //!< Equal (Quiet), same as \ref VCmpImm::kEQ_OQ.
1877
+ kLT = 0x01u, //!< Less (Signaling), same as \ref VCmpImm::kLT_OS.
1878
+ kLE = 0x02u, //!< Less/Equal (Signaling), same as \ref VCmpImm::kLE_OS.
1879
+ kUNORD = 0x03u, //!< Unordered (Quiet), same as \ref VCmpImm::kUNORD_Q.
1880
+ kNEQ = 0x04u, //!< Not Equal (Quiet), same as \ref VCmpImm::kNEQ_UQ.
1881
+ kNLT = 0x05u, //!< Not Less (Signaling), same as \ref VCmpImm::kNLT_US.
1882
+ kNLE = 0x06u, //!< Not Less/Equal (Signaling), same as \ref VCmpImm::kNLE_US.
1883
+ kORD = 0x07u //!< Ordered (Quiet), same as \ref VCmpImm::kORD_Q.
1884
+ };
1885
+
1886
+ //! An immediate value that can be used with [V]PCMP[I|E]STR[I|M] instructions.
1887
+ enum class PCmpStrImm : uint8_t {
1888
+ // Source Data Format
1889
+ // ------------------
1890
+
1891
+ kUB = 0x00u << 0, //!< The source data format is unsigned bytes.
1892
+ kUW = 0x01u << 0, //!< The source data format is unsigned words.
1893
+ kSB = 0x02u << 0, //!< The source data format is signed bytes.
1894
+ kSW = 0x03u << 0, //!< The source data format is signed words.
1895
+
1896
+ // Aggregation Operation
1897
+ // ---------------------
1898
+
1899
+ kEqualAny = 0x00u << 2, //!< The arithmetic comparison is "equal".
1900
+ kRanges = 0x01u << 2, //!< The arithmetic comparison is "greater than or equal" between even indexed
1901
+ //!< elements and "less than or equal" between odd indexed elements.
1902
+ kEqualEach = 0x02u << 2, //!< The arithmetic comparison is "equal".
1903
+ kEqualOrdered = 0x03u << 2, //!< The arithmetic comparison is "equal".
1904
+
1905
+ // Polarity
1906
+ // --------
1907
+
1908
+ kPosPolarity = 0x00u << 4, //!< IntRes2 = IntRes1.
1909
+ kNegPolarity = 0x01u << 4, //!< IntRes2 = -1 XOR IntRes1.
1910
+ kPosMasked = 0x02u << 4, //!< IntRes2 = IntRes1.
1911
+ kNegMasked = 0x03u << 4, //!< IntRes2[i] = second[i] == invalid ? IntRes1[i] : ~IntRes1[i].
1912
+
1913
+ // Output Selection (pcmpstri)
1914
+ // ---------------------------
1915
+
1916
+ kOutputLSI = 0x00u << 6, //!< The index returned to ECX is of the least significant set bit in IntRes2.
1917
+ kOutputMSI = 0x01u << 6, //!< The index returned to ECX is of the most significant set bit in IntRes2.
1918
+
1919
+ // Output Selection (pcmpstrm)
1920
+ // ---------------------------
1921
+
1922
+ kBitMask = 0x00u << 6, //!< IntRes2 is returned as the mask to the least significant bits of XMM0.
1923
+ kIndexMask = 0x01u << 6 //!< IntRes2 is expanded into a byte/word mask and placed in XMM0.
1924
+ };
1925
+ ASMJIT_DEFINE_ENUM_FLAGS(PCmpStrImm)
1926
+
1927
+ //! An immediate value that can be used with ROUND[PD|PS|SD|SS] instructions.
1928
+ //!
1929
+ //! \note `kSuppress` is a mask that can be used with any other value.
1930
+ enum class RoundImm : uint8_t {
1931
+ kNearest = 0x00u, //!< Round to nearest (even).
1932
+ kDown = 0x01u, //!< Round to down toward -INF (floor),
1933
+ kUp = 0x02u, //!< Round to up toward +INF (ceil).
1934
+ kTrunc = 0x03u, //!< Round toward zero (truncate).
1935
+ kCurrent = 0x04u, //!< Round to the current rounding mode set (ignores other RC bits).
1936
+ kSuppress = 0x08u //!< Supress exceptions (avoids inexact exception, if set).
1937
+ };
1938
+ ASMJIT_DEFINE_ENUM_FLAGS(RoundImm)
1939
+
1940
+ //! An immediate value that can be used with VCMP[PD|PS|SD|SS] instructions (AVX).
1941
+ //!
1942
+ //! The first 8 values are compatible with \ref CmpImm.
1943
+ enum class VCmpImm : uint8_t {
1944
+ kEQ_OQ = 0x00u, //!< Equal (Quiet , Ordered) , same as \ref CmpImm::kEQ.
1945
+ kLT_OS = 0x01u, //!< Less (Signaling, Ordered) , same as \ref CmpImm::kLT.
1946
+ kLE_OS = 0x02u, //!< Less/Equal (Signaling, Ordered) , same as \ref CmpImm::kLE.
1947
+ kUNORD_Q = 0x03u, //!< Unordered (Quiet) , same as \ref CmpImm::kUNORD.
1948
+ kNEQ_UQ = 0x04u, //!< Not Equal (Quiet , Unordered), same as \ref CmpImm::kNEQ.
1949
+ kNLT_US = 0x05u, //!< Not Less (Signaling, Unordered), same as \ref CmpImm::kNLT.
1950
+ kNLE_US = 0x06u, //!< Not Less/Equal (Signaling, Unordered), same as \ref CmpImm::kNLE.
1951
+ kORD_Q = 0x07u, //!< Ordered (Quiet) , same as \ref CmpImm::kORD.
1952
+ kEQ_UQ = 0x08u, //!< Equal (Quiet , Unordered).
1953
+ kNGE_US = 0x09u, //!< Not Greater/Equal (Signaling, Unordered).
1954
+ kNGT_US = 0x0Au, //!< Not Greater (Signaling, Unordered).
1955
+ kFALSE_OQ = 0x0Bu, //!< False (Quiet , Ordered).
1956
+ kNEQ_OQ = 0x0Cu, //!< Not Equal (Quiet , Ordered).
1957
+ kGE_OS = 0x0Du, //!< Greater/Equal (Signaling, Ordered).
1958
+ kGT_OS = 0x0Eu, //!< Greater (Signaling, Ordered).
1959
+ kTRUE_UQ = 0x0Fu, //!< True (Quiet , Unordered).
1960
+ kEQ_OS = 0x10u, //!< Equal (Signaling, Ordered).
1961
+ kLT_OQ = 0x11u, //!< Less (Quiet , Ordered).
1962
+ kLE_OQ = 0x12u, //!< Less/Equal (Quiet , Ordered).
1963
+ kUNORD_S = 0x13u, //!< Unordered (Signaling).
1964
+ kNEQ_US = 0x14u, //!< Not Equal (Signaling, Unordered).
1965
+ kNLT_UQ = 0x15u, //!< Not Less (Quiet , Unordered).
1966
+ kNLE_UQ = 0x16u, //!< Not Less/Equal (Quiet , Unordered).
1967
+ kORD_S = 0x17u, //!< Ordered (Signaling).
1968
+ kEQ_US = 0x18u, //!< Equal (Signaling, Unordered).
1969
+ kNGE_UQ = 0x19u, //!< Not Greater/Equal (Quiet , Unordered).
1970
+ kNGT_UQ = 0x1Au, //!< Not Greater (Quiet , Unordered).
1971
+ kFALSE_OS = 0x1Bu, //!< False (Signaling, Ordered).
1972
+ kNEQ_OS = 0x1Cu, //!< Not Equal (Signaling, Ordered).
1973
+ kGE_OQ = 0x1Du, //!< Greater/Equal (Quiet , Ordered).
1974
+ kGT_OQ = 0x1Eu, //!< Greater (Quiet , Ordered).
1975
+ kTRUE_US = 0x1Fu //!< True (Signaling, Unordered).
1976
+ };
1977
+
1978
+ //! An immediate value that can be used with VFIXUPIMM[PD|PS|SD|SS] instructions (AVX-512).
1979
+ //!
1980
+ //! The final immediate is a combination of all possible control bits.
1981
+ enum class VFixupImm : uint8_t {
1982
+ kNone = 0x00u,
1983
+ kZEOnZero = 0x01u,
1984
+ kIEOnZero = 0x02u,
1985
+ kZEOnOne = 0x04u,
1986
+ kIEOnOne = 0x08u,
1987
+ kIEOnSNaN = 0x10u,
1988
+ kIEOnNInf = 0x20u,
1989
+ kIEOnNegative = 0x40u,
1990
+ kIEOnPInf = 0x80u
1991
+ };
1992
+ ASMJIT_DEFINE_ENUM_FLAGS(VFixupImm)
1993
+
1994
+ //! An immediate value that can be used with VFPCLASS[PD|PS|SD|SS] instructions (AVX-512).
1995
+ //!
1996
+ //! The values can be combined together to form the final 8-bit mask.
1997
+ enum class VFPClassImm : uint8_t {
1998
+ kNone = 0x00u,
1999
+ kQNaN = 0x01u, //!< Checks for QNaN.
2000
+ kPZero = 0x02u, //!< Checks for +0.
2001
+ kNZero = 0x04u, //!< Checks for -0.
2002
+ kPInf = 0x08u, //!< Checks for +Inf.
2003
+ kNInf = 0x10u, //!< Checks for -Inf.
2004
+ kDenormal = 0x20u, //!< Checks for denormal.
2005
+ kNegative = 0x40u, //!< Checks for negative finite value.
2006
+ kSNaN = 0x80u //!< Checks for SNaN.
2007
+ };
2008
+ ASMJIT_DEFINE_ENUM_FLAGS(VFPClassImm)
2009
+
2010
+ //! An immediate value that can be used with VGETMANT[PD|PS|SD|SS] instructions (AVX-512).
2011
+ //!
2012
+ //! The value is a combination of a normalization interval and a sign control.
2013
+ enum class VGetMantImm : uint8_t {
2014
+ // Normalization Interval
2015
+ // ----------------------
2016
+
2017
+ k1To2 = 0x00u, //!< Normalization interval is [1, 2)
2018
+ k1Div2To2 = 0x01u, //!< Normalization interval is [0.5, 2)
2019
+ k1Div2To1 = 0x02u, //!< Normalization interval is [0.5, 1)
2020
+ k3Div4To3Div2 = 0x03u, //!< Normalization interval is [3/4, 3/2)
2021
+
2022
+ // Sign Control
2023
+ // ------------
2024
+
2025
+ kSrcSign = 0x00u, //!< Source sign.
2026
+ kNoSign = 0x04u, //!< Zero sign
2027
+ kQNaNIfSign = 0x08u //!< QNAN_Indefinite if sign(src) != 0, regardless of `kSignSrc` or `kNoSign`.
2028
+ };
2029
+ ASMJIT_DEFINE_ENUM_FLAGS(VGetMantImm)
2030
+
2031
+ //! A predicate used by VPCMP[U][B|W|D|Q] instructions (AVX-512).
2032
+ enum class VPCmpImm : uint8_t {
2033
+ kEQ = 0x00u, //!< Equal.
2034
+ kLT = 0x01u, //!< Less.
2035
+ kLE = 0x02u, //!< Less/Equal.
2036
+ kFALSE = 0x03u, //!< False.
2037
+ kNE = 0x04u, //!< Not Equal.
2038
+ kGE = 0x05u, //!< Greater/Equal.
2039
+ kGT = 0x06u, //!< Greater.
2040
+ kTRUE = 0x07u //!< True.
2041
+ };
2042
+
2043
+ //! A predicate used by VPCOM[U][B|W|D|Q] instructions (XOP).
2044
+ enum class VPComImm : uint8_t {
2045
+ kLT = 0x00u, //!< Less.
2046
+ kLE = 0x01u, //!< Less/Equal
2047
+ kGT = 0x02u, //!< Greater.
2048
+ kGE = 0x03u, //!< Greater/Equal.
2049
+ kEQ = 0x04u, //!< Equal.
2050
+ kNE = 0x05u, //!< Not Equal.
2051
+ kFALSE = 0x06u, //!< False.
2052
+ kTRUE = 0x07u //!< True.
2053
+ };
2054
+
2055
+ //! A predicate used by VRANGE[PD|PS|SD|SS] instructions (AVX-512).
2056
+ enum class VRangeImm : uint8_t {
2057
+ // Selector
2058
+ // --------
2059
+
2060
+ kSelectMin = 0x00u, //!< Select minimum value.
2061
+ kSelectMax = 0x01u, //!< Select maximum value.
2062
+ kSelectAbsMin = 0x02u, //!< Select minimum absolute value.
2063
+ kSelectAbsMax = 0x03u, //!< Select maximum absolute value.
2064
+
2065
+ // Sign
2066
+ // ----
2067
+
2068
+ kSignSrc1 = 0x00u, //!< Select sign of SRC1.
2069
+ kSignSrc2 = 0x04u, //!< Select sign of SRC2.
2070
+ kSign0 = 0x08u, //!< Set sign to 0.
2071
+ kSign1 = 0x0Cu //!< Set sign to 1.
2072
+ };
2073
+ ASMJIT_DEFINE_ENUM_FLAGS(VRangeImm)
2074
+
2075
+ //! A predicate used by VREDUCE[PD|PS|SD|SS] instructions (AVX-512).
2076
+ enum class VReduceImm : uint8_t {
2077
+ kRoundEven = 0x00u, //!< Round to nearest even.
2078
+ kRoundDown = 0x01u, //!< Round down.
2079
+ kRoundUp = 0x02u, //!< Round up.
2080
+ kRoundTrunc = 0x03u, //!< Truncate.
2081
+ kRoundCurrent = 0x04u, //!< Round to the current mode set.
2082
+ kSuppress = 0x08u, //!< Suppress exceptions.
2083
+ kFixedImmMask = 0xF0u //!< Fixed length value mask.
2084
+ };
2085
+ ASMJIT_DEFINE_ENUM_FLAGS(VReduceImm)
2086
+
2087
+ //! Creates a \ref VReduceImm from a combination of `flags` and `fixedPointLength`.
2088
+ static inline constexpr VReduceImm vReduceImm(VReduceImm flags, uint32_t fixedPointLength) noexcept {
2089
+ return flags | VReduceImm(fixedPointLength << 4);
2090
+ }
2091
+
2092
+ //! A predicate that can be used as an immediate value with VPTERNLOG[D|Q] instruction.
2093
+ //!
2094
+ //! There are 3 inputs to the instruction (\ref kA, \ref kB, \ref kC). Ternary logic can define any combination
2095
+ //! that would be performed on these 3 inputs to get the desired output - any combination of AND, OR, XOR, NOT
2096
+ //! is possible.
2097
+ //!
2098
+ //! \sa \ref tLogFromBits and \ref fLogIfElse
2099
+ enum class TLogImm : uint8_t {
2100
+ k0 = 0x00u, //!< 0 value.
2101
+ k1 = 0xFFu, //!< 1 value.
2102
+ kA = 0xF0u, //!< A value.
2103
+ kB = 0xCCu, //!< B value.
2104
+ kC = 0xAAu, //!< C value.
2105
+
2106
+ kNotA = kA ^ k1, //!< `!A` expression.
2107
+ kNotB = kB ^ k1, //!< `!B` expression.
2108
+ kNotC = kC ^ k1, //!< `!C` expression.
2109
+
2110
+ kAB = kA & kB, //!< `A & B` expression.
2111
+ kAC = kA & kC, //!< `A & C` expression.
2112
+ kBC = kB & kC, //!< `B & C` expression.
2113
+ kNotAB = kAB ^ k1, //!< `!(A & B)` expression.
2114
+ kNotAC = kAC ^ k1, //!< `!(A & C)` expression.
2115
+ kNotBC = kBC ^ k1, //!< `!(B & C)` expression.
2116
+
2117
+ kABC = kAB & kC, //!< `A & B & C` expression.
2118
+ kNotABC = kABC ^ k1 //!< `!(A & B & C)` expression.
2119
+ };
2120
+ ASMJIT_DEFINE_ENUM_FLAGS(TLogImm)
2121
+
2122
+ //! Creates an immediate that can be used by VPTERNLOG[D|Q] instructions.
2123
+ static inline constexpr TLogImm tLogFromBits(uint8_t b000, uint8_t b001, uint8_t b010, uint8_t b011, uint8_t b100, uint8_t b101, uint8_t b110, uint8_t b111) noexcept {
2124
+ return TLogImm(uint8_t(b000 << 0) |
2125
+ uint8_t(b001 << 1) |
2126
+ uint8_t(b010 << 2) |
2127
+ uint8_t(b011 << 3) |
2128
+ uint8_t(b100 << 4) |
2129
+ uint8_t(b101 << 5) |
2130
+ uint8_t(b110 << 6) |
2131
+ uint8_t(b111 << 7));
2132
+ }
2133
+
2134
+ //! Creates an if/else logic that can be used by VPTERNLOG[D|Q] instructions.
2135
+ static inline constexpr TLogImm fLogIfElse(TLogImm condition, TLogImm a, TLogImm b) noexcept { return (condition & a) | (~condition & b); }
2136
+
2137
+ //! Creates a shuffle immediate value that be used with SSE/AVX/AVX-512 instructions to shuffle 2 elements in a vector.
2138
+ //!
2139
+ //! \param a Position of the first component [0, 1].
2140
+ //! \param b Position of the second component [0, 1].
2141
+ //!
2142
+ //! Shuffle constants can be used to encode an immediate for these instructions:
2143
+ //! - `shufpd|vshufpd`
2144
+ static inline constexpr uint32_t shuffleImm(uint32_t a, uint32_t b) noexcept {
2145
+ return (a << 1) | b;
2146
+ }
2147
+
2148
+ //! Creates a shuffle immediate value that be used with SSE/AVX/AVX-512 instructions to shuffle 4 elements in a vector.
2149
+ //!
2150
+ //! \param a Position of the first component [0, 3].
2151
+ //! \param b Position of the second component [0, 3].
2152
+ //! \param c Position of the third component [0, 3].
2153
+ //! \param d Position of the fourth component [0, 3].
2154
+ //!
2155
+ //! Shuffle constants can be used to encode an immediate for these instructions:
2156
+ //! - `pshufw`
2157
+ //! - `pshuflw|vpshuflw`
2158
+ //! - `pshufhw|vpshufhw`
2159
+ //! - `pshufd|vpshufd`
2160
+ //! - `shufps|vshufps`
2161
+ static inline constexpr uint32_t shuffleImm(uint32_t a, uint32_t b, uint32_t c, uint32_t d) noexcept {
2162
+ return (a << 6) | (b << 4) | (c << 2) | d;
2163
+ }
2164
+
2165
+ //! \}
2166
+
2167
+ ASMJIT_END_SUB_NAMESPACE
2168
+
2169
+ #endif // ASMJIT_X86_X86GLOBALS_H_INCLUDED