Codebase list asmjit / 1d8d78f
Import upstream version 0.0~git20230427.3577608 Debian Janitor 11 months ago
75 changed file(s) with 11794 addition(s) and 8275 deletion(s). Raw diff Collapse all Expand all
1313
1414 steps:
1515 - name: "Checkout"
16 uses: actions/checkout@v2
16 uses: actions/checkout@v3
1717
1818 - name: "Setup node.js"
19 uses: actions/setup-node@v1
19 uses: actions/setup-node@v3
2020 with:
21 node-version: "14"
21 node-version: "16"
2222
2323 - name: "Check Enumerations"
2424 run: |
3030 fail-fast: false
3131 matrix:
3232 include:
33 - { title: "linux-lib" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x64", build_type: "Release", problem_matcher: "cpp" }
34 - { title: "windows-lib" , os: "windows-2022" , cc: "vs2022" , arch: "x86", build_type: "Debug" , problem_matcher: "cpp" }
33 - { title: "linux-lib" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Debug" , problem_matcher: "cpp" }
34 - { title: "macos-lib" , os: "macos-latest" , cc: "clang" , arch: "x64", build_type: "Debug" , problem_matcher: "cpp" }
35 - { title: "windows-lib" , os: "windows-latest", cc: "vs2022" , arch: "x64", build_type: "Debug" , problem_matcher: "cpp" }
3536
36 - { title: "diag-asan" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON", diagnostics: "address" }
37 - { title: "diag-ubsan" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON", diagnostics: "undefined" }
38 - { title: "diag-valgrind" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON", diagnostics: "valgrind" }
39 - { title: "diag-scan-build", os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Debug" , diagnostics: "scan-build" }
37 - { title: "diag-asan" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", diagnostics: "address" , defs: "ASMJIT_TEST=1" }
38 - { title: "diag-ubsan" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", diagnostics: "undefined", defs: "ASMJIT_TEST=1" }
39 - { title: "diag-valgrind" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", diagnostics: "valgrind" , defs: "ASMJIT_TEST=1" }
40 - { title: "diag-scan-build" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Debug" , diagnostics: "scan-build" }
4041
41 - { title: "no-deprecated" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON,ASMJIT_NO_DEPRECATED=1" }
42 - { title: "no-intrinsics" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON,ASMJIT_NO_INTRINSICS=1" }
43 - { title: "no-logging" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON,ASMJIT_NO_LOGGING=1" }
44 - { title: "no-builder" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON,ASMJIT_NO_BUILDER=1" }
45 - { title: "no-compiler" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON,ASMJIT_NO_COMPILER=1" }
42 - { title: "no-deprecated" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_DEPRECATED=1" }
43 - { title: "no-intrinsics" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_INTRINSICS=1" }
44 - { title: "no-logging" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_LOGGING=1" }
45 - { title: "no-logging-text" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_LOGGING=1,ASMJIT_NO_TEXT=1" }
46 - { title: "no-builder" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_BUILDER=1" }
47 - { title: "no-compiler" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_COMPILER=1" }
48 - { title: "no-jit" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_JIT=1" }
49 - { title: "no-introspection", os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_INTROSPECTION=1" }
50 - { title: "no-validation" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_VALIDATION=1" }
51 - { title: "no-x86" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_X86=1" }
52 - { title: "no-aarch64" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1,ASMJIT_NO_AARCH64=1" }
4653
47 - { title: "linux" , os: "ubuntu-latest" , cc: "gcc" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
48 - { title: "linux" , os: "ubuntu-latest" , cc: "gcc" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
49 - { title: "linux" , os: "ubuntu-latest" , cc: "gcc" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
50 - { title: "linux" , os: "ubuntu-latest" , cc: "gcc" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
51 - { title: "linux" , os: "ubuntu-18.04" , cc: "gcc-4.8" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
52 - { title: "linux" , os: "ubuntu-18.04" , cc: "gcc-4.8" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
53 - { title: "linux" , os: "ubuntu-18.04" , cc: "gcc-4.8" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
54 - { title: "linux" , os: "ubuntu-18.04" , cc: "gcc-4.8" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
55 - { title: "linux" , os: "ubuntu-18.04" , cc: "gcc-5" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
56 - { title: "linux" , os: "ubuntu-18.04" , cc: "gcc-5" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
57 - { title: "linux" , os: "ubuntu-18.04" , cc: "gcc-6" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
58 - { title: "linux" , os: "ubuntu-18.04" , cc: "gcc-6" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
59 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-7" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
60 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-7" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
61 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-8" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
62 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-8" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
63 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-9" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
64 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-9" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
65 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-10" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
66 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-10" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
67 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-10" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
68 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-10" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
69 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-11" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
70 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-11" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
71 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-11" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
72 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-11" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
73 - { title: "linux" , os: "ubuntu-latest" , cc: "clang" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
74 - { title: "linux" , os: "ubuntu-latest" , cc: "clang" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
75 - { title: "linux" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
76 - { title: "linux" , os: "ubuntu-latest" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
77 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-9" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
78 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-9" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
79 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-9" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
80 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-9" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
81 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-10", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
82 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-10", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
83 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-10", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
84 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-10", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
85 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-11", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
86 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-11", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
87 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-11", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
88 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-11", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
89 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-12", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
90 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-12", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
91 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-12", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
92 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-12", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
93 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-13", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
94 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-13", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
95 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-13", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
96 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-13", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
97 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
98 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
99 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
100 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
54 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-7" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
55 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-7" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
56 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-7" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
57 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-7" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
58 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-8" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
59 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-8" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
60 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-8" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
61 - { title: "linux" , os: "ubuntu-20.04" , cc: "gcc-8" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
62 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-9" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
63 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-9" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
64 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-9" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
65 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-9" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
66 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-10" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
67 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-10" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
68 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-10" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
69 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-10" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
70 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-11" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
71 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-11" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
72 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-11" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
73 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-11" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
74 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-12" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
75 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-12" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
76 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-12" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
77 - { title: "linux" , os: "ubuntu-22.04" , cc: "gcc-12" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
78 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-10", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
79 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-10", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
80 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-10", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
81 - { title: "linux" , os: "ubuntu-20.04" , cc: "clang-10", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
82 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-11", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
83 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-11", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
84 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-11", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
85 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-11", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
86 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-12", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
87 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-12", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
88 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-12", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
89 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-12", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
90 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-13", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
91 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-13", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
92 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-13", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
93 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-13", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
94 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
95 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
96 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
97 - { title: "linux" , os: "ubuntu-22.04" , cc: "clang-14", arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
98 - { title: "macos" , os: "macos-12" , cc: "gcc-11" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
99 - { title: "macos" , os: "macos-12" , cc: "gcc-11" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
100 - { title: "macos" , os: "macos-12" , cc: "clang" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
101 - { title: "macos" , os: "macos-12" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
102 - { title: "windows" , os: "windows-2019" , cc: "vs2019" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
103 - { title: "windows" , os: "windows-2019" , cc: "vs2019" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
104 - { title: "windows" , os: "windows-2019" , cc: "vs2019" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
105 - { title: "windows" , os: "windows-2019" , cc: "vs2019" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
106 - { title: "windows" , os: "windows-2022" , cc: "vs2022" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
107 - { title: "windows" , os: "windows-2022" , cc: "vs2022" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=1" }
108 - { title: "windows" , os: "windows-2022" , cc: "vs2022" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=1" }
109 - { title: "windows" , os: "windows-2022" , cc: "vs2022" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=1" }
101110
102 - { title: "macos-11.0" , os: "macos-11.0" , cc: "gcc-10" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
103 - { title: "macos-11.0" , os: "macos-11.0" , cc: "gcc-10" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
104 - { title: "macos-11.0" , os: "macos-11.0" , cc: "clang" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
105 - { title: "macos-11.0" , os: "macos-11.0" , cc: "clang" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
111 - { host: "macos-12" , os: "freebsd", osver: "13.1", cc: "clang", arch: "x86-64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
112 - { host: "macos-12" , os: "netbsd" , osver: "9.2" , cc: "clang", arch: "x86-64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
113 - { host: "macos-12" , os: "openbsd", osver: "7.2" , cc: "clang", arch: "x86-64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
114 - { host: "ubuntu-latest" , os: "openbsd", osver: "7.2" , cc: "clang", arch: "arm64" , build_type: "Release", defs: "ASMJIT_TEST=ON" }
106115
107 - { title: "windows" , os: "windows-2019" , cc: "vs2019" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
108 - { title: "windows" , os: "windows-2019" , cc: "vs2019" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
109 - { title: "windows" , os: "windows-2019" , cc: "vs2019" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
110 - { title: "windows" , os: "windows-2019" , cc: "vs2019" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
116 name: "${{matrix.title || format('{0}-{1}', matrix.os, matrix.osver)}} (${{matrix.cc}}, ${{matrix.arch}}, ${{matrix.build_type}})"
117 runs-on: "${{matrix.host || matrix.os}}"
111118
112 - { title: "windows" , os: "windows-2022" , cc: "vs2022" , arch: "x86", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
113 - { title: "windows" , os: "windows-2022" , cc: "vs2022" , arch: "x86", build_type: "Release", defs: "ASMJIT_TEST=ON" }
114 - { title: "windows" , os: "windows-2022" , cc: "vs2022" , arch: "x64", build_type: "Debug" , defs: "ASMJIT_TEST=ON" }
115 - { title: "windows" , os: "windows-2022" , cc: "vs2022" , arch: "x64", build_type: "Release", defs: "ASMJIT_TEST=ON" }
116
117 name: "${{matrix.title}} (${{matrix.cc}}, ${{matrix.arch}}, ${{matrix.build_type}})"
118 runs-on: "${{matrix.os}}"
119 # name: "${{matrix.os}}-${{matrix.osver}} (${{matrix.cc}}, ${{matrix.arch}}, ${{matrix.build_type}})"
120 # runs-on: ${{}}
119121
120122 steps:
121123 - name: "Checkout"
134136 with:
135137 python-version: "3.x"
136138
137 - name: "Prepare"
139 - name: "Build & Test"
140 if: ${{!matrix.host}}
138141 run: python build-actions/action.py
139 --step=prepare
140 --compiler=${{matrix.cc}}
141 --diagnostics=${{matrix.diagnostics}}
142 --architecture=${{matrix.arch}}
142 --step=all
143 --compiler=${{matrix.cc}}
144 --architecture=${{matrix.arch}}
145 --source-dir=source
146 --config=source/.github/workflows/build-config.json
147 --build-type=${{matrix.build_type}}
148 --build-defs=${{matrix.defs}}
143149
144 - name: "Configure"
145 run: python build-actions/action.py
146 --step=configure
147 --config=source/.github/workflows/build-config.json
148 --source-dir=source
149 --compiler=${{matrix.cc}}
150 --diagnostics=${{matrix.diagnostics}}
151 --architecture=${{matrix.arch}}
152 --build-type=${{matrix.build_type}}
153 --build-defs=${{matrix.defs}}
154 --problem-matcher=${{matrix.problem_matcher}}
150 - name: "Build & Test in VM"
151 if: ${{matrix.host}}
152 uses: cross-platform-actions/action@master
153 with:
154 operating_system: ${{matrix.os}}
155 architecture: ${{matrix.arch}}
156 version: ${{matrix.osver}}
157 shell: bash
158 run: |
159 set -e
155160
156 - name: "Build"
157 run: python build-actions/action.py --step=build
161 PATH="/usr/sbin:/usr/pkg/sbin:/usr/pkg/bin:$PATH:$(pwd)/build-actions"
162 CI_NETBSD_USE_PKGIN=1
158163
159 - name: "Test"
160 run: python build-actions/action.py --step=test
164 export PATH
165 export CI_NETBSD_USE_PKGIN
166
167 sh ./build-actions/prepare-environment.sh
168 python3 build-actions/action.py \
169 --step=all \
170 --compiler=${{matrix.cc}} \
171 --architecture=${{matrix.arch}} \
172 --source-dir=source \
173 --config=source/.github/workflows/build-config.json \
174 --build-type=${{matrix.build_type}} \
175 --build-defs=${{matrix.defs}}
49964996 #endif
49974997 }
49984998
4999 resetExtraReg();
5000 resetInstOptions();
5001 resetInlineComment();
4999 resetState();
50025000
50035001 writer.done(this);
50045002 return kErrorOk;
50245022 #ifndef ASMJIT_NO_LOGGING
50255023 return EmitterUtils::logInstructionFailed(this, err, instId, options, o0, o1, o2, opExt);
50265024 #else
5027 resetExtraReg();
5028 resetInstOptions();
5029 resetInlineComment();
5025 resetState();
50305026 return reportError(err);
50315027 #endif
50325028 }
5454 _newRegFmt(&reg, type, s, std::forward<Args>(args)...);
5555 return reg;
5656 #else
57 DebugUtils::unused(std::forward<Args>(args)...);
57 DebugUtils::unused(s, std::forward<Args>(args)...);
5858 RegT reg(Globals::NoInit);
5959 _newReg(&reg, type, nullptr);
6060 return reg;
99 #include "../core/support.h"
1010 #include "../arm/a64instdb.h"
1111 #include "../arm/a64operand.h"
12
13 // MSVC targeting AArch64 defines a lot of macros without underscores clashing
14 // with AArch64 instruction names. We have to workaround until it's fixed in SDK.
15 #if defined(_MSC_VER) && defined(mvn)
16 #define ASMJIT_RESTORE_MSVC_AARCH64_MACROS
17 #pragma push_macro("mvn")
18 #undef mvn
19 #endif
1220
1321 ASMJIT_BEGIN_SUB_NAMESPACE(a64)
1422
12241232
12251233 ASMJIT_END_SUB_NAMESPACE
12261234
1235 // Restore undefined MSVC AArch64 macros.
1236 #if defined(ASMJIT_RESTORE_MSVC_AARCH64_MACROS)
1237 #pragma pop_macro("mvn")
1238 #endif
1239
12271240 #endif // ASMJIT_ARM_A64EMITTER_H_INCLUDED
33 // SPDX-License-Identifier: Zlib
44
55 #include "../core/api-build_p.h"
6 #ifndef ASMJIT_NO_LOGGING
6 #if !defined(ASMJIT_NO_AARCH64) && !defined(ASMJIT_NO_LOGGING)
77
88 #include "../core/misc_p.h"
99 #include "../core/support.h"
294294
295295 ASMJIT_END_SUB_NAMESPACE
296296
297 #endif // !ASMJIT_NO_LOGGING
297 #endif // !ASMJIT_NO_AARCH64 && !ASMJIT_NO_LOGGING
77
88 #include "../core/cpuinfo.h"
99 #include "../core/misc_p.h"
10 #include "../core/support.h"
10 #include "../core/support_p.h"
1111 #include "../arm/a64instapi_p.h"
1212 #include "../arm/a64instdb_p.h"
1313 #include "../arm/a64operand.h"
2525 if (ASMJIT_UNLIKELY(!Inst::isDefinedId(realId)))
2626 return DebugUtils::errored(kErrorInvalidInstruction);
2727
28 const InstDB::InstInfo& info = InstDB::infoById(realId);
29 return output.append(InstDB::_nameData + info._nameDataIndex);
28
29 char nameData[32];
30 size_t nameSize = Support::decodeInstName(nameData, InstDB::_instNameIndexTable[realId], InstDB::_instNameStringTable);
31
32 return output.append(nameData, nameSize);
3033 }
3134
3235 InstId InstInternal::stringToInstId(Arch arch, const char* s, size_t len) noexcept {
4548 if (ASMJIT_UNLIKELY(prefix > 'z' - 'a'))
4649 return Inst::kIdNone;
4750
48 uint32_t index = InstDB::instNameIndex[prefix].start;
49 if (ASMJIT_UNLIKELY(!index))
50 return Inst::kIdNone;
51
52 const char* nameData = InstDB::_nameData;
53 const InstDB::InstInfo* table = InstDB::_instInfoTable;
54
55 const InstDB::InstInfo* base = table + index;
56 const InstDB::InstInfo* end = table + InstDB::instNameIndex[prefix].end;
57
58 for (size_t lim = (size_t)(end - base); lim != 0; lim >>= 1) {
59 const InstDB::InstInfo* cur = base + (lim >> 1);
60 int result = Support::cmpInstName(nameData + cur[0]._nameDataIndex, s, len);
61
62 if (result < 0) {
63 base = cur + 1;
51 size_t base = InstDB::instNameIndex[prefix].start;
52 size_t end = InstDB::instNameIndex[prefix].end;
53
54 if (ASMJIT_UNLIKELY(!base))
55 return Inst::kIdNone;
56
57 char nameData[32];
58 for (size_t lim = end - base; lim != 0; lim >>= 1) {
59 size_t instId = base + (lim >> 1);
60 size_t nameSize = Support::decodeInstName(nameData, InstDB::_instNameIndexTable[instId], InstDB::_instNameStringTable);
61
62 int result = Support::compareStringViews(s, len, nameData, nameSize);
63 if (result < 0)
64 continue;
65
66 if (result > 0) {
67 base = instId + 1;
6468 lim--;
6569 continue;
6670 }
6771
68 if (result > 0)
69 continue;
70
71 return uint32_t((size_t)(cur - table));
72 return InstId(instId);
7273 }
7374
7475 return Inst::kIdNone;
1717 // a64::InstDB - InstInfoTable
1818 // ===========================
1919
20 // Don't store `_nameDataIndex` if instruction names are disabled. Since some
21 // APIs can use `_nameDataIndex` it's much safer if it's zero if it's not used.
22 #if defined(ASMJIT_NO_TEXT)
23 #define NAME_DATA_INDEX(x) 0
24 #else
25 #define NAME_DATA_INDEX(x) x
26 #endif
27
2820 // Defines an ARM/AArch64 instruction.
29 #define INST(id, opcodeEncoding, opcodeData, rwInfoIndex, flags, opcodeDataIndex, nameDataIndex) { \
21 #define INST(id, opcodeEncoding, opcodeData, rwInfoIndex, flags, opcodeDataIndex) { \
3022 uint32_t(kEncoding##opcodeEncoding), \
3123 uint32_t(opcodeDataIndex), \
3224 0, \
33 uint32_t(NAME_DATA_INDEX(nameDataIndex)), \
3425 uint16_t(rwInfoIndex), \
3526 uint16_t(flags) \
3627 }
6253 INST_(Irg , BaseRRR , (0b1001101011000000000100, kX , kSP, kX , kSP, kX , kZR, true) , kRWI_W , 0 , 0 , 1 ), // #1
6354 */
6455 const InstInfo _instInfoTable[] = {
65 // +------------------+---------------------+--------------------------------------------------------------------------------------+-----------+---------------------------+----+-----+
66 // | Instruction Id | Encoding | Opcode Data | RW Info | Instruction Flags |DatX|NameX|
67 // +------------------+---------------------+--------------------------------------------------------------------------------------+-----------+---------------------------+----+-----+
56 // +------------------+---------------------+--------------------------------------------------------------------------------------+-----------+---------------------------+----+
57 // | Instruction Id | Encoding | Opcode Data | RW Info | Instruction Flags |DatX|
58 // +------------------+---------------------+--------------------------------------------------------------------------------------+-----------+---------------------------+----+
6859 // ${InstInfo:Begin}
69 INST(None , None , (_) , 0 , 0 , 0 , 0 ), // #0
70 INST(Adc , BaseRRR , (0b0001101000000000000000, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 0 , 1 ), // #1
71 INST(Adcs , BaseRRR , (0b0011101000000000000000, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 1 , 5 ), // #2
72 INST(Add , BaseAddSub , (0b0001011000, 0b0001011001, 0b0010001) , kRWI_W , 0 , 0 , 978 ), // #3
73 INST(Addg , BaseRRII , (0b1001000110000000000000, kX, kSP, kX, kSP, 6, 4, 16, 4, 0, 10) , kRWI_W , 0 , 0 , 10 ), // #4
74 INST(Adds , BaseAddSub , (0b0101011000, 0b0101011001, 0b0110001) , kRWI_W , 0 , 1 , 15 ), // #5
75 INST(Adr , BaseAdr , (0b0001000000000000000000, OffsetType::kAArch64_ADR) , kRWI_W , 0 , 0 , 25 ), // #6
76 INST(Adrp , BaseAdr , (0b1001000000000000000000, OffsetType::kAArch64_ADRP) , kRWI_W , 0 , 1 , 29 ), // #7
77 INST(And , BaseLogical , (0b0001010000, 0b00100100, 0) , kRWI_W , 0 , 0 , 57 ), // #8
78 INST(Ands , BaseLogical , (0b1101010000, 0b11100100, 0) , kRWI_W , 0 , 1 , 61 ), // #9
79 INST(Asr , BaseShift , (0b0001101011000000001010, 0b0001001100000000011111, 0) , kRWI_W , 0 , 0 , 66 ), // #10
80 INST(Asrv , BaseShift , (0b0001101011000000001010, 0b0000000000000000000000, 0) , kRWI_W , 0 , 1 , 70 ), // #11
81 INST(At , BaseAtDcIcTlbi , (0b00011111110000, 0b00001111000000, true) , kRWI_RX , 0 , 0 , 75 ), // #12
82 INST(Autda , BaseRR , (0b11011010110000010001100000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 0 , 78 ), // #13
83 INST(Autdza , BaseR , (0b11011010110000010011101111100000, kX, kZR, 0) , kRWI_X , 0 , 0 , 90 ), // #14
84 INST(Autdb , BaseRR , (0b11011010110000010001110000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 1 , 84 ), // #15
85 INST(Autdzb , BaseR , (0b11011010110000010011111111100000, kX, kZR, 0) , kRWI_X , 0 , 1 , 97 ), // #16
86 INST(Autia , BaseRR , (0b11011010110000010001000000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 2 , 104 ), // #17
87 INST(Autia1716 , BaseOp , (0b11010101000000110010000110011111) , 0 , 0 , 0 , 110 ), // #18
88 INST(Autiasp , BaseOp , (0b11010101000000110010001110111111) , 0 , 0 , 1 , 120 ), // #19
89 INST(Autiaz , BaseOp , (0b11010101000000110010001110011111) , 0 , 0 , 2 , 128 ), // #20
90 INST(Autib , BaseRR , (0b11011010110000010001010000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 3 , 135 ), // #21
91 INST(Autib1716 , BaseOp , (0b11010101000000110010000111011111) , 0 , 0 , 3 , 141 ), // #22
92 INST(Autibsp , BaseOp , (0b11010101000000110010001111111111) , 0 , 0 , 4 , 151 ), // #23
93 INST(Autibz , BaseOp , (0b11010101000000110010001111011111) , 0 , 0 , 5 , 159 ), // #24
94 INST(Autiza , BaseR , (0b11011010110000010011001111100000, kX, kZR, 0) , kRWI_X , 0 , 2 , 166 ), // #25
95 INST(Autizb , BaseR , (0b11011010110000010011011111100000, kX, kZR, 0) , kRWI_X , 0 , 3 , 173 ), // #26
96 INST(Axflag , BaseOp , (0b11010101000000000100000001011111) , 0 , 0 , 6 , 180 ), // #27
97 INST(B , BaseBranchRel , (0b00010100000000000000000000000000) , 0 , F(Cond) , 0 , 1738), // #28
98 INST(Bfc , BaseBfc , (0b00110011000000000000001111100000) , kRWI_X , 0 , 0 , 192 ), // #29
99 INST(Bfi , BaseBfi , (0b00110011000000000000000000000000) , kRWI_X , 0 , 0 , 223 ), // #30
100 INST(Bfm , BaseBfm , (0b00110011000000000000000000000000) , kRWI_X , 0 , 0 , 2514), // #31
101 INST(Bfxil , BaseBfx , (0b00110011000000000000000000000000) , kRWI_X , 0 , 0 , 250 ), // #32
102 INST(Bic , BaseLogical , (0b0001010001, 0b00100100, 1) , kRWI_W , 0 , 2 , 256 ), // #33
103 INST(Bics , BaseLogical , (0b1101010001, 0b11100100, 1) , kRWI_W , 0 , 3 , 260 ), // #34
104 INST(Bl , BaseBranchRel , (0b10010100000000000000000000000000) , 0 , 0 , 1 , 2831), // #35
105 INST(Blr , BaseBranchReg , (0b11010110001111110000000000000000) , kRWI_R , 0 , 0 , 269 ), // #36
106 INST(Br , BaseBranchReg , (0b11010110000111110000000000000000) , kRWI_R , 0 , 1 , 273 ), // #37
107 INST(Brk , BaseOpImm , (0b11010100001000000000000000000000, 16, 5) , 0 , 0 , 0 , 276 ), // #38
108 INST(Cas , BaseAtomicOp , (0b1000100010100000011111, kWX, 30, 0) , kRWI_XRX , 0 , 0 , 284 ), // #39
109 INST(Casa , BaseAtomicOp , (0b1000100011100000011111, kWX, 30, 1) , kRWI_XRX , 0 , 1 , 288 ), // #40
110 INST(Casab , BaseAtomicOp , (0b0000100011100000011111, kW , 0 , 1) , kRWI_XRX , 0 , 2 , 293 ), // #41
111 INST(Casah , BaseAtomicOp , (0b0100100011100000011111, kW , 0 , 1) , kRWI_XRX , 0 , 3 , 299 ), // #42
112 INST(Casal , BaseAtomicOp , (0b1000100011100000111111, kWX, 30, 1) , kRWI_XRX , 0 , 4 , 305 ), // #43
113 INST(Casalb , BaseAtomicOp , (0b0000100011100000111111, kW , 0 , 1) , kRWI_XRX , 0 , 5 , 311 ), // #44
114 INST(Casalh , BaseAtomicOp , (0b0100100011100000111111, kW , 0 , 1) , kRWI_XRX , 0 , 6 , 318 ), // #45
115 INST(Casb , BaseAtomicOp , (0b0000100010100000011111, kW , 0 , 0) , kRWI_XRX , 0 , 7 , 325 ), // #46
116 INST(Cash , BaseAtomicOp , (0b0100100010100000011111, kW , 0 , 0) , kRWI_XRX , 0 , 8 , 330 ), // #47
117 INST(Casl , BaseAtomicOp , (0b1000100010100000111111, kWX, 30, 0) , kRWI_XRX , 0 , 9 , 335 ), // #48
118 INST(Caslb , BaseAtomicOp , (0b0000100010100000111111, kW , 0 , 0) , kRWI_XRX , 0 , 10 , 340 ), // #49
119 INST(Caslh , BaseAtomicOp , (0b0100100010100000111111, kW , 0 , 0) , kRWI_XRX , 0 , 11 , 346 ), // #50
120 INST(Casp , BaseAtomicCasp , (0b0000100000100000011111, kWX, 30) , kRWI_XXRRX, 0 , 0 , 352 ), // #51
121 INST(Caspa , BaseAtomicCasp , (0b0000100001100000011111, kWX, 30) , kRWI_XXRRX, 0 , 1 , 357 ), // #52
122 INST(Caspal , BaseAtomicCasp , (0b0000100001100000111111, kWX, 30) , kRWI_XXRRX, 0 , 2 , 363 ), // #53
123 INST(Caspl , BaseAtomicCasp , (0b0000100000100000111111, kWX, 30) , kRWI_XXRRX, 0 , 3 , 370 ), // #54
124 INST(Cbnz , BaseBranchCmp , (0b00110101000000000000000000000000) , kRWI_R , 0 , 0 , 376 ), // #55
125 INST(Cbz , BaseBranchCmp , (0b00110100000000000000000000000000) , kRWI_R , 0 , 1 , 381 ), // #56
126 INST(Ccmn , BaseCCmp , (0b00111010010000000000000000000000) , kRWI_R , 0 , 0 , 385 ), // #57
127 INST(Ccmp , BaseCCmp , (0b01111010010000000000000000000000) , kRWI_R , 0 , 1 , 650 ), // #58
128 INST(Cfinv , BaseOp , (0b11010101000000000100000000011111) , 0 , 0 , 7 , 390 ), // #59
129 INST(Cinc , BaseCInc , (0b00011010100000000000010000000000) , kRWI_W , 0 , 0 , 396 ), // #60
130 INST(Cinv , BaseCInc , (0b01011010100000000000000000000000) , kRWI_W , 0 , 1 , 401 ), // #61
131 INST(Clrex , BaseOpImm , (0b11010101000000110011000001011111, 4, 8) , 0 , 0 , 1 , 406 ), // #62
132 INST(Cls , BaseRR , (0b01011010110000000001010000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 4 , 412 ), // #63
133 INST(Clz , BaseRR , (0b01011010110000000001000000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 5 , 416 ), // #64
134 INST(Cmn , BaseCmpCmn , (0b0101011000, 0b0101011001, 0b0110001) , kRWI_R , 0 , 0 , 386 ), // #65
135 INST(Cmp , BaseCmpCmn , (0b1101011000, 0b1101011001, 0b1110001) , kRWI_R , 0 , 1 , 651 ), // #66
136 INST(Cmpp , BaseRR , (0b10111010110000000000000000011111, kX, kSP, 5, kX, kSP, 16, true) , kRWI_R , 0 , 6 , 430 ), // #67
137 INST(Cneg , BaseCInc , (0b01011010100000000000010000000000) , kRWI_W , 0 , 2 , 441 ), // #68
138 INST(Crc32b , BaseRRR , (0b0001101011000000010000, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 2 , 450 ), // #69
139 INST(Crc32cb , BaseRRR , (0b0001101011000000010100, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 3 , 457 ), // #70
140 INST(Crc32ch , BaseRRR , (0b0001101011000000010101, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 4 , 465 ), // #71
141 INST(Crc32cw , BaseRRR , (0b0001101011000000010110, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 5 , 473 ), // #72
142 INST(Crc32cx , BaseRRR , (0b1001101011000000010111, kW, kZR, kW, kZR, kX, kZR, false) , kRWI_W , 0 , 6 , 481 ), // #73
143 INST(Crc32h , BaseRRR , (0b0001101011000000010001, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 7 , 489 ), // #74
144 INST(Crc32w , BaseRRR , (0b0001101011000000010010, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 8 , 496 ), // #75
145 INST(Crc32x , BaseRRR , (0b1001101011000000010011, kW, kZR, kW, kZR, kX, kZR, false) , kRWI_W , 0 , 9 , 503 ), // #76
146 INST(Csdb , BaseOp , (0b11010101000000110010001010011111) , 0 , 0 , 8 , 510 ), // #77
147 INST(Csel , BaseCSel , (0b00011010100000000000000000000000) , kRWI_W , 0 , 0 , 710 ), // #78
148 INST(Cset , BaseCSet , (0b00011010100111110000011111100000) , kRWI_W , 0 , 0 , 515 ), // #79
149 INST(Csetm , BaseCSet , (0b01011010100111110000001111100000) , kRWI_W , 0 , 1 , 520 ), // #80
150 INST(Csinc , BaseCSel , (0b00011010100000000000010000000000) , kRWI_W , 0 , 1 , 526 ), // #81
151 INST(Csinv , BaseCSel , (0b01011010100000000000000000000000) , kRWI_W , 0 , 2 , 532 ), // #82
152 INST(Csneg , BaseCSel , (0b01011010100000000000010000000000) , kRWI_W , 0 , 3 , 538 ), // #83
153 INST(Dc , BaseAtDcIcTlbi , (0b00011110000000, 0b00001110000000, true) , kRWI_RX , 0 , 1 , 2 ), // #84
154 INST(Dcps1 , BaseOpImm , (0b11010100101000000000000000000001, 16, 5) , 0 , 0 , 2 , 544 ), // #85
155 INST(Dcps2 , BaseOpImm , (0b11010100101000000000000000000010, 16, 5) , 0 , 0 , 3 , 550 ), // #86
156 INST(Dcps3 , BaseOpImm , (0b11010100101000000000000000000011, 16, 5) , 0 , 0 , 4 , 556 ), // #87
157 INST(Dgh , BaseOp , (0b11010101000000110010000011011111) , 0 , 0 , 9 , 562 ), // #88
158 INST(Dmb , BaseOpImm , (0b11010101000000110011000010111111, 4, 8) , 0 , 0 , 5 , 566 ), // #89
159 INST(Drps , BaseOp , (0b11010110101111110000001111100000) , 0 , 0 , 10 , 570 ), // #90
160 INST(Dsb , BaseOpImm , (0b11010101000000110011000010011111, 4, 8) , 0 , 0 , 6 , 575 ), // #91
161 INST(Eon , BaseLogical , (0b1001010001, 0b10100100, 1) , kRWI_W , 0 , 4 , 583 ), // #92
162 INST(Eor , BaseLogical , (0b1001010000, 0b10100100, 0) , kRWI_W , 0 , 5 , 1418), // #93
163 INST(Esb , BaseOp , (0b11010101000000110010001000011111) , 0 , 0 , 11 , 597 ), // #94
164 INST(Extr , BaseExtract , (0b00010011100000000000000000000000) , kRWI_W , 0 , 0 , 605 ), // #95
165 INST(Eret , BaseOp , (0b11010110100111110000001111100000) , 0 , 0 , 12 , 592 ), // #96
166 INST(Gmi , BaseRRR , (0b1001101011000000000101, kX , kZR, kX , kSP, kX , kZR, true) , kRWI_W , 0 , 10 , 1128), // #97
167 INST(Hint , BaseOpImm , (0b11010101000000110010000000011111, 7, 5) , 0 , 0 , 7 , 1132), // #98
168 INST(Hlt , BaseOpImm , (0b11010100010000000000000000000000, 16, 5) , 0 , 0 , 8 , 1137), // #99
169 INST(Hvc , BaseOpImm , (0b11010100000000000000000000000010, 16, 5) , 0 , 0 , 9 , 1141), // #100
170 INST(Ic , BaseAtDcIcTlbi , (0b00011110000000, 0b00001110000000, false) , kRWI_RX , 0 , 2 , 257 ), // #101
171 INST(Isb , BaseOpImm , (0b11010101000000110011000011011111, 4, 8) , 0 , 0 , 10 , 1149), // #102
172 INST(Ldadd , BaseAtomicOp , (0b1011100000100000000000, kWX, 30, 0) , kRWI_WRX , 0 , 12 , 1189), // #103
173 INST(Ldadda , BaseAtomicOp , (0b1011100010100000000000, kWX, 30, 1) , kRWI_WRX , 0 , 13 , 1195), // #104
174 INST(Ldaddab , BaseAtomicOp , (0b0011100010100000000000, kW , 0 , 1) , kRWI_WRX , 0 , 14 , 1202), // #105
175 INST(Ldaddah , BaseAtomicOp , (0b0111100010100000000000, kW , 0 , 1) , kRWI_WRX , 0 , 15 , 1210), // #106
176 INST(Ldaddal , BaseAtomicOp , (0b1011100011100000000000, kWX, 30, 1) , kRWI_WRX , 0 , 16 , 1218), // #107
177 INST(Ldaddalb , BaseAtomicOp , (0b0011100011100000000000, kW , 0 , 1) , kRWI_WRX , 0 , 17 , 1226), // #108
178 INST(Ldaddalh , BaseAtomicOp , (0b0111100011100000000000, kW , 0 , 1) , kRWI_WRX , 0 , 18 , 1235), // #109
179 INST(Ldaddb , BaseAtomicOp , (0b0011100000100000000000, kW , 0 , 0) , kRWI_WRX , 0 , 19 , 1244), // #110
180 INST(Ldaddh , BaseAtomicOp , (0b0111100000100000000000, kW , 0 , 0) , kRWI_WRX , 0 , 20 , 1251), // #111
181 INST(Ldaddl , BaseAtomicOp , (0b1011100001100000000000, kWX, 30, 0) , kRWI_WRX , 0 , 21 , 1258), // #112
182 INST(Ldaddlb , BaseAtomicOp , (0b0011100001100000000000, kW , 0 , 0) , kRWI_WRX , 0 , 22 , 1265), // #113
183 INST(Ldaddlh , BaseAtomicOp , (0b0111100001100000000000, kW , 0 , 0) , kRWI_WRX , 0 , 23 , 1273), // #114
184 INST(Ldar , BaseRM_NoImm , (0b1000100011011111111111, kWX, kZR, 30) , kRWI_W , 0 , 0 , 1281), // #115
185 INST(Ldarb , BaseRM_NoImm , (0b0000100011011111111111, kW , kZR, 0 ) , kRWI_W , 0 , 1 , 1286), // #116
186 INST(Ldarh , BaseRM_NoImm , (0b0100100011011111111111, kW , kZR, 0 ) , kRWI_W , 0 , 2 , 1292), // #117
187 INST(Ldaxp , BaseLdxp , (0b1000100001111111100000, kWX, 30) , kRWI_WW , 0 , 0 , 1298), // #118
188 INST(Ldaxr , BaseRM_NoImm , (0b1000100001011111111111, kWX, kZR, 30) , kRWI_W , 0 , 3 , 1304), // #119
189 INST(Ldaxrb , BaseRM_NoImm , (0b0000100001011111111111, kW , kZR, 0 ) , kRWI_W , 0 , 4 , 1310), // #120
190 INST(Ldaxrh , BaseRM_NoImm , (0b0100100001011111111111, kW , kZR, 0 ) , kRWI_W , 0 , 5 , 1317), // #121
191 INST(Ldclr , BaseAtomicOp , (0b1011100000100000000100, kWX, 30, 0) , kRWI_WRX , 0 , 24 , 1324), // #122
192 INST(Ldclra , BaseAtomicOp , (0b1011100010100000000100, kWX, 30, 1) , kRWI_WRX , 0 , 25 , 1330), // #123
193 INST(Ldclrab , BaseAtomicOp , (0b0011100010100000000100, kW , 0 , 1) , kRWI_WRX , 0 , 26 , 1337), // #124
194 INST(Ldclrah , BaseAtomicOp , (0b0111100010100000000100, kW , 0 , 1) , kRWI_WRX , 0 , 27 , 1345), // #125
195 INST(Ldclral , BaseAtomicOp , (0b1011100011100000000100, kWX, 30, 1) , kRWI_WRX , 0 , 28 , 1353), // #126
196 INST(Ldclralb , BaseAtomicOp , (0b0011100011100000000100, kW , 0 , 1) , kRWI_WRX , 0 , 29 , 1361), // #127
197 INST(Ldclralh , BaseAtomicOp , (0b0111100011100000000100, kW , 0 , 1) , kRWI_WRX , 0 , 30 , 1370), // #128
198 INST(Ldclrb , BaseAtomicOp , (0b0011100000100000000100, kW , 0 , 0) , kRWI_WRX , 0 , 31 , 1379), // #129
199 INST(Ldclrh , BaseAtomicOp , (0b0111100000100000000100, kW , 0 , 0) , kRWI_WRX , 0 , 32 , 1386), // #130
200 INST(Ldclrl , BaseAtomicOp , (0b1011100001100000000100, kWX, 30, 0) , kRWI_WRX , 0 , 33 , 1393), // #131
201 INST(Ldclrlb , BaseAtomicOp , (0b0011100001100000000100, kW , 0 , 0) , kRWI_WRX , 0 , 34 , 1400), // #132
202 INST(Ldclrlh , BaseAtomicOp , (0b0111100001100000000100, kW , 0 , 0) , kRWI_WRX , 0 , 35 , 1408), // #133
203 INST(Ldeor , BaseAtomicOp , (0b1011100000100000001000, kWX, 30, 0) , kRWI_WRX , 0 , 36 , 1416), // #134
204 INST(Ldeora , BaseAtomicOp , (0b1011100010100000001000, kWX, 30, 1) , kRWI_WRX , 0 , 37 , 1422), // #135
205 INST(Ldeorab , BaseAtomicOp , (0b0011100010100000001000, kW , 0 , 1) , kRWI_WRX , 0 , 38 , 1429), // #136
206 INST(Ldeorah , BaseAtomicOp , (0b0111100010100000001000, kW , 0 , 1) , kRWI_WRX , 0 , 39 , 1437), // #137
207 INST(Ldeoral , BaseAtomicOp , (0b1011100011100000001000, kWX, 30, 1) , kRWI_WRX , 0 , 40 , 1445), // #138
208 INST(Ldeoralb , BaseAtomicOp , (0b0011100011100000001000, kW , 0 , 1) , kRWI_WRX , 0 , 41 , 1453), // #139
209 INST(Ldeoralh , BaseAtomicOp , (0b0111100011100000001000, kW , 0 , 1) , kRWI_WRX , 0 , 42 , 1462), // #140
210 INST(Ldeorb , BaseAtomicOp , (0b0011100000100000001000, kW , 0 , 0) , kRWI_WRX , 0 , 43 , 1471), // #141
211 INST(Ldeorh , BaseAtomicOp , (0b0111100000100000001000, kW , 0 , 0) , kRWI_WRX , 0 , 44 , 1478), // #142
212 INST(Ldeorl , BaseAtomicOp , (0b1011100001100000001000, kWX, 30, 0) , kRWI_WRX , 0 , 45 , 1485), // #143
213 INST(Ldeorlb , BaseAtomicOp , (0b0011100001100000001000, kW , 0 , 0) , kRWI_WRX , 0 , 46 , 1492), // #144
214 INST(Ldeorlh , BaseAtomicOp , (0b0111100001100000001000, kW , 0 , 0) , kRWI_WRX , 0 , 47 , 1500), // #145
215 INST(Ldg , BaseRM_SImm9 , (0b1101100101100000000000, 0b0000000000000000000000, kX , kZR, 0, 4) , kRWI_W , 0 , 0 , 1508), // #146
216 INST(Ldgm , BaseRM_NoImm , (0b1101100111100000000000, kX , kZR, 0 ) , kRWI_W , 0 , 6 , 1512), // #147
217 INST(Ldlar , BaseRM_NoImm , (0b1000100011011111011111, kWX, kZR, 30) , kRWI_W , 0 , 7 , 1517), // #148
218 INST(Ldlarb , BaseRM_NoImm , (0b0000100011011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 8 , 1523), // #149
219 INST(Ldlarh , BaseRM_NoImm , (0b0100100011011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 9 , 1530), // #150
220 INST(Ldnp , BaseLdpStp , (0b0010100001, 0 , kWX, 31, 2) , kRWI_WW , 0 , 0 , 1537), // #151
221 INST(Ldp , BaseLdpStp , (0b0010100101, 0b0010100011, kWX, 31, 2) , kRWI_W , 0 , 1 , 1542), // #152
222 INST(Ldpsw , BaseLdpStp , (0b0110100101, 0b0110100011, kX , 0 , 2) , kRWI_WW , 0 , 2 , 1546), // #153
223 INST(Ldr , BaseLdSt , (0b1011100101, 0b10111000010, 0b10111000011, 0b00011000, kWX, 30, 2, Inst::kIdLdur) , kRWI_W , 0 , 0 , 1552), // #154
224 INST(Ldraa , BaseRM_SImm10 , (0b1111100000100000000001, kX , kZR, 0, 3) , kRWI_W , 0 , 0 , 1556), // #155
225 INST(Ldrab , BaseRM_SImm10 , (0b1111100010100000000001, kX , kZR, 0, 3) , kRWI_W , 0 , 1 , 1562), // #156
226 INST(Ldrb , BaseLdSt , (0b0011100101, 0b00111000010, 0b00111000011, 0 , kW , 0 , 0, Inst::kIdLdurb) , kRWI_W , 0 , 1 , 1568), // #157
227 INST(Ldrh , BaseLdSt , (0b0111100101, 0b01111000010, 0b01111000011, 0 , kW , 0 , 1, Inst::kIdLdurh) , kRWI_W , 0 , 2 , 1573), // #158
228 INST(Ldrsb , BaseLdSt , (0b0011100111, 0b00111000100, 0b00111000111, 0 , kWX, 22, 0, Inst::kIdLdursb) , kRWI_W , 0 , 3 , 1578), // #159
229 INST(Ldrsh , BaseLdSt , (0b0111100111, 0b01111000100, 0b01111000111, 0 , kWX, 22, 1, Inst::kIdLdursh) , kRWI_W , 0 , 4 , 1584), // #160
230 INST(Ldrsw , BaseLdSt , (0b1011100110, 0b10111000100, 0b10111000101, 0b10011000, kX , 0 , 2, Inst::kIdLdursw) , kRWI_W , 0 , 5 , 1590), // #161
231 INST(Ldset , BaseAtomicOp , (0b1011100000100000001100, kWX, 30, 0) , kRWI_WRX , 0 , 48 , 1596), // #162
232 INST(Ldseta , BaseAtomicOp , (0b1011100010100000001100, kWX, 30, 1) , kRWI_WRX , 0 , 49 , 1602), // #163
233 INST(Ldsetab , BaseAtomicOp , (0b0011100010100000001100, kW , 0 , 1) , kRWI_WRX , 0 , 50 , 1609), // #164
234 INST(Ldsetah , BaseAtomicOp , (0b0111100010100000001100, kW , 0 , 1) , kRWI_WRX , 0 , 51 , 1617), // #165
235 INST(Ldsetal , BaseAtomicOp , (0b1011100011100000001100, kWX, 30, 1) , kRWI_WRX , 0 , 52 , 1625), // #166
236 INST(Ldsetalb , BaseAtomicOp , (0b0011100011100000001100, kW , 0 , 1) , kRWI_WRX , 0 , 53 , 1633), // #167
237 INST(Ldsetalh , BaseAtomicOp , (0b0111100011100000001100, kW , 0 , 1) , kRWI_WRX , 0 , 54 , 1642), // #168
238 INST(Ldsetb , BaseAtomicOp , (0b0011100000100000001100, kW , 0 , 0) , kRWI_WRX , 0 , 55 , 1651), // #169
239 INST(Ldseth , BaseAtomicOp , (0b0111100000100000001100, kW , 0 , 0) , kRWI_WRX , 0 , 56 , 1658), // #170
240 INST(Ldsetl , BaseAtomicOp , (0b1011100001100000001100, kWX, 30, 0) , kRWI_WRX , 0 , 57 , 1665), // #171
241 INST(Ldsetlb , BaseAtomicOp , (0b0011100001100000001100, kW , 0 , 0) , kRWI_WRX , 0 , 58 , 1672), // #172
242 INST(Ldsetlh , BaseAtomicOp , (0b0111100001100000001100, kW , 0 , 0) , kRWI_WRX , 0 , 59 , 1680), // #173
243 INST(Ldsmax , BaseAtomicOp , (0b1011100000100000010000, kWX, 30, 0) , kRWI_WRX , 0 , 60 , 1688), // #174
244 INST(Ldsmaxa , BaseAtomicOp , (0b1011100010100000010000, kWX, 30, 1) , kRWI_WRX , 0 , 61 , 1695), // #175
245 INST(Ldsmaxab , BaseAtomicOp , (0b0011100010100000010000, kW , 0 , 1) , kRWI_WRX , 0 , 62 , 1703), // #176
246 INST(Ldsmaxah , BaseAtomicOp , (0b0111100010100000010000, kW , 0 , 1) , kRWI_WRX , 0 , 63 , 1712), // #177
247 INST(Ldsmaxal , BaseAtomicOp , (0b1011100011100000010000, kWX, 30, 1) , kRWI_WRX , 0 , 64 , 1721), // #178
248 INST(Ldsmaxalb , BaseAtomicOp , (0b0011100011100000010000, kW , 0 , 1) , kRWI_WRX , 0 , 65 , 1730), // #179
249 INST(Ldsmaxalh , BaseAtomicOp , (0b0111100011100000010000, kW , 0 , 1) , kRWI_WRX , 0 , 66 , 1740), // #180
250 INST(Ldsmaxb , BaseAtomicOp , (0b0011100000100000010000, kW , 0 , 0) , kRWI_WRX , 0 , 67 , 1750), // #181
251 INST(Ldsmaxh , BaseAtomicOp , (0b0111100000100000010000, kW , 0 , 0) , kRWI_WRX , 0 , 68 , 1758), // #182
252 INST(Ldsmaxl , BaseAtomicOp , (0b1011100001100000010000, kWX, 30, 0) , kRWI_WRX , 0 , 69 , 1766), // #183
253 INST(Ldsmaxlb , BaseAtomicOp , (0b0011100001100000010000, kW , 0 , 0) , kRWI_WRX , 0 , 70 , 1774), // #184
254 INST(Ldsmaxlh , BaseAtomicOp , (0b0111100001100000010000, kW , 0 , 0) , kRWI_WRX , 0 , 71 , 1783), // #185
255 INST(Ldsmin , BaseAtomicOp , (0b1011100000100000010100, kWX, 30, 0) , kRWI_WRX , 0 , 72 , 1792), // #186
256 INST(Ldsmina , BaseAtomicOp , (0b1011100010100000010100, kWX, 30, 1) , kRWI_WRX , 0 , 73 , 1799), // #187
257 INST(Ldsminab , BaseAtomicOp , (0b0011100010100000010100, kW , 0 , 1) , kRWI_WRX , 0 , 74 , 1807), // #188
258 INST(Ldsminah , BaseAtomicOp , (0b0111100010100000010100, kW , 0 , 1) , kRWI_WRX , 0 , 75 , 1816), // #189
259 INST(Ldsminal , BaseAtomicOp , (0b1011100011100000010100, kWX, 30, 1) , kRWI_WRX , 0 , 76 , 1825), // #190
260 INST(Ldsminalb , BaseAtomicOp , (0b0011100011100000010100, kW , 0 , 1) , kRWI_WRX , 0 , 77 , 1834), // #191
261 INST(Ldsminalh , BaseAtomicOp , (0b0111100011100000010100, kW , 0 , 1) , kRWI_WRX , 0 , 78 , 1844), // #192
262 INST(Ldsminb , BaseAtomicOp , (0b0011100000100000010100, kW , 0 , 0) , kRWI_WRX , 0 , 79 , 1854), // #193
263 INST(Ldsminh , BaseAtomicOp , (0b0111100000100000010100, kW , 0 , 0) , kRWI_WRX , 0 , 80 , 1862), // #194
264 INST(Ldsminl , BaseAtomicOp , (0b1011100001100000010100, kWX, 30, 0) , kRWI_WRX , 0 , 81 , 1870), // #195
265 INST(Ldsminlb , BaseAtomicOp , (0b0011100001100000010100, kW , 0 , 0) , kRWI_WRX , 0 , 82 , 1878), // #196
266 INST(Ldsminlh , BaseAtomicOp , (0b0111100001100000010100, kW , 0 , 0) , kRWI_WRX , 0 , 83 , 1887), // #197
267 INST(Ldtr , BaseRM_SImm9 , (0b1011100001000000000010, 0b0000000000000000000000, kWX, kZR, 30, 0) , kRWI_W , 0 , 1 , 1896), // #198
268 INST(Ldtrb , BaseRM_SImm9 , (0b0011100001000000000010, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 2 , 1901), // #199
269 INST(Ldtrh , BaseRM_SImm9 , (0b0111100001000000000010, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 3 , 1907), // #200
270 INST(Ldtrsb , BaseRM_SImm9 , (0b0011100011000000000010, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 4 , 1913), // #201
271 INST(Ldtrsh , BaseRM_SImm9 , (0b0111100011000000000010, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 5 , 1920), // #202
272 INST(Ldtrsw , BaseRM_SImm9 , (0b1011100010000000000010, 0b0000000000000000000000, kX , kZR, 0 , 0) , kRWI_W , 0 , 6 , 1927), // #203
273 INST(Ldumax , BaseAtomicOp , (0b1011100000100000011000, kWX, 30, 0) , kRWI_WRX , 0 , 84 , 1934), // #204
274 INST(Ldumaxa , BaseAtomicOp , (0b1011100010100000011000, kWX, 30, 1) , kRWI_WRX , 0 , 85 , 1941), // #205
275 INST(Ldumaxab , BaseAtomicOp , (0b0011100010100000011000, kW , 0 , 1) , kRWI_WRX , 0 , 86 , 1949), // #206
276 INST(Ldumaxah , BaseAtomicOp , (0b0111100010100000011000, kW , 0 , 1) , kRWI_WRX , 0 , 87 , 1958), // #207
277 INST(Ldumaxal , BaseAtomicOp , (0b1011100011100000011000, kWX, 30, 1) , kRWI_WRX , 0 , 88 , 1967), // #208
278 INST(Ldumaxalb , BaseAtomicOp , (0b0011100011100000011000, kW , 0 , 1) , kRWI_WRX , 0 , 89 , 1976), // #209
279 INST(Ldumaxalh , BaseAtomicOp , (0b0111100011100000011000, kW , 0 , 1) , kRWI_WRX , 0 , 90 , 1986), // #210
280 INST(Ldumaxb , BaseAtomicOp , (0b0011100000100000011000, kW , 0 , 0) , kRWI_WRX , 0 , 91 , 1996), // #211
281 INST(Ldumaxh , BaseAtomicOp , (0b0111100000100000011000, kW , 0 , 0) , kRWI_WRX , 0 , 92 , 2004), // #212
282 INST(Ldumaxl , BaseAtomicOp , (0b1011100001100000011000, kWX, 30, 0) , kRWI_WRX , 0 , 93 , 2012), // #213
283 INST(Ldumaxlb , BaseAtomicOp , (0b0011100001100000011000, kW , 0 , 0) , kRWI_WRX , 0 , 94 , 2020), // #214
284 INST(Ldumaxlh , BaseAtomicOp , (0b0111100001100000011000, kW , 0 , 0) , kRWI_WRX , 0 , 95 , 2029), // #215
285 INST(Ldumin , BaseAtomicOp , (0b1011100000100000011100, kWX, 30, 0) , kRWI_WRX , 0 , 96 , 2038), // #216
286 INST(Ldumina , BaseAtomicOp , (0b1011100010100000011100, kWX, 30, 1) , kRWI_WRX , 0 , 97 , 2045), // #217
287 INST(Lduminab , BaseAtomicOp , (0b0011100010100000011100, kW , 0 , 1) , kRWI_WRX , 0 , 98 , 2053), // #218
288 INST(Lduminah , BaseAtomicOp , (0b0111100010100000011100, kW , 0 , 1) , kRWI_WRX , 0 , 99 , 2062), // #219
289 INST(Lduminal , BaseAtomicOp , (0b1011100011100000011100, kWX, 30, 1) , kRWI_WRX , 0 , 100, 2071), // #220
290 INST(Lduminalb , BaseAtomicOp , (0b0011100011100000011100, kW , 0 , 1) , kRWI_WRX , 0 , 101, 2080), // #221
291 INST(Lduminalh , BaseAtomicOp , (0b0111100011100000011100, kW , 0 , 1) , kRWI_WRX , 0 , 102, 2090), // #222
292 INST(Lduminb , BaseAtomicOp , (0b0011100000100000011100, kW , 0 , 0) , kRWI_WRX , 0 , 103, 2100), // #223
293 INST(Lduminh , BaseAtomicOp , (0b0111100000100000011100, kW , 0 , 0) , kRWI_WRX , 0 , 104, 2108), // #224
294 INST(Lduminl , BaseAtomicOp , (0b1011100001100000011100, kWX, 30, 0) , kRWI_WRX , 0 , 105, 2116), // #225
295 INST(Lduminlb , BaseAtomicOp , (0b0011100001100000011100, kW , 0 , 0) , kRWI_WRX , 0 , 106, 2124), // #226
296 INST(Lduminlh , BaseAtomicOp , (0b0111100001100000011100, kW , 0 , 0) , kRWI_WRX , 0 , 107, 2133), // #227
297 INST(Ldur , BaseRM_SImm9 , (0b1011100001000000000000, 0b0000000000000000000000, kWX, kZR, 30, 0) , kRWI_W , 0 , 7 , 2142), // #228
298 INST(Ldurb , BaseRM_SImm9 , (0b0011100001000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 8 , 2147), // #229
299 INST(Ldurh , BaseRM_SImm9 , (0b0111100001000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 9 , 2153), // #230
300 INST(Ldursb , BaseRM_SImm9 , (0b0011100011000000000000, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 10 , 2159), // #231
301 INST(Ldursh , BaseRM_SImm9 , (0b0111100011000000000000, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 11 , 2166), // #232
302 INST(Ldursw , BaseRM_SImm9 , (0b1011100010000000000000, 0b0000000000000000000000, kX, kZR, 0 , 0) , kRWI_W , 0 , 12 , 2173), // #233
303 INST(Ldxp , BaseLdxp , (0b1000100001111111000000, kWX, 30) , kRWI_WW , 0 , 1 , 2180), // #234
304 INST(Ldxr , BaseRM_NoImm , (0b1000100001011111011111, kWX, kZR, 30) , kRWI_W , 0 , 10 , 2185), // #235
305 INST(Ldxrb , BaseRM_NoImm , (0b0000100001011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 11 , 2190), // #236
306 INST(Ldxrh , BaseRM_NoImm , (0b0100100001011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 12 , 2196), // #237
307 INST(Lsl , BaseShift , (0b0001101011000000001000, 0b0101001100000000000000, 0) , kRWI_W , 0 , 2 , 2880), // #238
308 INST(Lslv , BaseShift , (0b0001101011000000001000, 0b0000000000000000000000, 0) , kRWI_W , 0 , 3 , 2202), // #239
309 INST(Lsr , BaseShift , (0b0001101011000000001001, 0b0101001100000000011111, 0) , kRWI_W , 0 , 4 , 2207), // #240
310 INST(Lsrv , BaseShift , (0b0001101011000000001001, 0b0000000000000000000000, 0) , kRWI_W , 0 , 5 , 2211), // #241
311 INST(Madd , BaseRRRR , (0b0001101100000000000000, kWX, kZR, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 0 , 977 ), // #242
312 INST(Mneg , BaseRRR , (0b0001101100000000111111, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 11 , 2216), // #243
313 INST(Mov , BaseMov , (_) , kRWI_W , 0 , 0 , 949 ), // #244
314 INST(Movk , BaseMovKNZ , (0b01110010100000000000000000000000) , kRWI_X , 0 , 0 , 2226), // #245
315 INST(Movn , BaseMovKNZ , (0b00010010100000000000000000000000) , kRWI_W , 0 , 1 , 2231), // #246
316 INST(Movz , BaseMovKNZ , (0b01010010100000000000000000000000) , kRWI_W , 0 , 2 , 2236), // #247
317 INST(Mrs , BaseMrs , (_) , kRWI_W , 0 , 0 , 2241), // #248
318 INST(Msr , BaseMsr , (_) , kRWI_W , 0 , 0 , 2245), // #249
319 INST(Msub , BaseRRRR , (0b0001101100000000100000, kWX, kZR, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 1 , 984 ), // #250
320 INST(Mul , BaseRRR , (0b0001101100000000011111, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 12 , 991 ), // #251
321 INST(Mvn , BaseMvnNeg , (0b00101010001000000000001111100000) , kRWI_W , 0 , 0 , 2249), // #252
322 INST(Neg , BaseMvnNeg , (0b01001011000000000000001111100000) , kRWI_W , 0 , 1 , 540 ), // #253
323 INST(Negs , BaseMvnNeg , (0b01101011000000000000001111100000) , kRWI_W , 0 , 2 , 2258), // #254
324 INST(Ngc , BaseRR , (0b01011010000000000000001111100000, kWX, kZR, 0, kWX, kZR, 16, true) , kRWI_W , 0 , 7 , 2263), // #255
325 INST(Ngcs , BaseRR , (0b01111010000000000000001111100000, kWX, kZR, 0, kWX, kZR, 16, true) , kRWI_W , 0 , 8 , 2267), // #256
326 INST(Nop , BaseOp , (0b11010101000000110010000000011111) , 0 , 0 , 13 , 2272), // #257
327 INST(Orn , BaseLogical , (0b0101010001, 0b01100100, 1) , kRWI_W , 0 , 6 , 2280), // #258
328 INST(Orr , BaseLogical , (0b0101010000, 0b01100100, 0) , kRWI_W , 0 , 7 , 2284), // #259
329 INST(Pacda , BaseRR , (0b11011010110000010000100000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 9 , 2288), // #260
330 INST(Pacdb , BaseRR , (0b11011010110000010000110000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 10 , 2294), // #261
331 INST(Pacdza , BaseR , (0b11011010110000010010101111100000, kX, kZR, 0) , kRWI_X , 0 , 4 , 2300), // #262
332 INST(Pacdzb , BaseR , (0b11011010110000010010111111100000, kX, kZR, 0) , kRWI_X , 0 , 5 , 2307), // #263
333 INST(Pacga , BaseRRR , (0b1001101011000000001100, kX, kZR, kX, kZR, kX, kSP, false) , kRWI_W , 0 , 13 , 2314), // #264
334 INST(Pssbb , BaseOp , (0b11010101000000110011010010011111) , 0 , 0 , 14 , 2338), // #265
335 INST(Rbit , BaseRR , (0b01011010110000000000000000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 11 , 2364), // #266
336 INST(Ret , BaseBranchReg , (0b11010110010111110000000000000000) , kRWI_R , 0 , 2 , 593 ), // #267
337 INST(Rev , BaseRev , (_) , kRWI_W , 0 , 0 , 2369), // #268
338 INST(Rev16 , BaseRR , (0b01011010110000000000010000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 12 , 2373), // #269
339 INST(Rev32 , BaseRR , (0b11011010110000000000100000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 13 , 2379), // #270
340 INST(Rev64 , BaseRR , (0b11011010110000000000110000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 14 , 2385), // #271
341 INST(Ror , BaseShift , (0b0001101011000000001011, 0b0001001110000000000000, 1) , kRWI_W , 0 , 6 , 2391), // #272
342 INST(Rorv , BaseShift , (0b0001101011000000001011, 0b0000000000000000000000, 1) , kRWI_W , 0 , 7 , 2395), // #273
343 INST(Sbc , BaseRRR , (0b0101101000000000000000, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 14 , 2498), // #274
344 INST(Sbcs , BaseRRR , (0b0111101000000000000000, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 15 , 2502), // #275
345 INST(Sbfiz , BaseBfi , (0b00010011000000000000000000000000) , kRWI_W , 0 , 1 , 2507), // #276
346 INST(Sbfm , BaseBfm , (0b00010011000000000000000000000000) , kRWI_W , 0 , 1 , 2513), // #277
347 INST(Sbfx , BaseBfx , (0b00010011000000000000000000000000) , kRWI_W , 0 , 1 , 2518), // #278
348 INST(Sdiv , BaseRRR , (0b0001101011000000000011, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 16 , 2529), // #279
349 INST(Setf8 , BaseR , (0b00111010000000000000100000001101, kW, kZR, 5) , 0 , 0 , 6 , 2541), // #280
350 INST(Setf16 , BaseR , (0b00111010000000000100100000001101, kW, kZR, 5) , 0 , 0 , 7 , 2534), // #281
351 INST(Sev , BaseOp , (0b11010101000000110010000010011111) , 0 , 0 , 15 , 2547), // #282
352 INST(Sevl , BaseOp , (0b11010101000000110010000010111111) , 0 , 0 , 16 , 2551), // #283
353 INST(Smaddl , BaseRRRR , (0b1001101100100000000000, kX , kZR, kW , kZR, kW , kZR, kX , kZR, false) , kRWI_W , 0 , 2 , 2758), // #284
354 INST(Smc , BaseOpImm , (0b11010100000000000000000000000011, 16, 5) , 0 , 0 , 11 , 53 ), // #285
355 INST(Smnegl , BaseRRR , (0b1001101100100000111111, kX , kZR, kW , kZR, kW , kZR, false) , kRWI_W , 0 , 17 , 2815), // #286
356 INST(Smsubl , BaseRRRR , (0b1001101100100000100000, kX , kZR, kW , kZR, kW , kZR, kX , kZR, false) , kRWI_W , 0 , 3 , 2827), // #287
357 INST(Smulh , BaseRRR , (0b1001101101000000011111, kX , kZR, kX , kZR, kX , kZR, true) , kRWI_W , 0 , 18 , 2834), // #288
358 INST(Smull , BaseRRR , (0b1001101100100000011111, kX , kZR, kW , kZR, kW , kZR, false) , kRWI_W , 0 , 19 , 2840), // #289
359 INST(Ssbb , BaseOp , (0b11010101000000110011000010011111) , 0 , 0 , 17 , 2339), // #290
360 INST(St2g , BaseRM_SImm9 , (0b1101100110100000000010, 0b1101100110100000000001, kX, kSP, 0, 4) , kRWI_RW , 0 , 13 , 3164), // #291
361 INST(Stadd , BaseAtomicSt , (0b1011100000100000000000, kWX, 30) , kRWI_RX , 0 , 0 , 3177), // #292
362 INST(Staddl , BaseAtomicSt , (0b1011100001100000000000, kWX, 30) , kRWI_RX , 0 , 1 , 3197), // #293
363 INST(Staddb , BaseAtomicSt , (0b0011100000100000000000, kW , 0 ) , kRWI_RX , 0 , 2 , 3183), // #294
364 INST(Staddlb , BaseAtomicSt , (0b0011100001100000000000, kW , 0 ) , kRWI_RX , 0 , 3 , 3204), // #295
365 INST(Staddh , BaseAtomicSt , (0b0111100000100000000000, kW , 0 ) , kRWI_RX , 0 , 4 , 3190), // #296
366 INST(Staddlh , BaseAtomicSt , (0b0111100001100000000000, kW , 0 ) , kRWI_RX , 0 , 5 , 3212), // #297
367 INST(Stclr , BaseAtomicSt , (0b1011100000100000000100, kWX, 30) , kRWI_RX , 0 , 6 , 3220), // #298
368 INST(Stclrl , BaseAtomicSt , (0b1011100001100000000100, kWX, 30) , kRWI_RX , 0 , 7 , 3240), // #299
369 INST(Stclrb , BaseAtomicSt , (0b0011100000100000000100, kW , 0 ) , kRWI_RX , 0 , 8 , 3226), // #300
370 INST(Stclrlb , BaseAtomicSt , (0b0011100001100000000100, kW , 0 ) , kRWI_RX , 0 , 9 , 3247), // #301
371 INST(Stclrh , BaseAtomicSt , (0b0111100000100000000100, kW , 0 ) , kRWI_RX , 0 , 10 , 3233), // #302
372 INST(Stclrlh , BaseAtomicSt , (0b0111100001100000000100, kW , 0 ) , kRWI_RX , 0 , 11 , 3255), // #303
373 INST(Steor , BaseAtomicSt , (0b1011100000100000001000, kWX, 30) , kRWI_RX , 0 , 12 , 3263), // #304
374 INST(Steorl , BaseAtomicSt , (0b1011100001100000001000, kWX, 30) , kRWI_RX , 0 , 13 , 3283), // #305
375 INST(Steorb , BaseAtomicSt , (0b0011100000100000001000, kW , 0 ) , kRWI_RX , 0 , 14 , 3269), // #306
376 INST(Steorlb , BaseAtomicSt , (0b0011100001100000001000, kW , 0 ) , kRWI_RX , 0 , 15 , 3290), // #307
377 INST(Steorh , BaseAtomicSt , (0b0111100000100000001000, kW , 0 ) , kRWI_RX , 0 , 16 , 3276), // #308
378 INST(Steorlh , BaseAtomicSt , (0b0111100001100000001000, kW , 0 ) , kRWI_RX , 0 , 17 , 3298), // #309
379 INST(Stg , BaseRM_SImm9 , (0b1101100100100000000010, 0b1101100100100000000001, kX, kSP, 0, 4) , kRWI_RW , 0 , 14 , 3306), // #310
380 INST(Stgm , BaseRM_NoImm , (0b1101100110100000000000, kX , kZR, 0 ) , kRWI_RW , 0 , 13 , 3310), // #311
381 INST(Stgp , BaseLdpStp , (0b0110100100, 0b0110100010, kX, 0, 4) , kRWI_RRW , 0 , 3 , 3315), // #312
382 INST(Stllr , BaseRM_NoImm , (0b1000100010011111011111, kWX, kZR, 30) , kRWI_RW , 0 , 14 , 3320), // #313
383 INST(Stllrb , BaseRM_NoImm , (0b0000100010011111011111, kW , kZR, 0 ) , kRWI_RW , 0 , 15 , 3326), // #314
384 INST(Stllrh , BaseRM_NoImm , (0b0100100010011111011111, kW , kZR, 0 ) , kRWI_RW , 0 , 16 , 3333), // #315
385 INST(Stlr , BaseRM_NoImm , (0b1000100010011111111111, kWX, kZR, 30) , kRWI_RW , 0 , 17 , 3340), // #316
386 INST(Stlrb , BaseRM_NoImm , (0b0000100010011111111111, kW , kZR, 0 ) , kRWI_RW , 0 , 18 , 3345), // #317
387 INST(Stlrh , BaseRM_NoImm , (0b0100100010011111111111, kW , kZR, 0 ) , kRWI_RW , 0 , 19 , 3351), // #318
388 INST(Stlxp , BaseStxp , (0b1000100000100000100000, kWX, 30) , kRWI_WRRX , 0 , 0 , 3357), // #319
389 INST(Stlxr , BaseAtomicOp , (0b1000100000000000111111, kWX, 30, 1) , kRWI_WRX , 0 , 108, 3363), // #320
390 INST(Stlxrb , BaseAtomicOp , (0b0000100000000000111111, kW , 0 , 1) , kRWI_WRX , 0 , 109, 3369), // #321
391 INST(Stlxrh , BaseAtomicOp , (0b0100100000000000111111, kW , 0 , 1) , kRWI_WRX , 0 , 110, 3376), // #322
392 INST(Stnp , BaseLdpStp , (0b0010100000, 0 , kWX, 31, 2) , kRWI_RRW , 0 , 4 , 3383), // #323
393 INST(Stp , BaseLdpStp , (0b0010100100, 0b0010100010, kWX, 31, 2) , kRWI_RRW , 0 , 5 , 3388), // #324
394 INST(Str , BaseLdSt , (0b1011100100, 0b10111000000, 0b10111000001, 0 , kWX, 30, 2, Inst::kIdStur) , kRWI_RW , 0 , 6 , 3392), // #325
395 INST(Strb , BaseLdSt , (0b0011100100, 0b00111000000, 0b00111000001, 0 , kW , 30, 0, Inst::kIdSturb) , kRWI_RW , 0 , 7 , 3396), // #326
396 INST(Strh , BaseLdSt , (0b0111100100, 0b01111000000, 0b01111000001, 0 , kWX, 30, 1, Inst::kIdSturh) , kRWI_RW , 0 , 8 , 3401), // #327
397 INST(Stset , BaseAtomicSt , (0b1011100000100000001100, kWX, 30) , kRWI_RX , 0 , 18 , 3406), // #328
398 INST(Stsetl , BaseAtomicSt , (0b1011100001100000001100, kWX, 30) , kRWI_RX , 0 , 19 , 3426), // #329
399 INST(Stsetb , BaseAtomicSt , (0b0011100000100000001100, kW , 0 ) , kRWI_RX , 0 , 20 , 3412), // #330
400 INST(Stsetlb , BaseAtomicSt , (0b0011100001100000001100, kW , 0 ) , kRWI_RX , 0 , 21 , 3433), // #331
401 INST(Stseth , BaseAtomicSt , (0b0111100000100000001100, kW , 0 ) , kRWI_RX , 0 , 22 , 3419), // #332
402 INST(Stsetlh , BaseAtomicSt , (0b0111100001100000001100, kW , 0 ) , kRWI_RX , 0 , 23 , 3441), // #333
403 INST(Stsmax , BaseAtomicSt , (0b1011100000100000010000, kWX, 30) , kRWI_RX , 0 , 24 , 3449), // #334
404 INST(Stsmaxl , BaseAtomicSt , (0b1011100001100000010000, kWX, 30) , kRWI_RX , 0 , 25 , 3472), // #335
405 INST(Stsmaxb , BaseAtomicSt , (0b0011100000100000010000, kW , 0 ) , kRWI_RX , 0 , 26 , 3456), // #336
406 INST(Stsmaxlb , BaseAtomicSt , (0b0011100001100000010000, kW , 0 ) , kRWI_RX , 0 , 27 , 3480), // #337
407 INST(Stsmaxh , BaseAtomicSt , (0b0111100000100000010000, kW , 0 ) , kRWI_RX , 0 , 28 , 3464), // #338
408 INST(Stsmaxlh , BaseAtomicSt , (0b0111100001100000010000, kW , 0 ) , kRWI_RX , 0 , 29 , 3489), // #339
409 INST(Stsmin , BaseAtomicSt , (0b1011100000100000010100, kWX, 30) , kRWI_RX , 0 , 30 , 3498), // #340
410 INST(Stsminl , BaseAtomicSt , (0b1011100001100000010100, kWX, 30) , kRWI_RX , 0 , 31 , 3521), // #341
411 INST(Stsminb , BaseAtomicSt , (0b0011100000100000010100, kW , 0 ) , kRWI_RX , 0 , 32 , 3505), // #342
412 INST(Stsminlb , BaseAtomicSt , (0b0011100001100000010100, kW , 0 ) , kRWI_RX , 0 , 33 , 3529), // #343
413 INST(Stsminh , BaseAtomicSt , (0b0111100000100000010100, kW , 0 ) , kRWI_RX , 0 , 34 , 3513), // #344
414 INST(Stsminlh , BaseAtomicSt , (0b0111100001100000010100, kW , 0 ) , kRWI_RX , 0 , 35 , 3538), // #345
415 INST(Sttr , BaseRM_SImm9 , (0b1011100000000000000010, 0b0000000000000000000000, kWX, kZR, 30, 0) , kRWI_RW , 0 , 15 , 3547), // #346
416 INST(Sttrb , BaseRM_SImm9 , (0b0011100000000000000010, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_RW , 0 , 16 , 3552), // #347
417 INST(Sttrh , BaseRM_SImm9 , (0b0111100000000000000010, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_RW , 0 , 17 , 3558), // #348
418 INST(Stumax , BaseAtomicSt , (0b1011100000100000011000, kWX, 30) , kRWI_RX , 0 , 36 , 3564), // #349
419 INST(Stumaxl , BaseAtomicSt , (0b1011100001100000011000, kWX, 30) , kRWI_RX , 0 , 37 , 3587), // #350
420 INST(Stumaxb , BaseAtomicSt , (0b0011100000100000011000, kW , 0 ) , kRWI_RX , 0 , 38 , 3571), // #351
421 INST(Stumaxlb , BaseAtomicSt , (0b0011100001100000011000, kW , 0 ) , kRWI_RX , 0 , 39 , 3595), // #352
422 INST(Stumaxh , BaseAtomicSt , (0b0111100000100000011000, kW , 0 ) , kRWI_RX , 0 , 40 , 3579), // #353
423 INST(Stumaxlh , BaseAtomicSt , (0b0111100001100000011000, kW , 0 ) , kRWI_RX , 0 , 41 , 3604), // #354
424 INST(Stumin , BaseAtomicSt , (0b1011100000100000011100, kWX, 30) , kRWI_RX , 0 , 42 , 3613), // #355
425 INST(Stuminl , BaseAtomicSt , (0b1011100001100000011100, kWX, 30) , kRWI_RX , 0 , 43 , 3636), // #356
426 INST(Stuminb , BaseAtomicSt , (0b0011100000100000011100, kW , 0 ) , kRWI_RX , 0 , 44 , 3620), // #357
427 INST(Stuminlb , BaseAtomicSt , (0b0011100001100000011100, kW , 0 ) , kRWI_RX , 0 , 45 , 3644), // #358
428 INST(Stuminh , BaseAtomicSt , (0b0111100000100000011100, kW , 0 ) , kRWI_RX , 0 , 46 , 3628), // #359
429 INST(Stuminlh , BaseAtomicSt , (0b0111100001100000011100, kW , 0 ) , kRWI_RX , 0 , 47 , 3653), // #360
430 INST(Stur , BaseRM_SImm9 , (0b1011100000000000000000, 0b0000000000000000000000, kWX, kZR, 30, 0) , kRWI_RW , 0 , 18 , 3662), // #361
431 INST(Sturb , BaseRM_SImm9 , (0b0011100000000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_RW , 0 , 19 , 3667), // #362
432 INST(Sturh , BaseRM_SImm9 , (0b0111100000000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_RW , 0 , 20 , 3673), // #363
433 INST(Stxp , BaseStxp , (0b1000100000100000000000, kWX, 30) , kRWI_WRRW , 0 , 1 , 3679), // #364
434 INST(Stxr , BaseStx , (0b1000100000000000011111, kWX, 30) , kRWI_WRW , 0 , 0 , 3684), // #365
435 INST(Stxrb , BaseStx , (0b0000100000000000011111, kW , 0 ) , kRWI_WRW , 0 , 1 , 3689), // #366
436 INST(Stxrh , BaseStx , (0b0100100000000000011111, kW , 0 ) , kRWI_WRW , 0 , 2 , 3695), // #367
437 INST(Stz2g , BaseRM_SImm9 , (0b1101100111100000000010, 0b1101100111100000000001, kX , kSP, 0, 4) , kRWI_RW , 0 , 21 , 3701), // #368
438 INST(Stzg , BaseRM_SImm9 , (0b1101100101100000000010, 0b1101100101100000000001, kX , kSP, 0, 4) , kRWI_RW , 0 , 22 , 3707), // #369
439 INST(Stzgm , BaseRM_NoImm , (0b1101100100100000000000, kX , kZR, 0) , kRWI_RW , 0 , 20 , 3712), // #370
440 INST(Sub , BaseAddSub , (0b1001011000, 0b1001011001, 0b1010001) , kRWI_X , 0 , 2 , 985 ), // #371
441 INST(Subg , BaseRRII , (0b1101000110000000000000, kX, kSP, kX, kSP, 6, 4, 16, 4, 0, 10) , kRWI_W , 0 , 1 , 3718), // #372
442 INST(Subp , BaseRRR , (0b1001101011000000000000, kX, kZR, kX, kSP, kX, kSP, false) , kRWI_W , 0 , 20 , 3723), // #373
443 INST(Subps , BaseRRR , (0b1011101011000000000000, kX, kZR, kX, kSP, kX, kSP, false) , kRWI_W , 0 , 21 , 3728), // #374
444 INST(Subs , BaseAddSub , (0b1101011000, 0b1101011001, 0b1110001) , kRWI_X , 0 , 3 , 3734), // #375
445 INST(Svc , BaseOpImm , (0b11010100000000000000000000000001, 16, 5) , 0 , 0 , 12 , 3752), // #376
446 INST(Swp , BaseAtomicOp , (0b1011100000100000100000, kWX, 30, 1) , kRWI_RWX , 0 , 111, 3756), // #377
447 INST(Swpa , BaseAtomicOp , (0b1011100010100000100000, kWX, 30, 1) , kRWI_RWX , 0 , 112, 3760), // #378
448 INST(Swpab , BaseAtomicOp , (0b0011100010100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 113, 3765), // #379
449 INST(Swpah , BaseAtomicOp , (0b0111100010100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 114, 3771), // #380
450 INST(Swpal , BaseAtomicOp , (0b1011100011100000100000, kWX, 30, 1) , kRWI_RWX , 0 , 115, 3777), // #381
451 INST(Swpalb , BaseAtomicOp , (0b0011100011100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 116, 3783), // #382
452 INST(Swpalh , BaseAtomicOp , (0b0111100011100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 117, 3790), // #383
453 INST(Swpb , BaseAtomicOp , (0b0011100000100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 118, 3797), // #384
454 INST(Swph , BaseAtomicOp , (0b0111100000100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 119, 3802), // #385
455 INST(Swpl , BaseAtomicOp , (0b1011100001100000100000, kWX, 30, 1) , kRWI_RWX , 0 , 120, 3807), // #386
456 INST(Swplb , BaseAtomicOp , (0b0011100001100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 121, 3812), // #387
457 INST(Swplh , BaseAtomicOp , (0b0111100001100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 122, 3818), // #388
458 INST(Sxtb , BaseExtend , (0b0001001100000000000111, kWX, 0) , kRWI_W , 0 , 0 , 3824), // #389
459 INST(Sxth , BaseExtend , (0b0001001100000000001111, kWX, 0) , kRWI_W , 0 , 1 , 3829), // #390
460 INST(Sxtw , BaseExtend , (0b1001001101000000011111, kX , 0) , kRWI_W , 0 , 2 , 3845), // #391
461 INST(Sys , BaseSys , (_) , kRWI_W , 0 , 0 , 3850), // #392
462 INST(Tlbi , BaseAtDcIcTlbi , (0b00011110000000, 0b00010000000000, false) , kRWI_RX , 0 , 3 , 3871), // #393
463 INST(Tst , BaseTst , (0b1101010000, 0b111001000) , kRWI_R , 0 , 0 , 437 ), // #394
464 INST(Tbnz , BaseBranchTst , (0b00110111000000000000000000000000) , kRWI_R , 0 , 0 , 3858), // #395
465 INST(Tbz , BaseBranchTst , (0b00110110000000000000000000000000) , kRWI_R , 0 , 1 , 3867), // #396
466 INST(Ubfiz , BaseBfi , (0b01010011000000000000000000000000) , kRWI_W , 0 , 2 , 3969), // #397
467 INST(Ubfm , BaseBfm , (0b01010011000000000000000000000000) , kRWI_W , 0 , 2 , 3975), // #398
468 INST(Ubfx , BaseBfx , (0b01010011000000000000000000000000) , kRWI_W , 0 , 2 , 3980), // #399
469 INST(Udf , BaseOpImm , (0b00000000000000000000000000000000, 16, 0) , 0 , 0 , 13 , 3991), // #400
470 INST(Udiv , BaseRRR , (0b0001101011000000000010, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 22 , 3995), // #401
471 INST(Umaddl , BaseRRRR , (0b1001101110100000000000, kX , kZR, kW , kZR, kW , kZR, kX , kZR, false) , kRWI_W , 0 , 4 , 4012), // #402
472 INST(Umnegl , BaseRRR , (0b1001101110100000111111, kX , kZR, kW , kZR, kW , kZR, false) , kRWI_W , 0 , 23 , 4075), // #403
473 INST(Umull , BaseRRR , (0b1001101110100000011111, kX , kZR, kW , kZR, kW , kZR, false) , kRWI_W , 0 , 24 , 4100), // #404
474 INST(Umulh , BaseRRR , (0b1001101111000000011111, kX , kZR, kX , kZR, kX , kZR, false) , kRWI_W , 0 , 25 , 4094), // #405
475 INST(Umsubl , BaseRRRR , (0b1001101110100000100000, kX , kZR, kW , kZR, kW , kZR, kX , kZR, false) , kRWI_W , 0 , 5 , 4087), // #406
476 INST(Uxtb , BaseExtend , (0b0101001100000000000111, kW, 1) , kRWI_W , 0 , 3 , 4291), // #407
477 INST(Uxth , BaseExtend , (0b0101001100000000001111, kW, 1) , kRWI_W , 0 , 4 , 4296), // #408
478 INST(Wfe , BaseOp , (0b11010101000000110010000001011111) , 0 , 0 , 18 , 4322), // #409
479 INST(Wfi , BaseOp , (0b11010101000000110010000001111111) , 0 , 0 , 19 , 4326), // #410
480 INST(Xaflag , BaseOp , (0b11010101000000000100000000111111) , 0 , 0 , 20 , 4330), // #411
481 INST(Xpacd , BaseR , (0b11011010110000010100011111100000, kX, kZR, 0) , kRWI_X , 0 , 8 , 4341), // #412
482 INST(Xpaci , BaseR , (0b11011010110000010100001111100000, kX, kZR, 0) , kRWI_X , 0 , 9 , 4347), // #413
483 INST(Xpaclri , BaseOp , (0b11010101000000110010000011111111) , kRWI_X , 0 , 21 , 4353), // #414
484 INST(Yield , BaseOp , (0b11010101000000110010000000111111) , 0 , 0 , 22 , 4361), // #415
485 INST(Abs_v , ISimdVV , (0b0000111000100000101110, kVO_V_Any) , kRWI_W , 0 , 0 , 2855), // #416
486 INST(Add_v , ISimdVVV , (0b0000111000100000100001, kVO_V_Any) , kRWI_W , 0 , 0 , 978 ), // #417
487 INST(Addhn_v , ISimdVVV , (0b0000111000100000010000, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 1 , 2345), // #418
488 INST(Addhn2_v , ISimdVVV , (0b0100111000100000010000, kVO_V_B16H8S4) , kRWI_W , F(Narrow) , 2 , 2352), // #419
489 INST(Addp_v , ISimdPair , (0b0101111000110001101110, 0b0000111000100000101111, kVO_V_Any) , kRWI_W , F(Pair) , 0 , 638 ), // #420
490 INST(Addv_v , ISimdSV , (0b0000111000110001101110, kVO_V_BH_4S) , kRWI_W , 0 , 0 , 20 ), // #421
491 INST(Aesd_v , ISimdVVx , (0b0100111000101000010110, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 0 , 34 ), // #422
492 INST(Aese_v , ISimdVVx , (0b0100111000101000010010, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 1 , 39 ), // #423
493 INST(Aesimc_v , ISimdVVx , (0b0100111000101000011110, kOp_V16B, kOp_V16B) , kRWI_W , 0 , 2 , 44 ), // #424
494 INST(Aesmc_v , ISimdVVx , (0b0100111000101000011010, kOp_V16B, kOp_V16B) , kRWI_W , 0 , 3 , 51 ), // #425
495 INST(And_v , ISimdVVV , (0b0000111000100000000111, kVO_V_B) , kRWI_W , 0 , 3 , 57 ), // #426
496 INST(Bcax_v , ISimdVVVV , (0b1100111000100000000000, kVO_V_B16) , kRWI_W , 0 , 0 , 187 ), // #427
497 INST(Bfcvt_v , ISimdVVx , (0b0001111001100011010000, kOp_H, kOp_S) , kRWI_W , 0 , 4 , 196 ), // #428
498 INST(Bfcvtn_v , ISimdVVx , (0b0000111010100001011010, kOp_V4H, kOp_V4S) , kRWI_W , F(Narrow) , 5 , 202 ), // #429
499 INST(Bfcvtn2_v , ISimdVVx , (0b0100111010100001011010, kOp_V8H, kOp_V4S) , kRWI_W , F(Narrow) , 6 , 209 ), // #430
500 INST(Bfdot_v , SimdDot , (0b0010111001000000111111, 0b0000111101000000111100, kET_S, kET_H, kET_2H) , kRWI_X , 0 , 0 , 217 ), // #431
501 INST(Bfmlalb_v , SimdFmlal , (0b0010111011000000111111, 0b0000111111000000111100, 0, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 0 , 227 ), // #432
502 INST(Bfmlalt_v , SimdFmlal , (0b0110111011000000111111, 0b0100111111000000111100, 0, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 1 , 235 ), // #433
503 INST(Bfmmla_v , ISimdVVVx , (0b0110111001000000111011, kOp_V4S, kOp_V8H, kOp_V8H) , kRWI_X , F(Long) , 0 , 243 ), // #434
504 INST(Bic_v , SimdBicOrr , (0b0000111001100000000111, 0b0010111100000000000001) , kRWI_W , 0 , 0 , 256 ), // #435
505 INST(Bif_v , ISimdVVV , (0b0010111011100000000111, kVO_V_B) , kRWI_X , 0 , 4 , 265 ), // #436
506 INST(Bit_v , ISimdVVV , (0b0010111010100000000111, kVO_V_B) , kRWI_X , 0 , 5 , 2365), // #437
507 INST(Bsl_v , ISimdVVV , (0b0010111001100000000111, kVO_V_B) , kRWI_X , 0 , 6 , 280 ), // #438
508 INST(Cls_v , ISimdVV , (0b0000111000100000010010, kVO_V_BHS) , kRWI_W , 0 , 1 , 412 ), // #439
509 INST(Clz_v , ISimdVV , (0b0010111000100000010010, kVO_V_BHS) , kRWI_W , 0 , 2 , 416 ), // #440
510 INST(Cmeq_v , SimdCmp , (0b0010111000100000100011, 0b0000111000100000100110, kVO_V_Any) , kRWI_W , 0 , 0 , 663 ), // #441
511 INST(Cmge_v , SimdCmp , (0b0000111000100000001111, 0b0010111000100000100010, kVO_V_Any) , kRWI_W , 0 , 1 , 669 ), // #442
512 INST(Cmgt_v , SimdCmp , (0b0000111000100000001101, 0b0000111000100000100010, kVO_V_Any) , kRWI_W , 0 , 2 , 675 ), // #443
513 INST(Cmhi_v , SimdCmp , (0b0010111000100000001101, 0b0000000000000000000000, kVO_V_Any) , kRWI_W , 0 , 3 , 420 ), // #444
514 INST(Cmhs_v , SimdCmp , (0b0010111000100000001111, 0b0000000000000000000000, kVO_V_Any) , kRWI_W , 0 , 4 , 425 ), // #445
515 INST(Cmle_v , SimdCmp , (0b0000000000000000000000, 0b0010111000100000100110, kVO_V_Any) , kRWI_W , 0 , 5 , 687 ), // #446
516 INST(Cmlt_v , SimdCmp , (0b0000000000000000000000, 0b0000111000100000101010, kVO_V_Any) , kRWI_W , 0 , 6 , 693 ), // #447
517 INST(Cmtst_v , ISimdVVV , (0b0000111000100000100011, kVO_V_Any) , kRWI_W , 0 , 7 , 435 ), // #448
518 INST(Cnt_v , ISimdVV , (0b0000111000100000010110, kVO_V_B) , kRWI_W , 0 , 3 , 446 ), // #449
519 INST(Dup_v , SimdDup , (_) , kRWI_W , 0 , 0 , 579 ), // #450
520 INST(Eor_v , ISimdVVV , (0b0010111000100000000111, kVO_V_B) , kRWI_W , 0 , 8 , 1418), // #451
521 INST(Eor3_v , ISimdVVVV , (0b1100111000000000000000, kVO_V_B16) , kRWI_W , 0 , 1 , 587 ), // #452
522 INST(Ext_v , ISimdVVVI , (0b0010111000000000000000, kVO_V_B, 4, 11, 1) , kRWI_W , 0 , 0 , 601 ), // #453
523 INST(Fabd_v , FSimdVVV , (0b0111111010100000110101, kHF_C, 0b0010111010100000110101, kHF_C) , kRWI_W , 0 , 0 , 610 ), // #454
524 INST(Fabs_v , FSimdVV , (0b0001111000100000110000, kHF_A, 0b0000111010100000111110, kHF_B) , kRWI_W , 0 , 0 , 615 ), // #455
525 INST(Facge_v , FSimdVVV , (0b0111111000100000111011, kHF_C, 0b0010111000100000111011, kHF_C) , kRWI_W , 0 , 1 , 620 ), // #456
526 INST(Facgt_v , FSimdVVV , (0b0111111010100000111011, kHF_C, 0b0010111010100000111011, kHF_C) , kRWI_W , 0 , 2 , 626 ), // #457
527 INST(Fadd_v , FSimdVVV , (0b0001111000100000001010, kHF_A, 0b0000111000100000110101, kHF_C) , kRWI_W , 0 , 3 , 632 ), // #458
528 INST(Faddp_v , FSimdPair , (0b0111111000110000110110, 0b0010111000100000110101) , kRWI_W , 0 , 0 , 637 ), // #459
529 INST(Fcadd_v , SimdFcadd , (0b0010111000000000111001) , kRWI_W , 0 , 0 , 643 ), // #460
530 INST(Fccmp_v , SimdFccmpFccmpe , (0b00011110001000000000010000000000) , kRWI_R , 0 , 0 , 649 ), // #461
531 INST(Fccmpe_v , SimdFccmpFccmpe , (0b00011110001000000000010000010000) , kRWI_R , 0 , 1 , 655 ), // #462
532 INST(Fcmeq_v , SimdFcm , (0b0000111000100000111001, kHF_C, 0b0000111010100000110110) , kRWI_W , 0 , 0 , 662 ), // #463
533 INST(Fcmge_v , SimdFcm , (0b0010111000100000111001, kHF_C, 0b0010111010100000110010) , kRWI_W , 0 , 1 , 668 ), // #464
534 INST(Fcmgt_v , SimdFcm , (0b0010111010100000111001, kHF_C, 0b0000111010100000110010) , kRWI_W , 0 , 2 , 674 ), // #465
535 INST(Fcmla_v , SimdFcmla , (0b0010111000000000110001, 0b0010111100000000000100) , kRWI_X , 0 , 0 , 680 ), // #466
536 INST(Fcmle_v , SimdFcm , (0b0000000000000000000000, kHF_C, 0b0010111010100000110110) , kRWI_W , 0 , 3 , 686 ), // #467
537 INST(Fcmlt_v , SimdFcm , (0b0000000000000000000000, kHF_C, 0b0000111010100000111010) , kRWI_W , 0 , 4 , 692 ), // #468
538 INST(Fcmp_v , SimdFcmpFcmpe , (0b00011110001000000010000000000000) , kRWI_R , 0 , 0 , 698 ), // #469
539 INST(Fcmpe_v , SimdFcmpFcmpe , (0b00011110001000000010000000010000) , kRWI_R , 0 , 1 , 703 ), // #470
540 INST(Fcsel_v , SimdFcsel , (_) , kRWI_W , 0 , 0 , 709 ), // #471
541 INST(Fcvt_v , SimdFcvt , (_) , kRWI_W , 0 , 0 , 197 ), // #472
542 INST(Fcvtas_v , SimdFcvtSV , (0b0000111000100001110010, 0b0000000000000000000000, 0b0001111000100100000000, 1) , kRWI_W , 0 , 0 , 715 ), // #473
543 INST(Fcvtau_v , SimdFcvtSV , (0b0010111000100001110010, 0b0000000000000000000000, 0b0001111000100101000000, 1) , kRWI_W , 0 , 1 , 722 ), // #474
544 INST(Fcvtl_v , SimdFcvtLN , (0b0000111000100001011110, 0, 0) , kRWI_W , F(Long) , 0 , 729 ), // #475
545 INST(Fcvtl2_v , SimdFcvtLN , (0b0100111000100001011110, 0, 0) , kRWI_W , F(Long) , 1 , 735 ), // #476
546 INST(Fcvtms_v , SimdFcvtSV , (0b0000111000100001101110, 0b0000000000000000000000, 0b0001111000110000000000, 1) , kRWI_W , 0 , 2 , 742 ), // #477
547 INST(Fcvtmu_v , SimdFcvtSV , (0b0010111000100001101110, 0b0000000000000000000000, 0b0001111000110001000000, 1) , kRWI_W , 0 , 3 , 749 ), // #478
548 INST(Fcvtn_v , SimdFcvtLN , (0b0000111000100001011010, 0, 0) , kRWI_W , F(Narrow) , 2 , 203 ), // #479
549 INST(Fcvtn2_v , SimdFcvtLN , (0b0100111000100001011010, 0, 0) , kRWI_X , F(Narrow) , 3 , 210 ), // #480
550 INST(Fcvtns_v , SimdFcvtSV , (0b0000111000100001101010, 0b0000000000000000000000, 0b0001111000100000000000, 1) , kRWI_W , 0 , 4 , 756 ), // #481
551 INST(Fcvtnu_v , SimdFcvtSV , (0b0010111000100001101010, 0b0000000000000000000000, 0b0001111000100001000000, 1) , kRWI_W , 0 , 5 , 763 ), // #482
552 INST(Fcvtps_v , SimdFcvtSV , (0b0000111010100001101010, 0b0000000000000000000000, 0b0001111000101000000000, 1) , kRWI_W , 0 , 6 , 770 ), // #483
553 INST(Fcvtpu_v , SimdFcvtSV , (0b0010111010100001101010, 0b0000000000000000000000, 0b0001111000101001000000, 1) , kRWI_W , 0 , 7 , 777 ), // #484
554 INST(Fcvtxn_v , SimdFcvtLN , (0b0010111000100001011010, 1, 1) , kRWI_W , F(Narrow) , 4 , 784 ), // #485
555 INST(Fcvtxn2_v , SimdFcvtLN , (0b0110111000100001011010, 1, 0) , kRWI_X , F(Narrow) , 5 , 791 ), // #486
556 INST(Fcvtzs_v , SimdFcvtSV , (0b0000111010100001101110, 0b0000111100000000111111, 0b0001111000111000000000, 1) , kRWI_W , 0 , 8 , 799 ), // #487
557 INST(Fcvtzu_v , SimdFcvtSV , (0b0010111010100001101110, 0b0010111100000000111111, 0b0001111000111001000000, 1) , kRWI_W , 0 , 9 , 806 ), // #488
558 INST(Fdiv_v , FSimdVVV , (0b0001111000100000000110, kHF_A, 0b0010111000100000111111, kHF_C) , kRWI_W , 0 , 4 , 813 ), // #489
559 INST(Fjcvtzs_v , ISimdVVx , (0b0001111001111110000000, kOp_GpW, kOp_D) , kRWI_W , 0 , 7 , 818 ), // #490
560 INST(Fmadd_v , FSimdVVVV , (0b0001111100000000000000, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 0 , 826 ), // #491
561 INST(Fmax_v , FSimdVVV , (0b0001111000100000010010, kHF_A, 0b0000111000100000111101, kHF_C) , kRWI_W , 0 , 5 , 832 ), // #492
562 INST(Fmaxnm_v , FSimdVVV , (0b0001111000100000011010, kHF_A, 0b0000111000100000110001, kHF_C) , kRWI_W , 0 , 6 , 837 ), // #493
563 INST(Fmaxnmp_v , FSimdPair , (0b0111111000110000110010, 0b0010111000100000110001) , kRWI_W , 0 , 1 , 844 ), // #494
564 INST(Fmaxnmv_v , FSimdSV , (0b0010111000110000110010) , kRWI_W , 0 , 0 , 852 ), // #495
565 INST(Fmaxp_v , FSimdPair , (0b0111111000110000111110, 0b0010111000100000111101) , kRWI_W , 0 , 2 , 860 ), // #496
566 INST(Fmaxv_v , FSimdSV , (0b0010111000110000111110) , kRWI_W , 0 , 1 , 866 ), // #497
567 INST(Fmin_v , FSimdVVV , (0b0001111000100000010110, kHF_A, 0b0000111010100000111101, kHF_C) , kRWI_W , 0 , 7 , 872 ), // #498
568 INST(Fminnm_v , FSimdVVV , (0b0001111000100000011110, kHF_A, 0b0000111010100000110001, kHF_C) , kRWI_W , 0 , 8 , 877 ), // #499
569 INST(Fminnmp_v , FSimdPair , (0b0111111010110000110010, 0b0010111010100000110001) , kRWI_W , 0 , 3 , 884 ), // #500
570 INST(Fminnmv_v , FSimdSV , (0b0010111010110000110010) , kRWI_W , 0 , 2 , 892 ), // #501
571 INST(Fminp_v , FSimdPair , (0b0111111010110000111110, 0b0010111010100000111101) , kRWI_W , 0 , 4 , 900 ), // #502
572 INST(Fminv_v , FSimdSV , (0b0010111010110000111110) , kRWI_W , 0 , 3 , 906 ), // #503
573 INST(Fmla_v , FSimdVVVe , (0b0000000000000000000000, kHF_N, 0b0000111000100000110011, 0b0000111110000000000100) , kRWI_X , F(VH0_15) , 0 , 912 ), // #504
574 INST(Fmlal_v , SimdFmlal , (0b0000111000100000111011, 0b0000111110000000000000, 1, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 2 , 917 ), // #505
575 INST(Fmlal2_v , SimdFmlal , (0b0010111000100000110011, 0b0010111110000000100000, 1, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 3 , 923 ), // #506
576 INST(Fmls_v , FSimdVVVe , (0b0000000000000000000000, kHF_N, 0b0000111010100000110011, 0b0000111110000000010100) , kRWI_X , F(VH0_15) , 1 , 930 ), // #507
577 INST(Fmlsl_v , SimdFmlal , (0b0000111010100000111011, 0b0000111110000000010000, 1, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 4 , 935 ), // #508
578 INST(Fmlsl2_v , SimdFmlal , (0b0010111010100000110011, 0b0010111110000000110000, 1, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 5 , 941 ), // #509
579 INST(Fmov_v , SimdFmov , (_) , kRWI_W , 0 , 0 , 948 ), // #510
580 INST(Fmsub_v , FSimdVVVV , (0b0001111100000000100000, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 1 , 953 ), // #511
581 INST(Fmul_v , FSimdVVVe , (0b0001111000100000000010, kHF_A, 0b0010111000100000110111, 0b0000111110000000100100) , kRWI_W , F(VH0_15) , 2 , 959 ), // #512
582 INST(Fmulx_v , FSimdVVVe , (0b0101111000100000110111, kHF_C, 0b0000111000100000110111, 0b0010111110000000100100) , kRWI_W , F(VH0_15) , 3 , 964 ), // #513
583 INST(Fneg_v , FSimdVV , (0b0001111000100001010000, kHF_A, 0b0010111010100000111110, kHF_B) , kRWI_W , 0 , 1 , 970 ), // #514
584 INST(Fnmadd_v , FSimdVVVV , (0b0001111100100000000000, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 2 , 975 ), // #515
585 INST(Fnmsub_v , FSimdVVVV , (0b0001111100100000100000, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 3 , 982 ), // #516
586 INST(Fnmul_v , FSimdVVV , (0b0001111000100000100010, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 9 , 989 ), // #517
587 INST(Frecpe_v , FSimdVV , (0b0101111010100001110110, kHF_B, 0b0000111010100001110110, kHF_B) , kRWI_W , 0 , 2 , 995 ), // #518
588 INST(Frecps_v , FSimdVVV , (0b0101111000100000111111, kHF_C, 0b0000111000100000111111, kHF_C) , kRWI_W , 0 , 10 , 1002), // #519
589 INST(Frecpx_v , FSimdVV , (0b0101111010100001111110, kHF_B, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 3 , 1009), // #520
590 INST(Frint32x_v , FSimdVV , (0b0001111000101000110000, kHF_N, 0b0010111000100001111010, kHF_N) , kRWI_W , 0 , 4 , 1016), // #521
591 INST(Frint32z_v , FSimdVV , (0b0001111000101000010000, kHF_N, 0b0000111000100001111010, kHF_N) , kRWI_W , 0 , 5 , 1025), // #522
592 INST(Frint64x_v , FSimdVV , (0b0001111000101001110000, kHF_N, 0b0010111000100001111110, kHF_N) , kRWI_W , 0 , 6 , 1034), // #523
593 INST(Frint64z_v , FSimdVV , (0b0001111000101001010000, kHF_N, 0b0000111000100001111110, kHF_N) , kRWI_W , 0 , 7 , 1043), // #524
594 INST(Frinta_v , FSimdVV , (0b0001111000100110010000, kHF_A, 0b0010111000100001100010, kHF_B) , kRWI_W , 0 , 8 , 1052), // #525
595 INST(Frinti_v , FSimdVV , (0b0001111000100111110000, kHF_A, 0b0010111010100001100110, kHF_B) , kRWI_W , 0 , 9 , 1059), // #526
596 INST(Frintm_v , FSimdVV , (0b0001111000100101010000, kHF_A, 0b0000111000100001100110, kHF_B) , kRWI_W , 0 , 10 , 1066), // #527
597 INST(Frintn_v , FSimdVV , (0b0001111000100100010000, kHF_A, 0b0000111000100001100010, kHF_B) , kRWI_W , 0 , 11 , 1073), // #528
598 INST(Frintp_v , FSimdVV , (0b0001111000100100110000, kHF_A, 0b0000111010100001100010, kHF_B) , kRWI_W , 0 , 12 , 1080), // #529
599 INST(Frintx_v , FSimdVV , (0b0001111000100111010000, kHF_A, 0b0010111000100001100110, kHF_B) , kRWI_W , 0 , 13 , 1087), // #530
600 INST(Frintz_v , FSimdVV , (0b0001111000100101110000, kHF_A, 0b0000111010100001100110, kHF_B) , kRWI_W , 0 , 14 , 1094), // #531
601 INST(Frsqrte_v , FSimdVV , (0b0111111010100001110110, kHF_B, 0b0010111010100001110110, kHF_B) , kRWI_W , 0 , 15 , 1101), // #532
602 INST(Frsqrts_v , FSimdVVV , (0b0101111010100000111111, kHF_C, 0b0000111010100000111111, kHF_C) , kRWI_W , 0 , 11 , 1109), // #533
603 INST(Fsqrt_v , FSimdVV , (0b0001111000100001110000, kHF_A, 0b0010111010100001111110, kHF_B) , kRWI_W , 0 , 16 , 1117), // #534
604 INST(Fsub_v , FSimdVVV , (0b0001111000100000001110, kHF_A, 0b0000111010100000110101, kHF_C) , kRWI_W , 0 , 12 , 1123), // #535
605 INST(Ins_v , SimdIns , (_) , kRWI_X , 0 , 0 , 1145), // #536
606 INST(Ld1_v , SimdLdNStN , (0b0000110101000000000000, 0b0000110001000000001000, 1, 0) , kRWI_LDn , F(Consecutive) , 0 , 1153), // #537
607 INST(Ld1r_v , SimdLdNStN , (0b0000110101000000110000, 0b0000000000000000000000, 1, 1) , kRWI_LDn , F(Consecutive) , 1 , 1157), // #538
608 INST(Ld2_v , SimdLdNStN , (0b0000110101100000000000, 0b0000110001000000100000, 2, 0) , kRWI_LDn , F(Consecutive) , 2 , 1162), // #539
609 INST(Ld2r_v , SimdLdNStN , (0b0000110101100000110000, 0b0000000000000000000000, 2, 1) , kRWI_LDn , F(Consecutive) , 3 , 1166), // #540
610 INST(Ld3_v , SimdLdNStN , (0b0000110101000000001000, 0b0000110001000000010000, 3, 0) , kRWI_LDn , F(Consecutive) , 4 , 1171), // #541
611 INST(Ld3r_v , SimdLdNStN , (0b0000110101000000111000, 0b0000000000000000000000, 3, 1) , kRWI_LDn , F(Consecutive) , 5 , 1175), // #542
612 INST(Ld4_v , SimdLdNStN , (0b0000110101100000001000, 0b0000110001000000000000, 4, 0) , kRWI_LDn , F(Consecutive) , 6 , 1180), // #543
613 INST(Ld4r_v , SimdLdNStN , (0b0000110101100000111000, 0b0000000000000000000000, 4, 1) , kRWI_LDn , F(Consecutive) , 7 , 1184), // #544
614 INST(Ldnp_v , SimdLdpStp , (0b0010110001, 0b0000000000) , kRWI_WW , 0 , 0 , 1537), // #545
615 INST(Ldp_v , SimdLdpStp , (0b0010110101, 0b0010110011) , kRWI_WW , 0 , 1 , 1542), // #546
616 INST(Ldr_v , SimdLdSt , (0b0011110101, 0b00111100010, 0b00111100011, 0b00011100, Inst::kIdLdur_v) , kRWI_W , 0 , 0 , 1552), // #547
617 INST(Ldur_v , SimdLdurStur , (0b0011110001000000000000) , kRWI_W , 0 , 0 , 2142), // #548
618 INST(Mla_v , ISimdVVVe , (0b0000111000100000100101, kVO_V_BHS, 0b0010111100000000000000, kVO_V_HS) , kRWI_X , F(VH0_15) , 0 , 246 ), // #549
619 INST(Mls_v , ISimdVVVe , (0b0010111000100000100101, kVO_V_BHS, 0b0010111100000000010000, kVO_V_HS) , kRWI_X , F(VH0_15) , 1 , 931 ), // #550
620 INST(Mov_v , SimdMov , (_) , kRWI_W , 0 , 0 , 949 ), // #551
621 INST(Movi_v , SimdMoviMvni , (0b0000111100000000000001, 0) , kRWI_W , 0 , 0 , 2221), // #552
622 INST(Mul_v , ISimdVVVe , (0b0000111000100000100111, kVO_V_BHS, 0b0000111100000000100000, kVO_V_HS) , kRWI_W , F(VH0_15) , 2 , 991 ), // #553
623 INST(Mvn_v , ISimdVV , (0b0010111000100000010110, kVO_V_B) , kRWI_W , 0 , 4 , 2249), // #554
624 INST(Mvni_v , SimdMoviMvni , (0b0000111100000000000001, 1) , kRWI_W , 0 , 1 , 2253), // #555
625 INST(Neg_v , ISimdVV , (0b0010111000100000101110, kVO_V_Any) , kRWI_W , 0 , 5 , 540 ), // #556
626 INST(Not_v , ISimdVV , (0b0010111000100000010110, kVO_V_B) , kRWI_W , 0 , 6 , 2276), // #557
627 INST(Orn_v , ISimdVVV , (0b0000111011100000000111, kVO_V_B) , kRWI_W , 0 , 9 , 2280), // #558
628 INST(Orr_v , SimdBicOrr , (0b0000111010100000000111, 0b0000111100000000000001) , kRWI_W , 0 , 1 , 2284), // #559
629 INST(Pmul_v , ISimdVVV , (0b0010111000100000100111, kVO_V_B) , kRWI_W , 0 , 10 , 2320), // #560
630 INST(Pmull_v , ISimdVVV , (0b0000111000100000111000, kVO_V_B8D1) , kRWI_W , F(Long) , 11 , 2325), // #561
631 INST(Pmull2_v , ISimdVVV , (0b0100111000100000111000, kVO_V_B16D2) , kRWI_W , F(Long) , 12 , 2331), // #562
632 INST(Raddhn_v , ISimdVVV , (0b0010111000100000010000, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 13 , 2344), // #563
633 INST(Raddhn2_v , ISimdVVV , (0b0110111000100000010000, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 14 , 2351), // #564
634 INST(Rax1_v , ISimdVVV , (0b1100111001100000100011, kVO_V_D2) , kRWI_W , 0 , 15 , 2359), // #565
635 INST(Rbit_v , ISimdVV , (0b0010111001100000010110, kVO_V_B) , kRWI_W , 0 , 7 , 2364), // #566
636 INST(Rev16_v , ISimdVV , (0b0000111000100000000110, kVO_V_B) , kRWI_W , 0 , 8 , 2373), // #567
637 INST(Rev32_v , ISimdVV , (0b0010111000100000000010, kVO_V_BH) , kRWI_W , 0 , 9 , 2379), // #568
638 INST(Rev64_v , ISimdVV , (0b0000111000100000000010, kVO_V_BHS) , kRWI_W , 0 , 10 , 2385), // #569
639 INST(Rshrn_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000100011, 1, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 0 , 2960), // #570
640 INST(Rshrn2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000100011, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 1 , 2968), // #571
641 INST(Rsubhn_v , ISimdVVV , (0b0010111000100000011000, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 16 , 2400), // #572
642 INST(Rsubhn2_v , ISimdVVV , (0b0110111000100000011000, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 17 , 2407), // #573
643 INST(Saba_v , ISimdVVV , (0b0000111000100000011111, kVO_V_BHS) , kRWI_X , 0 , 18 , 2415), // #574
644 INST(Sabal_v , ISimdVVV , (0b0000111000100000010100, kVO_V_B8H4S2) , kRWI_X , F(Long) , 19 , 2420), // #575
645 INST(Sabal2_v , ISimdVVV , (0b0100111000100000010100, kVO_V_B16H8S4) , kRWI_X , F(Long) , 20 , 2426), // #576
646 INST(Sabd_v , ISimdVVV , (0b0000111000100000011101, kVO_V_BHS) , kRWI_W , 0 , 21 , 2433), // #577
647 INST(Sabdl_v , ISimdVVV , (0b0000111000100000011100, kVO_V_B8H4S2) , kRWI_W , F(Long) , 22 , 2438), // #578
648 INST(Sabdl2_v , ISimdVVV , (0b0100111000100000011100, kVO_V_B16H8S4) , kRWI_W , F(Long) , 23 , 2444), // #579
649 INST(Sadalp_v , ISimdVV , (0b0000111000100000011010, kVO_V_BHS) , kRWI_X , F(Long) | F(Pair) , 11 , 2451), // #580
650 INST(Saddl_v , ISimdVVV , (0b0000111000100000000000, kVO_V_B8H4S2) , kRWI_W , F(Long) , 24 , 2458), // #581
651 INST(Saddl2_v , ISimdVVV , (0b0100111000100000000000, kVO_V_B16H8S4) , kRWI_W , F(Long) , 25 , 2464), // #582
652 INST(Saddlp_v , ISimdVV , (0b0000111000100000001010, kVO_V_BHS) , kRWI_W , F(Long) | F(Pair) , 12 , 2471), // #583
653 INST(Saddlv_v , ISimdSV , (0b0000111000110000001110, kVO_V_BH_4S) , kRWI_W , F(Long) , 1 , 2478), // #584
654 INST(Saddw_v , ISimdWWV , (0b0000111000100000000100, kVO_V_B8H4S2) , kRWI_W , 0 , 0 , 2485), // #585
655 INST(Saddw2_v , ISimdWWV , (0b0000111000100000000100, kVO_V_B16H8S4) , kRWI_W , 0 , 1 , 2491), // #586
656 INST(Scvtf_v , SimdFcvtSV , (0b0000111000100001110110, 0b0000111100000000111001, 0b0001111000100010000000, 0) , kRWI_W , 0 , 10 , 2523), // #587
657 INST(Sdot_v , SimdDot , (0b0000111010000000100101, 0b0000111110000000111000, kET_S, kET_B, kET_4B) , kRWI_X , 0 , 1 , 4218), // #588
658 INST(Sha1c_v , ISimdVVVx , (0b0101111000000000000000, kOp_Q, kOp_S, kOp_V4S) , kRWI_X , 0 , 1 , 2556), // #589
659 INST(Sha1h_v , ISimdVVx , (0b0101111000101000000010, kOp_S, kOp_S) , kRWI_W , 0 , 8 , 2562), // #590
660 INST(Sha1m_v , ISimdVVVx , (0b0101111000000000001000, kOp_Q, kOp_S, kOp_V4S) , kRWI_X , 0 , 2 , 2568), // #591
661 INST(Sha1p_v , ISimdVVVx , (0b0101111000000000000100, kOp_Q, kOp_S, kOp_V4S) , kRWI_X , 0 , 3 , 2574), // #592
662 INST(Sha1su0_v , ISimdVVVx , (0b0101111000000000001100, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 4 , 2580), // #593
663 INST(Sha1su1_v , ISimdVVx , (0b0101111000101000000110, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 9 , 2588), // #594
664 INST(Sha256h_v , ISimdVVVx , (0b0101111000000000010000, kOp_Q, kOp_Q, kOp_V4S) , kRWI_X , 0 , 5 , 2596), // #595
665 INST(Sha256h2_v , ISimdVVVx , (0b0101111000000000010100, kOp_Q, kOp_Q, kOp_V4S) , kRWI_X , 0 , 6 , 2604), // #596
666 INST(Sha256su0_v , ISimdVVx , (0b0101111000101000001010, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 10 , 2613), // #597
667 INST(Sha256su1_v , ISimdVVVx , (0b0101111000000000011000, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 7 , 2623), // #598
668 INST(Sha512h_v , ISimdVVVx , (0b1100111001100000100000, kOp_Q, kOp_Q, kOp_V2D) , kRWI_X , 0 , 8 , 2633), // #599
669 INST(Sha512h2_v , ISimdVVVx , (0b1100111001100000100001, kOp_Q, kOp_Q, kOp_V2D) , kRWI_X , 0 , 9 , 2641), // #600
670 INST(Sha512su0_v , ISimdVVx , (0b1100111011000000100000, kOp_V2D, kOp_V2D) , kRWI_X , 0 , 11 , 2650), // #601
671 INST(Sha512su1_v , ISimdVVVx , (0b1100111001100000100010, kOp_V2D, kOp_V2D, kOp_V2D) , kRWI_X , 0 , 10 , 2660), // #602
672 INST(Shadd_v , ISimdVVV , (0b0000111000100000000001, kVO_V_BHS) , kRWI_W , 0 , 26 , 2670), // #603
673 INST(Shl_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000010101, 0, kVO_V_Any) , kRWI_W , 0 , 2 , 2954), // #604
674 INST(Shll_v , SimdShiftES , (0b0010111000100001001110, kVO_V_B8H4S2) , kRWI_W , F(Long) , 0 , 3108), // #605
675 INST(Shll2_v , SimdShiftES , (0b0110111000100001001110, kVO_V_B16H8S4) , kRWI_W , F(Long) , 1 , 3114), // #606
676 INST(Shrn_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000100001, 1, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 3 , 2961), // #607
677 INST(Shrn2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000100001, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 4 , 2969), // #608
678 INST(Shsub_v , ISimdVVV , (0b0000111000100000001001, kVO_V_BHS) , kRWI_W , 0 , 27 , 2676), // #609
679 INST(Sli_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000010101, 0, kVO_V_Any) , kRWI_X , 0 , 5 , 2682), // #610
680 INST(Sm3partw1_v , ISimdVVVx , (0b1100111001100000110000, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 11 , 2686), // #611
681 INST(Sm3partw2_v , ISimdVVVx , (0b1100111001100000110001, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 12 , 2696), // #612
682 INST(Sm3ss1_v , ISimdVVVVx , (0b1100111001000000000000, kOp_V4S, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_W , 0 , 0 , 2706), // #613
683 INST(Sm3tt1a_v , SimdSm3tt , (0b1100111001000000100000) , kRWI_X , 0 , 0 , 2713), // #614
684 INST(Sm3tt1b_v , SimdSm3tt , (0b1100111001000000100001) , kRWI_X , 0 , 1 , 2721), // #615
685 INST(Sm3tt2a_v , SimdSm3tt , (0b1100111001000000100010) , kRWI_X , 0 , 2 , 2729), // #616
686 INST(Sm3tt2b_v , SimdSm3tt , (0b1100111001000000100011) , kRWI_X , 0 , 3 , 2737), // #617
687 INST(Sm4e_v , ISimdVVx , (0b1100111011000000100001, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 12 , 2745), // #618
688 INST(Sm4ekey_v , ISimdVVVx , (0b1100111001100000110010, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 13 , 2750), // #619
689 INST(Smax_v , ISimdVVV , (0b0000111000100000011001, kVO_V_BHS) , kRWI_W , 0 , 28 , 1690), // #620
690 INST(Smaxp_v , ISimdVVV , (0b0000111000100000101001, kVO_V_BHS) , kRWI_W , 0 , 29 , 2765), // #621
691 INST(Smaxv_v , ISimdSV , (0b0000111000110000101010, kVO_V_BH_4S) , kRWI_W , 0 , 2 , 2771), // #622
692 INST(Smin_v , ISimdVVV , (0b0000111000100000011011, kVO_V_BHS) , kRWI_W , 0 , 30 , 1794), // #623
693 INST(Sminp_v , ISimdVVV , (0b0000111000100000101011, kVO_V_BHS) , kRWI_W , 0 , 31 , 2777), // #624
694 INST(Sminv_v , ISimdSV , (0b0000111000110001101010, kVO_V_BH_4S) , kRWI_W , 0 , 3 , 2783), // #625
695 INST(Smlal_v , ISimdVVVe , (0b0000111000100000100000, kVO_V_B8H4S2, 0b0000111100000000001000, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 3 , 2789), // #626
696 INST(Smlal2_v , ISimdVVVe , (0b0100111000100000100000, kVO_V_B16H8S4, 0b0100111100000000001000, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 4 , 2795), // #627
697 INST(Smlsl_v , ISimdVVVe , (0b0000111000100000101000, kVO_V_B8H4S2, 0b0000111100000000011000, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 5 , 2802), // #628
698 INST(Smlsl2_v , ISimdVVVe , (0b0100111000100000101000, kVO_V_B16H8S4, 0b0100111100000000011000, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 6 , 2808), // #629
699 INST(Smmla_v , ISimdVVVx , (0b0100111010000000101001, kOp_V4S, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 14 , 4247), // #630
700 INST(Smov_v , SimdSmovUmov , (0b0000111000000000001011, kVO_V_BHS, 1) , kRWI_W , 0 , 0 , 2822), // #631
701 INST(Smull_v , ISimdVVVe , (0b0000111000100000110000, kVO_V_B8H4S2, 0b0000111100000000101000, kVO_V_H4S2) , kRWI_W , F(Long) | F(VH0_15) , 7 , 2840), // #632
702 INST(Smull2_v , ISimdVVVe , (0b0100111000100000110000, kVO_V_B16H8S4, 0b0100111100000000101000, kVO_V_H8S4) , kRWI_W , F(Long) | F(VH0_15) , 8 , 2846), // #633
703 INST(Sqabs_v , ISimdVV , (0b0000111000100000011110, kVO_SV_Any) , kRWI_W , 0 , 13 , 2853), // #634
704 INST(Sqadd_v , ISimdVVV , (0b0000111000100000000011, kVO_SV_Any) , kRWI_W , 0 , 32 , 4254), // #635
705 INST(Sqdmlal_v , ISimdVVVe , (0b0000111000100000100100, kVO_SV_BHS, 0b0000111100000000001100, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 9 , 2859), // #636
706 INST(Sqdmlal2_v , ISimdVVVe , (0b0100111000100000100100, kVO_V_B16H8S4, 0b0100111100000000001100, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 10 , 2867), // #637
707 INST(Sqdmlsl_v , ISimdVVVe , (0b0000111000100000101100, kVO_SV_BHS, 0b0000111100000000011100, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 11 , 2876), // #638
708 INST(Sqdmlsl2_v , ISimdVVVe , (0b0100111000100000101100, kVO_V_B16H8S4, 0b0100111100000000011100, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 12 , 2884), // #639
709 INST(Sqdmulh_v , ISimdVVVe , (0b0000111000100000101101, kVO_SV_HS, 0b0000111100000000110000, kVO_SV_HS) , kRWI_W , F(VH0_15) , 13 , 2893), // #640
710 INST(Sqdmull_v , ISimdVVVe , (0b0000111000100000110100, kVO_SV_BHS, 0b0000111100000000101100, kVO_V_H4S2) , kRWI_W , F(Long) | F(VH0_15) , 14 , 2901), // #641
711 INST(Sqdmull2_v , ISimdVVVe , (0b0100111000100000110100, kVO_V_B16H8S4, 0b0100111100000000101100, kVO_V_H8S4) , kRWI_W , F(Long) | F(VH0_15) , 15 , 2909), // #642
712 INST(Sqneg_v , ISimdVV , (0b0010111000100000011110, kVO_SV_Any) , kRWI_W , 0 , 14 , 2918), // #643
713 INST(Sqrdmlah_v , ISimdVVVe , (0b0010111000000000100001, kVO_SV_HS, 0b0010111100000000110100, kVO_SV_HS) , kRWI_X , F(VH0_15) , 16 , 2924), // #644
714 INST(Sqrdmlsh_v , ISimdVVVe , (0b0010111000000000100011, kVO_SV_HS, 0b0010111100000000111100, kVO_SV_HS) , kRWI_X , F(VH0_15) , 17 , 2933), // #645
715 INST(Sqrdmulh_v , ISimdVVVe , (0b0010111000100000101101, kVO_SV_HS, 0b0000111100000000110100, kVO_SV_HS) , kRWI_W , F(VH0_15) , 18 , 2942), // #646
716 INST(Sqrshl_v , SimdShift , (0b0000111000100000010111, 0b0000000000000000000000, 1, kVO_SV_Any) , kRWI_W , 0 , 6 , 2951), // #647
717 INST(Sqrshrn_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000100111, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 7 , 2958), // #648
718 INST(Sqrshrn2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000100111, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 8 , 2966), // #649
719 INST(Sqrshrun_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000100011, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 9 , 2975), // #650
720 INST(Sqrshrun2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000100011, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 10 , 2984), // #651
721 INST(Sqshl_v , SimdShift , (0b0000111000100000010011, 0b0000111100000000011101, 0, kVO_SV_Any) , kRWI_W , 0 , 11 , 2994), // #652
722 INST(Sqshlu_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000011001, 0, kVO_SV_Any) , kRWI_W , 0 , 12 , 3000), // #653
723 INST(Sqshrn_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000100101, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 13 , 3007), // #654
724 INST(Sqshrn2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000100101, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 14 , 3014), // #655
725 INST(Sqshrun_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000100001, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 15 , 3022), // #656
726 INST(Sqshrun2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000100001, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 16 , 3030), // #657
727 INST(Sqsub_v , ISimdVVV , (0b0000111000100000001011, kVO_SV_Any) , kRWI_W , 0 , 33 , 3039), // #658
728 INST(Sqxtn_v , ISimdVV , (0b0000111000100001010010, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 15 , 3045), // #659
729 INST(Sqxtn2_v , ISimdVV , (0b0100111000100001010010, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 16 , 3051), // #660
730 INST(Sqxtun_v , ISimdVV , (0b0010111000100001001010, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 17 , 3058), // #661
731 INST(Sqxtun2_v , ISimdVV , (0b0110111000100001001010, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 18 , 3065), // #662
732 INST(Srhadd_v , ISimdVVV , (0b0000111000100000000101, kVO_V_BHS) , kRWI_W , 0 , 34 , 3073), // #663
733 INST(Sri_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000010001, 1, kVO_V_Any) , kRWI_W , 0 , 17 , 3080), // #664
734 INST(Srshl_v , SimdShift , (0b0000111000100000010101, 0b0000000000000000000000, 0, kVO_V_Any) , kRWI_W , 0 , 18 , 3084), // #665
735 INST(Srshr_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000001001, 1, kVO_V_Any) , kRWI_W , 0 , 19 , 3090), // #666
736 INST(Srsra_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000001101, 1, kVO_V_Any) , kRWI_X , 0 , 20 , 3096), // #667
737 INST(Sshl_v , SimdShift , (0b0000111000100000010001, 0b0000000000000000000000, 0, kVO_V_Any) , kRWI_W , 0 , 21 , 3102), // #668
738 INST(Sshll_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000101001, 0, kVO_V_B8H4S2) , kRWI_W , F(Long) , 22 , 3107), // #669
739 INST(Sshll2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000101001, 0, kVO_V_B16H8S4) , kRWI_W , F(Long) , 23 , 3113), // #670
740 INST(Sshr_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000000001, 1, kVO_V_Any) , kRWI_W , 0 , 24 , 3120), // #671
741 INST(Ssra_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000000101, 1, kVO_V_Any) , kRWI_X , 0 , 25 , 3125), // #672
742 INST(Ssubl_v , ISimdVVV , (0b0000111000100000001000, kVO_V_B8H4S2) , kRWI_W , F(Long) , 35 , 3130), // #673
743 INST(Ssubl2_v , ISimdVVV , (0b0100111000100000001000, kVO_V_B16H8S4) , kRWI_W , F(Long) , 36 , 3136), // #674
744 INST(Ssubw_v , ISimdWWV , (0b0000111000100000001100, kVO_V_B8H4S2) , kRWI_W , 0 , 2 , 3143), // #675
745 INST(Ssubw2_v , ISimdWWV , (0b0000111000100000001100, kVO_V_B16H8S4) , kRWI_X , 0 , 3 , 3149), // #676
746 INST(St1_v , SimdLdNStN , (0b0000110100000000000000, 0b0000110000000000001000, 1, 0) , kRWI_STn , F(Consecutive) , 8 , 3156), // #677
747 INST(St2_v , SimdLdNStN , (0b0000110100100000000000, 0b0000110000000000100000, 2, 0) , kRWI_STn , F(Consecutive) , 9 , 3160), // #678
748 INST(St3_v , SimdLdNStN , (0b0000110100000000001000, 0b0000110000000000010000, 3, 0) , kRWI_STn , F(Consecutive) , 10 , 3169), // #679
749 INST(St4_v , SimdLdNStN , (0b0000110100100000001000, 0b0000110000000000000000, 4, 0) , kRWI_STn , F(Consecutive) , 11 , 3173), // #680
750 INST(Stnp_v , SimdLdpStp , (0b0010110000, 0b0000000000) , kRWI_RRW , 0 , 2 , 3383), // #681
751 INST(Stp_v , SimdLdpStp , (0b0010110100, 0b0010110010) , kRWI_RRW , 0 , 3 , 3388), // #682
752 INST(Str_v , SimdLdSt , (0b0011110100, 0b00111100000, 0b00111100001, 0b00000000, Inst::kIdStur_v) , kRWI_RW , 0 , 1 , 3392), // #683
753 INST(Stur_v , SimdLdurStur , (0b0011110000000000000000) , kRWI_RW , 0 , 1 , 3662), // #684
754 INST(Sub_v , ISimdVVV , (0b0010111000100000100001, kVO_V_Any) , kRWI_W , 0 , 37 , 985 ), // #685
755 INST(Subhn_v , ISimdVVV , (0b0000111000100000011000, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 38 , 2401), // #686
756 INST(Subhn2_v , ISimdVVV , (0b0000111000100000011000, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 39 , 2408), // #687
757 INST(Sudot_v , SimdDot , (0b0000000000000000000000, 0b0000111100000000111100, kET_S, kET_B, kET_4B) , kRWI_X , 0 , 2 , 3739), // #688
758 INST(Suqadd_v , ISimdVV , (0b0000111000100000001110, kVO_SV_Any) , kRWI_X , 0 , 19 , 3745), // #689
759 INST(Sxtl_v , SimdSxtlUxtl , (0b0000111100000000101001, kVO_V_B8H4S2) , kRWI_W , F(Long) , 0 , 3834), // #690
760 INST(Sxtl2_v , SimdSxtlUxtl , (0b0100111100000000101001, kVO_V_B16H8S4) , kRWI_W , F(Long) , 1 , 3839), // #691
761 INST(Tbl_v , SimdTblTbx , (0b0000111000000000000000) , kRWI_W , 0 , 0 , 3854), // #692
762 INST(Tbx_v , SimdTblTbx , (0b0000111000000000000100) , kRWI_W , 0 , 1 , 3863), // #693
763 INST(Trn1_v , ISimdVVV , (0b0000111000000000001010, kVO_V_BHS_D2) , kRWI_W , 0 , 40 , 3876), // #694
764 INST(Trn2_v , ISimdVVV , (0b0000111000000000011010, kVO_V_BHS_D2) , kRWI_W , 0 , 41 , 3881), // #695
765 INST(Uaba_v , ISimdVVV , (0b0010111000100000011111, kVO_V_BHS) , kRWI_X , 0 , 42 , 3886), // #696
766 INST(Uabal_v , ISimdVVV , (0b0010111000100000010100, kVO_V_B8H4S2) , kRWI_X , F(Long) , 43 , 3891), // #697
767 INST(Uabal2_v , ISimdVVV , (0b0110111000100000010100, kVO_V_B16H8S4) , kRWI_X , F(Long) , 44 , 3897), // #698
768 INST(Uabd_v , ISimdVVV , (0b0010111000100000011101, kVO_V_BHS) , kRWI_W , 0 , 45 , 3904), // #699
769 INST(Uabdl_v , ISimdVVV , (0b0010111000100000011100, kVO_V_B8H4S2) , kRWI_W , F(Long) , 46 , 3909), // #700
770 INST(Uabdl2_v , ISimdVVV , (0b0110111000100000011100, kVO_V_B16H8S4) , kRWI_W , F(Long) , 47 , 3915), // #701
771 INST(Uadalp_v , ISimdVV , (0b0010111000100000011010, kVO_V_BHS) , kRWI_X , F(Long) | F(Pair) , 20 , 3922), // #702
772 INST(Uaddl_v , ISimdVVV , (0b0010111000100000000000, kVO_V_B8H4S2) , kRWI_W , F(Long) , 48 , 3929), // #703
773 INST(Uaddl2_v , ISimdVVV , (0b0110111000100000000000, kVO_V_B16H8S4) , kRWI_W , F(Long) , 49 , 3935), // #704
774 INST(Uaddlp_v , ISimdVV , (0b0010111000100000001010, kVO_V_BHS) , kRWI_W , F(Long) | F(Pair) , 21 , 3942), // #705
775 INST(Uaddlv_v , ISimdSV , (0b0010111000110000001110, kVO_V_BH_4S) , kRWI_W , F(Long) , 4 , 3949), // #706
776 INST(Uaddw_v , ISimdWWV , (0b0010111000100000000100, kVO_V_B8H4S2) , kRWI_W , 0 , 4 , 3956), // #707
777 INST(Uaddw2_v , ISimdWWV , (0b0010111000100000000100, kVO_V_B16H8S4) , kRWI_W , 0 , 5 , 3962), // #708
778 INST(Ucvtf_v , SimdFcvtSV , (0b0010111000100001110110, 0b0010111100000000111001, 0b0001111000100011000000, 0) , kRWI_W , 0 , 11 , 3985), // #709
779 INST(Udot_v , SimdDot , (0b0010111010000000100101, 0b0010111110000000111000, kET_S, kET_B, kET_4B) , kRWI_X , 0 , 3 , 3740), // #710
780 INST(Uhadd_v , ISimdVVV , (0b0010111000100000000001, kVO_V_BHS) , kRWI_W , 0 , 50 , 4000), // #711
781 INST(Uhsub_v , ISimdVVV , (0b0010111000100000001001, kVO_V_BHS) , kRWI_W , 0 , 51 , 4006), // #712
782 INST(Umax_v , ISimdVVV , (0b0010111000100000011001, kVO_V_BHS) , kRWI_W , 0 , 52 , 1936), // #713
783 INST(Umaxp_v , ISimdVVV , (0b0010111000100000101001, kVO_V_BHS) , kRWI_W , 0 , 53 , 4019), // #714
784 INST(Umaxv_v , ISimdSV , (0b0010111000110000101010, kVO_V_BH_4S) , kRWI_W , 0 , 5 , 4025), // #715
785 INST(Umin_v , ISimdVVV , (0b0010111000100000011011, kVO_V_BHS) , kRWI_W , 0 , 54 , 2040), // #716
786 INST(Uminp_v , ISimdVVV , (0b0010111000100000101011, kVO_V_BHS) , kRWI_W , 0 , 55 , 4031), // #717
787 INST(Uminv_v , ISimdSV , (0b0010111000110001101010, kVO_V_BH_4S) , kRWI_W , 0 , 6 , 4037), // #718
788 INST(Umlal_v , ISimdVVVe , (0b0010111000100000100000, kVO_V_B8H4S2, 0b0010111100000000001000, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 19 , 4043), // #719
789 INST(Umlal2_v , ISimdVVVe , (0b0110111000100000100000, kVO_V_B16H8S4, 0b0010111100000000001000, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 20 , 4049), // #720
790 INST(Umlsl_v , ISimdVVVe , (0b0010111000100000101000, kVO_V_B8H4S2, 0b0010111100000000011000, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 21 , 4056), // #721
791 INST(Umlsl2_v , ISimdVVVe , (0b0110111000100000101000, kVO_V_B16H8S4, 0b0110111100000000011000, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 22 , 4062), // #722
792 INST(Ummla_v , ISimdVVVx , (0b0110111010000000101001, kOp_V4S, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 15 , 4069), // #723
793 INST(Umov_v , SimdSmovUmov , (0b0000111000000000001111, kVO_V_Any, 0) , kRWI_W , 0 , 1 , 4082), // #724
794 INST(Umull_v , ISimdVVVe , (0b0010111000100000110000, kVO_V_B8H4S2, 0b0010111100000000101000, kVO_V_H4S2) , kRWI_W , F(Long) | F(VH0_15) , 23 , 4100), // #725
795 INST(Umull2_v , ISimdVVVe , (0b0110111000100000110000, kVO_V_B16H8S4, 0b0110111100000000101000, kVO_V_H8S4) , kRWI_W , F(Long) | F(VH0_15) , 24 , 4106), // #726
796 INST(Uqadd_v , ISimdVVV , (0b0010111000100000000011, kVO_SV_Any) , kRWI_W , 0 , 56 , 3746), // #727
797 INST(Uqrshl_v , SimdShift , (0b0010111000100000010111, 0b0000000000000000000000, 0, kVO_SV_Any) , kRWI_W , 0 , 26 , 4113), // #728
798 INST(Uqrshrn_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000100111, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 27 , 4120), // #729
799 INST(Uqrshrn2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000100111, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 28 , 4128), // #730
800 INST(Uqshl_v , SimdShift , (0b0010111000100000010011, 0b0010111100000000011101, 0, kVO_SV_Any) , kRWI_W , 0 , 29 , 4137), // #731
801 INST(Uqshrn_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000100101, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 30 , 4143), // #732
802 INST(Uqshrn2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000100101, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 31 , 4150), // #733
803 INST(Uqsub_v , ISimdVVV , (0b0010111000100000001011, kVO_SV_Any) , kRWI_W , 0 , 57 , 4158), // #734
804 INST(Uqxtn_v , ISimdVV , (0b0010111000100001010010, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 22 , 4164), // #735
805 INST(Uqxtn2_v , ISimdVV , (0b0110111000100001010010, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 23 , 4170), // #736
806 INST(Urecpe_v , ISimdVV , (0b0000111010100001110010, kVO_V_S) , kRWI_W , 0 , 24 , 4177), // #737
807 INST(Urhadd_v , ISimdVVV , (0b0010111000100000000101, kVO_V_BHS) , kRWI_W , 0 , 58 , 4184), // #738
808 INST(Urshl_v , SimdShift , (0b0010111000100000010101, 0b0000000000000000000000, 0, kVO_V_Any) , kRWI_W , 0 , 32 , 4191), // #739
809 INST(Urshr_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000001001, 1, kVO_V_Any) , kRWI_W , 0 , 33 , 4197), // #740
810 INST(Ursqrte_v , ISimdVV , (0b0010111010100001110010, kVO_V_S) , kRWI_W , 0 , 25 , 4203), // #741
811 INST(Ursra_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000001101, 1, kVO_V_Any) , kRWI_X , 0 , 34 , 4211), // #742
812 INST(Usdot_v , SimdDot , (0b0000111010000000100111, 0b0000111110000000111100, kET_S, kET_B, kET_4B) , kRWI_X , 0 , 4 , 4217), // #743
813 INST(Ushl_v , SimdShift , (0b0010111000100000010001, 0b0000000000000000000000, 0, kVO_V_Any) , kRWI_W , 0 , 35 , 4223), // #744
814 INST(Ushll_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000101001, 0, kVO_V_B8H4S2) , kRWI_W , F(Long) , 36 , 4228), // #745
815 INST(Ushll2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000101001, 0, kVO_V_B16H8S4) , kRWI_W , F(Long) , 37 , 4234), // #746
816 INST(Ushr_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000000001, 1, kVO_V_Any) , kRWI_W , 0 , 38 , 4241), // #747
817 INST(Usmmla_v , ISimdVVVx , (0b0100111010000000101011, kOp_V4S, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 16 , 4246), // #748
818 INST(Usqadd_v , ISimdVV , (0b0010111000100000001110, kVO_SV_Any) , kRWI_X , 0 , 26 , 4253), // #749
819 INST(Usra_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000000101, 1, kVO_V_Any) , kRWI_X , 0 , 39 , 4260), // #750
820 INST(Usubl_v , ISimdVVV , (0b0010111000100000001000, kVO_V_B8H4S2) , kRWI_W , F(Long) , 59 , 4265), // #751
821 INST(Usubl2_v , ISimdVVV , (0b0110111000100000001000, kVO_V_B16H8S4) , kRWI_W , F(Long) , 60 , 4271), // #752
822 INST(Usubw_v , ISimdWWV , (0b0010111000100000001100, kVO_V_B8H4S2) , kRWI_W , 0 , 6 , 4278), // #753
823 INST(Usubw2_v , ISimdWWV , (0b0010111000100000001100, kVO_V_B16H8S4) , kRWI_W , 0 , 7 , 4284), // #754
824 INST(Uxtl_v , SimdSxtlUxtl , (0b0010111100000000101001, kVO_V_B8H4S2) , kRWI_W , F(Long) , 2 , 4301), // #755
825 INST(Uxtl2_v , SimdSxtlUxtl , (0b0110111100000000101001, kVO_V_B16H8S4) , kRWI_W , F(Long) , 3 , 4306), // #756
826 INST(Uzp1_v , ISimdVVV , (0b0000111000000000000110, kVO_V_BHS_D2) , kRWI_W , 0 , 61 , 4312), // #757
827 INST(Uzp2_v , ISimdVVV , (0b0000111000000000010110, kVO_V_BHS_D2) , kRWI_W , 0 , 62 , 4317), // #758
828 INST(Xar_v , ISimdVVVI , (0b1100111001100000100011, kVO_V_D2, 6, 10, 0) , kRWI_W , 0 , 1 , 4337), // #759
829 INST(Xtn_v , ISimdVV , (0b0000111000100001001010, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 27 , 3047), // #760
830 INST(Xtn2_v , ISimdVV , (0b0100111000100001001010, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 28 , 3053), // #761
831 INST(Zip1_v , ISimdVVV , (0b0000111000000000001110, kVO_V_BHS_D2) , kRWI_W , 0 , 63 , 4367), // #762
832 INST(Zip2_v , ISimdVVV , (0b0000111000000000011110, kVO_V_BHS_D2) , kRWI_W , 0 , 64 , 4372) // #763
60 INST(None , None , (_) , 0 , 0 , 0 ), // #0
61 INST(Adc , BaseRRR , (0b0001101000000000000000, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 0 ), // #1
62 INST(Adcs , BaseRRR , (0b0011101000000000000000, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 1 ), // #2
63 INST(Add , BaseAddSub , (0b0001011000, 0b0001011001, 0b0010001) , kRWI_W , 0 , 0 ), // #3
64 INST(Addg , BaseRRII , (0b1001000110000000000000, kX, kSP, kX, kSP, 6, 4, 16, 4, 0, 10) , kRWI_W , 0 , 0 ), // #4
65 INST(Adds , BaseAddSub , (0b0101011000, 0b0101011001, 0b0110001) , kRWI_W , 0 , 1 ), // #5
66 INST(Adr , BaseAdr , (0b0001000000000000000000, OffsetType::kAArch64_ADR) , kRWI_W , 0 , 0 ), // #6
67 INST(Adrp , BaseAdr , (0b1001000000000000000000, OffsetType::kAArch64_ADRP) , kRWI_W , 0 , 1 ), // #7
68 INST(And , BaseLogical , (0b0001010000, 0b00100100, 0) , kRWI_W , 0 , 0 ), // #8
69 INST(Ands , BaseLogical , (0b1101010000, 0b11100100, 0) , kRWI_W , 0 , 1 ), // #9
70 INST(Asr , BaseShift , (0b0001101011000000001010, 0b0001001100000000011111, 0) , kRWI_W , 0 , 0 ), // #10
71 INST(Asrv , BaseShift , (0b0001101011000000001010, 0b0000000000000000000000, 0) , kRWI_W , 0 , 1 ), // #11
72 INST(At , BaseAtDcIcTlbi , (0b00011111110000, 0b00001111000000, true) , kRWI_RX , 0 , 0 ), // #12
73 INST(Autda , BaseRR , (0b11011010110000010001100000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 0 ), // #13
74 INST(Autdza , BaseR , (0b11011010110000010011101111100000, kX, kZR, 0) , kRWI_X , 0 , 0 ), // #14
75 INST(Autdb , BaseRR , (0b11011010110000010001110000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 1 ), // #15
76 INST(Autdzb , BaseR , (0b11011010110000010011111111100000, kX, kZR, 0) , kRWI_X , 0 , 1 ), // #16
77 INST(Autia , BaseRR , (0b11011010110000010001000000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 2 ), // #17
78 INST(Autia1716 , BaseOp , (0b11010101000000110010000110011111) , 0 , 0 , 0 ), // #18
79 INST(Autiasp , BaseOp , (0b11010101000000110010001110111111) , 0 , 0 , 1 ), // #19
80 INST(Autiaz , BaseOp , (0b11010101000000110010001110011111) , 0 , 0 , 2 ), // #20
81 INST(Autib , BaseRR , (0b11011010110000010001010000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 3 ), // #21
82 INST(Autib1716 , BaseOp , (0b11010101000000110010000111011111) , 0 , 0 , 3 ), // #22
83 INST(Autibsp , BaseOp , (0b11010101000000110010001111111111) , 0 , 0 , 4 ), // #23
84 INST(Autibz , BaseOp , (0b11010101000000110010001111011111) , 0 , 0 , 5 ), // #24
85 INST(Autiza , BaseR , (0b11011010110000010011001111100000, kX, kZR, 0) , kRWI_X , 0 , 2 ), // #25
86 INST(Autizb , BaseR , (0b11011010110000010011011111100000, kX, kZR, 0) , kRWI_X , 0 , 3 ), // #26
87 INST(Axflag , BaseOp , (0b11010101000000000100000001011111) , 0 , 0 , 6 ), // #27
88 INST(B , BaseBranchRel , (0b00010100000000000000000000000000) , 0 , F(Cond) , 0 ), // #28
89 INST(Bfc , BaseBfc , (0b00110011000000000000001111100000) , kRWI_X , 0 , 0 ), // #29
90 INST(Bfi , BaseBfi , (0b00110011000000000000000000000000) , kRWI_X , 0 , 0 ), // #30
91 INST(Bfm , BaseBfm , (0b00110011000000000000000000000000) , kRWI_X , 0 , 0 ), // #31
92 INST(Bfxil , BaseBfx , (0b00110011000000000000000000000000) , kRWI_X , 0 , 0 ), // #32
93 INST(Bic , BaseLogical , (0b0001010001, 0b00100100, 1) , kRWI_W , 0 , 2 ), // #33
94 INST(Bics , BaseLogical , (0b1101010001, 0b11100100, 1) , kRWI_W , 0 , 3 ), // #34
95 INST(Bl , BaseBranchRel , (0b10010100000000000000000000000000) , 0 , 0 , 1 ), // #35
96 INST(Blr , BaseBranchReg , (0b11010110001111110000000000000000) , kRWI_R , 0 , 0 ), // #36
97 INST(Br , BaseBranchReg , (0b11010110000111110000000000000000) , kRWI_R , 0 , 1 ), // #37
98 INST(Brk , BaseOpImm , (0b11010100001000000000000000000000, 16, 5) , 0 , 0 , 0 ), // #38
99 INST(Cas , BaseAtomicOp , (0b1000100010100000011111, kWX, 30, 0) , kRWI_XRX , 0 , 0 ), // #39
100 INST(Casa , BaseAtomicOp , (0b1000100011100000011111, kWX, 30, 1) , kRWI_XRX , 0 , 1 ), // #40
101 INST(Casab , BaseAtomicOp , (0b0000100011100000011111, kW , 0 , 1) , kRWI_XRX , 0 , 2 ), // #41
102 INST(Casah , BaseAtomicOp , (0b0100100011100000011111, kW , 0 , 1) , kRWI_XRX , 0 , 3 ), // #42
103 INST(Casal , BaseAtomicOp , (0b1000100011100000111111, kWX, 30, 1) , kRWI_XRX , 0 , 4 ), // #43
104 INST(Casalb , BaseAtomicOp , (0b0000100011100000111111, kW , 0 , 1) , kRWI_XRX , 0 , 5 ), // #44
105 INST(Casalh , BaseAtomicOp , (0b0100100011100000111111, kW , 0 , 1) , kRWI_XRX , 0 , 6 ), // #45
106 INST(Casb , BaseAtomicOp , (0b0000100010100000011111, kW , 0 , 0) , kRWI_XRX , 0 , 7 ), // #46
107 INST(Cash , BaseAtomicOp , (0b0100100010100000011111, kW , 0 , 0) , kRWI_XRX , 0 , 8 ), // #47
108 INST(Casl , BaseAtomicOp , (0b1000100010100000111111, kWX, 30, 0) , kRWI_XRX , 0 , 9 ), // #48
109 INST(Caslb , BaseAtomicOp , (0b0000100010100000111111, kW , 0 , 0) , kRWI_XRX , 0 , 10 ), // #49
110 INST(Caslh , BaseAtomicOp , (0b0100100010100000111111, kW , 0 , 0) , kRWI_XRX , 0 , 11 ), // #50
111 INST(Casp , BaseAtomicCasp , (0b0000100000100000011111, kWX, 30) , kRWI_XXRRX, 0 , 0 ), // #51
112 INST(Caspa , BaseAtomicCasp , (0b0000100001100000011111, kWX, 30) , kRWI_XXRRX, 0 , 1 ), // #52
113 INST(Caspal , BaseAtomicCasp , (0b0000100001100000111111, kWX, 30) , kRWI_XXRRX, 0 , 2 ), // #53
114 INST(Caspl , BaseAtomicCasp , (0b0000100000100000111111, kWX, 30) , kRWI_XXRRX, 0 , 3 ), // #54
115 INST(Cbnz , BaseBranchCmp , (0b00110101000000000000000000000000) , kRWI_R , 0 , 0 ), // #55
116 INST(Cbz , BaseBranchCmp , (0b00110100000000000000000000000000) , kRWI_R , 0 , 1 ), // #56
117 INST(Ccmn , BaseCCmp , (0b00111010010000000000000000000000) , kRWI_R , 0 , 0 ), // #57
118 INST(Ccmp , BaseCCmp , (0b01111010010000000000000000000000) , kRWI_R , 0 , 1 ), // #58
119 INST(Cfinv , BaseOp , (0b11010101000000000100000000011111) , 0 , 0 , 7 ), // #59
120 INST(Cinc , BaseCInc , (0b00011010100000000000010000000000) , kRWI_W , 0 , 0 ), // #60
121 INST(Cinv , BaseCInc , (0b01011010100000000000000000000000) , kRWI_W , 0 , 1 ), // #61
122 INST(Clrex , BaseOpImm , (0b11010101000000110011000001011111, 4, 8) , 0 , 0 , 1 ), // #62
123 INST(Cls , BaseRR , (0b01011010110000000001010000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 4 ), // #63
124 INST(Clz , BaseRR , (0b01011010110000000001000000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 5 ), // #64
125 INST(Cmn , BaseCmpCmn , (0b0101011000, 0b0101011001, 0b0110001) , kRWI_R , 0 , 0 ), // #65
126 INST(Cmp , BaseCmpCmn , (0b1101011000, 0b1101011001, 0b1110001) , kRWI_R , 0 , 1 ), // #66
127 INST(Cmpp , BaseRR , (0b10111010110000000000000000011111, kX, kSP, 5, kX, kSP, 16, true) , kRWI_R , 0 , 6 ), // #67
128 INST(Cneg , BaseCInc , (0b01011010100000000000010000000000) , kRWI_W , 0 , 2 ), // #68
129 INST(Crc32b , BaseRRR , (0b0001101011000000010000, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 2 ), // #69
130 INST(Crc32cb , BaseRRR , (0b0001101011000000010100, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 3 ), // #70
131 INST(Crc32ch , BaseRRR , (0b0001101011000000010101, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 4 ), // #71
132 INST(Crc32cw , BaseRRR , (0b0001101011000000010110, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 5 ), // #72
133 INST(Crc32cx , BaseRRR , (0b1001101011000000010111, kW, kZR, kW, kZR, kX, kZR, false) , kRWI_W , 0 , 6 ), // #73
134 INST(Crc32h , BaseRRR , (0b0001101011000000010001, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 7 ), // #74
135 INST(Crc32w , BaseRRR , (0b0001101011000000010010, kW, kZR, kW, kZR, kW, kZR, false) , kRWI_W , 0 , 8 ), // #75
136 INST(Crc32x , BaseRRR , (0b1001101011000000010011, kW, kZR, kW, kZR, kX, kZR, false) , kRWI_W , 0 , 9 ), // #76
137 INST(Csdb , BaseOp , (0b11010101000000110010001010011111) , 0 , 0 , 8 ), // #77
138 INST(Csel , BaseCSel , (0b00011010100000000000000000000000) , kRWI_W , 0 , 0 ), // #78
139 INST(Cset , BaseCSet , (0b00011010100111110000011111100000) , kRWI_W , 0 , 0 ), // #79
140 INST(Csetm , BaseCSet , (0b01011010100111110000001111100000) , kRWI_W , 0 , 1 ), // #80
141 INST(Csinc , BaseCSel , (0b00011010100000000000010000000000) , kRWI_W , 0 , 1 ), // #81
142 INST(Csinv , BaseCSel , (0b01011010100000000000000000000000) , kRWI_W , 0 , 2 ), // #82
143 INST(Csneg , BaseCSel , (0b01011010100000000000010000000000) , kRWI_W , 0 , 3 ), // #83
144 INST(Dc , BaseAtDcIcTlbi , (0b00011110000000, 0b00001110000000, true) , kRWI_RX , 0 , 1 ), // #84
145 INST(Dcps1 , BaseOpImm , (0b11010100101000000000000000000001, 16, 5) , 0 , 0 , 2 ), // #85
146 INST(Dcps2 , BaseOpImm , (0b11010100101000000000000000000010, 16, 5) , 0 , 0 , 3 ), // #86
147 INST(Dcps3 , BaseOpImm , (0b11010100101000000000000000000011, 16, 5) , 0 , 0 , 4 ), // #87
148 INST(Dgh , BaseOp , (0b11010101000000110010000011011111) , 0 , 0 , 9 ), // #88
149 INST(Dmb , BaseOpImm , (0b11010101000000110011000010111111, 4, 8) , 0 , 0 , 5 ), // #89
150 INST(Drps , BaseOp , (0b11010110101111110000001111100000) , 0 , 0 , 10 ), // #90
151 INST(Dsb , BaseOpImm , (0b11010101000000110011000010011111, 4, 8) , 0 , 0 , 6 ), // #91
152 INST(Eon , BaseLogical , (0b1001010001, 0b10100100, 1) , kRWI_W , 0 , 4 ), // #92
153 INST(Eor , BaseLogical , (0b1001010000, 0b10100100, 0) , kRWI_W , 0 , 5 ), // #93
154 INST(Esb , BaseOp , (0b11010101000000110010001000011111) , 0 , 0 , 11 ), // #94
155 INST(Extr , BaseExtract , (0b00010011100000000000000000000000) , kRWI_W , 0 , 0 ), // #95
156 INST(Eret , BaseOp , (0b11010110100111110000001111100000) , 0 , 0 , 12 ), // #96
157 INST(Gmi , BaseRRR , (0b1001101011000000000101, kX , kZR, kX , kSP, kX , kZR, true) , kRWI_W , 0 , 10 ), // #97
158 INST(Hint , BaseOpImm , (0b11010101000000110010000000011111, 7, 5) , 0 , 0 , 7 ), // #98
159 INST(Hlt , BaseOpImm , (0b11010100010000000000000000000000, 16, 5) , 0 , 0 , 8 ), // #99
160 INST(Hvc , BaseOpImm , (0b11010100000000000000000000000010, 16, 5) , 0 , 0 , 9 ), // #100
161 INST(Ic , BaseAtDcIcTlbi , (0b00011110000000, 0b00001110000000, false) , kRWI_RX , 0 , 2 ), // #101
162 INST(Isb , BaseOpImm , (0b11010101000000110011000011011111, 4, 8) , 0 , 0 , 10 ), // #102
163 INST(Ldadd , BaseAtomicOp , (0b1011100000100000000000, kWX, 30, 0) , kRWI_WRX , 0 , 12 ), // #103
164 INST(Ldadda , BaseAtomicOp , (0b1011100010100000000000, kWX, 30, 1) , kRWI_WRX , 0 , 13 ), // #104
165 INST(Ldaddab , BaseAtomicOp , (0b0011100010100000000000, kW , 0 , 1) , kRWI_WRX , 0 , 14 ), // #105
166 INST(Ldaddah , BaseAtomicOp , (0b0111100010100000000000, kW , 0 , 1) , kRWI_WRX , 0 , 15 ), // #106
167 INST(Ldaddal , BaseAtomicOp , (0b1011100011100000000000, kWX, 30, 1) , kRWI_WRX , 0 , 16 ), // #107
168 INST(Ldaddalb , BaseAtomicOp , (0b0011100011100000000000, kW , 0 , 1) , kRWI_WRX , 0 , 17 ), // #108
169 INST(Ldaddalh , BaseAtomicOp , (0b0111100011100000000000, kW , 0 , 1) , kRWI_WRX , 0 , 18 ), // #109
170 INST(Ldaddb , BaseAtomicOp , (0b0011100000100000000000, kW , 0 , 0) , kRWI_WRX , 0 , 19 ), // #110
171 INST(Ldaddh , BaseAtomicOp , (0b0111100000100000000000, kW , 0 , 0) , kRWI_WRX , 0 , 20 ), // #111
172 INST(Ldaddl , BaseAtomicOp , (0b1011100001100000000000, kWX, 30, 0) , kRWI_WRX , 0 , 21 ), // #112
173 INST(Ldaddlb , BaseAtomicOp , (0b0011100001100000000000, kW , 0 , 0) , kRWI_WRX , 0 , 22 ), // #113
174 INST(Ldaddlh , BaseAtomicOp , (0b0111100001100000000000, kW , 0 , 0) , kRWI_WRX , 0 , 23 ), // #114
175 INST(Ldar , BaseRM_NoImm , (0b1000100011011111111111, kWX, kZR, 30) , kRWI_W , 0 , 0 ), // #115
176 INST(Ldarb , BaseRM_NoImm , (0b0000100011011111111111, kW , kZR, 0 ) , kRWI_W , 0 , 1 ), // #116
177 INST(Ldarh , BaseRM_NoImm , (0b0100100011011111111111, kW , kZR, 0 ) , kRWI_W , 0 , 2 ), // #117
178 INST(Ldaxp , BaseLdxp , (0b1000100001111111100000, kWX, 30) , kRWI_WW , 0 , 0 ), // #118
179 INST(Ldaxr , BaseRM_NoImm , (0b1000100001011111111111, kWX, kZR, 30) , kRWI_W , 0 , 3 ), // #119
180 INST(Ldaxrb , BaseRM_NoImm , (0b0000100001011111111111, kW , kZR, 0 ) , kRWI_W , 0 , 4 ), // #120
181 INST(Ldaxrh , BaseRM_NoImm , (0b0100100001011111111111, kW , kZR, 0 ) , kRWI_W , 0 , 5 ), // #121
182 INST(Ldclr , BaseAtomicOp , (0b1011100000100000000100, kWX, 30, 0) , kRWI_WRX , 0 , 24 ), // #122
183 INST(Ldclra , BaseAtomicOp , (0b1011100010100000000100, kWX, 30, 1) , kRWI_WRX , 0 , 25 ), // #123
184 INST(Ldclrab , BaseAtomicOp , (0b0011100010100000000100, kW , 0 , 1) , kRWI_WRX , 0 , 26 ), // #124
185 INST(Ldclrah , BaseAtomicOp , (0b0111100010100000000100, kW , 0 , 1) , kRWI_WRX , 0 , 27 ), // #125
186 INST(Ldclral , BaseAtomicOp , (0b1011100011100000000100, kWX, 30, 1) , kRWI_WRX , 0 , 28 ), // #126
187 INST(Ldclralb , BaseAtomicOp , (0b0011100011100000000100, kW , 0 , 1) , kRWI_WRX , 0 , 29 ), // #127
188 INST(Ldclralh , BaseAtomicOp , (0b0111100011100000000100, kW , 0 , 1) , kRWI_WRX , 0 , 30 ), // #128
189 INST(Ldclrb , BaseAtomicOp , (0b0011100000100000000100, kW , 0 , 0) , kRWI_WRX , 0 , 31 ), // #129
190 INST(Ldclrh , BaseAtomicOp , (0b0111100000100000000100, kW , 0 , 0) , kRWI_WRX , 0 , 32 ), // #130
191 INST(Ldclrl , BaseAtomicOp , (0b1011100001100000000100, kWX, 30, 0) , kRWI_WRX , 0 , 33 ), // #131
192 INST(Ldclrlb , BaseAtomicOp , (0b0011100001100000000100, kW , 0 , 0) , kRWI_WRX , 0 , 34 ), // #132
193 INST(Ldclrlh , BaseAtomicOp , (0b0111100001100000000100, kW , 0 , 0) , kRWI_WRX , 0 , 35 ), // #133
194 INST(Ldeor , BaseAtomicOp , (0b1011100000100000001000, kWX, 30, 0) , kRWI_WRX , 0 , 36 ), // #134
195 INST(Ldeora , BaseAtomicOp , (0b1011100010100000001000, kWX, 30, 1) , kRWI_WRX , 0 , 37 ), // #135
196 INST(Ldeorab , BaseAtomicOp , (0b0011100010100000001000, kW , 0 , 1) , kRWI_WRX , 0 , 38 ), // #136
197 INST(Ldeorah , BaseAtomicOp , (0b0111100010100000001000, kW , 0 , 1) , kRWI_WRX , 0 , 39 ), // #137
198 INST(Ldeoral , BaseAtomicOp , (0b1011100011100000001000, kWX, 30, 1) , kRWI_WRX , 0 , 40 ), // #138
199 INST(Ldeoralb , BaseAtomicOp , (0b0011100011100000001000, kW , 0 , 1) , kRWI_WRX , 0 , 41 ), // #139
200 INST(Ldeoralh , BaseAtomicOp , (0b0111100011100000001000, kW , 0 , 1) , kRWI_WRX , 0 , 42 ), // #140
201 INST(Ldeorb , BaseAtomicOp , (0b0011100000100000001000, kW , 0 , 0) , kRWI_WRX , 0 , 43 ), // #141
202 INST(Ldeorh , BaseAtomicOp , (0b0111100000100000001000, kW , 0 , 0) , kRWI_WRX , 0 , 44 ), // #142
203 INST(Ldeorl , BaseAtomicOp , (0b1011100001100000001000, kWX, 30, 0) , kRWI_WRX , 0 , 45 ), // #143
204 INST(Ldeorlb , BaseAtomicOp , (0b0011100001100000001000, kW , 0 , 0) , kRWI_WRX , 0 , 46 ), // #144
205 INST(Ldeorlh , BaseAtomicOp , (0b0111100001100000001000, kW , 0 , 0) , kRWI_WRX , 0 , 47 ), // #145
206 INST(Ldg , BaseRM_SImm9 , (0b1101100101100000000000, 0b0000000000000000000000, kX , kZR, 0, 4) , kRWI_W , 0 , 0 ), // #146
207 INST(Ldgm , BaseRM_NoImm , (0b1101100111100000000000, kX , kZR, 0 ) , kRWI_W , 0 , 6 ), // #147
208 INST(Ldlar , BaseRM_NoImm , (0b1000100011011111011111, kWX, kZR, 30) , kRWI_W , 0 , 7 ), // #148
209 INST(Ldlarb , BaseRM_NoImm , (0b0000100011011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 8 ), // #149
210 INST(Ldlarh , BaseRM_NoImm , (0b0100100011011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 9 ), // #150
211 INST(Ldnp , BaseLdpStp , (0b0010100001, 0 , kWX, 31, 2) , kRWI_WW , 0 , 0 ), // #151
212 INST(Ldp , BaseLdpStp , (0b0010100101, 0b0010100011, kWX, 31, 2) , kRWI_W , 0 , 1 ), // #152
213 INST(Ldpsw , BaseLdpStp , (0b0110100101, 0b0110100011, kX , 0 , 2) , kRWI_WW , 0 , 2 ), // #153
214 INST(Ldr , BaseLdSt , (0b1011100101, 0b10111000010, 0b10111000011, 0b00011000, kWX, 30, 2, Inst::kIdLdur) , kRWI_W , 0 , 0 ), // #154
215 INST(Ldraa , BaseRM_SImm10 , (0b1111100000100000000001, kX , kZR, 0, 3) , kRWI_W , 0 , 0 ), // #155
216 INST(Ldrab , BaseRM_SImm10 , (0b1111100010100000000001, kX , kZR, 0, 3) , kRWI_W , 0 , 1 ), // #156
217 INST(Ldrb , BaseLdSt , (0b0011100101, 0b00111000010, 0b00111000011, 0 , kW , 0 , 0, Inst::kIdLdurb) , kRWI_W , 0 , 1 ), // #157
218 INST(Ldrh , BaseLdSt , (0b0111100101, 0b01111000010, 0b01111000011, 0 , kW , 0 , 1, Inst::kIdLdurh) , kRWI_W , 0 , 2 ), // #158
219 INST(Ldrsb , BaseLdSt , (0b0011100111, 0b00111000100, 0b00111000111, 0 , kWX, 22, 0, Inst::kIdLdursb) , kRWI_W , 0 , 3 ), // #159
220 INST(Ldrsh , BaseLdSt , (0b0111100111, 0b01111000100, 0b01111000111, 0 , kWX, 22, 1, Inst::kIdLdursh) , kRWI_W , 0 , 4 ), // #160
221 INST(Ldrsw , BaseLdSt , (0b1011100110, 0b10111000100, 0b10111000101, 0b10011000, kX , 0 , 2, Inst::kIdLdursw) , kRWI_W , 0 , 5 ), // #161
222 INST(Ldset , BaseAtomicOp , (0b1011100000100000001100, kWX, 30, 0) , kRWI_WRX , 0 , 48 ), // #162
223 INST(Ldseta , BaseAtomicOp , (0b1011100010100000001100, kWX, 30, 1) , kRWI_WRX , 0 , 49 ), // #163
224 INST(Ldsetab , BaseAtomicOp , (0b0011100010100000001100, kW , 0 , 1) , kRWI_WRX , 0 , 50 ), // #164
225 INST(Ldsetah , BaseAtomicOp , (0b0111100010100000001100, kW , 0 , 1) , kRWI_WRX , 0 , 51 ), // #165
226 INST(Ldsetal , BaseAtomicOp , (0b1011100011100000001100, kWX, 30, 1) , kRWI_WRX , 0 , 52 ), // #166
227 INST(Ldsetalb , BaseAtomicOp , (0b0011100011100000001100, kW , 0 , 1) , kRWI_WRX , 0 , 53 ), // #167
228 INST(Ldsetalh , BaseAtomicOp , (0b0111100011100000001100, kW , 0 , 1) , kRWI_WRX , 0 , 54 ), // #168
229 INST(Ldsetb , BaseAtomicOp , (0b0011100000100000001100, kW , 0 , 0) , kRWI_WRX , 0 , 55 ), // #169
230 INST(Ldseth , BaseAtomicOp , (0b0111100000100000001100, kW , 0 , 0) , kRWI_WRX , 0 , 56 ), // #170
231 INST(Ldsetl , BaseAtomicOp , (0b1011100001100000001100, kWX, 30, 0) , kRWI_WRX , 0 , 57 ), // #171
232 INST(Ldsetlb , BaseAtomicOp , (0b0011100001100000001100, kW , 0 , 0) , kRWI_WRX , 0 , 58 ), // #172
233 INST(Ldsetlh , BaseAtomicOp , (0b0111100001100000001100, kW , 0 , 0) , kRWI_WRX , 0 , 59 ), // #173
234 INST(Ldsmax , BaseAtomicOp , (0b1011100000100000010000, kWX, 30, 0) , kRWI_WRX , 0 , 60 ), // #174
235 INST(Ldsmaxa , BaseAtomicOp , (0b1011100010100000010000, kWX, 30, 1) , kRWI_WRX , 0 , 61 ), // #175
236 INST(Ldsmaxab , BaseAtomicOp , (0b0011100010100000010000, kW , 0 , 1) , kRWI_WRX , 0 , 62 ), // #176
237 INST(Ldsmaxah , BaseAtomicOp , (0b0111100010100000010000, kW , 0 , 1) , kRWI_WRX , 0 , 63 ), // #177
238 INST(Ldsmaxal , BaseAtomicOp , (0b1011100011100000010000, kWX, 30, 1) , kRWI_WRX , 0 , 64 ), // #178
239 INST(Ldsmaxalb , BaseAtomicOp , (0b0011100011100000010000, kW , 0 , 1) , kRWI_WRX , 0 , 65 ), // #179
240 INST(Ldsmaxalh , BaseAtomicOp , (0b0111100011100000010000, kW , 0 , 1) , kRWI_WRX , 0 , 66 ), // #180
241 INST(Ldsmaxb , BaseAtomicOp , (0b0011100000100000010000, kW , 0 , 0) , kRWI_WRX , 0 , 67 ), // #181
242 INST(Ldsmaxh , BaseAtomicOp , (0b0111100000100000010000, kW , 0 , 0) , kRWI_WRX , 0 , 68 ), // #182
243 INST(Ldsmaxl , BaseAtomicOp , (0b1011100001100000010000, kWX, 30, 0) , kRWI_WRX , 0 , 69 ), // #183
244 INST(Ldsmaxlb , BaseAtomicOp , (0b0011100001100000010000, kW , 0 , 0) , kRWI_WRX , 0 , 70 ), // #184
245 INST(Ldsmaxlh , BaseAtomicOp , (0b0111100001100000010000, kW , 0 , 0) , kRWI_WRX , 0 , 71 ), // #185
246 INST(Ldsmin , BaseAtomicOp , (0b1011100000100000010100, kWX, 30, 0) , kRWI_WRX , 0 , 72 ), // #186
247 INST(Ldsmina , BaseAtomicOp , (0b1011100010100000010100, kWX, 30, 1) , kRWI_WRX , 0 , 73 ), // #187
248 INST(Ldsminab , BaseAtomicOp , (0b0011100010100000010100, kW , 0 , 1) , kRWI_WRX , 0 , 74 ), // #188
249 INST(Ldsminah , BaseAtomicOp , (0b0111100010100000010100, kW , 0 , 1) , kRWI_WRX , 0 , 75 ), // #189
250 INST(Ldsminal , BaseAtomicOp , (0b1011100011100000010100, kWX, 30, 1) , kRWI_WRX , 0 , 76 ), // #190
251 INST(Ldsminalb , BaseAtomicOp , (0b0011100011100000010100, kW , 0 , 1) , kRWI_WRX , 0 , 77 ), // #191
252 INST(Ldsminalh , BaseAtomicOp , (0b0111100011100000010100, kW , 0 , 1) , kRWI_WRX , 0 , 78 ), // #192
253 INST(Ldsminb , BaseAtomicOp , (0b0011100000100000010100, kW , 0 , 0) , kRWI_WRX , 0 , 79 ), // #193
254 INST(Ldsminh , BaseAtomicOp , (0b0111100000100000010100, kW , 0 , 0) , kRWI_WRX , 0 , 80 ), // #194
255 INST(Ldsminl , BaseAtomicOp , (0b1011100001100000010100, kWX, 30, 0) , kRWI_WRX , 0 , 81 ), // #195
256 INST(Ldsminlb , BaseAtomicOp , (0b0011100001100000010100, kW , 0 , 0) , kRWI_WRX , 0 , 82 ), // #196
257 INST(Ldsminlh , BaseAtomicOp , (0b0111100001100000010100, kW , 0 , 0) , kRWI_WRX , 0 , 83 ), // #197
258 INST(Ldtr , BaseRM_SImm9 , (0b1011100001000000000010, 0b0000000000000000000000, kWX, kZR, 30, 0) , kRWI_W , 0 , 1 ), // #198
259 INST(Ldtrb , BaseRM_SImm9 , (0b0011100001000000000010, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 2 ), // #199
260 INST(Ldtrh , BaseRM_SImm9 , (0b0111100001000000000010, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 3 ), // #200
261 INST(Ldtrsb , BaseRM_SImm9 , (0b0011100011000000000010, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 4 ), // #201
262 INST(Ldtrsh , BaseRM_SImm9 , (0b0111100011000000000010, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 5 ), // #202
263 INST(Ldtrsw , BaseRM_SImm9 , (0b1011100010000000000010, 0b0000000000000000000000, kX , kZR, 0 , 0) , kRWI_W , 0 , 6 ), // #203
264 INST(Ldumax , BaseAtomicOp , (0b1011100000100000011000, kWX, 30, 0) , kRWI_WRX , 0 , 84 ), // #204
265 INST(Ldumaxa , BaseAtomicOp , (0b1011100010100000011000, kWX, 30, 1) , kRWI_WRX , 0 , 85 ), // #205
266 INST(Ldumaxab , BaseAtomicOp , (0b0011100010100000011000, kW , 0 , 1) , kRWI_WRX , 0 , 86 ), // #206
267 INST(Ldumaxah , BaseAtomicOp , (0b0111100010100000011000, kW , 0 , 1) , kRWI_WRX , 0 , 87 ), // #207
268 INST(Ldumaxal , BaseAtomicOp , (0b1011100011100000011000, kWX, 30, 1) , kRWI_WRX , 0 , 88 ), // #208
269 INST(Ldumaxalb , BaseAtomicOp , (0b0011100011100000011000, kW , 0 , 1) , kRWI_WRX , 0 , 89 ), // #209
270 INST(Ldumaxalh , BaseAtomicOp , (0b0111100011100000011000, kW , 0 , 1) , kRWI_WRX , 0 , 90 ), // #210
271 INST(Ldumaxb , BaseAtomicOp , (0b0011100000100000011000, kW , 0 , 0) , kRWI_WRX , 0 , 91 ), // #211
272 INST(Ldumaxh , BaseAtomicOp , (0b0111100000100000011000, kW , 0 , 0) , kRWI_WRX , 0 , 92 ), // #212
273 INST(Ldumaxl , BaseAtomicOp , (0b1011100001100000011000, kWX, 30, 0) , kRWI_WRX , 0 , 93 ), // #213
274 INST(Ldumaxlb , BaseAtomicOp , (0b0011100001100000011000, kW , 0 , 0) , kRWI_WRX , 0 , 94 ), // #214
275 INST(Ldumaxlh , BaseAtomicOp , (0b0111100001100000011000, kW , 0 , 0) , kRWI_WRX , 0 , 95 ), // #215
276 INST(Ldumin , BaseAtomicOp , (0b1011100000100000011100, kWX, 30, 0) , kRWI_WRX , 0 , 96 ), // #216
277 INST(Ldumina , BaseAtomicOp , (0b1011100010100000011100, kWX, 30, 1) , kRWI_WRX , 0 , 97 ), // #217
278 INST(Lduminab , BaseAtomicOp , (0b0011100010100000011100, kW , 0 , 1) , kRWI_WRX , 0 , 98 ), // #218
279 INST(Lduminah , BaseAtomicOp , (0b0111100010100000011100, kW , 0 , 1) , kRWI_WRX , 0 , 99 ), // #219
280 INST(Lduminal , BaseAtomicOp , (0b1011100011100000011100, kWX, 30, 1) , kRWI_WRX , 0 , 100), // #220
281 INST(Lduminalb , BaseAtomicOp , (0b0011100011100000011100, kW , 0 , 1) , kRWI_WRX , 0 , 101), // #221
282 INST(Lduminalh , BaseAtomicOp , (0b0111100011100000011100, kW , 0 , 1) , kRWI_WRX , 0 , 102), // #222
283 INST(Lduminb , BaseAtomicOp , (0b0011100000100000011100, kW , 0 , 0) , kRWI_WRX , 0 , 103), // #223
284 INST(Lduminh , BaseAtomicOp , (0b0111100000100000011100, kW , 0 , 0) , kRWI_WRX , 0 , 104), // #224
285 INST(Lduminl , BaseAtomicOp , (0b1011100001100000011100, kWX, 30, 0) , kRWI_WRX , 0 , 105), // #225
286 INST(Lduminlb , BaseAtomicOp , (0b0011100001100000011100, kW , 0 , 0) , kRWI_WRX , 0 , 106), // #226
287 INST(Lduminlh , BaseAtomicOp , (0b0111100001100000011100, kW , 0 , 0) , kRWI_WRX , 0 , 107), // #227
288 INST(Ldur , BaseRM_SImm9 , (0b1011100001000000000000, 0b0000000000000000000000, kWX, kZR, 30, 0) , kRWI_W , 0 , 7 ), // #228
289 INST(Ldurb , BaseRM_SImm9 , (0b0011100001000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 8 ), // #229
290 INST(Ldurh , BaseRM_SImm9 , (0b0111100001000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 9 ), // #230
291 INST(Ldursb , BaseRM_SImm9 , (0b0011100011000000000000, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 10 ), // #231
292 INST(Ldursh , BaseRM_SImm9 , (0b0111100011000000000000, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 11 ), // #232
293 INST(Ldursw , BaseRM_SImm9 , (0b1011100010000000000000, 0b0000000000000000000000, kX , kZR, 0 , 0) , kRWI_W , 0 , 12 ), // #233
294 INST(Ldxp , BaseLdxp , (0b1000100001111111000000, kWX, 30) , kRWI_WW , 0 , 1 ), // #234
295 INST(Ldxr , BaseRM_NoImm , (0b1000100001011111011111, kWX, kZR, 30) , kRWI_W , 0 , 10 ), // #235
296 INST(Ldxrb , BaseRM_NoImm , (0b0000100001011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 11 ), // #236
297 INST(Ldxrh , BaseRM_NoImm , (0b0100100001011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 12 ), // #237
298 INST(Lsl , BaseShift , (0b0001101011000000001000, 0b0101001100000000000000, 0) , kRWI_W , 0 , 2 ), // #238
299 INST(Lslv , BaseShift , (0b0001101011000000001000, 0b0000000000000000000000, 0) , kRWI_W , 0 , 3 ), // #239
300 INST(Lsr , BaseShift , (0b0001101011000000001001, 0b0101001100000000011111, 0) , kRWI_W , 0 , 4 ), // #240
301 INST(Lsrv , BaseShift , (0b0001101011000000001001, 0b0000000000000000000000, 0) , kRWI_W , 0 , 5 ), // #241
302 INST(Madd , BaseRRRR , (0b0001101100000000000000, kWX, kZR, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 0 ), // #242
303 INST(Mneg , BaseRRR , (0b0001101100000000111111, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 11 ), // #243
304 INST(Mov , BaseMov , (_) , kRWI_W , 0 , 0 ), // #244
305 INST(Movk , BaseMovKNZ , (0b01110010100000000000000000000000) , kRWI_X , 0 , 0 ), // #245
306 INST(Movn , BaseMovKNZ , (0b00010010100000000000000000000000) , kRWI_W , 0 , 1 ), // #246
307 INST(Movz , BaseMovKNZ , (0b01010010100000000000000000000000) , kRWI_W , 0 , 2 ), // #247
308 INST(Mrs , BaseMrs , (_) , kRWI_W , 0 , 0 ), // #248
309 INST(Msr , BaseMsr , (_) , kRWI_W , 0 , 0 ), // #249
310 INST(Msub , BaseRRRR , (0b0001101100000000100000, kWX, kZR, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 1 ), // #250
311 INST(Mul , BaseRRR , (0b0001101100000000011111, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 12 ), // #251
312 INST(Mvn , BaseMvnNeg , (0b00101010001000000000001111100000) , kRWI_W , 0 , 0 ), // #252
313 INST(Neg , BaseMvnNeg , (0b01001011000000000000001111100000) , kRWI_W , 0 , 1 ), // #253
314 INST(Negs , BaseMvnNeg , (0b01101011000000000000001111100000) , kRWI_W , 0 , 2 ), // #254
315 INST(Ngc , BaseRR , (0b01011010000000000000001111100000, kWX, kZR, 0, kWX, kZR, 16, true) , kRWI_W , 0 , 7 ), // #255
316 INST(Ngcs , BaseRR , (0b01111010000000000000001111100000, kWX, kZR, 0, kWX, kZR, 16, true) , kRWI_W , 0 , 8 ), // #256
317 INST(Nop , BaseOp , (0b11010101000000110010000000011111) , 0 , 0 , 13 ), // #257
318 INST(Orn , BaseLogical , (0b0101010001, 0b01100100, 1) , kRWI_W , 0 , 6 ), // #258
319 INST(Orr , BaseLogical , (0b0101010000, 0b01100100, 0) , kRWI_W , 0 , 7 ), // #259
320 INST(Pacda , BaseRR , (0b11011010110000010000100000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 9 ), // #260
321 INST(Pacdb , BaseRR , (0b11011010110000010000110000000000, kX, kZR, 0, kX, kSP, 5, true) , kRWI_X , 0 , 10 ), // #261
322 INST(Pacdza , BaseR , (0b11011010110000010010101111100000, kX, kZR, 0) , kRWI_X , 0 , 4 ), // #262
323 INST(Pacdzb , BaseR , (0b11011010110000010010111111100000, kX, kZR, 0) , kRWI_X , 0 , 5 ), // #263
324 INST(Pacga , BaseRRR , (0b1001101011000000001100, kX, kZR, kX, kZR, kX, kSP, false) , kRWI_W , 0 , 13 ), // #264
325 INST(Pssbb , BaseOp , (0b11010101000000110011010010011111) , 0 , 0 , 14 ), // #265
326 INST(Rbit , BaseRR , (0b01011010110000000000000000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 11 ), // #266
327 INST(Ret , BaseBranchReg , (0b11010110010111110000000000000000) , kRWI_R , 0 , 2 ), // #267
328 INST(Rev , BaseRev , (_) , kRWI_W , 0 , 0 ), // #268
329 INST(Rev16 , BaseRR , (0b01011010110000000000010000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 12 ), // #269
330 INST(Rev32 , BaseRR , (0b11011010110000000000100000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 13 ), // #270
331 INST(Rev64 , BaseRR , (0b11011010110000000000110000000000, kWX, kZR, 0, kWX, kZR, 5, true) , kRWI_W , 0 , 14 ), // #271
332 INST(Ror , BaseShift , (0b0001101011000000001011, 0b0001001110000000000000, 1) , kRWI_W , 0 , 6 ), // #272
333 INST(Rorv , BaseShift , (0b0001101011000000001011, 0b0000000000000000000000, 1) , kRWI_W , 0 , 7 ), // #273
334 INST(Sbc , BaseRRR , (0b0101101000000000000000, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 14 ), // #274
335 INST(Sbcs , BaseRRR , (0b0111101000000000000000, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 15 ), // #275
336 INST(Sbfiz , BaseBfi , (0b00010011000000000000000000000000) , kRWI_W , 0 , 1 ), // #276
337 INST(Sbfm , BaseBfm , (0b00010011000000000000000000000000) , kRWI_W , 0 , 1 ), // #277
338 INST(Sbfx , BaseBfx , (0b00010011000000000000000000000000) , kRWI_W , 0 , 1 ), // #278
339 INST(Sdiv , BaseRRR , (0b0001101011000000000011, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 16 ), // #279
340 INST(Setf8 , BaseR , (0b00111010000000000000100000001101, kW, kZR, 5) , 0 , 0 , 6 ), // #280
341 INST(Setf16 , BaseR , (0b00111010000000000100100000001101, kW, kZR, 5) , 0 , 0 , 7 ), // #281
342 INST(Sev , BaseOp , (0b11010101000000110010000010011111) , 0 , 0 , 15 ), // #282
343 INST(Sevl , BaseOp , (0b11010101000000110010000010111111) , 0 , 0 , 16 ), // #283
344 INST(Smaddl , BaseRRRR , (0b1001101100100000000000, kX , kZR, kW , kZR, kW , kZR, kX , kZR, false) , kRWI_W , 0 , 2 ), // #284
345 INST(Smc , BaseOpImm , (0b11010100000000000000000000000011, 16, 5) , 0 , 0 , 11 ), // #285
346 INST(Smnegl , BaseRRR , (0b1001101100100000111111, kX , kZR, kW , kZR, kW , kZR, false) , kRWI_W , 0 , 17 ), // #286
347 INST(Smsubl , BaseRRRR , (0b1001101100100000100000, kX , kZR, kW , kZR, kW , kZR, kX , kZR, false) , kRWI_W , 0 , 3 ), // #287
348 INST(Smulh , BaseRRR , (0b1001101101000000011111, kX , kZR, kX , kZR, kX , kZR, true) , kRWI_W , 0 , 18 ), // #288
349 INST(Smull , BaseRRR , (0b1001101100100000011111, kX , kZR, kW , kZR, kW , kZR, false) , kRWI_W , 0 , 19 ), // #289
350 INST(Ssbb , BaseOp , (0b11010101000000110011000010011111) , 0 , 0 , 17 ), // #290
351 INST(St2g , BaseRM_SImm9 , (0b1101100110100000000010, 0b1101100110100000000001, kX, kSP, 0, 4) , kRWI_RW , 0 , 13 ), // #291
352 INST(Stadd , BaseAtomicSt , (0b1011100000100000000000, kWX, 30) , kRWI_RX , 0 , 0 ), // #292
353 INST(Staddl , BaseAtomicSt , (0b1011100001100000000000, kWX, 30) , kRWI_RX , 0 , 1 ), // #293
354 INST(Staddb , BaseAtomicSt , (0b0011100000100000000000, kW , 0 ) , kRWI_RX , 0 , 2 ), // #294
355 INST(Staddlb , BaseAtomicSt , (0b0011100001100000000000, kW , 0 ) , kRWI_RX , 0 , 3 ), // #295
356 INST(Staddh , BaseAtomicSt , (0b0111100000100000000000, kW , 0 ) , kRWI_RX , 0 , 4 ), // #296
357 INST(Staddlh , BaseAtomicSt , (0b0111100001100000000000, kW , 0 ) , kRWI_RX , 0 , 5 ), // #297
358 INST(Stclr , BaseAtomicSt , (0b1011100000100000000100, kWX, 30) , kRWI_RX , 0 , 6 ), // #298
359 INST(Stclrl , BaseAtomicSt , (0b1011100001100000000100, kWX, 30) , kRWI_RX , 0 , 7 ), // #299
360 INST(Stclrb , BaseAtomicSt , (0b0011100000100000000100, kW , 0 ) , kRWI_RX , 0 , 8 ), // #300
361 INST(Stclrlb , BaseAtomicSt , (0b0011100001100000000100, kW , 0 ) , kRWI_RX , 0 , 9 ), // #301
362 INST(Stclrh , BaseAtomicSt , (0b0111100000100000000100, kW , 0 ) , kRWI_RX , 0 , 10 ), // #302
363 INST(Stclrlh , BaseAtomicSt , (0b0111100001100000000100, kW , 0 ) , kRWI_RX , 0 , 11 ), // #303
364 INST(Steor , BaseAtomicSt , (0b1011100000100000001000, kWX, 30) , kRWI_RX , 0 , 12 ), // #304
365 INST(Steorl , BaseAtomicSt , (0b1011100001100000001000, kWX, 30) , kRWI_RX , 0 , 13 ), // #305
366 INST(Steorb , BaseAtomicSt , (0b0011100000100000001000, kW , 0 ) , kRWI_RX , 0 , 14 ), // #306
367 INST(Steorlb , BaseAtomicSt , (0b0011100001100000001000, kW , 0 ) , kRWI_RX , 0 , 15 ), // #307
368 INST(Steorh , BaseAtomicSt , (0b0111100000100000001000, kW , 0 ) , kRWI_RX , 0 , 16 ), // #308
369 INST(Steorlh , BaseAtomicSt , (0b0111100001100000001000, kW , 0 ) , kRWI_RX , 0 , 17 ), // #309
370 INST(Stg , BaseRM_SImm9 , (0b1101100100100000000010, 0b1101100100100000000001, kX, kSP, 0, 4) , kRWI_RW , 0 , 14 ), // #310
371 INST(Stgm , BaseRM_NoImm , (0b1101100110100000000000, kX , kZR, 0 ) , kRWI_RW , 0 , 13 ), // #311
372 INST(Stgp , BaseLdpStp , (0b0110100100, 0b0110100010, kX, 0, 4) , kRWI_RRW , 0 , 3 ), // #312
373 INST(Stllr , BaseRM_NoImm , (0b1000100010011111011111, kWX, kZR, 30) , kRWI_RW , 0 , 14 ), // #313
374 INST(Stllrb , BaseRM_NoImm , (0b0000100010011111011111, kW , kZR, 0 ) , kRWI_RW , 0 , 15 ), // #314
375 INST(Stllrh , BaseRM_NoImm , (0b0100100010011111011111, kW , kZR, 0 ) , kRWI_RW , 0 , 16 ), // #315
376 INST(Stlr , BaseRM_NoImm , (0b1000100010011111111111, kWX, kZR, 30) , kRWI_RW , 0 , 17 ), // #316
377 INST(Stlrb , BaseRM_NoImm , (0b0000100010011111111111, kW , kZR, 0 ) , kRWI_RW , 0 , 18 ), // #317
378 INST(Stlrh , BaseRM_NoImm , (0b0100100010011111111111, kW , kZR, 0 ) , kRWI_RW , 0 , 19 ), // #318
379 INST(Stlxp , BaseStxp , (0b1000100000100000100000, kWX, 30) , kRWI_WRRX , 0 , 0 ), // #319
380 INST(Stlxr , BaseAtomicOp , (0b1000100000000000111111, kWX, 30, 1) , kRWI_WRX , 0 , 108), // #320
381 INST(Stlxrb , BaseAtomicOp , (0b0000100000000000111111, kW , 0 , 1) , kRWI_WRX , 0 , 109), // #321
382 INST(Stlxrh , BaseAtomicOp , (0b0100100000000000111111, kW , 0 , 1) , kRWI_WRX , 0 , 110), // #322
383 INST(Stnp , BaseLdpStp , (0b0010100000, 0 , kWX, 31, 2) , kRWI_RRW , 0 , 4 ), // #323
384 INST(Stp , BaseLdpStp , (0b0010100100, 0b0010100010, kWX, 31, 2) , kRWI_RRW , 0 , 5 ), // #324
385 INST(Str , BaseLdSt , (0b1011100100, 0b10111000000, 0b10111000001, 0 , kWX, 30, 2, Inst::kIdStur) , kRWI_RW , 0 , 6 ), // #325
386 INST(Strb , BaseLdSt , (0b0011100100, 0b00111000000, 0b00111000001, 0 , kW , 30, 0, Inst::kIdSturb) , kRWI_RW , 0 , 7 ), // #326
387 INST(Strh , BaseLdSt , (0b0111100100, 0b01111000000, 0b01111000001, 0 , kWX, 30, 1, Inst::kIdSturh) , kRWI_RW , 0 , 8 ), // #327
388 INST(Stset , BaseAtomicSt , (0b1011100000100000001100, kWX, 30) , kRWI_RX , 0 , 18 ), // #328
389 INST(Stsetl , BaseAtomicSt , (0b1011100001100000001100, kWX, 30) , kRWI_RX , 0 , 19 ), // #329
390 INST(Stsetb , BaseAtomicSt , (0b0011100000100000001100, kW , 0 ) , kRWI_RX , 0 , 20 ), // #330
391 INST(Stsetlb , BaseAtomicSt , (0b0011100001100000001100, kW , 0 ) , kRWI_RX , 0 , 21 ), // #331
392 INST(Stseth , BaseAtomicSt , (0b0111100000100000001100, kW , 0 ) , kRWI_RX , 0 , 22 ), // #332
393 INST(Stsetlh , BaseAtomicSt , (0b0111100001100000001100, kW , 0 ) , kRWI_RX , 0 , 23 ), // #333
394 INST(Stsmax , BaseAtomicSt , (0b1011100000100000010000, kWX, 30) , kRWI_RX , 0 , 24 ), // #334
395 INST(Stsmaxl , BaseAtomicSt , (0b1011100001100000010000, kWX, 30) , kRWI_RX , 0 , 25 ), // #335
396 INST(Stsmaxb , BaseAtomicSt , (0b0011100000100000010000, kW , 0 ) , kRWI_RX , 0 , 26 ), // #336
397 INST(Stsmaxlb , BaseAtomicSt , (0b0011100001100000010000, kW , 0 ) , kRWI_RX , 0 , 27 ), // #337
398 INST(Stsmaxh , BaseAtomicSt , (0b0111100000100000010000, kW , 0 ) , kRWI_RX , 0 , 28 ), // #338
399 INST(Stsmaxlh , BaseAtomicSt , (0b0111100001100000010000, kW , 0 ) , kRWI_RX , 0 , 29 ), // #339
400 INST(Stsmin , BaseAtomicSt , (0b1011100000100000010100, kWX, 30) , kRWI_RX , 0 , 30 ), // #340
401 INST(Stsminl , BaseAtomicSt , (0b1011100001100000010100, kWX, 30) , kRWI_RX , 0 , 31 ), // #341
402 INST(Stsminb , BaseAtomicSt , (0b0011100000100000010100, kW , 0 ) , kRWI_RX , 0 , 32 ), // #342
403 INST(Stsminlb , BaseAtomicSt , (0b0011100001100000010100, kW , 0 ) , kRWI_RX , 0 , 33 ), // #343
404 INST(Stsminh , BaseAtomicSt , (0b0111100000100000010100, kW , 0 ) , kRWI_RX , 0 , 34 ), // #344
405 INST(Stsminlh , BaseAtomicSt , (0b0111100001100000010100, kW , 0 ) , kRWI_RX , 0 , 35 ), // #345
406 INST(Sttr , BaseRM_SImm9 , (0b1011100000000000000010, 0b0000000000000000000000, kWX, kZR, 30, 0) , kRWI_RW , 0 , 15 ), // #346
407 INST(Sttrb , BaseRM_SImm9 , (0b0011100000000000000010, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_RW , 0 , 16 ), // #347
408 INST(Sttrh , BaseRM_SImm9 , (0b0111100000000000000010, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_RW , 0 , 17 ), // #348
409 INST(Stumax , BaseAtomicSt , (0b1011100000100000011000, kWX, 30) , kRWI_RX , 0 , 36 ), // #349
410 INST(Stumaxl , BaseAtomicSt , (0b1011100001100000011000, kWX, 30) , kRWI_RX , 0 , 37 ), // #350
411 INST(Stumaxb , BaseAtomicSt , (0b0011100000100000011000, kW , 0 ) , kRWI_RX , 0 , 38 ), // #351
412 INST(Stumaxlb , BaseAtomicSt , (0b0011100001100000011000, kW , 0 ) , kRWI_RX , 0 , 39 ), // #352
413 INST(Stumaxh , BaseAtomicSt , (0b0111100000100000011000, kW , 0 ) , kRWI_RX , 0 , 40 ), // #353
414 INST(Stumaxlh , BaseAtomicSt , (0b0111100001100000011000, kW , 0 ) , kRWI_RX , 0 , 41 ), // #354
415 INST(Stumin , BaseAtomicSt , (0b1011100000100000011100, kWX, 30) , kRWI_RX , 0 , 42 ), // #355
416 INST(Stuminl , BaseAtomicSt , (0b1011100001100000011100, kWX, 30) , kRWI_RX , 0 , 43 ), // #356
417 INST(Stuminb , BaseAtomicSt , (0b0011100000100000011100, kW , 0 ) , kRWI_RX , 0 , 44 ), // #357
418 INST(Stuminlb , BaseAtomicSt , (0b0011100001100000011100, kW , 0 ) , kRWI_RX , 0 , 45 ), // #358
419 INST(Stuminh , BaseAtomicSt , (0b0111100000100000011100, kW , 0 ) , kRWI_RX , 0 , 46 ), // #359
420 INST(Stuminlh , BaseAtomicSt , (0b0111100001100000011100, kW , 0 ) , kRWI_RX , 0 , 47 ), // #360
421 INST(Stur , BaseRM_SImm9 , (0b1011100000000000000000, 0b0000000000000000000000, kWX, kZR, 30, 0) , kRWI_RW , 0 , 18 ), // #361
422 INST(Sturb , BaseRM_SImm9 , (0b0011100000000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_RW , 0 , 19 ), // #362
423 INST(Sturh , BaseRM_SImm9 , (0b0111100000000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_RW , 0 , 20 ), // #363
424 INST(Stxp , BaseStxp , (0b1000100000100000000000, kWX, 30) , kRWI_WRRW , 0 , 1 ), // #364
425 INST(Stxr , BaseStx , (0b1000100000000000011111, kWX, 30) , kRWI_WRW , 0 , 0 ), // #365
426 INST(Stxrb , BaseStx , (0b0000100000000000011111, kW , 0 ) , kRWI_WRW , 0 , 1 ), // #366
427 INST(Stxrh , BaseStx , (0b0100100000000000011111, kW , 0 ) , kRWI_WRW , 0 , 2 ), // #367
428 INST(Stz2g , BaseRM_SImm9 , (0b1101100111100000000010, 0b1101100111100000000001, kX , kSP, 0, 4) , kRWI_RW , 0 , 21 ), // #368
429 INST(Stzg , BaseRM_SImm9 , (0b1101100101100000000010, 0b1101100101100000000001, kX , kSP, 0, 4) , kRWI_RW , 0 , 22 ), // #369
430 INST(Stzgm , BaseRM_NoImm , (0b1101100100100000000000, kX , kZR, 0) , kRWI_RW , 0 , 20 ), // #370
431 INST(Sub , BaseAddSub , (0b1001011000, 0b1001011001, 0b1010001) , kRWI_X , 0 , 2 ), // #371
432 INST(Subg , BaseRRII , (0b1101000110000000000000, kX, kSP, kX, kSP, 6, 4, 16, 4, 0, 10) , kRWI_W , 0 , 1 ), // #372
433 INST(Subp , BaseRRR , (0b1001101011000000000000, kX, kZR, kX, kSP, kX, kSP, false) , kRWI_W , 0 , 20 ), // #373
434 INST(Subps , BaseRRR , (0b1011101011000000000000, kX, kZR, kX, kSP, kX, kSP, false) , kRWI_W , 0 , 21 ), // #374
435 INST(Subs , BaseAddSub , (0b1101011000, 0b1101011001, 0b1110001) , kRWI_X , 0 , 3 ), // #375
436 INST(Svc , BaseOpImm , (0b11010100000000000000000000000001, 16, 5) , 0 , 0 , 12 ), // #376
437 INST(Swp , BaseAtomicOp , (0b1011100000100000100000, kWX, 30, 1) , kRWI_RWX , 0 , 111), // #377
438 INST(Swpa , BaseAtomicOp , (0b1011100010100000100000, kWX, 30, 1) , kRWI_RWX , 0 , 112), // #378
439 INST(Swpab , BaseAtomicOp , (0b0011100010100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 113), // #379
440 INST(Swpah , BaseAtomicOp , (0b0111100010100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 114), // #380
441 INST(Swpal , BaseAtomicOp , (0b1011100011100000100000, kWX, 30, 1) , kRWI_RWX , 0 , 115), // #381
442 INST(Swpalb , BaseAtomicOp , (0b0011100011100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 116), // #382
443 INST(Swpalh , BaseAtomicOp , (0b0111100011100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 117), // #383
444 INST(Swpb , BaseAtomicOp , (0b0011100000100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 118), // #384
445 INST(Swph , BaseAtomicOp , (0b0111100000100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 119), // #385
446 INST(Swpl , BaseAtomicOp , (0b1011100001100000100000, kWX, 30, 1) , kRWI_RWX , 0 , 120), // #386
447 INST(Swplb , BaseAtomicOp , (0b0011100001100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 121), // #387
448 INST(Swplh , BaseAtomicOp , (0b0111100001100000100000, kW , 0 , 1) , kRWI_RWX , 0 , 122), // #388
449 INST(Sxtb , BaseExtend , (0b0001001100000000000111, kWX, 0) , kRWI_W , 0 , 0 ), // #389
450 INST(Sxth , BaseExtend , (0b0001001100000000001111, kWX, 0) , kRWI_W , 0 , 1 ), // #390
451 INST(Sxtw , BaseExtend , (0b1001001101000000011111, kX , 0) , kRWI_W , 0 , 2 ), // #391
452 INST(Sys , BaseSys , (_) , kRWI_W , 0 , 0 ), // #392
453 INST(Tlbi , BaseAtDcIcTlbi , (0b00011110000000, 0b00010000000000, false) , kRWI_RX , 0 , 3 ), // #393
454 INST(Tst , BaseTst , (0b1101010000, 0b111001000) , kRWI_R , 0 , 0 ), // #394
455 INST(Tbnz , BaseBranchTst , (0b00110111000000000000000000000000) , kRWI_R , 0 , 0 ), // #395
456 INST(Tbz , BaseBranchTst , (0b00110110000000000000000000000000) , kRWI_R , 0 , 1 ), // #396
457 INST(Ubfiz , BaseBfi , (0b01010011000000000000000000000000) , kRWI_W , 0 , 2 ), // #397
458 INST(Ubfm , BaseBfm , (0b01010011000000000000000000000000) , kRWI_W , 0 , 2 ), // #398
459 INST(Ubfx , BaseBfx , (0b01010011000000000000000000000000) , kRWI_W , 0 , 2 ), // #399
460 INST(Udf , BaseOpImm , (0b00000000000000000000000000000000, 16, 0) , 0 , 0 , 13 ), // #400
461 INST(Udiv , BaseRRR , (0b0001101011000000000010, kWX, kZR, kWX, kZR, kWX, kZR, true) , kRWI_W , 0 , 22 ), // #401
462 INST(Umaddl , BaseRRRR , (0b1001101110100000000000, kX , kZR, kW , kZR, kW , kZR, kX , kZR, false) , kRWI_W , 0 , 4 ), // #402
463 INST(Umnegl , BaseRRR , (0b1001101110100000111111, kX , kZR, kW , kZR, kW , kZR, false) , kRWI_W , 0 , 23 ), // #403
464 INST(Umull , BaseRRR , (0b1001101110100000011111, kX , kZR, kW , kZR, kW , kZR, false) , kRWI_W , 0 , 24 ), // #404
465 INST(Umulh , BaseRRR , (0b1001101111000000011111, kX , kZR, kX , kZR, kX , kZR, false) , kRWI_W , 0 , 25 ), // #405
466 INST(Umsubl , BaseRRRR , (0b1001101110100000100000, kX , kZR, kW , kZR, kW , kZR, kX , kZR, false) , kRWI_W , 0 , 5 ), // #406
467 INST(Uxtb , BaseExtend , (0b0101001100000000000111, kW, 1) , kRWI_W , 0 , 3 ), // #407
468 INST(Uxth , BaseExtend , (0b0101001100000000001111, kW, 1) , kRWI_W , 0 , 4 ), // #408
469 INST(Wfe , BaseOp , (0b11010101000000110010000001011111) , 0 , 0 , 18 ), // #409
470 INST(Wfi , BaseOp , (0b11010101000000110010000001111111) , 0 , 0 , 19 ), // #410
471 INST(Xaflag , BaseOp , (0b11010101000000000100000000111111) , 0 , 0 , 20 ), // #411
472 INST(Xpacd , BaseR , (0b11011010110000010100011111100000, kX, kZR, 0) , kRWI_X , 0 , 8 ), // #412
473 INST(Xpaci , BaseR , (0b11011010110000010100001111100000, kX, kZR, 0) , kRWI_X , 0 , 9 ), // #413
474 INST(Xpaclri , BaseOp , (0b11010101000000110010000011111111) , kRWI_X , 0 , 21 ), // #414
475 INST(Yield , BaseOp , (0b11010101000000110010000000111111) , 0 , 0 , 22 ), // #415
476 INST(Abs_v , ISimdVV , (0b0000111000100000101110, kVO_V_Any) , kRWI_W , 0 , 0 ), // #416
477 INST(Add_v , ISimdVVV , (0b0000111000100000100001, kVO_V_Any) , kRWI_W , 0 , 0 ), // #417
478 INST(Addhn_v , ISimdVVV , (0b0000111000100000010000, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 1 ), // #418
479 INST(Addhn2_v , ISimdVVV , (0b0100111000100000010000, kVO_V_B16H8S4) , kRWI_W , F(Narrow) , 2 ), // #419
480 INST(Addp_v , ISimdPair , (0b0101111000110001101110, 0b0000111000100000101111, kVO_V_Any) , kRWI_W , F(Pair) , 0 ), // #420
481 INST(Addv_v , ISimdSV , (0b0000111000110001101110, kVO_V_BH_4S) , kRWI_W , 0 , 0 ), // #421
482 INST(Aesd_v , ISimdVVx , (0b0100111000101000010110, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 0 ), // #422
483 INST(Aese_v , ISimdVVx , (0b0100111000101000010010, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 1 ), // #423
484 INST(Aesimc_v , ISimdVVx , (0b0100111000101000011110, kOp_V16B, kOp_V16B) , kRWI_W , 0 , 2 ), // #424
485 INST(Aesmc_v , ISimdVVx , (0b0100111000101000011010, kOp_V16B, kOp_V16B) , kRWI_W , 0 , 3 ), // #425
486 INST(And_v , ISimdVVV , (0b0000111000100000000111, kVO_V_B) , kRWI_W , 0 , 3 ), // #426
487 INST(Bcax_v , ISimdVVVV , (0b1100111000100000000000, kVO_V_B16) , kRWI_W , 0 , 0 ), // #427
488 INST(Bfcvt_v , ISimdVVx , (0b0001111001100011010000, kOp_H, kOp_S) , kRWI_W , 0 , 4 ), // #428
489 INST(Bfcvtn_v , ISimdVVx , (0b0000111010100001011010, kOp_V4H, kOp_V4S) , kRWI_W , F(Narrow) , 5 ), // #429
490 INST(Bfcvtn2_v , ISimdVVx , (0b0100111010100001011010, kOp_V8H, kOp_V4S) , kRWI_W , F(Narrow) , 6 ), // #430
491 INST(Bfdot_v , SimdDot , (0b0010111001000000111111, 0b0000111101000000111100, kET_S, kET_H, kET_2H) , kRWI_X , 0 , 0 ), // #431
492 INST(Bfmlalb_v , SimdFmlal , (0b0010111011000000111111, 0b0000111111000000111100, 0, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 0 ), // #432
493 INST(Bfmlalt_v , SimdFmlal , (0b0110111011000000111111, 0b0100111111000000111100, 0, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 1 ), // #433
494 INST(Bfmmla_v , ISimdVVVx , (0b0110111001000000111011, kOp_V4S, kOp_V8H, kOp_V8H) , kRWI_X , F(Long) , 0 ), // #434
495 INST(Bic_v , SimdBicOrr , (0b0000111001100000000111, 0b0010111100000000000001) , kRWI_W , 0 , 0 ), // #435
496 INST(Bif_v , ISimdVVV , (0b0010111011100000000111, kVO_V_B) , kRWI_X , 0 , 4 ), // #436
497 INST(Bit_v , ISimdVVV , (0b0010111010100000000111, kVO_V_B) , kRWI_X , 0 , 5 ), // #437
498 INST(Bsl_v , ISimdVVV , (0b0010111001100000000111, kVO_V_B) , kRWI_X , 0 , 6 ), // #438
499 INST(Cls_v , ISimdVV , (0b0000111000100000010010, kVO_V_BHS) , kRWI_W , 0 , 1 ), // #439
500 INST(Clz_v , ISimdVV , (0b0010111000100000010010, kVO_V_BHS) , kRWI_W , 0 , 2 ), // #440
501 INST(Cmeq_v , SimdCmp , (0b0010111000100000100011, 0b0000111000100000100110, kVO_V_Any) , kRWI_W , 0 , 0 ), // #441
502 INST(Cmge_v , SimdCmp , (0b0000111000100000001111, 0b0010111000100000100010, kVO_V_Any) , kRWI_W , 0 , 1 ), // #442
503 INST(Cmgt_v , SimdCmp , (0b0000111000100000001101, 0b0000111000100000100010, kVO_V_Any) , kRWI_W , 0 , 2 ), // #443
504 INST(Cmhi_v , SimdCmp , (0b0010111000100000001101, 0b0000000000000000000000, kVO_V_Any) , kRWI_W , 0 , 3 ), // #444
505 INST(Cmhs_v , SimdCmp , (0b0010111000100000001111, 0b0000000000000000000000, kVO_V_Any) , kRWI_W , 0 , 4 ), // #445
506 INST(Cmle_v , SimdCmp , (0b0000000000000000000000, 0b0010111000100000100110, kVO_V_Any) , kRWI_W , 0 , 5 ), // #446
507 INST(Cmlt_v , SimdCmp , (0b0000000000000000000000, 0b0000111000100000101010, kVO_V_Any) , kRWI_W , 0 , 6 ), // #447
508 INST(Cmtst_v , ISimdVVV , (0b0000111000100000100011, kVO_V_Any) , kRWI_W , 0 , 7 ), // #448
509 INST(Cnt_v , ISimdVV , (0b0000111000100000010110, kVO_V_B) , kRWI_W , 0 , 3 ), // #449
510 INST(Dup_v , SimdDup , (_) , kRWI_W , 0 , 0 ), // #450
511 INST(Eor_v , ISimdVVV , (0b0010111000100000000111, kVO_V_B) , kRWI_W , 0 , 8 ), // #451
512 INST(Eor3_v , ISimdVVVV , (0b1100111000000000000000, kVO_V_B16) , kRWI_W , 0 , 1 ), // #452
513 INST(Ext_v , ISimdVVVI , (0b0010111000000000000000, kVO_V_B, 4, 11, 1) , kRWI_W , 0 , 0 ), // #453
514 INST(Fabd_v , FSimdVVV , (0b0111111010100000110101, kHF_C, 0b0010111010100000110101, kHF_C) , kRWI_W , 0 , 0 ), // #454
515 INST(Fabs_v , FSimdVV , (0b0001111000100000110000, kHF_A, 0b0000111010100000111110, kHF_B) , kRWI_W , 0 , 0 ), // #455
516 INST(Facge_v , FSimdVVV , (0b0111111000100000111011, kHF_C, 0b0010111000100000111011, kHF_C) , kRWI_W , 0 , 1 ), // #456
517 INST(Facgt_v , FSimdVVV , (0b0111111010100000111011, kHF_C, 0b0010111010100000111011, kHF_C) , kRWI_W , 0 , 2 ), // #457
518 INST(Fadd_v , FSimdVVV , (0b0001111000100000001010, kHF_A, 0b0000111000100000110101, kHF_C) , kRWI_W , 0 , 3 ), // #458
519 INST(Faddp_v , FSimdPair , (0b0111111000110000110110, 0b0010111000100000110101) , kRWI_W , 0 , 0 ), // #459
520 INST(Fcadd_v , SimdFcadd , (0b0010111000000000111001) , kRWI_W , 0 , 0 ), // #460
521 INST(Fccmp_v , SimdFccmpFccmpe , (0b00011110001000000000010000000000) , kRWI_R , 0 , 0 ), // #461
522 INST(Fccmpe_v , SimdFccmpFccmpe , (0b00011110001000000000010000010000) , kRWI_R , 0 , 1 ), // #462
523 INST(Fcmeq_v , SimdFcm , (0b0000111000100000111001, kHF_C, 0b0000111010100000110110) , kRWI_W , 0 , 0 ), // #463
524 INST(Fcmge_v , SimdFcm , (0b0010111000100000111001, kHF_C, 0b0010111010100000110010) , kRWI_W , 0 , 1 ), // #464
525 INST(Fcmgt_v , SimdFcm , (0b0010111010100000111001, kHF_C, 0b0000111010100000110010) , kRWI_W , 0 , 2 ), // #465
526 INST(Fcmla_v , SimdFcmla , (0b0010111000000000110001, 0b0010111100000000000100) , kRWI_X , 0 , 0 ), // #466
527 INST(Fcmle_v , SimdFcm , (0b0000000000000000000000, kHF_C, 0b0010111010100000110110) , kRWI_W , 0 , 3 ), // #467
528 INST(Fcmlt_v , SimdFcm , (0b0000000000000000000000, kHF_C, 0b0000111010100000111010) , kRWI_W , 0 , 4 ), // #468
529 INST(Fcmp_v , SimdFcmpFcmpe , (0b00011110001000000010000000000000) , kRWI_R , 0 , 0 ), // #469
530 INST(Fcmpe_v , SimdFcmpFcmpe , (0b00011110001000000010000000010000) , kRWI_R , 0 , 1 ), // #470
531 INST(Fcsel_v , SimdFcsel , (_) , kRWI_W , 0 , 0 ), // #471
532 INST(Fcvt_v , SimdFcvt , (_) , kRWI_W , 0 , 0 ), // #472
533 INST(Fcvtas_v , SimdFcvtSV , (0b0000111000100001110010, 0b0000000000000000000000, 0b0001111000100100000000, 1) , kRWI_W , 0 , 0 ), // #473
534 INST(Fcvtau_v , SimdFcvtSV , (0b0010111000100001110010, 0b0000000000000000000000, 0b0001111000100101000000, 1) , kRWI_W , 0 , 1 ), // #474
535 INST(Fcvtl_v , SimdFcvtLN , (0b0000111000100001011110, 0, 0) , kRWI_W , F(Long) , 0 ), // #475
536 INST(Fcvtl2_v , SimdFcvtLN , (0b0100111000100001011110, 0, 0) , kRWI_W , F(Long) , 1 ), // #476
537 INST(Fcvtms_v , SimdFcvtSV , (0b0000111000100001101110, 0b0000000000000000000000, 0b0001111000110000000000, 1) , kRWI_W , 0 , 2 ), // #477
538 INST(Fcvtmu_v , SimdFcvtSV , (0b0010111000100001101110, 0b0000000000000000000000, 0b0001111000110001000000, 1) , kRWI_W , 0 , 3 ), // #478
539 INST(Fcvtn_v , SimdFcvtLN , (0b0000111000100001011010, 0, 0) , kRWI_W , F(Narrow) , 2 ), // #479
540 INST(Fcvtn2_v , SimdFcvtLN , (0b0100111000100001011010, 0, 0) , kRWI_X , F(Narrow) , 3 ), // #480
541 INST(Fcvtns_v , SimdFcvtSV , (0b0000111000100001101010, 0b0000000000000000000000, 0b0001111000100000000000, 1) , kRWI_W , 0 , 4 ), // #481
542 INST(Fcvtnu_v , SimdFcvtSV , (0b0010111000100001101010, 0b0000000000000000000000, 0b0001111000100001000000, 1) , kRWI_W , 0 , 5 ), // #482
543 INST(Fcvtps_v , SimdFcvtSV , (0b0000111010100001101010, 0b0000000000000000000000, 0b0001111000101000000000, 1) , kRWI_W , 0 , 6 ), // #483
544 INST(Fcvtpu_v , SimdFcvtSV , (0b0010111010100001101010, 0b0000000000000000000000, 0b0001111000101001000000, 1) , kRWI_W , 0 , 7 ), // #484
545 INST(Fcvtxn_v , SimdFcvtLN , (0b0010111000100001011010, 1, 1) , kRWI_W , F(Narrow) , 4 ), // #485
546 INST(Fcvtxn2_v , SimdFcvtLN , (0b0110111000100001011010, 1, 0) , kRWI_X , F(Narrow) , 5 ), // #486
547 INST(Fcvtzs_v , SimdFcvtSV , (0b0000111010100001101110, 0b0000111100000000111111, 0b0001111000111000000000, 1) , kRWI_W , 0 , 8 ), // #487
548 INST(Fcvtzu_v , SimdFcvtSV , (0b0010111010100001101110, 0b0010111100000000111111, 0b0001111000111001000000, 1) , kRWI_W , 0 , 9 ), // #488
549 INST(Fdiv_v , FSimdVVV , (0b0001111000100000000110, kHF_A, 0b0010111000100000111111, kHF_C) , kRWI_W , 0 , 4 ), // #489
550 INST(Fjcvtzs_v , ISimdVVx , (0b0001111001111110000000, kOp_GpW, kOp_D) , kRWI_W , 0 , 7 ), // #490
551 INST(Fmadd_v , FSimdVVVV , (0b0001111100000000000000, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 0 ), // #491
552 INST(Fmax_v , FSimdVVV , (0b0001111000100000010010, kHF_A, 0b0000111000100000111101, kHF_C) , kRWI_W , 0 , 5 ), // #492
553 INST(Fmaxnm_v , FSimdVVV , (0b0001111000100000011010, kHF_A, 0b0000111000100000110001, kHF_C) , kRWI_W , 0 , 6 ), // #493
554 INST(Fmaxnmp_v , FSimdPair , (0b0111111000110000110010, 0b0010111000100000110001) , kRWI_W , 0 , 1 ), // #494
555 INST(Fmaxnmv_v , FSimdSV , (0b0010111000110000110010) , kRWI_W , 0 , 0 ), // #495
556 INST(Fmaxp_v , FSimdPair , (0b0111111000110000111110, 0b0010111000100000111101) , kRWI_W , 0 , 2 ), // #496
557 INST(Fmaxv_v , FSimdSV , (0b0010111000110000111110) , kRWI_W , 0 , 1 ), // #497
558 INST(Fmin_v , FSimdVVV , (0b0001111000100000010110, kHF_A, 0b0000111010100000111101, kHF_C) , kRWI_W , 0 , 7 ), // #498
559 INST(Fminnm_v , FSimdVVV , (0b0001111000100000011110, kHF_A, 0b0000111010100000110001, kHF_C) , kRWI_W , 0 , 8 ), // #499
560 INST(Fminnmp_v , FSimdPair , (0b0111111010110000110010, 0b0010111010100000110001) , kRWI_W , 0 , 3 ), // #500
561 INST(Fminnmv_v , FSimdSV , (0b0010111010110000110010) , kRWI_W , 0 , 2 ), // #501
562 INST(Fminp_v , FSimdPair , (0b0111111010110000111110, 0b0010111010100000111101) , kRWI_W , 0 , 4 ), // #502
563 INST(Fminv_v , FSimdSV , (0b0010111010110000111110) , kRWI_W , 0 , 3 ), // #503
564 INST(Fmla_v , FSimdVVVe , (0b0000000000000000000000, kHF_N, 0b0000111000100000110011, 0b0000111110000000000100) , kRWI_X , F(VH0_15) , 0 ), // #504
565 INST(Fmlal_v , SimdFmlal , (0b0000111000100000111011, 0b0000111110000000000000, 1, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 2 ), // #505
566 INST(Fmlal2_v , SimdFmlal , (0b0010111000100000110011, 0b0010111110000000100000, 1, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 3 ), // #506
567 INST(Fmls_v , FSimdVVVe , (0b0000000000000000000000, kHF_N, 0b0000111010100000110011, 0b0000111110000000010100) , kRWI_X , F(VH0_15) , 1 ), // #507
568 INST(Fmlsl_v , SimdFmlal , (0b0000111010100000111011, 0b0000111110000000010000, 1, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 4 ), // #508
569 INST(Fmlsl2_v , SimdFmlal , (0b0010111010100000110011, 0b0010111110000000110000, 1, kET_S, kET_H, kET_H) , kRWI_X , F(VH0_15) , 5 ), // #509
570 INST(Fmov_v , SimdFmov , (_) , kRWI_W , 0 , 0 ), // #510
571 INST(Fmsub_v , FSimdVVVV , (0b0001111100000000100000, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 1 ), // #511
572 INST(Fmul_v , FSimdVVVe , (0b0001111000100000000010, kHF_A, 0b0010111000100000110111, 0b0000111110000000100100) , kRWI_W , F(VH0_15) , 2 ), // #512
573 INST(Fmulx_v , FSimdVVVe , (0b0101111000100000110111, kHF_C, 0b0000111000100000110111, 0b0010111110000000100100) , kRWI_W , F(VH0_15) , 3 ), // #513
574 INST(Fneg_v , FSimdVV , (0b0001111000100001010000, kHF_A, 0b0010111010100000111110, kHF_B) , kRWI_W , 0 , 1 ), // #514
575 INST(Fnmadd_v , FSimdVVVV , (0b0001111100100000000000, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 2 ), // #515
576 INST(Fnmsub_v , FSimdVVVV , (0b0001111100100000100000, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 3 ), // #516
577 INST(Fnmul_v , FSimdVVV , (0b0001111000100000100010, kHF_A, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 9 ), // #517
578 INST(Frecpe_v , FSimdVV , (0b0101111010100001110110, kHF_B, 0b0000111010100001110110, kHF_B) , kRWI_W , 0 , 2 ), // #518
579 INST(Frecps_v , FSimdVVV , (0b0101111000100000111111, kHF_C, 0b0000111000100000111111, kHF_C) , kRWI_W , 0 , 10 ), // #519
580 INST(Frecpx_v , FSimdVV , (0b0101111010100001111110, kHF_B, 0b0000000000000000000000, kHF_N) , kRWI_W , 0 , 3 ), // #520
581 INST(Frint32x_v , FSimdVV , (0b0001111000101000110000, kHF_N, 0b0010111000100001111010, kHF_N) , kRWI_W , 0 , 4 ), // #521
582 INST(Frint32z_v , FSimdVV , (0b0001111000101000010000, kHF_N, 0b0000111000100001111010, kHF_N) , kRWI_W , 0 , 5 ), // #522
583 INST(Frint64x_v , FSimdVV , (0b0001111000101001110000, kHF_N, 0b0010111000100001111110, kHF_N) , kRWI_W , 0 , 6 ), // #523
584 INST(Frint64z_v , FSimdVV , (0b0001111000101001010000, kHF_N, 0b0000111000100001111110, kHF_N) , kRWI_W , 0 , 7 ), // #524
585 INST(Frinta_v , FSimdVV , (0b0001111000100110010000, kHF_A, 0b0010111000100001100010, kHF_B) , kRWI_W , 0 , 8 ), // #525
586 INST(Frinti_v , FSimdVV , (0b0001111000100111110000, kHF_A, 0b0010111010100001100110, kHF_B) , kRWI_W , 0 , 9 ), // #526
587 INST(Frintm_v , FSimdVV , (0b0001111000100101010000, kHF_A, 0b0000111000100001100110, kHF_B) , kRWI_W , 0 , 10 ), // #527
588 INST(Frintn_v , FSimdVV , (0b0001111000100100010000, kHF_A, 0b0000111000100001100010, kHF_B) , kRWI_W , 0 , 11 ), // #528
589 INST(Frintp_v , FSimdVV , (0b0001111000100100110000, kHF_A, 0b0000111010100001100010, kHF_B) , kRWI_W , 0 , 12 ), // #529
590 INST(Frintx_v , FSimdVV , (0b0001111000100111010000, kHF_A, 0b0010111000100001100110, kHF_B) , kRWI_W , 0 , 13 ), // #530
591 INST(Frintz_v , FSimdVV , (0b0001111000100101110000, kHF_A, 0b0000111010100001100110, kHF_B) , kRWI_W , 0 , 14 ), // #531
592 INST(Frsqrte_v , FSimdVV , (0b0111111010100001110110, kHF_B, 0b0010111010100001110110, kHF_B) , kRWI_W , 0 , 15 ), // #532
593 INST(Frsqrts_v , FSimdVVV , (0b0101111010100000111111, kHF_C, 0b0000111010100000111111, kHF_C) , kRWI_W , 0 , 11 ), // #533
594 INST(Fsqrt_v , FSimdVV , (0b0001111000100001110000, kHF_A, 0b0010111010100001111110, kHF_B) , kRWI_W , 0 , 16 ), // #534
595 INST(Fsub_v , FSimdVVV , (0b0001111000100000001110, kHF_A, 0b0000111010100000110101, kHF_C) , kRWI_W , 0 , 12 ), // #535
596 INST(Ins_v , SimdIns , (_) , kRWI_X , 0 , 0 ), // #536
597 INST(Ld1_v , SimdLdNStN , (0b0000110101000000000000, 0b0000110001000000001000, 1, 0) , kRWI_LDn , F(Consecutive) , 0 ), // #537
598 INST(Ld1r_v , SimdLdNStN , (0b0000110101000000110000, 0b0000000000000000000000, 1, 1) , kRWI_LDn , F(Consecutive) , 1 ), // #538
599 INST(Ld2_v , SimdLdNStN , (0b0000110101100000000000, 0b0000110001000000100000, 2, 0) , kRWI_LDn , F(Consecutive) , 2 ), // #539
600 INST(Ld2r_v , SimdLdNStN , (0b0000110101100000110000, 0b0000000000000000000000, 2, 1) , kRWI_LDn , F(Consecutive) , 3 ), // #540
601 INST(Ld3_v , SimdLdNStN , (0b0000110101000000001000, 0b0000110001000000010000, 3, 0) , kRWI_LDn , F(Consecutive) , 4 ), // #541
602 INST(Ld3r_v , SimdLdNStN , (0b0000110101000000111000, 0b0000000000000000000000, 3, 1) , kRWI_LDn , F(Consecutive) , 5 ), // #542
603 INST(Ld4_v , SimdLdNStN , (0b0000110101100000001000, 0b0000110001000000000000, 4, 0) , kRWI_LDn , F(Consecutive) , 6 ), // #543
604 INST(Ld4r_v , SimdLdNStN , (0b0000110101100000111000, 0b0000000000000000000000, 4, 1) , kRWI_LDn , F(Consecutive) , 7 ), // #544
605 INST(Ldnp_v , SimdLdpStp , (0b0010110001, 0b0000000000) , kRWI_WW , 0 , 0 ), // #545
606 INST(Ldp_v , SimdLdpStp , (0b0010110101, 0b0010110011) , kRWI_WW , 0 , 1 ), // #546
607 INST(Ldr_v , SimdLdSt , (0b0011110101, 0b00111100010, 0b00111100011, 0b00011100, Inst::kIdLdur_v) , kRWI_W , 0 , 0 ), // #547
608 INST(Ldur_v , SimdLdurStur , (0b0011110001000000000000) , kRWI_W , 0 , 0 ), // #548
609 INST(Mla_v , ISimdVVVe , (0b0000111000100000100101, kVO_V_BHS, 0b0010111100000000000000, kVO_V_HS) , kRWI_X , F(VH0_15) , 0 ), // #549
610 INST(Mls_v , ISimdVVVe , (0b0010111000100000100101, kVO_V_BHS, 0b0010111100000000010000, kVO_V_HS) , kRWI_X , F(VH0_15) , 1 ), // #550
611 INST(Mov_v , SimdMov , (_) , kRWI_W , 0 , 0 ), // #551
612 INST(Movi_v , SimdMoviMvni , (0b0000111100000000000001, 0) , kRWI_W , 0 , 0 ), // #552
613 INST(Mul_v , ISimdVVVe , (0b0000111000100000100111, kVO_V_BHS, 0b0000111100000000100000, kVO_V_HS) , kRWI_W , F(VH0_15) , 2 ), // #553
614 INST(Mvn_v , ISimdVV , (0b0010111000100000010110, kVO_V_B) , kRWI_W , 0 , 4 ), // #554
615 INST(Mvni_v , SimdMoviMvni , (0b0000111100000000000001, 1) , kRWI_W , 0 , 1 ), // #555
616 INST(Neg_v , ISimdVV , (0b0010111000100000101110, kVO_V_Any) , kRWI_W , 0 , 5 ), // #556
617 INST(Not_v , ISimdVV , (0b0010111000100000010110, kVO_V_B) , kRWI_W , 0 , 6 ), // #557
618 INST(Orn_v , ISimdVVV , (0b0000111011100000000111, kVO_V_B) , kRWI_W , 0 , 9 ), // #558
619 INST(Orr_v , SimdBicOrr , (0b0000111010100000000111, 0b0000111100000000000001) , kRWI_W , 0 , 1 ), // #559
620 INST(Pmul_v , ISimdVVV , (0b0010111000100000100111, kVO_V_B) , kRWI_W , 0 , 10 ), // #560
621 INST(Pmull_v , ISimdVVV , (0b0000111000100000111000, kVO_V_B8D1) , kRWI_W , F(Long) , 11 ), // #561
622 INST(Pmull2_v , ISimdVVV , (0b0100111000100000111000, kVO_V_B16D2) , kRWI_W , F(Long) , 12 ), // #562
623 INST(Raddhn_v , ISimdVVV , (0b0010111000100000010000, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 13 ), // #563
624 INST(Raddhn2_v , ISimdVVV , (0b0110111000100000010000, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 14 ), // #564
625 INST(Rax1_v , ISimdVVV , (0b1100111001100000100011, kVO_V_D2) , kRWI_W , 0 , 15 ), // #565
626 INST(Rbit_v , ISimdVV , (0b0010111001100000010110, kVO_V_B) , kRWI_W , 0 , 7 ), // #566
627 INST(Rev16_v , ISimdVV , (0b0000111000100000000110, kVO_V_B) , kRWI_W , 0 , 8 ), // #567
628 INST(Rev32_v , ISimdVV , (0b0010111000100000000010, kVO_V_BH) , kRWI_W , 0 , 9 ), // #568
629 INST(Rev64_v , ISimdVV , (0b0000111000100000000010, kVO_V_BHS) , kRWI_W , 0 , 10 ), // #569
630 INST(Rshrn_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000100011, 1, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 0 ), // #570
631 INST(Rshrn2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000100011, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 1 ), // #571
632 INST(Rsubhn_v , ISimdVVV , (0b0010111000100000011000, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 16 ), // #572
633 INST(Rsubhn2_v , ISimdVVV , (0b0110111000100000011000, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 17 ), // #573
634 INST(Saba_v , ISimdVVV , (0b0000111000100000011111, kVO_V_BHS) , kRWI_X , 0 , 18 ), // #574
635 INST(Sabal_v , ISimdVVV , (0b0000111000100000010100, kVO_V_B8H4S2) , kRWI_X , F(Long) , 19 ), // #575
636 INST(Sabal2_v , ISimdVVV , (0b0100111000100000010100, kVO_V_B16H8S4) , kRWI_X , F(Long) , 20 ), // #576
637 INST(Sabd_v , ISimdVVV , (0b0000111000100000011101, kVO_V_BHS) , kRWI_W , 0 , 21 ), // #577
638 INST(Sabdl_v , ISimdVVV , (0b0000111000100000011100, kVO_V_B8H4S2) , kRWI_W , F(Long) , 22 ), // #578
639 INST(Sabdl2_v , ISimdVVV , (0b0100111000100000011100, kVO_V_B16H8S4) , kRWI_W , F(Long) , 23 ), // #579
640 INST(Sadalp_v , ISimdVV , (0b0000111000100000011010, kVO_V_BHS) , kRWI_X , F(Long) | F(Pair) , 11 ), // #580
641 INST(Saddl_v , ISimdVVV , (0b0000111000100000000000, kVO_V_B8H4S2) , kRWI_W , F(Long) , 24 ), // #581
642 INST(Saddl2_v , ISimdVVV , (0b0100111000100000000000, kVO_V_B16H8S4) , kRWI_W , F(Long) , 25 ), // #582
643 INST(Saddlp_v , ISimdVV , (0b0000111000100000001010, kVO_V_BHS) , kRWI_W , F(Long) | F(Pair) , 12 ), // #583
644 INST(Saddlv_v , ISimdSV , (0b0000111000110000001110, kVO_V_BH_4S) , kRWI_W , F(Long) , 1 ), // #584
645 INST(Saddw_v , ISimdWWV , (0b0000111000100000000100, kVO_V_B8H4S2) , kRWI_W , 0 , 0 ), // #585
646 INST(Saddw2_v , ISimdWWV , (0b0000111000100000000100, kVO_V_B16H8S4) , kRWI_W , 0 , 1 ), // #586
647 INST(Scvtf_v , SimdFcvtSV , (0b0000111000100001110110, 0b0000111100000000111001, 0b0001111000100010000000, 0) , kRWI_W , 0 , 10 ), // #587
648 INST(Sdot_v , SimdDot , (0b0000111010000000100101, 0b0000111110000000111000, kET_S, kET_B, kET_4B) , kRWI_X , 0 , 1 ), // #588
649 INST(Sha1c_v , ISimdVVVx , (0b0101111000000000000000, kOp_Q, kOp_S, kOp_V4S) , kRWI_X , 0 , 1 ), // #589
650 INST(Sha1h_v , ISimdVVx , (0b0101111000101000000010, kOp_S, kOp_S) , kRWI_W , 0 , 8 ), // #590
651 INST(Sha1m_v , ISimdVVVx , (0b0101111000000000001000, kOp_Q, kOp_S, kOp_V4S) , kRWI_X , 0 , 2 ), // #591
652 INST(Sha1p_v , ISimdVVVx , (0b0101111000000000000100, kOp_Q, kOp_S, kOp_V4S) , kRWI_X , 0 , 3 ), // #592
653 INST(Sha1su0_v , ISimdVVVx , (0b0101111000000000001100, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 4 ), // #593
654 INST(Sha1su1_v , ISimdVVx , (0b0101111000101000000110, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 9 ), // #594
655 INST(Sha256h_v , ISimdVVVx , (0b0101111000000000010000, kOp_Q, kOp_Q, kOp_V4S) , kRWI_X , 0 , 5 ), // #595
656 INST(Sha256h2_v , ISimdVVVx , (0b0101111000000000010100, kOp_Q, kOp_Q, kOp_V4S) , kRWI_X , 0 , 6 ), // #596
657 INST(Sha256su0_v , ISimdVVx , (0b0101111000101000001010, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 10 ), // #597
658 INST(Sha256su1_v , ISimdVVVx , (0b0101111000000000011000, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 7 ), // #598
659 INST(Sha512h_v , ISimdVVVx , (0b1100111001100000100000, kOp_Q, kOp_Q, kOp_V2D) , kRWI_X , 0 , 8 ), // #599
660 INST(Sha512h2_v , ISimdVVVx , (0b1100111001100000100001, kOp_Q, kOp_Q, kOp_V2D) , kRWI_X , 0 , 9 ), // #600
661 INST(Sha512su0_v , ISimdVVx , (0b1100111011000000100000, kOp_V2D, kOp_V2D) , kRWI_X , 0 , 11 ), // #601
662 INST(Sha512su1_v , ISimdVVVx , (0b1100111001100000100010, kOp_V2D, kOp_V2D, kOp_V2D) , kRWI_X , 0 , 10 ), // #602
663 INST(Shadd_v , ISimdVVV , (0b0000111000100000000001, kVO_V_BHS) , kRWI_W , 0 , 26 ), // #603
664 INST(Shl_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000010101, 0, kVO_V_Any) , kRWI_W , 0 , 2 ), // #604
665 INST(Shll_v , SimdShiftES , (0b0010111000100001001110, kVO_V_B8H4S2) , kRWI_W , F(Long) , 0 ), // #605
666 INST(Shll2_v , SimdShiftES , (0b0110111000100001001110, kVO_V_B16H8S4) , kRWI_W , F(Long) , 1 ), // #606
667 INST(Shrn_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000100001, 1, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 3 ), // #607
668 INST(Shrn2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000100001, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 4 ), // #608
669 INST(Shsub_v , ISimdVVV , (0b0000111000100000001001, kVO_V_BHS) , kRWI_W , 0 , 27 ), // #609
670 INST(Sli_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000010101, 0, kVO_V_Any) , kRWI_X , 0 , 5 ), // #610
671 INST(Sm3partw1_v , ISimdVVVx , (0b1100111001100000110000, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 11 ), // #611
672 INST(Sm3partw2_v , ISimdVVVx , (0b1100111001100000110001, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 12 ), // #612
673 INST(Sm3ss1_v , ISimdVVVVx , (0b1100111001000000000000, kOp_V4S, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_W , 0 , 0 ), // #613
674 INST(Sm3tt1a_v , SimdSm3tt , (0b1100111001000000100000) , kRWI_X , 0 , 0 ), // #614
675 INST(Sm3tt1b_v , SimdSm3tt , (0b1100111001000000100001) , kRWI_X , 0 , 1 ), // #615
676 INST(Sm3tt2a_v , SimdSm3tt , (0b1100111001000000100010) , kRWI_X , 0 , 2 ), // #616
677 INST(Sm3tt2b_v , SimdSm3tt , (0b1100111001000000100011) , kRWI_X , 0 , 3 ), // #617
678 INST(Sm4e_v , ISimdVVx , (0b1100111011000000100001, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 12 ), // #618
679 INST(Sm4ekey_v , ISimdVVVx , (0b1100111001100000110010, kOp_V4S, kOp_V4S, kOp_V4S) , kRWI_X , 0 , 13 ), // #619
680 INST(Smax_v , ISimdVVV , (0b0000111000100000011001, kVO_V_BHS) , kRWI_W , 0 , 28 ), // #620
681 INST(Smaxp_v , ISimdVVV , (0b0000111000100000101001, kVO_V_BHS) , kRWI_W , 0 , 29 ), // #621
682 INST(Smaxv_v , ISimdSV , (0b0000111000110000101010, kVO_V_BH_4S) , kRWI_W , 0 , 2 ), // #622
683 INST(Smin_v , ISimdVVV , (0b0000111000100000011011, kVO_V_BHS) , kRWI_W , 0 , 30 ), // #623
684 INST(Sminp_v , ISimdVVV , (0b0000111000100000101011, kVO_V_BHS) , kRWI_W , 0 , 31 ), // #624
685 INST(Sminv_v , ISimdSV , (0b0000111000110001101010, kVO_V_BH_4S) , kRWI_W , 0 , 3 ), // #625
686 INST(Smlal_v , ISimdVVVe , (0b0000111000100000100000, kVO_V_B8H4S2, 0b0000111100000000001000, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 3 ), // #626
687 INST(Smlal2_v , ISimdVVVe , (0b0100111000100000100000, kVO_V_B16H8S4, 0b0100111100000000001000, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 4 ), // #627
688 INST(Smlsl_v , ISimdVVVe , (0b0000111000100000101000, kVO_V_B8H4S2, 0b0000111100000000011000, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 5 ), // #628
689 INST(Smlsl2_v , ISimdVVVe , (0b0100111000100000101000, kVO_V_B16H8S4, 0b0100111100000000011000, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 6 ), // #629
690 INST(Smmla_v , ISimdVVVx , (0b0100111010000000101001, kOp_V4S, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 14 ), // #630
691 INST(Smov_v , SimdSmovUmov , (0b0000111000000000001011, kVO_V_BHS, 1) , kRWI_W , 0 , 0 ), // #631
692 INST(Smull_v , ISimdVVVe , (0b0000111000100000110000, kVO_V_B8H4S2, 0b0000111100000000101000, kVO_V_H4S2) , kRWI_W , F(Long) | F(VH0_15) , 7 ), // #632
693 INST(Smull2_v , ISimdVVVe , (0b0100111000100000110000, kVO_V_B16H8S4, 0b0100111100000000101000, kVO_V_H8S4) , kRWI_W , F(Long) | F(VH0_15) , 8 ), // #633
694 INST(Sqabs_v , ISimdVV , (0b0000111000100000011110, kVO_SV_Any) , kRWI_W , 0 , 13 ), // #634
695 INST(Sqadd_v , ISimdVVV , (0b0000111000100000000011, kVO_SV_Any) , kRWI_W , 0 , 32 ), // #635
696 INST(Sqdmlal_v , ISimdVVVe , (0b0000111000100000100100, kVO_SV_BHS, 0b0000111100000000001100, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 9 ), // #636
697 INST(Sqdmlal2_v , ISimdVVVe , (0b0100111000100000100100, kVO_V_B16H8S4, 0b0100111100000000001100, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 10 ), // #637
698 INST(Sqdmlsl_v , ISimdVVVe , (0b0000111000100000101100, kVO_SV_BHS, 0b0000111100000000011100, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 11 ), // #638
699 INST(Sqdmlsl2_v , ISimdVVVe , (0b0100111000100000101100, kVO_V_B16H8S4, 0b0100111100000000011100, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 12 ), // #639
700 INST(Sqdmulh_v , ISimdVVVe , (0b0000111000100000101101, kVO_SV_HS, 0b0000111100000000110000, kVO_SV_HS) , kRWI_W , F(VH0_15) , 13 ), // #640
701 INST(Sqdmull_v , ISimdVVVe , (0b0000111000100000110100, kVO_SV_BHS, 0b0000111100000000101100, kVO_V_H4S2) , kRWI_W , F(Long) | F(VH0_15) , 14 ), // #641
702 INST(Sqdmull2_v , ISimdVVVe , (0b0100111000100000110100, kVO_V_B16H8S4, 0b0100111100000000101100, kVO_V_H8S4) , kRWI_W , F(Long) | F(VH0_15) , 15 ), // #642
703 INST(Sqneg_v , ISimdVV , (0b0010111000100000011110, kVO_SV_Any) , kRWI_W , 0 , 14 ), // #643
704 INST(Sqrdmlah_v , ISimdVVVe , (0b0010111000000000100001, kVO_SV_HS, 0b0010111100000000110100, kVO_SV_HS) , kRWI_X , F(VH0_15) , 16 ), // #644
705 INST(Sqrdmlsh_v , ISimdVVVe , (0b0010111000000000100011, kVO_SV_HS, 0b0010111100000000111100, kVO_SV_HS) , kRWI_X , F(VH0_15) , 17 ), // #645
706 INST(Sqrdmulh_v , ISimdVVVe , (0b0010111000100000101101, kVO_SV_HS, 0b0000111100000000110100, kVO_SV_HS) , kRWI_W , F(VH0_15) , 18 ), // #646
707 INST(Sqrshl_v , SimdShift , (0b0000111000100000010111, 0b0000000000000000000000, 1, kVO_SV_Any) , kRWI_W , 0 , 6 ), // #647
708 INST(Sqrshrn_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000100111, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 7 ), // #648
709 INST(Sqrshrn2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000100111, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 8 ), // #649
710 INST(Sqrshrun_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000100011, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 9 ), // #650
711 INST(Sqrshrun2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000100011, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 10 ), // #651
712 INST(Sqshl_v , SimdShift , (0b0000111000100000010011, 0b0000111100000000011101, 0, kVO_SV_Any) , kRWI_W , 0 , 11 ), // #652
713 INST(Sqshlu_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000011001, 0, kVO_SV_Any) , kRWI_W , 0 , 12 ), // #653
714 INST(Sqshrn_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000100101, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 13 ), // #654
715 INST(Sqshrn2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000100101, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 14 ), // #655
716 INST(Sqshrun_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000100001, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 15 ), // #656
717 INST(Sqshrun2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000100001, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 16 ), // #657
718 INST(Sqsub_v , ISimdVVV , (0b0000111000100000001011, kVO_SV_Any) , kRWI_W , 0 , 33 ), // #658
719 INST(Sqxtn_v , ISimdVV , (0b0000111000100001010010, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 15 ), // #659
720 INST(Sqxtn2_v , ISimdVV , (0b0100111000100001010010, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 16 ), // #660
721 INST(Sqxtun_v , ISimdVV , (0b0010111000100001001010, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 17 ), // #661
722 INST(Sqxtun2_v , ISimdVV , (0b0110111000100001001010, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 18 ), // #662
723 INST(Srhadd_v , ISimdVVV , (0b0000111000100000000101, kVO_V_BHS) , kRWI_W , 0 , 34 ), // #663
724 INST(Sri_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000010001, 1, kVO_V_Any) , kRWI_W , 0 , 17 ), // #664
725 INST(Srshl_v , SimdShift , (0b0000111000100000010101, 0b0000000000000000000000, 0, kVO_V_Any) , kRWI_W , 0 , 18 ), // #665
726 INST(Srshr_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000001001, 1, kVO_V_Any) , kRWI_W , 0 , 19 ), // #666
727 INST(Srsra_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000001101, 1, kVO_V_Any) , kRWI_X , 0 , 20 ), // #667
728 INST(Sshl_v , SimdShift , (0b0000111000100000010001, 0b0000000000000000000000, 0, kVO_V_Any) , kRWI_W , 0 , 21 ), // #668
729 INST(Sshll_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000101001, 0, kVO_V_B8H4S2) , kRWI_W , F(Long) , 22 ), // #669
730 INST(Sshll2_v , SimdShift , (0b0000000000000000000000, 0b0100111100000000101001, 0, kVO_V_B16H8S4) , kRWI_W , F(Long) , 23 ), // #670
731 INST(Sshr_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000000001, 1, kVO_V_Any) , kRWI_W , 0 , 24 ), // #671
732 INST(Ssra_v , SimdShift , (0b0000000000000000000000, 0b0000111100000000000101, 1, kVO_V_Any) , kRWI_X , 0 , 25 ), // #672
733 INST(Ssubl_v , ISimdVVV , (0b0000111000100000001000, kVO_V_B8H4S2) , kRWI_W , F(Long) , 35 ), // #673
734 INST(Ssubl2_v , ISimdVVV , (0b0100111000100000001000, kVO_V_B16H8S4) , kRWI_W , F(Long) , 36 ), // #674
735 INST(Ssubw_v , ISimdWWV , (0b0000111000100000001100, kVO_V_B8H4S2) , kRWI_W , 0 , 2 ), // #675
736 INST(Ssubw2_v , ISimdWWV , (0b0000111000100000001100, kVO_V_B16H8S4) , kRWI_X , 0 , 3 ), // #676
737 INST(St1_v , SimdLdNStN , (0b0000110100000000000000, 0b0000110000000000001000, 1, 0) , kRWI_STn , F(Consecutive) , 8 ), // #677
738 INST(St2_v , SimdLdNStN , (0b0000110100100000000000, 0b0000110000000000100000, 2, 0) , kRWI_STn , F(Consecutive) , 9 ), // #678
739 INST(St3_v , SimdLdNStN , (0b0000110100000000001000, 0b0000110000000000010000, 3, 0) , kRWI_STn , F(Consecutive) , 10 ), // #679
740 INST(St4_v , SimdLdNStN , (0b0000110100100000001000, 0b0000110000000000000000, 4, 0) , kRWI_STn , F(Consecutive) , 11 ), // #680
741 INST(Stnp_v , SimdLdpStp , (0b0010110000, 0b0000000000) , kRWI_RRW , 0 , 2 ), // #681
742 INST(Stp_v , SimdLdpStp , (0b0010110100, 0b0010110010) , kRWI_RRW , 0 , 3 ), // #682
743 INST(Str_v , SimdLdSt , (0b0011110100, 0b00111100000, 0b00111100001, 0b00000000, Inst::kIdStur_v) , kRWI_RW , 0 , 1 ), // #683
744 INST(Stur_v , SimdLdurStur , (0b0011110000000000000000) , kRWI_RW , 0 , 1 ), // #684
745 INST(Sub_v , ISimdVVV , (0b0010111000100000100001, kVO_V_Any) , kRWI_W , 0 , 37 ), // #685
746 INST(Subhn_v , ISimdVVV , (0b0000111000100000011000, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 38 ), // #686
747 INST(Subhn2_v , ISimdVVV , (0b0000111000100000011000, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 39 ), // #687
748 INST(Sudot_v , SimdDot , (0b0000000000000000000000, 0b0000111100000000111100, kET_S, kET_B, kET_4B) , kRWI_X , 0 , 2 ), // #688
749 INST(Suqadd_v , ISimdVV , (0b0000111000100000001110, kVO_SV_Any) , kRWI_X , 0 , 19 ), // #689
750 INST(Sxtl_v , SimdSxtlUxtl , (0b0000111100000000101001, kVO_V_B8H4S2) , kRWI_W , F(Long) , 0 ), // #690
751 INST(Sxtl2_v , SimdSxtlUxtl , (0b0100111100000000101001, kVO_V_B16H8S4) , kRWI_W , F(Long) , 1 ), // #691
752 INST(Tbl_v , SimdTblTbx , (0b0000111000000000000000) , kRWI_W , 0 , 0 ), // #692
753 INST(Tbx_v , SimdTblTbx , (0b0000111000000000000100) , kRWI_W , 0 , 1 ), // #693
754 INST(Trn1_v , ISimdVVV , (0b0000111000000000001010, kVO_V_BHS_D2) , kRWI_W , 0 , 40 ), // #694
755 INST(Trn2_v , ISimdVVV , (0b0000111000000000011010, kVO_V_BHS_D2) , kRWI_W , 0 , 41 ), // #695
756 INST(Uaba_v , ISimdVVV , (0b0010111000100000011111, kVO_V_BHS) , kRWI_X , 0 , 42 ), // #696
757 INST(Uabal_v , ISimdVVV , (0b0010111000100000010100, kVO_V_B8H4S2) , kRWI_X , F(Long) , 43 ), // #697
758 INST(Uabal2_v , ISimdVVV , (0b0110111000100000010100, kVO_V_B16H8S4) , kRWI_X , F(Long) , 44 ), // #698
759 INST(Uabd_v , ISimdVVV , (0b0010111000100000011101, kVO_V_BHS) , kRWI_W , 0 , 45 ), // #699
760 INST(Uabdl_v , ISimdVVV , (0b0010111000100000011100, kVO_V_B8H4S2) , kRWI_W , F(Long) , 46 ), // #700
761 INST(Uabdl2_v , ISimdVVV , (0b0110111000100000011100, kVO_V_B16H8S4) , kRWI_W , F(Long) , 47 ), // #701
762 INST(Uadalp_v , ISimdVV , (0b0010111000100000011010, kVO_V_BHS) , kRWI_X , F(Long) | F(Pair) , 20 ), // #702
763 INST(Uaddl_v , ISimdVVV , (0b0010111000100000000000, kVO_V_B8H4S2) , kRWI_W , F(Long) , 48 ), // #703
764 INST(Uaddl2_v , ISimdVVV , (0b0110111000100000000000, kVO_V_B16H8S4) , kRWI_W , F(Long) , 49 ), // #704
765 INST(Uaddlp_v , ISimdVV , (0b0010111000100000001010, kVO_V_BHS) , kRWI_W , F(Long) | F(Pair) , 21 ), // #705
766 INST(Uaddlv_v , ISimdSV , (0b0010111000110000001110, kVO_V_BH_4S) , kRWI_W , F(Long) , 4 ), // #706
767 INST(Uaddw_v , ISimdWWV , (0b0010111000100000000100, kVO_V_B8H4S2) , kRWI_W , 0 , 4 ), // #707
768 INST(Uaddw2_v , ISimdWWV , (0b0010111000100000000100, kVO_V_B16H8S4) , kRWI_W , 0 , 5 ), // #708
769 INST(Ucvtf_v , SimdFcvtSV , (0b0010111000100001110110, 0b0010111100000000111001, 0b0001111000100011000000, 0) , kRWI_W , 0 , 11 ), // #709
770 INST(Udot_v , SimdDot , (0b0010111010000000100101, 0b0010111110000000111000, kET_S, kET_B, kET_4B) , kRWI_X , 0 , 3 ), // #710
771 INST(Uhadd_v , ISimdVVV , (0b0010111000100000000001, kVO_V_BHS) , kRWI_W , 0 , 50 ), // #711
772 INST(Uhsub_v , ISimdVVV , (0b0010111000100000001001, kVO_V_BHS) , kRWI_W , 0 , 51 ), // #712
773 INST(Umax_v , ISimdVVV , (0b0010111000100000011001, kVO_V_BHS) , kRWI_W , 0 , 52 ), // #713
774 INST(Umaxp_v , ISimdVVV , (0b0010111000100000101001, kVO_V_BHS) , kRWI_W , 0 , 53 ), // #714
775 INST(Umaxv_v , ISimdSV , (0b0010111000110000101010, kVO_V_BH_4S) , kRWI_W , 0 , 5 ), // #715
776 INST(Umin_v , ISimdVVV , (0b0010111000100000011011, kVO_V_BHS) , kRWI_W , 0 , 54 ), // #716
777 INST(Uminp_v , ISimdVVV , (0b0010111000100000101011, kVO_V_BHS) , kRWI_W , 0 , 55 ), // #717
778 INST(Uminv_v , ISimdSV , (0b0010111000110001101010, kVO_V_BH_4S) , kRWI_W , 0 , 6 ), // #718
779 INST(Umlal_v , ISimdVVVe , (0b0010111000100000100000, kVO_V_B8H4S2, 0b0010111100000000001000, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 19 ), // #719
780 INST(Umlal2_v , ISimdVVVe , (0b0110111000100000100000, kVO_V_B16H8S4, 0b0010111100000000001000, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 20 ), // #720
781 INST(Umlsl_v , ISimdVVVe , (0b0010111000100000101000, kVO_V_B8H4S2, 0b0010111100000000011000, kVO_V_H4S2) , kRWI_X , F(Long) | F(VH0_15) , 21 ), // #721
782 INST(Umlsl2_v , ISimdVVVe , (0b0110111000100000101000, kVO_V_B16H8S4, 0b0110111100000000011000, kVO_V_H8S4) , kRWI_X , F(Long) | F(VH0_15) , 22 ), // #722
783 INST(Ummla_v , ISimdVVVx , (0b0110111010000000101001, kOp_V4S, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 15 ), // #723
784 INST(Umov_v , SimdSmovUmov , (0b0000111000000000001111, kVO_V_Any, 0) , kRWI_W , 0 , 1 ), // #724
785 INST(Umull_v , ISimdVVVe , (0b0010111000100000110000, kVO_V_B8H4S2, 0b0010111100000000101000, kVO_V_H4S2) , kRWI_W , F(Long) | F(VH0_15) , 23 ), // #725
786 INST(Umull2_v , ISimdVVVe , (0b0110111000100000110000, kVO_V_B16H8S4, 0b0110111100000000101000, kVO_V_H8S4) , kRWI_W , F(Long) | F(VH0_15) , 24 ), // #726
787 INST(Uqadd_v , ISimdVVV , (0b0010111000100000000011, kVO_SV_Any) , kRWI_W , 0 , 56 ), // #727
788 INST(Uqrshl_v , SimdShift , (0b0010111000100000010111, 0b0000000000000000000000, 0, kVO_SV_Any) , kRWI_W , 0 , 26 ), // #728
789 INST(Uqrshrn_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000100111, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 27 ), // #729
790 INST(Uqrshrn2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000100111, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 28 ), // #730
791 INST(Uqshl_v , SimdShift , (0b0010111000100000010011, 0b0010111100000000011101, 0, kVO_SV_Any) , kRWI_W , 0 , 29 ), // #731
792 INST(Uqshrn_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000100101, 1, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 30 ), // #732
793 INST(Uqshrn2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000100101, 1, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 31 ), // #733
794 INST(Uqsub_v , ISimdVVV , (0b0010111000100000001011, kVO_SV_Any) , kRWI_W , 0 , 57 ), // #734
795 INST(Uqxtn_v , ISimdVV , (0b0010111000100001010010, kVO_SV_B8H4S2) , kRWI_W , F(Narrow) , 22 ), // #735
796 INST(Uqxtn2_v , ISimdVV , (0b0110111000100001010010, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 23 ), // #736
797 INST(Urecpe_v , ISimdVV , (0b0000111010100001110010, kVO_V_S) , kRWI_W , 0 , 24 ), // #737
798 INST(Urhadd_v , ISimdVVV , (0b0010111000100000000101, kVO_V_BHS) , kRWI_W , 0 , 58 ), // #738
799 INST(Urshl_v , SimdShift , (0b0010111000100000010101, 0b0000000000000000000000, 0, kVO_V_Any) , kRWI_W , 0 , 32 ), // #739
800 INST(Urshr_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000001001, 1, kVO_V_Any) , kRWI_W , 0 , 33 ), // #740
801 INST(Ursqrte_v , ISimdVV , (0b0010111010100001110010, kVO_V_S) , kRWI_W , 0 , 25 ), // #741
802 INST(Ursra_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000001101, 1, kVO_V_Any) , kRWI_X , 0 , 34 ), // #742
803 INST(Usdot_v , SimdDot , (0b0000111010000000100111, 0b0000111110000000111100, kET_S, kET_B, kET_4B) , kRWI_X , 0 , 4 ), // #743
804 INST(Ushl_v , SimdShift , (0b0010111000100000010001, 0b0000000000000000000000, 0, kVO_V_Any) , kRWI_W , 0 , 35 ), // #744
805 INST(Ushll_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000101001, 0, kVO_V_B8H4S2) , kRWI_W , F(Long) , 36 ), // #745
806 INST(Ushll2_v , SimdShift , (0b0000000000000000000000, 0b0110111100000000101001, 0, kVO_V_B16H8S4) , kRWI_W , F(Long) , 37 ), // #746
807 INST(Ushr_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000000001, 1, kVO_V_Any) , kRWI_W , 0 , 38 ), // #747
808 INST(Usmmla_v , ISimdVVVx , (0b0100111010000000101011, kOp_V4S, kOp_V16B, kOp_V16B) , kRWI_X , 0 , 16 ), // #748
809 INST(Usqadd_v , ISimdVV , (0b0010111000100000001110, kVO_SV_Any) , kRWI_X , 0 , 26 ), // #749
810 INST(Usra_v , SimdShift , (0b0000000000000000000000, 0b0010111100000000000101, 1, kVO_V_Any) , kRWI_X , 0 , 39 ), // #750
811 INST(Usubl_v , ISimdVVV , (0b0010111000100000001000, kVO_V_B8H4S2) , kRWI_W , F(Long) , 59 ), // #751
812 INST(Usubl2_v , ISimdVVV , (0b0110111000100000001000, kVO_V_B16H8S4) , kRWI_W , F(Long) , 60 ), // #752
813 INST(Usubw_v , ISimdWWV , (0b0010111000100000001100, kVO_V_B8H4S2) , kRWI_W , 0 , 6 ), // #753
814 INST(Usubw2_v , ISimdWWV , (0b0010111000100000001100, kVO_V_B16H8S4) , kRWI_W , 0 , 7 ), // #754
815 INST(Uxtl_v , SimdSxtlUxtl , (0b0010111100000000101001, kVO_V_B8H4S2) , kRWI_W , F(Long) , 2 ), // #755
816 INST(Uxtl2_v , SimdSxtlUxtl , (0b0110111100000000101001, kVO_V_B16H8S4) , kRWI_W , F(Long) , 3 ), // #756
817 INST(Uzp1_v , ISimdVVV , (0b0000111000000000000110, kVO_V_BHS_D2) , kRWI_W , 0 , 61 ), // #757
818 INST(Uzp2_v , ISimdVVV , (0b0000111000000000010110, kVO_V_BHS_D2) , kRWI_W , 0 , 62 ), // #758
819 INST(Xar_v , ISimdVVVI , (0b1100111001100000100011, kVO_V_D2, 6, 10, 0) , kRWI_W , 0 , 1 ), // #759
820 INST(Xtn_v , ISimdVV , (0b0000111000100001001010, kVO_V_B8H4S2) , kRWI_W , F(Narrow) , 27 ), // #760
821 INST(Xtn2_v , ISimdVV , (0b0100111000100001001010, kVO_V_B16H8S4) , kRWI_X , F(Narrow) , 28 ), // #761
822 INST(Zip1_v , ISimdVVV , (0b0000111000000000001110, kVO_V_BHS_D2) , kRWI_W , 0 , 63 ), // #762
823 INST(Zip2_v , ISimdVVV , (0b0000111000000000011110, kVO_V_BHS_D2) , kRWI_W , 0 , 64 ) // #763
833824 // ${InstInfo:End}
834825 };
835826
18511842 // ArmUtil - Id <-> Name
18521843 // =====================
18531844
1854 #ifndef ASMJIT_DISABLE_TEXT
1845 #ifndef ASMJIT_NO_TEXT
18551846 // ${NameData:Begin}
18561847 // ------------------- Automatically generated, do not edit -------------------
1857 const char InstDB::_nameData[] =
1858 "\0" "adc\0" "adcs\0" "addg\0" "adds\0" "addv\0" "adr\0" "adrp\0" "aesd\0" "aese\0" "aesimc\0" "aesmc\0" "and\0"
1859 "ands\0" "asr\0" "asrv\0" "at\0" "autda\0" "autdb\0" "autdza\0" "autdzb\0" "autia\0" "autia1716\0" "autiasp\0"
1860 "autiaz\0" "autib\0" "autib1716\0" "autibsp\0" "autibz\0" "autiza\0" "autizb\0" "axflag\0" "bcax\0" "bfc\0" "bfcvt\0"
1861 "bfcvtn\0" "bfcvtn2\0" "bfdot\0" "bfi\0" "bfmlalb\0" "bfmlalt\0" "bfmmla\0" "bfxil\0" "bic\0" "bics\0" "bif\0"
1862 "blr\0" "br\0" "brk\0" "bsl\0" "cas\0" "casa\0" "casab\0" "casah\0" "casal\0" "casalb\0" "casalh\0" "casb\0" "cash\0"
1863 "casl\0" "caslb\0" "caslh\0" "casp\0" "caspa\0" "caspal\0" "caspl\0" "cbnz\0" "cbz\0" "ccmn\0" "cfinv\0" "cinc\0"
1864 "cinv\0" "clrex\0" "cls\0" "clz\0" "cmhi\0" "cmhs\0" "cmpp\0" "cmtst\0" "cneg\0" "cnt\0" "crc32b\0" "crc32cb\0"
1865 "crc32ch\0" "crc32cw\0" "crc32cx\0" "crc32h\0" "crc32w\0" "crc32x\0" "csdb\0" "cset\0" "csetm\0" "csinc\0" "csinv\0"
1866 "csneg\0" "dcps1\0" "dcps2\0" "dcps3\0" "dgh\0" "dmb\0" "drps\0" "dsb\0" "dup\0" "eon\0" "eor3\0" "eret\0" "esb\0"
1867 "ext\0" "extr\0" "fabd\0" "fabs\0" "facge\0" "facgt\0" "fadd\0" "faddp\0" "fcadd\0" "fccmp\0" "fccmpe\0" "fcmeq\0"
1868 "fcmge\0" "fcmgt\0" "fcmla\0" "fcmle\0" "fcmlt\0" "fcmp\0" "fcmpe\0" "fcsel\0" "fcvtas\0" "fcvtau\0" "fcvtl\0"
1869 "fcvtl2\0" "fcvtms\0" "fcvtmu\0" "fcvtns\0" "fcvtnu\0" "fcvtps\0" "fcvtpu\0" "fcvtxn\0" "fcvtxn2\0" "fcvtzs\0"
1870 "fcvtzu\0" "fdiv\0" "fjcvtzs\0" "fmadd\0" "fmax\0" "fmaxnm\0" "fmaxnmp\0" "fmaxnmv\0" "fmaxp\0" "fmaxv\0" "fmin\0"
1871 "fminnm\0" "fminnmp\0" "fminnmv\0" "fminp\0" "fminv\0" "fmla\0" "fmlal\0" "fmlal2\0" "fmls\0" "fmlsl\0" "fmlsl2\0"
1872 "fmov\0" "fmsub\0" "fmul\0" "fmulx\0" "fneg\0" "fnmadd\0" "fnmsub\0" "fnmul\0" "frecpe\0" "frecps\0" "frecpx\0"
1873 "frint32x\0" "frint32z\0" "frint64x\0" "frint64z\0" "frinta\0" "frinti\0" "frintm\0" "frintn\0" "frintp\0" "frintx\0"
1874 "frintz\0" "frsqrte\0" "frsqrts\0" "fsqrt\0" "fsub\0" "gmi\0" "hint\0" "hlt\0" "hvc\0" "ins\0" "isb\0" "ld1\0"
1875 "ld1r\0" "ld2\0" "ld2r\0" "ld3\0" "ld3r\0" "ld4\0" "ld4r\0" "ldadd\0" "ldadda\0" "ldaddab\0" "ldaddah\0" "ldaddal\0"
1876 "ldaddalb\0" "ldaddalh\0" "ldaddb\0" "ldaddh\0" "ldaddl\0" "ldaddlb\0" "ldaddlh\0" "ldar\0" "ldarb\0" "ldarh\0"
1877 "ldaxp\0" "ldaxr\0" "ldaxrb\0" "ldaxrh\0" "ldclr\0" "ldclra\0" "ldclrab\0" "ldclrah\0" "ldclral\0" "ldclralb\0"
1878 "ldclralh\0" "ldclrb\0" "ldclrh\0" "ldclrl\0" "ldclrlb\0" "ldclrlh\0" "ldeor\0" "ldeora\0" "ldeorab\0" "ldeorah\0"
1879 "ldeoral\0" "ldeoralb\0" "ldeoralh\0" "ldeorb\0" "ldeorh\0" "ldeorl\0" "ldeorlb\0" "ldeorlh\0" "ldg\0" "ldgm\0"
1880 "ldlar\0" "ldlarb\0" "ldlarh\0" "ldnp\0" "ldp\0" "ldpsw\0" "ldr\0" "ldraa\0" "ldrab\0" "ldrb\0" "ldrh\0" "ldrsb\0"
1881 "ldrsh\0" "ldrsw\0" "ldset\0" "ldseta\0" "ldsetab\0" "ldsetah\0" "ldsetal\0" "ldsetalb\0" "ldsetalh\0" "ldsetb\0"
1882 "ldseth\0" "ldsetl\0" "ldsetlb\0" "ldsetlh\0" "ldsmax\0" "ldsmaxa\0" "ldsmaxab\0" "ldsmaxah\0" "ldsmaxal\0"
1883 "ldsmaxalb\0" "ldsmaxalh\0" "ldsmaxb\0" "ldsmaxh\0" "ldsmaxl\0" "ldsmaxlb\0" "ldsmaxlh\0" "ldsmin\0" "ldsmina\0"
1884 "ldsminab\0" "ldsminah\0" "ldsminal\0" "ldsminalb\0" "ldsminalh\0" "ldsminb\0" "ldsminh\0" "ldsminl\0" "ldsminlb\0"
1885 "ldsminlh\0" "ldtr\0" "ldtrb\0" "ldtrh\0" "ldtrsb\0" "ldtrsh\0" "ldtrsw\0" "ldumax\0" "ldumaxa\0" "ldumaxab\0"
1886 "ldumaxah\0" "ldumaxal\0" "ldumaxalb\0" "ldumaxalh\0" "ldumaxb\0" "ldumaxh\0" "ldumaxl\0" "ldumaxlb\0" "ldumaxlh\0"
1887 "ldumin\0" "ldumina\0" "lduminab\0" "lduminah\0" "lduminal\0" "lduminalb\0" "lduminalh\0" "lduminb\0" "lduminh\0"
1888 "lduminl\0" "lduminlb\0" "lduminlh\0" "ldur\0" "ldurb\0" "ldurh\0" "ldursb\0" "ldursh\0" "ldursw\0" "ldxp\0" "ldxr\0"
1889 "ldxrb\0" "ldxrh\0" "lslv\0" "lsr\0" "lsrv\0" "mneg\0" "movi\0" "movk\0" "movn\0" "movz\0" "mrs\0" "msr\0" "mvn\0"
1890 "mvni\0" "negs\0" "ngc\0" "ngcs\0" "nop\0" "not\0" "orn\0" "orr\0" "pacda\0" "pacdb\0" "pacdza\0" "pacdzb\0"
1891 "pacga\0" "pmul\0" "pmull\0" "pmull2\0" "pssbb\0" "raddhn\0" "raddhn2\0" "rax1\0" "rbit\0" "rev\0" "rev16\0"
1892 "rev32\0" "rev64\0" "ror\0" "rorv\0" "rsubhn\0" "rsubhn2\0" "saba\0" "sabal\0" "sabal2\0" "sabd\0" "sabdl\0"
1893 "sabdl2\0" "sadalp\0" "saddl\0" "saddl2\0" "saddlp\0" "saddlv\0" "saddw\0" "saddw2\0" "sbc\0" "sbcs\0" "sbfiz\0"
1894 "sbfm\0" "sbfx\0" "scvtf\0" "sdiv\0" "setf16\0" "setf8\0" "sev\0" "sevl\0" "sha1c\0" "sha1h\0" "sha1m\0" "sha1p\0"
1895 "sha1su0\0" "sha1su1\0" "sha256h\0" "sha256h2\0" "sha256su0\0" "sha256su1\0" "sha512h\0" "sha512h2\0" "sha512su0\0"
1896 "sha512su1\0" "shadd\0" "shsub\0" "sli\0" "sm3partw1\0" "sm3partw2\0" "sm3ss1\0" "sm3tt1a\0" "sm3tt1b\0" "sm3tt2a\0"
1897 "sm3tt2b\0" "sm4e\0" "sm4ekey\0" "smaddl\0" "smaxp\0" "smaxv\0" "sminp\0" "sminv\0" "smlal\0" "smlal2\0" "smlsl\0"
1898 "smlsl2\0" "smnegl\0" "smov\0" "smsubl\0" "smulh\0" "smull\0" "smull2\0" "sqabs\0" "sqdmlal\0" "sqdmlal2\0"
1899 "sqdmlsl\0" "sqdmlsl2\0" "sqdmulh\0" "sqdmull\0" "sqdmull2\0" "sqneg\0" "sqrdmlah\0" "sqrdmlsh\0" "sqrdmulh\0"
1900 "sqrshl\0" "sqrshrn\0" "sqrshrn2\0" "sqrshrun\0" "sqrshrun2\0" "sqshl\0" "sqshlu\0" "sqshrn\0" "sqshrn2\0"
1901 "sqshrun\0" "sqshrun2\0" "sqsub\0" "sqxtn\0" "sqxtn2\0" "sqxtun\0" "sqxtun2\0" "srhadd\0" "sri\0" "srshl\0" "srshr\0"
1902 "srsra\0" "sshl\0" "sshll\0" "sshll2\0" "sshr\0" "ssra\0" "ssubl\0" "ssubl2\0" "ssubw\0" "ssubw2\0" "st1\0" "st2\0"
1903 "st2g\0" "st3\0" "st4\0" "stadd\0" "staddb\0" "staddh\0" "staddl\0" "staddlb\0" "staddlh\0" "stclr\0" "stclrb\0"
1904 "stclrh\0" "stclrl\0" "stclrlb\0" "stclrlh\0" "steor\0" "steorb\0" "steorh\0" "steorl\0" "steorlb\0" "steorlh\0"
1905 "stg\0" "stgm\0" "stgp\0" "stllr\0" "stllrb\0" "stllrh\0" "stlr\0" "stlrb\0" "stlrh\0" "stlxp\0" "stlxr\0" "stlxrb\0"
1906 "stlxrh\0" "stnp\0" "stp\0" "str\0" "strb\0" "strh\0" "stset\0" "stsetb\0" "stseth\0" "stsetl\0" "stsetlb\0"
1907 "stsetlh\0" "stsmax\0" "stsmaxb\0" "stsmaxh\0" "stsmaxl\0" "stsmaxlb\0" "stsmaxlh\0" "stsmin\0" "stsminb\0"
1908 "stsminh\0" "stsminl\0" "stsminlb\0" "stsminlh\0" "sttr\0" "sttrb\0" "sttrh\0" "stumax\0" "stumaxb\0" "stumaxh\0"
1909 "stumaxl\0" "stumaxlb\0" "stumaxlh\0" "stumin\0" "stuminb\0" "stuminh\0" "stuminl\0" "stuminlb\0" "stuminlh\0"
1910 "stur\0" "sturb\0" "sturh\0" "stxp\0" "stxr\0" "stxrb\0" "stxrh\0" "stz2g\0" "stzg\0" "stzgm\0" "subg\0" "subp\0"
1911 "subps\0" "subs\0" "sudot\0" "suqadd\0" "svc\0" "swp\0" "swpa\0" "swpab\0" "swpah\0" "swpal\0" "swpalb\0" "swpalh\0"
1912 "swpb\0" "swph\0" "swpl\0" "swplb\0" "swplh\0" "sxtb\0" "sxth\0" "sxtl\0" "sxtl2\0" "sxtw\0" "sys\0" "tbl\0" "tbnz\0"
1913 "tbx\0" "tbz\0" "tlbi\0" "trn1\0" "trn2\0" "uaba\0" "uabal\0" "uabal2\0" "uabd\0" "uabdl\0" "uabdl2\0" "uadalp\0"
1914 "uaddl\0" "uaddl2\0" "uaddlp\0" "uaddlv\0" "uaddw\0" "uaddw2\0" "ubfiz\0" "ubfm\0" "ubfx\0" "ucvtf\0" "udf\0"
1915 "udiv\0" "uhadd\0" "uhsub\0" "umaddl\0" "umaxp\0" "umaxv\0" "uminp\0" "uminv\0" "umlal\0" "umlal2\0" "umlsl\0"
1916 "umlsl2\0" "ummla\0" "umnegl\0" "umov\0" "umsubl\0" "umulh\0" "umull\0" "umull2\0" "uqrshl\0" "uqrshrn\0"
1917 "uqrshrn2\0" "uqshl\0" "uqshrn\0" "uqshrn2\0" "uqsub\0" "uqxtn\0" "uqxtn2\0" "urecpe\0" "urhadd\0" "urshl\0"
1918 "urshr\0" "ursqrte\0" "ursra\0" "usdot\0" "ushl\0" "ushll\0" "ushll2\0" "ushr\0" "usmmla\0" "usqadd\0" "usra\0"
1919 "usubl\0" "usubl2\0" "usubw\0" "usubw2\0" "uxtb\0" "uxth\0" "uxtl\0" "uxtl2\0" "uzp1\0" "uzp2\0" "wfe\0" "wfi\0"
1920 "xaflag\0" "xar\0" "xpacd\0" "xpaci\0" "xpaclri\0" "yield\0" "zip1\0" "zip2";
1848 const uint32_t InstDB::_instNameIndexTable[] = {
1849 0x80000000, // Small ''.
1850 0x80000C81, // Small 'adc'.
1851 0x80098C81, // Small 'adcs'.
1852 0x80001081, // Small 'add'.
1853 0x80039081, // Small 'addg'.
1854 0x80099081, // Small 'adds'.
1855 0x80004881, // Small 'adr'.
1856 0x80084881, // Small 'adrp'.
1857 0x800011C1, // Small 'and'.
1858 0x800991C1, // Small 'ands'.
1859 0x80004A61, // Small 'asr'.
1860 0x800B4A61, // Small 'asrv'.
1861 0x80000281, // Small 'at'.
1862 0x801252A1, // Small 'autda'.
1863 0x83A252A1, // Small 'autdza'.
1864 0x802252A1, // Small 'autdb'.
1865 0x85A252A1, // Small 'autdzb'.
1866 0x8014D2A1, // Small 'autia'.
1867 0x00009000, // Large 'autia1716'.
1868 0x20BF5000, // Large 'autia|sp'.
1869 0xB414D2A1, // Small 'autiaz'.
1870 0x8024D2A1, // Small 'autib'.
1871 0x40055009, // Large 'autib|1716'.
1872 0x20BF5009, // Large 'autib|sp'.
1873 0xB424D2A1, // Small 'autibz'.
1874 0x83A4D2A1, // Small 'autiza'.
1875 0x85A4D2A1, // Small 'autizb'.
1876 0x8E161B01, // Small 'axflag'.
1877 0x80000002, // Small 'b'.
1878 0x80000CC2, // Small 'bfc'.
1879 0x800024C2, // Small 'bfi'.
1880 0x800034C2, // Small 'bfm'.
1881 0x80C4E0C2, // Small 'bfxil'.
1882 0x80000D22, // Small 'bic'.
1883 0x80098D22, // Small 'bics'.
1884 0x80000182, // Small 'bl'.
1885 0x80004982, // Small 'blr'.
1886 0x80000242, // Small 'br'.
1887 0x80002E42, // Small 'brk'.
1888 0x80004C23, // Small 'cas'.
1889 0x8000CC23, // Small 'casa'.
1890 0x8020CC23, // Small 'casab'.
1891 0x8080CC23, // Small 'casah'.
1892 0x80C0CC23, // Small 'casal'.
1893 0x84C0CC23, // Small 'casalb'.
1894 0x90C0CC23, // Small 'casalh'.
1895 0x80014C23, // Small 'casb'.
1896 0x80044C23, // Small 'cash'.
1897 0x80064C23, // Small 'casl'.
1898 0x80264C23, // Small 'caslb'.
1899 0x80864C23, // Small 'caslh'.
1900 0x80084C23, // Small 'casp'.
1901 0x80184C23, // Small 'caspa'.
1902 0x98184C23, // Small 'caspal'.
1903 0x80C84C23, // Small 'caspl'.
1904 0x800D3843, // Small 'cbnz'.
1905 0x80006843, // Small 'cbz'.
1906 0x80073463, // Small 'ccmn'.
1907 0x80083463, // Small 'ccmp'.
1908 0x816724C3, // Small 'cfinv'.
1909 0x8001B923, // Small 'cinc'.
1910 0x800B3923, // Small 'cinv'.
1911 0x8182C983, // Small 'clrex'.
1912 0x80004D83, // Small 'cls'.
1913 0x80006983, // Small 'clz'.
1914 0x800039A3, // Small 'cmn'.
1915 0x800041A3, // Small 'cmp'.
1916 0x800841A3, // Small 'cmpp'.
1917 0x800395C3, // Small 'cneg'.
1918 0x85DF0E43, // Small 'crc32b'.
1919 0x100D60C1, // Large 'crc32c|b'.
1920 0x101660C1, // Large 'crc32c|h'.
1921 0x104860C1, // Large 'crc32c|w'.
1922 0x101360C1, // Large 'crc32c|x'.
1923 0x91DF0E43, // Small 'crc32h'.
1924 0xAFDF0E43, // Small 'crc32w'.
1925 0xB1DF0E43, // Small 'crc32x'.
1926 0x80011263, // Small 'csdb'.
1927 0x80061663, // Small 'csel'.
1928 0x800A1663, // Small 'cset'.
1929 0x80DA1663, // Small 'csetm'.
1930 0x80372663, // Small 'csinc'.
1931 0x81672663, // Small 'csinv'.
1932 0x8072BA63, // Small 'csneg'.
1933 0x80000064, // Small 'dc'.
1934 0x81C9C064, // Small 'dcps1'.
1935 0x81D9C064, // Small 'dcps2'.
1936 0x81E9C064, // Small 'dcps3'.
1937 0x800020E4, // Small 'dgh'.
1938 0x800009A4, // Small 'dmb'.
1939 0x8009C244, // Small 'drps'.
1940 0x80000A64, // Small 'dsb'.
1941 0x800039E5, // Small 'eon'.
1942 0x800049E5, // Small 'eor'.
1943 0x80000A65, // Small 'esb'.
1944 0x80095305, // Small 'extr'.
1945 0x800A1645, // Small 'eret'.
1946 0x800025A7, // Small 'gmi'.
1947 0x800A3928, // Small 'hint'.
1948 0x80005188, // Small 'hlt'.
1949 0x80000EC8, // Small 'hvc'.
1950 0x80000069, // Small 'ic'.
1951 0x80000A69, // Small 'isb'.
1952 0x8042048C, // Small 'ldadd'.
1953 0x8242048C, // Small 'ldadda'.
1954 0x100D6051, // Large 'ldadda|b'.
1955 0x10166051, // Large 'ldadda|h'.
1956 0x00007051, // Large 'ldaddal'.
1957 0x100D7051, // Large 'ldaddal|b'.
1958 0x10167051, // Large 'ldaddal|h'.
1959 0x8442048C, // Small 'ldaddb'.
1960 0x9042048C, // Small 'ldaddh'.
1961 0x9842048C, // Small 'ldaddl'.
1962 0x206D5051, // Large 'ldadd|lb'.
1963 0x20155051, // Large 'ldadd|lh'.
1964 0x8009048C, // Small 'ldar'.
1965 0x8029048C, // Small 'ldarb'.
1966 0x8089048C, // Small 'ldarh'.
1967 0x810C048C, // Small 'ldaxp'.
1968 0x812C048C, // Small 'ldaxr'.
1969 0x852C048C, // Small 'ldaxrb'.
1970 0x912C048C, // Small 'ldaxrh'.
1971 0x81260C8C, // Small 'ldclr'.
1972 0x83260C8C, // Small 'ldclra'.
1973 0x100D6058, // Large 'ldclra|b'.
1974 0x10166058, // Large 'ldclra|h'.
1975 0x00007058, // Large 'ldclral'.
1976 0x100D7058, // Large 'ldclral|b'.
1977 0x10167058, // Large 'ldclral|h'.
1978 0x85260C8C, // Small 'ldclrb'.
1979 0x91260C8C, // Small 'ldclrh'.
1980 0x99260C8C, // Small 'ldclrl'.
1981 0x206D5058, // Large 'ldclr|lb'.
1982 0x20155058, // Large 'ldclr|lh'.
1983 0x8127948C, // Small 'ldeor'.
1984 0x8327948C, // Small 'ldeora'.
1985 0x100D605F, // Large 'ldeora|b'.
1986 0x1016605F, // Large 'ldeora|h'.
1987 0x0000705F, // Large 'ldeoral'.
1988 0x100D705F, // Large 'ldeoral|b'.
1989 0x1016705F, // Large 'ldeoral|h'.
1990 0x8527948C, // Small 'ldeorb'.
1991 0x9127948C, // Small 'ldeorh'.
1992 0x9927948C, // Small 'ldeorl'.
1993 0x206D505F, // Large 'ldeor|lb'.
1994 0x2015505F, // Large 'ldeor|lh'.
1995 0x80001C8C, // Small 'ldg'.
1996 0x80069C8C, // Small 'ldgm'.
1997 0x8120B08C, // Small 'ldlar'.
1998 0x8520B08C, // Small 'ldlarb'.
1999 0x9120B08C, // Small 'ldlarh'.
2000 0x8008388C, // Small 'ldnp'.
2001 0x8000408C, // Small 'ldp'.
2002 0x8179C08C, // Small 'ldpsw'.
2003 0x8000488C, // Small 'ldr'.
2004 0x8010C88C, // Small 'ldraa'.
2005 0x8020C88C, // Small 'ldrab'.
2006 0x8001488C, // Small 'ldrb'.
2007 0x8004488C, // Small 'ldrh'.
2008 0x8029C88C, // Small 'ldrsb'.
2009 0x8089C88C, // Small 'ldrsh'.
2010 0x8179C88C, // Small 'ldrsw'.
2011 0x8142CC8C, // Small 'ldset'.
2012 0x8342CC8C, // Small 'ldseta'.
2013 0x100D6066, // Large 'ldseta|b'.
2014 0x10166066, // Large 'ldseta|h'.
2015 0x00007066, // Large 'ldsetal'.
2016 0x100D7066, // Large 'ldsetal|b'.
2017 0x10167066, // Large 'ldsetal|h'.
2018 0x8542CC8C, // Small 'ldsetb'.
2019 0x9142CC8C, // Small 'ldseth'.
2020 0x9942CC8C, // Small 'ldsetl'.
2021 0x206D5066, // Large 'ldset|lb'.
2022 0x20155066, // Large 'ldset|lh'.
2023 0xB016CC8C, // Small 'ldsmax'.
2024 0x0000700E, // Large 'ldsmaxa'.
2025 0x100D700E, // Large 'ldsmaxa|b'.
2026 0x1016700E, // Large 'ldsmaxa|h'.
2027 0x0000800E, // Large 'ldsmaxal'.
2028 0x100D800E, // Large 'ldsmaxal|b'.
2029 0x1016800E, // Large 'ldsmaxal|h'.
2030 0x100D600E, // Large 'ldsmax|b'.
2031 0x1016600E, // Large 'ldsmax|h'.
2032 0x100E600E, // Large 'ldsmax|l'.
2033 0x206D600E, // Large 'ldsmax|lb'.
2034 0x2015600E, // Large 'ldsmax|lh'.
2035 0x9C96CC8C, // Small 'ldsmin'.
2036 0x00007017, // Large 'ldsmina'.
2037 0x100D7017, // Large 'ldsmina|b'.
2038 0x10167017, // Large 'ldsmina|h'.
2039 0x00008017, // Large 'ldsminal'.
2040 0x100D8017, // Large 'ldsminal|b'.
2041 0x10168017, // Large 'ldsminal|h'.
2042 0x100D6017, // Large 'ldsmin|b'.
2043 0x10166017, // Large 'ldsmin|h'.
2044 0x100E6017, // Large 'ldsmin|l'.
2045 0x206D6017, // Large 'ldsmin|lb'.
2046 0x20156017, // Large 'ldsmin|lh'.
2047 0x8009508C, // Small 'ldtr'.
2048 0x8029508C, // Small 'ldtrb'.
2049 0x8089508C, // Small 'ldtrh'.
2050 0x8539508C, // Small 'ldtrsb'.
2051 0x9139508C, // Small 'ldtrsh'.
2052 0xAF39508C, // Small 'ldtrsw'.
2053 0xB016D48C, // Small 'ldumax'.
2054 0x0000701F, // Large 'ldumaxa'.
2055 0x100D701F, // Large 'ldumaxa|b'.
2056 0x1016701F, // Large 'ldumaxa|h'.
2057 0x0000801F, // Large 'ldumaxal'.
2058 0x100D801F, // Large 'ldumaxal|b'.
2059 0x1016801F, // Large 'ldumaxal|h'.
2060 0x100D601F, // Large 'ldumax|b'.
2061 0x1016601F, // Large 'ldumax|h'.
2062 0x100E601F, // Large 'ldumax|l'.
2063 0x206D601F, // Large 'ldumax|lb'.
2064 0x2015601F, // Large 'ldumax|lh'.
2065 0x9C96D48C, // Small 'ldumin'.
2066 0x00007027, // Large 'ldumina'.
2067 0x100D7027, // Large 'ldumina|b'.
2068 0x10167027, // Large 'ldumina|h'.
2069 0x00008027, // Large 'lduminal'.
2070 0x100D8027, // Large 'lduminal|b'.
2071 0x10168027, // Large 'lduminal|h'.
2072 0x100D6027, // Large 'ldumin|b'.
2073 0x10166027, // Large 'ldumin|h'.
2074 0x100E6027, // Large 'ldumin|l'.
2075 0x206D6027, // Large 'ldumin|lb'.
2076 0x20156027, // Large 'ldumin|lh'.
2077 0x8009548C, // Small 'ldur'.
2078 0x8029548C, // Small 'ldurb'.
2079 0x8089548C, // Small 'ldurh'.
2080 0x8539548C, // Small 'ldursb'.
2081 0x9139548C, // Small 'ldursh'.
2082 0xAF39548C, // Small 'ldursw'.
2083 0x8008608C, // Small 'ldxp'.
2084 0x8009608C, // Small 'ldxr'.
2085 0x8029608C, // Small 'ldxrb'.
2086 0x8089608C, // Small 'ldxrh'.
2087 0x8000326C, // Small 'lsl'.
2088 0x800B326C, // Small 'lslv'.
2089 0x80004A6C, // Small 'lsr'.
2090 0x800B4A6C, // Small 'lsrv'.
2091 0x8002102D, // Small 'madd'.
2092 0x800395CD, // Small 'mneg'.
2093 0x800059ED, // Small 'mov'.
2094 0x8005D9ED, // Small 'movk'.
2095 0x800759ED, // Small 'movn'.
2096 0x800D59ED, // Small 'movz'.
2097 0x80004E4D, // Small 'mrs'.
2098 0x80004A6D, // Small 'msr'.
2099 0x8001566D, // Small 'msub'.
2100 0x800032AD, // Small 'mul'.
2101 0x80003ACD, // Small 'mvn'.
2102 0x80001CAE, // Small 'neg'.
2103 0x80099CAE, // Small 'negs'.
2104 0x80000CEE, // Small 'ngc'.
2105 0x80098CEE, // Small 'ngcs'.
2106 0x800041EE, // Small 'nop'.
2107 0x80003A4F, // Small 'orn'.
2108 0x80004A4F, // Small 'orr'.
2109 0x80120C30, // Small 'pacda'.
2110 0x80220C30, // Small 'pacdb'.
2111 0x83A20C30, // Small 'pacdza'.
2112 0x85A20C30, // Small 'pacdzb'.
2113 0x80138C30, // Small 'pacga'.
2114 0x80214E70, // Small 'pssbb'.
2115 0x800A2452, // Small 'rbit'.
2116 0x800050B2, // Small 'ret'.
2117 0x800058B2, // Small 'rev'.
2118 0x20073138, // Large 'rev|16'.
2119 0x81DF58B2, // Small 'rev32'.
2120 0x208F3138, // Large 'rev|64'.
2121 0x800049F2, // Small 'ror'.
2122 0x800B49F2, // Small 'rorv'.
2123 0x80000C53, // Small 'sbc'.
2124 0x80098C53, // Small 'sbcs'.
2125 0x81A49853, // Small 'sbfiz'.
2126 0x80069853, // Small 'sbfm'.
2127 0x800C1853, // Small 'sbfx'.
2128 0x800B2493, // Small 'sdiv'.
2129 0x113B4134, // Large 'setf|8'.
2130 0x20074134, // Large 'setf|16'.
2131 0x800058B3, // Small 'sev'.
2132 0x800658B3, // Small 'sevl'.
2133 0x984205B3, // Small 'smaddl'.
2134 0x80000DB3, // Small 'smc'.
2135 0x9872B9B3, // Small 'smnegl'.
2136 0x982ACDB3, // Small 'smsubl'.
2137 0x808655B3, // Small 'smulh'.
2138 0x80C655B3, // Small 'smull'.
2139 0x80010A73, // Small 'ssbb'.
2140 0x8003F693, // Small 'st2g'.
2141 0x80420693, // Small 'stadd'.
2142 0x98420693, // Small 'staddl'.
2143 0x84420693, // Small 'staddb'.
2144 0x206D50C7, // Large 'stadd|lb'.
2145 0x90420693, // Small 'staddh'.
2146 0x201550C7, // Large 'stadd|lh'.
2147 0x81260E93, // Small 'stclr'.
2148 0x99260E93, // Small 'stclrl'.
2149 0x85260E93, // Small 'stclrb'.
2150 0x206D50CC, // Large 'stclr|lb'.
2151 0x91260E93, // Small 'stclrh'.
2152 0x201550CC, // Large 'stclr|lh'.
2153 0x81279693, // Small 'steor'.
2154 0x99279693, // Small 'steorl'.
2155 0x85279693, // Small 'steorb'.
2156 0x206D50D1, // Large 'steor|lb'.
2157 0x91279693, // Small 'steorh'.
2158 0x201550D1, // Large 'steor|lh'.
2159 0x80001E93, // Small 'stg'.
2160 0x80069E93, // Small 'stgm'.
2161 0x80081E93, // Small 'stgp'.
2162 0x81263293, // Small 'stllr'.
2163 0x85263293, // Small 'stllrb'.
2164 0x91263293, // Small 'stllrh'.
2165 0x80093293, // Small 'stlr'.
2166 0x80293293, // Small 'stlrb'.
2167 0x80893293, // Small 'stlrh'.
2168 0x810C3293, // Small 'stlxp'.
2169 0x812C3293, // Small 'stlxr'.
2170 0x852C3293, // Small 'stlxrb'.
2171 0x912C3293, // Small 'stlxrh'.
2172 0x80083A93, // Small 'stnp'.
2173 0x80004293, // Small 'stp'.
2174 0x80004A93, // Small 'str'.
2175 0x80014A93, // Small 'strb'.
2176 0x80044A93, // Small 'strh'.
2177 0x8142CE93, // Small 'stset'.
2178 0x9942CE93, // Small 'stsetl'.
2179 0x8542CE93, // Small 'stsetb'.
2180 0x206D50D6, // Large 'stset|lb'.
2181 0x9142CE93, // Small 'stseth'.
2182 0x201550D6, // Large 'stset|lh'.
2183 0xB016CE93, // Small 'stsmax'.
2184 0x100E606F, // Large 'stsmax|l'.
2185 0x100D606F, // Large 'stsmax|b'.
2186 0x206D606F, // Large 'stsmax|lb'.
2187 0x1016606F, // Large 'stsmax|h'.
2188 0x2015606F, // Large 'stsmax|lh'.
2189 0x9C96CE93, // Small 'stsmin'.
2190 0x100E6075, // Large 'stsmin|l'.
2191 0x100D6075, // Large 'stsmin|b'.
2192 0x206D6075, // Large 'stsmin|lb'.
2193 0x10166075, // Large 'stsmin|h'.
2194 0x20156075, // Large 'stsmin|lh'.
2195 0x80095293, // Small 'sttr'.
2196 0x80295293, // Small 'sttrb'.
2197 0x80895293, // Small 'sttrh'.
2198 0xB016D693, // Small 'stumax'.
2199 0x100E607B, // Large 'stumax|l'.
2200 0x100D607B, // Large 'stumax|b'.
2201 0x206D607B, // Large 'stumax|lb'.
2202 0x1016607B, // Large 'stumax|h'.
2203 0x2015607B, // Large 'stumax|lh'.
2204 0x9C96D693, // Small 'stumin'.
2205 0x100E6081, // Large 'stumin|l'.
2206 0x100D6081, // Large 'stumin|b'.
2207 0x206D6081, // Large 'stumin|lb'.
2208 0x10166081, // Large 'stumin|h'.
2209 0x20156081, // Large 'stumin|lh'.
2210 0x80095693, // Small 'stur'.
2211 0x80295693, // Small 'sturb'.
2212 0x80895693, // Small 'sturh'.
2213 0x80086293, // Small 'stxp'.
2214 0x80096293, // Small 'stxr'.
2215 0x80296293, // Small 'stxrb'.
2216 0x80896293, // Small 'stxrh'.
2217 0x807EEA93, // Small 'stz2g'.
2218 0x8003EA93, // Small 'stzg'.
2219 0x80D3EA93, // Small 'stzgm'.
2220 0x80000AB3, // Small 'sub'.
2221 0x80038AB3, // Small 'subg'.
2222 0x80080AB3, // Small 'subp'.
2223 0x81380AB3, // Small 'subps'.
2224 0x80098AB3, // Small 'subs'.
2225 0x80000ED3, // Small 'svc'.
2226 0x800042F3, // Small 'swp'.
2227 0x8000C2F3, // Small 'swpa'.
2228 0x8020C2F3, // Small 'swpab'.
2229 0x8080C2F3, // Small 'swpah'.
2230 0x80C0C2F3, // Small 'swpal'.
2231 0x84C0C2F3, // Small 'swpalb'.
2232 0x90C0C2F3, // Small 'swpalh'.
2233 0x800142F3, // Small 'swpb'.
2234 0x800442F3, // Small 'swph'.
2235 0x800642F3, // Small 'swpl'.
2236 0x802642F3, // Small 'swplb'.
2237 0x808642F3, // Small 'swplh'.
2238 0x80015313, // Small 'sxtb'.
2239 0x80045313, // Small 'sxth'.
2240 0x800BD313, // Small 'sxtw'.
2241 0x80004F33, // Small 'sys'.
2242 0x80048994, // Small 'tlbi'.
2243 0x80005274, // Small 'tst'.
2244 0x800D3854, // Small 'tbnz'.
2245 0x80006854, // Small 'tbz'.
2246 0x81A49855, // Small 'ubfiz'.
2247 0x80069855, // Small 'ubfm'.
2248 0x800C1855, // Small 'ubfx'.
2249 0x80001895, // Small 'udf'.
2250 0x800B2495, // Small 'udiv'.
2251 0x984205B5, // Small 'umaddl'.
2252 0x9872B9B5, // Small 'umnegl'.
2253 0x80C655B5, // Small 'umull'.
2254 0x808655B5, // Small 'umulh'.
2255 0x982ACDB5, // Small 'umsubl'.
2256 0x80015315, // Small 'uxtb'.
2257 0x80045315, // Small 'uxth'.
2258 0x800014D7, // Small 'wfe'.
2259 0x800024D7, // Small 'wfi'.
2260 0x8E161838, // Small 'xaflag'.
2261 0x80418618, // Small 'xpacd'.
2262 0x80918618, // Small 'xpaci'.
2263 0x208850DB, // Large 'xpacl|ri'.
2264 0x80461539, // Small 'yield'.
2265 0x80004C41, // Small 'abs'.
2266 0x80001081, // Small 'add'.
2267 0x80E41081, // Small 'addhn'.
2268 0xBAE41081, // Small 'addhn2'.
2269 0x80081081, // Small 'addp'.
2270 0x800B1081, // Small 'addv'.
2271 0x80024CA1, // Small 'aesd'.
2272 0x8002CCA1, // Small 'aese'.
2273 0x86D4CCA1, // Small 'aesimc'.
2274 0x8036CCA1, // Small 'aesmc'.
2275 0x800011C1, // Small 'and'.
2276 0x800C0462, // Small 'bcax'.
2277 0x814B0CC2, // Small 'bfcvt'.
2278 0x9D4B0CC2, // Small 'bfcvtn'.
2279 0x20B150E0, // Large 'bfcvt|n2'.
2280 0x814790C2, // Small 'bfdot'.
2281 0x206D50E5, // Large 'bfmla|lb'.
2282 0x20EA50E5, // Large 'bfmla|lt'.
2283 0x82C6B4C2, // Small 'bfmmla'.
2284 0x80000D22, // Small 'bic'.
2285 0x80001922, // Small 'bif'.
2286 0x80005122, // Small 'bit'.
2287 0x80003262, // Small 'bsl'.
2288 0x80004D83, // Small 'cls'.
2289 0x80006983, // Small 'clz'.
2290 0x800895A3, // Small 'cmeq'.
2291 0x80029DA3, // Small 'cmge'.
2292 0x800A1DA3, // Small 'cmgt'.
2293 0x8004A1A3, // Small 'cmhi'.
2294 0x8009A1A3, // Small 'cmhs'.
2295 0x8002B1A3, // Small 'cmle'.
2296 0x800A31A3, // Small 'cmlt'.
2297 0x8149D1A3, // Small 'cmtst'.
2298 0x800051C3, // Small 'cnt'.
2299 0x800042A4, // Small 'dup'.
2300 0x800049E5, // Small 'eor'.
2301 0x800F49E5, // Small 'eor3'.
2302 0x80005305, // Small 'ext'.
2303 0x80020826, // Small 'fabd'.
2304 0x80098826, // Small 'fabs'.
2305 0x80538C26, // Small 'facge'.
2306 0x81438C26, // Small 'facgt'.
2307 0x80021026, // Small 'fadd'.
2308 0x81021026, // Small 'faddp'.
2309 0x80420466, // Small 'fcadd'.
2310 0x81068C66, // Small 'fccmp'.
2311 0x8B068C66, // Small 'fccmpe'.
2312 0x8112B466, // Small 'fcmeq'.
2313 0x8053B466, // Small 'fcmge'.
2314 0x8143B466, // Small 'fcmgt'.
2315 0x80163466, // Small 'fcmla'.
2316 0x80563466, // Small 'fcmle'.
2317 0x81463466, // Small 'fcmlt'.
2318 0x80083466, // Small 'fcmp'.
2319 0x80583466, // Small 'fcmpe'.
2320 0x80C2CC66, // Small 'fcsel'.
2321 0x800A5866, // Small 'fcvt'.
2322 0xA61A5866, // Small 'fcvtas'.
2323 0xAA1A5866, // Small 'fcvtau'.
2324 0x80CA5866, // Small 'fcvtl'.
2325 0xBACA5866, // Small 'fcvtl2'.
2326 0xA6DA5866, // Small 'fcvtms'.
2327 0xAADA5866, // Small 'fcvtmu'.
2328 0x80EA5866, // Small 'fcvtn'.
2329 0xBAEA5866, // Small 'fcvtn2'.
2330 0xA6EA5866, // Small 'fcvtns'.
2331 0xAAEA5866, // Small 'fcvtnu'.
2332 0xA70A5866, // Small 'fcvtps'.
2333 0xAB0A5866, // Small 'fcvtpu'.
2334 0x9D8A5866, // Small 'fcvtxn'.
2335 0x20B150EC, // Large 'fcvtx|n2'.
2336 0xA7AA5866, // Small 'fcvtzs'.
2337 0xABAA5866, // Small 'fcvtzu'.
2338 0x800B2486, // Small 'fdiv'.
2339 0x101060F1, // Large 'fjcvtz|s'.
2340 0x804205A6, // Small 'fmadd'.
2341 0x800C05A6, // Small 'fmax'.
2342 0x9AEC05A6, // Small 'fmaxnm'.
2343 0x104460F7, // Large 'fmaxnm|p'.
2344 0x10E360F7, // Large 'fmaxnm|v'.
2345 0x810C05A6, // Small 'fmaxp'.
2346 0x816C05A6, // Small 'fmaxv'.
2347 0x800725A6, // Small 'fmin'.
2348 0x9AE725A6, // Small 'fminnm'.
2349 0x104460FD, // Large 'fminnm|p'.
2350 0x10E360FD, // Large 'fminnm|v'.
2351 0x810725A6, // Small 'fminp'.
2352 0x816725A6, // Small 'fminv'.
2353 0x8000B1A6, // Small 'fmla'.
2354 0x80C0B1A6, // Small 'fmlal'.
2355 0xBAC0B1A6, // Small 'fmlal2'.
2356 0x8009B1A6, // Small 'fmls'.
2357 0x80C9B1A6, // Small 'fmlsl'.
2358 0xBAC9B1A6, // Small 'fmlsl2'.
2359 0x800B3DA6, // Small 'fmov'.
2360 0x802ACDA6, // Small 'fmsub'.
2361 0x800655A6, // Small 'fmul'.
2362 0x818655A6, // Small 'fmulx'.
2363 0x800395C6, // Small 'fneg'.
2364 0x8840B5C6, // Small 'fnmadd'.
2365 0x8559B5C6, // Small 'fnmsub'.
2366 0x80CAB5C6, // Small 'fnmul'.
2367 0x8B019646, // Small 'frecpe'.
2368 0xA7019646, // Small 'frecps'.
2369 0xB1019646, // Small 'frecpx'.
2370 0x10137087, // Large 'frint32|x'.
2371 0x108E7087, // Large 'frint32|z'.
2372 0x308F5087, // Large 'frint|64x'.
2373 0x30925087, // Large 'frint|64z'.
2374 0x83472646, // Small 'frinta'.
2375 0x93472646, // Small 'frinti'.
2376 0x9B472646, // Small 'frintm'.
2377 0x9D472646, // Small 'frintn'.
2378 0xA1472646, // Small 'frintp'.
2379 0xB1472646, // Small 'frintx'.
2380 0xB5472646, // Small 'frintz'.
2381 0x20D25103, // Large 'frsqr|te'.
2382 0x20705103, // Large 'frsqr|ts'.
2383 0x81494666, // Small 'fsqrt'.
2384 0x80015666, // Small 'fsub'.
2385 0x80004DC9, // Small 'ins'.
2386 0x8000708C, // Small 'ld1'.
2387 0x8009708C, // Small 'ld1r'.
2388 0x8000748C, // Small 'ld2'.
2389 0x8009748C, // Small 'ld2r'.
2390 0x8000788C, // Small 'ld3'.
2391 0x8009788C, // Small 'ld3r'.
2392 0x80007C8C, // Small 'ld4'.
2393 0x80097C8C, // Small 'ld4r'.
2394 0x8008388C, // Small 'ldnp'.
2395 0x8000408C, // Small 'ldp'.
2396 0x8000488C, // Small 'ldr'.
2397 0x8009548C, // Small 'ldur'.
2398 0x8000058D, // Small 'mla'.
2399 0x80004D8D, // Small 'mls'.
2400 0x800059ED, // Small 'mov'.
2401 0x8004D9ED, // Small 'movi'.
2402 0x800032AD, // Small 'mul'.
2403 0x80003ACD, // Small 'mvn'.
2404 0x8004BACD, // Small 'mvni'.
2405 0x80001CAE, // Small 'neg'.
2406 0x800051EE, // Small 'not'.
2407 0x80003A4F, // Small 'orn'.
2408 0x80004A4F, // Small 'orr'.
2409 0x800655B0, // Small 'pmul'.
2410 0x80C655B0, // Small 'pmull'.
2411 0xBAC655B0, // Small 'pmull2'.
2412 0x9C821032, // Small 'raddhn'.
2413 0x30B04108, // Large 'radd|hn2'.
2414 0x800E6032, // Small 'rax1'.
2415 0x800A2452, // Small 'rbit'.
2416 0x20073138, // Large 'rev|16'.
2417 0x81DF58B2, // Small 'rev32'.
2418 0x208F3138, // Large 'rev|64'.
2419 0x80E92272, // Small 'rshrn'.
2420 0xBAE92272, // Small 'rshrn2'.
2421 0x9C815672, // Small 'rsubhn'.
2422 0x30B0410C, // Large 'rsub|hn2'.
2423 0x80008833, // Small 'saba'.
2424 0x80C08833, // Small 'sabal'.
2425 0xBAC08833, // Small 'sabal2'.
2426 0x80020833, // Small 'sabd'.
2427 0x80C20833, // Small 'sabdl'.
2428 0xBAC20833, // Small 'sabdl2'.
2429 0xA0C09033, // Small 'sadalp'.
2430 0x80C21033, // Small 'saddl'.
2431 0xBAC21033, // Small 'saddl2'.
2432 0xA0C21033, // Small 'saddlp'.
2433 0xACC21033, // Small 'saddlv'.
2434 0x81721033, // Small 'saddw'.
2435 0xBB721033, // Small 'saddw2'.
2436 0x806A5873, // Small 'scvtf'.
2437 0x800A3C93, // Small 'sdot'.
2438 0x803E0513, // Small 'sha1c'.
2439 0x808E0513, // Small 'sha1h'.
2440 0x80DE0513, // Small 'sha1m'.
2441 0x810E0513, // Small 'sha1p'.
2442 0x30354110, // Large 'sha1|su0'.
2443 0x303E4110, // Large 'sha1|su1'.
2444 0x1016602F, // Large 'sha256|h'.
2445 0x2095602F, // Large 'sha256|h2'.
2446 0x0000902F, // Large 'sha256su0'.
2447 0x1005802F, // Large 'sha256su|1'.
2448 0x10166038, // Large 'sha512|h'.
2449 0x20956038, // Large 'sha512|h2'.
2450 0x30356038, // Large 'sha512|su0'.
2451 0x303E6038, // Large 'sha512|su1'.
2452 0x80420513, // Small 'shadd'.
2453 0x80003113, // Small 'shl'.
2454 0x80063113, // Small 'shll'.
2455 0x81D63113, // Small 'shll2'.
2456 0x80074913, // Small 'shrn'.
2457 0x81D74913, // Small 'shrn2'.
2458 0x802ACD13, // Small 'shsub'.
2459 0x80002593, // Small 'sli'.
2460 0x10058041, // Large 'sm3partw|1'.
2461 0x10328041, // Large 'sm3partw|2'.
2462 0xB939F9B3, // Small 'sm3ss1'.
2463 0x10006114, // Large 'sm3tt1|a'.
2464 0x100D6114, // Large 'sm3tt1|b'.
2465 0x211A5114, // Large 'sm3tt|2a'.
2466 0x211C5114, // Large 'sm3tt|2b'.
2467 0x8002FDB3, // Small 'sm4e'.
2468 0x0000711E, // Large 'sm4ekey'.
2469 0x800C05B3, // Small 'smax'.
2470 0x810C05B3, // Small 'smaxp'.
2471 0x816C05B3, // Small 'smaxv'.
2472 0x800725B3, // Small 'smin'.
2473 0x810725B3, // Small 'sminp'.
2474 0x816725B3, // Small 'sminv'.
2475 0x80C0B1B3, // Small 'smlal'.
2476 0xBAC0B1B3, // Small 'smlal2'.
2477 0x80C9B1B3, // Small 'smlsl'.
2478 0xBAC9B1B3, // Small 'smlsl2'.
2479 0x801635B3, // Small 'smmla'.
2480 0x800B3DB3, // Small 'smov'.
2481 0x80C655B3, // Small 'smull'.
2482 0xBAC655B3, // Small 'smull2'.
2483 0x81310633, // Small 'sqabs'.
2484 0x80420633, // Small 'sqadd'.
2485 0x00007097, // Large 'sqdmlal'.
2486 0x10327097, // Large 'sqdmlal|2'.
2487 0x209E5097, // Large 'sqdml|sl'.
2488 0x309E5097, // Large 'sqdml|sl2'.
2489 0x101660A1, // Large 'sqdmul|h'.
2490 0x100E60A1, // Large 'sqdmul|l'.
2491 0x209F60A1, // Large 'sqdmul|l2'.
2492 0x8072BA33, // Small 'sqneg'.
2493 0x101670A7, // Large 'sqrdmla|h'.
2494 0x202F60A7, // Large 'sqrdml|sh'.
2495 0x30AE50A7, // Large 'sqrdm|ulh'.
2496 0x9889CA33, // Small 'sqrshl'.
2497 0x101C6049, // Large 'sqrshr|n'.
2498 0x20B16049, // Large 'sqrshr|n2'.
2499 0x00008049, // Large 'sqrshrun'.
2500 0x10328049, // Large 'sqrshrun|2'.
2501 0x80C44E33, // Small 'sqshl'.
2502 0xAAC44E33, // Small 'sqshlu'.
2503 0x9D244E33, // Small 'sqshrn'.
2504 0x20B150B3, // Large 'sqshr|n2'.
2505 0x101C60B3, // Large 'sqshru|n'.
2506 0x20B160B3, // Large 'sqshru|n2'.
2507 0x802ACE33, // Small 'sqsub'.
2508 0x80EA6233, // Small 'sqxtn'.
2509 0xBAEA6233, // Small 'sqxtn2'.
2510 0x9D5A6233, // Small 'sqxtun'.
2511 0x20B15125, // Large 'sqxtu|n2'.
2512 0x8840A253, // Small 'srhadd'.
2513 0x80002653, // Small 'sri'.
2514 0x80C44E53, // Small 'srshl'.
2515 0x81244E53, // Small 'srshr'.
2516 0x80194E53, // Small 'srsra'.
2517 0x80062273, // Small 'sshl'.
2518 0x80C62273, // Small 'sshll'.
2519 0xBAC62273, // Small 'sshll2'.
2520 0x80092273, // Small 'sshr'.
2521 0x8000CA73, // Small 'ssra'.
2522 0x80C15673, // Small 'ssubl'.
2523 0xBAC15673, // Small 'ssubl2'.
2524 0x81715673, // Small 'ssubw'.
2525 0xBB715673, // Small 'ssubw2'.
2526 0x80007293, // Small 'st1'.
2527 0x80007693, // Small 'st2'.
2528 0x80007A93, // Small 'st3'.
2529 0x80007E93, // Small 'st4'.
2530 0x80083A93, // Small 'stnp'.
2531 0x80004293, // Small 'stp'.
2532 0x80004A93, // Small 'str'.
2533 0x80095693, // Small 'stur'.
2534 0x80000AB3, // Small 'sub'.
2535 0x80E40AB3, // Small 'subhn'.
2536 0xBAE40AB3, // Small 'subhn2'.
2537 0x814792B3, // Small 'sudot'.
2538 0x8840C6B3, // Small 'suqadd'.
2539 0x80065313, // Small 'sxtl'.
2540 0x81D65313, // Small 'sxtl2'.
2541 0x80003054, // Small 'tbl'.
2542 0x80006054, // Small 'tbx'.
2543 0x800E3A54, // Small 'trn1'.
2544 0x800EBA54, // Small 'trn2'.
2545 0x80008835, // Small 'uaba'.
2546 0x80C08835, // Small 'uabal'.
2547 0xBAC08835, // Small 'uabal2'.
2548 0x80020835, // Small 'uabd'.
2549 0x80C20835, // Small 'uabdl'.
2550 0xBAC20835, // Small 'uabdl2'.
2551 0xA0C09035, // Small 'uadalp'.
2552 0x80C21035, // Small 'uaddl'.
2553 0xBAC21035, // Small 'uaddl2'.
2554 0xA0C21035, // Small 'uaddlp'.
2555 0xACC21035, // Small 'uaddlv'.
2556 0x81721035, // Small 'uaddw'.
2557 0xBB721035, // Small 'uaddw2'.
2558 0x806A5875, // Small 'ucvtf'.
2559 0x800A3C95, // Small 'udot'.
2560 0x80420515, // Small 'uhadd'.
2561 0x802ACD15, // Small 'uhsub'.
2562 0x800C05B5, // Small 'umax'.
2563 0x810C05B5, // Small 'umaxp'.
2564 0x816C05B5, // Small 'umaxv'.
2565 0x800725B5, // Small 'umin'.
2566 0x810725B5, // Small 'uminp'.
2567 0x816725B5, // Small 'uminv'.
2568 0x80C0B1B5, // Small 'umlal'.
2569 0xBAC0B1B5, // Small 'umlal2'.
2570 0x80C9B1B5, // Small 'umlsl'.
2571 0xBAC9B1B5, // Small 'umlsl2'.
2572 0x801635B5, // Small 'ummla'.
2573 0x800B3DB5, // Small 'umov'.
2574 0x80C655B5, // Small 'umull'.
2575 0xBAC655B5, // Small 'umull2'.
2576 0x80420635, // Small 'uqadd'.
2577 0x9889CA35, // Small 'uqrshl'.
2578 0x101C60B9, // Large 'uqrshr|n'.
2579 0x20B160B9, // Large 'uqrshr|n2'.
2580 0x80C44E35, // Small 'uqshl'.
2581 0x9D244E35, // Small 'uqshrn'.
2582 0x20B1512A, // Large 'uqshr|n2'.
2583 0x802ACE35, // Small 'uqsub'.
2584 0x80EA6235, // Small 'uqxtn'.
2585 0xBAEA6235, // Small 'uqxtn2'.
2586 0x8B019655, // Small 'urecpe'.
2587 0x8840A255, // Small 'urhadd'.
2588 0x80C44E55, // Small 'urshl'.
2589 0x81244E55, // Small 'urshr'.
2590 0x20D2512F, // Large 'ursqr|te'.
2591 0x80194E55, // Small 'ursra'.
2592 0x81479275, // Small 'usdot'.
2593 0x80062275, // Small 'ushl'.
2594 0x80C62275, // Small 'ushll'.
2595 0xBAC62275, // Small 'ushll2'.
2596 0x80092275, // Small 'ushr'.
2597 0x82C6B675, // Small 'usmmla'.
2598 0x8840C675, // Small 'usqadd'.
2599 0x8000CA75, // Small 'usra'.
2600 0x80C15675, // Small 'usubl'.
2601 0xBAC15675, // Small 'usubl2'.
2602 0x81715675, // Small 'usubw'.
2603 0xBB715675, // Small 'usubw2'.
2604 0x80065315, // Small 'uxtl'.
2605 0x81D65315, // Small 'uxtl2'.
2606 0x800E4355, // Small 'uzp1'.
2607 0x800EC355, // Small 'uzp2'.
2608 0x80004838, // Small 'xar'.
2609 0x80003A98, // Small 'xtn'.
2610 0x800EBA98, // Small 'xtn2'.
2611 0x800E413A, // Small 'zip1'.
2612 0x800EC13A // Small 'zip2'.
2613 };
2614
2615 const char InstDB::_instNameStringTable[] =
2616 "autia1716autibldsmaxalhldsminalldumaxallduminalsha256su0sha512su1sm3partwsqrshru"
2617 "nldaddalldclralldeoralldsetallbstsmaxstsminstumaxstuminfrint32z64x64zh2sqdmlalsl"
2618 "2sqdmulsqrdmlaulhn2sqshruuqrshrspcrc32cstaddstclrsteorstsetxpaclbfcvtbfmlaltfcvt"
2619 "xfjcvtzfmaxnmfminnmfrsqrraddrsubsha1sm3tt12a2bsm4ekeysqxtuuqshrursqrsetfrev8";
2620
19212621
19222622 const InstDB::InstNameIndex InstDB::instNameIndex[26] = {
19232623 { Inst::kIdAdc , Inst::kIdAnd_v + 1 },
19492649 };
19502650 // ----------------------------------------------------------------------------
19512651 // ${NameData:End}
1952 #endif
2652 #endif // !ASMJIT_NO_TEXT
19532653
19542654 ASMJIT_END_SUB_NAMESPACE
19552655
3838 uint32_t _encoding : 8;
3939 //! Index to data specific to each encoding type.
4040 uint32_t _encodingDataIndex : 8;
41 uint32_t _reserved : 2;
42 //! Index to \ref _nameData.
43 uint32_t _nameDataIndex : 14;
41 uint32_t _reserved : 16;
4442
4543 uint16_t _rwInfoIndex;
4644 uint16_t _flags;
860860 // ====================
861861
862862 #ifndef ASMJIT_NO_TEXT
863 extern const char _nameData[];
863 extern const uint32_t _instNameIndexTable[];
864 extern const char _instNameStringTable[];
864865 extern const InstNameIndex instNameIndex[26];
865866 #endif // !ASMJIT_NO_TEXT
866867
1616 #if defined(ASMJIT_TEST)
1717 UNIT(a64_operand) {
1818 INFO("Checking if a64::reg(...) matches built-in IDs");
19 EXPECT(w(5) == w5);
20 EXPECT(x(5) == x5);
19 EXPECT_EQ(w(5), w5);
20 EXPECT_EQ(x(5), x5);
2121
2222 INFO("Checking Gp register properties");
23 EXPECT(Gp().isReg() == true);
24 EXPECT(w0.isReg() == true);
25 EXPECT(x0.isReg() == true);
26 EXPECT(w0.id() == 0);
27 EXPECT(x0.id() == 0);
28 EXPECT(wzr.id() == Gp::kIdZr);
29 EXPECT(xzr.id() == Gp::kIdZr);
30 EXPECT(wsp.id() == Gp::kIdSp);
31 EXPECT(sp.id() == Gp::kIdSp);
32 EXPECT(w0.size() == 4);
33 EXPECT(x0.size() == 8);
34 EXPECT(w0.type() == RegType::kARM_GpW);
35 EXPECT(x0.type() == RegType::kARM_GpX);
36 EXPECT(w0.group() == RegGroup::kGp);
37 EXPECT(x0.group() == RegGroup::kGp);
23 EXPECT_TRUE(Gp().isReg());
24 EXPECT_TRUE(w0.isReg());
25 EXPECT_TRUE(x0.isReg());
26 EXPECT_EQ(w0.id(), 0u);
27 EXPECT_EQ(x0.id(), 0u);
28 EXPECT_EQ(wzr.id(), Gp::kIdZr);
29 EXPECT_EQ(xzr.id(), Gp::kIdZr);
30 EXPECT_EQ(wsp.id(), Gp::kIdSp);
31 EXPECT_EQ(sp.id(), Gp::kIdSp);
32 EXPECT_EQ(w0.size(), 4u);
33 EXPECT_EQ(x0.size(), 8u);
34 EXPECT_EQ(w0.type(), RegType::kARM_GpW);
35 EXPECT_EQ(x0.type(), RegType::kARM_GpX);
36 EXPECT_EQ(w0.group(), RegGroup::kGp);
37 EXPECT_EQ(x0.group(), RegGroup::kGp);
3838
3939 INFO("Checking Vec register properties");
40 EXPECT(v0.type() == RegType::kARM_VecV);
41 EXPECT(d0.type() == RegType::kARM_VecD);
42 EXPECT(s0.type() == RegType::kARM_VecS);
43 EXPECT(h0.type() == RegType::kARM_VecH);
44 EXPECT(b0.type() == RegType::kARM_VecB);
40 EXPECT_EQ(v0.type(), RegType::kARM_VecV);
41 EXPECT_EQ(d0.type(), RegType::kARM_VecD);
42 EXPECT_EQ(s0.type(), RegType::kARM_VecS);
43 EXPECT_EQ(h0.type(), RegType::kARM_VecH);
44 EXPECT_EQ(b0.type(), RegType::kARM_VecB);
4545
46 EXPECT(v0.group() == RegGroup::kVec);
47 EXPECT(d0.group() == RegGroup::kVec);
48 EXPECT(s0.group() == RegGroup::kVec);
49 EXPECT(h0.group() == RegGroup::kVec);
50 EXPECT(b0.group() == RegGroup::kVec);
46 EXPECT_EQ(v0.group(), RegGroup::kVec);
47 EXPECT_EQ(d0.group(), RegGroup::kVec);
48 EXPECT_EQ(s0.group(), RegGroup::kVec);
49 EXPECT_EQ(h0.group(), RegGroup::kVec);
50 EXPECT_EQ(b0.group(), RegGroup::kVec);
5151
5252 INFO("Checking Vec register element[] access");
5353 Vec vd_1 = v15.d(1);
54 EXPECT(vd_1.type() == RegType::kARM_VecV);
55 EXPECT(vd_1.group() == RegGroup::kVec);
56 EXPECT(vd_1.id() == 15);
57 EXPECT(vd_1.isVecD2());
58 EXPECT(vd_1.elementType() == Vec::kElementTypeD);
59 EXPECT(vd_1.hasElementIndex());
60 EXPECT(vd_1.elementIndex() == 1);
54 EXPECT_EQ(vd_1.type(), RegType::kARM_VecV);
55 EXPECT_EQ(vd_1.group(), RegGroup::kVec);
56 EXPECT_EQ(vd_1.id(), 15u);
57 EXPECT_TRUE(vd_1.isVecD2());
58 EXPECT_EQ(vd_1.elementType(), Vec::kElementTypeD);
59 EXPECT_TRUE(vd_1.hasElementIndex());
60 EXPECT_EQ(vd_1.elementIndex(), 1u);
6161
6262 Vec vs_3 = v15.s(3);
63 EXPECT(vs_3.type() == RegType::kARM_VecV);
64 EXPECT(vs_3.group() == RegGroup::kVec);
65 EXPECT(vs_3.id() == 15);
66 EXPECT(vs_3.isVecS4());
67 EXPECT(vs_3.elementType() == Vec::kElementTypeS);
68 EXPECT(vs_3.hasElementIndex());
69 EXPECT(vs_3.elementIndex() == 3);
63 EXPECT_EQ(vs_3.type(), RegType::kARM_VecV);
64 EXPECT_EQ(vs_3.group(), RegGroup::kVec);
65 EXPECT_EQ(vs_3.id(), 15u);
66 EXPECT_TRUE(vs_3.isVecS4());
67 EXPECT_EQ(vs_3.elementType(), Vec::kElementTypeS);
68 EXPECT_TRUE(vs_3.hasElementIndex());
69 EXPECT_EQ(vs_3.elementIndex(), 3u);
7070
7171 Vec vb_4 = v15.b4(3);
72 EXPECT(vb_4.type() == RegType::kARM_VecV);
73 EXPECT(vb_4.group() == RegGroup::kVec);
74 EXPECT(vb_4.id() == 15);
75 EXPECT(vb_4.isVecB4x4());
76 EXPECT(vb_4.elementType() == Vec::kElementTypeB4);
77 EXPECT(vb_4.hasElementIndex());
78 EXPECT(vb_4.elementIndex() == 3);
72 EXPECT_EQ(vb_4.type(), RegType::kARM_VecV);
73 EXPECT_EQ(vb_4.group(), RegGroup::kVec);
74 EXPECT_EQ(vb_4.id(), 15u);
75 EXPECT_TRUE(vb_4.isVecB4x4());
76 EXPECT_EQ(vb_4.elementType(), Vec::kElementTypeB4);
77 EXPECT_TRUE(vb_4.hasElementIndex());
78 EXPECT_EQ(vb_4.elementIndex(), 3u);
7979 }
8080 #endif
8181
1212 //! \{
1313
1414 //! AsmJit library version in `(Major << 16) | (Minor << 8) | (Patch)` format.
15 #define ASMJIT_LIBRARY_VERSION 0x010900 /* 1.9.0 */
15 #define ASMJIT_LIBRARY_VERSION 0x010A00 /* 1.10.0 */
1616
1717 //! \def ASMJIT_ABI_NAMESPACE
1818 //!
2323 //! default, which makes it possible to use use multiple AsmJit libraries within a single project, totally controlled
2424 //! by the users. This is useful especially in cases in which some of such library comes from a third party.
2525 #ifndef ASMJIT_ABI_NAMESPACE
26 #define ASMJIT_ABI_NAMESPACE _abi_1_9
26 #define ASMJIT_ABI_NAMESPACE _abi_1_10
2727 #endif
2828
2929 //! \}
171171 #define ASMJIT_ARCH_X86 0
172172 #endif
173173
174 #if defined(__arm64__) || defined(__aarch64__)
174 #if defined(_M_ARM64) || defined(__arm64__) || defined(__aarch64__)
175175 # define ASMJIT_ARCH_ARM 64
176176 #elif defined(_M_ARM) || defined(_M_ARMT) || defined(__arm__) || defined(__thumb__) || defined(__thumb2__)
177177 #define ASMJIT_ARCH_ARM 32
596596 #ifndef ASMJIT_NO_LOGGING
597597 return EmitterUtils::logInstructionFailed(this, err, instId, options, o0, o1, o2, opExt);
598598 #else
599 resetInstOptions();
600 resetExtraReg();
601 resetInlineComment();
599 resetState();
602600 return reportError(err);
603601 #endif
604602 }
0 // This file is part of AsmJit project <https://asmjit.com>
1 //
2 // See asmjit.h or LICENSE.md for license and copyright information
3 // SPDX-License-Identifier: Zlib
4
5 #ifndef ASMJIT_CORE_BUILDER_P_H_INCLUDED
6 #define ASMJIT_CORE_BUILDER_P_H_INCLUDED
7
8 #include "../core/api-config.h"
9 #ifndef ASMJIT_NO_BUILDER
10
11 #include "../core/builder.h"
12
13 ASMJIT_BEGIN_NAMESPACE
14
15 //! \addtogroup asmjit_builder
16 //! \{
17
18 static inline void BaseBuilder_assignInlineComment(BaseBuilder* self, BaseNode* node, const char* comment) noexcept {
19 if (comment)
20 node->setInlineComment(static_cast<char*>(self->_dataZone.dup(comment, strlen(comment), true)));
21 }
22
23 static inline void BaseBuilder_assignInstState(BaseBuilder* self, InstNode* node, const BaseEmitter::State& state) noexcept {
24 node->setOptions(state.options);
25 node->setExtraReg(state.extraReg);
26 BaseBuilder_assignInlineComment(self, node, state.comment);
27 }
28
29 //! \}
30
31 ASMJIT_END_NAMESPACE
32
33 #endif // !ASMJIT_NO_BUILDER
34 #endif // ASMJIT_CORE_BUILDER_P_H_INCLUDED
7373
7474 // Reset everything into its construction state.
7575 self->_environment.reset();
76 self->_cpuFeatures.reset();
7677 self->_baseAddress = Globals::kNoBaseAddress;
7778 self->_logger = nullptr;
7879 self->_errorHandler = nullptr;
117118
118119 CodeHolder::CodeHolder(const Support::Temporary* temporary) noexcept
119120 : _environment(),
121 _cpuFeatures{},
120122 _baseAddress(Globals::kNoBaseAddress),
121123 _logger(nullptr),
122124 _errorHandler(nullptr),
142144 }
143145
144146 Error CodeHolder::init(const Environment& environment, uint64_t baseAddress) noexcept {
147 return init(environment, CpuFeatures{}, baseAddress);
148 }
149
150 Error CodeHolder::init(const Environment& environment, const CpuFeatures& cpuFeatures, uint64_t baseAddress) noexcept {
145151 // Cannot reinitialize if it's locked or there is one or more emitter attached.
146152 if (isInitialized())
147153 return DebugUtils::errored(kErrorAlreadyInitialized);
171177 }
172178 else {
173179 _environment = environment;
180 _cpuFeatures = cpuFeatures;
174181 _baseAddress = baseAddress;
175182 return kErrorOk;
176183 }
11181125 env.init(Arch::kX86);
11191126
11201127 code.init(env);
1121 EXPECT(code.arch() == Arch::kX86);
1128 EXPECT_EQ(code.arch(), Arch::kX86);
11221129
11231130 INFO("Verifying named labels");
11241131 LabelEntry* le;
1125 EXPECT(code.newNamedLabelEntry(&le, "NamedLabel", SIZE_MAX, LabelType::kGlobal) == kErrorOk);
1126 EXPECT(strcmp(le->name(), "NamedLabel") == 0);
1127 EXPECT(code.labelIdByName("NamedLabel") == le->id());
1132 EXPECT_EQ(code.newNamedLabelEntry(&le, "NamedLabel", SIZE_MAX, LabelType::kGlobal), kErrorOk);
1133 EXPECT_EQ(strcmp(le->name(), "NamedLabel"), 0);
1134 EXPECT_EQ(code.labelIdByName("NamedLabel"), le->id());
11281135
11291136 INFO("Verifying section ordering");
11301137 Section* section1;
1131 EXPECT(code.newSection(&section1, "high-priority", SIZE_MAX, SectionFlags::kNone, 1, -1) == kErrorOk);
1132 EXPECT(code.sections()[1] == section1);
1133 EXPECT(code.sectionsByOrder()[0] == section1);
1138 EXPECT_EQ(code.newSection(&section1, "high-priority", SIZE_MAX, SectionFlags::kNone, 1, -1), kErrorOk);
1139 EXPECT_EQ(code.sections()[1], section1);
1140 EXPECT_EQ(code.sectionsByOrder()[0], section1);
11341141
11351142 Section* section0;
1136 EXPECT(code.newSection(&section0, "higher-priority", SIZE_MAX, SectionFlags::kNone, 1, -2) == kErrorOk);
1137 EXPECT(code.sections()[2] == section0);
1138 EXPECT(code.sectionsByOrder()[0] == section0);
1139 EXPECT(code.sectionsByOrder()[1] == section1);
1143 EXPECT_EQ(code.newSection(&section0, "higher-priority", SIZE_MAX, SectionFlags::kNone, 1, -2), kErrorOk);
1144 EXPECT_EQ(code.sections()[2], section0);
1145 EXPECT_EQ(code.sectionsByOrder()[0], section0);
1146 EXPECT_EQ(code.sectionsByOrder()[1], section1);
11401147
11411148 Section* section3;
1142 EXPECT(code.newSection(&section3, "low-priority", SIZE_MAX, SectionFlags::kNone, 1, 2) == kErrorOk);
1143 EXPECT(code.sections()[3] == section3);
1144 EXPECT(code.sectionsByOrder()[3] == section3);
1149 EXPECT_EQ(code.newSection(&section3, "low-priority", SIZE_MAX, SectionFlags::kNone, 1, 2), kErrorOk);
1150 EXPECT_EQ(code.sections()[3], section3);
1151 EXPECT_EQ(code.sectionsByOrder()[3], section3);
11451152 }
11461153 #endif
11471154
639639
640640 //! Environment information.
641641 Environment _environment;
642 //! CPU features of the target architecture.
643 CpuFeatures _cpuFeatures;
642644 //! Base address or \ref Globals::kNoBaseAddress.
643645 uint64_t _baseAddress;
644646
697699
698700 //! Initializes CodeHolder to hold code described by the given `environment` and `baseAddress`.
699701 ASMJIT_API Error init(const Environment& environment, uint64_t baseAddress = Globals::kNoBaseAddress) noexcept;
702 //! Initializes CodeHolder to hold code described by the given `environment`, `cpuFeatures`, and `baseAddress`.
703 ASMJIT_API Error init(const Environment& environment, const CpuFeatures& cpuFeatures, uint64_t baseAddress = Globals::kNoBaseAddress) noexcept;
700704 //! Detaches all code-generators attached and resets the `CodeHolder`.
701705 ASMJIT_API void reset(ResetPolicy resetPolicy = ResetPolicy::kSoft) noexcept;
702706
734738 inline Arch arch() const noexcept { return environment().arch(); }
735739 //! Returns the target sub-architecture.
736740 inline SubArch subArch() const noexcept { return environment().subArch(); }
741
742 //! Returns the minimum CPU features of the target architecture.
743 inline const CpuFeatures& cpuFeatures() const noexcept { return _cpuFeatures; }
737744
738745 //! Tests whether a static base-address is set.
739746 inline bool hasBaseAddress() const noexcept { return _baseAddress != Globals::kNoBaseAddress; }
66 #ifndef ASMJIT_NO_COMPILER
77
88 #include "../core/assembler.h"
9 #include "../core/builder_p.h"
910 #include "../core/compiler.h"
1011 #include "../core/cpuinfo.h"
1112 #include "../core/logger.h"
102103 }
103104
104105 Error BaseCompiler::addFuncNode(FuncNode** out, const FuncSignature& signature) {
106 State state = _grabState();
107
105108 ASMJIT_PROPAGATE(newFuncNode(out, signature));
106109 ASMJIT_ASSUME(*out != nullptr);
110
111 BaseBuilder_assignInlineComment(this, *out, state.comment);
107112
108113 addFunc(*out);
109114 return kErrorOk;
126131 }
127132
128133 Error BaseCompiler::addFuncRetNode(FuncRetNode** out, const Operand_& o0, const Operand_& o1) {
134 State state = _grabState();
135
129136 ASMJIT_PROPAGATE(newFuncRetNode(out, o0, o1));
137 ASMJIT_ASSUME(*out != nullptr);
138
139 BaseBuilder_assignInlineComment(this, *out, state.comment);
140
130141 addNode(*out);
131142 return kErrorOk;
132143 }
145156
146157 Error BaseCompiler::endFunc() {
147158 FuncNode* func = _func;
159 resetState();
148160
149161 if (ASMJIT_UNLIKELY(!func))
150162 return reportError(DebugUtils::errored(kErrorInvalidState));
195207 }
196208
197209 Error BaseCompiler::addInvokeNode(InvokeNode** out, InstId instId, const Operand_& o0, const FuncSignature& signature) {
210 State state = _grabState();
211
198212 ASMJIT_PROPAGATE(newInvokeNode(out, instId, o0, signature));
213 ASMJIT_ASSUME(*out != nullptr);
214
215 BaseBuilder_assignInstState(this, *out, state);
199216 addNode(*out);
200217 return kErrorOk;
201218 }
480497 }
481498
482499 Error BaseCompiler::emitAnnotatedJump(InstId instId, const Operand_& o0, JumpAnnotation* annotation) {
483 InstOptions options = instOptions() | forcedInstOptions();
484 RegOnly extra = extraReg();
485 const char* comment = inlineComment();
486
487 resetInstOptions();
488 resetInlineComment();
489 resetExtraReg();
500 State state = _grabState();
490501
491502 JumpNode* node;
492 ASMJIT_PROPAGATE(newJumpNode(&node, instId, options, o0, annotation));
493
494 node->setExtraReg(extra);
495 if (comment)
496 node->setInlineComment(static_cast<char*>(_dataZone.dup(comment, strlen(comment), true)));
503 ASMJIT_PROPAGATE(newJumpNode(&node, instId, state.options, o0, annotation));
504
505 node->setExtraReg(state.extraReg);
506 BaseBuilder_assignInlineComment(this, node, state.comment);
497507
498508 addNode(node);
499509 return kErrorOk;
251251 size_t curOffset;
252252 uint64_t c = 0x0101010101010101u;
253253
254 EXPECT(pool.add(&c, 8, prevOffset) == kErrorOk);
255 EXPECT(prevOffset == 0);
254 EXPECT_EQ(pool.add(&c, 8, prevOffset), kErrorOk);
255 EXPECT_EQ(prevOffset, 0u);
256256
257257 for (i = 1; i < kCount; i++) {
258258 c++;
259 EXPECT(pool.add(&c, 8, curOffset) == kErrorOk);
260 EXPECT(prevOffset + 8 == curOffset);
261 EXPECT(pool.size() == (i + 1) * 8);
259 EXPECT_EQ(pool.add(&c, 8, curOffset), kErrorOk);
260 EXPECT_EQ(prevOffset + 8, curOffset);
261 EXPECT_EQ(pool.size(), (i + 1) * 8);
262262 prevOffset = curOffset;
263263 }
264264
265 EXPECT(pool.alignment() == 8);
265 EXPECT_EQ(pool.alignment(), 8u);
266266 }
267267
268268 INFO("Retrieving %u constants from the pool", kCount);
271271
272272 for (i = 0; i < kCount; i++) {
273273 size_t offset;
274 EXPECT(pool.add(&c, 8, offset) == kErrorOk);
275 EXPECT(offset == i * 8);
274 EXPECT_EQ(pool.add(&c, 8, offset), kErrorOk);
275 EXPECT_EQ(offset, i * 8);
276276 c++;
277277 }
278278 }
282282 uint32_t c = 0x01010101;
283283 for (i = 0; i < kCount; i++) {
284284 size_t offset;
285 EXPECT(pool.add(&c, 4, offset) == kErrorOk);
286 EXPECT(offset == i * 8);
285 EXPECT_EQ(pool.add(&c, 4, offset), kErrorOk);
286 EXPECT_EQ(offset, i * 8);
287287 c++;
288288 }
289289 }
293293 uint16_t c = 0xFFFF;
294294 size_t offset;
295295
296 EXPECT(pool.add(&c, 2, offset) == kErrorOk);
297 EXPECT(offset == kCount * 8);
298 EXPECT(pool.alignment() == 8);
296 EXPECT_EQ(pool.add(&c, 2, offset), kErrorOk);
297 EXPECT_EQ(offset, kCount * 8);
298 EXPECT_EQ(pool.alignment(), 8u);
299299 }
300300
301301 INFO("Adding 8 byte constant to check if pool gets aligned again");
303303 uint64_t c = 0xFFFFFFFFFFFFFFFFu;
304304 size_t offset;
305305
306 EXPECT(pool.add(&c, 8, offset) == kErrorOk);
307 EXPECT(offset == kCount * 8 + 8);
306 EXPECT_EQ(pool.add(&c, 8, offset), kErrorOk);
307 EXPECT_EQ(offset, kCount * 8 + 8u);
308308 }
309309
310310 INFO("Adding 2 byte constant to verify the gap is filled");
312312 uint16_t c = 0xFFFE;
313313 size_t offset;
314314
315 EXPECT(pool.add(&c, 2, offset) == kErrorOk);
316 EXPECT(offset == kCount * 8 + 2);
317 EXPECT(pool.alignment() == 8);
315 EXPECT_EQ(pool.add(&c, 2, offset), kErrorOk);
316 EXPECT_EQ(offset, kCount * 8 + 2);
317 EXPECT_EQ(pool.alignment(), 8u);
318318 }
319319
320320 INFO("Checking reset functionality");
322322 pool.reset(&zone);
323323 zone.reset();
324324
325 EXPECT(pool.size() == 0);
326 EXPECT(pool.alignment() == 0);
325 EXPECT_EQ(pool.size(), 0u);
326 EXPECT_EQ(pool.alignment(), 0u);
327327 }
328328
329329 INFO("Checking pool alignment when combined constants are added");
332332 size_t offset;
333333
334334 pool.add(bytes, 1, offset);
335 EXPECT(pool.size() == 1);
336 EXPECT(pool.alignment() == 1);
337 EXPECT(offset == 0);
335 EXPECT_EQ(pool.size(), 1u);
336 EXPECT_EQ(pool.alignment(), 1u);
337 EXPECT_EQ(offset, 0u);
338338
339339 pool.add(bytes, 2, offset);
340 EXPECT(pool.size() == 4);
341 EXPECT(pool.alignment() == 2);
342 EXPECT(offset == 2);
340 EXPECT_EQ(pool.size(), 4u);
341 EXPECT_EQ(pool.alignment(), 2u);
342 EXPECT_EQ(offset, 2u);
343343
344344 pool.add(bytes, 4, offset);
345 EXPECT(pool.size() == 8);
346 EXPECT(pool.alignment() == 4);
347 EXPECT(offset == 4);
345 EXPECT_EQ(pool.size(), 8u);
346 EXPECT_EQ(pool.alignment(), 4u);
347 EXPECT_EQ(offset, 4u);
348348
349349 pool.add(bytes, 4, offset);
350 EXPECT(pool.size() == 8);
351 EXPECT(pool.alignment() == 4);
352 EXPECT(offset == 4);
350 EXPECT_EQ(pool.size(), 8u);
351 EXPECT_EQ(pool.alignment(), 4u);
352 EXPECT_EQ(offset, 4u);
353353
354354 pool.add(bytes, 32, offset);
355 EXPECT(pool.size() == 64);
356 EXPECT(pool.alignment() == 32);
357 EXPECT(offset == 32);
355 EXPECT_EQ(pool.size(), 64u);
356 EXPECT_EQ(pool.alignment(), 32u);
357 EXPECT_EQ(offset, 32u);
358358 }
359359 }
360360 #endif
221221 features.addIf(bitTest(regs.edx, 19), CpuFeatures::X86::kCLFLUSH);
222222 features.addIf(bitTest(regs.edx, 23), CpuFeatures::X86::kMMX);
223223 features.addIf(bitTest(regs.edx, 24), CpuFeatures::X86::kFXSR);
224 features.addIf(bitTest(regs.edx, 25), CpuFeatures::X86::kSSE);
225 features.addIf(bitTest(regs.edx, 25), CpuFeatures::X86::kSSE, CpuFeatures::X86::kSSE2);
224 features.addIf(bitTest(regs.edx, 25), CpuFeatures::X86::kSSE, CpuFeatures::X86::kMMX2);
225 features.addIf(bitTest(regs.edx, 25), CpuFeatures::X86::kSSE2, CpuFeatures::X86::kSSE);
226226 features.addIf(bitTest(regs.edx, 28), CpuFeatures::X86::kMT);
227227
228228 // Get the content of XCR0 if supported by the CPU and enabled by the OS.
294294 features.addIf(bitTest(regs.ecx, 27), CpuFeatures::X86::kMOVDIRI);
295295 features.addIf(bitTest(regs.ecx, 28), CpuFeatures::X86::kMOVDIR64B);
296296 features.addIf(bitTest(regs.ecx, 29), CpuFeatures::X86::kENQCMD);
297 features.addIf(bitTest(regs.edx, 4), CpuFeatures::X86::kFSRM);
297298 features.addIf(bitTest(regs.edx, 5), CpuFeatures::X86::kUINTR);
298299 features.addIf(bitTest(regs.edx, 14), CpuFeatures::X86::kSERIALIZE);
299300 features.addIf(bitTest(regs.edx, 16), CpuFeatures::X86::kTSXLDTRK);
301302 features.addIf(bitTest(regs.edx, 20), CpuFeatures::X86::kCET_IBT);
302303
303304 // Detect 'TSX' - Requires at least one of `HLE` and `RTM` features.
304 if (features.hasHLE() || features.hasRTM())
305 if (features.hasHLE() || features.hasRTM()) {
305306 features.add(CpuFeatures::X86::kTSX);
306
307 // Detect 'AVX2' - Requires AVX as well.
308 if (bitTest(regs.ebx, 5) && features.hasAVX())
307 }
308
309 if (bitTest(regs.ebx, 5) && features.hasAVX()) {
309310 features.add(CpuFeatures::X86::kAVX2);
310
311 // Detect 'AVX512'.
311 }
312
312313 if (avx512EnabledByOS && bitTest(regs.ebx, 16)) {
313314 features.add(CpuFeatures::X86::kAVX512_F);
314315
330331 features.addIf(bitTest(regs.edx, 23), CpuFeatures::X86::kAVX512_FP16);
331332 }
332333
333 // Detect 'AMX'.
334334 if (amxEnabledByOS) {
335335 features.addIf(bitTest(regs.edx, 22), CpuFeatures::X86::kAMX_BF16);
336336 features.addIf(bitTest(regs.edx, 24), CpuFeatures::X86::kAMX_TILE);
341341 // CPUID EAX=7 ECX=1
342342 // -----------------
343343
344 if (features.hasAVX512_F() && maxSubLeafId_0x7 >= 1) {
344 if (maxSubLeafId_0x7 >= 1) {
345345 cpuidQuery(&regs, 0x7, 1);
346346
347 features.addIf(bitTest(regs.eax, 3), CpuFeatures::X86::kAVX_VNNI);
348 features.addIf(bitTest(regs.eax, 5), CpuFeatures::X86::kAVX512_BF16);
347 features.addIf(bitTest(regs.eax, 3), CpuFeatures::X86::kRAO_INT);
348 features.addIf(bitTest(regs.eax, 7), CpuFeatures::X86::kCMPCCXADD);
349 features.addIf(bitTest(regs.eax, 10), CpuFeatures::X86::kFZRM);
350 features.addIf(bitTest(regs.eax, 11), CpuFeatures::X86::kFSRS);
351 features.addIf(bitTest(regs.eax, 12), CpuFeatures::X86::kFSRC);
352 features.addIf(bitTest(regs.eax, 19), CpuFeatures::X86::kWRMSRNS);
349353 features.addIf(bitTest(regs.eax, 22), CpuFeatures::X86::kHRESET);
354 features.addIf(bitTest(regs.eax, 26), CpuFeatures::X86::kLAM);
355 features.addIf(bitTest(regs.eax, 27), CpuFeatures::X86::kMSRLIST);
356 features.addIf(bitTest(regs.edx, 14), CpuFeatures::X86::kPREFETCHI);
357 features.addIf(bitTest(regs.edx, 18), CpuFeatures::X86::kCET_SSS);
358
359 if (features.hasAVX2()) {
360 features.addIf(bitTest(regs.eax, 4), CpuFeatures::X86::kAVX_VNNI);
361 features.addIf(bitTest(regs.eax, 23), CpuFeatures::X86::kAVX_IFMA);
362 features.addIf(bitTest(regs.edx, 4), CpuFeatures::X86::kAVX_VNNI_INT8);
363 features.addIf(bitTest(regs.edx, 5), CpuFeatures::X86::kAVX_NE_CONVERT);
364 }
365
366 if (features.hasAVX512_F()) {
367 features.addIf(bitTest(regs.eax, 5), CpuFeatures::X86::kAVX512_BF16);
368 }
369
370 if (amxEnabledByOS) {
371 features.addIf(bitTest(regs.eax, 21), CpuFeatures::X86::kAMX_FP16);
372 }
350373 }
351374
352375 // CPUID EAX=13 ECX=0
174174 kAESNI, //!< CPU has AESNI (AES encode/decode instructions).
175175 kALTMOVCR8, //!< CPU has LOCK MOV R<->CR0 (supports `MOV R<->CR8` via `LOCK MOV R<->CR0` in 32-bit mode) [AMD].
176176 kAMX_BF16, //!< CPU has AMX_BF16 (advanced matrix extensions - BF16 instructions).
177 kAMX_FP16, //!< CPU has AMX_FP16 (advanced matrix extensions - FP16 instructions).
177178 kAMX_INT8, //!< CPU has AMX_INT8 (advanced matrix extensions - INT8 instructions).
178179 kAMX_TILE, //!< CPU has AMX_TILE (advanced matrix extensions).
179180 kAVX, //!< CPU has AVX (advanced vector extensions).
196197 kAVX512_VNNI, //!< CPU has AVX512_VNNI (vector neural network instructions).
197198 kAVX512_VP2INTERSECT, //!< CPU has AVX512_VP2INTERSECT
198199 kAVX512_VPOPCNTDQ, //!< CPU has AVX512_VPOPCNTDQ (VPOPCNT[D|Q] instructions).
200 kAVX_IFMA, //!< CPU has AVX_IFMA (VEX encoding of vpmadd52huq/vpmadd52luq).
201 kAVX_NE_CONVERT, //!< CPU has AVX_NE_CONVERT.
199202 kAVX_VNNI, //!< CPU has AVX_VNNI (VEX encoding of vpdpbusd/vpdpbusds/vpdpwssd/vpdpwssds).
203 kAVX_VNNI_INT8, //!< CPU has AVX_VNNI_INT8.
200204 kBMI, //!< CPU has BMI (bit manipulation instructions #1).
201205 kBMI2, //!< CPU has BMI2 (bit manipulation instructions #2).
202206 kCET_IBT, //!< CPU has CET-IBT (indirect branch tracking).
203207 kCET_SS, //!< CPU has CET-SS.
208 kCET_SSS, //!< CPU has CET-SSS.
204209 kCLDEMOTE, //!< CPU has CLDEMOTE (cache line demote).
205210 kCLFLUSH, //!< CPU has CLFUSH (Cache Line flush).
206211 kCLFLUSHOPT, //!< CPU has CLFUSHOPT (Cache Line flush - optimized).
207212 kCLWB, //!< CPU has CLWB.
208213 kCLZERO, //!< CPU has CLZERO.
209214 kCMOV, //!< CPU has CMOV (CMOV and FCMOV instructions).
215 kCMPCCXADD, //!< CPU has CMPCCXADD.
210216 kCMPXCHG16B, //!< CPU has CMPXCHG16B (compare-exchange 16 bytes) [X86_64].
211217 kCMPXCHG8B, //!< CPU has CMPXCHG8B (compare-exchange 8 bytes).
212218 kENCLV, //!< CPU has ENCLV.
217223 kFMA4, //!< CPU has FMA4 (fused-multiply-add 4 operand form).
218224 kFPU, //!< CPU has FPU (FPU support).
219225 kFSGSBASE, //!< CPU has FSGSBASE.
226 kFSRM, //!< CPU has FSRM (fast short REP MOVSB).
227 kFSRC, //!< CPU has FSRC (fast short REP CMPSB|SCASB).
228 kFSRS, //!< CPU has FSRS (fast short REP STOSB)
220229 kFXSR, //!< CPU has FXSR (FXSAVE/FXRSTOR instructions).
221230 kFXSROPT, //!< CPU has FXSROTP (FXSAVE/FXRSTOR is optimized).
231 kFZRM, //!< CPU has FZRM (fast zero-length REP MOVSB).
222232 kGEODE, //!< CPU has GEODE extensions (3DNOW additions).
223233 kGFNI, //!< CPU has GFNI (Galois field instructions).
224234 kHLE, //!< CPU has HLE.
225235 kHRESET, //!< CPU has HRESET.
226236 kI486, //!< CPU has I486 features (I486+ support).
227237 kLAHFSAHF, //!< CPU has LAHF/SAHF (LAHF/SAHF in 64-bit mode) [X86_64].
238 kLAM, //!< CPU has LAM (linear address masking) [X86_64].
228239 kLWP, //!< CPU has LWP (lightweight profiling) [AMD].
229240 kLZCNT, //!< CPU has LZCNT (LZCNT instruction).
230241 kMCOMMIT, //!< CPU has MCOMMIT (MCOMMIT instruction).
237248 kMOVDIRI, //!< CPU has MOVDIRI (move dword/qword as direct store).
238249 kMPX, //!< CPU has MPX (memory protection extensions).
239250 kMSR, //!< CPU has MSR (RDMSR/WRMSR instructions).
251 kMSRLIST, //!< CPU has MSRLIST.
240252 kMSSE, //!< CPU has MSSE (misaligned SSE support).
241253 kOSXSAVE, //!< CPU has OSXSAVE (XSAVE enabled by OS).
242254 kOSPKE, //!< CPU has OSPKE (PKE enabled by OS).
243255 kPCLMULQDQ, //!< CPU has PCLMULQDQ (packed carry-less multiplication).
244256 kPCONFIG, //!< CPU has PCONFIG (PCONFIG instruction).
245257 kPOPCNT, //!< CPU has POPCNT (POPCNT instruction).
258 kPREFETCHI, //!< CPU has PREFETCHI.
246259 kPREFETCHW, //!< CPU has PREFETCHW.
247260 kPREFETCHWT1, //!< CPU has PREFETCHWT1.
248261 kPTWRITE, //!< CPU has PTWRITE.
262 kRAO_INT, //!< CPU has RAO_INT.
249263 kRDPID, //!< CPU has RDPID.
250264 kRDPRU, //!< CPU has RDPRU.
251265 kRDRAND, //!< CPU has RDRAND.
277291 kVPCLMULQDQ, //!< CPU has VPCLMULQDQ (vector PCLMULQDQ 256|512-bit support).
278292 kWAITPKG, //!< CPU has WAITPKG (UMONITOR, UMWAIT, TPAUSE).
279293 kWBNOINVD, //!< CPU has WBNOINVD.
294 kWRMSRNS, //!< CPU has WRMSRNS.
280295 kXOP, //!< CPU has XOP (XOP instructions) [AMD].
281296 kXSAVE, //!< CPU has XSAVE.
282297 kXSAVEC, //!< CPU has XSAVEC.
298313 ASMJIT_X86_FEATURE(AESNI)
299314 ASMJIT_X86_FEATURE(ALTMOVCR8)
300315 ASMJIT_X86_FEATURE(AMX_BF16)
316 ASMJIT_X86_FEATURE(AMX_FP16)
301317 ASMJIT_X86_FEATURE(AMX_INT8)
302318 ASMJIT_X86_FEATURE(AMX_TILE)
303319 ASMJIT_X86_FEATURE(AVX)
320336 ASMJIT_X86_FEATURE(AVX512_VNNI)
321337 ASMJIT_X86_FEATURE(AVX512_VP2INTERSECT)
322338 ASMJIT_X86_FEATURE(AVX512_VPOPCNTDQ)
339 ASMJIT_X86_FEATURE(AVX_IFMA)
340 ASMJIT_X86_FEATURE(AVX_NE_CONVERT)
323341 ASMJIT_X86_FEATURE(AVX_VNNI)
342 ASMJIT_X86_FEATURE(AVX_VNNI_INT8)
324343 ASMJIT_X86_FEATURE(BMI)
325344 ASMJIT_X86_FEATURE(BMI2)
326345 ASMJIT_X86_FEATURE(CET_IBT)
327346 ASMJIT_X86_FEATURE(CET_SS)
347 ASMJIT_X86_FEATURE(CET_SSS)
328348 ASMJIT_X86_FEATURE(CLDEMOTE)
329349 ASMJIT_X86_FEATURE(CLFLUSH)
330350 ASMJIT_X86_FEATURE(CLFLUSHOPT)
341361 ASMJIT_X86_FEATURE(FMA4)
342362 ASMJIT_X86_FEATURE(FPU)
343363 ASMJIT_X86_FEATURE(FSGSBASE)
364 ASMJIT_X86_FEATURE(FSRM)
365 ASMJIT_X86_FEATURE(FSRC)
366 ASMJIT_X86_FEATURE(FSRS)
344367 ASMJIT_X86_FEATURE(FXSR)
345368 ASMJIT_X86_FEATURE(FXSROPT)
369 ASMJIT_X86_FEATURE(FZRM)
346370 ASMJIT_X86_FEATURE(GEODE)
347371 ASMJIT_X86_FEATURE(GFNI)
348372 ASMJIT_X86_FEATURE(HLE)
349373 ASMJIT_X86_FEATURE(HRESET)
350374 ASMJIT_X86_FEATURE(I486)
351375 ASMJIT_X86_FEATURE(LAHFSAHF)
376 ASMJIT_X86_FEATURE(LAM)
352377 ASMJIT_X86_FEATURE(LWP)
353378 ASMJIT_X86_FEATURE(LZCNT)
354379 ASMJIT_X86_FEATURE(MCOMMIT)
361386 ASMJIT_X86_FEATURE(MOVDIRI)
362387 ASMJIT_X86_FEATURE(MPX)
363388 ASMJIT_X86_FEATURE(MSR)
389 ASMJIT_X86_FEATURE(MSRLIST)
364390 ASMJIT_X86_FEATURE(MSSE)
365391 ASMJIT_X86_FEATURE(OSXSAVE)
366392 ASMJIT_X86_FEATURE(OSPKE)
367393 ASMJIT_X86_FEATURE(PCLMULQDQ)
368394 ASMJIT_X86_FEATURE(PCONFIG)
369395 ASMJIT_X86_FEATURE(POPCNT)
396 ASMJIT_X86_FEATURE(PREFETCHI)
370397 ASMJIT_X86_FEATURE(PREFETCHW)
371398 ASMJIT_X86_FEATURE(PREFETCHWT1)
372399 ASMJIT_X86_FEATURE(PTWRITE)
400 ASMJIT_X86_FEATURE(RAO_INT)
373401 ASMJIT_X86_FEATURE(RDPID)
374402 ASMJIT_X86_FEATURE(RDPRU)
375403 ASMJIT_X86_FEATURE(RDRAND)
401429 ASMJIT_X86_FEATURE(VPCLMULQDQ)
402430 ASMJIT_X86_FEATURE(WAITPKG)
403431 ASMJIT_X86_FEATURE(WBNOINVD)
432 ASMJIT_X86_FEATURE(WRMSRNS)
404433 ASMJIT_X86_FEATURE(XOP)
405434 ASMJIT_X86_FEATURE(XSAVE)
406435 ASMJIT_X86_FEATURE(XSAVEC)
232232 //! Native GP register signature and signature related information.
233233 OperandSignature _gpSignature {};
234234
235 //! Emitter state that can be used to specify options and inline comment of a next node or instruction.
236 struct State {
237 InstOptions options;
238 RegOnly extraReg;
239 const char* comment;
240 };
241
235242 //! Next instruction options (affects the next instruction).
236243 InstOptions _instOptions = InstOptions::kNone;
237244 //! Extra register (op-mask {k} on AVX-512) (affects the next instruction).
526533 inline void setInlineComment(const char* s) noexcept { _inlineComment = s; }
527534 //! Resets the comment/annotation to nullptr.
528535 inline void resetInlineComment() noexcept { _inlineComment = nullptr; }
536
537 //! \}
538
539 //! \name Emitter State
540 //! \{
541
542 inline void resetState() noexcept {
543 resetInstOptions();
544 resetExtraReg();
545 resetInlineComment();
546 }
547
548 inline State _grabState() noexcept {
549 State s{_instOptions | _forcedInstOptions, _extraReg, _inlineComment};
550 resetState();
551 return s;
552 }
529553
530554 //! \}
531555
115115 sb.append(self->inlineComment());
116116 }
117117
118 self->resetInstOptions();
119 self->resetExtraReg();
120 self->resetInlineComment();
118 self->resetState();
121119 return self->reportError(err, sb.data());
122120 }
123121
6060 //! SimpleErrorHandler eh;
6161 //!
6262 //! CodeHolder code;
63 //! code.init(rt.environment());
63 //! code.init(rt.environment(), rt.cpuFeatures());
6464 //! code.setErrorHandler(&eh);
6565 //!
6666 //! // Try to emit instruction that doesn't exist.
116116 //! ThrowableErrorHandler eh;
117117 //!
118118 //! CodeHolder code;
119 //! code.init(rt.environment());
119 //! code.init(rt.environment(), rt.cpuFeatures());
120120 //! code.setErrorHandler(&eh);
121121 //!
122122 //! x86::Assembler a(&code);
165165 //! LongJmpErrorHandler eh;
166166 //!
167167 //! CodeHolder code;
168 //! code.init(rt.rt.environment());
168 //! code.init(rt.environment(), rt.cpuFeatures());
169169 //! code.setErrorHandler(&eh);
170170 //!
171171 //! x86::Assembler a(&code);
122122
123123 DebugUtils::unused(formatFlags);
124124
125 const LabelEntry* le = emitter->code()->labelEntry(labelId);
126 if (ASMJIT_UNLIKELY(!le))
127 return sb.appendFormat("<InvalidLabel:%u>", labelId);
128
129 if (le->hasName()) {
130 if (le->hasParent()) {
131 uint32_t parentId = le->parentId();
132 const LabelEntry* pe = emitter->code()->labelEntry(parentId);
133
134 if (ASMJIT_UNLIKELY(!pe))
135 ASMJIT_PROPAGATE(sb.appendFormat("<InvalidLabel:%u>", labelId));
136 else if (ASMJIT_UNLIKELY(!pe->hasName()))
137 ASMJIT_PROPAGATE(sb.appendFormat("L%u", parentId));
138 else
139 ASMJIT_PROPAGATE(sb.append(pe->name()));
140
141 ASMJIT_PROPAGATE(sb.append('.'));
142 }
143
144 if (le->type() == LabelType::kAnonymous)
145 ASMJIT_PROPAGATE(sb.appendFormat("L%u@", labelId));
146 return sb.append(le->name());
147 }
148 else {
149 return sb.appendFormat("L%u", labelId);
150 }
125 if (emitter && emitter->code()) {
126 const LabelEntry* le = emitter->code()->labelEntry(labelId);
127 if (ASMJIT_UNLIKELY(!le))
128 return sb.appendFormat("<InvalidLabel:%u>", labelId);
129
130 if (le->hasName()) {
131 if (le->hasParent()) {
132 uint32_t parentId = le->parentId();
133 const LabelEntry* pe = emitter->code()->labelEntry(parentId);
134
135 if (ASMJIT_UNLIKELY(!pe))
136 ASMJIT_PROPAGATE(sb.appendFormat("<InvalidLabel:%u>", labelId));
137 else if (ASMJIT_UNLIKELY(!pe->hasName()))
138 ASMJIT_PROPAGATE(sb.appendFormat("L%u", parentId));
139 else
140 ASMJIT_PROPAGATE(sb.append(pe->name()));
141
142 ASMJIT_PROPAGATE(sb.append('.'));
143 }
144
145 if (le->type() == LabelType::kAnonymous)
146 ASMJIT_PROPAGATE(sb.appendFormat("L%u@", labelId));
147 return sb.append(le->name());
148 }
149 }
150
151 return sb.appendFormat("L%u", labelId);
151152 }
152153
153154 Error formatRegister(
470471
471472 case NodeType::kComment: {
472473 const CommentNode* commentNode = node->as<CommentNode>();
473 ASMJIT_PROPAGATE(sb.appendFormat("; %s", commentNode->inlineComment()));
474 break;
474 return sb.appendFormat("; %s", commentNode->inlineComment());
475475 }
476476
477477 case NodeType::kSentinel: {
11191119 inline uint32_t redZoneSize() const noexcept { return _redZoneSize; }
11201120 //! Returns the size of 'SpillZone'.
11211121 inline uint32_t spillZoneSize() const noexcept { return _spillZoneSize; }
1122
1123 //! Resets the size of red zone, which would disable it entirely.
1124 //!
1125 //! \note Red zone is currently only used by an AMD64 SystemV calling convention, which expects 128
1126 //! bytes of stack to be accessible below stack pointer. These bytes are then accessible within the
1127 //! function and Compiler can use this space as a spill area. However, sometimes it's better to
1128 //! disallow the use of red zone in case that a user wants to use this stack for a custom purpose.
1129 inline void resetRedZone() noexcept { _redZoneSize = 0; }
1130
11221131 //! Returns natural stack alignment (guaranteed stack alignment upon entry).
11231132 inline uint32_t naturalStackAlignment() const noexcept { return _naturalStackAlignment; }
11241133 //! Returns natural stack alignment (guaranteed stack alignment upon entry).
404404
405405 //! The `extendByteMask()` represents a zero extension.
406406 kZExt = 0x00000010u,
407
408 //! The register must have assigned a unique physical ID, which cannot be assigned to any other register.
409 kUnique = 0x00000080u,
407410
408411 //! Register operand must use \ref OpRWInfo::physId().
409412 kRegPhysId = 0x00000100u,
531534 //! Tests whether the operand will be zero extended.
532535 inline bool isZExt() const noexcept { return hasOpFlag(OpRWFlags::kZExt); }
533536
537 //! Tests whether the operand must have allocated a unique physical id that cannot be shared with other register
538 //! operands.
539 inline bool isUnique() const noexcept { return hasOpFlag(OpRWFlags::kUnique); }
540
534541 //! \}
535542
536543 //! \name Memory Flags
429429 if (ASMJIT_UNLIKELY(!p))
430430 return nullptr;
431431
432 VirtMem::HardenedRuntimeInfo hardenedRtInfo = VirtMem::hardenedRuntimeInfo();
433 if (Support::test(hardenedRtInfo.flags, VirtMem::HardenedRuntimeFlags::kEnabled)) {
434 // If we are running within a hardened environment (mapping RWX is not allowed) then we have to use dual mapping
435 // or other runtime capabilities like Apple specific MAP_JIT. There is no point in not enabling these as otherwise
436 // the allocation would fail and JitAllocator would not be able to allocate memory.
437 if (!Support::test(hardenedRtInfo.flags, VirtMem::HardenedRuntimeFlags::kMapJit))
438 options |= JitAllocatorOptions::kUseDualMapping;
439 }
440
432441 JitAllocatorPool* pools = reinterpret_cast<JitAllocatorPool*>((uint8_t*)p + sizeof(JitAllocatorPrivateImpl));
433442 JitAllocatorPrivateImpl* impl = new(p) JitAllocatorPrivateImpl(pools, poolCount);
434443
496505 //
497506 // NOTE: The block doesn't have `kFlagEmpty` flag set, because the new block
498507 // is only allocated when it's actually needed, so it would be cleared anyway.
499 static JitAllocatorBlock* JitAllocatorImpl_newBlock(JitAllocatorPrivateImpl* impl, JitAllocatorPool* pool, size_t blockSize) noexcept {
508 static Error JitAllocatorImpl_newBlock(JitAllocatorPrivateImpl* impl, JitAllocatorBlock** dst, JitAllocatorPool* pool, size_t blockSize) noexcept {
500509 using Support::BitWord;
501510 using Support::kBitWordSizeInBits;
502511
531540 if (block)
532541 ::free(block);
533542
534 return nullptr;
543 if (err)
544 return err;
545 else
546 return DebugUtils::errored(kErrorOutOfMemory);
535547 }
536548
537549 // Fill the memory if the secure mode is enabled.
541553 }
542554
543555 memset(bitWords, 0, size_t(numBitWords) * 2 * sizeof(BitWord));
544 return new(block) JitAllocatorBlock(pool, virtMem, blockSize, blockFlags, bitWords, bitWords + numBitWords, areaSize);
556 *dst = new(block) JitAllocatorBlock(pool, virtMem, blockSize, blockFlags, bitWords, bitWords + numBitWords, areaSize);
557 return kErrorOk;
545558 }
546559
547560 static void JitAllocatorImpl_deleteBlock(JitAllocatorPrivateImpl* impl, JitAllocatorBlock* block) noexcept {
788801 if (ASMJIT_UNLIKELY(!blockSize))
789802 return DebugUtils::errored(kErrorOutOfMemory);
790803
791 block = JitAllocatorImpl_newBlock(impl, pool, blockSize);
804 ASMJIT_PROPAGATE(JitAllocatorImpl_newBlock(impl, &block, pool, blockSize));
792805 areaIndex = 0;
793
794 if (ASMJIT_UNLIKELY(!block))
795 return DebugUtils::errored(kErrorOutOfMemory);
796806
797807 JitAllocatorImpl_insertBlock(impl, block);
798808 block->_searchStart = areaSize;
905915 block->markShrunkArea(areaStart + areaShrunkSize, areaEnd);
906916
907917 // Fill released memory if the secure mode is enabled.
908 if (Support::test(impl->options, JitAllocatorOptions::kFillUnusedMemory))
909 JitAllocatorImpl_fillPattern(block->rwPtr() + (areaStart + areaShrunkSize) * pool->granularity, fillPattern(), areaDiff * pool->granularity);
918 if (Support::test(impl->options, JitAllocatorOptions::kFillUnusedMemory)) {
919 uint8_t* spanPtr = block->rwPtr() + (areaStart + areaShrunkSize) * pool->granularity;
920 size_t spanSize = areaDiff * pool->granularity;
921
922 VirtMem::ProtectJitReadWriteScope scope(spanPtr, spanSize);
923 JitAllocatorImpl_fillPattern(spanPtr, fillPattern(), spanSize);
924 }
910925 }
911926
912927 return kErrorOk;
10021017
10031018 uint64_t _state[2];
10041019 };
1020
1021 namespace JitAllocatorUtils {
1022 static void fillPattern64(void* p_, uint64_t pattern, size_t sizeInBytes) noexcept {
1023 uint64_t* p = static_cast<uint64_t*>(p_);
1024 size_t n = sizeInBytes / 8u;
1025
1026 for (size_t i = 0; i < n; i++)
1027 p[i] = pattern;
1028 }
1029
1030 static bool verifyPattern64(const void* p_, uint64_t pattern, size_t sizeInBytes) noexcept {
1031 const uint64_t* p = static_cast<const uint64_t*>(p_);
1032 size_t n = sizeInBytes / 8u;
1033
1034 for (size_t i = 0; i < n; i++) {
1035 if (p[i] != pattern) {
1036 INFO("Pattern verification failed at 0x%p [%zu * 8]: value(0x%016llX) != expected(0x%016llX)",
1037 p,
1038 i,
1039 (unsigned long long)p[i],
1040 (unsigned long long)pattern);
1041 return false;
1042 }
1043 }
1044
1045 return true;
1046 }
1047 }
10051048
10061049 // Helper class to verify that JitAllocator doesn't return addresses that overlap.
10071050 class JitAllocatorWrapper {
10201063 class Record : public ZoneTreeNodeT<Record>,
10211064 public Range {
10221065 public:
1023 inline Record(uint8_t* addr, size_t size)
1066 //! Read/write address, in case this is a dual mapping.
1067 void* _rw;
1068 //! Describes a pattern used to fill the allocated memory.
1069 uint64_t pattern;
1070
1071 inline Record(void* rx, void* rw, size_t size, uint64_t pattern)
10241072 : ZoneTreeNodeT<Record>(),
1025 Range(addr, size) {}
1073 Range(static_cast<uint8_t*>(rx), size),
1074 _rw(rw),
1075 pattern(pattern) {}
1076
1077 inline void* rx() const noexcept { return addr; }
1078 inline void* rw() const noexcept { return _rw; }
10261079
10271080 inline bool operator<(const Record& other) const noexcept { return addr < other.addr; }
10281081 inline bool operator>(const Record& other) const noexcept { return addr > other.addr; }
10351088 ZoneAllocator _heap;
10361089 ZoneTree<Record> _records;
10371090 JitAllocator _allocator;
1091 Random _rng;
10381092
10391093 explicit JitAllocatorWrapper(const JitAllocator::CreateParams* params) noexcept
10401094 : _zone(1024 * 1024),
10411095 _heap(&_zone),
1042 _allocator(params) {}
1043
1044 void _insert(void* p_, size_t size) noexcept {
1045 uint8_t* p = static_cast<uint8_t*>(p_);
1096 _allocator(params),
1097 _rng(0x123456789u) {}
1098
1099 void _insert(void* pRX, void* pRW, size_t size) noexcept {
1100 uint8_t* p = static_cast<uint8_t*>(pRX);
10461101 uint8_t* pEnd = p + size - 1;
10471102
10481103 Record* record;
10491104
10501105 record = _records.get(p);
1051 if (record)
1052 EXPECT(record == nullptr, "Address [%p:%p] collides with a newly allocated [%p:%p]\n", record->addr, record->addr + record->size, p, p + size);
1106 EXPECT_NULL(record)
1107 .message("Address [%p:%p] collides with a newly allocated [%p:%p]\n", record->addr, record->addr + record->size, p, p + size);
10531108
10541109 record = _records.get(pEnd);
1055 if (record)
1056 EXPECT(record == nullptr, "Address [%p:%p] collides with a newly allocated [%p:%p]\n", record->addr, record->addr + record->size, p, p + size);
1057
1058 record = _heap.newT<Record>(p, size);
1059 EXPECT(record != nullptr, "Out of memory, cannot allocate 'Record'");
1110 EXPECT_NULL(record)
1111 .message("Address [%p:%p] collides with a newly allocated [%p:%p]\n", record->addr, record->addr + record->size, p, p + size);
1112
1113 uint64_t pattern = _rng.nextUInt64();
1114 record = _heap.newT<Record>(pRX, pRW, size, pattern);
1115 EXPECT_NOT_NULL(record);
1116
1117 {
1118 VirtMem::ProtectJitReadWriteScope scope(pRW, size);
1119 JitAllocatorUtils::fillPattern64(pRW, pattern, size);
1120 }
1121
1122 VirtMem::flushInstructionCache(pRX, size);
1123 EXPECT_TRUE(JitAllocatorUtils::verifyPattern64(pRX, pattern, size));
10601124
10611125 _records.insert(record);
10621126 }
10631127
10641128 void _remove(void* p) noexcept {
10651129 Record* record = _records.get(static_cast<uint8_t*>(p));
1066 EXPECT(record != nullptr, "Address [%p] doesn't exist\n", p);
1130 EXPECT_NOT_NULL(record);
1131
1132 EXPECT_TRUE(JitAllocatorUtils::verifyPattern64(record->rx(), record->pattern, record->size));
1133 EXPECT_TRUE(JitAllocatorUtils::verifyPattern64(record->rw(), record->pattern, record->size));
10671134
10681135 _records.remove(record);
10691136 _heap.release(record, sizeof(Record));
10741141 void* rwPtr;
10751142
10761143 Error err = _allocator.alloc(&rxPtr, &rwPtr, size);
1077 EXPECT(err == kErrorOk, "JitAllocator failed to allocate %zu bytes\n", size);
1078
1079 _insert(rxPtr, size);
1144 EXPECT_EQ(err, kErrorOk)
1145 .message("JitAllocator failed to allocate %zu bytes\n", size);
1146
1147 _insert(rxPtr, rwPtr, size);
10801148 return rxPtr;
10811149 }
10821150
10831151 void release(void* p) noexcept {
10841152 _remove(p);
1085 EXPECT(_allocator.release(p) == kErrorOk, "JitAllocator failed to release '%p'\n", p);
1153 EXPECT_EQ(_allocator.release(p), kErrorOk)
1154 .message("JitAllocator failed to release '%p'\n", p);
10861155 }
10871156
10881157 void shrink(void* p, size_t newSize) noexcept {
10891158 Record* record = _records.get(static_cast<uint8_t*>(p));
1090 EXPECT(record != nullptr, "Address [%p] doesn't exist\n", p);
1159 EXPECT_NOT_NULL(record);
10911160
10921161 if (!newSize)
10931162 return release(p);
10941163
10951164 Error err = _allocator.shrink(p, newSize);
1096 EXPECT(err == kErrorOk, "JitAllocator failed to shrink %p to %zu bytes\n", p, newSize);
1165 EXPECT_EQ(err, kErrorOk)
1166 .message("JitAllocator failed to shrink %p to %zu bytes\n", p, newSize);
10971167
10981168 record->size = newSize;
10991169 }
11351205 }
11361206
11371207 for (size_t j = 0; j < kPatternSize; j++) {
1138 EXPECT(in[j] == out[j], "Invalid pattern detected at [%zu] (%llX != %llX)", j, (unsigned long long)in[j], (unsigned long long)out[j]);
1208 EXPECT_EQ(in[j], out[j])
1209 .message("Invalid pattern detected at [%zu] (%llX != %llX)", j, (unsigned long long)in[j], (unsigned long long)out[j]);
11391210 }
11401211 }
11411212 }
11421213
11431214 static void test_jit_allocator_alloc_release() noexcept {
1144 size_t kCount = BrokenAPI::hasArg("--quick") ? 1000 : 100000;
1215 size_t kCount = BrokenAPI::hasArg("--quick") ? 20000 : 100000;
11451216
11461217 struct TestParams {
11471218 const char* name;
11911262 INFO(" Memory alloc/release test - %d allocations", kCount);
11921263
11931264 void** ptrArray = (void**)::malloc(sizeof(void*) * size_t(kCount));
1194 EXPECT(ptrArray != nullptr,
1195 "Couldn't allocate '%u' bytes for pointer-array", unsigned(sizeof(void*) * size_t(kCount)));
1265 EXPECT_NOT_NULL(ptrArray);
11961266
11971267 // Random blocks tests...
11981268 INFO(" Allocating random blocks...");
12831353 void* rwPtr = nullptr;
12841354 size_t size = 100;
12851355
1286 EXPECT(allocator.alloc(&rxPtr, &rwPtr, size) == kErrorOk);
1287 EXPECT(rxPtr != nullptr);
1288 EXPECT(rwPtr != nullptr);
1356 EXPECT_EQ(allocator.alloc(&rxPtr, &rwPtr, size), kErrorOk);
1357 EXPECT_NOT_NULL(rxPtr);
1358 EXPECT_NOT_NULL(rwPtr);
12891359
12901360 void* rxPtrQueried = nullptr;
12911361 void* rwPtrQueried = nullptr;
12921362 size_t sizeQueried;
12931363
1294 EXPECT(allocator.query(rxPtr, &rxPtrQueried, &rwPtrQueried, &sizeQueried) == kErrorOk);
1295 EXPECT(rxPtrQueried == rxPtr);
1296 EXPECT(rwPtrQueried == rwPtr);
1297 EXPECT(sizeQueried == Support::alignUp(size, allocator.granularity()));
1364 EXPECT_EQ(allocator.query(rxPtr, &rxPtrQueried, &rwPtrQueried, &sizeQueried), kErrorOk);
1365 EXPECT_EQ(rxPtrQueried, rxPtr);
1366 EXPECT_EQ(rwPtrQueried, rwPtr);
1367 EXPECT_EQ(sizeQueried, Support::alignUp(size, allocator.granularity()));
12981368 }
12991369
13001370 UNIT(jit_allocator) {
13011371 test_jit_allocator_alloc_release();
13021372 test_jit_allocator_query();
13031373 }
1304 #endif
1374 #endif // ASMJIT_TEST
13051375
13061376 ASMJIT_END_NAMESPACE
13071377
1308 #endif
1378 #endif // !ASMJIT_NO_JIT
2525 //! The first buffer has read and execute permissions and the second buffer has read+write permissions.
2626 //!
2727 //! See \ref VirtMem::allocDualMapping() for more details about this feature.
28 //!
29 //! \remarks Dual mapping would be automatically turned on by \ref JitAllocator in case of hardened runtime that
30 //! enforces `W^X` policy, so specifying this flag is essentually forcing to use dual mapped pages even when RWX
31 //! pages can be allocated and dual mapping is not necessary.
2832 kUseDualMapping = 0x00000001u,
2933
3034 //! Enables the use of multiple pools with increasing granularity instead of a single pool. This flag would enable
1414 : _allocator(params) {
1515 _environment = Environment::host();
1616 _environment.setObjectFormat(ObjectFormat::kJIT);
17 _cpuFeatures = CpuInfo::host().features();
1718 }
1819
1920 JitRuntime::~JitRuntime() noexcept {}
4243 // Recalculate the final code size and shrink the memory we allocated for it
4344 // in case that some relocations didn't require records in an address table.
4445 size_t codeSize = code->codeSize();
45 if (codeSize < estimatedCodeSize)
46 _allocator.shrink(rx, codeSize);
47
4846 if (codeSize < estimatedCodeSize)
4947 _allocator.shrink(rx, codeSize);
5048
1818
1919 UNIT(operand) {
2020 INFO("Checking operand sizes");
21 EXPECT(sizeof(Operand) == 16);
22 EXPECT(sizeof(BaseReg) == 16);
23 EXPECT(sizeof(BaseMem) == 16);
24 EXPECT(sizeof(Imm) == 16);
25 EXPECT(sizeof(Label) == 16);
21 EXPECT_EQ(sizeof(Operand), 16u);
22 EXPECT_EQ(sizeof(BaseReg), 16u);
23 EXPECT_EQ(sizeof(BaseMem), 16u);
24 EXPECT_EQ(sizeof(Imm), 16u);
25 EXPECT_EQ(sizeof(Label), 16u);
2626
2727 INFO("Checking basic functionality of Operand");
2828 Operand a, b;
2929 Operand dummy;
3030
31 EXPECT(a.isNone() == true);
32 EXPECT(a.isReg() == false);
33 EXPECT(a.isMem() == false);
34 EXPECT(a.isImm() == false);
35 EXPECT(a.isLabel() == false);
36 EXPECT(a == b);
37 EXPECT(a._data[0] == 0);
38 EXPECT(a._data[1] == 0);
31 EXPECT_TRUE(a.isNone());
32 EXPECT_FALSE(a.isReg());
33 EXPECT_FALSE(a.isMem());
34 EXPECT_FALSE(a.isImm());
35 EXPECT_FALSE(a.isLabel());
36 EXPECT_EQ(a, b);
37 EXPECT_EQ(a._data[0], 0u);
38 EXPECT_EQ(a._data[1], 0u);
3939
4040 INFO("Checking basic functionality of Label");
4141 Label label;
42 EXPECT(label.isValid() == false);
43 EXPECT(label.id() == Globals::kInvalidId);
42 EXPECT_FALSE(label.isValid());
43 EXPECT_EQ(label.id(), Globals::kInvalidId);
4444
4545 INFO("Checking basic functionality of BaseReg");
46 EXPECT(BaseReg().isReg() == true);
47 EXPECT(BaseReg().isValid() == false);
48 EXPECT(BaseReg()._data[0] == 0);
49 EXPECT(BaseReg()._data[1] == 0);
50 EXPECT(dummy.as<BaseReg>().isValid() == false);
46 EXPECT_TRUE(BaseReg().isReg());
47 EXPECT_FALSE(BaseReg().isValid());
48 EXPECT_EQ(BaseReg()._data[0], 0u);
49 EXPECT_EQ(BaseReg()._data[1], 0u);
50 EXPECT_FALSE(dummy.as<BaseReg>().isValid());
5151
5252 // Create some register (not specific to any architecture).
5353 OperandSignature rSig = OperandSignature::fromOpType(OperandType::kReg) |
5656 OperandSignature::fromSize(8);
5757 BaseReg r1(rSig, 5);
5858
59 EXPECT(r1.isValid() == true);
60 EXPECT(r1.isReg() == true);
61 EXPECT(r1.isReg(RegType::kVec128) == true);
62 EXPECT(r1.isPhysReg() == true);
63 EXPECT(r1.isVirtReg() == false);
64 EXPECT(r1.signature() == rSig);
65 EXPECT(r1.type() == RegType::kVec128);
66 EXPECT(r1.group() == RegGroup::kVec);
67 EXPECT(r1.size() == 8);
68 EXPECT(r1.id() == 5);
69 EXPECT(r1.isReg(RegType::kVec128, 5) == true); // RegType and Id.
70 EXPECT(r1._data[0] == 0);
71 EXPECT(r1._data[1] == 0);
59 EXPECT_TRUE(r1.isValid());
60 EXPECT_TRUE(r1.isReg());
61 EXPECT_TRUE(r1.isReg(RegType::kVec128));
62 EXPECT_TRUE(r1.isPhysReg());
63 EXPECT_FALSE(r1.isVirtReg());
64 EXPECT_EQ(r1.signature(), rSig);
65 EXPECT_EQ(r1.type(), RegType::kVec128);
66 EXPECT_EQ(r1.group(), RegGroup::kVec);
67 EXPECT_EQ(r1.size(), 8u);
68 EXPECT_EQ(r1.id(), 5u);
69 EXPECT_TRUE(r1.isReg(RegType::kVec128, 5)); // RegType and Id.
70 EXPECT_EQ(r1._data[0], 0u);
71 EXPECT_EQ(r1._data[1], 0u);
7272
7373 // The same type of register having different id.
7474 BaseReg r2(r1, 6);
75 EXPECT(r2.isValid() == true);
76 EXPECT(r2.isReg() == true);
77 EXPECT(r2.isReg(RegType::kVec128) == true);
78 EXPECT(r2.isPhysReg() == true);
79 EXPECT(r2.isVirtReg() == false);
80 EXPECT(r2.signature() == rSig);
81 EXPECT(r2.type() == r1.type());
82 EXPECT(r2.group() == r1.group());
83 EXPECT(r2.size() == r1.size());
84 EXPECT(r2.id() == 6);
85 EXPECT(r2.isReg(RegType::kVec128, 6) == true);
75 EXPECT_TRUE(r2.isValid());
76 EXPECT_TRUE(r2.isReg());
77 EXPECT_TRUE(r2.isReg(RegType::kVec128));
78 EXPECT_TRUE(r2.isPhysReg());
79 EXPECT_FALSE(r2.isVirtReg());
80 EXPECT_EQ(r2.signature(), rSig);
81 EXPECT_EQ(r2.type(), r1.type());
82 EXPECT_EQ(r2.group(), r1.group());
83 EXPECT_EQ(r2.size(), r1.size());
84 EXPECT_EQ(r2.id(), 6u);
85 EXPECT_TRUE(r2.isReg(RegType::kVec128, 6));
8686
8787 r1.reset();
88 EXPECT(!r1.isReg());
89 EXPECT(!r1.isValid());
88 EXPECT_FALSE(r1.isReg());
89 EXPECT_FALSE(r1.isValid());
9090
9191 INFO("Checking basic functionality of BaseMem");
9292 BaseMem m;
93 EXPECT(m.isMem());
94 EXPECT(m == BaseMem());
95 EXPECT(m.hasBase() == false);
96 EXPECT(m.hasIndex() == false);
97 EXPECT(m.hasOffset() == false);
98 EXPECT(m.isOffset64Bit() == true);
99 EXPECT(m.offset() == 0);
93 EXPECT_TRUE(m.isMem());
94 EXPECT_EQ(m, BaseMem());
95 EXPECT_FALSE(m.hasBase());
96 EXPECT_FALSE(m.hasIndex());
97 EXPECT_FALSE(m.hasOffset());
98 EXPECT_TRUE(m.isOffset64Bit());
99 EXPECT_EQ(m.offset(), 0);
100100
101101 m.setOffset(-1);
102 EXPECT(m.offsetLo32() == -1);
103 EXPECT(m.offset() == -1);
102 EXPECT_EQ(m.offsetLo32(), -1);
103 EXPECT_EQ(m.offset(), -1);
104104
105105 int64_t x = int64_t(0xFF00FF0000000001u);
106106 int32_t xHi = int32_t(0xFF00FF00u);
107107
108108 m.setOffset(x);
109 EXPECT(m.offset() == x);
110 EXPECT(m.offsetLo32() == 1);
111 EXPECT(m.offsetHi32() == xHi);
109 EXPECT_EQ(m.offset(), x);
110 EXPECT_EQ(m.offsetLo32(), 1);
111 EXPECT_EQ(m.offsetHi32(), xHi);
112112
113113 INFO("Checking basic functionality of Imm");
114114 Imm immValue(-42);
115 EXPECT(immValue.type() == ImmType::kInt);
116 EXPECT(Imm(-1).value() == -1);
117 EXPECT(imm(-1).value() == -1);
118 EXPECT(immValue.value() == -42);
119 EXPECT(imm(0xFFFFFFFF).value() == int64_t(0xFFFFFFFF));
115 EXPECT_EQ(immValue.type(), ImmType::kInt);
116 EXPECT_EQ(Imm(-1).value(), -1);
117 EXPECT_EQ(imm(-1).value(), -1);
118 EXPECT_EQ(immValue.value(), -42);
119 EXPECT_EQ(imm(0xFFFFFFFF).value(), int64_t(0xFFFFFFFF));
120120
121121 Imm immDouble(0.4);
122 EXPECT(immDouble.type() == ImmType::kDouble);
123 EXPECT(immDouble.valueAs<double>() == 0.4);
124 EXPECT(immDouble == imm(0.4));
122 EXPECT_EQ(immDouble.type(), ImmType::kDouble);
123 EXPECT_EQ(immDouble.valueAs<double>(), 0.4);
124 EXPECT_EQ(immDouble, imm(0.4));
125125
126 EXPECT(Imm(StrongEnumForImmTests::kValue0).value() == 0);
127 EXPECT(Imm(StrongEnumForImmTests::kValue0xFFFFFFFF).value() == 0xFFFFFFFFu);
126 EXPECT_EQ(Imm(StrongEnumForImmTests::kValue0).value(), 0);
127 EXPECT_EQ(Imm(StrongEnumForImmTests::kValue0xFFFFFFFF).value(), 0xFFFFFFFFu);
128128 }
129129 #endif
130130
7575 uint64_t t = (uint64_t(ts.tv_sec ) * 1000u) + (uint64_t(ts.tv_nsec) / 1000000u);
7676 return uint32_t(t & 0xFFFFFFFFu);
7777 #else
78 #pragma message("asmjit::OSUtils::getTickCount() doesn't have implementation for the target OS.")
78 #pragma message("[asmjit] OSUtils::getTickCount() doesn't have implementation for the target OS.")
7979 return 0;
8080 #endif
8181 }
739739 kLeadConsecutive = 0x00001000u,
740740 kConsecutiveData = 0x00006000u,
741741
742 // Other Constraints
743 // -----------------
744
745 kUnique = 0x00008000u,
746
742747 // Liveness Flags
743748 // --------------
744749
887892 inline bool isUseConsecutive() const noexcept { return hasFlag(RATiedFlags::kUseConsecutive); }
888893 //! Tests whether the tied register has \ref RATiedFlags::kOutConsecutive flag set.
889894 inline bool isOutConsecutive() const noexcept { return hasFlag(RATiedFlags::kOutConsecutive); }
895
896 //! Tests whether the tied register must be unique (cannot be allocated to any other allocated register).
897 inline bool isUnique() const noexcept { return hasFlag(RATiedFlags::kUnique); }
890898
891899 //! Tests whether the tied register has any consecutive flag.
892900 inline bool hasAnyConsecutiveFlag() const noexcept { return hasFlag(RATiedFlags::kLeadConsecutive | RATiedFlags::kUseConsecutive | RATiedFlags::kOutConsecutive); }
926926 if (!tiedReg->isOut())
927927 continue;
928928
929 RegMask avoidOut = avoidRegs;
930 if (tiedReg->isUnique())
931 avoidOut |= willUse;
932
929933 uint32_t workId = tiedReg->workId();
930934 uint32_t assignedId = _curAssignment.workToPhysId(group, workId);
931935
934938
935939 uint32_t physId = tiedReg->outId();
936940 if (physId == RAAssignment::kPhysNone) {
937 RegMask allocableRegs = tiedReg->outRegMask() & ~(outRegs | avoidRegs);
941 RegMask allocableRegs = tiedReg->outRegMask() & ~(outRegs | avoidOut);
938942
939943 if (!(allocableRegs & ~liveRegs)) {
940944 // There are no more registers, decide which one to spill.
113113 #ifndef ASMJIT_NO_LOGGING
114114 _logger = logger;
115115 _formatOptions.reset();
116 _diagnosticOptions = DiagnosticOptions::kNone;
116 _diagnosticOptions = _cb->diagnosticOptions();
117117
118118 if (logger) {
119119 _formatOptions = logger->options();
120 _diagnosticOptions = _cb->diagnosticOptions();
120 }
121 else {
122 _diagnosticOptions &= ~(DiagnosticOptions::kRADebugCFG |
123 DiagnosticOptions::kRADebugUnreachable);
121124 }
122125 #else
123126 DebugUtils::unused(logger);
6161
6262 // STEP 1:
6363 //
64 // Update usage based on the size of the slot. We boost smaller slots in a way that 32-bit register has higher
64 // Update usage based on the size of the slot. We boost smaller slots in a way that 32-bit register has a higher
6565 // priority than a 128-bit register, however, if one 128-bit register is used 4 times more than some other 32-bit
6666 // register it will overweight it.
6767 for (RAStackSlot* slot : _slots) {
490490 UNIT(core_string) {
491491 String s;
492492
493 EXPECT(s.isLargeOrExternal() == false);
494 EXPECT(s.isExternal() == false);
495
496 EXPECT(s.assign('a') == kErrorOk);
497 EXPECT(s.size() == 1);
498 EXPECT(s.capacity() == String::kSSOCapacity);
499 EXPECT(s.data()[0] == 'a');
500 EXPECT(s.data()[1] == '\0');
501 EXPECT(s.eq("a") == true);
502 EXPECT(s.eq("a", 1) == true);
503
504 EXPECT(s.assignChars('b', 4) == kErrorOk);
505 EXPECT(s.size() == 4);
506 EXPECT(s.capacity() == String::kSSOCapacity);
507 EXPECT(s.data()[0] == 'b');
508 EXPECT(s.data()[1] == 'b');
509 EXPECT(s.data()[2] == 'b');
510 EXPECT(s.data()[3] == 'b');
511 EXPECT(s.data()[4] == '\0');
512 EXPECT(s.eq("bbbb") == true);
513 EXPECT(s.eq("bbbb", 4) == true);
514
515 EXPECT(s.assign("abc") == kErrorOk);
516 EXPECT(s.size() == 3);
517 EXPECT(s.capacity() == String::kSSOCapacity);
518 EXPECT(s.data()[0] == 'a');
519 EXPECT(s.data()[1] == 'b');
520 EXPECT(s.data()[2] == 'c');
521 EXPECT(s.data()[3] == '\0');
522 EXPECT(s.eq("abc") == true);
523 EXPECT(s.eq("abc", 3) == true);
493 EXPECT_FALSE(s.isLargeOrExternal());
494 EXPECT_FALSE(s.isExternal());
495
496 EXPECT_EQ(s.assign('a'), kErrorOk);
497 EXPECT_EQ(s.size(), 1u);
498 EXPECT_EQ(s.capacity(), String::kSSOCapacity);
499 EXPECT_EQ(s.data()[0], 'a');
500 EXPECT_EQ(s.data()[1], '\0');
501 EXPECT_TRUE(s.eq("a"));
502 EXPECT_TRUE(s.eq("a", 1));
503
504 EXPECT_EQ(s.assignChars('b', 4), kErrorOk);
505 EXPECT_EQ(s.size(), 4u);
506 EXPECT_EQ(s.capacity(), String::kSSOCapacity);
507 EXPECT_EQ(s.data()[0], 'b');
508 EXPECT_EQ(s.data()[1], 'b');
509 EXPECT_EQ(s.data()[2], 'b');
510 EXPECT_EQ(s.data()[3], 'b');
511 EXPECT_EQ(s.data()[4], '\0');
512 EXPECT_TRUE(s.eq("bbbb"));
513 EXPECT_TRUE(s.eq("bbbb", 4));
514
515 EXPECT_EQ(s.assign("abc"), kErrorOk);
516 EXPECT_EQ(s.size(), 3u);
517 EXPECT_EQ(s.capacity(), String::kSSOCapacity);
518 EXPECT_EQ(s.data()[0], 'a');
519 EXPECT_EQ(s.data()[1], 'b');
520 EXPECT_EQ(s.data()[2], 'c');
521 EXPECT_EQ(s.data()[3], '\0');
522 EXPECT_TRUE(s.eq("abc"));
523 EXPECT_TRUE(s.eq("abc", 3));
524524
525525 const char* large = "Large string that will not fit into SSO buffer";
526 EXPECT(s.assign(large) == kErrorOk);
527 EXPECT(s.isLargeOrExternal() == true);
528 EXPECT(s.size() == strlen(large));
529 EXPECT(s.capacity() > String::kSSOCapacity);
530 EXPECT(s.eq(large) == true);
531 EXPECT(s.eq(large, strlen(large)) == true);
526 EXPECT_EQ(s.assign(large), kErrorOk);
527 EXPECT_TRUE(s.isLargeOrExternal());
528 EXPECT_EQ(s.size(), strlen(large));
529 EXPECT_GT(s.capacity(), String::kSSOCapacity);
530 EXPECT_TRUE(s.eq(large));
531 EXPECT_TRUE(s.eq(large, strlen(large)));
532532
533533 const char* additional = " (additional content)";
534 EXPECT(s.isLargeOrExternal() == true);
535 EXPECT(s.append(additional) == kErrorOk);
536 EXPECT(s.size() == strlen(large) + strlen(additional));
537
538 EXPECT(s.clear() == kErrorOk);
539 EXPECT(s.size() == 0);
540 EXPECT(s.empty() == true);
541 EXPECT(s.data()[0] == '\0');
542 EXPECT(s.isLargeOrExternal() == true); // Clear should never release the memory.
543
544 EXPECT(s.appendUInt(1234) == kErrorOk);
545 EXPECT(s.eq("1234") == true);
546
547 EXPECT(s.assignUInt(0xFFFF, 16, 0, StringFormatFlags::kAlternate) == kErrorOk);
548 EXPECT(s.eq("0xFFFF"));
534 EXPECT_TRUE(s.isLargeOrExternal());
535 EXPECT_EQ(s.append(additional), kErrorOk);
536 EXPECT_EQ(s.size(), strlen(large) + strlen(additional));
537
538 EXPECT_EQ(s.clear(), kErrorOk);
539 EXPECT_EQ(s.size(), 0u);
540 EXPECT_TRUE(s.empty());
541 EXPECT_EQ(s.data()[0], '\0');
542 EXPECT_TRUE(s.isLargeOrExternal()); // Clear should never release the memory.
543
544 EXPECT_EQ(s.appendUInt(1234), kErrorOk);
545 EXPECT_TRUE(s.eq("1234"));
546
547 EXPECT_EQ(s.assignUInt(0xFFFF, 16, 0, StringFormatFlags::kAlternate), kErrorOk);
548 EXPECT_TRUE(s.eq("0xFFFF"));
549549
550550 StringTmp<64> sTmp;
551 EXPECT(sTmp.isLargeOrExternal());
552 EXPECT(sTmp.isExternal());
553 EXPECT(sTmp.appendChars(' ', 1000) == kErrorOk);
554 EXPECT(!sTmp.isExternal());
551 EXPECT_TRUE(sTmp.isLargeOrExternal());
552 EXPECT_TRUE(sTmp.isExternal());
553 EXPECT_EQ(sTmp.appendChars(' ', 1000), kErrorOk);
554 EXPECT_FALSE(sTmp.isExternal());
555555 }
556556 #endif
557557
1414 template<typename T>
1515 static void testArrays(const T* a, const T* b, size_t size) noexcept {
1616 for (size_t i = 0; i < size; i++)
17 EXPECT(a[i] == b[i], "Mismatch at %u", unsigned(i));
17 EXPECT_EQ(a[i], b[i])
18 .message("Mismatch at %u", unsigned(i));
1819 }
1920
2021 static void testAlignment() noexcept {
2122 INFO("Support::isAligned()");
22 EXPECT(Support::isAligned<size_t>(0xFFFF, 4) == false);
23 EXPECT(Support::isAligned<size_t>(0xFFF4, 4) == true);
24 EXPECT(Support::isAligned<size_t>(0xFFF8, 8) == true);
25 EXPECT(Support::isAligned<size_t>(0xFFF0, 16) == true);
23 EXPECT_FALSE(Support::isAligned<size_t>(0xFFFF, 4u));
24 EXPECT_TRUE(Support::isAligned<size_t>(0xFFF4, 4u));
25 EXPECT_TRUE(Support::isAligned<size_t>(0xFFF8, 8u));
26 EXPECT_TRUE(Support::isAligned<size_t>(0xFFF0, 16u));
2627
2728 INFO("Support::alignUp()");
28 EXPECT(Support::alignUp<size_t>(0xFFFF, 4) == 0x10000);
29 EXPECT(Support::alignUp<size_t>(0xFFF4, 4) == 0x0FFF4);
30 EXPECT(Support::alignUp<size_t>(0xFFF8, 8) == 0x0FFF8);
31 EXPECT(Support::alignUp<size_t>(0xFFF0, 16) == 0x0FFF0);
32 EXPECT(Support::alignUp<size_t>(0xFFF0, 32) == 0x10000);
29 EXPECT_EQ(Support::alignUp<size_t>(0xFFFF, 4), 0x10000u);
30 EXPECT_EQ(Support::alignUp<size_t>(0xFFF4, 4), 0x0FFF4u);
31 EXPECT_EQ(Support::alignUp<size_t>(0xFFF8, 8), 0x0FFF8u);
32 EXPECT_EQ(Support::alignUp<size_t>(0xFFF0, 16), 0x0FFF0u);
33 EXPECT_EQ(Support::alignUp<size_t>(0xFFF0, 32), 0x10000u);
3334
3435 INFO("Support::alignUpDiff()");
35 EXPECT(Support::alignUpDiff<size_t>(0xFFFF, 4) == 1);
36 EXPECT(Support::alignUpDiff<size_t>(0xFFF4, 4) == 0);
37 EXPECT(Support::alignUpDiff<size_t>(0xFFF8, 8) == 0);
38 EXPECT(Support::alignUpDiff<size_t>(0xFFF0, 16) == 0);
39 EXPECT(Support::alignUpDiff<size_t>(0xFFF0, 32) == 16);
36 EXPECT_EQ(Support::alignUpDiff<size_t>(0xFFFF, 4), 1u);
37 EXPECT_EQ(Support::alignUpDiff<size_t>(0xFFF4, 4), 0u);
38 EXPECT_EQ(Support::alignUpDiff<size_t>(0xFFF8, 8), 0u);
39 EXPECT_EQ(Support::alignUpDiff<size_t>(0xFFF0, 16), 0u);
40 EXPECT_EQ(Support::alignUpDiff<size_t>(0xFFF0, 32), 16u);
4041
4142 INFO("Support::alignUpPowerOf2()");
42 EXPECT(Support::alignUpPowerOf2<size_t>(0x0000) == 0x00000);
43 EXPECT(Support::alignUpPowerOf2<size_t>(0xFFFF) == 0x10000);
44 EXPECT(Support::alignUpPowerOf2<size_t>(0xF123) == 0x10000);
45 EXPECT(Support::alignUpPowerOf2<size_t>(0x0F00) == 0x01000);
46 EXPECT(Support::alignUpPowerOf2<size_t>(0x0100) == 0x00100);
47 EXPECT(Support::alignUpPowerOf2<size_t>(0x1001) == 0x02000);
43 EXPECT_EQ(Support::alignUpPowerOf2<size_t>(0x0000), 0x00000u);
44 EXPECT_EQ(Support::alignUpPowerOf2<size_t>(0xFFFF), 0x10000u);
45 EXPECT_EQ(Support::alignUpPowerOf2<size_t>(0xF123), 0x10000u);
46 EXPECT_EQ(Support::alignUpPowerOf2<size_t>(0x0F00), 0x01000u);
47 EXPECT_EQ(Support::alignUpPowerOf2<size_t>(0x0100), 0x00100u);
48 EXPECT_EQ(Support::alignUpPowerOf2<size_t>(0x1001), 0x02000u);
4849 }
4950
5051 static void testBitUtils() noexcept {
5152 uint32_t i;
5253
5354 INFO("Support::shl() / shr()");
54 EXPECT(Support::shl(int32_t(0x00001111), 16) == int32_t(0x11110000u));
55 EXPECT(Support::shl(uint32_t(0x00001111), 16) == uint32_t(0x11110000u));
56 EXPECT(Support::shr(int32_t(0x11110000u), 16) == int32_t(0x00001111u));
57 EXPECT(Support::shr(uint32_t(0x11110000u), 16) == uint32_t(0x00001111u));
58 EXPECT(Support::sar(int32_t(0xFFFF0000u), 16) == int32_t(0xFFFFFFFFu));
59 EXPECT(Support::sar(uint32_t(0xFFFF0000u), 16) == uint32_t(0xFFFFFFFFu));
55 EXPECT_EQ(Support::shl(int32_t(0x00001111), 16), int32_t(0x11110000u));
56 EXPECT_EQ(Support::shl(uint32_t(0x00001111), 16), uint32_t(0x11110000u));
57 EXPECT_EQ(Support::shr(int32_t(0x11110000u), 16), int32_t(0x00001111u));
58 EXPECT_EQ(Support::shr(uint32_t(0x11110000u), 16), uint32_t(0x00001111u));
59 EXPECT_EQ(Support::sar(int32_t(0xFFFF0000u), 16), int32_t(0xFFFFFFFFu));
60 EXPECT_EQ(Support::sar(uint32_t(0xFFFF0000u), 16), uint32_t(0xFFFFFFFFu));
6061
6162 INFO("Support::blsi()");
62 for (i = 0; i < 32; i++) EXPECT(Support::blsi(uint32_t(1) << i) == uint32_t(1) << i);
63 for (i = 0; i < 31; i++) EXPECT(Support::blsi(uint32_t(3) << i) == uint32_t(1) << i);
64 for (i = 0; i < 64; i++) EXPECT(Support::blsi(uint64_t(1) << i) == uint64_t(1) << i);
65 for (i = 0; i < 63; i++) EXPECT(Support::blsi(uint64_t(3) << i) == uint64_t(1) << i);
63 for (i = 0; i < 32; i++) EXPECT_EQ(Support::blsi(uint32_t(1) << i), uint32_t(1) << i);
64 for (i = 0; i < 31; i++) EXPECT_EQ(Support::blsi(uint32_t(3) << i), uint32_t(1) << i);
65 for (i = 0; i < 64; i++) EXPECT_EQ(Support::blsi(uint64_t(1) << i), uint64_t(1) << i);
66 for (i = 0; i < 63; i++) EXPECT_EQ(Support::blsi(uint64_t(3) << i), uint64_t(1) << i);
6667
6768 INFO("Support::ctz()");
68 for (i = 0; i < 32; i++) EXPECT(Support::Internal::clzFallback(uint32_t(1) << i) == 31 - i);
69 for (i = 0; i < 64; i++) EXPECT(Support::Internal::clzFallback(uint64_t(1) << i) == 63 - i);
70 for (i = 0; i < 32; i++) EXPECT(Support::Internal::ctzFallback(uint32_t(1) << i) == i);
71 for (i = 0; i < 64; i++) EXPECT(Support::Internal::ctzFallback(uint64_t(1) << i) == i);
72 for (i = 0; i < 32; i++) EXPECT(Support::clz(uint32_t(1) << i) == 31 - i);
73 for (i = 0; i < 64; i++) EXPECT(Support::clz(uint64_t(1) << i) == 63 - i);
74 for (i = 0; i < 32; i++) EXPECT(Support::ctz(uint32_t(1) << i) == i);
75 for (i = 0; i < 64; i++) EXPECT(Support::ctz(uint64_t(1) << i) == i);
69 for (i = 0; i < 32; i++) EXPECT_EQ(Support::Internal::clzFallback(uint32_t(1) << i), 31 - i);
70 for (i = 0; i < 64; i++) EXPECT_EQ(Support::Internal::clzFallback(uint64_t(1) << i), 63 - i);
71 for (i = 0; i < 32; i++) EXPECT_EQ(Support::Internal::ctzFallback(uint32_t(1) << i), i);
72 for (i = 0; i < 64; i++) EXPECT_EQ(Support::Internal::ctzFallback(uint64_t(1) << i), i);
73 for (i = 0; i < 32; i++) EXPECT_EQ(Support::clz(uint32_t(1) << i), 31 - i);
74 for (i = 0; i < 64; i++) EXPECT_EQ(Support::clz(uint64_t(1) << i), 63 - i);
75 for (i = 0; i < 32; i++) EXPECT_EQ(Support::ctz(uint32_t(1) << i), i);
76 for (i = 0; i < 64; i++) EXPECT_EQ(Support::ctz(uint64_t(1) << i), i);
7677
7778 INFO("Support::bitMask()");
78 EXPECT(Support::bitMask(0, 1, 7) == 0x83u);
79 EXPECT_EQ(Support::bitMask(0, 1, 7), 0x83u);
7980 for (i = 0; i < 32; i++)
80 EXPECT(Support::bitMask(i) == (1u << i));
81 EXPECT_EQ(Support::bitMask(i), (1u << i));
8182
8283 INFO("Support::bitTest()");
8384 for (i = 0; i < 32; i++) {
84 EXPECT(Support::bitTest((1 << i), i) == true, "Support::bitTest(%X, %u) should return true", (1 << i), i);
85 EXPECT_TRUE(Support::bitTest((1 << i), i))
86 .message("Support::bitTest(%X, %u) should return true", (1 << i), i);
8587 }
8688
8789 INFO("Support::lsbMask<uint32_t>()");
8991 uint32_t expectedBits = 0;
9092 for (uint32_t b = 0; b < i; b++)
9193 expectedBits |= uint32_t(1) << b;
92 EXPECT(Support::lsbMask<uint32_t>(i) == expectedBits);
94 EXPECT_EQ(Support::lsbMask<uint32_t>(i), expectedBits);
9395 }
9496
9597 INFO("Support::lsbMask<uint64_t>()");
9799 uint64_t expectedBits = 0;
98100 for (uint32_t b = 0; b < i; b++)
99101 expectedBits |= uint64_t(1) << b;
100 EXPECT(Support::lsbMask<uint64_t>(i) == expectedBits);
102 EXPECT_EQ(Support::lsbMask<uint64_t>(i), expectedBits);
101103 }
102104
103105 INFO("Support::popcnt()");
104 for (i = 0; i < 32; i++) EXPECT(Support::popcnt((uint32_t(1) << i)) == 1);
105 for (i = 0; i < 64; i++) EXPECT(Support::popcnt((uint64_t(1) << i)) == 1);
106 EXPECT(Support::popcnt(0x000000F0) == 4);
107 EXPECT(Support::popcnt(0x10101010) == 4);
108 EXPECT(Support::popcnt(0xFF000000) == 8);
109 EXPECT(Support::popcnt(0xFFFFFFF7) == 31);
110 EXPECT(Support::popcnt(0x7FFFFFFF) == 31);
106 for (i = 0; i < 32; i++) EXPECT_EQ(Support::popcnt((uint32_t(1) << i)), 1u);
107 for (i = 0; i < 64; i++) EXPECT_EQ(Support::popcnt((uint64_t(1) << i)), 1u);
108 EXPECT_EQ(Support::popcnt(0x000000F0), 4u);
109 EXPECT_EQ(Support::popcnt(0x10101010), 4u);
110 EXPECT_EQ(Support::popcnt(0xFF000000), 8u);
111 EXPECT_EQ(Support::popcnt(0xFFFFFFF7), 31u);
112 EXPECT_EQ(Support::popcnt(0x7FFFFFFF), 31u);
111113
112114 INFO("Support::isPowerOf2()");
113115 for (i = 0; i < 64; i++) {
114 EXPECT(Support::isPowerOf2(uint64_t(1) << i) == true);
115 EXPECT(Support::isPowerOf2((uint64_t(1) << i) ^ 0x001101) == false);
116 EXPECT_TRUE(Support::isPowerOf2(uint64_t(1) << i));
117 EXPECT_FALSE(Support::isPowerOf2((uint64_t(1) << i) ^ 0x001101));
116118 }
117119 }
118120
119121 static void testIntUtils() noexcept {
120122 INFO("Support::byteswap()");
121 EXPECT(Support::byteswap16(int32_t(0x0102)) == int32_t(0x0201));
122 EXPECT(Support::byteswap32(int32_t(0x01020304)) == int32_t(0x04030201));
123 EXPECT(Support::byteswap32(uint32_t(0x01020304)) == uint32_t(0x04030201));
124 EXPECT(Support::byteswap64(uint64_t(0x0102030405060708)) == uint64_t(0x0807060504030201));
123 EXPECT_EQ(Support::byteswap16(0x0102), 0x0201u);
124 EXPECT_EQ(Support::byteswap32(0x01020304), 0x04030201u);
125 EXPECT_EQ(Support::byteswap32(0x01020304), 0x04030201u);
126 EXPECT_EQ(Support::byteswap64(uint64_t(0x0102030405060708)), uint64_t(0x0807060504030201));
125127
126128 INFO("Support::bytepack()");
127129 union BytePackData {
130132 } bpdata;
131133
132134 bpdata.u32 = Support::bytepack32_4x8(0x00, 0x11, 0x22, 0x33);
133 EXPECT(bpdata.bytes[0] == 0x00);
134 EXPECT(bpdata.bytes[1] == 0x11);
135 EXPECT(bpdata.bytes[2] == 0x22);
136 EXPECT(bpdata.bytes[3] == 0x33);
135 EXPECT_EQ(bpdata.bytes[0], 0x00);
136 EXPECT_EQ(bpdata.bytes[1], 0x11);
137 EXPECT_EQ(bpdata.bytes[2], 0x22);
138 EXPECT_EQ(bpdata.bytes[3], 0x33);
137139
138140 INFO("Support::isBetween()");
139 EXPECT(Support::isBetween<int>(10 , 10, 20) == true);
140 EXPECT(Support::isBetween<int>(11 , 10, 20) == true);
141 EXPECT(Support::isBetween<int>(20 , 10, 20) == true);
142 EXPECT(Support::isBetween<int>(9 , 10, 20) == false);
143 EXPECT(Support::isBetween<int>(21 , 10, 20) == false);
144 EXPECT(Support::isBetween<int>(101, 10, 20) == false);
141 EXPECT_TRUE(Support::isBetween<int>(10 , 10, 20));
142 EXPECT_TRUE(Support::isBetween<int>(11 , 10, 20));
143 EXPECT_TRUE(Support::isBetween<int>(20 , 10, 20));
144 EXPECT_FALSE(Support::isBetween<int>(9 , 10, 20));
145 EXPECT_FALSE(Support::isBetween<int>(21 , 10, 20));
146 EXPECT_FALSE(Support::isBetween<int>(101, 10, 20));
145147
146148 INFO("Support::isInt8()");
147 EXPECT(Support::isInt8(-128) == true);
148 EXPECT(Support::isInt8( 127) == true);
149 EXPECT(Support::isInt8(-129) == false);
150 EXPECT(Support::isInt8( 128) == false);
149 EXPECT_TRUE(Support::isInt8(-128));
150 EXPECT_TRUE(Support::isInt8( 127));
151 EXPECT_FALSE(Support::isInt8(-129));
152 EXPECT_FALSE(Support::isInt8( 128));
151153
152154 INFO("Support::isInt16()");
153 EXPECT(Support::isInt16(-32768) == true);
154 EXPECT(Support::isInt16( 32767) == true);
155 EXPECT(Support::isInt16(-32769) == false);
156 EXPECT(Support::isInt16( 32768) == false);
155 EXPECT_TRUE(Support::isInt16(-32768));
156 EXPECT_TRUE(Support::isInt16( 32767));
157 EXPECT_FALSE(Support::isInt16(-32769));
158 EXPECT_FALSE(Support::isInt16( 32768));
157159
158160 INFO("Support::isInt32()");
159 EXPECT(Support::isInt32( 2147483647 ) == true);
160 EXPECT(Support::isInt32(-2147483647 - 1) == true);
161 EXPECT(Support::isInt32(uint64_t(2147483648u)) == false);
162 EXPECT(Support::isInt32(uint64_t(0xFFFFFFFFu)) == false);
163 EXPECT(Support::isInt32(uint64_t(0xFFFFFFFFu) + 1) == false);
161 EXPECT_TRUE(Support::isInt32( 2147483647 ));
162 EXPECT_TRUE(Support::isInt32(-2147483647 - 1));
163 EXPECT_FALSE(Support::isInt32(uint64_t(2147483648u)));
164 EXPECT_FALSE(Support::isInt32(uint64_t(0xFFFFFFFFu)));
165 EXPECT_FALSE(Support::isInt32(uint64_t(0xFFFFFFFFu) + 1));
164166
165167 INFO("Support::isUInt8()");
166 EXPECT(Support::isUInt8(0) == true);
167 EXPECT(Support::isUInt8(255) == true);
168 EXPECT(Support::isUInt8(256) == false);
169 EXPECT(Support::isUInt8(-1) == false);
168 EXPECT_TRUE(Support::isUInt8(0) );
169 EXPECT_TRUE(Support::isUInt8(255));
170 EXPECT_FALSE(Support::isUInt8(256));
171 EXPECT_FALSE(Support::isUInt8(-1) );
170172
171173 INFO("Support::isUInt12()");
172 EXPECT(Support::isUInt12(0) == true);
173 EXPECT(Support::isUInt12(4095) == true);
174 EXPECT(Support::isUInt12(4096) == false);
175 EXPECT(Support::isUInt12(-1) == false);
174 EXPECT_TRUE(Support::isUInt12(0) );
175 EXPECT_TRUE(Support::isUInt12(4095));
176 EXPECT_FALSE(Support::isUInt12(4096));
177 EXPECT_FALSE(Support::isUInt12(-1) );
176178
177179 INFO("Support::isUInt16()");
178 EXPECT(Support::isUInt16(0) == true);
179 EXPECT(Support::isUInt16(65535) == true);
180 EXPECT(Support::isUInt16(65536) == false);
181 EXPECT(Support::isUInt16(-1) == false);
180 EXPECT_TRUE(Support::isUInt16(0) );
181 EXPECT_TRUE(Support::isUInt16(65535));
182 EXPECT_FALSE(Support::isUInt16(65536));
183 EXPECT_FALSE(Support::isUInt16(-1) );
182184
183185 INFO("Support::isUInt32()");
184 EXPECT(Support::isUInt32(uint64_t(0xFFFFFFFF)) == true);
185 EXPECT(Support::isUInt32(uint64_t(0xFFFFFFFF) + 1) == false);
186 EXPECT(Support::isUInt32(-1) == false);
186 EXPECT_TRUE(Support::isUInt32(uint64_t(0xFFFFFFFF)));
187 EXPECT_FALSE(Support::isUInt32(uint64_t(0xFFFFFFFF) + 1));
188 EXPECT_FALSE(Support::isUInt32(-1));
187189 }
188190
189191 static void testReadWrite() noexcept {
193195
194196 Support::writeU16uBE(arr + 1, 0x0102u);
195197 Support::writeU16uBE(arr + 3, 0x0304u);
196 EXPECT(Support::readU32uBE(arr + 1) == 0x01020304u);
197 EXPECT(Support::readU32uLE(arr + 1) == 0x04030201u);
198 EXPECT(Support::readU32uBE(arr + 2) == 0x02030400u);
199 EXPECT(Support::readU32uLE(arr + 2) == 0x00040302u);
198 EXPECT_EQ(Support::readU32uBE(arr + 1), 0x01020304u);
199 EXPECT_EQ(Support::readU32uLE(arr + 1), 0x04030201u);
200 EXPECT_EQ(Support::readU32uBE(arr + 2), 0x02030400u);
201 EXPECT_EQ(Support::readU32uLE(arr + 2), 0x00040302u);
200202
201203 Support::writeU32uLE(arr + 5, 0x05060708u);
202 EXPECT(Support::readU64uBE(arr + 1) == 0x0102030408070605u);
203 EXPECT(Support::readU64uLE(arr + 1) == 0x0506070804030201u);
204 EXPECT_EQ(Support::readU64uBE(arr + 1), 0x0102030408070605u);
205 EXPECT_EQ(Support::readU64uLE(arr + 1), 0x0506070804030201u);
204206
205207 Support::writeU64uLE(arr + 7, 0x1122334455667788u);
206 EXPECT(Support::readU32uBE(arr + 8) == 0x77665544u);
208 EXPECT_EQ(Support::readU32uBE(arr + 8), 0x77665544u);
207209 }
208210
209211 static void testBitVector() noexcept {
211213 {
212214 uint32_t vec[3] = { 0 };
213215 Support::bitVectorFill(vec, 1, 64);
214 EXPECT(vec[0] == 0xFFFFFFFEu);
215 EXPECT(vec[1] == 0xFFFFFFFFu);
216 EXPECT(vec[2] == 0x00000001u);
216 EXPECT_EQ(vec[0], 0xFFFFFFFEu);
217 EXPECT_EQ(vec[1], 0xFFFFFFFFu);
218 EXPECT_EQ(vec[2], 0x00000001u);
217219
218220 Support::bitVectorClear(vec, 1, 1);
219 EXPECT(vec[0] == 0xFFFFFFFCu);
220 EXPECT(vec[1] == 0xFFFFFFFFu);
221 EXPECT(vec[2] == 0x00000001u);
221 EXPECT_EQ(vec[0], 0xFFFFFFFCu);
222 EXPECT_EQ(vec[1], 0xFFFFFFFFu);
223 EXPECT_EQ(vec[2], 0x00000001u);
222224
223225 Support::bitVectorFill(vec, 0, 32);
224 EXPECT(vec[0] == 0xFFFFFFFFu);
225 EXPECT(vec[1] == 0xFFFFFFFFu);
226 EXPECT(vec[2] == 0x00000001u);
226 EXPECT_EQ(vec[0], 0xFFFFFFFFu);
227 EXPECT_EQ(vec[1], 0xFFFFFFFFu);
228 EXPECT_EQ(vec[2], 0x00000001u);
227229
228230 Support::bitVectorClear(vec, 0, 32);
229 EXPECT(vec[0] == 0x00000000u);
230 EXPECT(vec[1] == 0xFFFFFFFFu);
231 EXPECT(vec[2] == 0x00000001u);
231 EXPECT_EQ(vec[0], 0x00000000u);
232 EXPECT_EQ(vec[1], 0xFFFFFFFFu);
233 EXPECT_EQ(vec[2], 0x00000001u);
232234
233235 Support::bitVectorFill(vec, 1, 30);
234 EXPECT(vec[0] == 0x7FFFFFFEu);
235 EXPECT(vec[1] == 0xFFFFFFFFu);
236 EXPECT(vec[2] == 0x00000001u);
236 EXPECT_EQ(vec[0], 0x7FFFFFFEu);
237 EXPECT_EQ(vec[1], 0xFFFFFFFFu);
238 EXPECT_EQ(vec[2], 0x00000001u);
237239
238240 Support::bitVectorClear(vec, 1, 95);
239 EXPECT(vec[0] == 0x00000000u);
240 EXPECT(vec[1] == 0x00000000u);
241 EXPECT(vec[2] == 0x00000000u);
241 EXPECT_EQ(vec[0], 0x00000000u);
242 EXPECT_EQ(vec[1], 0x00000000u);
243 EXPECT_EQ(vec[2], 0x00000000u);
242244
243245 Support::bitVectorFill(vec, 32, 64);
244 EXPECT(vec[0] == 0x00000000u);
245 EXPECT(vec[1] == 0xFFFFFFFFu);
246 EXPECT(vec[2] == 0xFFFFFFFFu);
246 EXPECT_EQ(vec[0], 0x00000000u);
247 EXPECT_EQ(vec[1], 0xFFFFFFFFu);
248 EXPECT_EQ(vec[2], 0xFFFFFFFFu);
247249
248250 Support::bitVectorSetBit(vec, 1, true);
249 EXPECT(vec[0] == 0x00000002u);
250 EXPECT(vec[1] == 0xFFFFFFFFu);
251 EXPECT(vec[2] == 0xFFFFFFFFu);
251 EXPECT_EQ(vec[0], 0x00000002u);
252 EXPECT_EQ(vec[1], 0xFFFFFFFFu);
253 EXPECT_EQ(vec[2], 0xFFFFFFFFu);
252254
253255 Support::bitVectorSetBit(vec, 95, false);
254 EXPECT(vec[0] == 0x00000002u);
255 EXPECT(vec[1] == 0xFFFFFFFFu);
256 EXPECT(vec[2] == 0x7FFFFFFFu);
256 EXPECT_EQ(vec[0], 0x00000002u);
257 EXPECT_EQ(vec[1], 0xFFFFFFFFu);
258 EXPECT_EQ(vec[2], 0x7FFFFFFFu);
257259
258260 Support::bitVectorClear(vec, 33, 32);
259 EXPECT(vec[0] == 0x00000002u);
260 EXPECT(vec[1] == 0x00000001u);
261 EXPECT(vec[2] == 0x7FFFFFFEu);
261 EXPECT_EQ(vec[0], 0x00000002u);
262 EXPECT_EQ(vec[1], 0x00000001u);
263 EXPECT_EQ(vec[2], 0x7FFFFFFEu);
262264 }
263265
264266 INFO("Support::bitVectorIndexOf");
265267 {
266268 uint32_t vec1[1] = { 0x80000000 };
267 EXPECT(Support::bitVectorIndexOf(vec1, 0, true) == 31);
268 EXPECT(Support::bitVectorIndexOf(vec1, 1, true) == 31);
269 EXPECT(Support::bitVectorIndexOf(vec1, 31, true) == 31);
269 EXPECT_EQ(Support::bitVectorIndexOf(vec1, 0, true), 31u);
270 EXPECT_EQ(Support::bitVectorIndexOf(vec1, 1, true), 31u);
271 EXPECT_EQ(Support::bitVectorIndexOf(vec1, 31, true), 31u);
270272
271273 uint32_t vec2[2] = { 0x00000000, 0x80000000 };
272 EXPECT(Support::bitVectorIndexOf(vec2, 0, true) == 63);
273 EXPECT(Support::bitVectorIndexOf(vec2, 1, true) == 63);
274 EXPECT(Support::bitVectorIndexOf(vec2, 31, true) == 63);
275 EXPECT(Support::bitVectorIndexOf(vec2, 32, true) == 63);
276 EXPECT(Support::bitVectorIndexOf(vec2, 33, true) == 63);
277 EXPECT(Support::bitVectorIndexOf(vec2, 63, true) == 63);
274 EXPECT_EQ(Support::bitVectorIndexOf(vec2, 0, true), 63u);
275 EXPECT_EQ(Support::bitVectorIndexOf(vec2, 1, true), 63u);
276 EXPECT_EQ(Support::bitVectorIndexOf(vec2, 31, true), 63u);
277 EXPECT_EQ(Support::bitVectorIndexOf(vec2, 32, true), 63u);
278 EXPECT_EQ(Support::bitVectorIndexOf(vec2, 33, true), 63u);
279 EXPECT_EQ(Support::bitVectorIndexOf(vec2, 63, true), 63u);
278280
279281 uint32_t vec3[3] = { 0x00000001, 0x00000000, 0x80000000 };
280 EXPECT(Support::bitVectorIndexOf(vec3, 0, true) == 0);
281 EXPECT(Support::bitVectorIndexOf(vec3, 1, true) == 95);
282 EXPECT(Support::bitVectorIndexOf(vec3, 2, true) == 95);
283 EXPECT(Support::bitVectorIndexOf(vec3, 31, true) == 95);
284 EXPECT(Support::bitVectorIndexOf(vec3, 32, true) == 95);
285 EXPECT(Support::bitVectorIndexOf(vec3, 63, true) == 95);
286 EXPECT(Support::bitVectorIndexOf(vec3, 64, true) == 95);
287 EXPECT(Support::bitVectorIndexOf(vec3, 95, true) == 95);
282 EXPECT_EQ(Support::bitVectorIndexOf(vec3, 0, true), 0u);
283 EXPECT_EQ(Support::bitVectorIndexOf(vec3, 1, true), 95u);
284 EXPECT_EQ(Support::bitVectorIndexOf(vec3, 2, true), 95u);
285 EXPECT_EQ(Support::bitVectorIndexOf(vec3, 31, true), 95u);
286 EXPECT_EQ(Support::bitVectorIndexOf(vec3, 32, true), 95u);
287 EXPECT_EQ(Support::bitVectorIndexOf(vec3, 63, true), 95u);
288 EXPECT_EQ(Support::bitVectorIndexOf(vec3, 64, true), 95u);
289 EXPECT_EQ(Support::bitVectorIndexOf(vec3, 95, true), 95u);
288290
289291 uint32_t vec4[3] = { ~vec3[0], ~vec3[1], ~vec3[2] };
290 EXPECT(Support::bitVectorIndexOf(vec4, 0, false) == 0);
291 EXPECT(Support::bitVectorIndexOf(vec4, 1, false) == 95);
292 EXPECT(Support::bitVectorIndexOf(vec4, 2, false) == 95);
293 EXPECT(Support::bitVectorIndexOf(vec4, 31, false) == 95);
294 EXPECT(Support::bitVectorIndexOf(vec4, 32, false) == 95);
295 EXPECT(Support::bitVectorIndexOf(vec4, 63, false) == 95);
296 EXPECT(Support::bitVectorIndexOf(vec4, 64, false) == 95);
297 EXPECT(Support::bitVectorIndexOf(vec4, 95, false) == 95);
292 EXPECT_EQ(Support::bitVectorIndexOf(vec4, 0, false), 0u);
293 EXPECT_EQ(Support::bitVectorIndexOf(vec4, 1, false), 95u);
294 EXPECT_EQ(Support::bitVectorIndexOf(vec4, 2, false), 95u);
295 EXPECT_EQ(Support::bitVectorIndexOf(vec4, 31, false), 95u);
296 EXPECT_EQ(Support::bitVectorIndexOf(vec4, 32, false), 95u);
297 EXPECT_EQ(Support::bitVectorIndexOf(vec4, 63, false), 95u);
298 EXPECT_EQ(Support::bitVectorIndexOf(vec4, 64, false), 95u);
299 EXPECT_EQ(Support::bitVectorIndexOf(vec4, 95, false), 95u);
298300 }
299301
300302 INFO("Support::BitWordIterator<uint32_t>");
301303 {
302304 Support::BitWordIterator<uint32_t> it(0x80000F01u);
303 EXPECT(it.hasNext());
304 EXPECT(it.next() == 0);
305 EXPECT(it.hasNext());
306 EXPECT(it.next() == 8);
307 EXPECT(it.hasNext());
308 EXPECT(it.next() == 9);
309 EXPECT(it.hasNext());
310 EXPECT(it.next() == 10);
311 EXPECT(it.hasNext());
312 EXPECT(it.next() == 11);
313 EXPECT(it.hasNext());
314 EXPECT(it.next() == 31);
315 EXPECT(!it.hasNext());
305 EXPECT_TRUE(it.hasNext());
306 EXPECT_EQ(it.next(), 0u);
307 EXPECT_TRUE(it.hasNext());
308 EXPECT_EQ(it.next(), 8u);
309 EXPECT_TRUE(it.hasNext());
310 EXPECT_EQ(it.next(), 9u);
311 EXPECT_TRUE(it.hasNext());
312 EXPECT_EQ(it.next(), 10u);
313 EXPECT_TRUE(it.hasNext());
314 EXPECT_EQ(it.next(), 11u);
315 EXPECT_TRUE(it.hasNext());
316 EXPECT_EQ(it.next(), 31u);
317 EXPECT_FALSE(it.hasNext());
316318
317319 // No bits set.
318320 it.init(0x00000000u);
319 ASMJIT_ASSERT(!it.hasNext());
321 EXPECT_FALSE(it.hasNext());
320322
321323 // Only first bit set.
322324 it.init(0x00000001u);
323 EXPECT(it.hasNext());
324 EXPECT(it.next() == 0);
325 ASMJIT_ASSERT(!it.hasNext());
325 EXPECT_TRUE(it.hasNext());
326 EXPECT_EQ(it.next(), 0u);
327 EXPECT_FALSE(it.hasNext());
326328
327329 // Only last bit set (special case).
328330 it.init(0x80000000u);
329 ASMJIT_ASSERT(it.hasNext());
330 ASMJIT_ASSERT(it.next() == 31);
331 ASMJIT_ASSERT(!it.hasNext());
331 EXPECT_TRUE(it.hasNext());
332 EXPECT_EQ(it.next(), 31u);
333 EXPECT_FALSE(it.hasNext());
332334 }
333335
334336 INFO("Support::BitWordIterator<uint64_t>");
335337 {
336338 Support::BitWordIterator<uint64_t> it(uint64_t(1) << 63);
337 ASMJIT_ASSERT(it.hasNext());
338 ASMJIT_ASSERT(it.next() == 63);
339 ASMJIT_ASSERT(!it.hasNext());
339 EXPECT_TRUE(it.hasNext());
340 EXPECT_EQ(it.next(), 63u);
341 EXPECT_FALSE(it.hasNext());
340342 }
341343
342344 INFO("Support::BitVectorIterator<uint32_t>");
345347 static const uint32_t bitsNone[] = { 0xFFFFFFFFu };
346348 Support::BitVectorIterator<uint32_t> it(bitsNone, 0);
347349
348 EXPECT(!it.hasNext());
350 EXPECT_FALSE(it.hasNext());
349351 it.init(bitsNone, 0, 1);
350 EXPECT(!it.hasNext());
352 EXPECT_FALSE(it.hasNext());
351353 it.init(bitsNone, 0, 128);
352 EXPECT(!it.hasNext());
354 EXPECT_FALSE(it.hasNext());
353355
354356 static const uint32_t bits1[] = { 0x80000008u, 0x80000001u, 0x00000000u, 0x80000000u, 0x00000000u, 0x00000000u, 0x00003000u };
355357 it.init(bits1, ASMJIT_ARRAY_SIZE(bits1));
356358
357 EXPECT(it.hasNext());
358 EXPECT(it.next() == 3);
359 EXPECT(it.hasNext());
360 EXPECT(it.next() == 31);
361 EXPECT(it.hasNext());
362 EXPECT(it.next() == 32);
363 EXPECT(it.hasNext());
364 EXPECT(it.next() == 63);
365 EXPECT(it.hasNext());
366 EXPECT(it.next() == 127);
367 EXPECT(it.hasNext());
368 EXPECT(it.next() == 204);
369 EXPECT(it.hasNext());
370 EXPECT(it.next() == 205);
371 EXPECT(!it.hasNext());
359 EXPECT_TRUE(it.hasNext());
360 EXPECT_EQ(it.next(), 3u);
361 EXPECT_TRUE(it.hasNext());
362 EXPECT_EQ(it.next(), 31u);
363 EXPECT_TRUE(it.hasNext());
364 EXPECT_EQ(it.next(), 32u);
365 EXPECT_TRUE(it.hasNext());
366 EXPECT_EQ(it.next(), 63u);
367 EXPECT_TRUE(it.hasNext());
368 EXPECT_EQ(it.next(), 127u);
369 EXPECT_TRUE(it.hasNext());
370 EXPECT_EQ(it.next(), 204u);
371 EXPECT_TRUE(it.hasNext());
372 EXPECT_EQ(it.next(), 205u);
373 EXPECT_FALSE(it.hasNext());
372374
373375 it.init(bits1, ASMJIT_ARRAY_SIZE(bits1), 4);
374 EXPECT(it.hasNext());
375 EXPECT(it.next() == 31);
376 EXPECT_TRUE(it.hasNext());
377 EXPECT_EQ(it.next(), 31u);
376378
377379 it.init(bits1, ASMJIT_ARRAY_SIZE(bits1), 64);
378 EXPECT(it.hasNext());
379 EXPECT(it.next() == 127);
380 EXPECT_TRUE(it.hasNext());
381 EXPECT_EQ(it.next(), 127u);
380382
381383 it.init(bits1, ASMJIT_ARRAY_SIZE(bits1), 127);
382 EXPECT(it.hasNext());
383 EXPECT(it.next() == 127);
384 EXPECT_TRUE(it.hasNext());
385 EXPECT_EQ(it.next(), 127u);
384386
385387 static const uint32_t bits2[] = { 0x80000000u, 0x80000000u, 0x00000000u, 0x80000000u };
386388 it.init(bits2, ASMJIT_ARRAY_SIZE(bits2));
387389
388 EXPECT(it.hasNext());
389 EXPECT(it.next() == 31);
390 EXPECT(it.hasNext());
391 EXPECT(it.next() == 63);
392 EXPECT(it.hasNext());
393 EXPECT(it.next() == 127);
394 EXPECT(!it.hasNext());
390 EXPECT_TRUE(it.hasNext());
391 EXPECT_EQ(it.next(), 31u);
392 EXPECT_TRUE(it.hasNext());
393 EXPECT_EQ(it.next(), 63u);
394 EXPECT_TRUE(it.hasNext());
395 EXPECT_EQ(it.next(), 127u);
396 EXPECT_FALSE(it.hasNext());
395397
396398 static const uint32_t bits3[] = { 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u };
397399 it.init(bits3, ASMJIT_ARRAY_SIZE(bits3));
398 EXPECT(!it.hasNext());
400 EXPECT_FALSE(it.hasNext());
399401
400402 static const uint32_t bits4[] = { 0x00000000u, 0x00000000u, 0x00000000u, 0x80000000u };
401403 it.init(bits4, ASMJIT_ARRAY_SIZE(bits4));
402 EXPECT(it.hasNext());
403 EXPECT(it.next() == 127);
404 EXPECT(!it.hasNext());
404 EXPECT_TRUE(it.hasNext());
405 EXPECT_EQ(it.next(), 127u);
406 EXPECT_FALSE(it.hasNext());
405407 }
406408
407409 INFO("Support::BitVectorIterator<uint64_t>");
409411 static const uint64_t bits1[] = { 0x80000000u, 0x80000000u, 0x00000000u, 0x80000000u };
410412 Support::BitVectorIterator<uint64_t> it(bits1, ASMJIT_ARRAY_SIZE(bits1));
411413
412 EXPECT(it.hasNext());
413 EXPECT(it.next() == 31);
414 EXPECT(it.hasNext());
415 EXPECT(it.next() == 95);
416 EXPECT(it.hasNext());
417 EXPECT(it.next() == 223);
418 EXPECT(!it.hasNext());
414 EXPECT_TRUE(it.hasNext());
415 EXPECT_EQ(it.next(), 31u);
416 EXPECT_TRUE(it.hasNext());
417 EXPECT_EQ(it.next(), 95u);
418 EXPECT_TRUE(it.hasNext());
419 EXPECT_EQ(it.next(), 223u);
420 EXPECT_FALSE(it.hasNext());
419421
420422 static const uint64_t bits2[] = { 0x8000000000000000u, 0, 0, 0 };
421423 it.init(bits2, ASMJIT_ARRAY_SIZE(bits2));
422424
423 EXPECT(it.hasNext());
424 EXPECT(it.next() == 63);
425 EXPECT(!it.hasNext());
425 EXPECT_TRUE(it.hasNext());
426 EXPECT_EQ(it.next(), 63u);
427 EXPECT_FALSE(it.hasNext());
426428 }
427429 }
428430
938938 return int(uint8_t(a[size]));
939939 }
940940
941 //! Compares two string views.
942 static ASMJIT_FORCE_INLINE int compareStringViews(const char* aData, size_t aSize, const char* bData, size_t bSize) noexcept {
943 size_t size = Support::min(aSize, bSize);
944
945 for (size_t i = 0; i < size; i++) {
946 int c = int(uint8_t(aData[i])) - int(uint8_t(bData[i]));
947 if (c != 0)
948 return c;
949 }
950
951 return int(aSize) - int(bSize);
952 }
941953 // Support - Memory Read Access - 8 Bits
942954 // =====================================
943955
0 // This file is part of AsmJit project <https://asmjit.com>
1 //
2 // See asmjit.h or LICENSE.md for license and copyright information
3 // SPDX-License-Identifier: Zlib
4
5 #ifndef ASMJIT_CORE_SUPPORT_P_H_INCLUDED
6 #define ASMJIT_CORE_SUPPORT_P_H_INCLUDED
7
8 #include "../core/support.h"
9
10 ASMJIT_BEGIN_NAMESPACE
11
12 //! \addtogroup asmjit_utilities
13 //! \{
14
15 namespace Support {
16
17 //! \cond INTERNAL
18
19 static ASMJIT_FORCE_INLINE char decode5BitChar(uint32_t c) noexcept {
20 uint32_t base = c <= 26 ? uint32_t('a') - 1u : uint32_t('0') - 27u;
21 return char(base + c);
22 }
23
24 static ASMJIT_FORCE_INLINE size_t decodeInstName(char nameOut[32], uint32_t index, const char* stringTable) noexcept {
25 size_t i;
26
27 if (index & 0x80000000u) {
28 // Small string of 5-bit characters.
29 for (i = 0; i < 6; i++, index >>= 5) {
30 uint32_t c = index & 0x1F;
31 if (c == 0)
32 break;
33 nameOut[i] = decode5BitChar(c);
34 }
35 return i;
36 }
37 else {
38 size_t prefixBase = index & 0xFFFu;
39 size_t prefixSize = (index >> 12) & 0xFu;
40
41 size_t suffixBase = (index >> 16) & 0xFFFu;
42 size_t suffixSize = (index >> 28) & 0x7u;
43
44 for (i = 0; i < prefixSize; i++)
45 nameOut[i] = stringTable[prefixBase + i];
46
47 char* suffixOut = nameOut + prefixSize;
48 for (i = 0; i < suffixSize; i++)
49 suffixOut[i] = stringTable[suffixBase + i];
50
51 return prefixSize + suffixSize;
52 }
53 }
54
55 //! \endcond
56
57 } // {Support}
58
59 //! \}
60
61 ASMJIT_END_NAMESPACE
62
63 #endif // ASMJIT_CORE_SUPPORT_P_H_INCLUDED
77
88 ASMJIT_BEGIN_NAMESPACE
99
10 Target::Target() noexcept : _environment() {}
10 Target::Target() noexcept
11 : _environment{},
12 _cpuFeatures{} {}
1113 Target::~Target() noexcept {}
1214
1315 ASMJIT_END_NAMESPACE
66 #define ASMJIT_CORE_TARGET_H_INCLUDED
77
88 #include "../core/archtraits.h"
9 #include "../core/cpuinfo.h"
910 #include "../core/func.h"
1011
1112 ASMJIT_BEGIN_NAMESPACE
2122
2223 //! Target environment information.
2324 Environment _environment;
25 //! Target CPU features.
26 CpuFeatures _cpuFeatures;
2427
2528 //! \name Construction & Destruction
2629 //! \{
4245 //! Returns the target sub-architecture.
4346 inline SubArch subArch() const noexcept { return _environment.subArch(); }
4447
48 //! Returns target CPU features.
49 inline const CpuFeatures& cpuFeatures() const noexcept { return _cpuFeatures; }
50
4551 //! \}
4652 };
4753
4141 #if !defined(MAP_ANONYMOUS)
4242 #define MAP_ANONYMOUS MAP_ANON
4343 #endif
44
45 #define ASMJIT_ANONYMOUS_MEMORY_USE_FD
46
47 #if defined(__APPLE__) || defined(__BIONIC__)
48 #define ASMJIT_VM_SHM_DETECT 0
49 #else
50 #define ASMJIT_VM_SHM_DETECT 1
51 #endif
52
53 // Android NDK doesn't provide `shm_open()` and `shm_unlink()`.
54 #if !defined(__BIONIC__)
55 #define ASMJIT_HAS_SHM_OPEN
56 #endif
57
58 #if defined(__APPLE__) && TARGET_OS_OSX && ASMJIT_ARCH_ARM >= 64
59 #define ASMJIT_HAS_PTHREAD_JIT_WRITE_PROTECT_NP
60 #endif
61
62 #if defined(__NetBSD__) && defined(MAP_REMAPDUP) && defined(PROT_MPROTECT)
63 #undef ASMJIT_ANONYMOUS_MEMORY_USE_FD
64 #define ASMJIT_ANONYMOUS_MEMORY_USE_REMAPDUP
65 #endif
4466 #endif
4567
4668 #include <atomic>
47
48 #if defined(__APPLE__) || defined(__BIONIC__)
49 #define ASMJIT_VM_SHM_DETECT 0
50 #else
51 #define ASMJIT_VM_SHM_DETECT 1
52 #endif
53
54 // Android NDK doesn't provide `shm_open()` and `shm_unlink()`.
55 #if !defined(_WIN32) && !defined(__BIONIC__)
56 #define ASMJIT_HAS_SHM_OPEN_AND_UNLINK
57 #endif
58
59 #if defined(__APPLE__) && TARGET_OS_OSX && ASMJIT_ARCH_ARM >= 64
60 #define ASMJIT_HAS_PTHREAD_JIT_WRITE_PROTECT_NP
61 #endif
6269
6370 ASMJIT_BEGIN_SUB_NAMESPACE(VirtMem)
6471
6572 // Virtual Memory Utilities
6673 // ========================
6774
68 static const MemoryFlags dualMappingFilter[2] = {
75 ASMJIT_MAYBE_UNUSED
76 static const constexpr MemoryFlags dualMappingFilter[2] = {
6977 MemoryFlags::kAccessWrite | MemoryFlags::kMMapMaxAccessWrite,
7078 MemoryFlags::kAccessExecute | MemoryFlags::kMMapMaxAccessExecute
7179 };
216224
217225 #if !defined(_WIN32)
218226
219 static void getVMInfo(Info& vmInfo) noexcept {
220 uint32_t pageSize = uint32_t(::getpagesize());
221
222 vmInfo.pageSize = pageSize;
223 vmInfo.pageGranularity = Support::max<uint32_t>(pageSize, 65536);
224 }
225
226 #if !defined(SHM_ANON)
227 static const char* getTmpDir() noexcept {
228 const char* tmpDir = getenv("TMPDIR");
229 return tmpDir ? tmpDir : "/tmp";
230 }
231 #endif
227 // Virtual Memory [Posix] - Utilities
228 // ==================================
232229
233230 // Translates libc errors specific to VirtualMemory mapping to `asmjit::Error`.
234231 static Error asmjitErrorFromErrno(int e) noexcept {
253250 }
254251 }
255252
253 static void getVMInfo(Info& vmInfo) noexcept {
254 uint32_t pageSize = uint32_t(::getpagesize());
255
256 vmInfo.pageSize = pageSize;
257 vmInfo.pageGranularity = Support::max<uint32_t>(pageSize, 65536);
258 }
259
260 #if defined(__APPLE__) && TARGET_OS_OSX
261 static int getOSXVersion() noexcept {
262 // MAP_JIT flag required to run unsigned JIT code is only supported by kernel version 10.14+ (Mojave).
263 static std::atomic<int> globalVersion;
264
265 int ver = globalVersion.load();
266 if (!ver) {
267 struct utsname osname {};
268 uname(&osname);
269 ver = atoi(osname.release);
270 globalVersion.store(ver);
271 }
272
273 return ver;
274 }
275 #endif // __APPLE__ && TARGET_OS_OSX
276
277 // Returns `mmap()` protection flags from \ref MemoryFlags.
278 static int mmProtFromMemoryFlags(MemoryFlags memoryFlags) noexcept {
279 int protection = 0;
280 if (Support::test(memoryFlags, MemoryFlags::kAccessRead)) protection |= PROT_READ;
281 if (Support::test(memoryFlags, MemoryFlags::kAccessWrite)) protection |= PROT_READ | PROT_WRITE;
282 if (Support::test(memoryFlags, MemoryFlags::kAccessExecute)) protection |= PROT_READ | PROT_EXEC;
283 return protection;
284 }
285
286 // Virtual Memory [Posix] - Anonymus Memory
287 // ========================================
288
289 #if defined(ASMJIT_ANONYMOUS_MEMORY_USE_FD)
290
256291 // Some operating systems don't allow /dev/shm to be executable. On Linux this happens when /dev/shm is mounted with
257292 // 'noexec', which is enforced by systemd. Other operating systems like MacOS also restrict executable permissions
258293 // regarding /dev/shm, so we use a runtime detection before attempting to allocate executable memory. Sometimes we
259 // don't need the detection as we know it would always result in `ShmStrategy::kTmpDir`.
260 enum class ShmStrategy : uint32_t {
294 // don't need the detection as we know it would always result in `AnonymousMemoryStrategy::kTmpDir`.
295 enum class AnonymousMemoryStrategy : uint32_t {
261296 kUnknown = 0,
262297 kDevShm = 1,
263298 kTmpDir = 2
264299 };
300
301 #if !defined(SHM_ANON)
302 static const char* getTmpDir() noexcept {
303 const char* tmpDir = getenv("TMPDIR");
304 return tmpDir ? tmpDir : "/tmp";
305 }
306 #endif
265307
266308 class AnonymousMemory {
267309 public:
289331
290332 Error open(bool preferTmpOverDevShm) noexcept {
291333 #if defined(__linux__) && defined(__NR_memfd_create)
334
335 #if !defined(MFD_CLOEXEC)
336 #define MFD_CLOEXEC 0x0001u
337 #endif
338
292339 // Linux specific 'memfd_create' - if the syscall returns `ENOSYS` it means
293340 // it's not available and we will never call it again (would be pointless).
341 //
342 // NOTE: There is also memfd_create() libc function in FreeBSD, but it internally
343 // uses `shm_open(SHM_ANON, ...)` so it's not needed to add support for it (it's
344 // not a syscall as in Linux).
294345
295346 // Zero initialized, if ever changed to '1' that would mean the syscall is not
296 // available and we must use `shm_open()` and `shm_unlink()`.
347 // available and we must use `shm_open()` and `shm_unlink()` (or regular `open()`).
297348 static volatile uint32_t memfd_create_not_supported;
298349
299350 if (!memfd_create_not_supported) {
300 _fd = (int)syscall(__NR_memfd_create, "vmem", 0);
351 _fd = (int)syscall(__NR_memfd_create, "vmem", MFD_CLOEXEC);
301352 if (ASMJIT_LIKELY(_fd >= 0))
302353 return kErrorOk;
303354
309360 }
310361 #endif
311362
312 #if defined(SHM_ANON)
363 #if defined(ASMJIT_HAS_SHM_OPEN) && defined(SHM_ANON)
313364 // Originally FreeBSD extension, apparently works in other BSDs too.
314365 DebugUtils::unused(preferTmpOverDevShm);
315366 _fd = ::shm_open(SHM_ANON, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
344395 return kErrorOk;
345396 }
346397 }
347 #ifdef ASMJIT_HAS_SHM_OPEN_AND_UNLINK
398 #if defined(ASMJIT_HAS_SHM_OPEN)
348399 else {
349400 _tmpName.assignFormat(kShmFormat, (unsigned long long)bits);
350401 _fd = ::shm_open(_tmpName.data(), O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
368419 FileType type = _fileType;
369420 _fileType = kFileTypeNone;
370421
371 #ifdef ASMJIT_HAS_SHM_OPEN_AND_UNLINK
422 #ifdef ASMJIT_HAS_SHM_OPEN
372423 if (type == kFileTypeShm) {
373424 ::shm_unlink(_tmpName.data());
374425 return;
397448 }
398449 };
399450
400 // Returns `mmap()` protection flags from \ref MemoryFlags.
401 static int mmProtFromMemoryFlags(MemoryFlags memoryFlags) noexcept {
402 int protection = 0;
403 if (Support::test(memoryFlags, MemoryFlags::kAccessRead)) protection |= PROT_READ;
404 if (Support::test(memoryFlags, MemoryFlags::kAccessWrite)) protection |= PROT_READ | PROT_WRITE;
405 if (Support::test(memoryFlags, MemoryFlags::kAccessExecute)) protection |= PROT_READ | PROT_EXEC;
406 return protection;
407 }
408
409 #if defined(__APPLE__) && TARGET_OS_OSX
410 static int getOSXVersion() noexcept {
411 // MAP_JIT flag required to run unsigned JIT code is only supported by kernel version 10.14+ (Mojave).
412 static std::atomic<uint32_t> globalVersion;
413
414 int ver = globalVersion.load();
415 if (!ver) {
416 struct utsname osname {};
417 uname(&osname);
418 ver = atoi(osname.release);
419 globalVersion.store(ver);
420 }
421
422 return ver;
423 }
424 #endif // __APPLE__ && TARGET_OS_OSX
451 #if ASMJIT_VM_SHM_DETECT
452 static Error detectAnonymousMemoryStrategy(AnonymousMemoryStrategy* strategyOut) noexcept {
453 AnonymousMemory anonMem;
454 Info vmInfo = info();
455
456 ASMJIT_PROPAGATE(anonMem.open(false));
457 ASMJIT_PROPAGATE(anonMem.allocate(vmInfo.pageSize));
458
459 void* ptr = mmap(nullptr, vmInfo.pageSize, PROT_READ | PROT_EXEC, MAP_SHARED, anonMem.fd(), 0);
460 if (ptr == MAP_FAILED) {
461 int e = errno;
462 if (e == EINVAL) {
463 *strategyOut = AnonymousMemoryStrategy::kTmpDir;
464 return kErrorOk;
465 }
466 return DebugUtils::errored(asmjitErrorFromErrno(e));
467 }
468 else {
469 munmap(ptr, vmInfo.pageSize);
470 *strategyOut = AnonymousMemoryStrategy::kDevShm;
471 return kErrorOk;
472 }
473 }
474 #endif
475
476 static Error getAnonymousMemoryStrategy(AnonymousMemoryStrategy* strategyOut) noexcept {
477 #if ASMJIT_VM_SHM_DETECT
478 // Initially don't assume anything. It has to be tested whether '/dev/shm' was mounted with 'noexec' flag or not.
479 static std::atomic<uint32_t> globalStrategy;
480
481 AnonymousMemoryStrategy strategy = static_cast<AnonymousMemoryStrategy>(globalStrategy.load());
482 if (strategy == AnonymousMemoryStrategy::kUnknown) {
483 ASMJIT_PROPAGATE(detectAnonymousMemoryStrategy(&strategy));
484 globalStrategy.store(static_cast<uint32_t>(strategy));
485 }
486
487 *strategyOut = strategy;
488 return kErrorOk;
489 #else
490 *strategyOut = AnonymousMemoryStrategy::kTmpDir;
491 return kErrorOk;
492 #endif
493 }
494
495 #endif // ASMJIT_ANONYMOUS_MEMORY_USE_FD
496
497 // Virtual Memory [Posix] - Hardened Runtime & MAP_JIT
498 // ===================================================
425499
426500 // Detects whether the current process is hardened, which means that pages that have WRITE and EXECUTABLE flags
427501 // cannot be normally allocated. On OSX + AArch64 such allocation requires MAP_JIT flag, other platforms don't
428502 // support this combination.
429503 static bool hasHardenedRuntime() noexcept {
430 #if TARGET_OS_OSX && ASMJIT_ARCH_ARM >= 64
504 #if defined(__APPLE__) && TARGET_OS_OSX && ASMJIT_ARCH_ARM >= 64
431505 // OSX on AArch64 has always hardened runtime enabled.
432506 return true;
433507 #else
441515
442516 uint32_t flag = globalHardenedFlag.load();
443517 if (flag == kHardenedFlagUnknown) {
444 uint32_t pageSize = uint32_t(::getpagesize());
445
446 void* ptr = mmap(nullptr, pageSize, PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
518 size_t pageSize = size_t(::getpagesize());
519 void* ptr = mmap(nullptr, pageSize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
520
447521 if (ptr == MAP_FAILED) {
448522 flag = kHardenedFlagEnabled;
449523 }
451525 flag = kHardenedFlagDisabled;
452526 munmap(ptr, pageSize);
453527 }
528
454529 globalHardenedFlag.store(flag);
455530 }
456531
472547 #endif
473548 }
474549
475 // Returns either MAP_JIT or 0 based on `flags` and the host operating system.
550 // Returns either MAP_JIT or 0 based on `memoryFlags` and the host operating system.
476551 static inline int mmMapJitFromMemoryFlags(MemoryFlags memoryFlags) noexcept {
477552 #if defined(__APPLE__)
478553 // Always use MAP_JIT flag if user asked for it (could be used for testing on non-hardened processes) and detect
479554 // whether it must be used when the process is actually hardened (in that case it doesn't make sense to rely on
480555 // user `memoryFlags`).
481 bool useMapJit = Support::test(memoryFlags, MemoryFlags::kMMapEnableMapJit) || hasHardenedRuntime();
556 //
557 // MAP_JIT is not required when dual-mapping memory and is incompatible with MAP_SHARED, so it will not be
558 // added when the latter is enabled.
559 bool useMapJit = (Support::test(memoryFlags, MemoryFlags::kMMapEnableMapJit) || hasHardenedRuntime())
560 && !Support::test(memoryFlags, MemoryFlags::kMapShared);
482561 if (useMapJit)
483562 return hasMapJitSupport() ? int(MAP_JIT) : 0;
484563 else
489568 #endif
490569 }
491570
492 // Returns BSD-specific `PROT_MAX()` flags.
571 ASMJIT_MAYBE_UNUSED
572 static MemoryFlags maxAccessFlagsToRegularAccessFlags(MemoryFlags memoryFlags) noexcept {
573 static constexpr uint32_t kMaxProtShift = Support::ConstCTZ<uint32_t(MemoryFlags::kMMapMaxAccessRead)>::value;
574 return MemoryFlags(uint32_t(memoryFlags & MemoryFlags::kMMapMaxAccessRWX) >> kMaxProtShift);
575 }
576
577 ASMJIT_MAYBE_UNUSED
578 static MemoryFlags regularAccessFlagsToMaxAccessFlags(MemoryFlags memoryFlags) noexcept {
579 static constexpr uint32_t kMaxProtShift = Support::ConstCTZ<uint32_t(MemoryFlags::kMMapMaxAccessRead)>::value;
580 return MemoryFlags(uint32_t(memoryFlags & MemoryFlags::kAccessRWX) << kMaxProtShift);
581 }
582
583 // Returns maximum protection flags from `memoryFlags`.
584 //
585 // Uses:
586 // - `PROT_MPROTECT()` on NetBSD.
587 // - `PROT_MAX()` when available(BSD).
588 ASMJIT_MAYBE_UNUSED
493589 static inline int mmMaxProtFromMemoryFlags(MemoryFlags memoryFlags) noexcept {
494 #if defined(PROT_MAX)
495 static constexpr uint32_t kMaxProtShift = Support::ConstCTZ<uint32_t(MemoryFlags::kMMapMaxAccessRead)>::value;
496
497 if (Support::test(memoryFlags, MemoryFlags::kMMapMaxAccessReadWrite | MemoryFlags::kMMapMaxAccessExecute))
498 return PROT_MAX(mmProtFromMemoryFlags((MemoryFlags)(uint32_t(memoryFlags) >> kMaxProtShift)));
499 else
590 MemoryFlags acc = maxAccessFlagsToRegularAccessFlags(memoryFlags);
591 if (acc != MemoryFlags::kNone) {
592 #if defined(__NetBSD__) && defined(PROT_MPROTECT)
593 return PROT_MPROTECT(mmProtFromMemoryFlags(acc));
594 #elif defined(PROT_MAX)
595 return PROT_MAX(mmProtFromMemoryFlags(acc));
596 #else
500597 return 0;
501 #else
502 DebugUtils::unused(memoryFlags);
598 #endif
599 }
600
503601 return 0;
504 #endif
505 }
506
507 #if ASMJIT_VM_SHM_DETECT
508 static Error detectShmStrategy(ShmStrategy* strategyOut) noexcept {
509 AnonymousMemory anonMem;
510 Info vmInfo = info();
511
512 ASMJIT_PROPAGATE(anonMem.open(false));
513 ASMJIT_PROPAGATE(anonMem.allocate(vmInfo.pageSize));
514
515 void* ptr = mmap(nullptr, vmInfo.pageSize, PROT_READ | PROT_EXEC, MAP_SHARED, anonMem.fd(), 0);
516 if (ptr == MAP_FAILED) {
517 int e = errno;
518 if (e == EINVAL) {
519 *strategyOut = ShmStrategy::kTmpDir;
520 return kErrorOk;
521 }
522 return DebugUtils::errored(asmjitErrorFromErrno(e));
523 }
524 else {
525 munmap(ptr, vmInfo.pageSize);
526 *strategyOut = ShmStrategy::kDevShm;
527 return kErrorOk;
528 }
529 }
530 #endif
531
532 static Error getShmStrategy(ShmStrategy* strategyOut) noexcept {
533 #if ASMJIT_VM_SHM_DETECT
534 // Initially don't assume anything. It has to be tested whether '/dev/shm' was mounted with 'noexec' flag or not.
535 static std::atomic<uint32_t> globalShmStrategy;
536
537 ShmStrategy strategy = static_cast<ShmStrategy>(globalShmStrategy.load());
538 if (strategy == ShmStrategy::kUnknown) {
539 ASMJIT_PROPAGATE(detectShmStrategy(&strategy));
540 globalShmStrategy.store(static_cast<uint32_t>(strategy));
541 }
542
543 *strategyOut = strategy;
544 return kErrorOk;
545 #else
546 *strategyOut = ShmStrategy::kTmpDir;
547 return kErrorOk;
548 #endif
549602 }
550603
551604 static HardenedRuntimeFlags getHardenedRuntimeFlags() noexcept {
560613 return flags;
561614 }
562615
563 Error alloc(void** p, size_t size, MemoryFlags memoryFlags) noexcept {
616 static Error mapMemory(void** p, size_t size, MemoryFlags memoryFlags, int fd = -1, off_t offset = 0) noexcept {
564617 *p = nullptr;
565618 if (size == 0)
566619 return DebugUtils::errored(kErrorInvalidArgument);
567620
568621 int protection = mmProtFromMemoryFlags(memoryFlags) | mmMaxProtFromMemoryFlags(memoryFlags);
569 int mmFlags = MAP_PRIVATE | MAP_ANONYMOUS | mmMapJitFromMemoryFlags(memoryFlags);
570
571 void* ptr = mmap(nullptr, size, protection, mmFlags, -1, 0);
622 int mmFlags = mmMapJitFromMemoryFlags(memoryFlags);
623
624 mmFlags |= Support::test(memoryFlags, MemoryFlags::kMapShared) ? MAP_SHARED : MAP_PRIVATE;
625 if (fd == -1)
626 mmFlags |= MAP_ANONYMOUS;
627
628 void* ptr = mmap(nullptr, size, protection, mmFlags, fd, offset);
572629 if (ptr == MAP_FAILED)
573 return DebugUtils::errored(kErrorOutOfMemory);
630 return DebugUtils::errored(asmjitErrorFromErrno(errno));
574631
575632 *p = ptr;
576633 return kErrorOk;
577634 }
578635
636 static Error unmapMemory(void* p, size_t size) noexcept {
637 if (ASMJIT_UNLIKELY(munmap(p, size) != 0))
638 return DebugUtils::errored(asmjitErrorFromErrno(errno));
639
640 return kErrorOk;
641 }
642
643 Error alloc(void** p, size_t size, MemoryFlags memoryFlags) noexcept {
644 return mapMemory(p, size, memoryFlags);
645 }
646
579647 Error release(void* p, size_t size) noexcept {
580 if (ASMJIT_UNLIKELY(munmap(p, size) != 0))
581 return DebugUtils::errored(kErrorInvalidArgument);
582
583 return kErrorOk;
584 }
585
648 return unmapMemory(p, size);
649 }
586650
587651 Error protect(void* p, size_t size, MemoryFlags memoryFlags) noexcept {
588652 int protection = mmProtFromMemoryFlags(memoryFlags);
589653 if (mprotect(p, size, protection) == 0)
590654 return kErrorOk;
591655
592 return DebugUtils::errored(kErrorInvalidArgument);
593 }
656 return DebugUtils::errored(asmjitErrorFromErrno(errno));
657 }
658
659 // Virtual Memory [Posix] - Dual Mapping
660 // =====================================
661
662 static Error unmapDualMapping(DualMapping* dm, size_t size) noexcept {
663 Error err1 = unmapMemory(dm->rx, size);
664 Error err2 = kErrorOk;
665
666 if (dm->rx != dm->rw)
667 err2 = unmapMemory(dm->rw, size);
668
669 // We can report only one error, so report the first...
670 if (err1 || err2)
671 return DebugUtils::errored(err1 ? err1 : err2);
672
673 dm->rx = nullptr;
674 dm->rw = nullptr;
675 return kErrorOk;
676 }
677
678 #if defined(ASMJIT_ANONYMOUS_MEMORY_USE_REMAPDUP)
679 static Error allocDualMappingUsingRemapdup(DualMapping* dmOut, size_t size, MemoryFlags memoryFlags) noexcept {
680 MemoryFlags maxAccessFlags = regularAccessFlagsToMaxAccessFlags(memoryFlags);
681 MemoryFlags finalFlags = memoryFlags | maxAccessFlags | MemoryFlags::kMapShared;
682
683 MemoryFlags rxFlags = finalFlags & ~(MemoryFlags::kAccessWrite | MemoryFlags::kMMapMaxAccessWrite);
684 MemoryFlags rwFlags = finalFlags & ~(MemoryFlags::kAccessExecute);
685
686 // Allocate RW mapping.
687 DualMapping dm {};
688 ASMJIT_PROPAGATE(mapMemory(&dm.rw, size, rwFlags));
689
690 // Allocate RX mapping.
691 dm.rx = mremap(dm.rw, size, nullptr, size, MAP_REMAPDUP);
692 if (dm.rx == MAP_FAILED) {
693 int e = errno;
694 munmap(dm.rw, size);
695 return DebugUtils::errored(asmjitErrorFromErrno(e));
696 }
697
698 if (mprotect(dm.rx, size, mmProtFromMemoryFlags(rxFlags)) != 0) {
699 int e = errno;
700 unmapDualMapping(&dm, size);
701 return DebugUtils::errored(asmjitErrorFromErrno(e));
702 }
703
704 *dmOut = dm;
705 return kErrorOk;
706 }
707 #endif
594708
595709 Error allocDualMapping(DualMapping* dm, size_t size, MemoryFlags memoryFlags) noexcept {
596710 dm->rx = nullptr;
599713 if (off_t(size) <= 0)
600714 return DebugUtils::errored(size == 0 ? kErrorInvalidArgument : kErrorTooLarge);
601715
716 #if defined(ASMJIT_ANONYMOUS_MEMORY_USE_REMAPDUP)
717 return allocDualMappingUsingRemapdup(dm, size, memoryFlags);
718 #elif defined(ASMJIT_ANONYMOUS_MEMORY_USE_FD)
602719 bool preferTmpOverDevShm = Support::test(memoryFlags, MemoryFlags::kMappingPreferTmp);
603720 if (!preferTmpOverDevShm) {
604 ShmStrategy strategy;
605 ASMJIT_PROPAGATE(getShmStrategy(&strategy));
606 preferTmpOverDevShm = (strategy == ShmStrategy::kTmpDir);
721 AnonymousMemoryStrategy strategy;
722 ASMJIT_PROPAGATE(getAnonymousMemoryStrategy(&strategy));
723 preferTmpOverDevShm = (strategy == AnonymousMemoryStrategy::kTmpDir);
607724 }
608725
609726 AnonymousMemory anonMem;
612729
613730 void* ptr[2];
614731 for (uint32_t i = 0; i < 2; i++) {
615 MemoryFlags accessFlags = memoryFlags & ~dualMappingFilter[i];
616 int protection = mmProtFromMemoryFlags(accessFlags) | mmMaxProtFromMemoryFlags(accessFlags);
617
618 ptr[i] = mmap(nullptr, size, protection, MAP_SHARED, anonMem.fd(), 0);
619 if (ptr[i] == MAP_FAILED) {
620 // Get the error now before `munmap()` has a chance to clobber it.
621 int e = errno;
732 MemoryFlags restrictedMemoryFlags = memoryFlags & ~dualMappingFilter[i];
733 Error err = mapMemory(&ptr[i], size, restrictedMemoryFlags | MemoryFlags::kMapShared, anonMem.fd(), 0);
734 if (err != kErrorOk) {
622735 if (i == 1)
623 munmap(ptr[0], size);
624 return DebugUtils::errored(asmjitErrorFromErrno(e));
736 unmapMemory(ptr[0], size);
737 return err;
625738 }
626739 }
627740
628741 dm->rx = ptr[0];
629742 dm->rw = ptr[1];
630743 return kErrorOk;
744 #else
745 #error "[asmjit] VirtMem::allocDualMapping() has no implementation"
746 #endif
631747 }
632748
633749 Error releaseDualMapping(DualMapping* dm, size_t size) noexcept {
634 Error err = release(dm->rx, size);
635 if (dm->rx != dm->rw)
636 err |= release(dm->rw, size);
637
638 if (err)
639 return DebugUtils::errored(kErrorInvalidArgument);
640
641 dm->rx = nullptr;
642 dm->rw = nullptr;
643 return kErrorOk;
750 return unmapDualMapping(dm, size);
644751 }
645752 #endif
646753
661768 char* end = start + size;
662769 __builtin___clear_cache(start, end);
663770 #else
664 #pragma message("asmjit::VirtMem::flushInstructionCache() doesn't have implementation for the target OS and compiler")
771 #pragma message("[asmjit] VirtMem::flushInstructionCache() doesn't have implementation for the target OS and compiler")
665772 DebugUtils::unused(p, size);
666773 #endif
667774 }
696803
697804 void protectJitMemory(ProtectJitAccess access) noexcept {
698805 #if defined(ASMJIT_HAS_PTHREAD_JIT_WRITE_PROTECT_NP)
699 pthread_jit_write_protect_np(static_cast<uint32_t>(access));
806 pthread_jit_write_protect_np(static_cast<int>(access));
700807 #else
701808 DebugUtils::unused(access);
702809 #endif
704811
705812 ASMJIT_END_SUB_NAMESPACE
706813
707 #endif
814 // JitAllocator - Tests
815 // ====================
816
817 #if defined(ASMJIT_TEST)
818 ASMJIT_BEGIN_NAMESPACE
819
820 UNIT(virt_mem) {
821 VirtMem::Info vmInfo = VirtMem::info();
822
823 INFO("VirtMem::info():");
824 INFO(" pageSize: %zu", size_t(vmInfo.pageSize));
825 INFO(" pageGranularity: %zu", size_t(vmInfo.pageGranularity));
826
827 VirtMem::HardenedRuntimeInfo hardenedRtInfo = VirtMem::hardenedRuntimeInfo();
828 VirtMem::HardenedRuntimeFlags hardenedFlags = hardenedRtInfo.flags;
829
830 INFO("VirtMem::hardenedRuntimeInfo():");
831 INFO(" flags:");
832 INFO(" kEnabled: %s", Support::test(hardenedFlags, VirtMem::HardenedRuntimeFlags::kEnabled) ? "true" : "false");
833 INFO(" kMapJit: %s", Support::test(hardenedFlags, VirtMem::HardenedRuntimeFlags::kMapJit) ? "true" : "false");
834 }
835
836 ASMJIT_END_NAMESPACE
837 #endif // ASMJIT_TEST
838
839 #endif // !ASMJIT_NO_JIT
4949 //! Memory is executable.
5050 kAccessExecute = 0x00000004u,
5151
52 //! A combination of \ref MemoryFlags::kAccessRead and \ref MemoryFlags::kAccessWrite.
52 //! A combination of \ref kAccessRead and \ref kAccessWrite.
5353 kAccessReadWrite = kAccessRead | kAccessWrite,
5454
55 //! A combination of \ref MemoryFlags::kAccessRead, \ref MemoryFlags::kAccessWrite.
55 //! A combination of \ref kAccessRead, \ref kAccessWrite.
5656 kAccessRW = kAccessRead | kAccessWrite,
5757
58 //! A combination of \ref MemoryFlags::kAccessRead and \ref MemoryFlags::kAccessExecute.
58 //! A combination of \ref kAccessRead and \ref kAccessExecute.
5959 kAccessRX = kAccessRead | kAccessExecute,
6060
61 //! A combination of \ref MemoryFlags::kAccessRead, \ref MemoryFlags::kAccessWrite, and
62 //! \ref MemoryFlags::kAccessExecute.
61 //! A combination of \ref kAccessRead, \ref kAccessWrite, and \ref kAccessExecute.
6362 kAccessRWX = kAccessRead | kAccessWrite | kAccessExecute,
6463
65 //! Use a `MAP_JIT` flag available on Apple platforms (introduced by Mojave), which allows JIT code to be executed
66 //! in MAC bundles. This flag is not turned on by default, because when a process uses `fork()` the child process
67 //! has no access to the pages mapped with `MAP_JIT`, which could break code that doesn't expect this behavior.
64 //! Use a `MAP_JIT` flag available on Apple platforms (introduced by Mojave), which allows JIT code to be
65 //! executed in a MAC bundle.
66 //!
67 //! This flag may be turned on by the allocator if there is no other way of allocating executable memory.
6868 //!
6969 //! \note This flag can only be used with \ref VirtMem::alloc(), `MAP_JIT` only works on OSX and not on iOS.
70 //! When a process uses `fork()` the child process has no access to the pages mapped with `MAP_JIT`.
7071 kMMapEnableMapJit = 0x00000010u,
7172
72 //! Pass `PROT_MAX(PROT_READ)` to mmap() on platforms that support `PROT_MAX`.
73 //!
74 //! \note This flag can only be used with \ref VirtMem::alloc().
73 //! Pass `PROT_MAX(PROT_READ)` or `PROT_MPROTECT(PROT_READ)` to `mmap()` on platforms that support it.
74 //!
75 //! This flag allows to set a "maximum access" that the memory page can get during its lifetime. Use
76 //! \ref VirtMem::protect() to change the access flags.
77 //!
78 //! \note This flag can only be used with \ref VirtMem::alloc() and \ref VirtMem::allocDualMapping().
79 //! However \ref VirtMem::allocDualMapping() may automatically use this if \ref kAccessRead is used.
7580 kMMapMaxAccessRead = 0x00000020u,
76 //! Pass `PROT_MAX(PROT_WRITE)` to mmap() on platforms that support `PROT_MAX`.
77 //!
78 //! \note This flag can only be used with \ref VirtMem::alloc().
81
82 //! Pass `PROT_MAX(PROT_WRITE)` or `PROT_MPROTECT(PROT_WRITE)` to `mmap()` on platforms that support it.
83 //!
84 //! This flag allows to set a "maximum access" that the memory page can get during its lifetime. Use
85 //! \ref VirtMem::protect() to change the access flags.
86 //!
87 //! \note This flag can only be used with \ref VirtMem::alloc() and \ref VirtMem::allocDualMapping().
88 //! However \ref VirtMem::allocDualMapping() may automatically use this if \ref kAccessWrite is used.
7989 kMMapMaxAccessWrite = 0x00000040u,
80 //! Pass `PROT_MAX(PROT_EXEC)` to mmap() on platforms that support `PROT_MAX`.
81 //!
82 //! \note This flag can only be used with \ref VirtMem::alloc().
90
91 //! Pass `PROT_MAX(PROT_EXEC)` or `PROT_MPROTECT(PROT_EXEC)` to `mmap()` on platforms that support it.
92 //!
93 //! This flag allows to set a "maximum access" that the memory page can get during its lifetime. Use
94 //! \ref VirtMem::protect() to change the access flags.
95 //!
96 //! \note This flag can only be used with \ref VirtMem::alloc() and \ref VirtMem::allocDualMapping().
97 //! However \ref VirtMem::allocDualMapping() may automatically use this if \ref kAccessExecute is used.
8398 kMMapMaxAccessExecute = 0x00000080u,
8499
85 //! A combination of \ref MemoryFlags::kMMapMaxAccessRead and \ref MemoryFlags::kMMapMaxAccessWrite.
100 //! A combination of \ref kMMapMaxAccessRead and \ref kMMapMaxAccessWrite.
86101 kMMapMaxAccessReadWrite = kMMapMaxAccessRead | kMMapMaxAccessWrite,
87102
88 //! A combination of \ref MemoryFlags::kMMapMaxAccessRead and \ref MemoryFlags::kMMapMaxAccessWrite.
103 //! A combination of \ref kMMapMaxAccessRead and \ref kMMapMaxAccessWrite.
89104 kMMapMaxAccessRW = kMMapMaxAccessRead | kMMapMaxAccessWrite,
90105
91 //! A combination of \ref MemoryFlags::kMMapMaxAccessRead and \ref MemoryFlags::kMMapMaxAccessExecute.
106 //! A combination of \ref kMMapMaxAccessRead and \ref kMMapMaxAccessExecute.
92107 kMMapMaxAccessRX = kMMapMaxAccessRead | kMMapMaxAccessExecute,
93108
94 //! A combination of \ref MemoryFlags::kMMapMaxAccessRead, \ref MemoryFlags::kMMapMaxAccessWrite, \ref
95 //! MemoryFlags::kMMapMaxAccessExecute.
109 //! A combination of \ref kMMapMaxAccessRead, \ref kMMapMaxAccessWrite, \ref kMMapMaxAccessExecute.
96110 kMMapMaxAccessRWX = kMMapMaxAccessRead | kMMapMaxAccessWrite | kMMapMaxAccessExecute,
111
112 //! Use `MAP_SHARED` when calling mmap().
113 //!
114 //! \note In some cases `MAP_SHARED` may be set automatically. For example, some dual mapping implementations must
115 //! use `MAP_SHARED` instead of `MAP_PRIVATE` to ensure that the OS would not apply copy on write on RW page, which
116 //! would cause RX page not having the updated content.
117 kMapShared = 0x00000100u,
97118
98119 //! Not an access flag, only used by `allocDualMapping()` to override the default allocation strategy to always use
99120 //! a 'tmp' directory instead of "/dev/shm" (on POSIX platforms). Please note that this flag will be ignored if the
287287
288288 for (key = 0; key < count; key++) {
289289 node = hashTable.get(MyKeyMatcher(key));
290 EXPECT(node != nullptr);
291 EXPECT(node->_key == key);
290 EXPECT_NOT_NULL(node);
291 EXPECT_EQ(node->_key, key);
292292 }
293293
294294 {
297297 hashTable.remove(&allocator, node);
298298
299299 node = hashTable.get(MyKeyMatcher(count));
300 EXPECT(node == nullptr);
300 EXPECT_NULL(node);
301301 }
302302 } while (count);
303303
304 EXPECT(hashTable.empty());
304 EXPECT_TRUE(hashTable.empty());
305305 }
306306 #endif
307307
2626 INFO("Append / Unlink");
2727
2828 // []
29 EXPECT(list.empty() == true);
29 EXPECT_TRUE(list.empty());
3030
3131 // [A]
3232 list.append(a);
33 EXPECT(list.empty() == false);
34 EXPECT(list.first() == a);
35 EXPECT(list.last() == a);
36 EXPECT(a->prev() == nullptr);
37 EXPECT(a->next() == nullptr);
33 EXPECT_FALSE(list.empty());
34 EXPECT_EQ(list.first(), a);
35 EXPECT_EQ(list.last(), a);
36 EXPECT_NULL(a->prev());
37 EXPECT_NULL(a->next());
3838
3939 // [A, B]
4040 list.append(b);
41 EXPECT(list.first() == a);
42 EXPECT(list.last() == b);
43 EXPECT(a->prev() == nullptr);
44 EXPECT(a->next() == b);
45 EXPECT(b->prev() == a);
46 EXPECT(b->next() == nullptr);
41 EXPECT_EQ(list.first(), a);
42 EXPECT_EQ(list.last(), b);
43 EXPECT_NULL(a->prev());
44 EXPECT_EQ(a->next(), b);
45 EXPECT_EQ(b->prev(), a);
46 EXPECT_NULL(b->next());
4747
4848 // [A, B, C]
4949 list.append(c);
50 EXPECT(list.first() == a);
51 EXPECT(list.last() == c);
52 EXPECT(a->prev() == nullptr);
53 EXPECT(a->next() == b);
54 EXPECT(b->prev() == a);
55 EXPECT(b->next() == c);
56 EXPECT(c->prev() == b);
57 EXPECT(c->next() == nullptr);
50 EXPECT_EQ(list.first(), a);
51 EXPECT_EQ(list.last(), c);
52 EXPECT_NULL(a->prev());
53 EXPECT_EQ(a->next(), b);
54 EXPECT_EQ(b->prev(), a);
55 EXPECT_EQ(b->next(), c);
56 EXPECT_EQ(c->prev(), b);
57 EXPECT_NULL(c->next());
5858
5959 // [B, C]
6060 list.unlink(a);
61 EXPECT(list.first() == b);
62 EXPECT(list.last() == c);
63 EXPECT(a->prev() == nullptr);
64 EXPECT(a->next() == nullptr);
65 EXPECT(b->prev() == nullptr);
66 EXPECT(b->next() == c);
67 EXPECT(c->prev() == b);
68 EXPECT(c->next() == nullptr);
61 EXPECT_EQ(list.first(), b);
62 EXPECT_EQ(list.last(), c);
63 EXPECT_NULL(a->prev());
64 EXPECT_NULL(a->next());
65 EXPECT_NULL(b->prev());
66 EXPECT_EQ(b->next(), c);
67 EXPECT_EQ(c->prev(), b);
68 EXPECT_NULL(c->next());
6969
7070 // [B]
7171 list.unlink(c);
72 EXPECT(list.first() == b);
73 EXPECT(list.last() == b);
74 EXPECT(b->prev() == nullptr);
75 EXPECT(b->next() == nullptr);
76 EXPECT(c->prev() == nullptr);
77 EXPECT(c->next() == nullptr);
72 EXPECT_EQ(list.first(), b);
73 EXPECT_EQ(list.last(), b);
74 EXPECT_NULL(b->prev());
75 EXPECT_NULL(b->next());
76 EXPECT_NULL(c->prev());
77 EXPECT_NULL(c->next());
7878
7979 // []
8080 list.unlink(b);
81 EXPECT(list.empty() == true);
82 EXPECT(list.first() == nullptr);
83 EXPECT(list.last() == nullptr);
84 EXPECT(b->prev() == nullptr);
85 EXPECT(b->next() == nullptr);
81 EXPECT_TRUE(list.empty());
82 EXPECT_NULL(list.first());
83 EXPECT_NULL(list.last());
84 EXPECT_NULL(b->prev());
85 EXPECT_NULL(b->next());
8686
8787 INFO("Prepend / Unlink");
8888
8989 // [A]
9090 list.prepend(a);
91 EXPECT(list.empty() == false);
92 EXPECT(list.first() == a);
93 EXPECT(list.last() == a);
94 EXPECT(a->prev() == nullptr);
95 EXPECT(a->next() == nullptr);
91 EXPECT_FALSE(list.empty());
92 EXPECT_EQ(list.first(), a);
93 EXPECT_EQ(list.last(), a);
94 EXPECT_NULL(a->prev());
95 EXPECT_NULL(a->next());
9696
9797 // [B, A]
9898 list.prepend(b);
99 EXPECT(list.first() == b);
100 EXPECT(list.last() == a);
101 EXPECT(b->prev() == nullptr);
102 EXPECT(b->next() == a);
103 EXPECT(a->prev() == b);
104 EXPECT(a->next() == nullptr);
99 EXPECT_EQ(list.first(), b);
100 EXPECT_EQ(list.last(), a);
101 EXPECT_NULL(b->prev());
102 EXPECT_EQ(b->next(), a);
103 EXPECT_EQ(a->prev(), b);
104 EXPECT_NULL(a->next());
105105
106106 INFO("InsertAfter / InsertBefore");
107107
108108 // [B, A, C]
109109 list.insertAfter(a, c);
110 EXPECT(list.first() == b);
111 EXPECT(list.last() == c);
112 EXPECT(b->prev() == nullptr);
113 EXPECT(b->next() == a);
114 EXPECT(a->prev() == b);
115 EXPECT(a->next() == c);
116 EXPECT(c->prev() == a);
117 EXPECT(c->next() == nullptr);
110 EXPECT_EQ(list.first(), b);
111 EXPECT_EQ(list.last(), c);
112 EXPECT_NULL(b->prev());
113 EXPECT_EQ(b->next(), a);
114 EXPECT_EQ(a->prev(), b);
115 EXPECT_EQ(a->next(), c);
116 EXPECT_EQ(c->prev(), a);
117 EXPECT_NULL(c->next());
118118
119119 // [B, D, A, C]
120120 list.insertBefore(a, d);
121 EXPECT(list.first() == b);
122 EXPECT(list.last() == c);
123 EXPECT(b->prev() == nullptr);
124 EXPECT(b->next() == d);
125 EXPECT(d->prev() == b);
126 EXPECT(d->next() == a);
127 EXPECT(a->prev() == d);
128 EXPECT(a->next() == c);
129 EXPECT(c->prev() == a);
130 EXPECT(c->next() == nullptr);
121 EXPECT_EQ(list.first(), b);
122 EXPECT_EQ(list.last(), c);
123 EXPECT_NULL(b->prev());
124 EXPECT_EQ(b->next(), d);
125 EXPECT_EQ(d->prev(), b);
126 EXPECT_EQ(d->next(), a);
127 EXPECT_EQ(a->prev(), d);
128 EXPECT_EQ(a->next(), c);
129 EXPECT_EQ(c->prev(), a);
130 EXPECT_NULL(c->next());
131131
132132 INFO("PopFirst / Pop");
133133
134134 // [D, A, C]
135 EXPECT(list.popFirst() == b);
136 EXPECT(b->prev() == nullptr);
137 EXPECT(b->next() == nullptr);
135 EXPECT_EQ(list.popFirst(), b);
136 EXPECT_NULL(b->prev());
137 EXPECT_NULL(b->next());
138138
139 EXPECT(list.first() == d);
140 EXPECT(list.last() == c);
141 EXPECT(d->prev() == nullptr);
142 EXPECT(d->next() == a);
143 EXPECT(a->prev() == d);
144 EXPECT(a->next() == c);
145 EXPECT(c->prev() == a);
146 EXPECT(c->next() == nullptr);
139 EXPECT_EQ(list.first(), d);
140 EXPECT_EQ(list.last(), c);
141 EXPECT_NULL(d->prev());
142 EXPECT_EQ(d->next(), a);
143 EXPECT_EQ(a->prev(), d);
144 EXPECT_EQ(a->next(), c);
145 EXPECT_EQ(c->prev(), a);
146 EXPECT_NULL(c->next());
147147
148148 // [D, A]
149 EXPECT(list.pop() == c);
150 EXPECT(c->prev() == nullptr);
151 EXPECT(c->next() == nullptr);
149 EXPECT_EQ(list.pop(), c);
150 EXPECT_NULL(c->prev());
151 EXPECT_NULL(c->next());
152152
153 EXPECT(list.first() == d);
154 EXPECT(list.last() == a);
155 EXPECT(d->prev() == nullptr);
156 EXPECT(d->next() == a);
157 EXPECT(a->prev() == d);
158 EXPECT(a->next() == nullptr);
153 EXPECT_EQ(list.first(), d);
154 EXPECT_EQ(list.last(), a);
155 EXPECT_NULL(d->prev());
156 EXPECT_EQ(d->next(), a);
157 EXPECT_EQ(a->prev(), d);
158 EXPECT_NULL(a->next());
159159 }
160160 #endif
161161
9999 INFO("Testing ZoneStack<%s>", typeName);
100100 INFO(" (%d items per one Block)", ZoneStack<T>::kNumBlockItems);
101101
102 EXPECT(stack.init(allocator) == kErrorOk);
103 EXPECT(stack.empty(), "Stack must be empty after `init()`");
102 EXPECT_EQ(stack.init(allocator), kErrorOk);
103 EXPECT_TRUE(stack.empty());
104104
105 EXPECT(stack.append(42) == kErrorOk);
106 EXPECT(!stack.empty() , "Stack must not be empty after an item has been appended");
107 EXPECT(stack.pop() == 42 , "Stack.pop() must return the item that has been appended last");
108 EXPECT(stack.empty() , "Stack must be empty after the last item has been removed");
105 EXPECT_EQ(stack.append(42), kErrorOk);
106 EXPECT_FALSE(stack.empty())
107 .message("Stack must not be empty after an item has been appended");
108 EXPECT_EQ(stack.pop(), 42)
109 .message("Stack.pop() must return the item that has been appended last");
110 EXPECT_TRUE(stack.empty())
111 .message("Stack must be empty after the last item has been removed");
109112
110 EXPECT(stack.prepend(43) == kErrorOk);
111 EXPECT(!stack.empty() , "Stack must not be empty after an item has been prepended");
112 EXPECT(stack.popFirst() == 43, "Stack.popFirst() must return the item that has been prepended last");
113 EXPECT(stack.empty() , "Stack must be empty after the last item has been removed");
113 EXPECT_EQ(stack.prepend(43), kErrorOk);
114 EXPECT_FALSE(stack.empty())
115 .message("Stack must not be empty after an item has been prepended");
116 EXPECT_EQ(stack.popFirst(), 43)
117 .message("Stack.popFirst() must return the item that has been prepended last");
118 EXPECT_TRUE(stack.empty())
119 .message("Stack must be empty after the last item has been removed");
114120
115121 int i;
116122 int iMin =-100000;
120126 for (i = iMax; i >= 0; i--) stack.prepend(T(i));
121127 for (i = 0; i <= iMax; i++) {
122128 T item = stack.popFirst();
123 EXPECT(i == item, "Item '%d' didn't match the item '%lld' popped", i, (long long)item);
129 EXPECT_EQ(i, item)
130 .message("Item '%d' didn't match the item '%lld' popped", i, (long long)item);
124131 if (!stack.empty()) {
125132 item = stack.popFirst();
126 EXPECT(i + 1 == item, "Item '%d' didn't match the item '%lld' popped", i + 1, (long long)item);
133 EXPECT_EQ(i + 1, item)
134 .message("Item '%d' didn't match the item '%lld' popped", i + 1, (long long)item);
127135 stack.prepend(item);
128136 }
129137 }
130 EXPECT(stack.empty());
138 EXPECT_TRUE(stack.empty());
131139
132140 INFO("Validating append() & pop()");
133141 for (i = 0; i <= iMax; i++) stack.append(T(i));
134142 for (i = iMax; i >= 0; i--) {
135143 T item = stack.pop();
136 EXPECT(i == item, "Item '%d' didn't match the item '%lld' popped", i, (long long)item);
144 EXPECT_EQ(i, item)
145 .message("Item '%d' didn't match the item '%lld' popped", i, (long long)item);
137146 if (!stack.empty()) {
138147 item = stack.pop();
139 EXPECT(i - 1 == item, "Item '%d' didn't match the item '%lld' popped", i - 1, (long long)item);
148 EXPECT_EQ(i - 1, item)
149 .message("Item '%d' didn't match the item '%lld' popped", i - 1, (long long)item);
140150 stack.append(item);
141151 }
142152 }
143 EXPECT(stack.empty());
153 EXPECT_TRUE(stack.empty());
144154
145155 INFO("Validating append()/prepend() & popFirst()");
146156 for (i = 1; i <= iMax; i++) stack.append(T(i));
148158
149159 for (i = iMin; i <= iMax; i++) {
150160 T item = stack.popFirst();
151 EXPECT(i == item, "Item '%d' didn't match the item '%lld' popped", i, (long long)item);
161 EXPECT_EQ(i, item);
152162 }
153 EXPECT(stack.empty());
163 EXPECT_TRUE(stack.empty());
154164
155165 INFO("Validating append()/prepend() & pop()");
156166 for (i = 0; i >= iMin; i--) stack.prepend(T(i));
158168
159169 for (i = iMax; i >= iMin; i--) {
160170 T item = stack.pop();
161 EXPECT(i == item, "Item '%d' didn't match the item '%lld' popped", i, (long long)item);
171 EXPECT_EQ(i, item);
162172 }
163 EXPECT(stack.empty());
173 EXPECT_TRUE(stack.empty());
164174 }
165175
166176 UNIT(zone_stack) {
1818 typedef ZoneTree<NodeT> Tree;
1919
2020 static void verifyTree(Tree& tree) noexcept {
21 EXPECT(checkHeight(static_cast<NodeT*>(tree._root)) > 0);
21 EXPECT_GT(checkHeight(static_cast<NodeT*>(tree._root)), 0);
2222 }
2323
2424 // Check whether the Red-Black tree is valid.
2929 NodeT* rn = node->right();
3030
3131 // Invalid tree.
32 EXPECT(ln == nullptr || *ln < *node);
33 EXPECT(rn == nullptr || *rn > *node);
32 EXPECT_TRUE(ln == nullptr || *ln < *node);
33 EXPECT_TRUE(rn == nullptr || *rn > *node);
3434
3535 // Red violation.
36 EXPECT(!node->isRed() ||
37 (!ZoneTreeNode::_isValidRed(ln) && !ZoneTreeNode::_isValidRed(rn)));
36 EXPECT_TRUE(!node->isRed() || (!ZoneTreeNode::_isValidRed(ln) && !ZoneTreeNode::_isValidRed(rn)));
3837
3938 // Black violation.
4039 int lh = checkHeight(ln);
4140 int rh = checkHeight(rn);
42 EXPECT(!lh || !rh || lh == rh);
41 EXPECT_TRUE(!lh || !rh || lh == rh);
4342
4443 // Only count black links.
4544 return (lh && rh) ? lh + !node->isRed() : 0;
8281
8382 for (key = 0; key < count; key++) {
8483 node = rbTree.get(key);
85 EXPECT(node != nullptr);
86 EXPECT(node->_key == key);
84 EXPECT_NOT_NULL(node);
85 EXPECT_EQ(node->_key, key);
8786 }
8887
8988 node = rbTree.get(--count);
9190 ZoneRBUnit<MyRBNode>::verifyTree(rbTree);
9291 } while (count);
9392
94 EXPECT(rbTree.empty());
93 EXPECT_TRUE(rbTree.empty());
9594 }
9695 #endif
9796
271271 ZoneVector<T> vec;
272272
273273 INFO("ZoneVector<%s> basic tests", typeName);
274 EXPECT(vec.append(allocator, 0) == kErrorOk);
275 EXPECT(vec.empty() == false);
276 EXPECT(vec.size() == 1);
277 EXPECT(vec.capacity() >= 1);
278 EXPECT(vec.indexOf(0) == 0);
279 EXPECT(vec.indexOf(-11) == Globals::kNotFound);
274 EXPECT_EQ(vec.append(allocator, 0), kErrorOk);
275 EXPECT_FALSE(vec.empty());
276 EXPECT_EQ(vec.size(), 1u);
277 EXPECT_GE(vec.capacity(), 1u);
278 EXPECT_EQ(vec.indexOf(0), 0u);
279 EXPECT_EQ(vec.indexOf(-11), Globals::kNotFound);
280280
281281 vec.clear();
282 EXPECT(vec.empty());
283 EXPECT(vec.size() == 0);
284 EXPECT(vec.indexOf(0) == Globals::kNotFound);
282 EXPECT_TRUE(vec.empty());
283 EXPECT_EQ(vec.size(), 0u);
284 EXPECT_EQ(vec.indexOf(0), Globals::kNotFound);
285285
286286 for (i = 0; i < kMax; i++) {
287 EXPECT(vec.append(allocator, T(i)) == kErrorOk);
288 }
289 EXPECT(vec.empty() == false);
290 EXPECT(vec.size() == uint32_t(kMax));
291 EXPECT(vec.indexOf(T(kMax - 1)) == uint32_t(kMax - 1));
292
293 EXPECT(vec.rbegin()[0] == kMax - 1);
287 EXPECT_EQ(vec.append(allocator, T(i)), kErrorOk);
288 }
289 EXPECT_FALSE(vec.empty());
290 EXPECT_EQ(vec.size(), uint32_t(kMax));
291 EXPECT_EQ(vec.indexOf(T(kMax - 1)), uint32_t(kMax - 1));
292
293 EXPECT_EQ(vec.rbegin()[0], kMax - 1);
294294
295295 vec.release(allocator);
296296 }
302302 uint32_t kMaxCount = 100;
303303
304304 ZoneBitVector vec;
305 EXPECT(vec.empty());
306 EXPECT(vec.size() == 0);
305 EXPECT_TRUE(vec.empty());
306 EXPECT_EQ(vec.size(), 0u);
307307
308308 INFO("ZoneBitVector::resize()");
309309 for (count = 1; count < kMaxCount; count++) {
310310 vec.clear();
311 EXPECT(vec.resize(allocator, count, false) == kErrorOk);
312 EXPECT(vec.size() == count);
311 EXPECT_EQ(vec.resize(allocator, count, false), kErrorOk);
312 EXPECT_EQ(vec.size(), count);
313313
314314 for (i = 0; i < count; i++)
315 EXPECT(vec.bitAt(i) == false);
315 EXPECT_FALSE(vec.bitAt(i));
316316
317317 vec.clear();
318 EXPECT(vec.resize(allocator, count, true) == kErrorOk);
319 EXPECT(vec.size() == count);
318 EXPECT_EQ(vec.resize(allocator, count, true), kErrorOk);
319 EXPECT_EQ(vec.size(), count);
320320
321321 for (i = 0; i < count; i++)
322 EXPECT(vec.bitAt(i) == true);
322 EXPECT_TRUE(vec.bitAt(i));
323323 }
324324
325325 INFO("ZoneBitVector::fillBits() / clearBits()");
326326 for (count = 1; count < kMaxCount; count += 2) {
327327 vec.clear();
328 EXPECT(vec.resize(allocator, count) == kErrorOk);
329 EXPECT(vec.size() == count);
328 EXPECT_EQ(vec.resize(allocator, count), kErrorOk);
329 EXPECT_EQ(vec.size(), count);
330330
331331 for (i = 0; i < (count + 1) / 2; i++) {
332332 bool value = bool(i & 1);
337337 }
338338
339339 for (i = 0; i < count; i++) {
340 EXPECT(vec.bitAt(i) == bool(i & 1));
340 EXPECT_EQ(vec.bitAt(i), bool(i & 1));
341341 }
342342 }
343343 }
104104 //!
105105 //! - Tested:
106106 //!
107 //! - **Clang** - Tested by GitHub Actions - Clang 3.9+ (with C++11 enabled) is officially supported (older Clang
108 //! versions having C++11 support are probably fine, but are not regularly tested).
109 //!
110 //! - **GNU** - Tested by GitHub Actions - GCC 4.8+ (with C++11 enabled) is officially supported.
111 //!
112 //! - **MINGW** - Should work, but it's not tested in our CI environment.
113 //!
114 //! - **MSVC** - Tested by GitHub Actions - VS2017+ is officially supported, VS2015 is reported to work.
107 //! - **Clang** - Tested by GitHub Actions - Clang 10+ is officially supported and tested by CI, older Clang versions
108 //! having C++11 should work, but are not tested anymore due to upgraded CI images.
109 //!
110 //! - **GNU** - Tested by GitHub Actions - GCC 7+ is officially supported, older GCC versions from 4.8+ having C++11
111 //! enabled should also work, but are not tested anymore due to upgraded CI images.
112 //!
113 //! - **MINGW** - Reported to work, but not tested in our CI environment (help welcome).
114 //!
115 //! - **MSVC** - Tested by GitHub Actions - VS2019+ is officially supported, VS2015 and VS2017 is reported to work,
116 //! but not tested by CI anymore.
117 //!
118 //! ### Supported Operating Systems and Platforms
119 //!
120 //! - Tested:
121 //!
122 //! - **BSD** - FreeBSD, NetBSD, and OpenBSD tested by GitHub Actions (only recent images are tested by CI). BSD
123 //! runners only test BSD images with clang compiler.
124 //!
125 //! - **Linux** - Tested by GitHub Actions (only recent Ubuntu images are tested by CI, in general any distribution
126 //! should be supported as AsmJit has no dependencies).
127 //!
128 //! - **Mac OS** - Tested by GitHub Actions.
129 //!
130 //! - **Windows** - Tested by GitHub Actions - (Windows 7+ is officially supported).
131 //!
132 //! - **Emscripten** - Works if compiled with \ref ASMJIT_NO_JIT. AsmJit cannot generate WASM code, but can be
133 //! used to generate X86/X64/AArch64 code within a browser, for example.
115134 //!
116135 //! - Untested:
117136 //!
118 //! - **Intel** - No maintainers and no CI environment to regularly test this compiler.
119 //!
120 //! - **Other** C++ compilers would require basic support in
121 //! [core/api-config.h](https://github.com/asmjit/asmjit/tree/master/src/asmjit/core/api-config.h).
122 //!
123 //! ### Supported Operating Systems and Platforms
124 //!
125 //! - Tested:
126 //!
127 //! - **Linux** - Tested by GitHub Actions (any distribution is generally supported).
128 //!
129 //! - **Mac OS** - Tested by GitHub Actions (any version is supported).
130 //!
131 //! - **Windows** - Tested by GitHub Actions - (Windows 7+ is officially supported).
132 //!
133 //! - **Emscripten** - Works if compiled with \ref ASMJIT_NO_JIT. AsmJit cannot generate WASM code, but can be
134 //! used to generate X86/X64 code within a browser, for example.
135 //!
136 //! - Untested:
137 //!
138 //! - **BSDs** - No maintainers, no CI environment to regularly test BSDs, but they should work out of box.
139 //!
140 //! - **Haiku** - Not regularly tested, but reported to work.
137 //! - **Haiku** - Reported to work, not tested by CI.
141138 //!
142139 //! - **Other** operating systems would require some testing and support in the following files:
143140 //! - [core/api-config.h](https://github.com/asmjit/asmjit/tree/master/src/asmjit/core/api-config.h)
148145 //!
149146 //! - **X86** and **X86_64** - Both 32-bit and 64-bit backends tested on CI.
150147 //! - **AArch64** - AArch64 backend is currently only partially tested (there is no native AArch64 runner to test
151 //! AsmJit Builder/Compiler)
148 //! AsmJit Builder/Compiler).
152149 //!
153150 //! ### Static Builds and Embedding
154151 //!
453450 //! JitRuntime rt; // Runtime specialized for JIT code execution.
454451 //!
455452 //! CodeHolder code; // Holds code and relocation information.
456 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
453 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
454 //! rt.cpuFeatures());
457455 //!
458456 //! x86::Assembler a(&code); // Create and attach x86::Assembler to code.
459457 //! a.mov(x86::eax, 1); // Move one to eax register.
598596 //! int main() {
599597 //! // Create a custom environment that matches the current host environment.
600598 //! Environment env = Environment::host();
599 //! CpuFeatures cpuFeatures = CpuInfo::host().features();
601600 //!
602601 //! CodeHolder code; // Create a CodeHolder.
603 //! code.init(env); // Initialize CodeHolder with environment.
602 //! code.init(env, cpuFeatures); // Initialize CodeHolder with environment.
604603 //!
605604 //! x86::Assembler a(&code); // Create and attach x86::Assembler to `code`.
606605 //!
721720 //!
722721 //! void initializeCodeHolder(CodeHolder& code) {
723722 //! Environment env = Environment::host();
723 //! CpuFeatures cpuFeatures = CpuInfo::host().features();
724724 //! uint64_t baseAddress = uint64_t(0x1234);
725725 //!
726726 //! // initialize CodeHolder with environment and custom base address.
727 //! code.init(env, baseAddress);
727 //! code.init(env, cpuFeatures, baseAddress);
728728 //! }
729729 //! ```
730730 //!
13451345 //! FileLogger logger(stdout); // Logger should always survive CodeHolder.
13461346 //!
13471347 //! CodeHolder code; // Holds code and relocation information.
1348 //! code.init(rt.environment()); // Initialize to the same arch as JIT runtime.
1348 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
1349 //! rt.cpuFeatures());
13491350 //! code.setLogger(&logger); // Attach the `logger` to `code` holder.
13501351 //!
13511352 //! // ... code as usual, everything emitted will be logged to `stdout` ...
13681369 //! StringLogger logger; // Logger should always survive CodeHolder.
13691370 //!
13701371 //! CodeHolder code; // Holds code and relocation information.
1371 //! code.init(rt.environment()); // Initialize to the same arch as JIT runtime.
1372 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
1373 //! rt.cpuFeatures());
13721374 //! code.setLogger(&logger); // Attach the `logger` to `code` holder.
13731375 //!
13741376 //! // ... code as usual, logging will be concatenated to logger string ...
15591561 //! MyErrorHandler myErrorHandler;
15601562 //! CodeHolder code;
15611563 //!
1562 //! code.init(rt.environment());
1564 //! code.init(rt.environment(), rt.cpuFeatures());
15631565 //! code.setErrorHandler(&myErrorHandler);
15641566 //!
15651567 //! x86::Assembler a(&code);
16301632 //!
16311633 //! ### Overview
16321634 //!
1633 //! AsmJit's virtual memory management is divided into two main categories:
1634 //!
1635 //! - Low level API that provides cross-platform abstractions for virtual memory allocation. Implemented in
1636 //! \ref VirtMem namespace.
1637 //!
1638 //! - High level API that makes it very easy to store generated code for execution. See \ref JitRuntime, which is
1639 //! used by many examples for its simplicity and easy integration with \ref CodeHolder. There is also \ref
1640 //! JitAllocator, which lays somewhere between RAW memory allocation and \ref JitRuntime.
1635 //! AsmJit's virtual memory management is divided into three main categories:
1636 //!
1637 //! - Low level interface that provides cross-platform abstractions for virtual memory allocation. Implemented in
1638 //! \ref VirtMem namespace. This API is a thin wrapper around operating system specific calls such as
1639 //! `VirtualAlloc()` and `mmap()` and it's intended to be used by AsmJit's higher level API. Low-level virtual
1640 //! memory functions can be used to allocate virtual memory, change its permissions, and to release it.
1641 //! Additionally, an API that allows to create dual mapping (to support hardened environments) is provided.
1642 //!
1643 //! - Middle level API that is provided by \ref JitAllocator, which uses \ref VirtMem internally and offers nicer
1644 //! API that can be used by users to allocate executable memory conveniently. \ref JitAllocator tries to be smart,
1645 //! for example automatically using dual mapping or `MAP_JIT` on hardened environments.
1646 //!
1647 //! - High level API that is provided by \ref JitRuntime, which implements \ref Target interface and uses \ref
1648 //! JitAllocator under the hood. Since \ref JitRuntime inherits from \ref Target it makes it easy to use with
1649 //! \ref CodeHolder. Many AsmJit examples use \ref JitRuntime for its simplicity and easy integration.
1650 //!
1651 //! The main difference between \ref VirtMem and \ref JitAllocator is that \ref VirtMem can only be used to allocate
1652 //! whole pages, whereas \ref JitAllocator has `malloc()` like API that allows to allocate smaller quantities that
1653 //! usually represent the size of an assembled function or a chunk of functions that can represent a module, for
1654 //! example. \ref JitAllocator then tracks used space of each page it maintains. Internally, \ref JitAllocator uses
1655 //! two bit arrays to track occupied regions in each allocated block of pages.
1656 //!
1657 //! ### Hardened Environments
1658 //!
1659 //! In the past, allocating virtual memory with Read+Write+Execute (RWX) access permissions was easy. However, modern
1660 //! operating systems and runtime environments often use hardening, which typically prohibits mapping pages with both
1661 //! Write and Execute permissions (known as the W^X policy). This presents a challenge for JIT compilers because
1662 //! generated code for a single function is unlikely to fit in exactly N pages without leaving some space empty. To
1663 //! accommodate this, the execution environment may need to temporarily change the permissions of existing pages to
1664 //! read+write (RW) to insert new code into them, however, sometimes it's not possible to ensure that no thread is
1665 //! executing code in such affected pages in a multithreaded environment, in which multiple threads may be executing
1666 //! generated code.
1667 //!
1668 //! Such restrictions leave a lot of complexity on the application, so AsmJit implements a dual mapping technique to
1669 //! make the life of AsmJit users easier. In this technique, a region of memory is mapped to two different virtual
1670 //! addresses with different access permissions. One virtual address is mapped with read and write (RW) access, which
1671 //! is used by the JIT compiler to write generated code. The other virtual address is mapped with read and execute (RX)
1672 //! access, which is used by the application to execute the generated code.
1673 //!
1674 //! However, implementing dual mapping can be challenging because it typically requires obtaining an anonymous file
1675 //! descriptor on most Unix-like operating systems. This file descriptor is then passed to mmap() twice to create
1676 //! the two mappings. AsmJit handles this challenge by using system-specific techniques such as `memfd_create()` on
1677 //! Linux, `shm_open(SHM_ANON)` on BSD, and `MAP_REMAPDUP` with `mremap()` on NetBSD. The latter approach does not
1678 //! require a file descriptor. If none of these options are available, AsmJit uses a plain `open()` call followed by
1679 //! `unlink()`.
1680 //!
1681 //! The most challenging part is actually obtaing a file descriptor that can be passed to `mmap()` with `PROT_EXEC`.
1682 //! This is still something that may fail, for example the environment could be hardened in a way that this would
1683 //! not be possible at all, and thus dual mapping would not work.
1684 //!
1685 //! Dual mapping is provided by both \ref VirtMem and \ref JitAllocator.
16411686
16421687
16431688 //! \defgroup asmjit_zone Zone Memory
42734273 }
42744274 else {
42754275 // Non-bound label or label bound to a different section.
4276 relOffset = -4 - immSize;
4276 relOffset = -4 - int32_t(immSize);
42774277 relSize = 4;
42784278 goto EmitRel;
42794279 }
49494949 #endif
49504950 }
49514951
4952 resetExtraReg();
4953 resetInstOptions();
4954 resetInlineComment();
4955
4952 resetState();
49564953 writer.done(this);
49574954 return kErrorOk;
49584955
49864983 #ifndef ASMJIT_NO_LOGGING
49874984 return EmitterUtils::logInstructionFailed(this, err, instId, options, o0, o1, o2, opExt);
49884985 #else
4989 resetExtraReg();
4990 resetInstOptions();
4991 resetInlineComment();
4986 resetState();
49924987 return reportError(err);
49934988 #endif
49944989 }
3737 //! JitRuntime rt; // Create a runtime specialized for JIT.
3838 //! CodeHolder code; // Create a CodeHolder.
3939 //!
40 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
40 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
41 //! rt.cpuFeatures());
4142 //! x86::Assembler a(&code); // Create and attach x86::Assembler to code.
4243 //!
4344 //! // Decide between 32-bit CDECL, WIN64, and SysV64 calling conventions:
130131 //! JitRuntime rt; // Create a runtime specialized for JIT.
131132 //! CodeHolder code; // Create a CodeHolder.
132133 //!
133 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
134 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
135 //! rt.cpuFeatures());
134136 //! x86::Assembler a(&code); // Create and attach x86::Assembler to code.
135137 //!
136138 //! // Enable strict validation.
186188 //! JitRuntime rt; // Create a runtime specialized for JIT.
187189 //! CodeHolder code; // Create a CodeHolder.
188190 //!
189 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
191 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
192 //! rt.cpuFeatures());
190193 //! x86::Assembler a(&code); // Create and attach x86::Assembler to code.
191194 //!
192195 //! // Let's get these registers from x86::Assembler.
345348 //! JitRuntime rt; // Create JIT Runtime.
346349 //! CodeHolder code; // Create a CodeHolder.
347350 //!
348 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
351 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
352 //! rt.cpuFeatures());
349353 //! x86::Assembler a(&code); // Create and attach x86::Assembler to code.
350354 //!
351355 //! // Decide which registers will be mapped to function arguments. Try changing
452456 //! JitRuntime rt; // Create a runtime specialized for JIT.
453457 //! CodeHolder code; // Create a CodeHolder.
454458 //!
455 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
459 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
460 //! rt.cpuFeatures());
456461 //! x86::Assembler a(&code); // Create and attach x86::Assembler to code.
457462 //!
458463 //! // Let's get these registers from x86::Assembler.
4545 //! JitRuntime rt; // Create JIT Runtime.
4646 //! CodeHolder code; // Create a CodeHolder.
4747 //!
48 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
48 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
49 //! rt.cpuFeatures());
4950 //! x86::Builder cb(&code); // Create and attach x86::Builder to `code`.
5051 //!
5152 //! // Decide which registers will be mapped to function arguments. Try changing registers
3737 //! JitRuntime rt; // Runtime specialized for JIT code execution.
3838 //! CodeHolder code; // Holds code and relocation information.
3939 //!
40 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
40 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
41 //! rt.cpuFeatures());
4142 //! x86::Compiler cc(&code); // Create and attach x86::Compiler to code.
4243 //!
4344 //! cc.addFunc(FuncSignatureT<int>());// Begin a function of `int fn(void)` signature.
8182 //! JitRuntime rt; // Runtime specialized for JIT code execution.
8283 //! CodeHolder code; // Holds code and relocation information.
8384 //!
84 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
85 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
86 //! rt.cpuFeatures());
8587 //! x86::Compiler cc(&code); // Create and attach x86::Compiler to code.
8688 //!
8789 //! FuncNode* funcNode = cc.addFunc( // Begin the function of the following signature:
163165 //! JitRuntime rt; // Runtime specialized for JIT code execution.
164166 //! CodeHolder code; // Holds code and relocation information.
165167 //!
166 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
168 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
169 //! rt.cpuFeatures());
167170 //! x86::Compiler cc(&code); // Create and attach x86::Compiler to code.
168171 //!
169172 //! FuncNode* funcNode = cc.addFunc(FuncSignatureT<void, void*>());
221224 //! JitRuntime rt; // Runtime specialized for JIT code execution.
222225 //! CodeHolder code; // Holds code and relocation information.
223226 //!
224 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
227 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
228 //! rt.cpuFeatures());
225229 //! x86::Compiler cc(&code); // Create and attach x86::Compiler to code.
226230 //!
227231 //! FuncNode* funcNode = cc.addFunc( // Begin of the Fibonacci function, addFunc()
289293 //! JitRuntime rt; // Runtime specialized for JIT code execution.
290294 //! CodeHolder code; // Holds code and relocation information.
291295 //!
292 //! code.init(rt.environment()); // Initialize code to match the JIT environment.
296 //! code.init(rt.environment(), // Initialize code to match the JIT environment.
297 //! rt.cpuFeatures());
293298 //! x86::Compiler cc(&code); // Create and attach x86::Compiler to code.
294299 //!
295300 //! cc.addFunc(FuncSignatureT<int>());// Create a function that returns int.
33 // SPDX-License-Identifier: Zlib
44
55 #include "../core/api-build_p.h"
6 #ifndef ASMJIT_NO_LOGGING
6 #if !defined(ASMJIT_NO_X86) && !defined(ASMJIT_NO_LOGGING)
77
88 #include "../core/cpuinfo.h"
99 #include "../core/misc_p.h"
197197 "AESNI\0"
198198 "ALTMOVCR8\0"
199199 "AMX_BF16\0"
200 "AMX_FP16\0"
200201 "AMX_INT8\0"
201202 "AMX_TILE\0"
202203 "AVX\0"
219220 "AVX512_VNNI\0"
220221 "AVX512_VP2INTERSECT\0"
221222 "AVX512_VPOPCNTDQ\0"
223 "AVX_IFMA\0"
224 "AVX_NE_CONVERT\0"
222225 "AVX_VNNI\0"
226 "AVX_VNNI_INT8\0"
223227 "BMI\0"
224228 "BMI2\0"
225229 "CET_IBT\0"
226230 "CET_SS\0"
231 "CET_SSS\0"
227232 "CLDEMOTE\0"
228233 "CLFLUSH\0"
229234 "CLFLUSHOPT\0"
230235 "CLWB\0"
231236 "CLZERO\0"
232237 "CMOV\0"
238 "CMPCCXADD\0"
233239 "CMPXCHG16B\0"
234240 "CMPXCHG8B\0"
235241 "ENCLV\0"
240246 "FMA4\0"
241247 "FPU\0"
242248 "FSGSBASE\0"
249 "FSRM\0"
250 "FSRC\0"
251 "FSRS\0"
243252 "FXSR\0"
244253 "FXSROPT\0"
254 "FZRM\0"
245255 "GEODE\0"
246256 "GFNI\0"
247257 "HLE\0"
248258 "HRESET\0"
249259 "I486\0"
250260 "LAHFSAHF\0"
261 "LAM\0"
251262 "LWP\0"
252263 "LZCNT\0"
253264 "MCOMMIT\0"
260271 "MOVDIRI\0"
261272 "MPX\0"
262273 "MSR\0"
274 "MSRLIST\0"
263275 "MSSE\0"
264276 "OSXSAVE\0"
265277 "OSPKE\0"
266278 "PCLMULQDQ\0"
267279 "PCONFIG\0"
268280 "POPCNT\0"
281 "PREFETCHI\0"
269282 "PREFETCHW\0"
270283 "PREFETCHWT1\0"
271284 "PTWRITE\0"
285 "RAO_INT\0"
272286 "RDPID\0"
273287 "RDPRU\0"
274288 "RDRAND\0"
300314 "VPCLMULQDQ\0"
301315 "WAITPKG\0"
302316 "WBNOINVD\0"
317 "WRMSRNS\0"
303318 "XOP\0"
304319 "XSAVE\0"
305320 "XSAVEC\0"
308323 "<Unknown>\0";
309324
310325 static const uint16_t sFeatureIndex[] = {
311 0, 5, 8, 11, 17, 24, 28, 34, 44, 53, 62, 71, 75, 80, 94, 108, 120, 134, 144,
312 155, 165, 176, 185, 197, 209, 220, 232, 245, 255, 267, 287, 304, 313, 317,
313 322, 330, 337, 346, 354, 365, 370, 377, 382, 393, 403, 409, 416, 421, 426,
314 430, 435, 439, 448, 453, 461, 467, 472, 476, 483, 488, 497, 501, 507, 515,
315 519, 524, 532, 541, 547, 557, 565, 569, 573, 578, 586, 592, 602, 610, 617,
316 627, 639, 647, 653, 659, 666, 673, 679, 686, 690, 700, 704, 711, 716, 721,
317 725, 729, 733, 738, 743, 750, 757, 763, 769, 773, 777, 781, 790, 796, 801,
318 805, 816, 824, 833, 837, 843, 850, 859, 866
326 0, 5, 8, 11, 17, 24, 28, 34, 44, 53, 62, 71, 80, 84, 89, 103, 117, 129, 143,
327 153, 164, 174, 185, 194, 206, 218, 229, 241, 254, 264, 276, 296, 313, 322,
328 337, 346, 360, 364, 369, 377, 384, 392, 401, 409, 420, 425, 432, 437, 447,
329 458, 468, 474, 481, 486, 491, 495, 500, 504, 513, 518, 523, 528, 533, 541,
330 546, 552, 557, 561, 568, 573, 582, 586, 590, 596, 604, 608, 613, 621, 630,
331 636, 646, 654, 658, 662, 670, 675, 683, 689, 699, 707, 714, 724, 734, 746,
332 754, 762, 768, 774, 781, 788, 794, 801, 805, 815, 819, 826, 831, 836, 840,
333 844, 848, 853, 858, 865, 872, 878, 884, 888, 892, 896, 905, 911, 916, 920,
334 931, 939, 948, 956, 960, 966, 973, 982, 989
319335 };
320336 // @EnumStringEnd@
321337
944960
945961 ASMJIT_END_SUB_NAMESPACE
946962
947 #endif // !ASMJIT_NO_LOGGING
963 #endif // !ASMJIT_NO_X86 && !ASMJIT_NO_LOGGING
2525
2626 #include "../core/cpuinfo.h"
2727 #include "../core/misc_p.h"
28 #include "../core/support.h"
28 #include "../core/support_p.h"
2929 #include "../x86/x86instapi_p.h"
3030 #include "../x86/x86instdb_p.h"
3131 #include "../x86/x86opcode_p.h"
4343 if (ASMJIT_UNLIKELY(!Inst::isDefinedId(instId)))
4444 return DebugUtils::errored(kErrorInvalidInstruction);
4545
46 const InstDB::InstInfo& info = InstDB::infoById(instId);
47 return output.append(InstDB::_nameData + info._nameDataIndex);
46 char nameData[32];
47 size_t nameSize = Support::decodeInstName(nameData, InstDB::_instNameIndexTable[instId], InstDB::_instNameStringTable);
48
49 return output.append(nameData, nameSize);
4850 }
4951
5052 InstId InstInternal::stringToInstId(Arch arch, const char* s, size_t len) noexcept {
6365 if (ASMJIT_UNLIKELY(prefix > 'z' - 'a'))
6466 return Inst::kIdNone;
6567
66 uint32_t index = InstDB::instNameIndex[prefix].start;
67 if (ASMJIT_UNLIKELY(!index))
68 size_t base = InstDB::instNameIndex[prefix].start;
69 size_t end = InstDB::instNameIndex[prefix].end;
70
71 if (ASMJIT_UNLIKELY(!base))
6872 return Inst::kIdNone;
6973
70 const char* nameData = InstDB::_nameData;
71 const InstDB::InstInfo* table = InstDB::_instInfoTable;
72
73 const InstDB::InstInfo* base = table + index;
74 const InstDB::InstInfo* end = table + InstDB::instNameIndex[prefix].end;
75
76 for (size_t lim = (size_t)(end - base); lim != 0; lim >>= 1) {
77 const InstDB::InstInfo* cur = base + (lim >> 1);
78 int result = Support::cmpInstName(nameData + cur[0]._nameDataIndex, s, len);
79
80 if (result < 0) {
81 base = cur + 1;
74 char nameData[32];
75 for (size_t lim = end - base; lim != 0; lim >>= 1) {
76 size_t instId = base + (lim >> 1);
77 size_t nameSize = Support::decodeInstName(nameData, InstDB::_instNameIndexTable[instId], InstDB::_instNameStringTable);
78
79 int result = Support::compareStringViews(s, len, nameData, nameSize);
80 if (result < 0)
81 continue;
82
83 if (result > 0) {
84 base = instId + 1;
8285 lim--;
8386 continue;
8487 }
8588
86 if (result > 0)
87 continue;
88
89 return InstId((size_t)(cur - table));
89 return InstId(instId);
9090 }
9191
9292 return Inst::kIdNone;
826826 constexpr OpRWFlags RegPhys = OpRWFlags::kRegPhysId;
827827 constexpr OpRWFlags MibRead = OpRWFlags::kMemBaseRead | OpRWFlags::kMemIndexRead;
828828
829 if (instRwInfo.category == InstDB::RWInfo::kCategoryGeneric) {
829 if (instRwInfo.category <= uint32_t(InstDB::RWInfo::kCategoryGenericEx)) {
830830 uint32_t i;
831831 uint32_t rmOpsMask = 0;
832832 uint32_t rmMaxSize = 0;
919919 }
920920
921921 rmOpsMask &= instRmInfo.rmOpsMask;
922 if (rmOpsMask) {
922 if (rmOpsMask && !inst.hasOption(InstOptions::kX86_ER)) {
923923 Support::BitWordIterator<uint32_t> it(rmOpsMask);
924924 do {
925925 i = it.next();
945945 break;
946946 }
947947 } while (it.hasNext());
948 }
949
950 // Special cases per instruction.
951 if (instRwInfo.category == InstDB::RWInfo::kCategoryGenericEx) {
952 switch (inst.id()) {
953 case Inst::kIdVpternlogd:
954 case Inst::kIdVpternlogq: {
955 if (opCount == 4 && operands[3].isImm()) {
956 uint32_t predicate = operands[3].as<Imm>().valueAs<uint8_t>();
957 if ((predicate >> 4) == (predicate & 0xF)) {
958 out->_operands[0].clearOpFlags(OpRWFlags::kRead);
959 }
960 }
961 break;
962 }
963
964 default:
965 break;
966 }
948967 }
949968
950969 return rwHandleAVX512(inst, commonInfo, out);
16011620 mustUseEvex = opCount >= 2 && Reg::isYmm(operands[0]);
16021621 break;
16031622
1623 case Inst::kIdVgatherdpd:
1624 case Inst::kIdVgatherdps:
1625 case Inst::kIdVgatherqpd:
1626 case Inst::kIdVgatherqps:
1627 case Inst::kIdVpgatherdd:
1628 case Inst::kIdVpgatherdq:
1629 case Inst::kIdVpgatherqd:
1630 case Inst::kIdVpgatherqq:
1631 if (opCount == 2)
1632 mustUseEvex = true;
1633 break;
1634
16041635 // Special case: These instructions only allow `reg, reg. imm` combination in AVX|AVX2 mode, then
16051636 // AVX-512 introduced `reg, reg/mem, imm` combination that uses EVEX prefix. This means that if
16061637 // the second operand is memory then this is AVX-512_BW instruction and not AVX/AVX2 instruction.
16611692 // =========================
16621693
16631694 #if defined(ASMJIT_TEST)
1695 template<typename... Args>
1696 static Error queryRWInfoInline(InstRWInfo* out, Arch arch, BaseInst inst, Args&&... args) {
1697 Operand_ opArray[] = { std::forward<Args>(args)... };
1698 return InstInternal::queryRWInfo(arch, inst, opArray, sizeof...(args), out);
1699 }
1700
1701 template<typename... Args>
1702 static Error queryFeaturesInline(CpuFeatures* out, Arch arch, BaseInst inst, Args&&... args) {
1703 Operand_ opArray[] = { std::forward<Args>(args)... };
1704 return InstInternal::queryFeatures(arch, inst, opArray, sizeof...(args), out);
1705 }
1706
1707 #ifndef ASMJIT_NO_TEXT
16641708 UNIT(x86_inst_api_text) {
16651709 // All known instructions should be matched.
16661710 INFO("Matching all X86 instructions");
16671711 for (uint32_t a = 1; a < Inst::_kIdCount; a++) {
16681712 StringTmp<128> aName;
1669 EXPECT(InstInternal::instIdToString(Arch::kX86, a, aName) == kErrorOk,
1670 "Failed to get the name of instruction #%u", a);
1713 EXPECT_EQ(InstInternal::instIdToString(Arch::kX86, a, aName), kErrorOk)
1714 .message("Failed to get the name of instruction #%u", a);
16711715
16721716 uint32_t b = InstInternal::stringToInstId(Arch::kX86, aName.data(), aName.size());
16731717 StringTmp<128> bName;
16741718 InstInternal::instIdToString(Arch::kX86, b, bName);
1675
1676 EXPECT(a == b,
1677 "Instructions do not match \"%s\" (#%u) != \"%s\" (#%u)", aName.data(), a, bName.data(), b);
1719 EXPECT_EQ(a, b)
1720 .message("Instructions do not match \"%s\" (#%u) != \"%s\" (#%u)", aName.data(), a, bName.data(), b);
16781721 }
16791722 }
1680
1681 template<typename... Args>
1682 static Error queryRWInfoSimple(InstRWInfo* out, Arch arch, InstId instId, InstOptions options, Args&&... args) {
1683 BaseInst inst(instId);
1684 inst.addOptions(options);
1685 Operand_ opArray[] = { std::forward<Args>(args)... };
1686 return InstInternal::queryRWInfo(arch, inst, opArray, sizeof...(args), out);
1723 #endif // !ASMJIT_NO_TEXT
1724
1725 UNIT(x86_inst_api_cpu_features) {
1726 INFO("Verifying whether SSE2+ features are reported correctly for legacy instructions");
1727 {
1728 CpuFeatures f;
1729
1730 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdPaddd), xmm1, xmm2);
1731 EXPECT_TRUE(f.x86().hasSSE2());
1732
1733 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdAddsubpd), xmm1, xmm2);
1734 EXPECT_TRUE(f.x86().hasSSE3());
1735
1736 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdPshufb), xmm1, xmm2);
1737 EXPECT_TRUE(f.x86().hasSSSE3());
1738
1739 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdBlendpd), xmm1, xmm2, Imm(1));
1740 EXPECT_TRUE(f.x86().hasSSE4_1());
1741
1742 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdCrc32), eax, al);
1743 EXPECT_TRUE(f.x86().hasSSE4_2());
1744 }
1745
1746 INFO("Verifying whether AVX+ features are reported correctly for AVX instructions");
1747 {
1748 CpuFeatures f;
1749
1750 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpaddd), xmm1, xmm2, xmm3);
1751 EXPECT_TRUE(f.x86().hasAVX());
1752
1753 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpaddd), ymm1, ymm2, ymm3);
1754 EXPECT_TRUE(f.x86().hasAVX2());
1755
1756 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVaddsubpd), xmm1, xmm2, xmm3);
1757 EXPECT_TRUE(f.x86().hasAVX());
1758
1759 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVaddsubpd), ymm1, ymm2, ymm3);
1760 EXPECT_TRUE(f.x86().hasAVX());
1761
1762 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpshufb), xmm1, xmm2, xmm3);
1763 EXPECT_TRUE(f.x86().hasAVX());
1764
1765 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpshufb), ymm1, ymm2, ymm3);
1766 EXPECT_TRUE(f.x86().hasAVX2());
1767
1768 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVblendpd), xmm1, xmm2, xmm3, Imm(1));
1769 EXPECT_TRUE(f.x86().hasAVX());
1770
1771 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVblendpd), ymm1, ymm2, ymm3, Imm(1));
1772 EXPECT_TRUE(f.x86().hasAVX());
1773
1774 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpunpcklbw), xmm1, xmm2, xmm3);
1775 EXPECT_TRUE(f.x86().hasAVX());
1776
1777 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpunpcklbw), ymm1, ymm2, ymm3);
1778 EXPECT_TRUE(f.x86().hasAVX2());
1779 }
1780
1781 INFO("Verifying whether AVX2 / AVX512 features are reported correctly for vpgatherxx instructions");
1782 {
1783 CpuFeatures f;
1784
1785 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpgatherdd), xmm1, ptr(rax, xmm2), xmm3);
1786 EXPECT_TRUE(f.x86().hasAVX2());
1787 EXPECT_FALSE(f.x86().hasAVX512_F());
1788
1789 // NOTE: This instruction is unencodable, but sometimes this signature is used to check the support (without the {k}).
1790 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpgatherdd), xmm1, ptr(rax, xmm2));
1791 EXPECT_FALSE(f.x86().hasAVX2());
1792 EXPECT_TRUE(f.x86().hasAVX512_F());
1793
1794 queryFeaturesInline(&f, Arch::kX64, BaseInst(Inst::kIdVpgatherdd, InstOptions::kNone, k1), xmm1, ptr(rax, xmm2));
1795 EXPECT_FALSE(f.x86().hasAVX2());
1796 EXPECT_TRUE(f.x86().hasAVX512_F());
1797 }
16871798 }
16881799
1689 UNIT(x86_inst_api_rm_feature) {
1800 UNIT(x86_inst_api_rm_features) {
16901801 INFO("Verifying whether RM/feature is reported correctly for PEXTRW instruction");
16911802 {
16921803 InstRWInfo rwi;
16931804
1694 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdPextrw, InstOptions::kNone, eax, mm1, imm(1));
1695 EXPECT(rwi.rmFeature() == 0);
1696
1697 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdPextrw, InstOptions::kNone, eax, xmm1, imm(1));
1698 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kSSE4_1);
1805 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdPextrw), eax, mm1, imm(1));
1806 EXPECT_EQ(rwi.rmFeature(), 0u);
1807
1808 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdPextrw), eax, xmm1, imm(1));
1809 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kSSE4_1);
16991810 }
17001811
17011812 INFO("Verifying whether RM/feature is reported correctly for AVX512 shift instructions");
17021813 {
17031814 InstRWInfo rwi;
17041815
1705 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpslld, InstOptions::kNone, xmm1, xmm2, imm(8));
1706 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_F);
1707
1708 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsllq, InstOptions::kNone, ymm1, ymm2, imm(8));
1709 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_F);
1710
1711 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsrad, InstOptions::kNone, xmm1, xmm2, imm(8));
1712 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_F);
1713
1714 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsrld, InstOptions::kNone, ymm1, ymm2, imm(8));
1715 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_F);
1716
1717 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsrlq, InstOptions::kNone, xmm1, xmm2, imm(8));
1718 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_F);
1719
1720 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpslldq, InstOptions::kNone, xmm1, xmm2, imm(8));
1721 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_BW);
1722
1723 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsllw, InstOptions::kNone, ymm1, ymm2, imm(8));
1724 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_BW);
1725
1726 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsraw, InstOptions::kNone, xmm1, xmm2, imm(8));
1727 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_BW);
1728
1729 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsrldq, InstOptions::kNone, ymm1, ymm2, imm(8));
1730 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_BW);
1731
1732 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsrlw, InstOptions::kNone, xmm1, xmm2, imm(8));
1733 EXPECT(rwi.rmFeature() == CpuFeatures::X86::kAVX512_BW);
1734
1735 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpslld, InstOptions::kNone, xmm1, xmm2, xmm3);
1736 EXPECT(rwi.rmFeature() == 0);
1737
1738 queryRWInfoSimple(&rwi, Arch::kX64, Inst::kIdVpsllw, InstOptions::kNone, xmm1, xmm2, xmm3);
1739 EXPECT(rwi.rmFeature() == 0);
1816 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpslld), xmm1, xmm2, imm(8));
1817 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_F);
1818
1819 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsllq), ymm1, ymm2, imm(8));
1820 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_F);
1821
1822 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsrad), xmm1, xmm2, imm(8));
1823 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_F);
1824
1825 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsrld), ymm1, ymm2, imm(8));
1826 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_F);
1827
1828 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsrlq), xmm1, xmm2, imm(8));
1829 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_F);
1830
1831 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpslldq), xmm1, xmm2, imm(8));
1832 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_BW);
1833
1834 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsllw), ymm1, ymm2, imm(8));
1835 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_BW);
1836
1837 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsraw), xmm1, xmm2, imm(8));
1838 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_BW);
1839
1840 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsrldq), ymm1, ymm2, imm(8));
1841 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_BW);
1842
1843 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsrlw), xmm1, xmm2, imm(8));
1844 EXPECT_EQ(rwi.rmFeature(), CpuFeatures::X86::kAVX512_BW);
1845
1846 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpslld), xmm1, xmm2, xmm3);
1847 EXPECT_EQ(rwi.rmFeature(), 0u);
1848
1849 queryRWInfoInline(&rwi, Arch::kX64, BaseInst(Inst::kIdVpsllw), xmm1, xmm2, xmm3);
1850 EXPECT_EQ(rwi.rmFeature(), 0u);
17401851 }
17411852 }
17421853 #endif
4646 #define E(PREFIX, OPCODE, ModO, LL, W, EvexW, N, TT) (O_ENCODE(Opcode::k##PREFIX, 0x##OPCODE, Opcode::kModO_##ModO, Opcode::kLL_##LL, Opcode::kW_##W, Opcode::kEvex_W_##EvexW, Opcode::kCDSHL_##N, Opcode::kCDTT_##TT) | Opcode::kMM_ForceEvex)
4747 #define O_FPU(PREFIX, OPCODE, ModO) (Opcode::kFPU_##PREFIX | (0x##OPCODE & 0xFFu) | ((0x##OPCODE >> 8) << Opcode::kFPU_2B_Shift) | Opcode::kModO_##ModO)
4848
49 // Don't store `_nameDataIndex` if instruction names are disabled. Since some
50 // APIs can use `_nameDataIndex` it's much safer if it's zero if it's not defined.
51 #ifndef ASMJIT_NO_TEXT
52 #define NAME_DATA_INDEX(Index) Index
53 #else
54 #define NAME_DATA_INDEX(Index) 0
55 #endif
56
5749 // Defines an X86 instruction.
58 #define INST(id, encoding, opcode0, opcode1, mainOpcodeIndex, altOpcodeIndex, nameDataIndex, commomInfoIndex, additionalInfoIndex) { \
59 uint32_t(NAME_DATA_INDEX(nameDataIndex)), \
50 #define INST(id, encoding, opcode0, opcode1, mainOpcodeIndex, altOpcodeIndex, commomInfoIndex, additionalInfoIndex) { \
51 uint32_t(0), \
6052 uint32_t(commomInfoIndex), \
6153 uint32_t(additionalInfoIndex), \
6254 uint8_t(InstDB::kEncoding##encoding), \
6658 }
6759
6860 const InstDB::InstInfo InstDB::_instInfoTable[] = {
69 /*--------------------+--------------------+------------------+--------+------------------+--------+----+----+------+----+----+
70 | Instruction | Instruction | Main Opcode | EVEX |Alternative Opcode| EVEX |Op0X|Op1X|Name-X|IdxA|IdxB|
71 | Id & Name | Encoding | (pp+mmm|op/o|L|w|W|N|TT.)|--(pp+mmm|op/o|L|w|W|N|TT.)| (auto-generated) |
72 +---------------------+--------------------+---------+----+-+-+-+-+----+---------+----+-+-+-+-+----+----+----+------+----+---*/
61 /*--------------------+--------------------+------------------+--------+------------------+--------+----+----+----+----+
62 | Instruction | Instruction | Main Opcode | EVEX |Alternative Opcode| EVEX |Op0X|Op1X|IdxA|IdxB|
63 | Id & Name | Encoding | (pp+mmm|op/o|L|w|W|N|TT.)|--(pp+mmm|op/o|L|w|W|N|TT.)| (auto-generated) |
64 +---------------------+--------------------+---------+----+-+-+-+-+----+---------+----+-+-+-+-+----+----+----+----+---*/
7365 // ${InstInfo:Begin}
74 INST(None , None , 0 , 0 , 0 , 0 , 0 , 0 , 0 ), // #0
75 INST(Aaa , X86Op_xAX , O(000000,37,_,_,_,_,_,_ ), 0 , 0 , 0 , 1 , 1 , 1 ), // #1
76 INST(Aad , X86I_xAX , O(000000,D5,_,_,_,_,_,_ ), 0 , 0 , 0 , 5 , 2 , 1 ), // #2
77 INST(Aam , X86I_xAX , O(000000,D4,_,_,_,_,_,_ ), 0 , 0 , 0 , 9 , 2 , 1 ), // #3
78 INST(Aas , X86Op_xAX , O(000000,3F,_,_,_,_,_,_ ), 0 , 0 , 0 , 13 , 1 , 1 ), // #4
79 INST(Adc , X86Arith , O(000000,10,2,_,x,_,_,_ ), 0 , 1 , 0 , 17 , 3 , 2 ), // #5
80 INST(Adcx , X86Rm , O(660F38,F6,_,_,x,_,_,_ ), 0 , 2 , 0 , 21 , 4 , 3 ), // #6
81 INST(Add , X86Arith , O(000000,00,0,_,x,_,_,_ ), 0 , 0 , 0 , 3146 , 3 , 1 ), // #7
82 INST(Addpd , ExtRm , O(660F00,58,_,_,_,_,_,_ ), 0 , 3 , 0 , 5788 , 5 , 4 ), // #8
83 INST(Addps , ExtRm , O(000F00,58,_,_,_,_,_,_ ), 0 , 4 , 0 , 5800 , 5 , 5 ), // #9
84 INST(Addsd , ExtRm , O(F20F00,58,_,_,_,_,_,_ ), 0 , 5 , 0 , 6118 , 6 , 4 ), // #10
85 INST(Addss , ExtRm , O(F30F00,58,_,_,_,_,_,_ ), 0 , 6 , 0 , 3283 , 7 , 5 ), // #11
86 INST(Addsubpd , ExtRm , O(660F00,D0,_,_,_,_,_,_ ), 0 , 3 , 0 , 5410 , 5 , 6 ), // #12
87 INST(Addsubps , ExtRm , O(F20F00,D0,_,_,_,_,_,_ ), 0 , 5 , 0 , 5422 , 5 , 6 ), // #13
88 INST(Adox , X86Rm , O(F30F38,F6,_,_,x,_,_,_ ), 0 , 7 , 0 , 26 , 4 , 7 ), // #14
89 INST(Aesdec , ExtRm , O(660F38,DE,_,_,_,_,_,_ ), 0 , 2 , 0 , 3352 , 5 , 8 ), // #15
90 INST(Aesdeclast , ExtRm , O(660F38,DF,_,_,_,_,_,_ ), 0 , 2 , 0 , 3360 , 5 , 8 ), // #16
91 INST(Aesenc , ExtRm , O(660F38,DC,_,_,_,_,_,_ ), 0 , 2 , 0 , 3372 , 5 , 8 ), // #17
92 INST(Aesenclast , ExtRm , O(660F38,DD,_,_,_,_,_,_ ), 0 , 2 , 0 , 3380 , 5 , 8 ), // #18
93 INST(Aesimc , ExtRm , O(660F38,DB,_,_,_,_,_,_ ), 0 , 2 , 0 , 3392 , 5 , 8 ), // #19
94 INST(Aeskeygenassist , ExtRmi , O(660F3A,DF,_,_,_,_,_,_ ), 0 , 8 , 0 , 3400 , 8 , 8 ), // #20
95 INST(And , X86Arith , O(000000,20,4,_,x,_,_,_ ), 0 , 9 , 0 , 2525 , 9 , 1 ), // #21
96 INST(Andn , VexRvm_Wx , V(000F38,F2,_,0,x,_,_,_ ), 0 , 10 , 0 , 7789 , 10 , 9 ), // #22
97 INST(Andnpd , ExtRm , O(660F00,55,_,_,_,_,_,_ ), 0 , 3 , 0 , 3433 , 5 , 4 ), // #23
98 INST(Andnps , ExtRm , O(000F00,55,_,_,_,_,_,_ ), 0 , 4 , 0 , 3441 , 5 , 5 ), // #24
99 INST(Andpd , ExtRm , O(660F00,54,_,_,_,_,_,_ ), 0 , 3 , 0 , 4745 , 11 , 4 ), // #25
100 INST(Andps , ExtRm , O(000F00,54,_,_,_,_,_,_ ), 0 , 4 , 0 , 4755 , 11 , 5 ), // #26
101 INST(Arpl , X86Mr_NoSize , O(000000,63,_,_,_,_,_,_ ), 0 , 0 , 0 , 31 , 12 , 10 ), // #27
102 INST(Bextr , VexRmv_Wx , V(000F38,F7,_,0,x,_,_,_ ), 0 , 10 , 0 , 36 , 13 , 9 ), // #28
103 INST(Blcfill , VexVm_Wx , V(XOP_M9,01,1,0,x,_,_,_ ), 0 , 11 , 0 , 42 , 14 , 11 ), // #29
104 INST(Blci , VexVm_Wx , V(XOP_M9,02,6,0,x,_,_,_ ), 0 , 12 , 0 , 50 , 14 , 11 ), // #30
105 INST(Blcic , VexVm_Wx , V(XOP_M9,01,5,0,x,_,_,_ ), 0 , 13 , 0 , 55 , 14 , 11 ), // #31
106 INST(Blcmsk , VexVm_Wx , V(XOP_M9,02,1,0,x,_,_,_ ), 0 , 11 , 0 , 61 , 14 , 11 ), // #32
107 INST(Blcs , VexVm_Wx , V(XOP_M9,01,3,0,x,_,_,_ ), 0 , 14 , 0 , 68 , 14 , 11 ), // #33
108 INST(Blendpd , ExtRmi , O(660F3A,0D,_,_,_,_,_,_ ), 0 , 8 , 0 , 3483 , 8 , 12 ), // #34
109 INST(Blendps , ExtRmi , O(660F3A,0C,_,_,_,_,_,_ ), 0 , 8 , 0 , 3492 , 8 , 12 ), // #35
110 INST(Blendvpd , ExtRm_XMM0 , O(660F38,15,_,_,_,_,_,_ ), 0 , 2 , 0 , 3501 , 15 , 12 ), // #36
111 INST(Blendvps , ExtRm_XMM0 , O(660F38,14,_,_,_,_,_,_ ), 0 , 2 , 0 , 3511 , 15 , 12 ), // #37
112 INST(Blsfill , VexVm_Wx , V(XOP_M9,01,2,0,x,_,_,_ ), 0 , 15 , 0 , 73 , 14 , 11 ), // #38
113 INST(Blsi , VexVm_Wx , V(000F38,F3,3,0,x,_,_,_ ), 0 , 16 , 0 , 81 , 14 , 9 ), // #39
114 INST(Blsic , VexVm_Wx , V(XOP_M9,01,6,0,x,_,_,_ ), 0 , 12 , 0 , 86 , 14 , 11 ), // #40
115 INST(Blsmsk , VexVm_Wx , V(000F38,F3,2,0,x,_,_,_ ), 0 , 17 , 0 , 92 , 14 , 9 ), // #41
116 INST(Blsr , VexVm_Wx , V(000F38,F3,1,0,x,_,_,_ ), 0 , 18 , 0 , 99 , 14 , 9 ), // #42
117 INST(Bndcl , X86Rm , O(F30F00,1A,_,_,_,_,_,_ ), 0 , 6 , 0 , 104 , 16 , 13 ), // #43
118 INST(Bndcn , X86Rm , O(F20F00,1B,_,_,_,_,_,_ ), 0 , 5 , 0 , 110 , 16 , 13 ), // #44
119 INST(Bndcu , X86Rm , O(F20F00,1A,_,_,_,_,_,_ ), 0 , 5 , 0 , 116 , 16 , 13 ), // #45
120 INST(Bndldx , X86Rm , O(000F00,1A,_,_,_,_,_,_ ), 0 , 4 , 0 , 122 , 17 , 13 ), // #46
121 INST(Bndmk , X86Rm , O(F30F00,1B,_,_,_,_,_,_ ), 0 , 6 , 0 , 129 , 18 , 13 ), // #47
122 INST(Bndmov , X86Bndmov , O(660F00,1A,_,_,_,_,_,_ ), O(660F00,1B,_,_,_,_,_,_ ), 3 , 1 , 135 , 19 , 13 ), // #48
123 INST(Bndstx , X86Mr , O(000F00,1B,_,_,_,_,_,_ ), 0 , 4 , 0 , 142 , 20 , 13 ), // #49
124 INST(Bound , X86Rm , O(000000,62,_,_,_,_,_,_ ), 0 , 0 , 0 , 149 , 21 , 0 ), // #50
125 INST(Bsf , X86Rm , O(000F00,BC,_,_,x,_,_,_ ), 0 , 4 , 0 , 155 , 22 , 1 ), // #51
126 INST(Bsr , X86Rm , O(000F00,BD,_,_,x,_,_,_ ), 0 , 4 , 0 , 159 , 22 , 1 ), // #52
127 INST(Bswap , X86Bswap , O(000F00,C8,_,_,x,_,_,_ ), 0 , 4 , 0 , 163 , 23 , 0 ), // #53
128 INST(Bt , X86Bt , O(000F00,A3,_,_,x,_,_,_ ), O(000F00,BA,4,_,x,_,_,_ ), 4 , 2 , 169 , 24 , 14 ), // #54
129 INST(Btc , X86Bt , O(000F00,BB,_,_,x,_,_,_ ), O(000F00,BA,7,_,x,_,_,_ ), 4 , 3 , 172 , 25 , 14 ), // #55
130 INST(Btr , X86Bt , O(000F00,B3,_,_,x,_,_,_ ), O(000F00,BA,6,_,x,_,_,_ ), 4 , 4 , 176 , 25 , 14 ), // #56
131 INST(Bts , X86Bt , O(000F00,AB,_,_,x,_,_,_ ), O(000F00,BA,5,_,x,_,_,_ ), 4 , 5 , 180 , 25 , 14 ), // #57
132 INST(Bzhi , VexRmv_Wx , V(000F38,F5,_,0,x,_,_,_ ), 0 , 10 , 0 , 184 , 13 , 15 ), // #58
133 INST(Call , X86Call , O(000000,FF,2,_,_,_,_,_ ), 0 , 1 , 0 , 3038 , 26 , 1 ), // #59
134 INST(Cbw , X86Op_xAX , O(660000,98,_,_,_,_,_,_ ), 0 , 19 , 0 , 189 , 27 , 0 ), // #60
135 INST(Cdq , X86Op_xDX_xAX , O(000000,99,_,_,_,_,_,_ ), 0 , 0 , 0 , 193 , 28 , 0 ), // #61
136 INST(Cdqe , X86Op_xAX , O(000000,98,_,_,1,_,_,_ ), 0 , 20 , 0 , 197 , 29 , 0 ), // #62
137 INST(Clac , X86Op , O(000F01,CA,_,_,_,_,_,_ ), 0 , 21 , 0 , 202 , 30 , 16 ), // #63
138 INST(Clc , X86Op , O(000000,F8,_,_,_,_,_,_ ), 0 , 0 , 0 , 207 , 30 , 17 ), // #64
139 INST(Cld , X86Op , O(000000,FC,_,_,_,_,_,_ ), 0 , 0 , 0 , 211 , 30 , 18 ), // #65
140 INST(Cldemote , X86M_Only , O(000F00,1C,0,_,_,_,_,_ ), 0 , 4 , 0 , 215 , 31 , 19 ), // #66
141 INST(Clflush , X86M_Only , O(000F00,AE,7,_,_,_,_,_ ), 0 , 22 , 0 , 224 , 31 , 20 ), // #67
142 INST(Clflushopt , X86M_Only , O(660F00,AE,7,_,_,_,_,_ ), 0 , 23 , 0 , 232 , 31 , 21 ), // #68
143 INST(Clgi , X86Op , O(000F01,DD,_,_,_,_,_,_ ), 0 , 21 , 0 , 243 , 30 , 22 ), // #69
144 INST(Cli , X86Op , O(000000,FA,_,_,_,_,_,_ ), 0 , 0 , 0 , 248 , 30 , 23 ), // #70
145 INST(Clrssbsy , X86M_Only , O(F30F00,AE,6,_,_,_,_,_ ), 0 , 24 , 0 , 252 , 32 , 24 ), // #71
146 INST(Clts , X86Op , O(000F00,06,_,_,_,_,_,_ ), 0 , 4 , 0 , 261 , 30 , 0 ), // #72
147 INST(Clui , X86Op , O(F30F01,EE,_,_,_,_,_,_ ), 0 , 25 , 0 , 266 , 33 , 25 ), // #73
148 INST(Clwb , X86M_Only , O(660F00,AE,6,_,_,_,_,_ ), 0 , 26 , 0 , 271 , 31 , 26 ), // #74
149 INST(Clzero , X86Op_MemZAX , O(000F01,FC,_,_,_,_,_,_ ), 0 , 21 , 0 , 276 , 34 , 27 ), // #75
150 INST(Cmc , X86Op , O(000000,F5,_,_,_,_,_,_ ), 0 , 0 , 0 , 283 , 30 , 28 ), // #76
151 INST(Cmova , X86Rm , O(000F00,47,_,_,x,_,_,_ ), 0 , 4 , 0 , 287 , 22 , 29 ), // #77
152 INST(Cmovae , X86Rm , O(000F00,43,_,_,x,_,_,_ ), 0 , 4 , 0 , 293 , 22 , 30 ), // #78
153 INST(Cmovb , X86Rm , O(000F00,42,_,_,x,_,_,_ ), 0 , 4 , 0 , 648 , 22 , 30 ), // #79
154 INST(Cmovbe , X86Rm , O(000F00,46,_,_,x,_,_,_ ), 0 , 4 , 0 , 655 , 22 , 29 ), // #80
155 INST(Cmovc , X86Rm , O(000F00,42,_,_,x,_,_,_ ), 0 , 4 , 0 , 300 , 22 , 30 ), // #81
156 INST(Cmove , X86Rm , O(000F00,44,_,_,x,_,_,_ ), 0 , 4 , 0 , 663 , 22 , 31 ), // #82
157 INST(Cmovg , X86Rm , O(000F00,4F,_,_,x,_,_,_ ), 0 , 4 , 0 , 306 , 22 , 32 ), // #83
158 INST(Cmovge , X86Rm , O(000F00,4D,_,_,x,_,_,_ ), 0 , 4 , 0 , 312 , 22 , 33 ), // #84
159 INST(Cmovl , X86Rm , O(000F00,4C,_,_,x,_,_,_ ), 0 , 4 , 0 , 319 , 22 , 33 ), // #85
160 INST(Cmovle , X86Rm , O(000F00,4E,_,_,x,_,_,_ ), 0 , 4 , 0 , 325 , 22 , 32 ), // #86
161 INST(Cmovna , X86Rm , O(000F00,46,_,_,x,_,_,_ ), 0 , 4 , 0 , 332 , 22 , 29 ), // #87
162 INST(Cmovnae , X86Rm , O(000F00,42,_,_,x,_,_,_ ), 0 , 4 , 0 , 339 , 22 , 30 ), // #88
163 INST(Cmovnb , X86Rm , O(000F00,43,_,_,x,_,_,_ ), 0 , 4 , 0 , 670 , 22 , 30 ), // #89
164 INST(Cmovnbe , X86Rm , O(000F00,47,_,_,x,_,_,_ ), 0 , 4 , 0 , 678 , 22 , 29 ), // #90
165 INST(Cmovnc , X86Rm , O(000F00,43,_,_,x,_,_,_ ), 0 , 4 , 0 , 347 , 22 , 30 ), // #91
166 INST(Cmovne , X86Rm , O(000F00,45,_,_,x,_,_,_ ), 0 , 4 , 0 , 687 , 22 , 31 ), // #92
167 INST(Cmovng , X86Rm , O(000F00,4E,_,_,x,_,_,_ ), 0 , 4 , 0 , 354 , 22 , 32 ), // #93
168 INST(Cmovnge , X86Rm , O(000F00,4C,_,_,x,_,_,_ ), 0 , 4 , 0 , 361 , 22 , 33 ), // #94
169 INST(Cmovnl , X86Rm , O(000F00,4D,_,_,x,_,_,_ ), 0 , 4 , 0 , 369 , 22 , 33 ), // #95
170 INST(Cmovnle , X86Rm , O(000F00,4F,_,_,x,_,_,_ ), 0 , 4 , 0 , 376 , 22 , 32 ), // #96
171 INST(Cmovno , X86Rm , O(000F00,41,_,_,x,_,_,_ ), 0 , 4 , 0 , 384 , 22 , 34 ), // #97
172 INST(Cmovnp , X86Rm , O(000F00,4B,_,_,x,_,_,_ ), 0 , 4 , 0 , 391 , 22 , 35 ), // #98
173 INST(Cmovns , X86Rm , O(000F00,49,_,_,x,_,_,_ ), 0 , 4 , 0 , 398 , 22 , 36 ), // #99
174 INST(Cmovnz , X86Rm , O(000F00,45,_,_,x,_,_,_ ), 0 , 4 , 0 , 405 , 22 , 31 ), // #100
175 INST(Cmovo , X86Rm , O(000F00,40,_,_,x,_,_,_ ), 0 , 4 , 0 , 412 , 22 , 34 ), // #101
176 INST(Cmovp , X86Rm , O(000F00,4A,_,_,x,_,_,_ ), 0 , 4 , 0 , 418 , 22 , 35 ), // #102
177 INST(Cmovpe , X86Rm , O(000F00,4A,_,_,x,_,_,_ ), 0 , 4 , 0 , 424 , 22 , 35 ), // #103
178 INST(Cmovpo , X86Rm , O(000F00,4B,_,_,x,_,_,_ ), 0 , 4 , 0 , 431 , 22 , 35 ), // #104
179 INST(Cmovs , X86Rm , O(000F00,48,_,_,x,_,_,_ ), 0 , 4 , 0 , 438 , 22 , 36 ), // #105
180 INST(Cmovz , X86Rm , O(000F00,44,_,_,x,_,_,_ ), 0 , 4 , 0 , 444 , 22 , 31 ), // #106
181 INST(Cmp , X86Arith , O(000000,38,7,_,x,_,_,_ ), 0 , 27 , 0 , 450 , 35 , 1 ), // #107
182 INST(Cmppd , ExtRmi , O(660F00,C2,_,_,_,_,_,_ ), 0 , 3 , 0 , 3737 , 8 , 4 ), // #108
183 INST(Cmpps , ExtRmi , O(000F00,C2,_,_,_,_,_,_ ), 0 , 4 , 0 , 3751 , 8 , 5 ), // #109
184 INST(Cmps , X86StrMm , O(000000,A6,_,_,_,_,_,_ ), 0 , 0 , 0 , 454 , 36 , 37 ), // #110
185 INST(Cmpsd , ExtRmi , O(F20F00,C2,_,_,_,_,_,_ ), 0 , 5 , 0 , 3758 , 37 , 4 ), // #111
186 INST(Cmpss , ExtRmi , O(F30F00,C2,_,_,_,_,_,_ ), 0 , 6 , 0 , 3772 , 38 , 5 ), // #112
187 INST(Cmpxchg , X86Cmpxchg , O(000F00,B0,_,_,x,_,_,_ ), 0 , 4 , 0 , 459 , 39 , 38 ), // #113
188 INST(Cmpxchg16b , X86Cmpxchg8b_16b , O(000F00,C7,1,_,1,_,_,_ ), 0 , 28 , 0 , 467 , 40 , 39 ), // #114
189 INST(Cmpxchg8b , X86Cmpxchg8b_16b , O(000F00,C7,1,_,_,_,_,_ ), 0 , 29 , 0 , 478 , 41 , 40 ), // #115
190 INST(Comisd , ExtRm , O(660F00,2F,_,_,_,_,_,_ ), 0 , 3 , 0 , 11391, 6 , 41 ), // #116
191 INST(Comiss , ExtRm , O(000F00,2F,_,_,_,_,_,_ ), 0 , 4 , 0 , 11409, 7 , 42 ), // #117
192 INST(Cpuid , X86Op , O(000F00,A2,_,_,_,_,_,_ ), 0 , 4 , 0 , 488 , 42 , 43 ), // #118
193 INST(Cqo , X86Op_xDX_xAX , O(000000,99,_,_,1,_,_,_ ), 0 , 20 , 0 , 494 , 43 , 0 ), // #119
194 INST(Crc32 , X86Crc , O(F20F38,F0,_,_,x,_,_,_ ), 0 , 30 , 0 , 498 , 44 , 44 ), // #120
195 INST(Cvtdq2pd , ExtRm , O(F30F00,E6,_,_,_,_,_,_ ), 0 , 6 , 0 , 3827 , 6 , 4 ), // #121
196 INST(Cvtdq2ps , ExtRm , O(000F00,5B,_,_,_,_,_,_ ), 0 , 4 , 0 , 3847 , 5 , 4 ), // #122
197 INST(Cvtpd2dq , ExtRm , O(F20F00,E6,_,_,_,_,_,_ ), 0 , 5 , 0 , 3886 , 5 , 4 ), // #123
198 INST(Cvtpd2pi , ExtRm , O(660F00,2D,_,_,_,_,_,_ ), 0 , 3 , 0 , 504 , 45 , 4 ), // #124
199 INST(Cvtpd2ps , ExtRm , O(660F00,5A,_,_,_,_,_,_ ), 0 , 3 , 0 , 3906 , 5 , 4 ), // #125
200 INST(Cvtpi2pd , ExtRm , O(660F00,2A,_,_,_,_,_,_ ), 0 , 3 , 0 , 513 , 46 , 4 ), // #126
201 INST(Cvtpi2ps , ExtRm , O(000F00,2A,_,_,_,_,_,_ ), 0 , 4 , 0 , 522 , 46 , 5 ), // #127
202 INST(Cvtps2dq , ExtRm , O(660F00,5B,_,_,_,_,_,_ ), 0 , 3 , 0 , 4040 , 5 , 4 ), // #128
203 INST(Cvtps2pd , ExtRm , O(000F00,5A,_,_,_,_,_,_ ), 0 , 4 , 0 , 4050 , 6 , 4 ), // #129
204 INST(Cvtps2pi , ExtRm , O(000F00,2D,_,_,_,_,_,_ ), 0 , 4 , 0 , 531 , 47 , 5 ), // #130
205 INST(Cvtsd2si , ExtRm_Wx_GpqOnly , O(F20F00,2D,_,_,x,_,_,_ ), 0 , 5 , 0 , 4153 , 48 , 4 ), // #131
206 INST(Cvtsd2ss , ExtRm , O(F20F00,5A,_,_,_,_,_,_ ), 0 , 5 , 0 , 4163 , 6 , 4 ), // #132
207 INST(Cvtsi2sd , ExtRm_Wx , O(F20F00,2A,_,_,x,_,_,_ ), 0 , 5 , 0 , 4225 , 49 , 4 ), // #133
208 INST(Cvtsi2ss , ExtRm_Wx , O(F30F00,2A,_,_,x,_,_,_ ), 0 , 6 , 0 , 4245 , 49 , 5 ), // #134
209 INST(Cvtss2sd , ExtRm , O(F30F00,5A,_,_,_,_,_,_ ), 0 , 6 , 0 , 4255 , 7 , 4 ), // #135
210 INST(Cvtss2si , ExtRm_Wx_GpqOnly , O(F30F00,2D,_,_,x,_,_,_ ), 0 , 6 , 0 , 4275 , 50 , 5 ), // #136
211 INST(Cvttpd2dq , ExtRm , O(660F00,E6,_,_,_,_,_,_ ), 0 , 3 , 0 , 4296 , 5 , 4 ), // #137
212 INST(Cvttpd2pi , ExtRm , O(660F00,2C,_,_,_,_,_,_ ), 0 , 3 , 0 , 540 , 45 , 4 ), // #138
213 INST(Cvttps2dq , ExtRm , O(F30F00,5B,_,_,_,_,_,_ ), 0 , 6 , 0 , 4409 , 5 , 4 ), // #139
214 INST(Cvttps2pi , ExtRm , O(000F00,2C,_,_,_,_,_,_ ), 0 , 4 , 0 , 550 , 47 , 5 ), // #140
215 INST(Cvttsd2si , ExtRm_Wx_GpqOnly , O(F20F00,2C,_,_,x,_,_,_ ), 0 , 5 , 0 , 4455 , 48 , 4 ), // #141
216 INST(Cvttss2si , ExtRm_Wx_GpqOnly , O(F30F00,2C,_,_,x,_,_,_ ), 0 , 6 , 0 , 4501 , 50 , 5 ), // #142
217 INST(Cwd , X86Op_xDX_xAX , O(660000,99,_,_,_,_,_,_ ), 0 , 19 , 0 , 560 , 51 , 0 ), // #143
218 INST(Cwde , X86Op_xAX , O(000000,98,_,_,_,_,_,_ ), 0 , 0 , 0 , 564 , 52 , 0 ), // #144
219 INST(Daa , X86Op , O(000000,27,_,_,_,_,_,_ ), 0 , 0 , 0 , 569 , 1 , 1 ), // #145
220 INST(Das , X86Op , O(000000,2F,_,_,_,_,_,_ ), 0 , 0 , 0 , 573 , 1 , 1 ), // #146
221 INST(Dec , X86IncDec , O(000000,FE,1,_,x,_,_,_ ), O(000000,48,_,_,x,_,_,_ ), 31 , 6 , 3355 , 53 , 45 ), // #147
222 INST(Div , X86M_GPB_MulDiv , O(000000,F6,6,_,x,_,_,_ ), 0 , 32 , 0 , 810 , 54 , 1 ), // #148
223 INST(Divpd , ExtRm , O(660F00,5E,_,_,_,_,_,_ ), 0 , 3 , 0 , 4652 , 5 , 4 ), // #149
224 INST(Divps , ExtRm , O(000F00,5E,_,_,_,_,_,_ ), 0 , 4 , 0 , 4666 , 5 , 5 ), // #150
225 INST(Divsd , ExtRm , O(F20F00,5E,_,_,_,_,_,_ ), 0 , 5 , 0 , 4673 , 6 , 4 ), // #151
226 INST(Divss , ExtRm , O(F30F00,5E,_,_,_,_,_,_ ), 0 , 6 , 0 , 4687 , 7 , 5 ), // #152
227 INST(Dppd , ExtRmi , O(660F3A,41,_,_,_,_,_,_ ), 0 , 8 , 0 , 4704 , 8 , 12 ), // #153
228 INST(Dpps , ExtRmi , O(660F3A,40,_,_,_,_,_,_ ), 0 , 8 , 0 , 4710 , 8 , 12 ), // #154
229 INST(Emms , X86Op , O(000F00,77,_,_,_,_,_,_ ), 0 , 4 , 0 , 778 , 55 , 46 ), // #155
230 INST(Endbr32 , X86Op_Mod11RM , O(F30F00,1E,7,_,_,_,_,3 ), 0 , 33 , 0 , 577 , 30 , 47 ), // #156
231 INST(Endbr64 , X86Op_Mod11RM , O(F30F00,1E,7,_,_,_,_,2 ), 0 , 34 , 0 , 585 , 30 , 47 ), // #157
232 INST(Enqcmd , X86EnqcmdMovdir64b , O(F20F38,F8,_,_,_,_,_,_ ), 0 , 30 , 0 , 593 , 56 , 48 ), // #158
233 INST(Enqcmds , X86EnqcmdMovdir64b , O(F30F38,F8,_,_,_,_,_,_ ), 0 , 7 , 0 , 600 , 56 , 48 ), // #159
234 INST(Enter , X86Enter , O(000000,C8,_,_,_,_,_,_ ), 0 , 0 , 0 , 3046 , 57 , 0 ), // #160
235 INST(Extractps , ExtExtract , O(660F3A,17,_,_,_,_,_,_ ), 0 , 8 , 0 , 4900 , 58 , 12 ), // #161
236 INST(Extrq , ExtExtrq , O(660F00,79,_,_,_,_,_,_ ), O(660F00,78,0,_,_,_,_,_ ), 3 , 7 , 8625 , 59 , 49 ), // #162
237 INST(F2xm1 , FpuOp , O_FPU(00,D9F0,_) , 0 , 35 , 0 , 608 , 30 , 0 ), // #163
238 INST(Fabs , FpuOp , O_FPU(00,D9E1,_) , 0 , 35 , 0 , 614 , 30 , 0 ), // #164
239 INST(Fadd , FpuArith , O_FPU(00,C0C0,0) , 0 , 36 , 0 , 2121 , 60 , 0 ), // #165
240 INST(Faddp , FpuRDef , O_FPU(00,DEC0,_) , 0 , 37 , 0 , 619 , 61 , 0 ), // #166
241 INST(Fbld , X86M_Only , O_FPU(00,00DF,4) , 0 , 38 , 0 , 625 , 62 , 0 ), // #167
242 INST(Fbstp , X86M_Only , O_FPU(00,00DF,6) , 0 , 39 , 0 , 630 , 62 , 0 ), // #168
243 INST(Fchs , FpuOp , O_FPU(00,D9E0,_) , 0 , 35 , 0 , 636 , 30 , 0 ), // #169
244 INST(Fclex , FpuOp , O_FPU(9B,DBE2,_) , 0 , 40 , 0 , 641 , 30 , 0 ), // #170
245 INST(Fcmovb , FpuR , O_FPU(00,DAC0,_) , 0 , 41 , 0 , 647 , 63 , 30 ), // #171
246 INST(Fcmovbe , FpuR , O_FPU(00,DAD0,_) , 0 , 41 , 0 , 654 , 63 , 29 ), // #172
247 INST(Fcmove , FpuR , O_FPU(00,DAC8,_) , 0 , 41 , 0 , 662 , 63 , 31 ), // #173
248 INST(Fcmovnb , FpuR , O_FPU(00,DBC0,_) , 0 , 42 , 0 , 669 , 63 , 30 ), // #174
249 INST(Fcmovnbe , FpuR , O_FPU(00,DBD0,_) , 0 , 42 , 0 , 677 , 63 , 29 ), // #175
250 INST(Fcmovne , FpuR , O_FPU(00,DBC8,_) , 0 , 42 , 0 , 686 , 63 , 31 ), // #176
251 INST(Fcmovnu , FpuR , O_FPU(00,DBD8,_) , 0 , 42 , 0 , 694 , 63 , 35 ), // #177
252 INST(Fcmovu , FpuR , O_FPU(00,DAD8,_) , 0 , 41 , 0 , 702 , 63 , 35 ), // #178
253 INST(Fcom , FpuCom , O_FPU(00,D0D0,2) , 0 , 43 , 0 , 709 , 64 , 0 ), // #179
254 INST(Fcomi , FpuR , O_FPU(00,DBF0,_) , 0 , 42 , 0 , 714 , 63 , 50 ), // #180
255 INST(Fcomip , FpuR , O_FPU(00,DFF0,_) , 0 , 44 , 0 , 720 , 63 , 50 ), // #181
256 INST(Fcomp , FpuCom , O_FPU(00,D8D8,3) , 0 , 45 , 0 , 727 , 64 , 0 ), // #182
257 INST(Fcompp , FpuOp , O_FPU(00,DED9,_) , 0 , 37 , 0 , 733 , 30 , 0 ), // #183
258 INST(Fcos , FpuOp , O_FPU(00,D9FF,_) , 0 , 35 , 0 , 740 , 30 , 0 ), // #184
259 INST(Fdecstp , FpuOp , O_FPU(00,D9F6,_) , 0 , 35 , 0 , 745 , 30 , 0 ), // #185
260 INST(Fdiv , FpuArith , O_FPU(00,F0F8,6) , 0 , 46 , 0 , 753 , 60 , 0 ), // #186
261 INST(Fdivp , FpuRDef , O_FPU(00,DEF8,_) , 0 , 37 , 0 , 758 , 61 , 0 ), // #187
262 INST(Fdivr , FpuArith , O_FPU(00,F8F0,7) , 0 , 47 , 0 , 764 , 60 , 0 ), // #188
263 INST(Fdivrp , FpuRDef , O_FPU(00,DEF0,_) , 0 , 37 , 0 , 770 , 61 , 0 ), // #189
264 INST(Femms , X86Op , O(000F00,0E,_,_,_,_,_,_ ), 0 , 4 , 0 , 777 , 30 , 51 ), // #190
265 INST(Ffree , FpuR , O_FPU(00,DDC0,_) , 0 , 48 , 0 , 783 , 63 , 0 ), // #191
266 INST(Fiadd , FpuM , O_FPU(00,00DA,0) , 0 , 49 , 0 , 789 , 65 , 0 ), // #192
267 INST(Ficom , FpuM , O_FPU(00,00DA,2) , 0 , 50 , 0 , 795 , 65 , 0 ), // #193
268 INST(Ficomp , FpuM , O_FPU(00,00DA,3) , 0 , 51 , 0 , 801 , 65 , 0 ), // #194
269 INST(Fidiv , FpuM , O_FPU(00,00DA,6) , 0 , 39 , 0 , 808 , 65 , 0 ), // #195
270 INST(Fidivr , FpuM , O_FPU(00,00DA,7) , 0 , 52 , 0 , 814 , 65 , 0 ), // #196
271 INST(Fild , FpuM , O_FPU(00,00DB,0) , O_FPU(00,00DF,5) , 49 , 8 , 821 , 66 , 0 ), // #197
272 INST(Fimul , FpuM , O_FPU(00,00DA,1) , 0 , 53 , 0 , 826 , 65 , 0 ), // #198
273 INST(Fincstp , FpuOp , O_FPU(00,D9F7,_) , 0 , 35 , 0 , 832 , 30 , 0 ), // #199
274 INST(Finit , FpuOp , O_FPU(9B,DBE3,_) , 0 , 40 , 0 , 840 , 30 , 0 ), // #200
275 INST(Fist , FpuM , O_FPU(00,00DB,2) , 0 , 50 , 0 , 846 , 65 , 0 ), // #201
276 INST(Fistp , FpuM , O_FPU(00,00DB,3) , O_FPU(00,00DF,7) , 51 , 9 , 851 , 66 , 0 ), // #202
277 INST(Fisttp , FpuM , O_FPU(00,00DB,1) , O_FPU(00,00DD,1) , 53 , 10 , 857 , 66 , 6 ), // #203
278 INST(Fisub , FpuM , O_FPU(00,00DA,4) , 0 , 38 , 0 , 864 , 65 , 0 ), // #204
279 INST(Fisubr , FpuM , O_FPU(00,00DA,5) , 0 , 54 , 0 , 870 , 65 , 0 ), // #205
280 INST(Fld , FpuFldFst , O_FPU(00,00D9,0) , O_FPU(00,00DB,5) , 49 , 11 , 877 , 67 , 0 ), // #206
281 INST(Fld1 , FpuOp , O_FPU(00,D9E8,_) , 0 , 35 , 0 , 881 , 30 , 0 ), // #207
282 INST(Fldcw , X86M_Only , O_FPU(00,00D9,5) , 0 , 54 , 0 , 886 , 68 , 0 ), // #208
283 INST(Fldenv , X86M_Only , O_FPU(00,00D9,4) , 0 , 38 , 0 , 892 , 69 , 0 ), // #209
284 INST(Fldl2e , FpuOp , O_FPU(00,D9EA,_) , 0 , 35 , 0 , 899 , 30 , 0 ), // #210
285 INST(Fldl2t , FpuOp , O_FPU(00,D9E9,_) , 0 , 35 , 0 , 906 , 30 , 0 ), // #211
286 INST(Fldlg2 , FpuOp , O_FPU(00,D9EC,_) , 0 , 35 , 0 , 913 , 30 , 0 ), // #212
287 INST(Fldln2 , FpuOp , O_FPU(00,D9ED,_) , 0 , 35 , 0 , 920 , 30 , 0 ), // #213
288 INST(Fldpi , FpuOp , O_FPU(00,D9EB,_) , 0 , 35 , 0 , 927 , 30 , 0 ), // #214
289 INST(Fldz , FpuOp , O_FPU(00,D9EE,_) , 0 , 35 , 0 , 933 , 30 , 0 ), // #215
290 INST(Fmul , FpuArith , O_FPU(00,C8C8,1) , 0 , 55 , 0 , 2163 , 60 , 0 ), // #216
291 INST(Fmulp , FpuRDef , O_FPU(00,DEC8,_) , 0 , 37 , 0 , 938 , 61 , 0 ), // #217
292 INST(Fnclex , FpuOp , O_FPU(00,DBE2,_) , 0 , 42 , 0 , 944 , 30 , 0 ), // #218
293 INST(Fninit , FpuOp , O_FPU(00,DBE3,_) , 0 , 42 , 0 , 951 , 30 , 0 ), // #219
294 INST(Fnop , FpuOp , O_FPU(00,D9D0,_) , 0 , 35 , 0 , 958 , 30 , 0 ), // #220
295 INST(Fnsave , X86M_Only , O_FPU(00,00DD,6) , 0 , 39 , 0 , 963 , 69 , 0 ), // #221
296 INST(Fnstcw , X86M_Only , O_FPU(00,00D9,7) , 0 , 52 , 0 , 970 , 68 , 0 ), // #222
297 INST(Fnstenv , X86M_Only , O_FPU(00,00D9,6) , 0 , 39 , 0 , 977 , 69 , 0 ), // #223
298 INST(Fnstsw , FpuStsw , O_FPU(00,00DD,7) , O_FPU(00,DFE0,_) , 52 , 12 , 985 , 70 , 0 ), // #224
299 INST(Fpatan , FpuOp , O_FPU(00,D9F3,_) , 0 , 35 , 0 , 992 , 30 , 0 ), // #225
300 INST(Fprem , FpuOp , O_FPU(00,D9F8,_) , 0 , 35 , 0 , 999 , 30 , 0 ), // #226
301 INST(Fprem1 , FpuOp , O_FPU(00,D9F5,_) , 0 , 35 , 0 , 1005 , 30 , 0 ), // #227
302 INST(Fptan , FpuOp , O_FPU(00,D9F2,_) , 0 , 35 , 0 , 1012 , 30 , 0 ), // #228
303 INST(Frndint , FpuOp , O_FPU(00,D9FC,_) , 0 , 35 , 0 , 1018 , 30 , 0 ), // #229
304 INST(Frstor , X86M_Only , O_FPU(00,00DD,4) , 0 , 38 , 0 , 1026 , 69 , 0 ), // #230
305 INST(Fsave , X86M_Only , O_FPU(9B,00DD,6) , 0 , 56 , 0 , 1033 , 69 , 0 ), // #231
306 INST(Fscale , FpuOp , O_FPU(00,D9FD,_) , 0 , 35 , 0 , 1039 , 30 , 0 ), // #232
307 INST(Fsin , FpuOp , O_FPU(00,D9FE,_) , 0 , 35 , 0 , 1046 , 30 , 0 ), // #233
308 INST(Fsincos , FpuOp , O_FPU(00,D9FB,_) , 0 , 35 , 0 , 1051 , 30 , 0 ), // #234
309 INST(Fsqrt , FpuOp , O_FPU(00,D9FA,_) , 0 , 35 , 0 , 1059 , 30 , 0 ), // #235
310 INST(Fst , FpuFldFst , O_FPU(00,00D9,2) , 0 , 50 , 0 , 1065 , 71 , 0 ), // #236
311 INST(Fstcw , X86M_Only , O_FPU(9B,00D9,7) , 0 , 57 , 0 , 1069 , 68 , 0 ), // #237
312 INST(Fstenv , X86M_Only , O_FPU(9B,00D9,6) , 0 , 56 , 0 , 1075 , 69 , 0 ), // #238
313 INST(Fstp , FpuFldFst , O_FPU(00,00D9,3) , O(000000,DB,7,_,_,_,_,_ ), 51 , 13 , 1082 , 67 , 0 ), // #239
314 INST(Fstsw , FpuStsw , O_FPU(9B,00DD,7) , O_FPU(9B,DFE0,_) , 57 , 14 , 1087 , 70 , 0 ), // #240
315 INST(Fsub , FpuArith , O_FPU(00,E0E8,4) , 0 , 58 , 0 , 2241 , 60 , 0 ), // #241
316 INST(Fsubp , FpuRDef , O_FPU(00,DEE8,_) , 0 , 37 , 0 , 1093 , 61 , 0 ), // #242
317 INST(Fsubr , FpuArith , O_FPU(00,E8E0,5) , 0 , 59 , 0 , 2247 , 60 , 0 ), // #243
318 INST(Fsubrp , FpuRDef , O_FPU(00,DEE0,_) , 0 , 37 , 0 , 1099 , 61 , 0 ), // #244
319 INST(Ftst , FpuOp , O_FPU(00,D9E4,_) , 0 , 35 , 0 , 1106 , 30 , 0 ), // #245
320 INST(Fucom , FpuRDef , O_FPU(00,DDE0,_) , 0 , 48 , 0 , 1111 , 61 , 0 ), // #246
321 INST(Fucomi , FpuR , O_FPU(00,DBE8,_) , 0 , 42 , 0 , 1117 , 63 , 50 ), // #247
322 INST(Fucomip , FpuR , O_FPU(00,DFE8,_) , 0 , 44 , 0 , 1124 , 63 , 50 ), // #248
323 INST(Fucomp , FpuRDef , O_FPU(00,DDE8,_) , 0 , 48 , 0 , 1132 , 61 , 0 ), // #249
324 INST(Fucompp , FpuOp , O_FPU(00,DAE9,_) , 0 , 41 , 0 , 1139 , 30 , 0 ), // #250
325 INST(Fwait , X86Op , O_FPU(00,009B,_) , 0 , 49 , 0 , 1147 , 30 , 0 ), // #251
326 INST(Fxam , FpuOp , O_FPU(00,D9E5,_) , 0 , 35 , 0 , 1153 , 30 , 0 ), // #252
327 INST(Fxch , FpuR , O_FPU(00,D9C8,_) , 0 , 35 , 0 , 1158 , 61 , 0 ), // #253
328 INST(Fxrstor , X86M_Only , O(000F00,AE,1,_,_,_,_,_ ), 0 , 29 , 0 , 1163 , 69 , 52 ), // #254
329 INST(Fxrstor64 , X86M_Only , O(000F00,AE,1,_,1,_,_,_ ), 0 , 28 , 0 , 1171 , 72 , 52 ), // #255
330 INST(Fxsave , X86M_Only , O(000F00,AE,0,_,_,_,_,_ ), 0 , 4 , 0 , 1181 , 69 , 52 ), // #256
331 INST(Fxsave64 , X86M_Only , O(000F00,AE,0,_,1,_,_,_ ), 0 , 60 , 0 , 1188 , 72 , 52 ), // #257
332 INST(Fxtract , FpuOp , O_FPU(00,D9F4,_) , 0 , 35 , 0 , 1197 , 30 , 0 ), // #258
333 INST(Fyl2x , FpuOp , O_FPU(00,D9F1,_) , 0 , 35 , 0 , 1205 , 30 , 0 ), // #259
334 INST(Fyl2xp1 , FpuOp , O_FPU(00,D9F9,_) , 0 , 35 , 0 , 1211 , 30 , 0 ), // #260
335 INST(Getsec , X86Op , O(000F00,37,_,_,_,_,_,_ ), 0 , 4 , 0 , 1219 , 30 , 53 ), // #261
336 INST(Gf2p8affineinvqb , ExtRmi , O(660F3A,CF,_,_,_,_,_,_ ), 0 , 8 , 0 , 6789 , 8 , 54 ), // #262
337 INST(Gf2p8affineqb , ExtRmi , O(660F3A,CE,_,_,_,_,_,_ ), 0 , 8 , 0 , 6807 , 8 , 54 ), // #263
338 INST(Gf2p8mulb , ExtRm , O(660F38,CF,_,_,_,_,_,_ ), 0 , 2 , 0 , 6822 , 5 , 54 ), // #264
339 INST(Haddpd , ExtRm , O(660F00,7C,_,_,_,_,_,_ ), 0 , 3 , 0 , 6833 , 5 , 6 ), // #265
340 INST(Haddps , ExtRm , O(F20F00,7C,_,_,_,_,_,_ ), 0 , 5 , 0 , 6841 , 5 , 6 ), // #266
341 INST(Hlt , X86Op , O(000000,F4,_,_,_,_,_,_ ), 0 , 0 , 0 , 1226 , 30 , 0 ), // #267
342 INST(Hreset , X86Op_Mod11RM_I8 , O(F30F3A,F0,0,_,_,_,_,_ ), 0 , 61 , 0 , 1230 , 73 , 55 ), // #268
343 INST(Hsubpd , ExtRm , O(660F00,7D,_,_,_,_,_,_ ), 0 , 3 , 0 , 6849 , 5 , 6 ), // #269
344 INST(Hsubps , ExtRm , O(F20F00,7D,_,_,_,_,_,_ ), 0 , 5 , 0 , 6857 , 5 , 6 ), // #270
345 INST(Idiv , X86M_GPB_MulDiv , O(000000,F6,7,_,x,_,_,_ ), 0 , 27 , 0 , 809 , 54 , 1 ), // #271
346 INST(Imul , X86Imul , O(000000,F6,5,_,x,_,_,_ ), 0 , 62 , 0 , 827 , 74 , 1 ), // #272
347 INST(In , X86In , O(000000,EC,_,_,_,_,_,_ ), O(000000,E4,_,_,_,_,_,_ ), 0 , 15 , 11572, 75 , 0 ), // #273
348 INST(Inc , X86IncDec , O(000000,FE,0,_,x,_,_,_ ), O(000000,40,_,_,x,_,_,_ ), 0 , 16 , 1237 , 53 , 45 ), // #274
349 INST(Incsspd , X86M , O(F30F00,AE,5,_,0,_,_,_ ), 0 , 63 , 0 , 1241 , 76 , 56 ), // #275
350 INST(Incsspq , X86M , O(F30F00,AE,5,_,1,_,_,_ ), 0 , 64 , 0 , 1249 , 77 , 56 ), // #276
351 INST(Ins , X86Ins , O(000000,6C,_,_,_,_,_,_ ), 0 , 0 , 0 , 1916 , 78 , 0 ), // #277
352 INST(Insertps , ExtRmi , O(660F3A,21,_,_,_,_,_,_ ), 0 , 8 , 0 , 6993 , 38 , 12 ), // #278
353 INST(Insertq , ExtInsertq , O(F20F00,79,_,_,_,_,_,_ ), O(F20F00,78,_,_,_,_,_,_ ), 5 , 17 , 1257 , 79 , 49 ), // #279
354 INST(Int , X86Int , O(000000,CD,_,_,_,_,_,_ ), 0 , 0 , 0 , 1022 , 80 , 0 ), // #280
355 INST(Int3 , X86Op , O(000000,CC,_,_,_,_,_,_ ), 0 , 0 , 0 , 1265 , 30 , 0 ), // #281
356 INST(Into , X86Op , O(000000,CE,_,_,_,_,_,_ ), 0 , 0 , 0 , 1270 , 81 , 57 ), // #282
357 INST(Invd , X86Op , O(000F00,08,_,_,_,_,_,_ ), 0 , 4 , 0 , 11501, 30 , 43 ), // #283
358 INST(Invept , X86Rm_NoSize , O(660F38,80,_,_,_,_,_,_ ), 0 , 2 , 0 , 1275 , 82 , 58 ), // #284
359 INST(Invlpg , X86M_Only , O(000F00,01,7,_,_,_,_,_ ), 0 , 22 , 0 , 1282 , 69 , 43 ), // #285
360 INST(Invlpga , X86Op_xAddr , O(000F01,DF,_,_,_,_,_,_ ), 0 , 21 , 0 , 1289 , 83 , 22 ), // #286
361 INST(Invpcid , X86Rm_NoSize , O(660F38,82,_,_,_,_,_,_ ), 0 , 2 , 0 , 1297 , 82 , 43 ), // #287
362 INST(Invvpid , X86Rm_NoSize , O(660F38,81,_,_,_,_,_,_ ), 0 , 2 , 0 , 1305 , 82 , 58 ), // #288
363 INST(Iret , X86Op , O(660000,CF,_,_,_,_,_,_ ), 0 , 19 , 0 , 3226 , 84 , 1 ), // #289
364 INST(Iretd , X86Op , O(000000,CF,_,_,_,_,_,_ ), 0 , 0 , 0 , 1313 , 84 , 1 ), // #290
365 INST(Iretq , X86Op , O(000000,CF,_,_,1,_,_,_ ), 0 , 20 , 0 , 1319 , 85 , 1 ), // #291
366 INST(Ja , X86Jcc , O(000F00,87,_,_,_,_,_,_ ), O(000000,77,_,_,_,_,_,_ ), 4 , 18 , 1325 , 86 , 59 ), // #292
367 INST(Jae , X86Jcc , O(000F00,83,_,_,_,_,_,_ ), O(000000,73,_,_,_,_,_,_ ), 4 , 19 , 1328 , 86 , 60 ), // #293
368 INST(Jb , X86Jcc , O(000F00,82,_,_,_,_,_,_ ), O(000000,72,_,_,_,_,_,_ ), 4 , 20 , 1332 , 86 , 60 ), // #294
369 INST(Jbe , X86Jcc , O(000F00,86,_,_,_,_,_,_ ), O(000000,76,_,_,_,_,_,_ ), 4 , 21 , 1335 , 86 , 59 ), // #295
370 INST(Jc , X86Jcc , O(000F00,82,_,_,_,_,_,_ ), O(000000,72,_,_,_,_,_,_ ), 4 , 20 , 1339 , 86 , 60 ), // #296
371 INST(Je , X86Jcc , O(000F00,84,_,_,_,_,_,_ ), O(000000,74,_,_,_,_,_,_ ), 4 , 22 , 1342 , 86 , 61 ), // #297
372 INST(Jecxz , X86JecxzLoop , 0 , O(000000,E3,_,_,_,_,_,_ ), 0 , 23 , 1345 , 87 , 0 ), // #298
373 INST(Jg , X86Jcc , O(000F00,8F,_,_,_,_,_,_ ), O(000000,7F,_,_,_,_,_,_ ), 4 , 24 , 1351 , 86 , 62 ), // #299
374 INST(Jge , X86Jcc , O(000F00,8D,_,_,_,_,_,_ ), O(000000,7D,_,_,_,_,_,_ ), 4 , 25 , 1354 , 86 , 63 ), // #300
375 INST(Jl , X86Jcc , O(000F00,8C,_,_,_,_,_,_ ), O(000000,7C,_,_,_,_,_,_ ), 4 , 26 , 1358 , 86 , 63 ), // #301
376 INST(Jle , X86Jcc , O(000F00,8E,_,_,_,_,_,_ ), O(000000,7E,_,_,_,_,_,_ ), 4 , 27 , 1361 , 86 , 62 ), // #302
377 INST(Jmp , X86Jmp , O(000000,FF,4,_,_,_,_,_ ), O(000000,EB,_,_,_,_,_,_ ), 9 , 28 , 1861 , 88 , 0 ), // #303
378 INST(Jna , X86Jcc , O(000F00,86,_,_,_,_,_,_ ), O(000000,76,_,_,_,_,_,_ ), 4 , 21 , 1365 , 86 , 59 ), // #304
379 INST(Jnae , X86Jcc , O(000F00,82,_,_,_,_,_,_ ), O(000000,72,_,_,_,_,_,_ ), 4 , 20 , 1369 , 86 , 60 ), // #305
380 INST(Jnb , X86Jcc , O(000F00,83,_,_,_,_,_,_ ), O(000000,73,_,_,_,_,_,_ ), 4 , 19 , 1374 , 86 , 60 ), // #306
381 INST(Jnbe , X86Jcc , O(000F00,87,_,_,_,_,_,_ ), O(000000,77,_,_,_,_,_,_ ), 4 , 18 , 1378 , 86 , 59 ), // #307
382 INST(Jnc , X86Jcc , O(000F00,83,_,_,_,_,_,_ ), O(000000,73,_,_,_,_,_,_ ), 4 , 19 , 1383 , 86 , 60 ), // #308
383 INST(Jne , X86Jcc , O(000F00,85,_,_,_,_,_,_ ), O(000000,75,_,_,_,_,_,_ ), 4 , 29 , 1387 , 86 , 61 ), // #309
384 INST(Jng , X86Jcc , O(000F00,8E,_,_,_,_,_,_ ), O(000000,7E,_,_,_,_,_,_ ), 4 , 27 , 1391 , 86 , 62 ), // #310
385 INST(Jnge , X86Jcc , O(000F00,8C,_,_,_,_,_,_ ), O(000000,7C,_,_,_,_,_,_ ), 4 , 26 , 1395 , 86 , 63 ), // #311
386 INST(Jnl , X86Jcc , O(000F00,8D,_,_,_,_,_,_ ), O(000000,7D,_,_,_,_,_,_ ), 4 , 25 , 1400 , 86 , 63 ), // #312
387 INST(Jnle , X86Jcc , O(000F00,8F,_,_,_,_,_,_ ), O(000000,7F,_,_,_,_,_,_ ), 4 , 24 , 1404 , 86 , 62 ), // #313
388 INST(Jno , X86Jcc , O(000F00,81,_,_,_,_,_,_ ), O(000000,71,_,_,_,_,_,_ ), 4 , 30 , 1409 , 86 , 57 ), // #314
389 INST(Jnp , X86Jcc , O(000F00,8B,_,_,_,_,_,_ ), O(000000,7B,_,_,_,_,_,_ ), 4 , 31 , 1413 , 86 , 64 ), // #315
390 INST(Jns , X86Jcc , O(000F00,89,_,_,_,_,_,_ ), O(000000,79,_,_,_,_,_,_ ), 4 , 32 , 1417 , 86 , 65 ), // #316
391 INST(Jnz , X86Jcc , O(000F00,85,_,_,_,_,_,_ ), O(000000,75,_,_,_,_,_,_ ), 4 , 29 , 1421 , 86 , 61 ), // #317
392 INST(Jo , X86Jcc , O(000F00,80,_,_,_,_,_,_ ), O(000000,70,_,_,_,_,_,_ ), 4 , 33 , 1425 , 86 , 57 ), // #318
393 INST(Jp , X86Jcc , O(000F00,8A,_,_,_,_,_,_ ), O(000000,7A,_,_,_,_,_,_ ), 4 , 34 , 1428 , 86 , 64 ), // #319
394 INST(Jpe , X86Jcc , O(000F00,8A,_,_,_,_,_,_ ), O(000000,7A,_,_,_,_,_,_ ), 4 , 34 , 1431 , 86 , 64 ), // #320
395 INST(Jpo , X86Jcc , O(000F00,8B,_,_,_,_,_,_ ), O(000000,7B,_,_,_,_,_,_ ), 4 , 31 , 1435 , 86 , 64 ), // #321
396 INST(Js , X86Jcc , O(000F00,88,_,_,_,_,_,_ ), O(000000,78,_,_,_,_,_,_ ), 4 , 35 , 1439 , 86 , 65 ), // #322
397 INST(Jz , X86Jcc , O(000F00,84,_,_,_,_,_,_ ), O(000000,74,_,_,_,_,_,_ ), 4 , 22 , 1442 , 86 , 61 ), // #323
398 INST(Kaddb , VexRvm , V(660F00,4A,_,1,0,_,_,_ ), 0 , 65 , 0 , 1445 , 89 , 66 ), // #324
399 INST(Kaddd , VexRvm , V(660F00,4A,_,1,1,_,_,_ ), 0 , 66 , 0 , 1451 , 89 , 67 ), // #325
400 INST(Kaddq , VexRvm , V(000F00,4A,_,1,1,_,_,_ ), 0 , 67 , 0 , 1457 , 89 , 67 ), // #326
401 INST(Kaddw , VexRvm , V(000F00,4A,_,1,0,_,_,_ ), 0 , 68 , 0 , 1463 , 89 , 66 ), // #327
402 INST(Kandb , VexRvm , V(660F00,41,_,1,0,_,_,_ ), 0 , 65 , 0 , 1469 , 89 , 66 ), // #328
403 INST(Kandd , VexRvm , V(660F00,41,_,1,1,_,_,_ ), 0 , 66 , 0 , 1475 , 89 , 67 ), // #329
404 INST(Kandnb , VexRvm , V(660F00,42,_,1,0,_,_,_ ), 0 , 65 , 0 , 1481 , 89 , 66 ), // #330
405 INST(Kandnd , VexRvm , V(660F00,42,_,1,1,_,_,_ ), 0 , 66 , 0 , 1488 , 89 , 67 ), // #331
406 INST(Kandnq , VexRvm , V(000F00,42,_,1,1,_,_,_ ), 0 , 67 , 0 , 1495 , 89 , 67 ), // #332
407 INST(Kandnw , VexRvm , V(000F00,42,_,1,0,_,_,_ ), 0 , 68 , 0 , 1502 , 89 , 68 ), // #333
408 INST(Kandq , VexRvm , V(000F00,41,_,1,1,_,_,_ ), 0 , 67 , 0 , 1509 , 89 , 67 ), // #334
409 INST(Kandw , VexRvm , V(000F00,41,_,1,0,_,_,_ ), 0 , 68 , 0 , 1515 , 89 , 68 ), // #335
410 INST(Kmovb , VexKmov , V(660F00,90,_,0,0,_,_,_ ), V(660F00,92,_,0,0,_,_,_ ), 69 , 36 , 1521 , 90 , 69 ), // #336
411 INST(Kmovd , VexKmov , V(660F00,90,_,0,1,_,_,_ ), V(F20F00,92,_,0,0,_,_,_ ), 70 , 37 , 9105 , 91 , 70 ), // #337
412 INST(Kmovq , VexKmov , V(000F00,90,_,0,1,_,_,_ ), V(F20F00,92,_,0,1,_,_,_ ), 71 , 38 , 9116 , 92 , 70 ), // #338
413 INST(Kmovw , VexKmov , V(000F00,90,_,0,0,_,_,_ ), V(000F00,92,_,0,0,_,_,_ ), 72 , 39 , 1527 , 93 , 71 ), // #339
414 INST(Knotb , VexRm , V(660F00,44,_,0,0,_,_,_ ), 0 , 69 , 0 , 1533 , 94 , 66 ), // #340
415 INST(Knotd , VexRm , V(660F00,44,_,0,1,_,_,_ ), 0 , 70 , 0 , 1539 , 94 , 67 ), // #341
416 INST(Knotq , VexRm , V(000F00,44,_,0,1,_,_,_ ), 0 , 71 , 0 , 1545 , 94 , 67 ), // #342
417 INST(Knotw , VexRm , V(000F00,44,_,0,0,_,_,_ ), 0 , 72 , 0 , 1551 , 94 , 68 ), // #343
418 INST(Korb , VexRvm , V(660F00,45,_,1,0,_,_,_ ), 0 , 65 , 0 , 1557 , 89 , 66 ), // #344
419 INST(Kord , VexRvm , V(660F00,45,_,1,1,_,_,_ ), 0 , 66 , 0 , 1562 , 89 , 67 ), // #345
420 INST(Korq , VexRvm , V(000F00,45,_,1,1,_,_,_ ), 0 , 67 , 0 , 1567 , 89 , 67 ), // #346
421 INST(Kortestb , VexRm , V(660F00,98,_,0,0,_,_,_ ), 0 , 69 , 0 , 1572 , 94 , 72 ), // #347
422 INST(Kortestd , VexRm , V(660F00,98,_,0,1,_,_,_ ), 0 , 70 , 0 , 1581 , 94 , 73 ), // #348
423 INST(Kortestq , VexRm , V(000F00,98,_,0,1,_,_,_ ), 0 , 71 , 0 , 1590 , 94 , 73 ), // #349
424 INST(Kortestw , VexRm , V(000F00,98,_,0,0,_,_,_ ), 0 , 72 , 0 , 1599 , 94 , 74 ), // #350
425 INST(Korw , VexRvm , V(000F00,45,_,1,0,_,_,_ ), 0 , 68 , 0 , 1608 , 89 , 68 ), // #351
426 INST(Kshiftlb , VexRmi , V(660F3A,32,_,0,0,_,_,_ ), 0 , 73 , 0 , 1613 , 95 , 66 ), // #352
427 INST(Kshiftld , VexRmi , V(660F3A,33,_,0,0,_,_,_ ), 0 , 73 , 0 , 1622 , 95 , 67 ), // #353
428 INST(Kshiftlq , VexRmi , V(660F3A,33,_,0,1,_,_,_ ), 0 , 74 , 0 , 1631 , 95 , 67 ), // #354
429 INST(Kshiftlw , VexRmi , V(660F3A,32,_,0,1,_,_,_ ), 0 , 74 , 0 , 1640 , 95 , 68 ), // #355
430 INST(Kshiftrb , VexRmi , V(660F3A,30,_,0,0,_,_,_ ), 0 , 73 , 0 , 1649 , 95 , 66 ), // #356
431 INST(Kshiftrd , VexRmi , V(660F3A,31,_,0,0,_,_,_ ), 0 , 73 , 0 , 1658 , 95 , 67 ), // #357
432 INST(Kshiftrq , VexRmi , V(660F3A,31,_,0,1,_,_,_ ), 0 , 74 , 0 , 1667 , 95 , 67 ), // #358
433 INST(Kshiftrw , VexRmi , V(660F3A,30,_,0,1,_,_,_ ), 0 , 74 , 0 , 1676 , 95 , 68 ), // #359
434 INST(Ktestb , VexRm , V(660F00,99,_,0,0,_,_,_ ), 0 , 69 , 0 , 1685 , 94 , 72 ), // #360
435 INST(Ktestd , VexRm , V(660F00,99,_,0,1,_,_,_ ), 0 , 70 , 0 , 1692 , 94 , 73 ), // #361
436 INST(Ktestq , VexRm , V(000F00,99,_,0,1,_,_,_ ), 0 , 71 , 0 , 1699 , 94 , 73 ), // #362
437 INST(Ktestw , VexRm , V(000F00,99,_,0,0,_,_,_ ), 0 , 72 , 0 , 1706 , 94 , 72 ), // #363
438 INST(Kunpckbw , VexRvm , V(660F00,4B,_,1,0,_,_,_ ), 0 , 65 , 0 , 1713 , 89 , 68 ), // #364
439 INST(Kunpckdq , VexRvm , V(000F00,4B,_,1,1,_,_,_ ), 0 , 67 , 0 , 1722 , 89 , 67 ), // #365
440 INST(Kunpckwd , VexRvm , V(000F00,4B,_,1,0,_,_,_ ), 0 , 68 , 0 , 1731 , 89 , 67 ), // #366
441 INST(Kxnorb , VexRvm , V(660F00,46,_,1,0,_,_,_ ), 0 , 65 , 0 , 1740 , 96 , 66 ), // #367
442 INST(Kxnord , VexRvm , V(660F00,46,_,1,1,_,_,_ ), 0 , 66 , 0 , 1747 , 96 , 67 ), // #368
443 INST(Kxnorq , VexRvm , V(000F00,46,_,1,1,_,_,_ ), 0 , 67 , 0 , 1754 , 96 , 67 ), // #369
444 INST(Kxnorw , VexRvm , V(000F00,46,_,1,0,_,_,_ ), 0 , 68 , 0 , 1761 , 96 , 68 ), // #370
445 INST(Kxorb , VexRvm , V(660F00,47,_,1,0,_,_,_ ), 0 , 65 , 0 , 1768 , 96 , 66 ), // #371
446 INST(Kxord , VexRvm , V(660F00,47,_,1,1,_,_,_ ), 0 , 66 , 0 , 1774 , 96 , 67 ), // #372
447 INST(Kxorq , VexRvm , V(000F00,47,_,1,1,_,_,_ ), 0 , 67 , 0 , 1780 , 96 , 67 ), // #373
448 INST(Kxorw , VexRvm , V(000F00,47,_,1,0,_,_,_ ), 0 , 68 , 0 , 1786 , 96 , 68 ), // #374
449 INST(Lahf , X86Op , O(000000,9F,_,_,_,_,_,_ ), 0 , 0 , 0 , 1792 , 97 , 75 ), // #375
450 INST(Lar , X86Rm , O(000F00,02,_,_,_,_,_,_ ), 0 , 4 , 0 , 1797 , 98 , 10 ), // #376
451 INST(Lcall , X86LcallLjmp , O(000000,FF,3,_,_,_,_,_ ), O(000000,9A,_,_,_,_,_,_ ), 75 , 40 , 1801 , 99 , 1 ), // #377
452 INST(Lddqu , ExtRm , O(F20F00,F0,_,_,_,_,_,_ ), 0 , 5 , 0 , 7003 , 100, 6 ), // #378
453 INST(Ldmxcsr , X86M_Only , O(000F00,AE,2,_,_,_,_,_ ), 0 , 76 , 0 , 7010 , 101, 5 ), // #379
454 INST(Lds , X86Rm , O(000000,C5,_,_,_,_,_,_ ), 0 , 0 , 0 , 1807 , 102, 0 ), // #380
455 INST(Ldtilecfg , AmxCfg , V(000F38,49,_,0,0,_,_,_ ), 0 , 10 , 0 , 1811 , 103, 76 ), // #381
456 INST(Lea , X86Lea , O(000000,8D,_,_,x,_,_,_ ), 0 , 0 , 0 , 1821 , 104, 0 ), // #382
457 INST(Leave , X86Op , O(000000,C9,_,_,_,_,_,_ ), 0 , 0 , 0 , 1825 , 30 , 0 ), // #383
458 INST(Les , X86Rm , O(000000,C4,_,_,_,_,_,_ ), 0 , 0 , 0 , 1831 , 102, 0 ), // #384
459 INST(Lfence , X86Fence , O(000F00,AE,5,_,_,_,_,_ ), 0 , 77 , 0 , 1835 , 30 , 4 ), // #385
460 INST(Lfs , X86Rm , O(000F00,B4,_,_,_,_,_,_ ), 0 , 4 , 0 , 1842 , 105, 0 ), // #386
461 INST(Lgdt , X86M_Only , O(000F00,01,2,_,_,_,_,_ ), 0 , 76 , 0 , 1846 , 69 , 0 ), // #387
462 INST(Lgs , X86Rm , O(000F00,B5,_,_,_,_,_,_ ), 0 , 4 , 0 , 1851 , 105, 0 ), // #388
463 INST(Lidt , X86M_Only , O(000F00,01,3,_,_,_,_,_ ), 0 , 78 , 0 , 1855 , 69 , 0 ), // #389
464 INST(Ljmp , X86LcallLjmp , O(000000,FF,5,_,_,_,_,_ ), O(000000,EA,_,_,_,_,_,_ ), 62 , 41 , 1860 , 106, 0 ), // #390
465 INST(Lldt , X86M_NoSize , O(000F00,00,2,_,_,_,_,_ ), 0 , 76 , 0 , 1865 , 107, 0 ), // #391
466 INST(Llwpcb , VexR_Wx , V(XOP_M9,12,0,0,x,_,_,_ ), 0 , 79 , 0 , 1870 , 108, 77 ), // #392
467 INST(Lmsw , X86M_NoSize , O(000F00,01,6,_,_,_,_,_ ), 0 , 80 , 0 , 1877 , 107, 0 ), // #393
468 INST(Lods , X86StrRm , O(000000,AC,_,_,_,_,_,_ ), 0 , 0 , 0 , 1882 , 109, 78 ), // #394
469 INST(Loop , X86JecxzLoop , 0 , O(000000,E2,_,_,_,_,_,_ ), 0 , 42 , 1887 , 110, 0 ), // #395
470 INST(Loope , X86JecxzLoop , 0 , O(000000,E1,_,_,_,_,_,_ ), 0 , 43 , 1892 , 110, 61 ), // #396
471 INST(Loopne , X86JecxzLoop , 0 , O(000000,E0,_,_,_,_,_,_ ), 0 , 44 , 1898 , 110, 61 ), // #397
472 INST(Lsl , X86Rm , O(000F00,03,_,_,_,_,_,_ ), 0 , 4 , 0 , 1905 , 111, 10 ), // #398
473 INST(Lss , X86Rm , O(000F00,B2,_,_,_,_,_,_ ), 0 , 4 , 0 , 7556 , 105, 0 ), // #399
474 INST(Ltr , X86M_NoSize , O(000F00,00,3,_,_,_,_,_ ), 0 , 78 , 0 , 1909 , 107, 0 ), // #400
475 INST(Lwpins , VexVmi4_Wx , V(XOP_MA,12,0,0,x,_,_,_ ), 0 , 81 , 0 , 1913 , 112, 77 ), // #401
476 INST(Lwpval , VexVmi4_Wx , V(XOP_MA,12,1,0,x,_,_,_ ), 0 , 82 , 0 , 1920 , 112, 77 ), // #402
477 INST(Lzcnt , X86Rm_Raw66H , O(F30F00,BD,_,_,x,_,_,_ ), 0 , 6 , 0 , 1927 , 22 , 79 ), // #403
478 INST(Maskmovdqu , ExtRm_ZDI , O(660F00,F7,_,_,_,_,_,_ ), 0 , 3 , 0 , 7019 , 113, 4 ), // #404
479 INST(Maskmovq , ExtRm_ZDI , O(000F00,F7,_,_,_,_,_,_ ), 0 , 4 , 0 , 9113 , 114, 80 ), // #405
480 INST(Maxpd , ExtRm , O(660F00,5F,_,_,_,_,_,_ ), 0 , 3 , 0 , 7053 , 5 , 4 ), // #406
481 INST(Maxps , ExtRm , O(000F00,5F,_,_,_,_,_,_ ), 0 , 4 , 0 , 7067 , 5 , 5 ), // #407
482 INST(Maxsd , ExtRm , O(F20F00,5F,_,_,_,_,_,_ ), 0 , 5 , 0 , 9132 , 6 , 4 ), // #408
483 INST(Maxss , ExtRm , O(F30F00,5F,_,_,_,_,_,_ ), 0 , 6 , 0 , 7088 , 7 , 5 ), // #409
484 INST(Mcommit , X86Op , O(F30F01,FA,_,_,_,_,_,_ ), 0 , 25 , 0 , 1933 , 30 , 81 ), // #410
485 INST(Mfence , X86Fence , O(000F00,AE,6,_,_,_,_,_ ), 0 , 80 , 0 , 1941 , 30 , 4 ), // #411
486 INST(Minpd , ExtRm , O(660F00,5D,_,_,_,_,_,_ ), 0 , 3 , 0 , 7117 , 5 , 4 ), // #412
487 INST(Minps , ExtRm , O(000F00,5D,_,_,_,_,_,_ ), 0 , 4 , 0 , 7131 , 5 , 5 ), // #413
488 INST(Minsd , ExtRm , O(F20F00,5D,_,_,_,_,_,_ ), 0 , 5 , 0 , 9196 , 6 , 4 ), // #414
489 INST(Minss , ExtRm , O(F30F00,5D,_,_,_,_,_,_ ), 0 , 6 , 0 , 7152 , 7 , 5 ), // #415
490 INST(Monitor , X86Op , O(000F01,C8,_,_,_,_,_,_ ), 0 , 21 , 0 , 3232 , 115, 82 ), // #416
491 INST(Monitorx , X86Op , O(000F01,FA,_,_,_,_,_,_ ), 0 , 21 , 0 , 1948 , 115, 83 ), // #417
492 INST(Mov , X86Mov , 0 , 0 , 0 , 0 , 138 , 116, 84 ), // #418
493 INST(Movabs , X86Movabs , 0 , 0 , 0 , 0 , 1957 , 117, 0 ), // #419
494 INST(Movapd , ExtMov , O(660F00,28,_,_,_,_,_,_ ), O(660F00,29,_,_,_,_,_,_ ), 3 , 45 , 7183 , 118, 85 ), // #420
495 INST(Movaps , ExtMov , O(000F00,28,_,_,_,_,_,_ ), O(000F00,29,_,_,_,_,_,_ ), 4 , 46 , 7191 , 118, 86 ), // #421
496 INST(Movbe , ExtMovbe , O(000F38,F0,_,_,x,_,_,_ ), O(000F38,F1,_,_,x,_,_,_ ), 83 , 47 , 656 , 119, 87 ), // #422
497 INST(Movd , ExtMovd , O(000F00,6E,_,_,_,_,_,_ ), O(000F00,7E,_,_,_,_,_,_ ), 4 , 48 , 9106 , 120, 88 ), // #423
498 INST(Movddup , ExtMov , O(F20F00,12,_,_,_,_,_,_ ), 0 , 5 , 0 , 7205 , 6 , 6 ), // #424
499 INST(Movdir64b , X86EnqcmdMovdir64b , O(660F38,F8,_,_,_,_,_,_ ), 0 , 2 , 0 , 1964 , 121, 89 ), // #425
500 INST(Movdiri , X86MovntiMovdiri , O(000F38,F9,_,_,_,_,_,_ ), 0 , 83 , 0 , 1974 , 122, 90 ), // #426
501 INST(Movdq2q , ExtMov , O(F20F00,D6,_,_,_,_,_,_ ), 0 , 5 , 0 , 1982 , 123, 4 ), // #427
502 INST(Movdqa , ExtMov , O(660F00,6F,_,_,_,_,_,_ ), O(660F00,7F,_,_,_,_,_,_ ), 3 , 49 , 7214 , 118, 85 ), // #428
503 INST(Movdqu , ExtMov , O(F30F00,6F,_,_,_,_,_,_ ), O(F30F00,7F,_,_,_,_,_,_ ), 6 , 50 , 7023 , 118, 85 ), // #429
504 INST(Movhlps , ExtMov , O(000F00,12,_,_,_,_,_,_ ), 0 , 4 , 0 , 7289 , 124, 5 ), // #430
505 INST(Movhpd , ExtMov , O(660F00,16,_,_,_,_,_,_ ), O(660F00,17,_,_,_,_,_,_ ), 3 , 51 , 7298 , 125, 4 ), // #431
506 INST(Movhps , ExtMov , O(000F00,16,_,_,_,_,_,_ ), O(000F00,17,_,_,_,_,_,_ ), 4 , 52 , 7306 , 125, 5 ), // #432
507 INST(Movlhps , ExtMov , O(000F00,16,_,_,_,_,_,_ ), 0 , 4 , 0 , 7314 , 124, 5 ), // #433
508 INST(Movlpd , ExtMov , O(660F00,12,_,_,_,_,_,_ ), O(660F00,13,_,_,_,_,_,_ ), 3 , 53 , 7323 , 125, 4 ), // #434
509 INST(Movlps , ExtMov , O(000F00,12,_,_,_,_,_,_ ), O(000F00,13,_,_,_,_,_,_ ), 4 , 54 , 7331 , 125, 5 ), // #435
510 INST(Movmskpd , ExtMov , O(660F00,50,_,_,_,_,_,_ ), 0 , 3 , 0 , 7339 , 126, 4 ), // #436
511 INST(Movmskps , ExtMov , O(000F00,50,_,_,_,_,_,_ ), 0 , 4 , 0 , 7349 , 126, 5 ), // #437
512 INST(Movntdq , ExtMov , 0 , O(660F00,E7,_,_,_,_,_,_ ), 0 , 55 , 7359 , 127, 4 ), // #438
513 INST(Movntdqa , ExtMov , O(660F38,2A,_,_,_,_,_,_ ), 0 , 2 , 0 , 7368 , 100, 12 ), // #439
514 INST(Movnti , X86MovntiMovdiri , O(000F00,C3,_,_,x,_,_,_ ), 0 , 4 , 0 , 1990 , 122, 4 ), // #440
515 INST(Movntpd , ExtMov , 0 , O(660F00,2B,_,_,_,_,_,_ ), 0 , 56 , 7378 , 127, 4 ), // #441
516 INST(Movntps , ExtMov , 0 , O(000F00,2B,_,_,_,_,_,_ ), 0 , 57 , 7387 , 127, 5 ), // #442
517 INST(Movntq , ExtMov , 0 , O(000F00,E7,_,_,_,_,_,_ ), 0 , 58 , 1997 , 128, 80 ), // #443
518 INST(Movntsd , ExtMov , 0 , O(F20F00,2B,_,_,_,_,_,_ ), 0 , 59 , 2004 , 129, 49 ), // #444
519 INST(Movntss , ExtMov , 0 , O(F30F00,2B,_,_,_,_,_,_ ), 0 , 60 , 2012 , 130, 49 ), // #445
520 INST(Movq , ExtMovq , O(000F00,6E,_,_,x,_,_,_ ), O(000F00,7E,_,_,x,_,_,_ ), 4 , 48 , 9117 , 131, 91 ), // #446
521 INST(Movq2dq , ExtRm , O(F30F00,D6,_,_,_,_,_,_ ), 0 , 6 , 0 , 2020 , 132, 4 ), // #447
522 INST(Movs , X86StrMm , O(000000,A4,_,_,_,_,_,_ ), 0 , 0 , 0 , 439 , 133, 78 ), // #448
523 INST(Movsd , ExtMov , O(F20F00,10,_,_,_,_,_,_ ), O(F20F00,11,_,_,_,_,_,_ ), 5 , 61 , 7402 , 134, 85 ), // #449
524 INST(Movshdup , ExtRm , O(F30F00,16,_,_,_,_,_,_ ), 0 , 6 , 0 , 7416 , 5 , 6 ), // #450
525 INST(Movsldup , ExtRm , O(F30F00,12,_,_,_,_,_,_ ), 0 , 6 , 0 , 7426 , 5 , 6 ), // #451
526 INST(Movss , ExtMov , O(F30F00,10,_,_,_,_,_,_ ), O(F30F00,11,_,_,_,_,_,_ ), 6 , 62 , 7436 , 135, 86 ), // #452
527 INST(Movsx , X86MovsxMovzx , O(000F00,BE,_,_,x,_,_,_ ), 0 , 4 , 0 , 2028 , 136, 0 ), // #453
528 INST(Movsxd , X86Rm , O(000000,63,_,_,x,_,_,_ ), 0 , 0 , 0 , 2034 , 137, 0 ), // #454
529 INST(Movupd , ExtMov , O(660F00,10,_,_,_,_,_,_ ), O(660F00,11,_,_,_,_,_,_ ), 3 , 63 , 7443 , 118, 85 ), // #455
530 INST(Movups , ExtMov , O(000F00,10,_,_,_,_,_,_ ), O(000F00,11,_,_,_,_,_,_ ), 4 , 64 , 7451 , 118, 86 ), // #456
531 INST(Movzx , X86MovsxMovzx , O(000F00,B6,_,_,x,_,_,_ ), 0 , 4 , 0 , 2041 , 136, 0 ), // #457
532 INST(Mpsadbw , ExtRmi , O(660F3A,42,_,_,_,_,_,_ ), 0 , 8 , 0 , 7465 , 8 , 12 ), // #458
533 INST(Mul , X86M_GPB_MulDiv , O(000000,F6,4,_,x,_,_,_ ), 0 , 9 , 0 , 828 , 54 , 1 ), // #459
534 INST(Mulpd , ExtRm , O(660F00,59,_,_,_,_,_,_ ), 0 , 3 , 0 , 7519 , 5 , 4 ), // #460
535 INST(Mulps , ExtRm , O(000F00,59,_,_,_,_,_,_ ), 0 , 4 , 0 , 7533 , 5 , 5 ), // #461
536 INST(Mulsd , ExtRm , O(F20F00,59,_,_,_,_,_,_ ), 0 , 5 , 0 , 7540 , 6 , 4 ), // #462
537 INST(Mulss , ExtRm , O(F30F00,59,_,_,_,_,_,_ ), 0 , 6 , 0 , 7554 , 7 , 5 ), // #463
538 INST(Mulx , VexRvm_ZDX_Wx , V(F20F38,F6,_,0,x,_,_,_ ), 0 , 84 , 0 , 2047 , 138, 92 ), // #464
539 INST(Mwait , X86Op , O(000F01,C9,_,_,_,_,_,_ ), 0 , 21 , 0 , 3241 , 139, 82 ), // #465
540 INST(Mwaitx , X86Op , O(000F01,FB,_,_,_,_,_,_ ), 0 , 21 , 0 , 2052 , 140, 83 ), // #466
541 INST(Neg , X86M_GPB , O(000000,F6,3,_,x,_,_,_ ), 0 , 75 , 0 , 2059 , 141, 1 ), // #467
542 INST(Nop , X86M_Nop , O(000000,90,_,_,_,_,_,_ ), 0 , 0 , 0 , 959 , 142, 0 ), // #468
543 INST(Not , X86M_GPB , O(000000,F6,2,_,x,_,_,_ ), 0 , 1 , 0 , 2063 , 141, 0 ), // #469
544 INST(Or , X86Arith , O(000000,08,1,_,x,_,_,_ ), 0 , 31 , 0 , 3237 , 143, 1 ), // #470
545 INST(Orpd , ExtRm , O(660F00,56,_,_,_,_,_,_ ), 0 , 3 , 0 , 11458, 11 , 4 ), // #471
546 INST(Orps , ExtRm , O(000F00,56,_,_,_,_,_,_ ), 0 , 4 , 0 , 11465, 11 , 5 ), // #472
547 INST(Out , X86Out , O(000000,EE,_,_,_,_,_,_ ), O(000000,E6,_,_,_,_,_,_ ), 0 , 65 , 2067 , 144, 0 ), // #473
548 INST(Outs , X86Outs , O(000000,6E,_,_,_,_,_,_ ), 0 , 0 , 0 , 2071 , 145, 0 ), // #474
549 INST(Pabsb , ExtRm_P , O(000F38,1C,_,_,_,_,_,_ ), 0 , 83 , 0 , 7636 , 146, 93 ), // #475
550 INST(Pabsd , ExtRm_P , O(000F38,1E,_,_,_,_,_,_ ), 0 , 83 , 0 , 7643 , 146, 93 ), // #476
551 INST(Pabsw , ExtRm_P , O(000F38,1D,_,_,_,_,_,_ ), 0 , 83 , 0 , 7657 , 146, 93 ), // #477
552 INST(Packssdw , ExtRm_P , O(000F00,6B,_,_,_,_,_,_ ), 0 , 4 , 0 , 7664 , 146, 88 ), // #478
553 INST(Packsswb , ExtRm_P , O(000F00,63,_,_,_,_,_,_ ), 0 , 4 , 0 , 7674 , 146, 88 ), // #479
554 INST(Packusdw , ExtRm , O(660F38,2B,_,_,_,_,_,_ ), 0 , 2 , 0 , 7684 , 5 , 12 ), // #480
555 INST(Packuswb , ExtRm_P , O(000F00,67,_,_,_,_,_,_ ), 0 , 4 , 0 , 7694 , 146, 88 ), // #481
556 INST(Paddb , ExtRm_P , O(000F00,FC,_,_,_,_,_,_ ), 0 , 4 , 0 , 7704 , 146, 88 ), // #482
557 INST(Paddd , ExtRm_P , O(000F00,FE,_,_,_,_,_,_ ), 0 , 4 , 0 , 7711 , 146, 88 ), // #483
558 INST(Paddq , ExtRm_P , O(000F00,D4,_,_,_,_,_,_ ), 0 , 4 , 0 , 7718 , 146, 4 ), // #484
559 INST(Paddsb , ExtRm_P , O(000F00,EC,_,_,_,_,_,_ ), 0 , 4 , 0 , 7725 , 146, 88 ), // #485
560 INST(Paddsw , ExtRm_P , O(000F00,ED,_,_,_,_,_,_ ), 0 , 4 , 0 , 7733 , 146, 88 ), // #486
561 INST(Paddusb , ExtRm_P , O(000F00,DC,_,_,_,_,_,_ ), 0 , 4 , 0 , 7741 , 146, 88 ), // #487
562 INST(Paddusw , ExtRm_P , O(000F00,DD,_,_,_,_,_,_ ), 0 , 4 , 0 , 7750 , 146, 88 ), // #488
563 INST(Paddw , ExtRm_P , O(000F00,FD,_,_,_,_,_,_ ), 0 , 4 , 0 , 7759 , 146, 88 ), // #489
564 INST(Palignr , ExtRmi_P , O(000F3A,0F,_,_,_,_,_,_ ), 0 , 85 , 0 , 7766 , 147, 6 ), // #490
565 INST(Pand , ExtRm_P , O(000F00,DB,_,_,_,_,_,_ ), 0 , 4 , 0 , 7775 , 148, 88 ), // #491
566 INST(Pandn , ExtRm_P , O(000F00,DF,_,_,_,_,_,_ ), 0 , 4 , 0 , 7788 , 149, 88 ), // #492
567 INST(Pause , X86Op , O(F30000,90,_,_,_,_,_,_ ), 0 , 86 , 0 , 3195 , 30 , 0 ), // #493
568 INST(Pavgb , ExtRm_P , O(000F00,E0,_,_,_,_,_,_ ), 0 , 4 , 0 , 7818 , 146, 94 ), // #494
569 INST(Pavgusb , Ext3dNow , O(000F0F,BF,_,_,_,_,_,_ ), 0 , 87 , 0 , 2076 , 150, 51 ), // #495
570 INST(Pavgw , ExtRm_P , O(000F00,E3,_,_,_,_,_,_ ), 0 , 4 , 0 , 7825 , 146, 94 ), // #496
571 INST(Pblendvb , ExtRm_XMM0 , O(660F38,10,_,_,_,_,_,_ ), 0 , 2 , 0 , 7881 , 15 , 12 ), // #497
572 INST(Pblendw , ExtRmi , O(660F3A,0E,_,_,_,_,_,_ ), 0 , 8 , 0 , 7891 , 8 , 12 ), // #498
573 INST(Pclmulqdq , ExtRmi , O(660F3A,44,_,_,_,_,_,_ ), 0 , 8 , 0 , 7984 , 8 , 95 ), // #499
574 INST(Pcmpeqb , ExtRm_P , O(000F00,74,_,_,_,_,_,_ ), 0 , 4 , 0 , 8016 , 149, 88 ), // #500
575 INST(Pcmpeqd , ExtRm_P , O(000F00,76,_,_,_,_,_,_ ), 0 , 4 , 0 , 8025 , 149, 88 ), // #501
576 INST(Pcmpeqq , ExtRm , O(660F38,29,_,_,_,_,_,_ ), 0 , 2 , 0 , 8034 , 151, 12 ), // #502
577 INST(Pcmpeqw , ExtRm_P , O(000F00,75,_,_,_,_,_,_ ), 0 , 4 , 0 , 8043 , 149, 88 ), // #503
578 INST(Pcmpestri , ExtRmi , O(660F3A,61,_,_,_,_,_,_ ), 0 , 8 , 0 , 8052 , 152, 96 ), // #504
579 INST(Pcmpestrm , ExtRmi , O(660F3A,60,_,_,_,_,_,_ ), 0 , 8 , 0 , 8063 , 153, 96 ), // #505
580 INST(Pcmpgtb , ExtRm_P , O(000F00,64,_,_,_,_,_,_ ), 0 , 4 , 0 , 8074 , 149, 88 ), // #506
581 INST(Pcmpgtd , ExtRm_P , O(000F00,66,_,_,_,_,_,_ ), 0 , 4 , 0 , 8083 , 149, 88 ), // #507
582 INST(Pcmpgtq , ExtRm , O(660F38,37,_,_,_,_,_,_ ), 0 , 2 , 0 , 8092 , 151, 44 ), // #508
583 INST(Pcmpgtw , ExtRm_P , O(000F00,65,_,_,_,_,_,_ ), 0 , 4 , 0 , 8101 , 149, 88 ), // #509
584 INST(Pcmpistri , ExtRmi , O(660F3A,63,_,_,_,_,_,_ ), 0 , 8 , 0 , 8110 , 154, 96 ), // #510
585 INST(Pcmpistrm , ExtRmi , O(660F3A,62,_,_,_,_,_,_ ), 0 , 8 , 0 , 8121 , 155, 96 ), // #511
586 INST(Pconfig , X86Op , O(000F01,C5,_,_,_,_,_,_ ), 0 , 21 , 0 , 2084 , 30 , 97 ), // #512
587 INST(Pdep , VexRvm_Wx , V(F20F38,F5,_,0,x,_,_,_ ), 0 , 84 , 0 , 2092 , 10 , 92 ), // #513
588 INST(Pext , VexRvm_Wx , V(F30F38,F5,_,0,x,_,_,_ ), 0 , 88 , 0 , 2097 , 10 , 92 ), // #514
589 INST(Pextrb , ExtExtract , O(000F3A,14,_,_,_,_,_,_ ), 0 , 85 , 0 , 8608 , 156, 12 ), // #515
590 INST(Pextrd , ExtExtract , O(000F3A,16,_,_,_,_,_,_ ), 0 , 85 , 0 , 8616 , 58 , 12 ), // #516
591 INST(Pextrq , ExtExtract , O(000F3A,16,_,_,1,_,_,_ ), 0 , 89 , 0 , 8624 , 157, 12 ), // #517
592 INST(Pextrw , ExtPextrw , O(000F00,C5,_,_,_,_,_,_ ), O(000F3A,15,_,_,_,_,_,_ ), 4 , 66 , 8632 , 158, 98 ), // #518
593 INST(Pf2id , Ext3dNow , O(000F0F,1D,_,_,_,_,_,_ ), 0 , 87 , 0 , 2102 , 150, 51 ), // #519
594 INST(Pf2iw , Ext3dNow , O(000F0F,1C,_,_,_,_,_,_ ), 0 , 87 , 0 , 2108 , 150, 99 ), // #520
595 INST(Pfacc , Ext3dNow , O(000F0F,AE,_,_,_,_,_,_ ), 0 , 87 , 0 , 2114 , 150, 51 ), // #521
596 INST(Pfadd , Ext3dNow , O(000F0F,9E,_,_,_,_,_,_ ), 0 , 87 , 0 , 2120 , 150, 51 ), // #522
597 INST(Pfcmpeq , Ext3dNow , O(000F0F,B0,_,_,_,_,_,_ ), 0 , 87 , 0 , 2126 , 150, 51 ), // #523
598 INST(Pfcmpge , Ext3dNow , O(000F0F,90,_,_,_,_,_,_ ), 0 , 87 , 0 , 2134 , 150, 51 ), // #524
599 INST(Pfcmpgt , Ext3dNow , O(000F0F,A0,_,_,_,_,_,_ ), 0 , 87 , 0 , 2142 , 150, 51 ), // #525
600 INST(Pfmax , Ext3dNow , O(000F0F,A4,_,_,_,_,_,_ ), 0 , 87 , 0 , 2150 , 150, 51 ), // #526
601 INST(Pfmin , Ext3dNow , O(000F0F,94,_,_,_,_,_,_ ), 0 , 87 , 0 , 2156 , 150, 51 ), // #527
602 INST(Pfmul , Ext3dNow , O(000F0F,B4,_,_,_,_,_,_ ), 0 , 87 , 0 , 2162 , 150, 51 ), // #528
603 INST(Pfnacc , Ext3dNow , O(000F0F,8A,_,_,_,_,_,_ ), 0 , 87 , 0 , 2168 , 150, 99 ), // #529
604 INST(Pfpnacc , Ext3dNow , O(000F0F,8E,_,_,_,_,_,_ ), 0 , 87 , 0 , 2175 , 150, 99 ), // #530
605 INST(Pfrcp , Ext3dNow , O(000F0F,96,_,_,_,_,_,_ ), 0 , 87 , 0 , 2183 , 150, 51 ), // #531
606 INST(Pfrcpit1 , Ext3dNow , O(000F0F,A6,_,_,_,_,_,_ ), 0 , 87 , 0 , 2189 , 150, 51 ), // #532
607 INST(Pfrcpit2 , Ext3dNow , O(000F0F,B6,_,_,_,_,_,_ ), 0 , 87 , 0 , 2198 , 150, 51 ), // #533
608 INST(Pfrcpv , Ext3dNow , O(000F0F,86,_,_,_,_,_,_ ), 0 , 87 , 0 , 2207 , 150, 100), // #534
609 INST(Pfrsqit1 , Ext3dNow , O(000F0F,A7,_,_,_,_,_,_ ), 0 , 87 , 0 , 2214 , 150, 51 ), // #535
610 INST(Pfrsqrt , Ext3dNow , O(000F0F,97,_,_,_,_,_,_ ), 0 , 87 , 0 , 2223 , 150, 51 ), // #536
611 INST(Pfrsqrtv , Ext3dNow , O(000F0F,87,_,_,_,_,_,_ ), 0 , 87 , 0 , 2231 , 150, 100), // #537
612 INST(Pfsub , Ext3dNow , O(000F0F,9A,_,_,_,_,_,_ ), 0 , 87 , 0 , 2240 , 150, 51 ), // #538
613 INST(Pfsubr , Ext3dNow , O(000F0F,AA,_,_,_,_,_,_ ), 0 , 87 , 0 , 2246 , 150, 51 ), // #539
614 INST(Phaddd , ExtRm_P , O(000F38,02,_,_,_,_,_,_ ), 0 , 83 , 0 , 8711 , 146, 93 ), // #540
615 INST(Phaddsw , ExtRm_P , O(000F38,03,_,_,_,_,_,_ ), 0 , 83 , 0 , 8728 , 146, 93 ), // #541
616 INST(Phaddw , ExtRm_P , O(000F38,01,_,_,_,_,_,_ ), 0 , 83 , 0 , 8797 , 146, 93 ), // #542
617 INST(Phminposuw , ExtRm , O(660F38,41,_,_,_,_,_,_ ), 0 , 2 , 0 , 8823 , 5 , 12 ), // #543
618 INST(Phsubd , ExtRm_P , O(000F38,06,_,_,_,_,_,_ ), 0 , 83 , 0 , 8844 , 146, 93 ), // #544
619 INST(Phsubsw , ExtRm_P , O(000F38,07,_,_,_,_,_,_ ), 0 , 83 , 0 , 8861 , 146, 93 ), // #545
620 INST(Phsubw , ExtRm_P , O(000F38,05,_,_,_,_,_,_ ), 0 , 83 , 0 , 8870 , 146, 93 ), // #546
621 INST(Pi2fd , Ext3dNow , O(000F0F,0D,_,_,_,_,_,_ ), 0 , 87 , 0 , 2253 , 150, 51 ), // #547
622 INST(Pi2fw , Ext3dNow , O(000F0F,0C,_,_,_,_,_,_ ), 0 , 87 , 0 , 2259 , 150, 99 ), // #548
623 INST(Pinsrb , ExtRmi , O(660F3A,20,_,_,_,_,_,_ ), 0 , 8 , 0 , 8887 , 159, 12 ), // #549
624 INST(Pinsrd , ExtRmi , O(660F3A,22,_,_,_,_,_,_ ), 0 , 8 , 0 , 8895 , 160, 12 ), // #550
625 INST(Pinsrq , ExtRmi , O(660F3A,22,_,_,1,_,_,_ ), 0 , 90 , 0 , 8903 , 161, 12 ), // #551
626 INST(Pinsrw , ExtRmi_P , O(000F00,C4,_,_,_,_,_,_ ), 0 , 4 , 0 , 8911 , 162, 94 ), // #552
627 INST(Pmaddubsw , ExtRm_P , O(000F38,04,_,_,_,_,_,_ ), 0 , 83 , 0 , 9081 , 146, 93 ), // #553
628 INST(Pmaddwd , ExtRm_P , O(000F00,F5,_,_,_,_,_,_ ), 0 , 4 , 0 , 9092 , 146, 88 ), // #554
629 INST(Pmaxsb , ExtRm , O(660F38,3C,_,_,_,_,_,_ ), 0 , 2 , 0 , 9123 , 11 , 12 ), // #555
630 INST(Pmaxsd , ExtRm , O(660F38,3D,_,_,_,_,_,_ ), 0 , 2 , 0 , 9131 , 11 , 12 ), // #556
631 INST(Pmaxsw , ExtRm_P , O(000F00,EE,_,_,_,_,_,_ ), 0 , 4 , 0 , 9147 , 148, 94 ), // #557
632 INST(Pmaxub , ExtRm_P , O(000F00,DE,_,_,_,_,_,_ ), 0 , 4 , 0 , 9155 , 148, 94 ), // #558
633 INST(Pmaxud , ExtRm , O(660F38,3F,_,_,_,_,_,_ ), 0 , 2 , 0 , 9163 , 11 , 12 ), // #559
634 INST(Pmaxuw , ExtRm , O(660F38,3E,_,_,_,_,_,_ ), 0 , 2 , 0 , 9179 , 11 , 12 ), // #560
635 INST(Pminsb , ExtRm , O(660F38,38,_,_,_,_,_,_ ), 0 , 2 , 0 , 9187 , 11 , 12 ), // #561
636 INST(Pminsd , ExtRm , O(660F38,39,_,_,_,_,_,_ ), 0 , 2 , 0 , 9195 , 11 , 12 ), // #562
637 INST(Pminsw , ExtRm_P , O(000F00,EA,_,_,_,_,_,_ ), 0 , 4 , 0 , 9211 , 148, 94 ), // #563
638 INST(Pminub , ExtRm_P , O(000F00,DA,_,_,_,_,_,_ ), 0 , 4 , 0 , 9219 , 148, 94 ), // #564
639 INST(Pminud , ExtRm , O(660F38,3B,_,_,_,_,_,_ ), 0 , 2 , 0 , 9227 , 11 , 12 ), // #565
640 INST(Pminuw , ExtRm , O(660F38,3A,_,_,_,_,_,_ ), 0 , 2 , 0 , 9243 , 11 , 12 ), // #566
641 INST(Pmovmskb , ExtRm_P , O(000F00,D7,_,_,_,_,_,_ ), 0 , 4 , 0 , 9321 , 163, 94 ), // #567
642 INST(Pmovsxbd , ExtRm , O(660F38,21,_,_,_,_,_,_ ), 0 , 2 , 0 , 9418 , 7 , 12 ), // #568
643 INST(Pmovsxbq , ExtRm , O(660F38,22,_,_,_,_,_,_ ), 0 , 2 , 0 , 9428 , 164, 12 ), // #569
644 INST(Pmovsxbw , ExtRm , O(660F38,20,_,_,_,_,_,_ ), 0 , 2 , 0 , 9438 , 6 , 12 ), // #570
645 INST(Pmovsxdq , ExtRm , O(660F38,25,_,_,_,_,_,_ ), 0 , 2 , 0 , 9448 , 6 , 12 ), // #571
646 INST(Pmovsxwd , ExtRm , O(660F38,23,_,_,_,_,_,_ ), 0 , 2 , 0 , 9458 , 6 , 12 ), // #572
647 INST(Pmovsxwq , ExtRm , O(660F38,24,_,_,_,_,_,_ ), 0 , 2 , 0 , 9468 , 7 , 12 ), // #573
648 INST(Pmovzxbd , ExtRm , O(660F38,31,_,_,_,_,_,_ ), 0 , 2 , 0 , 9555 , 7 , 12 ), // #574
649 INST(Pmovzxbq , ExtRm , O(660F38,32,_,_,_,_,_,_ ), 0 , 2 , 0 , 9565 , 164, 12 ), // #575
650 INST(Pmovzxbw , ExtRm , O(660F38,30,_,_,_,_,_,_ ), 0 , 2 , 0 , 9575 , 6 , 12 ), // #576
651 INST(Pmovzxdq , ExtRm , O(660F38,35,_,_,_,_,_,_ ), 0 , 2 , 0 , 9585 , 6 , 12 ), // #577
652 INST(Pmovzxwd , ExtRm , O(660F38,33,_,_,_,_,_,_ ), 0 , 2 , 0 , 9595 , 6 , 12 ), // #578
653 INST(Pmovzxwq , ExtRm , O(660F38,34,_,_,_,_,_,_ ), 0 , 2 , 0 , 9605 , 7 , 12 ), // #579
654 INST(Pmuldq , ExtRm , O(660F38,28,_,_,_,_,_,_ ), 0 , 2 , 0 , 9615 , 5 , 12 ), // #580
655 INST(Pmulhrsw , ExtRm_P , O(000F38,0B,_,_,_,_,_,_ ), 0 , 83 , 0 , 9623 , 146, 93 ), // #581
656 INST(Pmulhrw , Ext3dNow , O(000F0F,B7,_,_,_,_,_,_ ), 0 , 87 , 0 , 2265 , 150, 51 ), // #582
657 INST(Pmulhuw , ExtRm_P , O(000F00,E4,_,_,_,_,_,_ ), 0 , 4 , 0 , 9633 , 146, 94 ), // #583
658 INST(Pmulhw , ExtRm_P , O(000F00,E5,_,_,_,_,_,_ ), 0 , 4 , 0 , 9642 , 146, 88 ), // #584
659 INST(Pmulld , ExtRm , O(660F38,40,_,_,_,_,_,_ ), 0 , 2 , 0 , 9650 , 5 , 12 ), // #585
660 INST(Pmullw , ExtRm_P , O(000F00,D5,_,_,_,_,_,_ ), 0 , 4 , 0 , 9666 , 146, 88 ), // #586
661 INST(Pmuludq , ExtRm_P , O(000F00,F4,_,_,_,_,_,_ ), 0 , 4 , 0 , 9689 , 146, 4 ), // #587
662 INST(Pop , X86Pop , O(000000,8F,0,_,_,_,_,_ ), O(000000,58,_,_,_,_,_,_ ), 0 , 67 , 2273 , 165, 0 ), // #588
663 INST(Popa , X86Op , O(660000,61,_,_,_,_,_,_ ), 0 , 19 , 0 , 2277 , 81 , 0 ), // #589
664 INST(Popad , X86Op , O(000000,61,_,_,_,_,_,_ ), 0 , 0 , 0 , 2282 , 81 , 0 ), // #590
665 INST(Popcnt , X86Rm_Raw66H , O(F30F00,B8,_,_,x,_,_,_ ), 0 , 6 , 0 , 2288 , 22 , 101), // #591
666 INST(Popf , X86Op , O(660000,9D,_,_,_,_,_,_ ), 0 , 19 , 0 , 2295 , 30 , 102), // #592
667 INST(Popfd , X86Op , O(000000,9D,_,_,_,_,_,_ ), 0 , 0 , 0 , 2300 , 81 , 102), // #593
668 INST(Popfq , X86Op , O(000000,9D,_,_,_,_,_,_ ), 0 , 0 , 0 , 2306 , 33 , 102), // #594
669 INST(Por , ExtRm_P , O(000F00,EB,_,_,_,_,_,_ ), 0 , 4 , 0 , 9734 , 148, 88 ), // #595
670 INST(Prefetch , X86M_Only , O(000F00,0D,0,_,_,_,_,_ ), 0 , 4 , 0 , 2312 , 31 , 51 ), // #596
671 INST(Prefetchnta , X86M_Only , O(000F00,18,0,_,_,_,_,_ ), 0 , 4 , 0 , 2321 , 31 , 80 ), // #597
672 INST(Prefetcht0 , X86M_Only , O(000F00,18,1,_,_,_,_,_ ), 0 , 29 , 0 , 2333 , 31 , 80 ), // #598
673 INST(Prefetcht1 , X86M_Only , O(000F00,18,2,_,_,_,_,_ ), 0 , 76 , 0 , 2344 , 31 , 80 ), // #599
674 INST(Prefetcht2 , X86M_Only , O(000F00,18,3,_,_,_,_,_ ), 0 , 78 , 0 , 2355 , 31 , 80 ), // #600
675 INST(Prefetchw , X86M_Only , O(000F00,0D,1,_,_,_,_,_ ), 0 , 29 , 0 , 2366 , 31 , 103), // #601
676 INST(Prefetchwt1 , X86M_Only , O(000F00,0D,2,_,_,_,_,_ ), 0 , 76 , 0 , 2376 , 31 , 104), // #602
677 INST(Psadbw , ExtRm_P , O(000F00,F6,_,_,_,_,_,_ ), 0 , 4 , 0 , 4644 , 146, 94 ), // #603
678 INST(Pshufb , ExtRm_P , O(000F38,00,_,_,_,_,_,_ ), 0 , 83 , 0 , 10060, 146, 93 ), // #604
679 INST(Pshufd , ExtRmi , O(660F00,70,_,_,_,_,_,_ ), 0 , 3 , 0 , 10081, 8 , 4 ), // #605
680 INST(Pshufhw , ExtRmi , O(F30F00,70,_,_,_,_,_,_ ), 0 , 6 , 0 , 10089, 8 , 4 ), // #606
681 INST(Pshuflw , ExtRmi , O(F20F00,70,_,_,_,_,_,_ ), 0 , 5 , 0 , 10098, 8 , 4 ), // #607
682 INST(Pshufw , ExtRmi_P , O(000F00,70,_,_,_,_,_,_ ), 0 , 4 , 0 , 2388 , 166, 80 ), // #608
683 INST(Psignb , ExtRm_P , O(000F38,08,_,_,_,_,_,_ ), 0 , 83 , 0 , 10107, 146, 93 ), // #609
684 INST(Psignd , ExtRm_P , O(000F38,0A,_,_,_,_,_,_ ), 0 , 83 , 0 , 10115, 146, 93 ), // #610
685 INST(Psignw , ExtRm_P , O(000F38,09,_,_,_,_,_,_ ), 0 , 83 , 0 , 10123, 146, 93 ), // #611
686 INST(Pslld , ExtRmRi_P , O(000F00,F2,_,_,_,_,_,_ ), O(000F00,72,6,_,_,_,_,_ ), 4 , 68 , 10131, 167, 88 ), // #612
687 INST(Pslldq , ExtRmRi , 0 , O(660F00,73,7,_,_,_,_,_ ), 0 , 69 , 10138, 168, 4 ), // #613
688 INST(Psllq , ExtRmRi_P , O(000F00,F3,_,_,_,_,_,_ ), O(000F00,73,6,_,_,_,_,_ ), 4 , 70 , 10146, 167, 88 ), // #614
689 INST(Psllw , ExtRmRi_P , O(000F00,F1,_,_,_,_,_,_ ), O(000F00,71,6,_,_,_,_,_ ), 4 , 71 , 10177, 167, 88 ), // #615
690 INST(Psmash , X86Op , O(F30F01,FF,_,_,_,_,_,_ ), 0 , 25 , 0 , 2395 , 33 , 105), // #616
691 INST(Psrad , ExtRmRi_P , O(000F00,E2,_,_,_,_,_,_ ), O(000F00,72,4,_,_,_,_,_ ), 4 , 72 , 10184, 167, 88 ), // #617
692 INST(Psraw , ExtRmRi_P , O(000F00,E1,_,_,_,_,_,_ ), O(000F00,71,4,_,_,_,_,_ ), 4 , 73 , 10222, 167, 88 ), // #618
693 INST(Psrld , ExtRmRi_P , O(000F00,D2,_,_,_,_,_,_ ), O(000F00,72,2,_,_,_,_,_ ), 4 , 74 , 10229, 167, 88 ), // #619
694 INST(Psrldq , ExtRmRi , 0 , O(660F00,73,3,_,_,_,_,_ ), 0 , 75 , 10236, 168, 4 ), // #620
695 INST(Psrlq , ExtRmRi_P , O(000F00,D3,_,_,_,_,_,_ ), O(000F00,73,2,_,_,_,_,_ ), 4 , 76 , 10244, 167, 88 ), // #621
696 INST(Psrlw , ExtRmRi_P , O(000F00,D1,_,_,_,_,_,_ ), O(000F00,71,2,_,_,_,_,_ ), 4 , 77 , 10275, 167, 88 ), // #622
697 INST(Psubb , ExtRm_P , O(000F00,F8,_,_,_,_,_,_ ), 0 , 4 , 0 , 10282, 149, 88 ), // #623
698 INST(Psubd , ExtRm_P , O(000F00,FA,_,_,_,_,_,_ ), 0 , 4 , 0 , 10289, 149, 88 ), // #624
699 INST(Psubq , ExtRm_P , O(000F00,FB,_,_,_,_,_,_ ), 0 , 4 , 0 , 10296, 149, 4 ), // #625
700 INST(Psubsb , ExtRm_P , O(000F00,E8,_,_,_,_,_,_ ), 0 , 4 , 0 , 10303, 149, 88 ), // #626
701 INST(Psubsw , ExtRm_P , O(000F00,E9,_,_,_,_,_,_ ), 0 , 4 , 0 , 10311, 149, 88 ), // #627
702 INST(Psubusb , ExtRm_P , O(000F00,D8,_,_,_,_,_,_ ), 0 , 4 , 0 , 10319, 149, 88 ), // #628
703 INST(Psubusw , ExtRm_P , O(000F00,D9,_,_,_,_,_,_ ), 0 , 4 , 0 , 10328, 149, 88 ), // #629
704 INST(Psubw , ExtRm_P , O(000F00,F9,_,_,_,_,_,_ ), 0 , 4 , 0 , 10337, 149, 88 ), // #630
705 INST(Pswapd , Ext3dNow , O(000F0F,BB,_,_,_,_,_,_ ), 0 , 87 , 0 , 2402 , 150, 99 ), // #631
706 INST(Ptest , ExtRm , O(660F38,17,_,_,_,_,_,_ ), 0 , 2 , 0 , 10366, 5 , 106), // #632
707 INST(Ptwrite , X86M , O(F30F00,AE,4,_,_,_,_,_ ), 0 , 91 , 0 , 2409 , 169, 107), // #633
708 INST(Punpckhbw , ExtRm_P , O(000F00,68,_,_,_,_,_,_ ), 0 , 4 , 0 , 10449, 146, 88 ), // #634
709 INST(Punpckhdq , ExtRm_P , O(000F00,6A,_,_,_,_,_,_ ), 0 , 4 , 0 , 10460, 146, 88 ), // #635
710 INST(Punpckhqdq , ExtRm , O(660F00,6D,_,_,_,_,_,_ ), 0 , 3 , 0 , 10471, 5 , 4 ), // #636
711 INST(Punpckhwd , ExtRm_P , O(000F00,69,_,_,_,_,_,_ ), 0 , 4 , 0 , 10483, 146, 88 ), // #637
712 INST(Punpcklbw , ExtRm_P , O(000F00,60,_,_,_,_,_,_ ), 0 , 4 , 0 , 10494, 170, 88 ), // #638
713 INST(Punpckldq , ExtRm_P , O(000F00,62,_,_,_,_,_,_ ), 0 , 4 , 0 , 10505, 170, 88 ), // #639
714 INST(Punpcklqdq , ExtRm , O(660F00,6C,_,_,_,_,_,_ ), 0 , 3 , 0 , 10516, 5 , 4 ), // #640
715 INST(Punpcklwd , ExtRm_P , O(000F00,61,_,_,_,_,_,_ ), 0 , 4 , 0 , 10528, 170, 88 ), // #641
716 INST(Push , X86Push , O(000000,FF,6,_,_,_,_,_ ), O(000000,50,_,_,_,_,_,_ ), 32 , 78 , 2417 , 171, 0 ), // #642
717 INST(Pusha , X86Op , O(660000,60,_,_,_,_,_,_ ), 0 , 19 , 0 , 2422 , 81 , 0 ), // #643
718 INST(Pushad , X86Op , O(000000,60,_,_,_,_,_,_ ), 0 , 0 , 0 , 2428 , 81 , 0 ), // #644
719 INST(Pushf , X86Op , O(660000,9C,_,_,_,_,_,_ ), 0 , 19 , 0 , 2435 , 30 , 108), // #645
720 INST(Pushfd , X86Op , O(000000,9C,_,_,_,_,_,_ ), 0 , 0 , 0 , 2441 , 81 , 108), // #646
721 INST(Pushfq , X86Op , O(000000,9C,_,_,_,_,_,_ ), 0 , 0 , 0 , 2448 , 33 , 108), // #647
722 INST(Pvalidate , X86Op , O(F20F01,FF,_,_,_,_,_,_ ), 0 , 92 , 0 , 2455 , 30 , 109), // #648
723 INST(Pxor , ExtRm_P , O(000F00,EF,_,_,_,_,_,_ ), 0 , 4 , 0 , 10539, 149, 88 ), // #649
724 INST(Rcl , X86Rot , O(000000,D0,2,_,x,_,_,_ ), 0 , 1 , 0 , 2465 , 172, 110), // #650
725 INST(Rcpps , ExtRm , O(000F00,53,_,_,_,_,_,_ ), 0 , 4 , 0 , 10674, 5 , 5 ), // #651
726 INST(Rcpss , ExtRm , O(F30F00,53,_,_,_,_,_,_ ), 0 , 6 , 0 , 10688, 7 , 5 ), // #652
727 INST(Rcr , X86Rot , O(000000,D0,3,_,x,_,_,_ ), 0 , 75 , 0 , 2469 , 172, 110), // #653
728 INST(Rdfsbase , X86M , O(F30F00,AE,0,_,x,_,_,_ ), 0 , 6 , 0 , 2473 , 173, 111), // #654
729 INST(Rdgsbase , X86M , O(F30F00,AE,1,_,x,_,_,_ ), 0 , 93 , 0 , 2482 , 173, 111), // #655
730 INST(Rdmsr , X86Op , O(000F00,32,_,_,_,_,_,_ ), 0 , 4 , 0 , 2491 , 174, 112), // #656
731 INST(Rdpid , X86R_Native , O(F30F00,C7,7,_,_,_,_,_ ), 0 , 94 , 0 , 2497 , 175, 113), // #657
732 INST(Rdpkru , X86Op , O(000F01,EE,_,_,_,_,_,_ ), 0 , 21 , 0 , 2503 , 174, 114), // #658
733 INST(Rdpmc , X86Op , O(000F00,33,_,_,_,_,_,_ ), 0 , 4 , 0 , 2510 , 174, 0 ), // #659
734 INST(Rdpru , X86Op , O(000F01,FD,_,_,_,_,_,_ ), 0 , 21 , 0 , 2516 , 174, 115), // #660
735 INST(Rdrand , X86M , O(000F00,C7,6,_,x,_,_,_ ), 0 , 80 , 0 , 2522 , 23 , 116), // #661
736 INST(Rdseed , X86M , O(000F00,C7,7,_,x,_,_,_ ), 0 , 22 , 0 , 2529 , 23 , 117), // #662
737 INST(Rdsspd , X86M , O(F30F00,1E,1,_,_,_,_,_ ), 0 , 93 , 0 , 2536 , 76 , 56 ), // #663
738 INST(Rdsspq , X86M , O(F30F00,1E,1,_,_,_,_,_ ), 0 , 93 , 0 , 2543 , 77 , 56 ), // #664
739 INST(Rdtsc , X86Op , O(000F00,31,_,_,_,_,_,_ ), 0 , 4 , 0 , 2550 , 28 , 118), // #665
740 INST(Rdtscp , X86Op , O(000F01,F9,_,_,_,_,_,_ ), 0 , 21 , 0 , 2556 , 174, 119), // #666
741 INST(Ret , X86Ret , O(000000,C2,_,_,_,_,_,_ ), 0 , 0 , 0 , 3072 , 176, 0 ), // #667
742 INST(Retf , X86Ret , O(000000,CA,_,_,x,_,_,_ ), 0 , 0 , 0 , 2563 , 177, 0 ), // #668
743 INST(Rmpadjust , X86Op , O(F30F01,FE,_,_,_,_,_,_ ), 0 , 25 , 0 , 2568 , 33 , 105), // #669
744 INST(Rmpupdate , X86Op , O(F20F01,FE,_,_,_,_,_,_ ), 0 , 92 , 0 , 2578 , 33 , 105), // #670
745 INST(Rol , X86Rot , O(000000,D0,0,_,x,_,_,_ ), 0 , 0 , 0 , 2588 , 172, 120), // #671
746 INST(Ror , X86Rot , O(000000,D0,1,_,x,_,_,_ ), 0 , 31 , 0 , 2592 , 172, 120), // #672
747 INST(Rorx , VexRmi_Wx , V(F20F3A,F0,_,0,x,_,_,_ ), 0 , 95 , 0 , 2596 , 178, 92 ), // #673
748 INST(Roundpd , ExtRmi , O(660F3A,09,_,_,_,_,_,_ ), 0 , 8 , 0 , 10827, 8 , 12 ), // #674
749 INST(Roundps , ExtRmi , O(660F3A,08,_,_,_,_,_,_ ), 0 , 8 , 0 , 10836, 8 , 12 ), // #675
750 INST(Roundsd , ExtRmi , O(660F3A,0B,_,_,_,_,_,_ ), 0 , 8 , 0 , 10845, 37 , 12 ), // #676
751 INST(Roundss , ExtRmi , O(660F3A,0A,_,_,_,_,_,_ ), 0 , 8 , 0 , 10854, 38 , 12 ), // #677
752 INST(Rsm , X86Op , O(000F00,AA,_,_,_,_,_,_ ), 0 , 4 , 0 , 2601 , 81 , 1 ), // #678
753 INST(Rsqrtps , ExtRm , O(000F00,52,_,_,_,_,_,_ ), 0 , 4 , 0 , 10960, 5 , 5 ), // #679
754 INST(Rsqrtss , ExtRm , O(F30F00,52,_,_,_,_,_,_ ), 0 , 6 , 0 , 10978, 7 , 5 ), // #680
755 INST(Rstorssp , X86M_Only , O(F30F00,01,5,_,_,_,_,_ ), 0 , 63 , 0 , 2605 , 32 , 24 ), // #681
756 INST(Sahf , X86Op , O(000000,9E,_,_,_,_,_,_ ), 0 , 0 , 0 , 2614 , 97 , 121), // #682
757 INST(Sal , X86Rot , O(000000,D0,4,_,x,_,_,_ ), 0 , 9 , 0 , 2619 , 172, 1 ), // #683
758 INST(Sar , X86Rot , O(000000,D0,7,_,x,_,_,_ ), 0 , 27 , 0 , 2623 , 172, 1 ), // #684
759 INST(Sarx , VexRmv_Wx , V(F30F38,F7,_,0,x,_,_,_ ), 0 , 88 , 0 , 2627 , 13 , 92 ), // #685
760 INST(Saveprevssp , X86Op , O(F30F01,EA,_,_,_,_,_,_ ), 0 , 25 , 0 , 2632 , 30 , 24 ), // #686
761 INST(Sbb , X86Arith , O(000000,18,3,_,x,_,_,_ ), 0 , 75 , 0 , 2644 , 179, 2 ), // #687
762 INST(Scas , X86StrRm , O(000000,AE,_,_,_,_,_,_ ), 0 , 0 , 0 , 2648 , 180, 37 ), // #688
763 INST(Senduipi , X86M_NoSize , O(F30F00,C7,6,_,_,_,_,_ ), 0 , 24 , 0 , 2653 , 77 , 25 ), // #689
764 INST(Serialize , X86Op , O(000F01,E8,_,_,_,_,_,_ ), 0 , 21 , 0 , 2662 , 30 , 122), // #690
765 INST(Seta , X86Set , O(000F00,97,_,_,_,_,_,_ ), 0 , 4 , 0 , 2672 , 181, 59 ), // #691
766 INST(Setae , X86Set , O(000F00,93,_,_,_,_,_,_ ), 0 , 4 , 0 , 2677 , 181, 60 ), // #692
767 INST(Setb , X86Set , O(000F00,92,_,_,_,_,_,_ ), 0 , 4 , 0 , 2683 , 181, 60 ), // #693
768 INST(Setbe , X86Set , O(000F00,96,_,_,_,_,_,_ ), 0 , 4 , 0 , 2688 , 181, 59 ), // #694
769 INST(Setc , X86Set , O(000F00,92,_,_,_,_,_,_ ), 0 , 4 , 0 , 2694 , 181, 60 ), // #695
770 INST(Sete , X86Set , O(000F00,94,_,_,_,_,_,_ ), 0 , 4 , 0 , 2699 , 181, 61 ), // #696
771 INST(Setg , X86Set , O(000F00,9F,_,_,_,_,_,_ ), 0 , 4 , 0 , 2704 , 181, 62 ), // #697
772 INST(Setge , X86Set , O(000F00,9D,_,_,_,_,_,_ ), 0 , 4 , 0 , 2709 , 181, 63 ), // #698
773 INST(Setl , X86Set , O(000F00,9C,_,_,_,_,_,_ ), 0 , 4 , 0 , 2715 , 181, 63 ), // #699
774 INST(Setle , X86Set , O(000F00,9E,_,_,_,_,_,_ ), 0 , 4 , 0 , 2720 , 181, 62 ), // #700
775 INST(Setna , X86Set , O(000F00,96,_,_,_,_,_,_ ), 0 , 4 , 0 , 2726 , 181, 59 ), // #701
776 INST(Setnae , X86Set , O(000F00,92,_,_,_,_,_,_ ), 0 , 4 , 0 , 2732 , 181, 60 ), // #702
777 INST(Setnb , X86Set , O(000F00,93,_,_,_,_,_,_ ), 0 , 4 , 0 , 2739 , 181, 60 ), // #703
778 INST(Setnbe , X86Set , O(000F00,97,_,_,_,_,_,_ ), 0 , 4 , 0 , 2745 , 181, 59 ), // #704
779 INST(Setnc , X86Set , O(000F00,93,_,_,_,_,_,_ ), 0 , 4 , 0 , 2752 , 181, 60 ), // #705
780 INST(Setne , X86Set , O(000F00,95,_,_,_,_,_,_ ), 0 , 4 , 0 , 2758 , 181, 61 ), // #706
781 INST(Setng , X86Set , O(000F00,9E,_,_,_,_,_,_ ), 0 , 4 , 0 , 2764 , 181, 62 ), // #707
782 INST(Setnge , X86Set , O(000F00,9C,_,_,_,_,_,_ ), 0 , 4 , 0 , 2770 , 181, 63 ), // #708
783 INST(Setnl , X86Set , O(000F00,9D,_,_,_,_,_,_ ), 0 , 4 , 0 , 2777 , 181, 63 ), // #709
784 INST(Setnle , X86Set , O(000F00,9F,_,_,_,_,_,_ ), 0 , 4 , 0 , 2783 , 181, 62 ), // #710
785 INST(Setno , X86Set , O(000F00,91,_,_,_,_,_,_ ), 0 , 4 , 0 , 2790 , 181, 57 ), // #711
786 INST(Setnp , X86Set , O(000F00,9B,_,_,_,_,_,_ ), 0 , 4 , 0 , 2796 , 181, 64 ), // #712
787 INST(Setns , X86Set , O(000F00,99,_,_,_,_,_,_ ), 0 , 4 , 0 , 2802 , 181, 65 ), // #713
788 INST(Setnz , X86Set , O(000F00,95,_,_,_,_,_,_ ), 0 , 4 , 0 , 2808 , 181, 61 ), // #714
789 INST(Seto , X86Set , O(000F00,90,_,_,_,_,_,_ ), 0 , 4 , 0 , 2814 , 181, 57 ), // #715
790 INST(Setp , X86Set , O(000F00,9A,_,_,_,_,_,_ ), 0 , 4 , 0 , 2819 , 181, 64 ), // #716
791 INST(Setpe , X86Set , O(000F00,9A,_,_,_,_,_,_ ), 0 , 4 , 0 , 2824 , 181, 64 ), // #717
792 INST(Setpo , X86Set , O(000F00,9B,_,_,_,_,_,_ ), 0 , 4 , 0 , 2830 , 181, 64 ), // #718
793 INST(Sets , X86Set , O(000F00,98,_,_,_,_,_,_ ), 0 , 4 , 0 , 2836 , 181, 65 ), // #719
794 INST(Setssbsy , X86Op , O(F30F01,E8,_,_,_,_,_,_ ), 0 , 25 , 0 , 2841 , 30 , 56 ), // #720
795 INST(Setz , X86Set , O(000F00,94,_,_,_,_,_,_ ), 0 , 4 , 0 , 2850 , 181, 61 ), // #721
796 INST(Sfence , X86Fence , O(000F00,AE,7,_,_,_,_,_ ), 0 , 22 , 0 , 2855 , 30 , 80 ), // #722
797 INST(Sgdt , X86M_Only , O(000F00,01,0,_,_,_,_,_ ), 0 , 4 , 0 , 2862 , 69 , 0 ), // #723
798 INST(Sha1msg1 , ExtRm , O(000F38,C9,_,_,_,_,_,_ ), 0 , 83 , 0 , 2867 , 5 , 123), // #724
799 INST(Sha1msg2 , ExtRm , O(000F38,CA,_,_,_,_,_,_ ), 0 , 83 , 0 , 2876 , 5 , 123), // #725
800 INST(Sha1nexte , ExtRm , O(000F38,C8,_,_,_,_,_,_ ), 0 , 83 , 0 , 2885 , 5 , 123), // #726
801 INST(Sha1rnds4 , ExtRmi , O(000F3A,CC,_,_,_,_,_,_ ), 0 , 85 , 0 , 2895 , 8 , 123), // #727
802 INST(Sha256msg1 , ExtRm , O(000F38,CC,_,_,_,_,_,_ ), 0 , 83 , 0 , 2905 , 5 , 123), // #728
803 INST(Sha256msg2 , ExtRm , O(000F38,CD,_,_,_,_,_,_ ), 0 , 83 , 0 , 2916 , 5 , 123), // #729
804 INST(Sha256rnds2 , ExtRm_XMM0 , O(000F38,CB,_,_,_,_,_,_ ), 0 , 83 , 0 , 2927 , 15 , 123), // #730
805 INST(Shl , X86Rot , O(000000,D0,4,_,x,_,_,_ ), 0 , 9 , 0 , 2939 , 172, 1 ), // #731
806 INST(Shld , X86ShldShrd , O(000F00,A4,_,_,x,_,_,_ ), 0 , 4 , 0 , 9938 , 182, 1 ), // #732
807 INST(Shlx , VexRmv_Wx , V(660F38,F7,_,0,x,_,_,_ ), 0 , 96 , 0 , 2943 , 13 , 92 ), // #733
808 INST(Shr , X86Rot , O(000000,D0,5,_,x,_,_,_ ), 0 , 62 , 0 , 2948 , 172, 1 ), // #734
809 INST(Shrd , X86ShldShrd , O(000F00,AC,_,_,x,_,_,_ ), 0 , 4 , 0 , 2952 , 182, 1 ), // #735
810 INST(Shrx , VexRmv_Wx , V(F20F38,F7,_,0,x,_,_,_ ), 0 , 84 , 0 , 2957 , 13 , 92 ), // #736
811 INST(Shufpd , ExtRmi , O(660F00,C6,_,_,_,_,_,_ ), 0 , 3 , 0 , 11259, 8 , 4 ), // #737
812 INST(Shufps , ExtRmi , O(000F00,C6,_,_,_,_,_,_ ), 0 , 4 , 0 , 11267, 8 , 5 ), // #738
813 INST(Sidt , X86M_Only , O(000F00,01,1,_,_,_,_,_ ), 0 , 29 , 0 , 2962 , 69 , 0 ), // #739
814 INST(Skinit , X86Op_xAX , O(000F01,DE,_,_,_,_,_,_ ), 0 , 21 , 0 , 2967 , 52 , 124), // #740
815 INST(Sldt , X86M_NoMemSize , O(000F00,00,0,_,_,_,_,_ ), 0 , 4 , 0 , 2974 , 183, 0 ), // #741
816 INST(Slwpcb , VexR_Wx , V(XOP_M9,12,1,0,x,_,_,_ ), 0 , 11 , 0 , 2979 , 108, 77 ), // #742
817 INST(Smsw , X86M_NoMemSize , O(000F00,01,4,_,_,_,_,_ ), 0 , 97 , 0 , 2986 , 183, 0 ), // #743
818 INST(Sqrtpd , ExtRm , O(660F00,51,_,_,_,_,_,_ ), 0 , 3 , 0 , 11275, 5 , 4 ), // #744
819 INST(Sqrtps , ExtRm , O(000F00,51,_,_,_,_,_,_ ), 0 , 4 , 0 , 10961, 5 , 5 ), // #745
820 INST(Sqrtsd , ExtRm , O(F20F00,51,_,_,_,_,_,_ ), 0 , 5 , 0 , 11299, 6 , 4 ), // #746
821 INST(Sqrtss , ExtRm , O(F30F00,51,_,_,_,_,_,_ ), 0 , 6 , 0 , 10979, 7 , 5 ), // #747
822 INST(Stac , X86Op , O(000F01,CB,_,_,_,_,_,_ ), 0 , 21 , 0 , 2991 , 30 , 16 ), // #748
823 INST(Stc , X86Op , O(000000,F9,_,_,_,_,_,_ ), 0 , 0 , 0 , 2996 , 30 , 17 ), // #749
824 INST(Std , X86Op , O(000000,FD,_,_,_,_,_,_ ), 0 , 0 , 0 , 7921 , 30 , 18 ), // #750
825 INST(Stgi , X86Op , O(000F01,DC,_,_,_,_,_,_ ), 0 , 21 , 0 , 3000 , 30 , 124), // #751
826 INST(Sti , X86Op , O(000000,FB,_,_,_,_,_,_ ), 0 , 0 , 0 , 3005 , 30 , 23 ), // #752
827 INST(Stmxcsr , X86M_Only , O(000F00,AE,3,_,_,_,_,_ ), 0 , 78 , 0 , 11323, 101, 5 ), // #753
828 INST(Stos , X86StrMr , O(000000,AA,_,_,_,_,_,_ ), 0 , 0 , 0 , 3009 , 184, 78 ), // #754
829 INST(Str , X86M_NoMemSize , O(000F00,00,1,_,_,_,_,_ ), 0 , 29 , 0 , 3014 , 183, 0 ), // #755
830 INST(Sttilecfg , AmxCfg , V(660F38,49,_,0,0,_,_,_ ), 0 , 96 , 0 , 3018 , 103, 76 ), // #756
831 INST(Stui , X86Op , O(F30F01,EF,_,_,_,_,_,_ ), 0 , 25 , 0 , 3135 , 33 , 25 ), // #757
832 INST(Sub , X86Arith , O(000000,28,5,_,x,_,_,_ ), 0 , 62 , 0 , 866 , 179, 1 ), // #758
833 INST(Subpd , ExtRm , O(660F00,5C,_,_,_,_,_,_ ), 0 , 3 , 0 , 5413 , 5 , 4 ), // #759
834 INST(Subps , ExtRm , O(000F00,5C,_,_,_,_,_,_ ), 0 , 4 , 0 , 5425 , 5 , 5 ), // #760
835 INST(Subsd , ExtRm , O(F20F00,5C,_,_,_,_,_,_ ), 0 , 5 , 0 , 6392 , 6 , 4 ), // #761
836 INST(Subss , ExtRm , O(F30F00,5C,_,_,_,_,_,_ ), 0 , 6 , 0 , 6402 , 7 , 5 ), // #762
837 INST(Swapgs , X86Op , O(000F01,F8,_,_,_,_,_,_ ), 0 , 21 , 0 , 3028 , 33 , 0 ), // #763
838 INST(Syscall , X86Op , O(000F00,05,_,_,_,_,_,_ ), 0 , 4 , 0 , 3035 , 33 , 0 ), // #764
839 INST(Sysenter , X86Op , O(000F00,34,_,_,_,_,_,_ ), 0 , 4 , 0 , 3043 , 30 , 0 ), // #765
840 INST(Sysexit , X86Op , O(000F00,35,_,_,_,_,_,_ ), 0 , 4 , 0 , 3052 , 30 , 0 ), // #766
841 INST(Sysexitq , X86Op , O(000F00,35,_,_,1,_,_,_ ), 0 , 60 , 0 , 3060 , 30 , 0 ), // #767
842 INST(Sysret , X86Op , O(000F00,07,_,_,_,_,_,_ ), 0 , 4 , 0 , 3069 , 33 , 0 ), // #768
843 INST(Sysretq , X86Op , O(000F00,07,_,_,1,_,_,_ ), 0 , 60 , 0 , 3076 , 33 , 0 ), // #769
844 INST(T1mskc , VexVm_Wx , V(XOP_M9,01,7,0,x,_,_,_ ), 0 , 98 , 0 , 3084 , 14 , 11 ), // #770
845 INST(Tdpbf16ps , AmxRmv , V(F30F38,5C,_,0,0,_,_,_ ), 0 , 88 , 0 , 3091 , 185, 125), // #771
846 INST(Tdpbssd , AmxRmv , V(F20F38,5E,_,0,0,_,_,_ ), 0 , 84 , 0 , 3101 , 185, 126), // #772
847 INST(Tdpbsud , AmxRmv , V(F30F38,5E,_,0,0,_,_,_ ), 0 , 88 , 0 , 3109 , 185, 126), // #773
848 INST(Tdpbusd , AmxRmv , V(660F38,5E,_,0,0,_,_,_ ), 0 , 96 , 0 , 3117 , 185, 126), // #774
849 INST(Tdpbuud , AmxRmv , V(000F38,5E,_,0,0,_,_,_ ), 0 , 10 , 0 , 3125 , 185, 126), // #775
850 INST(Test , X86Test , O(000000,84,_,_,x,_,_,_ ), O(000000,F6,_,_,x,_,_,_ ), 0 , 79 , 10367, 186, 1 ), // #776
851 INST(Testui , X86Op , O(F30F01,ED,_,_,_,_,_,_ ), 0 , 25 , 0 , 3133 , 33 , 127), // #777
852 INST(Tileloadd , AmxRm , V(F20F38,4B,_,0,0,_,_,_ ), 0 , 84 , 0 , 3140 , 187, 76 ), // #778
853 INST(Tileloaddt1 , AmxRm , V(660F38,4B,_,0,0,_,_,_ ), 0 , 96 , 0 , 3150 , 187, 76 ), // #779
854 INST(Tilerelease , VexOpMod , V(000F38,49,0,0,0,_,_,_ ), 0 , 10 , 0 , 3162 , 188, 76 ), // #780
855 INST(Tilestored , AmxMr , V(F30F38,4B,_,0,0,_,_,_ ), 0 , 88 , 0 , 3174 , 189, 76 ), // #781
856 INST(Tilezero , AmxR , V(F20F38,49,_,0,0,_,_,_ ), 0 , 84 , 0 , 3185 , 190, 76 ), // #782
857 INST(Tpause , X86R32_EDX_EAX , O(660F00,AE,6,_,_,_,_,_ ), 0 , 26 , 0 , 3194 , 191, 128), // #783
858 INST(Tzcnt , X86Rm_Raw66H , O(F30F00,BC,_,_,x,_,_,_ ), 0 , 6 , 0 , 3201 , 22 , 9 ), // #784
859 INST(Tzmsk , VexVm_Wx , V(XOP_M9,01,4,0,x,_,_,_ ), 0 , 99 , 0 , 3207 , 14 , 11 ), // #785
860 INST(Ucomisd , ExtRm , O(660F00,2E,_,_,_,_,_,_ ), 0 , 3 , 0 , 11390, 6 , 41 ), // #786
861 INST(Ucomiss , ExtRm , O(000F00,2E,_,_,_,_,_,_ ), 0 , 4 , 0 , 11408, 7 , 42 ), // #787
862 INST(Ud0 , X86Rm , O(000F00,FF,_,_,_,_,_,_ ), 0 , 4 , 0 , 3213 , 192, 0 ), // #788
863 INST(Ud1 , X86Rm , O(000F00,B9,_,_,_,_,_,_ ), 0 , 4 , 0 , 3217 , 192, 0 ), // #789
864 INST(Ud2 , X86Op , O(000F00,0B,_,_,_,_,_,_ ), 0 , 4 , 0 , 3221 , 30 , 0 ), // #790
865 INST(Uiret , X86Op , O(F30F01,EC,_,_,_,_,_,_ ), 0 , 25 , 0 , 3225 , 33 , 25 ), // #791
866 INST(Umonitor , X86R_FromM , O(F30F00,AE,6,_,_,_,_,_ ), 0 , 24 , 0 , 3231 , 193, 129), // #792
867 INST(Umwait , X86R32_EDX_EAX , O(F20F00,AE,6,_,_,_,_,_ ), 0 , 100, 0 , 3240 , 191, 128), // #793
868 INST(Unpckhpd , ExtRm , O(660F00,15,_,_,_,_,_,_ ), 0 , 3 , 0 , 11417, 5 , 4 ), // #794
869 INST(Unpckhps , ExtRm , O(000F00,15,_,_,_,_,_,_ ), 0 , 4 , 0 , 11427, 5 , 5 ), // #795
870 INST(Unpcklpd , ExtRm , O(660F00,14,_,_,_,_,_,_ ), 0 , 3 , 0 , 11437, 5 , 4 ), // #796
871 INST(Unpcklps , ExtRm , O(000F00,14,_,_,_,_,_,_ ), 0 , 4 , 0 , 11447, 5 , 5 ), // #797
872 INST(V4fmaddps , VexRm_T1_4X , E(F20F38,9A,_,2,_,0,4,T4X), 0 , 101, 0 , 3247 , 194, 130), // #798
873 INST(V4fmaddss , VexRm_T1_4X , E(F20F38,9B,_,0,_,0,4,T4X), 0 , 102, 0 , 3257 , 195, 130), // #799
874 INST(V4fnmaddps , VexRm_T1_4X , E(F20F38,AA,_,2,_,0,4,T4X), 0 , 101, 0 , 3267 , 194, 130), // #800
875 INST(V4fnmaddss , VexRm_T1_4X , E(F20F38,AB,_,0,_,0,4,T4X), 0 , 102, 0 , 3278 , 195, 130), // #801
876 INST(Vaddpd , VexRvm_Lx , V(660F00,58,_,x,I,1,4,FV ), 0 , 103, 0 , 3289 , 196, 131), // #802
877 INST(Vaddph , VexRvm_Lx , E(00MAP5,58,_,_,_,0,4,FV ), 0 , 104, 0 , 3296 , 197, 132), // #803
878 INST(Vaddps , VexRvm_Lx , V(000F00,58,_,x,I,0,4,FV ), 0 , 105, 0 , 3303 , 198, 131), // #804
879 INST(Vaddsd , VexRvm , V(F20F00,58,_,I,I,1,3,T1S), 0 , 106, 0 , 3310 , 199, 133), // #805
880 INST(Vaddsh , VexRvm , E(F3MAP5,58,_,_,_,0,1,T1S), 0 , 107, 0 , 3317 , 200, 134), // #806
881 INST(Vaddss , VexRvm , V(F30F00,58,_,I,I,0,2,T1S), 0 , 108, 0 , 3324 , 201, 133), // #807
882 INST(Vaddsubpd , VexRvm_Lx , V(660F00,D0,_,x,I,_,_,_ ), 0 , 69 , 0 , 3331 , 202, 135), // #808
883 INST(Vaddsubps , VexRvm_Lx , V(F20F00,D0,_,x,I,_,_,_ ), 0 , 109, 0 , 3341 , 202, 135), // #809
884 INST(Vaesdec , VexRvm_Lx , V(660F38,DE,_,x,I,_,4,FVM), 0 , 110, 0 , 3351 , 203, 136), // #810
885 INST(Vaesdeclast , VexRvm_Lx , V(660F38,DF,_,x,I,_,4,FVM), 0 , 110, 0 , 3359 , 203, 136), // #811
886 INST(Vaesenc , VexRvm_Lx , V(660F38,DC,_,x,I,_,4,FVM), 0 , 110, 0 , 3371 , 203, 136), // #812
887 INST(Vaesenclast , VexRvm_Lx , V(660F38,DD,_,x,I,_,4,FVM), 0 , 110, 0 , 3379 , 203, 136), // #813
888 INST(Vaesimc , VexRm , V(660F38,DB,_,0,I,_,_,_ ), 0 , 96 , 0 , 3391 , 204, 137), // #814
889 INST(Vaeskeygenassist , VexRmi , V(660F3A,DF,_,0,I,_,_,_ ), 0 , 73 , 0 , 3399 , 205, 137), // #815
890 INST(Valignd , VexRvmi_Lx , E(660F3A,03,_,x,_,0,4,FV ), 0 , 111, 0 , 3416 , 206, 138), // #816
891 INST(Valignq , VexRvmi_Lx , E(660F3A,03,_,x,_,1,4,FV ), 0 , 112, 0 , 3424 , 207, 138), // #817
892 INST(Vandnpd , VexRvm_Lx , V(660F00,55,_,x,I,1,4,FV ), 0 , 103, 0 , 3432 , 208, 139), // #818
893 INST(Vandnps , VexRvm_Lx , V(000F00,55,_,x,I,0,4,FV ), 0 , 105, 0 , 3440 , 209, 139), // #819
894 INST(Vandpd , VexRvm_Lx , V(660F00,54,_,x,I,1,4,FV ), 0 , 103, 0 , 3448 , 210, 139), // #820
895 INST(Vandps , VexRvm_Lx , V(000F00,54,_,x,I,0,4,FV ), 0 , 105, 0 , 3455 , 211, 139), // #821
896 INST(Vblendmpd , VexRvm_Lx , E(660F38,65,_,x,_,1,4,FV ), 0 , 113, 0 , 3462 , 212, 138), // #822
897 INST(Vblendmps , VexRvm_Lx , E(660F38,65,_,x,_,0,4,FV ), 0 , 114, 0 , 3472 , 213, 138), // #823
898 INST(Vblendpd , VexRvmi_Lx , V(660F3A,0D,_,x,I,_,_,_ ), 0 , 73 , 0 , 3482 , 214, 135), // #824
899 INST(Vblendps , VexRvmi_Lx , V(660F3A,0C,_,x,I,_,_,_ ), 0 , 73 , 0 , 3491 , 214, 135), // #825
900 INST(Vblendvpd , VexRvmr_Lx , V(660F3A,4B,_,x,0,_,_,_ ), 0 , 73 , 0 , 3500 , 215, 135), // #826
901 INST(Vblendvps , VexRvmr_Lx , V(660F3A,4A,_,x,0,_,_,_ ), 0 , 73 , 0 , 3510 , 215, 135), // #827
902 INST(Vbroadcastf128 , VexRm , V(660F38,1A,_,1,0,_,_,_ ), 0 , 115, 0 , 3520 , 216, 135), // #828
903 INST(Vbroadcastf32x2 , VexRm_Lx , E(660F38,19,_,x,_,0,3,T2 ), 0 , 116, 0 , 3535 , 217, 140), // #829
904 INST(Vbroadcastf32x4 , VexRm_Lx , E(660F38,1A,_,x,_,0,4,T4 ), 0 , 117, 0 , 3551 , 218, 68 ), // #830
905 INST(Vbroadcastf32x8 , VexRm , E(660F38,1B,_,2,_,0,5,T8 ), 0 , 118, 0 , 3567 , 219, 66 ), // #831
906 INST(Vbroadcastf64x2 , VexRm_Lx , E(660F38,1A,_,x,_,1,4,T2 ), 0 , 119, 0 , 3583 , 218, 140), // #832
907 INST(Vbroadcastf64x4 , VexRm , E(660F38,1B,_,2,_,1,5,T4 ), 0 , 120, 0 , 3599 , 219, 68 ), // #833
908 INST(Vbroadcasti128 , VexRm , V(660F38,5A,_,1,0,_,_,_ ), 0 , 115, 0 , 3615 , 216, 141), // #834
909 INST(Vbroadcasti32x2 , VexRm_Lx , E(660F38,59,_,x,_,0,3,T2 ), 0 , 116, 0 , 3630 , 220, 140), // #835
910 INST(Vbroadcasti32x4 , VexRm_Lx , E(660F38,5A,_,x,_,0,4,T4 ), 0 , 117, 0 , 3646 , 218, 138), // #836
911 INST(Vbroadcasti32x8 , VexRm , E(660F38,5B,_,2,_,0,5,T8 ), 0 , 118, 0 , 3662 , 219, 66 ), // #837
912 INST(Vbroadcasti64x2 , VexRm_Lx , E(660F38,5A,_,x,_,1,4,T2 ), 0 , 119, 0 , 3678 , 218, 140), // #838
913 INST(Vbroadcasti64x4 , VexRm , E(660F38,5B,_,2,_,1,5,T4 ), 0 , 120, 0 , 3694 , 219, 68 ), // #839
914 INST(Vbroadcastsd , VexRm_Lx , V(660F38,19,_,x,0,1,3,T1S), 0 , 121, 0 , 3710 , 221, 142), // #840
915 INST(Vbroadcastss , VexRm_Lx , V(660F38,18,_,x,0,0,2,T1S), 0 , 122, 0 , 3723 , 222, 142), // #841
916 INST(Vcmppd , VexRvmi_Lx_KEvex , V(660F00,C2,_,x,I,1,4,FV ), 0 , 103, 0 , 3736 , 223, 131), // #842
917 INST(Vcmpph , VexRvmi_Lx_KEvex , E(000F3A,C2,_,_,_,0,4,FV ), 0 , 123, 0 , 3743 , 224, 132), // #843
918 INST(Vcmpps , VexRvmi_Lx_KEvex , V(000F00,C2,_,x,I,0,4,FV ), 0 , 105, 0 , 3750 , 225, 131), // #844
919 INST(Vcmpsd , VexRvmi_KEvex , V(F20F00,C2,_,I,I,1,3,T1S), 0 , 106, 0 , 3757 , 226, 133), // #845
920 INST(Vcmpsh , VexRvmi_KEvex , E(F30F3A,C2,_,_,_,0,1,T1S), 0 , 124, 0 , 3764 , 227, 134), // #846
921 INST(Vcmpss , VexRvmi_KEvex , V(F30F00,C2,_,I,I,0,2,T1S), 0 , 108, 0 , 3771 , 228, 133), // #847
922 INST(Vcomisd , VexRm , V(660F00,2F,_,I,I,1,3,T1S), 0 , 125, 0 , 3778 , 229, 143), // #848
923 INST(Vcomish , VexRm , E(00MAP5,2F,_,_,_,0,1,T1S), 0 , 126, 0 , 3786 , 230, 134), // #849
924 INST(Vcomiss , VexRm , V(000F00,2F,_,I,I,0,2,T1S), 0 , 127, 0 , 3794 , 231, 143), // #850
925 INST(Vcompresspd , VexMr_Lx , E(660F38,8A,_,x,_,1,3,T1S), 0 , 128, 0 , 3802 , 232, 138), // #851
926 INST(Vcompressps , VexMr_Lx , E(660F38,8A,_,x,_,0,2,T1S), 0 , 129, 0 , 3814 , 232, 138), // #852
927 INST(Vcvtdq2pd , VexRm_Lx , V(F30F00,E6,_,x,I,0,3,HV ), 0 , 130, 0 , 3826 , 233, 131), // #853
928 INST(Vcvtdq2ph , VexRm_Lx , E(00MAP5,5B,_,_,_,0,4,FV ), 0 , 104, 0 , 3836 , 234, 132), // #854
929 INST(Vcvtdq2ps , VexRm_Lx , V(000F00,5B,_,x,I,0,4,FV ), 0 , 105, 0 , 3846 , 235, 131), // #855
930 INST(Vcvtne2ps2bf16 , VexRvm_Lx , E(F20F38,72,_,_,_,0,4,FV ), 0 , 131, 0 , 3856 , 213, 144), // #856
931 INST(Vcvtneps2bf16 , VexRm_Lx_Narrow , E(F30F38,72,_,_,_,0,4,FV ), 0 , 132, 0 , 3871 , 236, 144), // #857
932 INST(Vcvtpd2dq , VexRm_Lx_Narrow , V(F20F00,E6,_,x,I,1,4,FV ), 0 , 133, 0 , 3885 , 237, 131), // #858
933 INST(Vcvtpd2ph , VexRm_Lx , E(66MAP5,5A,_,_,_,1,4,FV ), 0 , 134, 0 , 3895 , 238, 132), // #859
934 INST(Vcvtpd2ps , VexRm_Lx_Narrow , V(660F00,5A,_,x,I,1,4,FV ), 0 , 103, 0 , 3905 , 237, 131), // #860
935 INST(Vcvtpd2qq , VexRm_Lx , E(660F00,7B,_,x,_,1,4,FV ), 0 , 135, 0 , 3915 , 239, 140), // #861
936 INST(Vcvtpd2udq , VexRm_Lx_Narrow , E(000F00,79,_,x,_,1,4,FV ), 0 , 136, 0 , 3925 , 240, 138), // #862
937 INST(Vcvtpd2uqq , VexRm_Lx , E(660F00,79,_,x,_,1,4,FV ), 0 , 135, 0 , 3936 , 239, 140), // #863
938 INST(Vcvtph2dq , VexRm_Lx , E(66MAP5,5B,_,_,_,0,3,HV ), 0 , 137, 0 , 3947 , 241, 132), // #864
939 INST(Vcvtph2pd , VexRm_Lx , E(00MAP5,5A,_,_,_,0,2,QV ), 0 , 138, 0 , 3957 , 242, 132), // #865
940 INST(Vcvtph2ps , VexRm_Lx , V(660F38,13,_,x,0,0,3,HVM), 0 , 139, 0 , 3967 , 243, 145), // #866
941 INST(Vcvtph2psx , VexRm_Lx , E(66MAP6,13,_,_,_,0,3,HV ), 0 , 140, 0 , 3977 , 244, 132), // #867
942 INST(Vcvtph2qq , VexRm_Lx , E(66MAP5,7B,_,_,_,0,2,QV ), 0 , 141, 0 , 3988 , 245, 132), // #868
943 INST(Vcvtph2udq , VexRm_Lx , E(00MAP5,79,_,_,_,0,3,HV ), 0 , 142, 0 , 3998 , 241, 132), // #869
944 INST(Vcvtph2uqq , VexRm_Lx , E(66MAP5,79,_,_,_,0,2,QV ), 0 , 141, 0 , 4009 , 245, 132), // #870
945 INST(Vcvtph2uw , VexRm_Lx , E(00MAP5,7D,_,_,_,0,4,FV ), 0 , 104, 0 , 4020 , 246, 132), // #871
946 INST(Vcvtph2w , VexRm_Lx , E(66MAP5,7D,_,_,_,0,4,FV ), 0 , 143, 0 , 4030 , 246, 132), // #872
947 INST(Vcvtps2dq , VexRm_Lx , V(660F00,5B,_,x,I,0,4,FV ), 0 , 144, 0 , 4039 , 235, 131), // #873
948 INST(Vcvtps2pd , VexRm_Lx , V(000F00,5A,_,x,I,0,3,HV ), 0 , 145, 0 , 4049 , 247, 131), // #874
949 INST(Vcvtps2ph , VexMri_Lx , V(660F3A,1D,_,x,0,0,3,HVM), 0 , 146, 0 , 4059 , 248, 145), // #875
950 INST(Vcvtps2phx , VexRm_Lx , E(66MAP5,1D,_,_,_,0,4,FV ), 0 , 143, 0 , 4069 , 234, 132), // #876
951 INST(Vcvtps2qq , VexRm_Lx , E(660F00,7B,_,x,_,0,3,HV ), 0 , 147, 0 , 4080 , 249, 140), // #877
952 INST(Vcvtps2udq , VexRm_Lx , E(000F00,79,_,x,_,0,4,FV ), 0 , 148, 0 , 4090 , 250, 138), // #878
953 INST(Vcvtps2uqq , VexRm_Lx , E(660F00,79,_,x,_,0,3,HV ), 0 , 147, 0 , 4101 , 249, 140), // #879
954 INST(Vcvtqq2pd , VexRm_Lx , E(F30F00,E6,_,x,_,1,4,FV ), 0 , 149, 0 , 4112 , 239, 140), // #880
955 INST(Vcvtqq2ph , VexRm_Lx , E(00MAP5,5B,_,_,_,1,4,FV ), 0 , 150, 0 , 4122 , 238, 132), // #881
956 INST(Vcvtqq2ps , VexRm_Lx_Narrow , E(000F00,5B,_,x,_,1,4,FV ), 0 , 136, 0 , 4132 , 240, 140), // #882
957 INST(Vcvtsd2sh , VexRvm , E(F2MAP5,5A,_,_,_,1,3,T1S), 0 , 151, 0 , 4142 , 251, 134), // #883
958 INST(Vcvtsd2si , VexRm_Wx , V(F20F00,2D,_,I,x,x,3,T1F), 0 , 152, 0 , 4152 , 252, 133), // #884
959 INST(Vcvtsd2ss , VexRvm , V(F20F00,5A,_,I,I,1,3,T1S), 0 , 106, 0 , 4162 , 199, 133), // #885
960 INST(Vcvtsd2usi , VexRm_Wx , E(F20F00,79,_,I,_,x,3,T1F), 0 , 153, 0 , 4172 , 253, 68 ), // #886
961 INST(Vcvtsh2sd , VexRvm , E(F3MAP5,5A,_,_,_,0,1,T1S), 0 , 107, 0 , 4183 , 254, 134), // #887
962 INST(Vcvtsh2si , VexRm_Wx , E(F3MAP5,2D,_,_,_,x,1,T1S), 0 , 107, 0 , 4193 , 255, 134), // #888
963 INST(Vcvtsh2ss , VexRvm , E(00MAP6,13,_,_,_,0,1,T1S), 0 , 154, 0 , 4203 , 254, 134), // #889
964 INST(Vcvtsh2usi , VexRm_Wx , E(F3MAP5,79,_,_,_,x,1,T1S), 0 , 107, 0 , 4213 , 255, 134), // #890
965 INST(Vcvtsi2sd , VexRvm_Wx , V(F20F00,2A,_,I,x,x,2,T1W), 0 , 155, 0 , 4224 , 256, 133), // #891
966 INST(Vcvtsi2sh , VexRvm_Wx , E(F3MAP5,2A,_,_,_,x,2,T1W), 0 , 156, 0 , 4234 , 257, 134), // #892
967 INST(Vcvtsi2ss , VexRvm_Wx , V(F30F00,2A,_,I,x,x,2,T1W), 0 , 157, 0 , 4244 , 256, 133), // #893
968 INST(Vcvtss2sd , VexRvm , V(F30F00,5A,_,I,I,0,2,T1S), 0 , 108, 0 , 4254 , 258, 133), // #894
969 INST(Vcvtss2sh , VexRvm , E(00MAP5,1D,_,_,_,0,2,T1S), 0 , 158, 0 , 4264 , 259, 134), // #895
970 INST(Vcvtss2si , VexRm_Wx , V(F30F00,2D,_,I,x,x,2,T1F), 0 , 108, 0 , 4274 , 260, 133), // #896
971 INST(Vcvtss2usi , VexRm_Wx , E(F30F00,79,_,I,_,x,2,T1F), 0 , 159, 0 , 4284 , 261, 68 ), // #897
972 INST(Vcvttpd2dq , VexRm_Lx_Narrow , V(660F00,E6,_,x,I,1,4,FV ), 0 , 103, 0 , 4295 , 262, 131), // #898
973 INST(Vcvttpd2qq , VexRm_Lx , E(660F00,7A,_,x,_,1,4,FV ), 0 , 135, 0 , 4306 , 263, 138), // #899
974 INST(Vcvttpd2udq , VexRm_Lx_Narrow , E(000F00,78,_,x,_,1,4,FV ), 0 , 136, 0 , 4317 , 264, 138), // #900
975 INST(Vcvttpd2uqq , VexRm_Lx , E(660F00,78,_,x,_,1,4,FV ), 0 , 135, 0 , 4329 , 263, 140), // #901
976 INST(Vcvttph2dq , VexRm_Lx , E(F3MAP5,5B,_,_,_,0,3,HV ), 0 , 160, 0 , 4341 , 244, 132), // #902
977 INST(Vcvttph2qq , VexRm_Lx , E(66MAP5,7A,_,_,_,0,2,QV ), 0 , 141, 0 , 4352 , 242, 132), // #903
978 INST(Vcvttph2udq , VexRm_Lx , E(00MAP5,78,_,_,_,0,3,HV ), 0 , 142, 0 , 4363 , 244, 132), // #904
979 INST(Vcvttph2uqq , VexRm_Lx , E(66MAP5,78,_,_,_,0,2,QV ), 0 , 141, 0 , 4375 , 242, 132), // #905
980 INST(Vcvttph2uw , VexRm_Lx , E(00MAP5,7C,_,_,_,0,4,FV ), 0 , 104, 0 , 4387 , 265, 132), // #906
981 INST(Vcvttph2w , VexRm_Lx , E(66MAP5,7C,_,_,_,0,4,FV ), 0 , 143, 0 , 4398 , 265, 132), // #907
982 INST(Vcvttps2dq , VexRm_Lx , V(F30F00,5B,_,x,I,0,4,FV ), 0 , 161, 0 , 4408 , 266, 131), // #908
983 INST(Vcvttps2qq , VexRm_Lx , E(660F00,7A,_,x,_,0,3,HV ), 0 , 147, 0 , 4419 , 267, 140), // #909
984 INST(Vcvttps2udq , VexRm_Lx , E(000F00,78,_,x,_,0,4,FV ), 0 , 148, 0 , 4430 , 268, 138), // #910
985 INST(Vcvttps2uqq , VexRm_Lx , E(660F00,78,_,x,_,0,3,HV ), 0 , 147, 0 , 4442 , 267, 140), // #911
986 INST(Vcvttsd2si , VexRm_Wx , V(F20F00,2C,_,I,x,x,3,T1F), 0 , 152, 0 , 4454 , 269, 133), // #912
987 INST(Vcvttsd2usi , VexRm_Wx , E(F20F00,78,_,I,_,x,3,T1F), 0 , 153, 0 , 4465 , 270, 68 ), // #913
988 INST(Vcvttsh2si , VexRm_Wx , E(F3MAP5,2C,_,_,_,x,1,T1S), 0 , 107, 0 , 4477 , 271, 134), // #914
989 INST(Vcvttsh2usi , VexRm_Wx , E(F3MAP5,78,_,_,_,x,1,T1S), 0 , 107, 0 , 4488 , 271, 134), // #915
990 INST(Vcvttss2si , VexRm_Wx , V(F30F00,2C,_,I,x,x,2,T1F), 0 , 108, 0 , 4500 , 272, 133), // #916
991 INST(Vcvttss2usi , VexRm_Wx , E(F30F00,78,_,I,_,x,2,T1F), 0 , 159, 0 , 4511 , 273, 68 ), // #917
992 INST(Vcvtudq2pd , VexRm_Lx , E(F30F00,7A,_,x,_,0,3,HV ), 0 , 162, 0 , 4523 , 274, 138), // #918
993 INST(Vcvtudq2ph , VexRm_Lx , E(F2MAP5,7A,_,_,_,0,4,FV ), 0 , 163, 0 , 4534 , 234, 132), // #919
994 INST(Vcvtudq2ps , VexRm_Lx , E(F20F00,7A,_,x,_,0,4,FV ), 0 , 164, 0 , 4545 , 250, 138), // #920
995 INST(Vcvtuqq2pd , VexRm_Lx , E(F30F00,7A,_,x,_,1,4,FV ), 0 , 149, 0 , 4556 , 239, 140), // #921
996 INST(Vcvtuqq2ph , VexRm_Lx , E(F2MAP5,7A,_,_,_,1,4,FV ), 0 , 165, 0 , 4567 , 238, 132), // #922
997 INST(Vcvtuqq2ps , VexRm_Lx_Narrow , E(F20F00,7A,_,x,_,1,4,FV ), 0 , 166, 0 , 4578 , 240, 140), // #923
998 INST(Vcvtusi2sd , VexRvm_Wx , E(F20F00,7B,_,I,_,x,2,T1W), 0 , 167, 0 , 4589 , 257, 68 ), // #924
999 INST(Vcvtusi2sh , VexRvm_Wx , E(F3MAP5,7B,_,_,_,x,2,T1W), 0 , 156, 0 , 4600 , 257, 134), // #925
1000 INST(Vcvtusi2ss , VexRvm_Wx , E(F30F00,7B,_,I,_,x,2,T1W), 0 , 168, 0 , 4611 , 257, 68 ), // #926
1001 INST(Vcvtuw2ph , VexRm_Lx , E(F2MAP5,7D,_,_,_,0,4,FV ), 0 , 163, 0 , 4622 , 246, 132), // #927
1002 INST(Vcvtw2ph , VexRm_Lx , E(F3MAP5,7D,_,_,_,0,4,FV ), 0 , 169, 0 , 4632 , 246, 132), // #928
1003 INST(Vdbpsadbw , VexRvmi_Lx , E(660F3A,42,_,x,_,0,4,FVM), 0 , 111, 0 , 4641 , 275, 146), // #929
1004 INST(Vdivpd , VexRvm_Lx , V(660F00,5E,_,x,I,1,4,FV ), 0 , 103, 0 , 4651 , 196, 131), // #930
1005 INST(Vdivph , VexRvm_Lx , E(00MAP5,5E,_,_,_,0,4,FV ), 0 , 104, 0 , 4658 , 197, 132), // #931
1006 INST(Vdivps , VexRvm_Lx , V(000F00,5E,_,x,I,0,4,FV ), 0 , 105, 0 , 4665 , 198, 131), // #932
1007 INST(Vdivsd , VexRvm , V(F20F00,5E,_,I,I,1,3,T1S), 0 , 106, 0 , 4672 , 199, 133), // #933
1008 INST(Vdivsh , VexRvm , E(F3MAP5,5E,_,_,_,0,1,T1S), 0 , 107, 0 , 4679 , 200, 134), // #934
1009 INST(Vdivss , VexRvm , V(F30F00,5E,_,I,I,0,2,T1S), 0 , 108, 0 , 4686 , 201, 133), // #935
1010 INST(Vdpbf16ps , VexRvm_Lx , E(F30F38,52,_,_,_,0,4,FV ), 0 , 132, 0 , 4693 , 213, 144), // #936
1011 INST(Vdppd , VexRvmi_Lx , V(660F3A,41,_,x,I,_,_,_ ), 0 , 73 , 0 , 4703 , 276, 135), // #937
1012 INST(Vdpps , VexRvmi_Lx , V(660F3A,40,_,x,I,_,_,_ ), 0 , 73 , 0 , 4709 , 214, 135), // #938
1013 INST(Verr , X86M_NoSize , O(000F00,00,4,_,_,_,_,_ ), 0 , 97 , 0 , 4715 , 107, 10 ), // #939
1014 INST(Verw , X86M_NoSize , O(000F00,00,5,_,_,_,_,_ ), 0 , 77 , 0 , 4720 , 107, 10 ), // #940
1015 INST(Vexp2pd , VexRm , E(660F38,C8,_,2,_,1,4,FV ), 0 , 170, 0 , 4725 , 277, 147), // #941
1016 INST(Vexp2ps , VexRm , E(660F38,C8,_,2,_,0,4,FV ), 0 , 171, 0 , 4733 , 278, 147), // #942
1017 INST(Vexpandpd , VexRm_Lx , E(660F38,88,_,x,_,1,3,T1S), 0 , 128, 0 , 4741 , 279, 138), // #943
1018 INST(Vexpandps , VexRm_Lx , E(660F38,88,_,x,_,0,2,T1S), 0 , 129, 0 , 4751 , 279, 138), // #944
1019 INST(Vextractf128 , VexMri , V(660F3A,19,_,1,0,_,_,_ ), 0 , 172, 0 , 4761 , 280, 135), // #945
1020 INST(Vextractf32x4 , VexMri_Lx , E(660F3A,19,_,x,_,0,4,T4 ), 0 , 173, 0 , 4774 , 281, 138), // #946
1021 INST(Vextractf32x8 , VexMri , E(660F3A,1B,_,2,_,0,5,T8 ), 0 , 174, 0 , 4788 , 282, 66 ), // #947
1022 INST(Vextractf64x2 , VexMri_Lx , E(660F3A,19,_,x,_,1,4,T2 ), 0 , 175, 0 , 4802 , 281, 140), // #948
1023 INST(Vextractf64x4 , VexMri , E(660F3A,1B,_,2,_,1,5,T4 ), 0 , 176, 0 , 4816 , 282, 68 ), // #949
1024 INST(Vextracti128 , VexMri , V(660F3A,39,_,1,0,_,_,_ ), 0 , 172, 0 , 4830 , 280, 141), // #950
1025 INST(Vextracti32x4 , VexMri_Lx , E(660F3A,39,_,x,_,0,4,T4 ), 0 , 173, 0 , 4843 , 281, 138), // #951
1026 INST(Vextracti32x8 , VexMri , E(660F3A,3B,_,2,_,0,5,T8 ), 0 , 174, 0 , 4857 , 282, 66 ), // #952
1027 INST(Vextracti64x2 , VexMri_Lx , E(660F3A,39,_,x,_,1,4,T2 ), 0 , 175, 0 , 4871 , 281, 140), // #953
1028 INST(Vextracti64x4 , VexMri , E(660F3A,3B,_,2,_,1,5,T4 ), 0 , 176, 0 , 4885 , 282, 68 ), // #954
1029 INST(Vextractps , VexMri , V(660F3A,17,_,0,I,I,2,T1S), 0 , 177, 0 , 4899 , 283, 133), // #955
1030 INST(Vfcmaddcph , VexRvm_Lx , E(F2MAP6,56,_,_,_,0,4,FV ), 0 , 178, 0 , 4910 , 284, 132), // #956
1031 INST(Vfcmaddcsh , VexRvm , E(F2MAP6,57,_,_,_,0,2,T1S), 0 , 179, 0 , 4921 , 259, 132), // #957
1032 INST(Vfcmulcph , VexRvm_Lx , E(F2MAP6,D6,_,_,_,0,4,FV ), 0 , 178, 0 , 4932 , 284, 132), // #958
1033 INST(Vfcmulcsh , VexRvm , E(F2MAP6,D7,_,_,_,0,2,T1S), 0 , 179, 0 , 4942 , 259, 132), // #959
1034 INST(Vfixupimmpd , VexRvmi_Lx , E(660F3A,54,_,x,_,1,4,FV ), 0 , 112, 0 , 4952 , 285, 138), // #960
1035 INST(Vfixupimmps , VexRvmi_Lx , E(660F3A,54,_,x,_,0,4,FV ), 0 , 111, 0 , 4964 , 286, 138), // #961
1036 INST(Vfixupimmsd , VexRvmi , E(660F3A,55,_,I,_,1,3,T1S), 0 , 180, 0 , 4976 , 287, 68 ), // #962
1037 INST(Vfixupimmss , VexRvmi , E(660F3A,55,_,I,_,0,2,T1S), 0 , 181, 0 , 4988 , 288, 68 ), // #963
1038 INST(Vfmadd132pd , VexRvm_Lx , V(660F38,98,_,x,1,1,4,FV ), 0 , 182, 0 , 5000 , 196, 148), // #964
1039 INST(Vfmadd132ph , VexRvm_Lx , E(66MAP6,98,_,_,_,0,4,FV ), 0 , 183, 0 , 5012 , 197, 132), // #965
1040 INST(Vfmadd132ps , VexRvm_Lx , V(660F38,98,_,x,0,0,4,FV ), 0 , 110, 0 , 5024 , 198, 148), // #966
1041 INST(Vfmadd132sd , VexRvm , V(660F38,99,_,I,1,1,3,T1S), 0 , 184, 0 , 5036 , 199, 149), // #967
1042 INST(Vfmadd132sh , VexRvm , E(66MAP6,99,_,_,_,0,1,T1S), 0 , 185, 0 , 5048 , 200, 134), // #968
1043 INST(Vfmadd132ss , VexRvm , V(660F38,99,_,I,0,0,2,T1S), 0 , 122, 0 , 5060 , 201, 149), // #969
1044 INST(Vfmadd213pd , VexRvm_Lx , V(660F38,A8,_,x,1,1,4,FV ), 0 , 182, 0 , 5072 , 196, 148), // #970
1045 INST(Vfmadd213ph , VexRvm_Lx , E(66MAP6,A8,_,_,_,0,4,FV ), 0 , 183, 0 , 5084 , 197, 132), // #971
1046 INST(Vfmadd213ps , VexRvm_Lx , V(660F38,A8,_,x,0,0,4,FV ), 0 , 110, 0 , 5096 , 198, 148), // #972
1047 INST(Vfmadd213sd , VexRvm , V(660F38,A9,_,I,1,1,3,T1S), 0 , 184, 0 , 5108 , 199, 149), // #973
1048 INST(Vfmadd213sh , VexRvm , E(66MAP6,A9,_,_,_,0,1,T1S), 0 , 185, 0 , 5120 , 200, 134), // #974
1049 INST(Vfmadd213ss , VexRvm , V(660F38,A9,_,I,0,0,2,T1S), 0 , 122, 0 , 5132 , 201, 149), // #975
1050 INST(Vfmadd231pd , VexRvm_Lx , V(660F38,B8,_,x,1,1,4,FV ), 0 , 182, 0 , 5144 , 196, 148), // #976
1051 INST(Vfmadd231ph , VexRvm_Lx , E(66MAP6,B8,_,_,_,0,4,FV ), 0 , 183, 0 , 5156 , 197, 132), // #977
1052 INST(Vfmadd231ps , VexRvm_Lx , V(660F38,B8,_,x,0,0,4,FV ), 0 , 110, 0 , 5168 , 198, 148), // #978
1053 INST(Vfmadd231sd , VexRvm , V(660F38,B9,_,I,1,1,3,T1S), 0 , 184, 0 , 5180 , 199, 149), // #979
1054 INST(Vfmadd231sh , VexRvm , E(66MAP6,B9,_,_,_,0,1,T1S), 0 , 185, 0 , 5192 , 200, 134), // #980
1055 INST(Vfmadd231ss , VexRvm , V(660F38,B9,_,I,0,0,2,T1S), 0 , 122, 0 , 5204 , 201, 149), // #981
1056 INST(Vfmaddcph , VexRvm_Lx , E(F3MAP6,56,_,_,_,0,4,FV ), 0 , 186, 0 , 5216 , 284, 132), // #982
1057 INST(Vfmaddcsh , VexRvm , E(F3MAP6,57,_,_,_,0,2,T1S), 0 , 187, 0 , 5226 , 259, 132), // #983
1058 INST(Vfmaddpd , Fma4_Lx , V(660F3A,69,_,x,x,_,_,_ ), 0 , 73 , 0 , 5236 , 289, 150), // #984
1059 INST(Vfmaddps , Fma4_Lx , V(660F3A,68,_,x,x,_,_,_ ), 0 , 73 , 0 , 5245 , 289, 150), // #985
1060 INST(Vfmaddsd , Fma4 , V(660F3A,6B,_,0,x,_,_,_ ), 0 , 73 , 0 , 5254 , 290, 150), // #986
1061 INST(Vfmaddss , Fma4 , V(660F3A,6A,_,0,x,_,_,_ ), 0 , 73 , 0 , 5263 , 291, 150), // #987
1062 INST(Vfmaddsub132pd , VexRvm_Lx , V(660F38,96,_,x,1,1,4,FV ), 0 , 182, 0 , 5272 , 196, 148), // #988
1063 INST(Vfmaddsub132ph , VexRvm_Lx , E(66MAP6,96,_,_,_,0,4,FV ), 0 , 183, 0 , 5287 , 197, 132), // #989
1064 INST(Vfmaddsub132ps , VexRvm_Lx , V(660F38,96,_,x,0,0,4,FV ), 0 , 110, 0 , 5302 , 198, 148), // #990
1065 INST(Vfmaddsub213pd , VexRvm_Lx , V(660F38,A6,_,x,1,1,4,FV ), 0 , 182, 0 , 5317 , 196, 148), // #991
1066 INST(Vfmaddsub213ph , VexRvm_Lx , E(66MAP6,A6,_,_,_,0,4,FV ), 0 , 183, 0 , 5332 , 197, 132), // #992
1067 INST(Vfmaddsub213ps , VexRvm_Lx , V(660F38,A6,_,x,0,0,4,FV ), 0 , 110, 0 , 5347 , 198, 148), // #993
1068 INST(Vfmaddsub231pd , VexRvm_Lx , V(660F38,B6,_,x,1,1,4,FV ), 0 , 182, 0 , 5362 , 196, 148), // #994
1069 INST(Vfmaddsub231ph , VexRvm_Lx , E(66MAP6,B6,_,_,_,0,4,FV ), 0 , 183, 0 , 5377 , 197, 132), // #995
1070 INST(Vfmaddsub231ps , VexRvm_Lx , V(660F38,B6,_,x,0,0,4,FV ), 0 , 110, 0 , 5392 , 198, 148), // #996
1071 INST(Vfmaddsubpd , Fma4_Lx , V(660F3A,5D,_,x,x,_,_,_ ), 0 , 73 , 0 , 5407 , 289, 150), // #997
1072 INST(Vfmaddsubps , Fma4_Lx , V(660F3A,5C,_,x,x,_,_,_ ), 0 , 73 , 0 , 5419 , 289, 150), // #998
1073 INST(Vfmsub132pd , VexRvm_Lx , V(660F38,9A,_,x,1,1,4,FV ), 0 , 182, 0 , 5431 , 196, 148), // #999
1074 INST(Vfmsub132ph , VexRvm_Lx , E(66MAP6,9A,_,_,_,0,4,FV ), 0 , 183, 0 , 5443 , 197, 132), // #1000
1075 INST(Vfmsub132ps , VexRvm_Lx , V(660F38,9A,_,x,0,0,4,FV ), 0 , 110, 0 , 5455 , 198, 148), // #1001
1076 INST(Vfmsub132sd , VexRvm , V(660F38,9B,_,I,1,1,3,T1S), 0 , 184, 0 , 5467 , 199, 149), // #1002
1077 INST(Vfmsub132sh , VexRvm , E(66MAP6,9B,_,_,_,0,1,T1S), 0 , 185, 0 , 5479 , 200, 134), // #1003
1078 INST(Vfmsub132ss , VexRvm , V(660F38,9B,_,I,0,0,2,T1S), 0 , 122, 0 , 5491 , 201, 149), // #1004
1079 INST(Vfmsub213pd , VexRvm_Lx , V(660F38,AA,_,x,1,1,4,FV ), 0 , 182, 0 , 5503 , 196, 148), // #1005
1080 INST(Vfmsub213ph , VexRvm_Lx , E(66MAP6,AA,_,_,_,0,4,FV ), 0 , 183, 0 , 5515 , 197, 132), // #1006
1081 INST(Vfmsub213ps , VexRvm_Lx , V(660F38,AA,_,x,0,0,4,FV ), 0 , 110, 0 , 5527 , 198, 148), // #1007
1082 INST(Vfmsub213sd , VexRvm , V(660F38,AB,_,I,1,1,3,T1S), 0 , 184, 0 , 5539 , 199, 149), // #1008
1083 INST(Vfmsub213sh , VexRvm , E(66MAP6,AB,_,_,_,0,1,T1S), 0 , 185, 0 , 5551 , 200, 134), // #1009
1084 INST(Vfmsub213ss , VexRvm , V(660F38,AB,_,I,0,0,2,T1S), 0 , 122, 0 , 5563 , 201, 149), // #1010
1085 INST(Vfmsub231pd , VexRvm_Lx , V(660F38,BA,_,x,1,1,4,FV ), 0 , 182, 0 , 5575 , 196, 148), // #1011
1086 INST(Vfmsub231ph , VexRvm_Lx , E(66MAP6,BA,_,_,_,0,4,FV ), 0 , 183, 0 , 5587 , 197, 132), // #1012
1087 INST(Vfmsub231ps , VexRvm_Lx , V(660F38,BA,_,x,0,0,4,FV ), 0 , 110, 0 , 5599 , 198, 148), // #1013
1088 INST(Vfmsub231sd , VexRvm , V(660F38,BB,_,I,1,1,3,T1S), 0 , 184, 0 , 5611 , 199, 149), // #1014
1089 INST(Vfmsub231sh , VexRvm , E(66MAP6,BB,_,_,_,0,1,T1S), 0 , 185, 0 , 5623 , 200, 134), // #1015
1090 INST(Vfmsub231ss , VexRvm , V(660F38,BB,_,I,0,0,2,T1S), 0 , 122, 0 , 5635 , 201, 149), // #1016
1091 INST(Vfmsubadd132pd , VexRvm_Lx , V(660F38,97,_,x,1,1,4,FV ), 0 , 182, 0 , 5647 , 196, 148), // #1017
1092 INST(Vfmsubadd132ph , VexRvm_Lx , E(66MAP6,97,_,_,_,0,4,FV ), 0 , 183, 0 , 5662 , 197, 132), // #1018
1093 INST(Vfmsubadd132ps , VexRvm_Lx , V(660F38,97,_,x,0,0,4,FV ), 0 , 110, 0 , 5677 , 198, 148), // #1019
1094 INST(Vfmsubadd213pd , VexRvm_Lx , V(660F38,A7,_,x,1,1,4,FV ), 0 , 182, 0 , 5692 , 196, 148), // #1020
1095 INST(Vfmsubadd213ph , VexRvm_Lx , E(66MAP6,A7,_,_,_,0,4,FV ), 0 , 183, 0 , 5707 , 197, 132), // #1021
1096 INST(Vfmsubadd213ps , VexRvm_Lx , V(660F38,A7,_,x,0,0,4,FV ), 0 , 110, 0 , 5722 , 198, 148), // #1022
1097 INST(Vfmsubadd231pd , VexRvm_Lx , V(660F38,B7,_,x,1,1,4,FV ), 0 , 182, 0 , 5737 , 196, 148), // #1023
1098 INST(Vfmsubadd231ph , VexRvm_Lx , E(66MAP6,B7,_,_,_,0,4,FV ), 0 , 183, 0 , 5752 , 197, 132), // #1024
1099 INST(Vfmsubadd231ps , VexRvm_Lx , V(660F38,B7,_,x,0,0,4,FV ), 0 , 110, 0 , 5767 , 198, 148), // #1025
1100 INST(Vfmsubaddpd , Fma4_Lx , V(660F3A,5F,_,x,x,_,_,_ ), 0 , 73 , 0 , 5782 , 289, 150), // #1026
1101 INST(Vfmsubaddps , Fma4_Lx , V(660F3A,5E,_,x,x,_,_,_ ), 0 , 73 , 0 , 5794 , 289, 150), // #1027
1102 INST(Vfmsubpd , Fma4_Lx , V(660F3A,6D,_,x,x,_,_,_ ), 0 , 73 , 0 , 5806 , 289, 150), // #1028
1103 INST(Vfmsubps , Fma4_Lx , V(660F3A,6C,_,x,x,_,_,_ ), 0 , 73 , 0 , 5815 , 289, 150), // #1029
1104 INST(Vfmsubsd , Fma4 , V(660F3A,6F,_,0,x,_,_,_ ), 0 , 73 , 0 , 5824 , 290, 150), // #1030
1105 INST(Vfmsubss , Fma4 , V(660F3A,6E,_,0,x,_,_,_ ), 0 , 73 , 0 , 5833 , 291, 150), // #1031
1106 INST(Vfmulcph , VexRvm_Lx , E(F3MAP6,D6,_,_,_,0,4,FV ), 0 , 186, 0 , 5842 , 284, 132), // #1032
1107 INST(Vfmulcsh , VexRvm , E(F3MAP6,D7,_,_,_,0,2,T1S), 0 , 187, 0 , 5851 , 259, 132), // #1033
1108 INST(Vfnmadd132pd , VexRvm_Lx , V(660F38,9C,_,x,1,1,4,FV ), 0 , 182, 0 , 5860 , 196, 148), // #1034
1109 INST(Vfnmadd132ph , VexRvm_Lx , E(66MAP6,9C,_,_,_,0,4,FV ), 0 , 183, 0 , 5873 , 197, 132), // #1035
1110 INST(Vfnmadd132ps , VexRvm_Lx , V(660F38,9C,_,x,0,0,4,FV ), 0 , 110, 0 , 5886 , 198, 148), // #1036
1111 INST(Vfnmadd132sd , VexRvm , V(660F38,9D,_,I,1,1,3,T1S), 0 , 184, 0 , 5899 , 199, 149), // #1037
1112 INST(Vfnmadd132sh , VexRvm , E(66MAP6,9D,_,_,_,0,1,T1S), 0 , 185, 0 , 5912 , 200, 134), // #1038
1113 INST(Vfnmadd132ss , VexRvm , V(660F38,9D,_,I,0,0,2,T1S), 0 , 122, 0 , 5925 , 201, 149), // #1039
1114 INST(Vfnmadd213pd , VexRvm_Lx , V(660F38,AC,_,x,1,1,4,FV ), 0 , 182, 0 , 5938 , 196, 148), // #1040
1115 INST(Vfnmadd213ph , VexRvm_Lx , E(66MAP6,AC,_,_,_,0,4,FV ), 0 , 183, 0 , 5951 , 197, 132), // #1041
1116 INST(Vfnmadd213ps , VexRvm_Lx , V(660F38,AC,_,x,0,0,4,FV ), 0 , 110, 0 , 5964 , 198, 148), // #1042
1117 INST(Vfnmadd213sd , VexRvm , V(660F38,AD,_,I,1,1,3,T1S), 0 , 184, 0 , 5977 , 199, 149), // #1043
1118 INST(Vfnmadd213sh , VexRvm , E(66MAP6,AD,_,_,_,0,1,T1S), 0 , 185, 0 , 5990 , 200, 134), // #1044
1119 INST(Vfnmadd213ss , VexRvm , V(660F38,AD,_,I,0,0,2,T1S), 0 , 122, 0 , 6003 , 201, 149), // #1045
1120 INST(Vfnmadd231pd , VexRvm_Lx , V(660F38,BC,_,x,1,1,4,FV ), 0 , 182, 0 , 6016 , 196, 148), // #1046
1121 INST(Vfnmadd231ph , VexRvm_Lx , E(66MAP6,BC,_,_,_,0,4,FV ), 0 , 183, 0 , 6029 , 197, 132), // #1047
1122 INST(Vfnmadd231ps , VexRvm_Lx , V(660F38,BC,_,x,0,0,4,FV ), 0 , 110, 0 , 6042 , 198, 148), // #1048
1123 INST(Vfnmadd231sd , VexRvm , V(660F38,BD,_,I,1,1,3,T1S), 0 , 184, 0 , 6055 , 199, 149), // #1049
1124 INST(Vfnmadd231sh , VexRvm , E(66MAP6,BD,_,_,_,0,1,T1S), 0 , 185, 0 , 6068 , 200, 134), // #1050
1125 INST(Vfnmadd231ss , VexRvm , V(660F38,BD,_,I,0,0,2,T1S), 0 , 122, 0 , 6081 , 201, 149), // #1051
1126 INST(Vfnmaddpd , Fma4_Lx , V(660F3A,79,_,x,x,_,_,_ ), 0 , 73 , 0 , 6094 , 289, 150), // #1052
1127 INST(Vfnmaddps , Fma4_Lx , V(660F3A,78,_,x,x,_,_,_ ), 0 , 73 , 0 , 6104 , 289, 150), // #1053
1128 INST(Vfnmaddsd , Fma4 , V(660F3A,7B,_,0,x,_,_,_ ), 0 , 73 , 0 , 6114 , 290, 150), // #1054
1129 INST(Vfnmaddss , Fma4 , V(660F3A,7A,_,0,x,_,_,_ ), 0 , 73 , 0 , 6124 , 291, 150), // #1055
1130 INST(Vfnmsub132pd , VexRvm_Lx , V(660F38,9E,_,x,1,1,4,FV ), 0 , 182, 0 , 6134 , 196, 148), // #1056
1131 INST(Vfnmsub132ph , VexRvm_Lx , E(66MAP6,9E,_,_,_,0,4,FV ), 0 , 183, 0 , 6147 , 197, 132), // #1057
1132 INST(Vfnmsub132ps , VexRvm_Lx , V(660F38,9E,_,x,0,0,4,FV ), 0 , 110, 0 , 6160 , 198, 148), // #1058
1133 INST(Vfnmsub132sd , VexRvm , V(660F38,9F,_,I,1,1,3,T1S), 0 , 184, 0 , 6173 , 199, 149), // #1059
1134 INST(Vfnmsub132sh , VexRvm , E(66MAP6,9F,_,_,_,0,1,T1S), 0 , 185, 0 , 6186 , 200, 134), // #1060
1135 INST(Vfnmsub132ss , VexRvm , V(660F38,9F,_,I,0,0,2,T1S), 0 , 122, 0 , 6199 , 201, 149), // #1061
1136 INST(Vfnmsub213pd , VexRvm_Lx , V(660F38,AE,_,x,1,1,4,FV ), 0 , 182, 0 , 6212 , 196, 148), // #1062
1137 INST(Vfnmsub213ph , VexRvm_Lx , E(66MAP6,AE,_,_,_,0,4,FV ), 0 , 183, 0 , 6225 , 197, 132), // #1063
1138 INST(Vfnmsub213ps , VexRvm_Lx , V(660F38,AE,_,x,0,0,4,FV ), 0 , 110, 0 , 6238 , 198, 148), // #1064
1139 INST(Vfnmsub213sd , VexRvm , V(660F38,AF,_,I,1,1,3,T1S), 0 , 184, 0 , 6251 , 199, 149), // #1065
1140 INST(Vfnmsub213sh , VexRvm , E(66MAP6,AF,_,_,_,0,1,T1S), 0 , 185, 0 , 6264 , 200, 134), // #1066
1141 INST(Vfnmsub213ss , VexRvm , V(660F38,AF,_,I,0,0,2,T1S), 0 , 122, 0 , 6277 , 201, 149), // #1067
1142 INST(Vfnmsub231pd , VexRvm_Lx , V(660F38,BE,_,x,1,1,4,FV ), 0 , 182, 0 , 6290 , 196, 148), // #1068
1143 INST(Vfnmsub231ph , VexRvm_Lx , E(66MAP6,BE,_,_,_,0,4,FV ), 0 , 183, 0 , 6303 , 197, 132), // #1069
1144 INST(Vfnmsub231ps , VexRvm_Lx , V(660F38,BE,_,x,0,0,4,FV ), 0 , 110, 0 , 6316 , 198, 148), // #1070
1145 INST(Vfnmsub231sd , VexRvm , V(660F38,BF,_,I,1,1,3,T1S), 0 , 184, 0 , 6329 , 199, 149), // #1071
1146 INST(Vfnmsub231sh , VexRvm , E(66MAP6,BF,_,_,_,0,1,T1S), 0 , 185, 0 , 6342 , 200, 134), // #1072
1147 INST(Vfnmsub231ss , VexRvm , V(660F38,BF,_,I,0,0,2,T1S), 0 , 122, 0 , 6355 , 201, 149), // #1073
1148 INST(Vfnmsubpd , Fma4_Lx , V(660F3A,7D,_,x,x,_,_,_ ), 0 , 73 , 0 , 6368 , 289, 150), // #1074
1149 INST(Vfnmsubps , Fma4_Lx , V(660F3A,7C,_,x,x,_,_,_ ), 0 , 73 , 0 , 6378 , 289, 150), // #1075
1150 INST(Vfnmsubsd , Fma4 , V(660F3A,7F,_,0,x,_,_,_ ), 0 , 73 , 0 , 6388 , 290, 150), // #1076
1151 INST(Vfnmsubss , Fma4 , V(660F3A,7E,_,0,x,_,_,_ ), 0 , 73 , 0 , 6398 , 291, 150), // #1077
1152 INST(Vfpclasspd , VexRmi_Lx , E(660F3A,66,_,x,_,1,4,FV ), 0 , 112, 0 , 6408 , 292, 140), // #1078
1153 INST(Vfpclassph , VexRmi_Lx , E(000F3A,66,_,_,_,0,4,FV ), 0 , 123, 0 , 6419 , 293, 132), // #1079
1154 INST(Vfpclassps , VexRmi_Lx , E(660F3A,66,_,x,_,0,4,FV ), 0 , 111, 0 , 6430 , 294, 140), // #1080
1155 INST(Vfpclasssd , VexRmi , E(660F3A,67,_,I,_,1,3,T1S), 0 , 180, 0 , 6441 , 295, 66 ), // #1081
1156 INST(Vfpclasssh , VexRmi , E(000F3A,67,_,_,_,0,1,T1S), 0 , 188, 0 , 6452 , 296, 134), // #1082
1157 INST(Vfpclassss , VexRmi , E(660F3A,67,_,I,_,0,2,T1S), 0 , 181, 0 , 6463 , 297, 66 ), // #1083
1158 INST(Vfrczpd , VexRm_Lx , V(XOP_M9,81,_,x,0,_,_,_ ), 0 , 79 , 0 , 6474 , 298, 151), // #1084
1159 INST(Vfrczps , VexRm_Lx , V(XOP_M9,80,_,x,0,_,_,_ ), 0 , 79 , 0 , 6482 , 298, 151), // #1085
1160 INST(Vfrczsd , VexRm , V(XOP_M9,83,_,0,0,_,_,_ ), 0 , 79 , 0 , 6490 , 299, 151), // #1086
1161 INST(Vfrczss , VexRm , V(XOP_M9,82,_,0,0,_,_,_ ), 0 , 79 , 0 , 6498 , 300, 151), // #1087
1162 INST(Vgatherdpd , VexRmvRm_VM , V(660F38,92,_,x,1,_,_,_ ), E(660F38,92,_,x,_,1,3,T1S), 189, 80 , 6506 , 301, 152), // #1088
1163 INST(Vgatherdps , VexRmvRm_VM , V(660F38,92,_,x,0,_,_,_ ), E(660F38,92,_,x,_,0,2,T1S), 96 , 81 , 6517 , 302, 152), // #1089
1164 INST(Vgatherpf0dpd , VexM_VM , E(660F38,C6,1,2,_,1,3,T1S), 0 , 190, 0 , 6528 , 303, 153), // #1090
1165 INST(Vgatherpf0dps , VexM_VM , E(660F38,C6,1,2,_,0,2,T1S), 0 , 191, 0 , 6542 , 304, 153), // #1091
1166 INST(Vgatherpf0qpd , VexM_VM , E(660F38,C7,1,2,_,1,3,T1S), 0 , 190, 0 , 6556 , 305, 153), // #1092
1167 INST(Vgatherpf0qps , VexM_VM , E(660F38,C7,1,2,_,0,2,T1S), 0 , 191, 0 , 6570 , 305, 153), // #1093
1168 INST(Vgatherpf1dpd , VexM_VM , E(660F38,C6,2,2,_,1,3,T1S), 0 , 192, 0 , 6584 , 303, 153), // #1094
1169 INST(Vgatherpf1dps , VexM_VM , E(660F38,C6,2,2,_,0,2,T1S), 0 , 193, 0 , 6598 , 304, 153), // #1095
1170 INST(Vgatherpf1qpd , VexM_VM , E(660F38,C7,2,2,_,1,3,T1S), 0 , 192, 0 , 6612 , 305, 153), // #1096
1171 INST(Vgatherpf1qps , VexM_VM , E(660F38,C7,2,2,_,0,2,T1S), 0 , 193, 0 , 6626 , 305, 153), // #1097
1172 INST(Vgatherqpd , VexRmvRm_VM , V(660F38,93,_,x,1,_,_,_ ), E(660F38,93,_,x,_,1,3,T1S), 189, 82 , 6640 , 306, 152), // #1098
1173 INST(Vgatherqps , VexRmvRm_VM , V(660F38,93,_,x,0,_,_,_ ), E(660F38,93,_,x,_,0,2,T1S), 96 , 83 , 6651 , 307, 152), // #1099
1174 INST(Vgetexppd , VexRm_Lx , E(660F38,42,_,x,_,1,4,FV ), 0 , 113, 0 , 6662 , 263, 138), // #1100
1175 INST(Vgetexpph , VexRm_Lx , E(66MAP6,42,_,_,_,0,4,FV ), 0 , 183, 0 , 6672 , 265, 132), // #1101
1176 INST(Vgetexpps , VexRm_Lx , E(660F38,42,_,x,_,0,4,FV ), 0 , 114, 0 , 6682 , 268, 138), // #1102
1177 INST(Vgetexpsd , VexRvm , E(660F38,43,_,I,_,1,3,T1S), 0 , 128, 0 , 6692 , 308, 68 ), // #1103
1178 INST(Vgetexpsh , VexRvm , E(66MAP6,43,_,_,_,0,1,T1S), 0 , 185, 0 , 6702 , 254, 134), // #1104
1179 INST(Vgetexpss , VexRvm , E(660F38,43,_,I,_,0,2,T1S), 0 , 129, 0 , 6712 , 309, 68 ), // #1105
1180 INST(Vgetmantpd , VexRmi_Lx , E(660F3A,26,_,x,_,1,4,FV ), 0 , 112, 0 , 6722 , 310, 138), // #1106
1181 INST(Vgetmantph , VexRmi_Lx , E(000F3A,26,_,_,_,0,4,FV ), 0 , 123, 0 , 6733 , 311, 132), // #1107
1182 INST(Vgetmantps , VexRmi_Lx , E(660F3A,26,_,x,_,0,4,FV ), 0 , 111, 0 , 6744 , 312, 138), // #1108
1183 INST(Vgetmantsd , VexRvmi , E(660F3A,27,_,I,_,1,3,T1S), 0 , 180, 0 , 6755 , 287, 68 ), // #1109
1184 INST(Vgetmantsh , VexRvmi , E(000F3A,27,_,_,_,0,1,T1S), 0 , 188, 0 , 6766 , 313, 134), // #1110
1185 INST(Vgetmantss , VexRvmi , E(660F3A,27,_,I,_,0,2,T1S), 0 , 181, 0 , 6777 , 288, 68 ), // #1111
1186 INST(Vgf2p8affineinvqb, VexRvmi_Lx , V(660F3A,CF,_,x,1,1,4,FV ), 0 , 194, 0 , 6788 , 314, 154), // #1112
1187 INST(Vgf2p8affineqb , VexRvmi_Lx , V(660F3A,CE,_,x,1,1,4,FV ), 0 , 194, 0 , 6806 , 314, 154), // #1113
1188 INST(Vgf2p8mulb , VexRvm_Lx , V(660F38,CF,_,x,0,0,4,FV ), 0 , 110, 0 , 6821 , 315, 154), // #1114
1189 INST(Vhaddpd , VexRvm_Lx , V(660F00,7C,_,x,I,_,_,_ ), 0 , 69 , 0 , 6832 , 202, 135), // #1115
1190 INST(Vhaddps , VexRvm_Lx , V(F20F00,7C,_,x,I,_,_,_ ), 0 , 109, 0 , 6840 , 202, 135), // #1116
1191 INST(Vhsubpd , VexRvm_Lx , V(660F00,7D,_,x,I,_,_,_ ), 0 , 69 , 0 , 6848 , 202, 135), // #1117
1192 INST(Vhsubps , VexRvm_Lx , V(F20F00,7D,_,x,I,_,_,_ ), 0 , 109, 0 , 6856 , 202, 135), // #1118
1193 INST(Vinsertf128 , VexRvmi , V(660F3A,18,_,1,0,_,_,_ ), 0 , 172, 0 , 6864 , 316, 135), // #1119
1194 INST(Vinsertf32x4 , VexRvmi_Lx , E(660F3A,18,_,x,_,0,4,T4 ), 0 , 173, 0 , 6876 , 317, 138), // #1120
1195 INST(Vinsertf32x8 , VexRvmi , E(660F3A,1A,_,2,_,0,5,T8 ), 0 , 174, 0 , 6889 , 318, 66 ), // #1121
1196 INST(Vinsertf64x2 , VexRvmi_Lx , E(660F3A,18,_,x,_,1,4,T2 ), 0 , 175, 0 , 6902 , 317, 140), // #1122
1197 INST(Vinsertf64x4 , VexRvmi , E(660F3A,1A,_,2,_,1,5,T4 ), 0 , 176, 0 , 6915 , 318, 68 ), // #1123
1198 INST(Vinserti128 , VexRvmi , V(660F3A,38,_,1,0,_,_,_ ), 0 , 172, 0 , 6928 , 316, 141), // #1124
1199 INST(Vinserti32x4 , VexRvmi_Lx , E(660F3A,38,_,x,_,0,4,T4 ), 0 , 173, 0 , 6940 , 317, 138), // #1125
1200 INST(Vinserti32x8 , VexRvmi , E(660F3A,3A,_,2,_,0,5,T8 ), 0 , 174, 0 , 6953 , 318, 66 ), // #1126
1201 INST(Vinserti64x2 , VexRvmi_Lx , E(660F3A,38,_,x,_,1,4,T2 ), 0 , 175, 0 , 6966 , 317, 140), // #1127
1202 INST(Vinserti64x4 , VexRvmi , E(660F3A,3A,_,2,_,1,5,T4 ), 0 , 176, 0 , 6979 , 318, 68 ), // #1128
1203 INST(Vinsertps , VexRvmi , V(660F3A,21,_,0,I,0,2,T1S), 0 , 177, 0 , 6992 , 319, 133), // #1129
1204 INST(Vlddqu , VexRm_Lx , V(F20F00,F0,_,x,I,_,_,_ ), 0 , 109, 0 , 7002 , 320, 135), // #1130
1205 INST(Vldmxcsr , VexM , V(000F00,AE,2,0,I,_,_,_ ), 0 , 195, 0 , 7009 , 321, 135), // #1131
1206 INST(Vmaskmovdqu , VexRm_ZDI , V(660F00,F7,_,0,I,_,_,_ ), 0 , 69 , 0 , 7018 , 322, 135), // #1132
1207 INST(Vmaskmovpd , VexRvmMvr_Lx , V(660F38,2D,_,x,0,_,_,_ ), V(660F38,2F,_,x,0,_,_,_ ), 96 , 84 , 7030 , 323, 135), // #1133
1208 INST(Vmaskmovps , VexRvmMvr_Lx , V(660F38,2C,_,x,0,_,_,_ ), V(660F38,2E,_,x,0,_,_,_ ), 96 , 85 , 7041 , 323, 135), // #1134
1209 INST(Vmaxpd , VexRvm_Lx , V(660F00,5F,_,x,I,1,4,FV ), 0 , 103, 0 , 7052 , 324, 131), // #1135
1210 INST(Vmaxph , VexRvm_Lx , E(00MAP5,5F,_,_,_,0,4,FV ), 0 , 104, 0 , 7059 , 325, 132), // #1136
1211 INST(Vmaxps , VexRvm_Lx , V(000F00,5F,_,x,I,0,4,FV ), 0 , 105, 0 , 7066 , 326, 131), // #1137
1212 INST(Vmaxsd , VexRvm , V(F20F00,5F,_,I,I,1,3,T1S), 0 , 106, 0 , 7073 , 327, 131), // #1138
1213 INST(Vmaxsh , VexRvm , E(F3MAP5,5F,_,_,_,0,1,T1S), 0 , 107, 0 , 7080 , 254, 134), // #1139
1214 INST(Vmaxss , VexRvm , V(F30F00,5F,_,I,I,0,2,T1S), 0 , 108, 0 , 7087 , 258, 131), // #1140
1215 INST(Vmcall , X86Op , O(000F01,C1,_,_,_,_,_,_ ), 0 , 21 , 0 , 7094 , 30 , 58 ), // #1141
1216 INST(Vmclear , X86M_Only , O(660F00,C7,6,_,_,_,_,_ ), 0 , 26 , 0 , 7101 , 32 , 58 ), // #1142
1217 INST(Vmfunc , X86Op , O(000F01,D4,_,_,_,_,_,_ ), 0 , 21 , 0 , 7109 , 30 , 58 ), // #1143
1218 INST(Vminpd , VexRvm_Lx , V(660F00,5D,_,x,I,1,4,FV ), 0 , 103, 0 , 7116 , 324, 131), // #1144
1219 INST(Vminph , VexRvm_Lx , E(00MAP5,5D,_,_,_,0,4,FV ), 0 , 104, 0 , 7123 , 325, 132), // #1145
1220 INST(Vminps , VexRvm_Lx , V(000F00,5D,_,x,I,0,4,FV ), 0 , 105, 0 , 7130 , 326, 131), // #1146
1221 INST(Vminsd , VexRvm , V(F20F00,5D,_,I,I,1,3,T1S), 0 , 106, 0 , 7137 , 327, 131), // #1147
1222 INST(Vminsh , VexRvm , E(F3MAP5,5D,_,_,_,0,1,T1S), 0 , 107, 0 , 7144 , 254, 134), // #1148
1223 INST(Vminss , VexRvm , V(F30F00,5D,_,I,I,0,2,T1S), 0 , 108, 0 , 7151 , 258, 131), // #1149
1224 INST(Vmlaunch , X86Op , O(000F01,C2,_,_,_,_,_,_ ), 0 , 21 , 0 , 7158 , 30 , 58 ), // #1150
1225 INST(Vmload , X86Op_xAX , O(000F01,DA,_,_,_,_,_,_ ), 0 , 21 , 0 , 7167 , 328, 22 ), // #1151
1226 INST(Vmmcall , X86Op , O(000F01,D9,_,_,_,_,_,_ ), 0 , 21 , 0 , 7174 , 30 , 22 ), // #1152
1227 INST(Vmovapd , VexRmMr_Lx , V(660F00,28,_,x,I,1,4,FVM), V(660F00,29,_,x,I,1,4,FVM), 103, 86 , 7182 , 329, 155), // #1153
1228 INST(Vmovaps , VexRmMr_Lx , V(000F00,28,_,x,I,0,4,FVM), V(000F00,29,_,x,I,0,4,FVM), 105, 87 , 7190 , 329, 155), // #1154
1229 INST(Vmovd , VexMovdMovq , V(660F00,6E,_,0,0,0,2,T1S), V(660F00,7E,_,0,0,0,2,T1S), 196, 88 , 7198 , 330, 133), // #1155
1230 INST(Vmovddup , VexRm_Lx , V(F20F00,12,_,x,I,1,3,DUP), 0 , 197, 0 , 7204 , 331, 131), // #1156
1231 INST(Vmovdqa , VexRmMr_Lx , V(660F00,6F,_,x,I,_,_,_ ), V(660F00,7F,_,x,I,_,_,_ ), 69 , 89 , 7213 , 332, 156), // #1157
1232 INST(Vmovdqa32 , VexRmMr_Lx , E(660F00,6F,_,x,_,0,4,FVM), E(660F00,7F,_,x,_,0,4,FVM), 198, 90 , 7221 , 333, 157), // #1158
1233 INST(Vmovdqa64 , VexRmMr_Lx , E(660F00,6F,_,x,_,1,4,FVM), E(660F00,7F,_,x,_,1,4,FVM), 135, 91 , 7231 , 333, 157), // #1159
1234 INST(Vmovdqu , VexRmMr_Lx , V(F30F00,6F,_,x,I,_,_,_ ), V(F30F00,7F,_,x,I,_,_,_ ), 199, 92 , 7241 , 332, 156), // #1160
1235 INST(Vmovdqu16 , VexRmMr_Lx , E(F20F00,6F,_,x,_,1,4,FVM), E(F20F00,7F,_,x,_,1,4,FVM), 166, 93 , 7249 , 333, 158), // #1161
1236 INST(Vmovdqu32 , VexRmMr_Lx , E(F30F00,6F,_,x,_,0,4,FVM), E(F30F00,7F,_,x,_,0,4,FVM), 200, 94 , 7259 , 333, 157), // #1162
1237 INST(Vmovdqu64 , VexRmMr_Lx , E(F30F00,6F,_,x,_,1,4,FVM), E(F30F00,7F,_,x,_,1,4,FVM), 149, 95 , 7269 , 333, 157), // #1163
1238 INST(Vmovdqu8 , VexRmMr_Lx , E(F20F00,6F,_,x,_,0,4,FVM), E(F20F00,7F,_,x,_,0,4,FVM), 164, 96 , 7279 , 333, 158), // #1164
1239 INST(Vmovhlps , VexRvm , V(000F00,12,_,0,I,0,_,_ ), 0 , 72 , 0 , 7288 , 334, 133), // #1165
1240 INST(Vmovhpd , VexRvmMr , V(660F00,16,_,0,I,1,3,T1S), V(660F00,17,_,0,I,1,3,T1S), 125, 97 , 7297 , 335, 133), // #1166
1241 INST(Vmovhps , VexRvmMr , V(000F00,16,_,0,I,0,3,T2 ), V(000F00,17,_,0,I,0,3,T2 ), 201, 98 , 7305 , 335, 133), // #1167
1242 INST(Vmovlhps , VexRvm , V(000F00,16,_,0,I,0,_,_ ), 0 , 72 , 0 , 7313 , 334, 133), // #1168
1243 INST(Vmovlpd , VexRvmMr , V(660F00,12,_,0,I,1,3,T1S), V(660F00,13,_,0,I,1,3,T1S), 125, 99 , 7322 , 335, 133), // #1169
1244 INST(Vmovlps , VexRvmMr , V(000F00,12,_,0,I,0,3,T2 ), V(000F00,13,_,0,I,0,3,T2 ), 201, 100, 7330 , 335, 133), // #1170
1245 INST(Vmovmskpd , VexRm_Lx , V(660F00,50,_,x,I,_,_,_ ), 0 , 69 , 0 , 7338 , 336, 135), // #1171
1246 INST(Vmovmskps , VexRm_Lx , V(000F00,50,_,x,I,_,_,_ ), 0 , 72 , 0 , 7348 , 336, 135), // #1172
1247 INST(Vmovntdq , VexMr_Lx , V(660F00,E7,_,x,I,0,4,FVM), 0 , 144, 0 , 7358 , 337, 131), // #1173
1248 INST(Vmovntdqa , VexRm_Lx , V(660F38,2A,_,x,I,0,4,FVM), 0 , 110, 0 , 7367 , 338, 142), // #1174
1249 INST(Vmovntpd , VexMr_Lx , V(660F00,2B,_,x,I,1,4,FVM), 0 , 103, 0 , 7377 , 337, 131), // #1175
1250 INST(Vmovntps , VexMr_Lx , V(000F00,2B,_,x,I,0,4,FVM), 0 , 105, 0 , 7386 , 337, 131), // #1176
1251 INST(Vmovq , VexMovdMovq , V(660F00,6E,_,0,I,1,3,T1S), V(660F00,7E,_,0,I,1,3,T1S), 125, 101, 7395 , 339, 159), // #1177
1252 INST(Vmovsd , VexMovssMovsd , V(F20F00,10,_,I,I,1,3,T1S), V(F20F00,11,_,I,I,1,3,T1S), 106, 102, 7401 , 340, 159), // #1178
1253 INST(Vmovsh , VexMovssMovsd , E(F3MAP5,10,_,I,_,0,1,T1S), E(F3MAP5,11,_,I,_,0,1,T1S), 107, 103, 7408 , 341, 134), // #1179
1254 INST(Vmovshdup , VexRm_Lx , V(F30F00,16,_,x,I,0,4,FVM), 0 , 161, 0 , 7415 , 342, 131), // #1180
1255 INST(Vmovsldup , VexRm_Lx , V(F30F00,12,_,x,I,0,4,FVM), 0 , 161, 0 , 7425 , 342, 131), // #1181
1256 INST(Vmovss , VexMovssMovsd , V(F30F00,10,_,I,I,0,2,T1S), V(F30F00,11,_,I,I,0,2,T1S), 108, 104, 7435 , 343, 159), // #1182
1257 INST(Vmovupd , VexRmMr_Lx , V(660F00,10,_,x,I,1,4,FVM), V(660F00,11,_,x,I,1,4,FVM), 103, 105, 7442 , 329, 155), // #1183
1258 INST(Vmovups , VexRmMr_Lx , V(000F00,10,_,x,I,0,4,FVM), V(000F00,11,_,x,I,0,4,FVM), 105, 106, 7450 , 329, 155), // #1184
1259 INST(Vmovw , VexMovdMovq , E(66MAP5,6E,_,0,_,I,1,T1S), E(66MAP5,7E,_,0,_,I,1,T1S), 202, 107, 7458 , 344, 134), // #1185
1260 INST(Vmpsadbw , VexRvmi_Lx , V(660F3A,42,_,x,I,_,_,_ ), 0 , 73 , 0 , 7464 , 214, 160), // #1186
1261 INST(Vmptrld , X86M_Only , O(000F00,C7,6,_,_,_,_,_ ), 0 , 80 , 0 , 7473 , 32 , 58 ), // #1187
1262 INST(Vmptrst , X86M_Only , O(000F00,C7,7,_,_,_,_,_ ), 0 , 22 , 0 , 7481 , 32 , 58 ), // #1188
1263 INST(Vmread , X86Mr_NoSize , O(000F00,78,_,_,_,_,_,_ ), 0 , 4 , 0 , 7489 , 345, 58 ), // #1189
1264 INST(Vmresume , X86Op , O(000F01,C3,_,_,_,_,_,_ ), 0 , 21 , 0 , 7496 , 30 , 58 ), // #1190
1265 INST(Vmrun , X86Op_xAX , O(000F01,D8,_,_,_,_,_,_ ), 0 , 21 , 0 , 7505 , 328, 22 ), // #1191
1266 INST(Vmsave , X86Op_xAX , O(000F01,DB,_,_,_,_,_,_ ), 0 , 21 , 0 , 7511 , 328, 22 ), // #1192
1267 INST(Vmulpd , VexRvm_Lx , V(660F00,59,_,x,I,1,4,FV ), 0 , 103, 0 , 7518 , 196, 131), // #1193
1268 INST(Vmulph , VexRvm_Lx , E(00MAP5,59,_,_,_,0,4,FV ), 0 , 104, 0 , 7525 , 197, 132), // #1194
1269 INST(Vmulps , VexRvm_Lx , V(000F00,59,_,x,I,0,4,FV ), 0 , 105, 0 , 7532 , 198, 131), // #1195
1270 INST(Vmulsd , VexRvm , V(F20F00,59,_,I,I,1,3,T1S), 0 , 106, 0 , 7539 , 199, 133), // #1196
1271 INST(Vmulsh , VexRvm , E(F3MAP5,59,_,_,_,0,1,T1S), 0 , 107, 0 , 7546 , 200, 134), // #1197
1272 INST(Vmulss , VexRvm , V(F30F00,59,_,I,I,0,2,T1S), 0 , 108, 0 , 7553 , 201, 133), // #1198
1273 INST(Vmwrite , X86Rm_NoSize , O(000F00,79,_,_,_,_,_,_ ), 0 , 4 , 0 , 7560 , 346, 58 ), // #1199
1274 INST(Vmxon , X86M_Only , O(F30F00,C7,6,_,_,_,_,_ ), 0 , 24 , 0 , 7568 , 32 , 58 ), // #1200
1275 INST(Vorpd , VexRvm_Lx , V(660F00,56,_,x,I,1,4,FV ), 0 , 103, 0 , 7574 , 210, 139), // #1201
1276 INST(Vorps , VexRvm_Lx , V(000F00,56,_,x,I,0,4,FV ), 0 , 105, 0 , 7580 , 211, 139), // #1202
1277 INST(Vp2intersectd , VexRvm_Lx_2xK , E(F20F38,68,_,_,_,0,4,FV ), 0 , 131, 0 , 7586 , 347, 161), // #1203
1278 INST(Vp2intersectq , VexRvm_Lx_2xK , E(F20F38,68,_,_,_,1,4,FV ), 0 , 203, 0 , 7600 , 348, 161), // #1204
1279 INST(Vp4dpwssd , VexRm_T1_4X , E(F20F38,52,_,2,_,0,4,T4X), 0 , 101, 0 , 7614 , 194, 162), // #1205
1280 INST(Vp4dpwssds , VexRm_T1_4X , E(F20F38,53,_,2,_,0,4,T4X), 0 , 101, 0 , 7624 , 194, 162), // #1206
1281 INST(Vpabsb , VexRm_Lx , V(660F38,1C,_,x,I,_,4,FVM), 0 , 110, 0 , 7635 , 342, 163), // #1207
1282 INST(Vpabsd , VexRm_Lx , V(660F38,1E,_,x,I,0,4,FV ), 0 , 110, 0 , 7642 , 349, 142), // #1208
1283 INST(Vpabsq , VexRm_Lx , E(660F38,1F,_,x,_,1,4,FV ), 0 , 113, 0 , 7649 , 350, 138), // #1209
1284 INST(Vpabsw , VexRm_Lx , V(660F38,1D,_,x,I,_,4,FVM), 0 , 110, 0 , 7656 , 342, 163), // #1210
1285 INST(Vpackssdw , VexRvm_Lx , V(660F00,6B,_,x,I,0,4,FV ), 0 , 144, 0 , 7663 , 209, 163), // #1211
1286 INST(Vpacksswb , VexRvm_Lx , V(660F00,63,_,x,I,I,4,FVM), 0 , 144, 0 , 7673 , 315, 163), // #1212
1287 INST(Vpackusdw , VexRvm_Lx , V(660F38,2B,_,x,I,0,4,FV ), 0 , 110, 0 , 7683 , 209, 163), // #1213
1288 INST(Vpackuswb , VexRvm_Lx , V(660F00,67,_,x,I,I,4,FVM), 0 , 144, 0 , 7693 , 315, 163), // #1214
1289 INST(Vpaddb , VexRvm_Lx , V(660F00,FC,_,x,I,I,4,FVM), 0 , 144, 0 , 7703 , 315, 163), // #1215
1290 INST(Vpaddd , VexRvm_Lx , V(660F00,FE,_,x,I,0,4,FV ), 0 , 144, 0 , 7710 , 209, 142), // #1216
1291 INST(Vpaddq , VexRvm_Lx , V(660F00,D4,_,x,I,1,4,FV ), 0 , 103, 0 , 7717 , 208, 142), // #1217
1292 INST(Vpaddsb , VexRvm_Lx , V(660F00,EC,_,x,I,I,4,FVM), 0 , 144, 0 , 7724 , 315, 163), // #1218
1293 INST(Vpaddsw , VexRvm_Lx , V(660F00,ED,_,x,I,I,4,FVM), 0 , 144, 0 , 7732 , 315, 163), // #1219
1294 INST(Vpaddusb , VexRvm_Lx , V(660F00,DC,_,x,I,I,4,FVM), 0 , 144, 0 , 7740 , 315, 163), // #1220
1295 INST(Vpaddusw , VexRvm_Lx , V(660F00,DD,_,x,I,I,4,FVM), 0 , 144, 0 , 7749 , 315, 163), // #1221
1296 INST(Vpaddw , VexRvm_Lx , V(660F00,FD,_,x,I,I,4,FVM), 0 , 144, 0 , 7758 , 315, 163), // #1222
1297 INST(Vpalignr , VexRvmi_Lx , V(660F3A,0F,_,x,I,I,4,FVM), 0 , 204, 0 , 7765 , 314, 163), // #1223
1298 INST(Vpand , VexRvm_Lx , V(660F00,DB,_,x,I,_,_,_ ), 0 , 69 , 0 , 7774 , 351, 160), // #1224
1299 INST(Vpandd , VexRvm_Lx , E(660F00,DB,_,x,_,0,4,FV ), 0 , 198, 0 , 7780 , 352, 138), // #1225
1300 INST(Vpandn , VexRvm_Lx , V(660F00,DF,_,x,I,_,_,_ ), 0 , 69 , 0 , 7787 , 353, 160), // #1226
1301 INST(Vpandnd , VexRvm_Lx , E(660F00,DF,_,x,_,0,4,FV ), 0 , 198, 0 , 7794 , 354, 138), // #1227
1302 INST(Vpandnq , VexRvm_Lx , E(660F00,DF,_,x,_,1,4,FV ), 0 , 135, 0 , 7802 , 355, 138), // #1228
1303 INST(Vpandq , VexRvm_Lx , E(660F00,DB,_,x,_,1,4,FV ), 0 , 135, 0 , 7810 , 356, 138), // #1229
1304 INST(Vpavgb , VexRvm_Lx , V(660F00,E0,_,x,I,I,4,FVM), 0 , 144, 0 , 7817 , 315, 163), // #1230
1305 INST(Vpavgw , VexRvm_Lx , V(660F00,E3,_,x,I,I,4,FVM), 0 , 144, 0 , 7824 , 315, 163), // #1231
1306 INST(Vpblendd , VexRvmi_Lx , V(660F3A,02,_,x,0,_,_,_ ), 0 , 73 , 0 , 7831 , 214, 141), // #1232
1307 INST(Vpblendmb , VexRvm_Lx , E(660F38,66,_,x,_,0,4,FVM), 0 , 114, 0 , 7840 , 357, 146), // #1233
1308 INST(Vpblendmd , VexRvm_Lx , E(660F38,64,_,x,_,0,4,FV ), 0 , 114, 0 , 7850 , 213, 138), // #1234
1309 INST(Vpblendmq , VexRvm_Lx , E(660F38,64,_,x,_,1,4,FV ), 0 , 113, 0 , 7860 , 212, 138), // #1235
1310 INST(Vpblendmw , VexRvm_Lx , E(660F38,66,_,x,_,1,4,FVM), 0 , 113, 0 , 7870 , 357, 146), // #1236
1311 INST(Vpblendvb , VexRvmr_Lx , V(660F3A,4C,_,x,0,_,_,_ ), 0 , 73 , 0 , 7880 , 215, 160), // #1237
1312 INST(Vpblendw , VexRvmi_Lx , V(660F3A,0E,_,x,I,_,_,_ ), 0 , 73 , 0 , 7890 , 214, 160), // #1238
1313 INST(Vpbroadcastb , VexRm_Lx_Bcst , V(660F38,78,_,x,0,0,0,T1S), E(660F38,7A,_,x,0,0,0,T1S), 96 , 108, 7899 , 358, 164), // #1239
1314 INST(Vpbroadcastd , VexRm_Lx_Bcst , V(660F38,58,_,x,0,0,2,T1S), E(660F38,7C,_,x,0,0,0,T1S), 122, 109, 7912 , 359, 152), // #1240
1315 INST(Vpbroadcastmb2q , VexRm_Lx , E(F30F38,2A,_,x,_,1,_,_ ), 0 , 205, 0 , 7925 , 360, 165), // #1241
1316 INST(Vpbroadcastmw2d , VexRm_Lx , E(F30F38,3A,_,x,_,0,_,_ ), 0 , 206, 0 , 7941 , 360, 165), // #1242
1317 INST(Vpbroadcastq , VexRm_Lx_Bcst , V(660F38,59,_,x,0,1,3,T1S), E(660F38,7C,_,x,0,1,0,T1S), 121, 110, 7957 , 361, 152), // #1243
1318 INST(Vpbroadcastw , VexRm_Lx_Bcst , V(660F38,79,_,x,0,0,1,T1S), E(660F38,7B,_,x,0,0,0,T1S), 207, 111, 7970 , 362, 164), // #1244
1319 INST(Vpclmulqdq , VexRvmi_Lx , V(660F3A,44,_,x,I,_,4,FVM), 0 , 204, 0 , 7983 , 363, 166), // #1245
1320 INST(Vpcmov , VexRvrmRvmr_Lx , V(XOP_M8,A2,_,x,x,_,_,_ ), 0 , 208, 0 , 7994 , 289, 151), // #1246
1321 INST(Vpcmpb , VexRvmi_Lx , E(660F3A,3F,_,x,_,0,4,FVM), 0 , 111, 0 , 8001 , 364, 146), // #1247
1322 INST(Vpcmpd , VexRvmi_Lx , E(660F3A,1F,_,x,_,0,4,FV ), 0 , 111, 0 , 8008 , 365, 138), // #1248
1323 INST(Vpcmpeqb , VexRvm_Lx_KEvex , V(660F00,74,_,x,I,I,4,FV ), 0 , 144, 0 , 8015 , 366, 163), // #1249
1324 INST(Vpcmpeqd , VexRvm_Lx_KEvex , V(660F00,76,_,x,I,0,4,FVM), 0 , 144, 0 , 8024 , 367, 142), // #1250
1325 INST(Vpcmpeqq , VexRvm_Lx_KEvex , V(660F38,29,_,x,I,1,4,FVM), 0 , 209, 0 , 8033 , 368, 142), // #1251
1326 INST(Vpcmpeqw , VexRvm_Lx_KEvex , V(660F00,75,_,x,I,I,4,FV ), 0 , 144, 0 , 8042 , 366, 163), // #1252
1327 INST(Vpcmpestri , VexRmi , V(660F3A,61,_,0,I,_,_,_ ), 0 , 73 , 0 , 8051 , 369, 167), // #1253
1328 INST(Vpcmpestrm , VexRmi , V(660F3A,60,_,0,I,_,_,_ ), 0 , 73 , 0 , 8062 , 370, 167), // #1254
1329 INST(Vpcmpgtb , VexRvm_Lx_KEvex , V(660F00,64,_,x,I,I,4,FV ), 0 , 144, 0 , 8073 , 366, 163), // #1255
1330 INST(Vpcmpgtd , VexRvm_Lx_KEvex , V(660F00,66,_,x,I,0,4,FVM), 0 , 144, 0 , 8082 , 367, 142), // #1256
1331 INST(Vpcmpgtq , VexRvm_Lx_KEvex , V(660F38,37,_,x,I,1,4,FVM), 0 , 209, 0 , 8091 , 368, 142), // #1257
1332 INST(Vpcmpgtw , VexRvm_Lx_KEvex , V(660F00,65,_,x,I,I,4,FV ), 0 , 144, 0 , 8100 , 366, 163), // #1258
1333 INST(Vpcmpistri , VexRmi , V(660F3A,63,_,0,I,_,_,_ ), 0 , 73 , 0 , 8109 , 371, 167), // #1259
1334 INST(Vpcmpistrm , VexRmi , V(660F3A,62,_,0,I,_,_,_ ), 0 , 73 , 0 , 8120 , 372, 167), // #1260
1335 INST(Vpcmpq , VexRvmi_Lx , E(660F3A,1F,_,x,_,1,4,FV ), 0 , 112, 0 , 8131 , 373, 138), // #1261
1336 INST(Vpcmpub , VexRvmi_Lx , E(660F3A,3E,_,x,_,0,4,FVM), 0 , 111, 0 , 8138 , 364, 146), // #1262
1337 INST(Vpcmpud , VexRvmi_Lx , E(660F3A,1E,_,x,_,0,4,FV ), 0 , 111, 0 , 8146 , 365, 138), // #1263
1338 INST(Vpcmpuq , VexRvmi_Lx , E(660F3A,1E,_,x,_,1,4,FV ), 0 , 112, 0 , 8154 , 373, 138), // #1264
1339 INST(Vpcmpuw , VexRvmi_Lx , E(660F3A,3E,_,x,_,1,4,FVM), 0 , 112, 0 , 8162 , 373, 146), // #1265
1340 INST(Vpcmpw , VexRvmi_Lx , E(660F3A,3F,_,x,_,1,4,FVM), 0 , 112, 0 , 8170 , 373, 146), // #1266
1341 INST(Vpcomb , VexRvmi , V(XOP_M8,CC,_,0,0,_,_,_ ), 0 , 208, 0 , 8177 , 276, 151), // #1267
1342 INST(Vpcomd , VexRvmi , V(XOP_M8,CE,_,0,0,_,_,_ ), 0 , 208, 0 , 8184 , 276, 151), // #1268
1343 INST(Vpcompressb , VexMr_Lx , E(660F38,63,_,x,_,0,0,T1S), 0 , 210, 0 , 8191 , 232, 168), // #1269
1344 INST(Vpcompressd , VexMr_Lx , E(660F38,8B,_,x,_,0,2,T1S), 0 , 129, 0 , 8203 , 232, 138), // #1270
1345 INST(Vpcompressq , VexMr_Lx , E(660F38,8B,_,x,_,1,3,T1S), 0 , 128, 0 , 8215 , 232, 138), // #1271
1346 INST(Vpcompressw , VexMr_Lx , E(660F38,63,_,x,_,1,1,T1S), 0 , 211, 0 , 8227 , 232, 168), // #1272
1347 INST(Vpcomq , VexRvmi , V(XOP_M8,CF,_,0,0,_,_,_ ), 0 , 208, 0 , 8239 , 276, 151), // #1273
1348 INST(Vpcomub , VexRvmi , V(XOP_M8,EC,_,0,0,_,_,_ ), 0 , 208, 0 , 8246 , 276, 151), // #1274
1349 INST(Vpcomud , VexRvmi , V(XOP_M8,EE,_,0,0,_,_,_ ), 0 , 208, 0 , 8254 , 276, 151), // #1275
1350 INST(Vpcomuq , VexRvmi , V(XOP_M8,EF,_,0,0,_,_,_ ), 0 , 208, 0 , 8262 , 276, 151), // #1276
1351 INST(Vpcomuw , VexRvmi , V(XOP_M8,ED,_,0,0,_,_,_ ), 0 , 208, 0 , 8270 , 276, 151), // #1277
1352 INST(Vpcomw , VexRvmi , V(XOP_M8,CD,_,0,0,_,_,_ ), 0 , 208, 0 , 8278 , 276, 151), // #1278
1353 INST(Vpconflictd , VexRm_Lx , E(660F38,C4,_,x,_,0,4,FV ), 0 , 114, 0 , 8285 , 374, 165), // #1279
1354 INST(Vpconflictq , VexRm_Lx , E(660F38,C4,_,x,_,1,4,FV ), 0 , 113, 0 , 8297 , 374, 165), // #1280
1355 INST(Vpdpbusd , VexRvm_Lx , V(660F38,50,_,x,_,0,4,FV ), 0 , 110, 0 , 8309 , 375, 169), // #1281
1356 INST(Vpdpbusds , VexRvm_Lx , V(660F38,51,_,x,_,0,4,FV ), 0 , 110, 0 , 8318 , 375, 169), // #1282
1357 INST(Vpdpwssd , VexRvm_Lx , V(660F38,52,_,x,_,0,4,FV ), 0 , 110, 0 , 8328 , 375, 169), // #1283
1358 INST(Vpdpwssds , VexRvm_Lx , V(660F38,53,_,x,_,0,4,FV ), 0 , 110, 0 , 8337 , 375, 169), // #1284
1359 INST(Vperm2f128 , VexRvmi , V(660F3A,06,_,1,0,_,_,_ ), 0 , 172, 0 , 8347 , 376, 135), // #1285
1360 INST(Vperm2i128 , VexRvmi , V(660F3A,46,_,1,0,_,_,_ ), 0 , 172, 0 , 8358 , 376, 141), // #1286
1361 INST(Vpermb , VexRvm_Lx , E(660F38,8D,_,x,_,0,4,FVM), 0 , 114, 0 , 8369 , 357, 170), // #1287
1362 INST(Vpermd , VexRvm_Lx , V(660F38,36,_,x,0,0,4,FV ), 0 , 110, 0 , 8376 , 377, 152), // #1288
1363 INST(Vpermi2b , VexRvm_Lx , E(660F38,75,_,x,_,0,4,FVM), 0 , 114, 0 , 8383 , 357, 170), // #1289
1364 INST(Vpermi2d , VexRvm_Lx , E(660F38,76,_,x,_,0,4,FV ), 0 , 114, 0 , 8392 , 213, 138), // #1290
1365 INST(Vpermi2pd , VexRvm_Lx , E(660F38,77,_,x,_,1,4,FV ), 0 , 113, 0 , 8401 , 212, 138), // #1291
1366 INST(Vpermi2ps , VexRvm_Lx , E(660F38,77,_,x,_,0,4,FV ), 0 , 114, 0 , 8411 , 213, 138), // #1292
1367 INST(Vpermi2q , VexRvm_Lx , E(660F38,76,_,x,_,1,4,FV ), 0 , 113, 0 , 8421 , 212, 138), // #1293
1368 INST(Vpermi2w , VexRvm_Lx , E(660F38,75,_,x,_,1,4,FVM), 0 , 113, 0 , 8430 , 357, 146), // #1294
1369 INST(Vpermil2pd , VexRvrmiRvmri_Lx , V(660F3A,49,_,x,x,_,_,_ ), 0 , 73 , 0 , 8439 , 378, 151), // #1295
1370 INST(Vpermil2ps , VexRvrmiRvmri_Lx , V(660F3A,48,_,x,x,_,_,_ ), 0 , 73 , 0 , 8450 , 378, 151), // #1296
1371 INST(Vpermilpd , VexRvmRmi_Lx , V(660F38,0D,_,x,0,1,4,FV ), V(660F3A,05,_,x,0,1,4,FV ), 209, 112, 8461 , 379, 131), // #1297
1372 INST(Vpermilps , VexRvmRmi_Lx , V(660F38,0C,_,x,0,0,4,FV ), V(660F3A,04,_,x,0,0,4,FV ), 110, 113, 8471 , 380, 131), // #1298
1373 INST(Vpermpd , VexRvmRmi_Lx , E(660F38,16,_,x,1,1,4,FV ), V(660F3A,01,_,x,1,1,4,FV ), 212, 114, 8481 , 381, 152), // #1299
1374 INST(Vpermps , VexRvm_Lx , V(660F38,16,_,x,0,0,4,FV ), 0 , 110, 0 , 8489 , 377, 152), // #1300
1375 INST(Vpermq , VexRvmRmi_Lx , E(660F38,36,_,x,_,1,4,FV ), V(660F3A,00,_,x,1,1,4,FV ), 113, 115, 8497 , 381, 152), // #1301
1376 INST(Vpermt2b , VexRvm_Lx , E(660F38,7D,_,x,_,0,4,FVM), 0 , 114, 0 , 8504 , 357, 170), // #1302
1377 INST(Vpermt2d , VexRvm_Lx , E(660F38,7E,_,x,_,0,4,FV ), 0 , 114, 0 , 8513 , 213, 138), // #1303
1378 INST(Vpermt2pd , VexRvm_Lx , E(660F38,7F,_,x,_,1,4,FV ), 0 , 113, 0 , 8522 , 212, 138), // #1304
1379 INST(Vpermt2ps , VexRvm_Lx , E(660F38,7F,_,x,_,0,4,FV ), 0 , 114, 0 , 8532 , 213, 138), // #1305
1380 INST(Vpermt2q , VexRvm_Lx , E(660F38,7E,_,x,_,1,4,FV ), 0 , 113, 0 , 8542 , 212, 138), // #1306
1381 INST(Vpermt2w , VexRvm_Lx , E(660F38,7D,_,x,_,1,4,FVM), 0 , 113, 0 , 8551 , 357, 146), // #1307
1382 INST(Vpermw , VexRvm_Lx , E(660F38,8D,_,x,_,1,4,FVM), 0 , 113, 0 , 8560 , 357, 146), // #1308
1383 INST(Vpexpandb , VexRm_Lx , E(660F38,62,_,x,_,0,0,T1S), 0 , 210, 0 , 8567 , 279, 168), // #1309
1384 INST(Vpexpandd , VexRm_Lx , E(660F38,89,_,x,_,0,2,T1S), 0 , 129, 0 , 8577 , 279, 138), // #1310
1385 INST(Vpexpandq , VexRm_Lx , E(660F38,89,_,x,_,1,3,T1S), 0 , 128, 0 , 8587 , 279, 138), // #1311
1386 INST(Vpexpandw , VexRm_Lx , E(660F38,62,_,x,_,1,1,T1S), 0 , 211, 0 , 8597 , 279, 168), // #1312
1387 INST(Vpextrb , VexMri , V(660F3A,14,_,0,0,I,0,T1S), 0 , 73 , 0 , 8607 , 382, 171), // #1313
1388 INST(Vpextrd , VexMri , V(660F3A,16,_,0,0,0,2,T1S), 0 , 177, 0 , 8615 , 283, 172), // #1314
1389 INST(Vpextrq , VexMri , V(660F3A,16,_,0,1,1,3,T1S), 0 , 213, 0 , 8623 , 383, 172), // #1315
1390 INST(Vpextrw , VexMri_Vpextrw , V(660F3A,15,_,0,0,I,1,T1S), 0 , 214, 0 , 8631 , 384, 171), // #1316
1391 INST(Vpgatherdd , VexRmvRm_VM , V(660F38,90,_,x,0,_,_,_ ), E(660F38,90,_,x,_,0,2,T1S), 96 , 116, 8639 , 302, 152), // #1317
1392 INST(Vpgatherdq , VexRmvRm_VM , V(660F38,90,_,x,1,_,_,_ ), E(660F38,90,_,x,_,1,3,T1S), 189, 117, 8650 , 301, 152), // #1318
1393 INST(Vpgatherqd , VexRmvRm_VM , V(660F38,91,_,x,0,_,_,_ ), E(660F38,91,_,x,_,0,2,T1S), 96 , 118, 8661 , 307, 152), // #1319
1394 INST(Vpgatherqq , VexRmvRm_VM , V(660F38,91,_,x,1,_,_,_ ), E(660F38,91,_,x,_,1,3,T1S), 189, 119, 8672 , 306, 152), // #1320
1395 INST(Vphaddbd , VexRm , V(XOP_M9,C2,_,0,0,_,_,_ ), 0 , 79 , 0 , 8683 , 204, 151), // #1321
1396 INST(Vphaddbq , VexRm , V(XOP_M9,C3,_,0,0,_,_,_ ), 0 , 79 , 0 , 8692 , 204, 151), // #1322
1397 INST(Vphaddbw , VexRm , V(XOP_M9,C1,_,0,0,_,_,_ ), 0 , 79 , 0 , 8701 , 204, 151), // #1323
1398 INST(Vphaddd , VexRvm_Lx , V(660F38,02,_,x,I,_,_,_ ), 0 , 96 , 0 , 8710 , 202, 160), // #1324
1399 INST(Vphadddq , VexRm , V(XOP_M9,CB,_,0,0,_,_,_ ), 0 , 79 , 0 , 8718 , 204, 151), // #1325
1400 INST(Vphaddsw , VexRvm_Lx , V(660F38,03,_,x,I,_,_,_ ), 0 , 96 , 0 , 8727 , 202, 160), // #1326
1401 INST(Vphaddubd , VexRm , V(XOP_M9,D2,_,0,0,_,_,_ ), 0 , 79 , 0 , 8736 , 204, 151), // #1327
1402 INST(Vphaddubq , VexRm , V(XOP_M9,D3,_,0,0,_,_,_ ), 0 , 79 , 0 , 8746 , 204, 151), // #1328
1403 INST(Vphaddubw , VexRm , V(XOP_M9,D1,_,0,0,_,_,_ ), 0 , 79 , 0 , 8756 , 204, 151), // #1329
1404 INST(Vphaddudq , VexRm , V(XOP_M9,DB,_,0,0,_,_,_ ), 0 , 79 , 0 , 8766 , 204, 151), // #1330
1405 INST(Vphadduwd , VexRm , V(XOP_M9,D6,_,0,0,_,_,_ ), 0 , 79 , 0 , 8776 , 204, 151), // #1331
1406 INST(Vphadduwq , VexRm , V(XOP_M9,D7,_,0,0,_,_,_ ), 0 , 79 , 0 , 8786 , 204, 151), // #1332
1407 INST(Vphaddw , VexRvm_Lx , V(660F38,01,_,x,I,_,_,_ ), 0 , 96 , 0 , 8796 , 202, 160), // #1333
1408 INST(Vphaddwd , VexRm , V(XOP_M9,C6,_,0,0,_,_,_ ), 0 , 79 , 0 , 8804 , 204, 151), // #1334
1409 INST(Vphaddwq , VexRm , V(XOP_M9,C7,_,0,0,_,_,_ ), 0 , 79 , 0 , 8813 , 204, 151), // #1335
1410 INST(Vphminposuw , VexRm , V(660F38,41,_,0,I,_,_,_ ), 0 , 96 , 0 , 8822 , 204, 135), // #1336
1411 INST(Vphsubbw , VexRm , V(XOP_M9,E1,_,0,0,_,_,_ ), 0 , 79 , 0 , 8834 , 204, 151), // #1337
1412 INST(Vphsubd , VexRvm_Lx , V(660F38,06,_,x,I,_,_,_ ), 0 , 96 , 0 , 8843 , 202, 160), // #1338
1413 INST(Vphsubdq , VexRm , V(XOP_M9,E3,_,0,0,_,_,_ ), 0 , 79 , 0 , 8851 , 204, 151), // #1339
1414 INST(Vphsubsw , VexRvm_Lx , V(660F38,07,_,x,I,_,_,_ ), 0 , 96 , 0 , 8860 , 202, 160), // #1340
1415 INST(Vphsubw , VexRvm_Lx , V(660F38,05,_,x,I,_,_,_ ), 0 , 96 , 0 , 8869 , 202, 160), // #1341
1416 INST(Vphsubwd , VexRm , V(XOP_M9,E2,_,0,0,_,_,_ ), 0 , 79 , 0 , 8877 , 204, 151), // #1342
1417 INST(Vpinsrb , VexRvmi , V(660F3A,20,_,0,0,I,0,T1S), 0 , 73 , 0 , 8886 , 385, 171), // #1343
1418 INST(Vpinsrd , VexRvmi , V(660F3A,22,_,0,0,0,2,T1S), 0 , 177, 0 , 8894 , 386, 172), // #1344
1419 INST(Vpinsrq , VexRvmi , V(660F3A,22,_,0,1,1,3,T1S), 0 , 213, 0 , 8902 , 387, 172), // #1345
1420 INST(Vpinsrw , VexRvmi , V(660F00,C4,_,0,0,I,1,T1S), 0 , 215, 0 , 8910 , 388, 171), // #1346
1421 INST(Vplzcntd , VexRm_Lx , E(660F38,44,_,x,_,0,4,FV ), 0 , 114, 0 , 8918 , 374, 165), // #1347
1422 INST(Vplzcntq , VexRm_Lx , E(660F38,44,_,x,_,1,4,FV ), 0 , 113, 0 , 8927 , 350, 165), // #1348
1423 INST(Vpmacsdd , VexRvmr , V(XOP_M8,9E,_,0,0,_,_,_ ), 0 , 208, 0 , 8936 , 389, 151), // #1349
1424 INST(Vpmacsdqh , VexRvmr , V(XOP_M8,9F,_,0,0,_,_,_ ), 0 , 208, 0 , 8945 , 389, 151), // #1350
1425 INST(Vpmacsdql , VexRvmr , V(XOP_M8,97,_,0,0,_,_,_ ), 0 , 208, 0 , 8955 , 389, 151), // #1351
1426 INST(Vpmacssdd , VexRvmr , V(XOP_M8,8E,_,0,0,_,_,_ ), 0 , 208, 0 , 8965 , 389, 151), // #1352
1427 INST(Vpmacssdqh , VexRvmr , V(XOP_M8,8F,_,0,0,_,_,_ ), 0 , 208, 0 , 8975 , 389, 151), // #1353
1428 INST(Vpmacssdql , VexRvmr , V(XOP_M8,87,_,0,0,_,_,_ ), 0 , 208, 0 , 8986 , 389, 151), // #1354
1429 INST(Vpmacsswd , VexRvmr , V(XOP_M8,86,_,0,0,_,_,_ ), 0 , 208, 0 , 8997 , 389, 151), // #1355
1430 INST(Vpmacssww , VexRvmr , V(XOP_M8,85,_,0,0,_,_,_ ), 0 , 208, 0 , 9007 , 389, 151), // #1356
1431 INST(Vpmacswd , VexRvmr , V(XOP_M8,96,_,0,0,_,_,_ ), 0 , 208, 0 , 9017 , 389, 151), // #1357
1432 INST(Vpmacsww , VexRvmr , V(XOP_M8,95,_,0,0,_,_,_ ), 0 , 208, 0 , 9026 , 389, 151), // #1358
1433 INST(Vpmadcsswd , VexRvmr , V(XOP_M8,A6,_,0,0,_,_,_ ), 0 , 208, 0 , 9035 , 389, 151), // #1359
1434 INST(Vpmadcswd , VexRvmr , V(XOP_M8,B6,_,0,0,_,_,_ ), 0 , 208, 0 , 9046 , 389, 151), // #1360
1435 INST(Vpmadd52huq , VexRvm_Lx , E(660F38,B5,_,x,_,1,4,FV ), 0 , 113, 0 , 9056 , 212, 173), // #1361
1436 INST(Vpmadd52luq , VexRvm_Lx , E(660F38,B4,_,x,_,1,4,FV ), 0 , 113, 0 , 9068 , 212, 173), // #1362
1437 INST(Vpmaddubsw , VexRvm_Lx , V(660F38,04,_,x,I,I,4,FVM), 0 , 110, 0 , 9080 , 315, 163), // #1363
1438 INST(Vpmaddwd , VexRvm_Lx , V(660F00,F5,_,x,I,I,4,FVM), 0 , 144, 0 , 9091 , 315, 163), // #1364
1439 INST(Vpmaskmovd , VexRvmMvr_Lx , V(660F38,8C,_,x,0,_,_,_ ), V(660F38,8E,_,x,0,_,_,_ ), 96 , 120, 9100 , 323, 141), // #1365
1440 INST(Vpmaskmovq , VexRvmMvr_Lx , V(660F38,8C,_,x,1,_,_,_ ), V(660F38,8E,_,x,1,_,_,_ ), 189, 121, 9111 , 323, 141), // #1366
1441 INST(Vpmaxsb , VexRvm_Lx , V(660F38,3C,_,x,I,I,4,FVM), 0 , 110, 0 , 9122 , 390, 163), // #1367
1442 INST(Vpmaxsd , VexRvm_Lx , V(660F38,3D,_,x,I,0,4,FV ), 0 , 110, 0 , 9130 , 211, 142), // #1368
1443 INST(Vpmaxsq , VexRvm_Lx , E(660F38,3D,_,x,_,1,4,FV ), 0 , 113, 0 , 9138 , 212, 138), // #1369
1444 INST(Vpmaxsw , VexRvm_Lx , V(660F00,EE,_,x,I,I,4,FVM), 0 , 144, 0 , 9146 , 390, 163), // #1370
1445 INST(Vpmaxub , VexRvm_Lx , V(660F00,DE,_,x,I,I,4,FVM), 0 , 144, 0 , 9154 , 390, 163), // #1371
1446 INST(Vpmaxud , VexRvm_Lx , V(660F38,3F,_,x,I,0,4,FV ), 0 , 110, 0 , 9162 , 211, 142), // #1372
1447 INST(Vpmaxuq , VexRvm_Lx , E(660F38,3F,_,x,_,1,4,FV ), 0 , 113, 0 , 9170 , 212, 138), // #1373
1448 INST(Vpmaxuw , VexRvm_Lx , V(660F38,3E,_,x,I,I,4,FVM), 0 , 110, 0 , 9178 , 390, 163), // #1374
1449 INST(Vpminsb , VexRvm_Lx , V(660F38,38,_,x,I,I,4,FVM), 0 , 110, 0 , 9186 , 390, 163), // #1375
1450 INST(Vpminsd , VexRvm_Lx , V(660F38,39,_,x,I,0,4,FV ), 0 , 110, 0 , 9194 , 211, 142), // #1376
1451 INST(Vpminsq , VexRvm_Lx , E(660F38,39,_,x,_,1,4,FV ), 0 , 113, 0 , 9202 , 212, 138), // #1377
1452 INST(Vpminsw , VexRvm_Lx , V(660F00,EA,_,x,I,I,4,FVM), 0 , 144, 0 , 9210 , 390, 163), // #1378
1453 INST(Vpminub , VexRvm_Lx , V(660F00,DA,_,x,I,_,4,FVM), 0 , 144, 0 , 9218 , 390, 163), // #1379
1454 INST(Vpminud , VexRvm_Lx , V(660F38,3B,_,x,I,0,4,FV ), 0 , 110, 0 , 9226 , 211, 142), // #1380
1455 INST(Vpminuq , VexRvm_Lx , E(660F38,3B,_,x,_,1,4,FV ), 0 , 113, 0 , 9234 , 212, 138), // #1381
1456 INST(Vpminuw , VexRvm_Lx , V(660F38,3A,_,x,I,_,4,FVM), 0 , 110, 0 , 9242 , 390, 163), // #1382
1457 INST(Vpmovb2m , VexRm_Lx , E(F30F38,29,_,x,_,0,_,_ ), 0 , 206, 0 , 9250 , 391, 146), // #1383
1458 INST(Vpmovd2m , VexRm_Lx , E(F30F38,39,_,x,_,0,_,_ ), 0 , 206, 0 , 9259 , 391, 140), // #1384
1459 INST(Vpmovdb , VexMr_Lx , E(F30F38,31,_,x,_,0,2,QVM), 0 , 216, 0 , 9268 , 392, 138), // #1385
1460 INST(Vpmovdw , VexMr_Lx , E(F30F38,33,_,x,_,0,3,HVM), 0 , 217, 0 , 9276 , 393, 138), // #1386
1461 INST(Vpmovm2b , VexRm_Lx , E(F30F38,28,_,x,_,0,_,_ ), 0 , 206, 0 , 9284 , 360, 146), // #1387
1462 INST(Vpmovm2d , VexRm_Lx , E(F30F38,38,_,x,_,0,_,_ ), 0 , 206, 0 , 9293 , 360, 140), // #1388
1463 INST(Vpmovm2q , VexRm_Lx , E(F30F38,38,_,x,_,1,_,_ ), 0 , 205, 0 , 9302 , 360, 140), // #1389
1464 INST(Vpmovm2w , VexRm_Lx , E(F30F38,28,_,x,_,1,_,_ ), 0 , 205, 0 , 9311 , 360, 146), // #1390
1465 INST(Vpmovmskb , VexRm_Lx , V(660F00,D7,_,x,I,_,_,_ ), 0 , 69 , 0 , 9320 , 336, 160), // #1391
1466 INST(Vpmovq2m , VexRm_Lx , E(F30F38,39,_,x,_,1,_,_ ), 0 , 205, 0 , 9330 , 391, 140), // #1392
1467 INST(Vpmovqb , VexMr_Lx , E(F30F38,32,_,x,_,0,1,OVM), 0 , 218, 0 , 9339 , 394, 138), // #1393
1468 INST(Vpmovqd , VexMr_Lx , E(F30F38,35,_,x,_,0,3,HVM), 0 , 217, 0 , 9347 , 393, 138), // #1394
1469 INST(Vpmovqw , VexMr_Lx , E(F30F38,34,_,x,_,0,2,QVM), 0 , 216, 0 , 9355 , 392, 138), // #1395
1470 INST(Vpmovsdb , VexMr_Lx , E(F30F38,21,_,x,_,0,2,QVM), 0 , 216, 0 , 9363 , 392, 138), // #1396
1471 INST(Vpmovsdw , VexMr_Lx , E(F30F38,23,_,x,_,0,3,HVM), 0 , 217, 0 , 9372 , 393, 138), // #1397
1472 INST(Vpmovsqb , VexMr_Lx , E(F30F38,22,_,x,_,0,1,OVM), 0 , 218, 0 , 9381 , 394, 138), // #1398
1473 INST(Vpmovsqd , VexMr_Lx , E(F30F38,25,_,x,_,0,3,HVM), 0 , 217, 0 , 9390 , 393, 138), // #1399
1474 INST(Vpmovsqw , VexMr_Lx , E(F30F38,24,_,x,_,0,2,QVM), 0 , 216, 0 , 9399 , 392, 138), // #1400
1475 INST(Vpmovswb , VexMr_Lx , E(F30F38,20,_,x,_,0,3,HVM), 0 , 217, 0 , 9408 , 393, 146), // #1401
1476 INST(Vpmovsxbd , VexRm_Lx , V(660F38,21,_,x,I,I,2,QVM), 0 , 219, 0 , 9417 , 395, 142), // #1402
1477 INST(Vpmovsxbq , VexRm_Lx , V(660F38,22,_,x,I,I,1,OVM), 0 , 220, 0 , 9427 , 396, 142), // #1403
1478 INST(Vpmovsxbw , VexRm_Lx , V(660F38,20,_,x,I,I,3,HVM), 0 , 139, 0 , 9437 , 397, 163), // #1404
1479 INST(Vpmovsxdq , VexRm_Lx , V(660F38,25,_,x,I,0,3,HVM), 0 , 139, 0 , 9447 , 397, 142), // #1405
1480 INST(Vpmovsxwd , VexRm_Lx , V(660F38,23,_,x,I,I,3,HVM), 0 , 139, 0 , 9457 , 397, 142), // #1406
1481 INST(Vpmovsxwq , VexRm_Lx , V(660F38,24,_,x,I,I,2,QVM), 0 , 219, 0 , 9467 , 395, 142), // #1407
1482 INST(Vpmovusdb , VexMr_Lx , E(F30F38,11,_,x,_,0,2,QVM), 0 , 216, 0 , 9477 , 392, 138), // #1408
1483 INST(Vpmovusdw , VexMr_Lx , E(F30F38,13,_,x,_,0,3,HVM), 0 , 217, 0 , 9487 , 393, 138), // #1409
1484 INST(Vpmovusqb , VexMr_Lx , E(F30F38,12,_,x,_,0,1,OVM), 0 , 218, 0 , 9497 , 394, 138), // #1410
1485 INST(Vpmovusqd , VexMr_Lx , E(F30F38,15,_,x,_,0,3,HVM), 0 , 217, 0 , 9507 , 393, 138), // #1411
1486 INST(Vpmovusqw , VexMr_Lx , E(F30F38,14,_,x,_,0,2,QVM), 0 , 216, 0 , 9517 , 392, 138), // #1412
1487 INST(Vpmovuswb , VexMr_Lx , E(F30F38,10,_,x,_,0,3,HVM), 0 , 217, 0 , 9527 , 393, 146), // #1413
1488 INST(Vpmovw2m , VexRm_Lx , E(F30F38,29,_,x,_,1,_,_ ), 0 , 205, 0 , 9537 , 391, 146), // #1414
1489 INST(Vpmovwb , VexMr_Lx , E(F30F38,30,_,x,_,0,3,HVM), 0 , 217, 0 , 9546 , 393, 146), // #1415
1490 INST(Vpmovzxbd , VexRm_Lx , V(660F38,31,_,x,I,I,2,QVM), 0 , 219, 0 , 9554 , 395, 142), // #1416
1491 INST(Vpmovzxbq , VexRm_Lx , V(660F38,32,_,x,I,I,1,OVM), 0 , 220, 0 , 9564 , 396, 142), // #1417
1492 INST(Vpmovzxbw , VexRm_Lx , V(660F38,30,_,x,I,I,3,HVM), 0 , 139, 0 , 9574 , 397, 163), // #1418
1493 INST(Vpmovzxdq , VexRm_Lx , V(660F38,35,_,x,I,0,3,HVM), 0 , 139, 0 , 9584 , 397, 142), // #1419
1494 INST(Vpmovzxwd , VexRm_Lx , V(660F38,33,_,x,I,I,3,HVM), 0 , 139, 0 , 9594 , 397, 142), // #1420
1495 INST(Vpmovzxwq , VexRm_Lx , V(660F38,34,_,x,I,I,2,QVM), 0 , 219, 0 , 9604 , 395, 142), // #1421
1496 INST(Vpmuldq , VexRvm_Lx , V(660F38,28,_,x,I,1,4,FV ), 0 , 209, 0 , 9614 , 208, 142), // #1422
1497 INST(Vpmulhrsw , VexRvm_Lx , V(660F38,0B,_,x,I,I,4,FVM), 0 , 110, 0 , 9622 , 315, 163), // #1423
1498 INST(Vpmulhuw , VexRvm_Lx , V(660F00,E4,_,x,I,I,4,FVM), 0 , 144, 0 , 9632 , 315, 163), // #1424
1499 INST(Vpmulhw , VexRvm_Lx , V(660F00,E5,_,x,I,I,4,FVM), 0 , 144, 0 , 9641 , 315, 163), // #1425
1500 INST(Vpmulld , VexRvm_Lx , V(660F38,40,_,x,I,0,4,FV ), 0 , 110, 0 , 9649 , 209, 142), // #1426
1501 INST(Vpmullq , VexRvm_Lx , E(660F38,40,_,x,_,1,4,FV ), 0 , 113, 0 , 9657 , 212, 140), // #1427
1502 INST(Vpmullw , VexRvm_Lx , V(660F00,D5,_,x,I,I,4,FVM), 0 , 144, 0 , 9665 , 315, 163), // #1428
1503 INST(Vpmultishiftqb , VexRvm_Lx , E(660F38,83,_,x,_,1,4,FV ), 0 , 113, 0 , 9673 , 212, 170), // #1429
1504 INST(Vpmuludq , VexRvm_Lx , V(660F00,F4,_,x,I,1,4,FV ), 0 , 103, 0 , 9688 , 208, 142), // #1430
1505 INST(Vpopcntb , VexRm_Lx , E(660F38,54,_,x,_,0,4,FV ), 0 , 114, 0 , 9697 , 279, 174), // #1431
1506 INST(Vpopcntd , VexRm_Lx , E(660F38,55,_,x,_,0,4,FVM), 0 , 114, 0 , 9706 , 374, 175), // #1432
1507 INST(Vpopcntq , VexRm_Lx , E(660F38,55,_,x,_,1,4,FVM), 0 , 113, 0 , 9715 , 350, 175), // #1433
1508 INST(Vpopcntw , VexRm_Lx , E(660F38,54,_,x,_,1,4,FV ), 0 , 113, 0 , 9724 , 279, 174), // #1434
1509 INST(Vpor , VexRvm_Lx , V(660F00,EB,_,x,I,_,_,_ ), 0 , 69 , 0 , 9733 , 351, 160), // #1435
1510 INST(Vpord , VexRvm_Lx , E(660F00,EB,_,x,_,0,4,FV ), 0 , 198, 0 , 9738 , 352, 138), // #1436
1511 INST(Vporq , VexRvm_Lx , E(660F00,EB,_,x,_,1,4,FV ), 0 , 135, 0 , 9744 , 356, 138), // #1437
1512 INST(Vpperm , VexRvrmRvmr , V(XOP_M8,A3,_,0,x,_,_,_ ), 0 , 208, 0 , 9750 , 398, 151), // #1438
1513 INST(Vprold , VexVmi_Lx , E(660F00,72,1,x,_,0,4,FV ), 0 , 221, 0 , 9757 , 399, 138), // #1439
1514 INST(Vprolq , VexVmi_Lx , E(660F00,72,1,x,_,1,4,FV ), 0 , 222, 0 , 9764 , 400, 138), // #1440
1515 INST(Vprolvd , VexRvm_Lx , E(660F38,15,_,x,_,0,4,FV ), 0 , 114, 0 , 9771 , 213, 138), // #1441
1516 INST(Vprolvq , VexRvm_Lx , E(660F38,15,_,x,_,1,4,FV ), 0 , 113, 0 , 9779 , 212, 138), // #1442
1517 INST(Vprord , VexVmi_Lx , E(660F00,72,0,x,_,0,4,FV ), 0 , 198, 0 , 9787 , 399, 138), // #1443
1518 INST(Vprorq , VexVmi_Lx , E(660F00,72,0,x,_,1,4,FV ), 0 , 135, 0 , 9794 , 400, 138), // #1444
1519 INST(Vprorvd , VexRvm_Lx , E(660F38,14,_,x,_,0,4,FV ), 0 , 114, 0 , 9801 , 213, 138), // #1445
1520 INST(Vprorvq , VexRvm_Lx , E(660F38,14,_,x,_,1,4,FV ), 0 , 113, 0 , 9809 , 212, 138), // #1446
1521 INST(Vprotb , VexRvmRmvRmi , V(XOP_M9,90,_,0,x,_,_,_ ), V(XOP_M8,C0,_,0,x,_,_,_ ), 79 , 122, 9817 , 401, 151), // #1447
1522 INST(Vprotd , VexRvmRmvRmi , V(XOP_M9,92,_,0,x,_,_,_ ), V(XOP_M8,C2,_,0,x,_,_,_ ), 79 , 123, 9824 , 401, 151), // #1448
1523 INST(Vprotq , VexRvmRmvRmi , V(XOP_M9,93,_,0,x,_,_,_ ), V(XOP_M8,C3,_,0,x,_,_,_ ), 79 , 124, 9831 , 401, 151), // #1449
1524 INST(Vprotw , VexRvmRmvRmi , V(XOP_M9,91,_,0,x,_,_,_ ), V(XOP_M8,C1,_,0,x,_,_,_ ), 79 , 125, 9838 , 401, 151), // #1450
1525 INST(Vpsadbw , VexRvm_Lx , V(660F00,F6,_,x,I,I,4,FVM), 0 , 144, 0 , 9845 , 203, 163), // #1451
1526 INST(Vpscatterdd , VexMr_VM , E(660F38,A0,_,x,_,0,2,T1S), 0 , 129, 0 , 9853 , 402, 138), // #1452
1527 INST(Vpscatterdq , VexMr_VM , E(660F38,A0,_,x,_,1,3,T1S), 0 , 128, 0 , 9865 , 403, 138), // #1453
1528 INST(Vpscatterqd , VexMr_VM , E(660F38,A1,_,x,_,0,2,T1S), 0 , 129, 0 , 9877 , 404, 138), // #1454
1529 INST(Vpscatterqq , VexMr_VM , E(660F38,A1,_,x,_,1,3,T1S), 0 , 128, 0 , 9889 , 405, 138), // #1455
1530 INST(Vpshab , VexRvmRmv , V(XOP_M9,98,_,0,x,_,_,_ ), 0 , 79 , 0 , 9901 , 406, 151), // #1456
1531 INST(Vpshad , VexRvmRmv , V(XOP_M9,9A,_,0,x,_,_,_ ), 0 , 79 , 0 , 9908 , 406, 151), // #1457
1532 INST(Vpshaq , VexRvmRmv , V(XOP_M9,9B,_,0,x,_,_,_ ), 0 , 79 , 0 , 9915 , 406, 151), // #1458
1533 INST(Vpshaw , VexRvmRmv , V(XOP_M9,99,_,0,x,_,_,_ ), 0 , 79 , 0 , 9922 , 406, 151), // #1459
1534 INST(Vpshlb , VexRvmRmv , V(XOP_M9,94,_,0,x,_,_,_ ), 0 , 79 , 0 , 9929 , 406, 151), // #1460
1535 INST(Vpshld , VexRvmRmv , V(XOP_M9,96,_,0,x,_,_,_ ), 0 , 79 , 0 , 9936 , 406, 151), // #1461
1536 INST(Vpshldd , VexRvmi_Lx , E(660F3A,71,_,x,_,0,4,FV ), 0 , 111, 0 , 9943 , 206, 168), // #1462
1537 INST(Vpshldq , VexRvmi_Lx , E(660F3A,71,_,x,_,1,4,FV ), 0 , 112, 0 , 9951 , 207, 168), // #1463
1538 INST(Vpshldvd , VexRvm_Lx , E(660F38,71,_,x,_,0,4,FV ), 0 , 114, 0 , 9959 , 213, 168), // #1464
1539 INST(Vpshldvq , VexRvm_Lx , E(660F38,71,_,x,_,1,4,FV ), 0 , 113, 0 , 9968 , 212, 168), // #1465
1540 INST(Vpshldvw , VexRvm_Lx , E(660F38,70,_,x,_,1,4,FVM), 0 , 113, 0 , 9977 , 357, 168), // #1466
1541 INST(Vpshldw , VexRvmi_Lx , E(660F3A,70,_,x,_,1,4,FVM), 0 , 112, 0 , 9986 , 275, 168), // #1467
1542 INST(Vpshlq , VexRvmRmv , V(XOP_M9,97,_,0,x,_,_,_ ), 0 , 79 , 0 , 9994 , 406, 151), // #1468
1543 INST(Vpshlw , VexRvmRmv , V(XOP_M9,95,_,0,x,_,_,_ ), 0 , 79 , 0 , 10001, 406, 151), // #1469
1544 INST(Vpshrdd , VexRvmi_Lx , E(660F3A,73,_,x,_,0,4,FV ), 0 , 111, 0 , 10008, 206, 168), // #1470
1545 INST(Vpshrdq , VexRvmi_Lx , E(660F3A,73,_,x,_,1,4,FV ), 0 , 112, 0 , 10016, 207, 168), // #1471
1546 INST(Vpshrdvd , VexRvm_Lx , E(660F38,73,_,x,_,0,4,FV ), 0 , 114, 0 , 10024, 213, 168), // #1472
1547 INST(Vpshrdvq , VexRvm_Lx , E(660F38,73,_,x,_,1,4,FV ), 0 , 113, 0 , 10033, 212, 168), // #1473
1548 INST(Vpshrdvw , VexRvm_Lx , E(660F38,72,_,x,_,1,4,FVM), 0 , 113, 0 , 10042, 357, 168), // #1474
1549 INST(Vpshrdw , VexRvmi_Lx , E(660F3A,72,_,x,_,1,4,FVM), 0 , 112, 0 , 10051, 275, 168), // #1475
1550 INST(Vpshufb , VexRvm_Lx , V(660F38,00,_,x,I,I,4,FVM), 0 , 110, 0 , 10059, 315, 163), // #1476
1551 INST(Vpshufbitqmb , VexRvm_Lx , E(660F38,8F,_,x,0,0,4,FVM), 0 , 114, 0 , 10067, 407, 174), // #1477
1552 INST(Vpshufd , VexRmi_Lx , V(660F00,70,_,x,I,0,4,FV ), 0 , 144, 0 , 10080, 408, 142), // #1478
1553 INST(Vpshufhw , VexRmi_Lx , V(F30F00,70,_,x,I,I,4,FVM), 0 , 161, 0 , 10088, 409, 163), // #1479
1554 INST(Vpshuflw , VexRmi_Lx , V(F20F00,70,_,x,I,I,4,FVM), 0 , 223, 0 , 10097, 409, 163), // #1480
1555 INST(Vpsignb , VexRvm_Lx , V(660F38,08,_,x,I,_,_,_ ), 0 , 96 , 0 , 10106, 202, 160), // #1481
1556 INST(Vpsignd , VexRvm_Lx , V(660F38,0A,_,x,I,_,_,_ ), 0 , 96 , 0 , 10114, 202, 160), // #1482
1557 INST(Vpsignw , VexRvm_Lx , V(660F38,09,_,x,I,_,_,_ ), 0 , 96 , 0 , 10122, 202, 160), // #1483
1558 INST(Vpslld , VexRvmVmi_Lx_MEvex , V(660F00,F2,_,x,I,0,4,128), V(660F00,72,6,x,I,0,4,FV ), 224, 126, 10130, 410, 142), // #1484
1559 INST(Vpslldq , VexVmi_Lx_MEvex , V(660F00,73,7,x,I,I,4,FVM), 0 , 225, 0 , 10137, 411, 163), // #1485
1560 INST(Vpsllq , VexRvmVmi_Lx_MEvex , V(660F00,F3,_,x,I,1,4,128), V(660F00,73,6,x,I,1,4,FV ), 226, 127, 10145, 412, 142), // #1486
1561 INST(Vpsllvd , VexRvm_Lx , V(660F38,47,_,x,0,0,4,FV ), 0 , 110, 0 , 10152, 209, 152), // #1487
1562 INST(Vpsllvq , VexRvm_Lx , V(660F38,47,_,x,1,1,4,FV ), 0 , 182, 0 , 10160, 208, 152), // #1488
1563 INST(Vpsllvw , VexRvm_Lx , E(660F38,12,_,x,_,1,4,FVM), 0 , 113, 0 , 10168, 357, 146), // #1489
1564 INST(Vpsllw , VexRvmVmi_Lx_MEvex , V(660F00,F1,_,x,I,I,4,128), V(660F00,71,6,x,I,I,4,FVM), 224, 128, 10176, 413, 163), // #1490
1565 INST(Vpsrad , VexRvmVmi_Lx_MEvex , V(660F00,E2,_,x,I,0,4,128), V(660F00,72,4,x,I,0,4,FV ), 224, 129, 10183, 410, 142), // #1491
1566 INST(Vpsraq , VexRvmVmi_Lx_MEvex , E(660F00,E2,_,x,_,1,4,128), E(660F00,72,4,x,_,1,4,FV ), 227, 130, 10190, 414, 138), // #1492
1567 INST(Vpsravd , VexRvm_Lx , V(660F38,46,_,x,0,0,4,FV ), 0 , 110, 0 , 10197, 209, 152), // #1493
1568 INST(Vpsravq , VexRvm_Lx , E(660F38,46,_,x,_,1,4,FV ), 0 , 113, 0 , 10205, 212, 138), // #1494
1569 INST(Vpsravw , VexRvm_Lx , E(660F38,11,_,x,_,1,4,FVM), 0 , 113, 0 , 10213, 357, 146), // #1495
1570 INST(Vpsraw , VexRvmVmi_Lx_MEvex , V(660F00,E1,_,x,I,I,4,128), V(660F00,71,4,x,I,I,4,FVM), 224, 131, 10221, 413, 163), // #1496
1571 INST(Vpsrld , VexRvmVmi_Lx_MEvex , V(660F00,D2,_,x,I,0,4,128), V(660F00,72,2,x,I,0,4,FV ), 224, 132, 10228, 410, 142), // #1497
1572 INST(Vpsrldq , VexVmi_Lx_MEvex , V(660F00,73,3,x,I,I,4,FVM), 0 , 228, 0 , 10235, 411, 163), // #1498
1573 INST(Vpsrlq , VexRvmVmi_Lx_MEvex , V(660F00,D3,_,x,I,1,4,128), V(660F00,73,2,x,I,1,4,FV ), 226, 133, 10243, 412, 142), // #1499
1574 INST(Vpsrlvd , VexRvm_Lx , V(660F38,45,_,x,0,0,4,FV ), 0 , 110, 0 , 10250, 209, 152), // #1500
1575 INST(Vpsrlvq , VexRvm_Lx , V(660F38,45,_,x,1,1,4,FV ), 0 , 182, 0 , 10258, 208, 152), // #1501
1576 INST(Vpsrlvw , VexRvm_Lx , E(660F38,10,_,x,_,1,4,FVM), 0 , 113, 0 , 10266, 357, 146), // #1502
1577 INST(Vpsrlw , VexRvmVmi_Lx_MEvex , V(660F00,D1,_,x,I,I,4,128), V(660F00,71,2,x,I,I,4,FVM), 224, 134, 10274, 413, 163), // #1503
1578 INST(Vpsubb , VexRvm_Lx , V(660F00,F8,_,x,I,I,4,FVM), 0 , 144, 0 , 10281, 415, 163), // #1504
1579 INST(Vpsubd , VexRvm_Lx , V(660F00,FA,_,x,I,0,4,FV ), 0 , 144, 0 , 10288, 416, 142), // #1505
1580 INST(Vpsubq , VexRvm_Lx , V(660F00,FB,_,x,I,1,4,FV ), 0 , 103, 0 , 10295, 417, 142), // #1506
1581 INST(Vpsubsb , VexRvm_Lx , V(660F00,E8,_,x,I,I,4,FVM), 0 , 144, 0 , 10302, 415, 163), // #1507
1582 INST(Vpsubsw , VexRvm_Lx , V(660F00,E9,_,x,I,I,4,FVM), 0 , 144, 0 , 10310, 415, 163), // #1508
1583 INST(Vpsubusb , VexRvm_Lx , V(660F00,D8,_,x,I,I,4,FVM), 0 , 144, 0 , 10318, 415, 163), // #1509
1584 INST(Vpsubusw , VexRvm_Lx , V(660F00,D9,_,x,I,I,4,FVM), 0 , 144, 0 , 10327, 415, 163), // #1510
1585 INST(Vpsubw , VexRvm_Lx , V(660F00,F9,_,x,I,I,4,FVM), 0 , 144, 0 , 10336, 415, 163), // #1511
1586 INST(Vpternlogd , VexRvmi_Lx , E(660F3A,25,_,x,_,0,4,FV ), 0 , 111, 0 , 10343, 206, 138), // #1512
1587 INST(Vpternlogq , VexRvmi_Lx , E(660F3A,25,_,x,_,1,4,FV ), 0 , 112, 0 , 10354, 207, 138), // #1513
1588 INST(Vptest , VexRm_Lx , V(660F38,17,_,x,I,_,_,_ ), 0 , 96 , 0 , 10365, 298, 167), // #1514
1589 INST(Vptestmb , VexRvm_Lx , E(660F38,26,_,x,_,0,4,FVM), 0 , 114, 0 , 10372, 407, 146), // #1515
1590 INST(Vptestmd , VexRvm_Lx , E(660F38,27,_,x,_,0,4,FV ), 0 , 114, 0 , 10381, 418, 138), // #1516
1591 INST(Vptestmq , VexRvm_Lx , E(660F38,27,_,x,_,1,4,FV ), 0 , 113, 0 , 10390, 419, 138), // #1517
1592 INST(Vptestmw , VexRvm_Lx , E(660F38,26,_,x,_,1,4,FVM), 0 , 113, 0 , 10399, 407, 146), // #1518
1593 INST(Vptestnmb , VexRvm_Lx , E(F30F38,26,_,x,_,0,4,FVM), 0 , 132, 0 , 10408, 407, 146), // #1519
1594 INST(Vptestnmd , VexRvm_Lx , E(F30F38,27,_,x,_,0,4,FV ), 0 , 132, 0 , 10418, 418, 138), // #1520
1595 INST(Vptestnmq , VexRvm_Lx , E(F30F38,27,_,x,_,1,4,FV ), 0 , 229, 0 , 10428, 419, 138), // #1521
1596 INST(Vptestnmw , VexRvm_Lx , E(F30F38,26,_,x,_,1,4,FVM), 0 , 229, 0 , 10438, 407, 146), // #1522
1597 INST(Vpunpckhbw , VexRvm_Lx , V(660F00,68,_,x,I,I,4,FVM), 0 , 144, 0 , 10448, 315, 163), // #1523
1598 INST(Vpunpckhdq , VexRvm_Lx , V(660F00,6A,_,x,I,0,4,FV ), 0 , 144, 0 , 10459, 209, 142), // #1524
1599 INST(Vpunpckhqdq , VexRvm_Lx , V(660F00,6D,_,x,I,1,4,FV ), 0 , 103, 0 , 10470, 208, 142), // #1525
1600 INST(Vpunpckhwd , VexRvm_Lx , V(660F00,69,_,x,I,I,4,FVM), 0 , 144, 0 , 10482, 315, 163), // #1526
1601 INST(Vpunpcklbw , VexRvm_Lx , V(660F00,60,_,x,I,I,4,FVM), 0 , 144, 0 , 10493, 315, 163), // #1527
1602 INST(Vpunpckldq , VexRvm_Lx , V(660F00,62,_,x,I,0,4,FV ), 0 , 144, 0 , 10504, 209, 142), // #1528
1603 INST(Vpunpcklqdq , VexRvm_Lx , V(660F00,6C,_,x,I,1,4,FV ), 0 , 103, 0 , 10515, 208, 142), // #1529
1604 INST(Vpunpcklwd , VexRvm_Lx , V(660F00,61,_,x,I,I,4,FVM), 0 , 144, 0 , 10527, 315, 163), // #1530
1605 INST(Vpxor , VexRvm_Lx , V(660F00,EF,_,x,I,_,_,_ ), 0 , 69 , 0 , 10538, 353, 160), // #1531
1606 INST(Vpxord , VexRvm_Lx , E(660F00,EF,_,x,_,0,4,FV ), 0 , 198, 0 , 10544, 354, 138), // #1532
1607 INST(Vpxorq , VexRvm_Lx , E(660F00,EF,_,x,_,1,4,FV ), 0 , 135, 0 , 10551, 355, 138), // #1533
1608 INST(Vrangepd , VexRvmi_Lx , E(660F3A,50,_,x,_,1,4,FV ), 0 , 112, 0 , 10558, 285, 140), // #1534
1609 INST(Vrangeps , VexRvmi_Lx , E(660F3A,50,_,x,_,0,4,FV ), 0 , 111, 0 , 10567, 286, 140), // #1535
1610 INST(Vrangesd , VexRvmi , E(660F3A,51,_,I,_,1,3,T1S), 0 , 180, 0 , 10576, 287, 66 ), // #1536
1611 INST(Vrangess , VexRvmi , E(660F3A,51,_,I,_,0,2,T1S), 0 , 181, 0 , 10585, 288, 66 ), // #1537
1612 INST(Vrcp14pd , VexRm_Lx , E(660F38,4C,_,x,_,1,4,FV ), 0 , 113, 0 , 10594, 350, 138), // #1538
1613 INST(Vrcp14ps , VexRm_Lx , E(660F38,4C,_,x,_,0,4,FV ), 0 , 114, 0 , 10603, 374, 138), // #1539
1614 INST(Vrcp14sd , VexRvm , E(660F38,4D,_,I,_,1,3,T1S), 0 , 128, 0 , 10612, 420, 68 ), // #1540
1615 INST(Vrcp14ss , VexRvm , E(660F38,4D,_,I,_,0,2,T1S), 0 , 129, 0 , 10621, 421, 68 ), // #1541
1616 INST(Vrcp28pd , VexRm , E(660F38,CA,_,2,_,1,4,FV ), 0 , 170, 0 , 10630, 277, 147), // #1542
1617 INST(Vrcp28ps , VexRm , E(660F38,CA,_,2,_,0,4,FV ), 0 , 171, 0 , 10639, 278, 147), // #1543
1618 INST(Vrcp28sd , VexRvm , E(660F38,CB,_,I,_,1,3,T1S), 0 , 128, 0 , 10648, 308, 147), // #1544
1619 INST(Vrcp28ss , VexRvm , E(660F38,CB,_,I,_,0,2,T1S), 0 , 129, 0 , 10657, 309, 147), // #1545
1620 INST(Vrcpph , VexRm_Lx , E(66MAP6,4C,_,_,_,0,4,FV ), 0 , 183, 0 , 10666, 422, 134), // #1546
1621 INST(Vrcpps , VexRm_Lx , V(000F00,53,_,x,I,_,_,_ ), 0 , 72 , 0 , 10673, 298, 135), // #1547
1622 INST(Vrcpsh , VexRvm , E(66MAP6,4D,_,_,_,0,1,T1S), 0 , 185, 0 , 10680, 423, 134), // #1548
1623 INST(Vrcpss , VexRvm , V(F30F00,53,_,I,I,_,_,_ ), 0 , 199, 0 , 10687, 424, 135), // #1549
1624 INST(Vreducepd , VexRmi_Lx , E(660F3A,56,_,x,_,1,4,FV ), 0 , 112, 0 , 10694, 400, 140), // #1550
1625 INST(Vreduceph , VexRmi_Lx , E(000F3A,56,_,_,_,0,4,FV ), 0 , 123, 0 , 10704, 311, 132), // #1551
1626 INST(Vreduceps , VexRmi_Lx , E(660F3A,56,_,x,_,0,4,FV ), 0 , 111, 0 , 10714, 399, 140), // #1552
1627 INST(Vreducesd , VexRvmi , E(660F3A,57,_,I,_,1,3,T1S), 0 , 180, 0 , 10724, 425, 66 ), // #1553
1628 INST(Vreducesh , VexRvmi , E(000F3A,57,_,_,_,0,1,T1S), 0 , 188, 0 , 10734, 313, 134), // #1554
1629 INST(Vreducess , VexRvmi , E(660F3A,57,_,I,_,0,2,T1S), 0 , 181, 0 , 10744, 426, 66 ), // #1555
1630 INST(Vrndscalepd , VexRmi_Lx , E(660F3A,09,_,x,_,1,4,FV ), 0 , 112, 0 , 10754, 310, 138), // #1556
1631 INST(Vrndscaleph , VexRmi_Lx , E(000F3A,08,_,_,_,0,4,FV ), 0 , 123, 0 , 10766, 311, 132), // #1557
1632 INST(Vrndscaleps , VexRmi_Lx , E(660F3A,08,_,x,_,0,4,FV ), 0 , 111, 0 , 10778, 312, 138), // #1558
1633 INST(Vrndscalesd , VexRvmi , E(660F3A,0B,_,I,_,1,3,T1S), 0 , 180, 0 , 10790, 287, 68 ), // #1559
1634 INST(Vrndscalesh , VexRvmi , E(000F3A,0A,_,_,_,0,1,T1S), 0 , 188, 0 , 10802, 313, 134), // #1560
1635 INST(Vrndscaless , VexRvmi , E(660F3A,0A,_,I,_,0,2,T1S), 0 , 181, 0 , 10814, 288, 68 ), // #1561
1636 INST(Vroundpd , VexRmi_Lx , V(660F3A,09,_,x,I,_,_,_ ), 0 , 73 , 0 , 10826, 427, 135), // #1562
1637 INST(Vroundps , VexRmi_Lx , V(660F3A,08,_,x,I,_,_,_ ), 0 , 73 , 0 , 10835, 427, 135), // #1563
1638 INST(Vroundsd , VexRvmi , V(660F3A,0B,_,I,I,_,_,_ ), 0 , 73 , 0 , 10844, 428, 135), // #1564
1639 INST(Vroundss , VexRvmi , V(660F3A,0A,_,I,I,_,_,_ ), 0 , 73 , 0 , 10853, 429, 135), // #1565
1640 INST(Vrsqrt14pd , VexRm_Lx , E(660F38,4E,_,x,_,1,4,FV ), 0 , 113, 0 , 10862, 350, 138), // #1566
1641 INST(Vrsqrt14ps , VexRm_Lx , E(660F38,4E,_,x,_,0,4,FV ), 0 , 114, 0 , 10873, 374, 138), // #1567
1642 INST(Vrsqrt14sd , VexRvm , E(660F38,4F,_,I,_,1,3,T1S), 0 , 128, 0 , 10884, 420, 68 ), // #1568
1643 INST(Vrsqrt14ss , VexRvm , E(660F38,4F,_,I,_,0,2,T1S), 0 , 129, 0 , 10895, 421, 68 ), // #1569
1644 INST(Vrsqrt28pd , VexRm , E(660F38,CC,_,2,_,1,4,FV ), 0 , 170, 0 , 10906, 277, 147), // #1570
1645 INST(Vrsqrt28ps , VexRm , E(660F38,CC,_,2,_,0,4,FV ), 0 , 171, 0 , 10917, 278, 147), // #1571
1646 INST(Vrsqrt28sd , VexRvm , E(660F38,CD,_,I,_,1,3,T1S), 0 , 128, 0 , 10928, 308, 147), // #1572
1647 INST(Vrsqrt28ss , VexRvm , E(660F38,CD,_,I,_,0,2,T1S), 0 , 129, 0 , 10939, 309, 147), // #1573
1648 INST(Vrsqrtph , VexRm_Lx , E(66MAP6,4E,_,_,_,0,4,FV ), 0 , 183, 0 , 10950, 422, 132), // #1574
1649 INST(Vrsqrtps , VexRm_Lx , V(000F00,52,_,x,I,_,_,_ ), 0 , 72 , 0 , 10959, 298, 135), // #1575
1650 INST(Vrsqrtsh , VexRvm , E(66MAP6,4F,_,_,_,0,1,T1S), 0 , 185, 0 , 10968, 423, 134), // #1576
1651 INST(Vrsqrtss , VexRvm , V(F30F00,52,_,I,I,_,_,_ ), 0 , 199, 0 , 10977, 424, 135), // #1577
1652 INST(Vscalefpd , VexRvm_Lx , E(660F38,2C,_,x,_,1,4,FV ), 0 , 113, 0 , 10986, 430, 138), // #1578
1653 INST(Vscalefph , VexRvm_Lx , E(66MAP6,2C,_,_,_,0,4,FV ), 0 , 183, 0 , 10996, 197, 132), // #1579
1654 INST(Vscalefps , VexRvm_Lx , E(660F38,2C,_,x,_,0,4,FV ), 0 , 114, 0 , 11006, 284, 138), // #1580
1655 INST(Vscalefsd , VexRvm , E(660F38,2D,_,I,_,1,3,T1S), 0 , 128, 0 , 11016, 251, 68 ), // #1581
1656 INST(Vscalefsh , VexRvm , E(66MAP6,2D,_,_,_,0,1,T1S), 0 , 185, 0 , 11026, 200, 134), // #1582
1657 INST(Vscalefss , VexRvm , E(660F38,2D,_,I,_,0,2,T1S), 0 , 129, 0 , 11036, 259, 68 ), // #1583
1658 INST(Vscatterdpd , VexMr_VM , E(660F38,A2,_,x,_,1,3,T1S), 0 , 128, 0 , 11046, 403, 138), // #1584
1659 INST(Vscatterdps , VexMr_VM , E(660F38,A2,_,x,_,0,2,T1S), 0 , 129, 0 , 11058, 402, 138), // #1585
1660 INST(Vscatterpf0dpd , VexM_VM , E(660F38,C6,5,2,_,1,3,T1S), 0 , 230, 0 , 11070, 303, 153), // #1586
1661 INST(Vscatterpf0dps , VexM_VM , E(660F38,C6,5,2,_,0,2,T1S), 0 , 231, 0 , 11085, 304, 153), // #1587
1662 INST(Vscatterpf0qpd , VexM_VM , E(660F38,C7,5,2,_,1,3,T1S), 0 , 230, 0 , 11100, 305, 153), // #1588
1663 INST(Vscatterpf0qps , VexM_VM , E(660F38,C7,5,2,_,0,2,T1S), 0 , 231, 0 , 11115, 305, 153), // #1589
1664 INST(Vscatterpf1dpd , VexM_VM , E(660F38,C6,6,2,_,1,3,T1S), 0 , 232, 0 , 11130, 303, 153), // #1590
1665 INST(Vscatterpf1dps , VexM_VM , E(660F38,C6,6,2,_,0,2,T1S), 0 , 233, 0 , 11145, 304, 153), // #1591
1666 INST(Vscatterpf1qpd , VexM_VM , E(660F38,C7,6,2,_,1,3,T1S), 0 , 232, 0 , 11160, 305, 153), // #1592
1667 INST(Vscatterpf1qps , VexM_VM , E(660F38,C7,6,2,_,0,2,T1S), 0 , 233, 0 , 11175, 305, 153), // #1593
1668 INST(Vscatterqpd , VexMr_VM , E(660F38,A3,_,x,_,1,3,T1S), 0 , 128, 0 , 11190, 405, 138), // #1594
1669 INST(Vscatterqps , VexMr_VM , E(660F38,A3,_,x,_,0,2,T1S), 0 , 129, 0 , 11202, 404, 138), // #1595
1670 INST(Vshuff32x4 , VexRvmi_Lx , E(660F3A,23,_,x,_,0,4,FV ), 0 , 111, 0 , 11214, 431, 138), // #1596
1671 INST(Vshuff64x2 , VexRvmi_Lx , E(660F3A,23,_,x,_,1,4,FV ), 0 , 112, 0 , 11225, 432, 138), // #1597
1672 INST(Vshufi32x4 , VexRvmi_Lx , E(660F3A,43,_,x,_,0,4,FV ), 0 , 111, 0 , 11236, 431, 138), // #1598
1673 INST(Vshufi64x2 , VexRvmi_Lx , E(660F3A,43,_,x,_,1,4,FV ), 0 , 112, 0 , 11247, 432, 138), // #1599
1674 INST(Vshufpd , VexRvmi_Lx , V(660F00,C6,_,x,I,1,4,FV ), 0 , 103, 0 , 11258, 433, 131), // #1600
1675 INST(Vshufps , VexRvmi_Lx , V(000F00,C6,_,x,I,0,4,FV ), 0 , 105, 0 , 11266, 434, 131), // #1601
1676 INST(Vsqrtpd , VexRm_Lx , V(660F00,51,_,x,I,1,4,FV ), 0 , 103, 0 , 11274, 435, 131), // #1602
1677 INST(Vsqrtph , VexRm_Lx , E(00MAP5,51,_,_,_,0,4,FV ), 0 , 104, 0 , 11282, 246, 132), // #1603
1678 INST(Vsqrtps , VexRm_Lx , V(000F00,51,_,x,I,0,4,FV ), 0 , 105, 0 , 11290, 235, 131), // #1604
1679 INST(Vsqrtsd , VexRvm , V(F20F00,51,_,I,I,1,3,T1S), 0 , 106, 0 , 11298, 199, 133), // #1605
1680 INST(Vsqrtsh , VexRvm , E(F3MAP5,51,_,_,_,0,1,T1S), 0 , 107, 0 , 11306, 200, 134), // #1606
1681 INST(Vsqrtss , VexRvm , V(F30F00,51,_,I,I,0,2,T1S), 0 , 108, 0 , 11314, 201, 133), // #1607
1682 INST(Vstmxcsr , VexM , V(000F00,AE,3,0,I,_,_,_ ), 0 , 234, 0 , 11322, 321, 135), // #1608
1683 INST(Vsubpd , VexRvm_Lx , V(660F00,5C,_,x,I,1,4,FV ), 0 , 103, 0 , 11331, 196, 131), // #1609
1684 INST(Vsubph , VexRvm_Lx , E(00MAP5,5C,_,_,_,0,4,FV ), 0 , 104, 0 , 11338, 197, 132), // #1610
1685 INST(Vsubps , VexRvm_Lx , V(000F00,5C,_,x,I,0,4,FV ), 0 , 105, 0 , 11345, 198, 131), // #1611
1686 INST(Vsubsd , VexRvm , V(F20F00,5C,_,I,I,1,3,T1S), 0 , 106, 0 , 11352, 199, 133), // #1612
1687 INST(Vsubsh , VexRvm , E(F3MAP5,5C,_,_,_,0,1,T1S), 0 , 107, 0 , 11359, 200, 134), // #1613
1688 INST(Vsubss , VexRvm , V(F30F00,5C,_,I,I,0,2,T1S), 0 , 108, 0 , 11366, 201, 133), // #1614
1689 INST(Vtestpd , VexRm_Lx , V(660F38,0F,_,x,0,_,_,_ ), 0 , 96 , 0 , 11373, 298, 167), // #1615
1690 INST(Vtestps , VexRm_Lx , V(660F38,0E,_,x,0,_,_,_ ), 0 , 96 , 0 , 11381, 298, 167), // #1616
1691 INST(Vucomisd , VexRm , V(660F00,2E,_,I,I,1,3,T1S), 0 , 125, 0 , 11389, 229, 143), // #1617
1692 INST(Vucomish , VexRm , E(00MAP5,2E,_,_,_,0,1,T1S), 0 , 126, 0 , 11398, 230, 134), // #1618
1693 INST(Vucomiss , VexRm , V(000F00,2E,_,I,I,0,2,T1S), 0 , 127, 0 , 11407, 231, 143), // #1619
1694 INST(Vunpckhpd , VexRvm_Lx , V(660F00,15,_,x,I,1,4,FV ), 0 , 103, 0 , 11416, 208, 131), // #1620
1695 INST(Vunpckhps , VexRvm_Lx , V(000F00,15,_,x,I,0,4,FV ), 0 , 105, 0 , 11426, 209, 131), // #1621
1696 INST(Vunpcklpd , VexRvm_Lx , V(660F00,14,_,x,I,1,4,FV ), 0 , 103, 0 , 11436, 208, 131), // #1622
1697 INST(Vunpcklps , VexRvm_Lx , V(000F00,14,_,x,I,0,4,FV ), 0 , 105, 0 , 11446, 209, 131), // #1623
1698 INST(Vxorpd , VexRvm_Lx , V(660F00,57,_,x,I,1,4,FV ), 0 , 103, 0 , 11456, 417, 139), // #1624
1699 INST(Vxorps , VexRvm_Lx , V(000F00,57,_,x,I,0,4,FV ), 0 , 105, 0 , 11463, 416, 139), // #1625
1700 INST(Vzeroall , VexOp , V(000F00,77,_,1,I,_,_,_ ), 0 , 68 , 0 , 11470, 436, 135), // #1626
1701 INST(Vzeroupper , VexOp , V(000F00,77,_,0,I,_,_,_ ), 0 , 72 , 0 , 11479, 436, 135), // #1627
1702 INST(Wbinvd , X86Op , O(000F00,09,_,_,_,_,_,_ ), 0 , 4 , 0 , 11490, 30 , 0 ), // #1628
1703 INST(Wbnoinvd , X86Op , O(F30F00,09,_,_,_,_,_,_ ), 0 , 6 , 0 , 11497, 30 , 176), // #1629
1704 INST(Wrfsbase , X86M , O(F30F00,AE,2,_,x,_,_,_ ), 0 , 235, 0 , 11506, 173, 111), // #1630
1705 INST(Wrgsbase , X86M , O(F30F00,AE,3,_,x,_,_,_ ), 0 , 236, 0 , 11515, 173, 111), // #1631
1706 INST(Wrmsr , X86Op , O(000F00,30,_,_,_,_,_,_ ), 0 , 4 , 0 , 11524, 174, 112), // #1632
1707 INST(Wrssd , X86Mr , O(000F38,F6,_,_,_,_,_,_ ), 0 , 83 , 0 , 11530, 437, 56 ), // #1633
1708 INST(Wrssq , X86Mr , O(000F38,F6,_,_,1,_,_,_ ), 0 , 237, 0 , 11536, 438, 56 ), // #1634
1709 INST(Wrussd , X86Mr , O(660F38,F5,_,_,_,_,_,_ ), 0 , 2 , 0 , 11542, 437, 56 ), // #1635
1710 INST(Wrussq , X86Mr , O(660F38,F5,_,_,1,_,_,_ ), 0 , 238, 0 , 11549, 438, 56 ), // #1636
1711 INST(Xabort , X86Op_Mod11RM_I8 , O(000000,C6,7,_,_,_,_,_ ), 0 , 27 , 0 , 11556, 80 , 177), // #1637
1712 INST(Xadd , X86Xadd , O(000F00,C0,_,_,x,_,_,_ ), 0 , 4 , 0 , 11563, 439, 38 ), // #1638
1713 INST(Xbegin , X86JmpRel , O(000000,C7,7,_,_,_,_,_ ), 0 , 27 , 0 , 11568, 440, 177), // #1639
1714 INST(Xchg , X86Xchg , O(000000,86,_,_,x,_,_,_ ), 0 , 0 , 0 , 462 , 441, 0 ), // #1640
1715 INST(Xend , X86Op , O(000F01,D5,_,_,_,_,_,_ ), 0 , 21 , 0 , 11575, 30 , 177), // #1641
1716 INST(Xgetbv , X86Op , O(000F01,D0,_,_,_,_,_,_ ), 0 , 21 , 0 , 11580, 174, 178), // #1642
1717 INST(Xlatb , X86Op , O(000000,D7,_,_,_,_,_,_ ), 0 , 0 , 0 , 11587, 30 , 0 ), // #1643
1718 INST(Xor , X86Arith , O(000000,30,6,_,x,_,_,_ ), 0 , 32 , 0 , 10540, 179, 1 ), // #1644
1719 INST(Xorpd , ExtRm , O(660F00,57,_,_,_,_,_,_ ), 0 , 3 , 0 , 11457, 151, 4 ), // #1645
1720 INST(Xorps , ExtRm , O(000F00,57,_,_,_,_,_,_ ), 0 , 4 , 0 , 11464, 151, 5 ), // #1646
1721 INST(Xresldtrk , X86Op , O(F20F01,E9,_,_,_,_,_,_ ), 0 , 92 , 0 , 11593, 30 , 179), // #1647
1722 INST(Xrstor , X86M_Only_EDX_EAX , O(000F00,AE,5,_,_,_,_,_ ), 0 , 77 , 0 , 1164 , 442, 178), // #1648
1723 INST(Xrstor64 , X86M_Only_EDX_EAX , O(000F00,AE,5,_,1,_,_,_ ), 0 , 239, 0 , 1172 , 443, 178), // #1649
1724 INST(Xrstors , X86M_Only_EDX_EAX , O(000F00,C7,3,_,_,_,_,_ ), 0 , 78 , 0 , 11603, 442, 180), // #1650
1725 INST(Xrstors64 , X86M_Only_EDX_EAX , O(000F00,C7,3,_,1,_,_,_ ), 0 , 240, 0 , 11611, 443, 180), // #1651
1726 INST(Xsave , X86M_Only_EDX_EAX , O(000F00,AE,4,_,_,_,_,_ ), 0 , 97 , 0 , 1182 , 442, 178), // #1652
1727 INST(Xsave64 , X86M_Only_EDX_EAX , O(000F00,AE,4,_,1,_,_,_ ), 0 , 241, 0 , 1189 , 443, 178), // #1653
1728 INST(Xsavec , X86M_Only_EDX_EAX , O(000F00,C7,4,_,_,_,_,_ ), 0 , 97 , 0 , 11621, 442, 181), // #1654
1729 INST(Xsavec64 , X86M_Only_EDX_EAX , O(000F00,C7,4,_,1,_,_,_ ), 0 , 241, 0 , 11628, 443, 181), // #1655
1730 INST(Xsaveopt , X86M_Only_EDX_EAX , O(000F00,AE,6,_,_,_,_,_ ), 0 , 80 , 0 , 11637, 442, 182), // #1656
1731 INST(Xsaveopt64 , X86M_Only_EDX_EAX , O(000F00,AE,6,_,1,_,_,_ ), 0 , 242, 0 , 11646, 443, 182), // #1657
1732 INST(Xsaves , X86M_Only_EDX_EAX , O(000F00,C7,5,_,_,_,_,_ ), 0 , 77 , 0 , 11657, 442, 180), // #1658
1733 INST(Xsaves64 , X86M_Only_EDX_EAX , O(000F00,C7,5,_,1,_,_,_ ), 0 , 239, 0 , 11664, 443, 180), // #1659
1734 INST(Xsetbv , X86Op , O(000F01,D1,_,_,_,_,_,_ ), 0 , 21 , 0 , 11673, 174, 178), // #1660
1735 INST(Xsusldtrk , X86Op , O(F20F01,E8,_,_,_,_,_,_ ), 0 , 92 , 0 , 11680, 30 , 179), // #1661
1736 INST(Xtest , X86Op , O(000F01,D6,_,_,_,_,_,_ ), 0 , 21 , 0 , 11690, 30 , 183) // #1662
66 INST(None , None , 0 , 0 , 0 , 0 , 0 , 0 ), // #0
67 INST(Aaa , X86Op_xAX , O(000000,37,_,_,_,_,_,_ ), 0 , 0 , 0 , 1 , 1 ), // #1
68 INST(Aad , X86I_xAX , O(000000,D5,_,_,_,_,_,_ ), 0 , 0 , 0 , 2 , 1 ), // #2
69 INST(Aam , X86I_xAX , O(000000,D4,_,_,_,_,_,_ ), 0 , 0 , 0 , 2 , 1 ), // #3
70 INST(Aas , X86Op_xAX , O(000000,3F,_,_,_,_,_,_ ), 0 , 0 , 0 , 1 , 1 ), // #4
71 INST(Adc , X86Arith , O(000000,10,2,_,x,_,_,_ ), 0 , 1 , 0 , 3 , 2 ), // #5
72 INST(Adcx , X86Rm , O(660F38,F6,_,_,x,_,_,_ ), 0 , 2 , 0 , 4 , 3 ), // #6
73 INST(Add , X86Arith , O(000000,00,0,_,x,_,_,_ ), 0 , 0 , 0 , 3 , 1 ), // #7
74 INST(Addpd , ExtRm , O(660F00,58,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #8
75 INST(Addps , ExtRm , O(000F00,58,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #9
76 INST(Addsd , ExtRm , O(F20F00,58,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 4 ), // #10
77 INST(Addss , ExtRm , O(F30F00,58,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #11
78 INST(Addsubpd , ExtRm , O(660F00,D0,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 6 ), // #12
79 INST(Addsubps , ExtRm , O(F20F00,D0,_,_,_,_,_,_ ), 0 , 5 , 0 , 5 , 6 ), // #13
80 INST(Adox , X86Rm , O(F30F38,F6,_,_,x,_,_,_ ), 0 , 7 , 0 , 4 , 7 ), // #14
81 INST(Aesdec , ExtRm , O(660F38,DE,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 8 ), // #15
82 INST(Aesdeclast , ExtRm , O(660F38,DF,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 8 ), // #16
83 INST(Aesenc , ExtRm , O(660F38,DC,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 8 ), // #17
84 INST(Aesenclast , ExtRm , O(660F38,DD,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 8 ), // #18
85 INST(Aesimc , ExtRm , O(660F38,DB,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 8 ), // #19
86 INST(Aeskeygenassist , ExtRmi , O(660F3A,DF,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 8 ), // #20
87 INST(And , X86Arith , O(000000,20,4,_,x,_,_,_ ), 0 , 9 , 0 , 9 , 1 ), // #21
88 INST(Andn , VexRvm_Wx , V(000F38,F2,_,0,x,_,_,_ ), 0 , 10 , 0 , 10 , 9 ), // #22
89 INST(Andnpd , ExtRm , O(660F00,55,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #23
90 INST(Andnps , ExtRm , O(000F00,55,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #24
91 INST(Andpd , ExtRm , O(660F00,54,_,_,_,_,_,_ ), 0 , 3 , 0 , 11 , 4 ), // #25
92 INST(Andps , ExtRm , O(000F00,54,_,_,_,_,_,_ ), 0 , 4 , 0 , 11 , 5 ), // #26
93 INST(Arpl , X86Mr_NoSize , O(000000,63,_,_,_,_,_,_ ), 0 , 0 , 0 , 12 , 10 ), // #27
94 INST(Bextr , VexRmv_Wx , V(000F38,F7,_,0,x,_,_,_ ), 0 , 10 , 0 , 13 , 9 ), // #28
95 INST(Blcfill , VexVm_Wx , V(XOP_M9,01,1,0,x,_,_,_ ), 0 , 11 , 0 , 14 , 11 ), // #29
96 INST(Blci , VexVm_Wx , V(XOP_M9,02,6,0,x,_,_,_ ), 0 , 12 , 0 , 14 , 11 ), // #30
97 INST(Blcic , VexVm_Wx , V(XOP_M9,01,5,0,x,_,_,_ ), 0 , 13 , 0 , 14 , 11 ), // #31
98 INST(Blcmsk , VexVm_Wx , V(XOP_M9,02,1,0,x,_,_,_ ), 0 , 11 , 0 , 14 , 11 ), // #32
99 INST(Blcs , VexVm_Wx , V(XOP_M9,01,3,0,x,_,_,_ ), 0 , 14 , 0 , 14 , 11 ), // #33
100 INST(Blendpd , ExtRmi , O(660F3A,0D,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 12 ), // #34
101 INST(Blendps , ExtRmi , O(660F3A,0C,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 12 ), // #35
102 INST(Blendvpd , ExtRm_XMM0 , O(660F38,15,_,_,_,_,_,_ ), 0 , 2 , 0 , 15 , 12 ), // #36
103 INST(Blendvps , ExtRm_XMM0 , O(660F38,14,_,_,_,_,_,_ ), 0 , 2 , 0 , 15 , 12 ), // #37
104 INST(Blsfill , VexVm_Wx , V(XOP_M9,01,2,0,x,_,_,_ ), 0 , 15 , 0 , 14 , 11 ), // #38
105 INST(Blsi , VexVm_Wx , V(000F38,F3,3,0,x,_,_,_ ), 0 , 16 , 0 , 14 , 9 ), // #39
106 INST(Blsic , VexVm_Wx , V(XOP_M9,01,6,0,x,_,_,_ ), 0 , 12 , 0 , 14 , 11 ), // #40
107 INST(Blsmsk , VexVm_Wx , V(000F38,F3,2,0,x,_,_,_ ), 0 , 17 , 0 , 14 , 9 ), // #41
108 INST(Blsr , VexVm_Wx , V(000F38,F3,1,0,x,_,_,_ ), 0 , 18 , 0 , 14 , 9 ), // #42
109 INST(Bndcl , X86Rm , O(F30F00,1A,_,_,_,_,_,_ ), 0 , 6 , 0 , 16 , 13 ), // #43
110 INST(Bndcn , X86Rm , O(F20F00,1B,_,_,_,_,_,_ ), 0 , 5 , 0 , 16 , 13 ), // #44
111 INST(Bndcu , X86Rm , O(F20F00,1A,_,_,_,_,_,_ ), 0 , 5 , 0 , 16 , 13 ), // #45
112 INST(Bndldx , X86Rm , O(000F00,1A,_,_,_,_,_,_ ), 0 , 4 , 0 , 17 , 13 ), // #46
113 INST(Bndmk , X86Rm , O(F30F00,1B,_,_,_,_,_,_ ), 0 , 6 , 0 , 18 , 13 ), // #47
114 INST(Bndmov , X86Bndmov , O(660F00,1A,_,_,_,_,_,_ ), O(660F00,1B,_,_,_,_,_,_ ), 3 , 1 , 19 , 13 ), // #48
115 INST(Bndstx , X86Mr , O(000F00,1B,_,_,_,_,_,_ ), 0 , 4 , 0 , 20 , 13 ), // #49
116 INST(Bound , X86Rm , O(000000,62,_,_,_,_,_,_ ), 0 , 0 , 0 , 21 , 0 ), // #50
117 INST(Bsf , X86Rm , O(000F00,BC,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 1 ), // #51
118 INST(Bsr , X86Rm , O(000F00,BD,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 1 ), // #52
119 INST(Bswap , X86Bswap , O(000F00,C8,_,_,x,_,_,_ ), 0 , 4 , 0 , 23 , 0 ), // #53
120 INST(Bt , X86Bt , O(000F00,A3,_,_,x,_,_,_ ), O(000F00,BA,4,_,x,_,_,_ ), 4 , 2 , 24 , 14 ), // #54
121 INST(Btc , X86Bt , O(000F00,BB,_,_,x,_,_,_ ), O(000F00,BA,7,_,x,_,_,_ ), 4 , 3 , 25 , 14 ), // #55
122 INST(Btr , X86Bt , O(000F00,B3,_,_,x,_,_,_ ), O(000F00,BA,6,_,x,_,_,_ ), 4 , 4 , 25 , 14 ), // #56
123 INST(Bts , X86Bt , O(000F00,AB,_,_,x,_,_,_ ), O(000F00,BA,5,_,x,_,_,_ ), 4 , 5 , 25 , 14 ), // #57
124 INST(Bzhi , VexRmv_Wx , V(000F38,F5,_,0,x,_,_,_ ), 0 , 10 , 0 , 13 , 15 ), // #58
125 INST(Call , X86Call , O(000000,FF,2,_,_,_,_,_ ), 0 , 1 , 0 , 26 , 1 ), // #59
126 INST(Cbw , X86Op_xAX , O(660000,98,_,_,_,_,_,_ ), 0 , 19 , 0 , 27 , 0 ), // #60
127 INST(Cdq , X86Op_xDX_xAX , O(000000,99,_,_,_,_,_,_ ), 0 , 0 , 0 , 28 , 0 ), // #61
128 INST(Cdqe , X86Op_xAX , O(000000,98,_,_,1,_,_,_ ), 0 , 20 , 0 , 29 , 0 ), // #62
129 INST(Clac , X86Op , O(000F01,CA,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 16 ), // #63
130 INST(Clc , X86Op , O(000000,F8,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 17 ), // #64
131 INST(Cld , X86Op , O(000000,FC,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 18 ), // #65
132 INST(Cldemote , X86M_Only , O(000F00,1C,0,_,_,_,_,_ ), 0 , 4 , 0 , 31 , 19 ), // #66
133 INST(Clflush , X86M_Only , O(000F00,AE,7,_,_,_,_,_ ), 0 , 22 , 0 , 31 , 20 ), // #67
134 INST(Clflushopt , X86M_Only , O(660F00,AE,7,_,_,_,_,_ ), 0 , 23 , 0 , 31 , 21 ), // #68
135 INST(Clgi , X86Op , O(000F01,DD,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 22 ), // #69
136 INST(Cli , X86Op , O(000000,FA,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 23 ), // #70
137 INST(Clrssbsy , X86M_Only , O(F30F00,AE,6,_,_,_,_,_ ), 0 , 24 , 0 , 32 , 24 ), // #71
138 INST(Clts , X86Op , O(000F00,06,_,_,_,_,_,_ ), 0 , 4 , 0 , 30 , 0 ), // #72
139 INST(Clui , X86Op , O(F30F01,EE,_,_,_,_,_,_ ), 0 , 25 , 0 , 33 , 25 ), // #73
140 INST(Clwb , X86M_Only , O(660F00,AE,6,_,_,_,_,_ ), 0 , 26 , 0 , 31 , 26 ), // #74
141 INST(Clzero , X86Op_MemZAX , O(000F01,FC,_,_,_,_,_,_ ), 0 , 21 , 0 , 34 , 27 ), // #75
142 INST(Cmc , X86Op , O(000000,F5,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 28 ), // #76
143 INST(Cmova , X86Rm , O(000F00,47,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 29 ), // #77
144 INST(Cmovae , X86Rm , O(000F00,43,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 30 ), // #78
145 INST(Cmovb , X86Rm , O(000F00,42,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 30 ), // #79
146 INST(Cmovbe , X86Rm , O(000F00,46,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 29 ), // #80
147 INST(Cmovc , X86Rm , O(000F00,42,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 30 ), // #81
148 INST(Cmove , X86Rm , O(000F00,44,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 31 ), // #82
149 INST(Cmovg , X86Rm , O(000F00,4F,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 32 ), // #83
150 INST(Cmovge , X86Rm , O(000F00,4D,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 33 ), // #84
151 INST(Cmovl , X86Rm , O(000F00,4C,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 33 ), // #85
152 INST(Cmovle , X86Rm , O(000F00,4E,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 32 ), // #86
153 INST(Cmovna , X86Rm , O(000F00,46,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 29 ), // #87
154 INST(Cmovnae , X86Rm , O(000F00,42,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 30 ), // #88
155 INST(Cmovnb , X86Rm , O(000F00,43,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 30 ), // #89
156 INST(Cmovnbe , X86Rm , O(000F00,47,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 29 ), // #90
157 INST(Cmovnc , X86Rm , O(000F00,43,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 30 ), // #91
158 INST(Cmovne , X86Rm , O(000F00,45,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 31 ), // #92
159 INST(Cmovng , X86Rm , O(000F00,4E,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 32 ), // #93
160 INST(Cmovnge , X86Rm , O(000F00,4C,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 33 ), // #94
161 INST(Cmovnl , X86Rm , O(000F00,4D,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 33 ), // #95
162 INST(Cmovnle , X86Rm , O(000F00,4F,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 32 ), // #96
163 INST(Cmovno , X86Rm , O(000F00,41,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 34 ), // #97
164 INST(Cmovnp , X86Rm , O(000F00,4B,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 35 ), // #98
165 INST(Cmovns , X86Rm , O(000F00,49,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 36 ), // #99
166 INST(Cmovnz , X86Rm , O(000F00,45,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 31 ), // #100
167 INST(Cmovo , X86Rm , O(000F00,40,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 34 ), // #101
168 INST(Cmovp , X86Rm , O(000F00,4A,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 35 ), // #102
169 INST(Cmovpe , X86Rm , O(000F00,4A,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 35 ), // #103
170 INST(Cmovpo , X86Rm , O(000F00,4B,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 35 ), // #104
171 INST(Cmovs , X86Rm , O(000F00,48,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 36 ), // #105
172 INST(Cmovz , X86Rm , O(000F00,44,_,_,x,_,_,_ ), 0 , 4 , 0 , 22 , 31 ), // #106
173 INST(Cmp , X86Arith , O(000000,38,7,_,x,_,_,_ ), 0 , 27 , 0 , 35 , 1 ), // #107
174 INST(Cmppd , ExtRmi , O(660F00,C2,_,_,_,_,_,_ ), 0 , 3 , 0 , 8 , 4 ), // #108
175 INST(Cmpps , ExtRmi , O(000F00,C2,_,_,_,_,_,_ ), 0 , 4 , 0 , 8 , 5 ), // #109
176 INST(Cmps , X86StrMm , O(000000,A6,_,_,_,_,_,_ ), 0 , 0 , 0 , 36 , 37 ), // #110
177 INST(Cmpsd , ExtRmi , O(F20F00,C2,_,_,_,_,_,_ ), 0 , 5 , 0 , 37 , 4 ), // #111
178 INST(Cmpss , ExtRmi , O(F30F00,C2,_,_,_,_,_,_ ), 0 , 6 , 0 , 38 , 5 ), // #112
179 INST(Cmpxchg , X86Cmpxchg , O(000F00,B0,_,_,x,_,_,_ ), 0 , 4 , 0 , 39 , 38 ), // #113
180 INST(Cmpxchg16b , X86Cmpxchg8b_16b , O(000F00,C7,1,_,1,_,_,_ ), 0 , 28 , 0 , 40 , 39 ), // #114
181 INST(Cmpxchg8b , X86Cmpxchg8b_16b , O(000F00,C7,1,_,_,_,_,_ ), 0 , 29 , 0 , 41 , 40 ), // #115
182 INST(Comisd , ExtRm , O(660F00,2F,_,_,_,_,_,_ ), 0 , 3 , 0 , 6 , 41 ), // #116
183 INST(Comiss , ExtRm , O(000F00,2F,_,_,_,_,_,_ ), 0 , 4 , 0 , 7 , 42 ), // #117
184 INST(Cpuid , X86Op , O(000F00,A2,_,_,_,_,_,_ ), 0 , 4 , 0 , 42 , 43 ), // #118
185 INST(Cqo , X86Op_xDX_xAX , O(000000,99,_,_,1,_,_,_ ), 0 , 20 , 0 , 43 , 0 ), // #119
186 INST(Crc32 , X86Crc , O(F20F38,F0,_,_,x,_,_,_ ), 0 , 30 , 0 , 44 , 44 ), // #120
187 INST(Cvtdq2pd , ExtRm , O(F30F00,E6,_,_,_,_,_,_ ), 0 , 6 , 0 , 6 , 4 ), // #121
188 INST(Cvtdq2ps , ExtRm , O(000F00,5B,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 4 ), // #122
189 INST(Cvtpd2dq , ExtRm , O(F20F00,E6,_,_,_,_,_,_ ), 0 , 5 , 0 , 5 , 4 ), // #123
190 INST(Cvtpd2pi , ExtRm , O(660F00,2D,_,_,_,_,_,_ ), 0 , 3 , 0 , 45 , 4 ), // #124
191 INST(Cvtpd2ps , ExtRm , O(660F00,5A,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #125
192 INST(Cvtpi2pd , ExtRm , O(660F00,2A,_,_,_,_,_,_ ), 0 , 3 , 0 , 46 , 4 ), // #126
193 INST(Cvtpi2ps , ExtRm , O(000F00,2A,_,_,_,_,_,_ ), 0 , 4 , 0 , 46 , 5 ), // #127
194 INST(Cvtps2dq , ExtRm , O(660F00,5B,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #128
195 INST(Cvtps2pd , ExtRm , O(000F00,5A,_,_,_,_,_,_ ), 0 , 4 , 0 , 6 , 4 ), // #129
196 INST(Cvtps2pi , ExtRm , O(000F00,2D,_,_,_,_,_,_ ), 0 , 4 , 0 , 47 , 5 ), // #130
197 INST(Cvtsd2si , ExtRm_Wx_GpqOnly , O(F20F00,2D,_,_,x,_,_,_ ), 0 , 5 , 0 , 48 , 4 ), // #131
198 INST(Cvtsd2ss , ExtRm , O(F20F00,5A,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 4 ), // #132
199 INST(Cvtsi2sd , ExtRm_Wx , O(F20F00,2A,_,_,x,_,_,_ ), 0 , 5 , 0 , 49 , 4 ), // #133
200 INST(Cvtsi2ss , ExtRm_Wx , O(F30F00,2A,_,_,x,_,_,_ ), 0 , 6 , 0 , 49 , 5 ), // #134
201 INST(Cvtss2sd , ExtRm , O(F30F00,5A,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 4 ), // #135
202 INST(Cvtss2si , ExtRm_Wx_GpqOnly , O(F30F00,2D,_,_,x,_,_,_ ), 0 , 6 , 0 , 50 , 5 ), // #136
203 INST(Cvttpd2dq , ExtRm , O(660F00,E6,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #137
204 INST(Cvttpd2pi , ExtRm , O(660F00,2C,_,_,_,_,_,_ ), 0 , 3 , 0 , 45 , 4 ), // #138
205 INST(Cvttps2dq , ExtRm , O(F30F00,5B,_,_,_,_,_,_ ), 0 , 6 , 0 , 5 , 4 ), // #139
206 INST(Cvttps2pi , ExtRm , O(000F00,2C,_,_,_,_,_,_ ), 0 , 4 , 0 , 47 , 5 ), // #140
207 INST(Cvttsd2si , ExtRm_Wx_GpqOnly , O(F20F00,2C,_,_,x,_,_,_ ), 0 , 5 , 0 , 48 , 4 ), // #141
208 INST(Cvttss2si , ExtRm_Wx_GpqOnly , O(F30F00,2C,_,_,x,_,_,_ ), 0 , 6 , 0 , 50 , 5 ), // #142
209 INST(Cwd , X86Op_xDX_xAX , O(660000,99,_,_,_,_,_,_ ), 0 , 19 , 0 , 51 , 0 ), // #143
210 INST(Cwde , X86Op_xAX , O(000000,98,_,_,_,_,_,_ ), 0 , 0 , 0 , 52 , 0 ), // #144
211 INST(Daa , X86Op , O(000000,27,_,_,_,_,_,_ ), 0 , 0 , 0 , 1 , 1 ), // #145
212 INST(Das , X86Op , O(000000,2F,_,_,_,_,_,_ ), 0 , 0 , 0 , 1 , 1 ), // #146
213 INST(Dec , X86IncDec , O(000000,FE,1,_,x,_,_,_ ), O(000000,48,_,_,x,_,_,_ ), 31 , 6 , 53 , 45 ), // #147
214 INST(Div , X86M_GPB_MulDiv , O(000000,F6,6,_,x,_,_,_ ), 0 , 32 , 0 , 54 , 1 ), // #148
215 INST(Divpd , ExtRm , O(660F00,5E,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #149
216 INST(Divps , ExtRm , O(000F00,5E,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #150
217 INST(Divsd , ExtRm , O(F20F00,5E,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 4 ), // #151
218 INST(Divss , ExtRm , O(F30F00,5E,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #152
219 INST(Dppd , ExtRmi , O(660F3A,41,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 12 ), // #153
220 INST(Dpps , ExtRmi , O(660F3A,40,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 12 ), // #154
221 INST(Emms , X86Op , O(000F00,77,_,_,_,_,_,_ ), 0 , 4 , 0 , 55 , 46 ), // #155
222 INST(Endbr32 , X86Op_Mod11RM , O(F30F00,1E,7,_,_,_,_,3 ), 0 , 33 , 0 , 30 , 47 ), // #156
223 INST(Endbr64 , X86Op_Mod11RM , O(F30F00,1E,7,_,_,_,_,2 ), 0 , 34 , 0 , 30 , 47 ), // #157
224 INST(Enqcmd , X86EnqcmdMovdir64b , O(F20F38,F8,_,_,_,_,_,_ ), 0 , 30 , 0 , 56 , 48 ), // #158
225 INST(Enqcmds , X86EnqcmdMovdir64b , O(F30F38,F8,_,_,_,_,_,_ ), 0 , 7 , 0 , 56 , 48 ), // #159
226 INST(Enter , X86Enter , O(000000,C8,_,_,_,_,_,_ ), 0 , 0 , 0 , 57 , 0 ), // #160
227 INST(Extractps , ExtExtract , O(660F3A,17,_,_,_,_,_,_ ), 0 , 8 , 0 , 58 , 12 ), // #161
228 INST(Extrq , ExtExtrq , O(660F00,79,_,_,_,_,_,_ ), O(660F00,78,0,_,_,_,_,_ ), 3 , 7 , 59 , 49 ), // #162
229 INST(F2xm1 , FpuOp , O_FPU(00,D9F0,_) , 0 , 35 , 0 , 30 , 0 ), // #163
230 INST(Fabs , FpuOp , O_FPU(00,D9E1,_) , 0 , 35 , 0 , 30 , 0 ), // #164
231 INST(Fadd , FpuArith , O_FPU(00,C0C0,0) , 0 , 36 , 0 , 60 , 0 ), // #165
232 INST(Faddp , FpuRDef , O_FPU(00,DEC0,_) , 0 , 37 , 0 , 61 , 0 ), // #166
233 INST(Fbld , X86M_Only , O_FPU(00,00DF,4) , 0 , 38 , 0 , 62 , 0 ), // #167
234 INST(Fbstp , X86M_Only , O_FPU(00,00DF,6) , 0 , 39 , 0 , 62 , 0 ), // #168
235 INST(Fchs , FpuOp , O_FPU(00,D9E0,_) , 0 , 35 , 0 , 30 , 0 ), // #169
236 INST(Fclex , FpuOp , O_FPU(9B,DBE2,_) , 0 , 40 , 0 , 30 , 0 ), // #170
237 INST(Fcmovb , FpuR , O_FPU(00,DAC0,_) , 0 , 41 , 0 , 63 , 30 ), // #171
238 INST(Fcmovbe , FpuR , O_FPU(00,DAD0,_) , 0 , 41 , 0 , 63 , 29 ), // #172
239 INST(Fcmove , FpuR , O_FPU(00,DAC8,_) , 0 , 41 , 0 , 63 , 31 ), // #173
240 INST(Fcmovnb , FpuR , O_FPU(00,DBC0,_) , 0 , 42 , 0 , 63 , 30 ), // #174
241 INST(Fcmovnbe , FpuR , O_FPU(00,DBD0,_) , 0 , 42 , 0 , 63 , 29 ), // #175
242 INST(Fcmovne , FpuR , O_FPU(00,DBC8,_) , 0 , 42 , 0 , 63 , 31 ), // #176
243 INST(Fcmovnu , FpuR , O_FPU(00,DBD8,_) , 0 , 42 , 0 , 63 , 35 ), // #177
244 INST(Fcmovu , FpuR , O_FPU(00,DAD8,_) , 0 , 41 , 0 , 63 , 35 ), // #178
245 INST(Fcom , FpuCom , O_FPU(00,D0D0,2) , 0 , 43 , 0 , 64 , 0 ), // #179
246 INST(Fcomi , FpuR , O_FPU(00,DBF0,_) , 0 , 42 , 0 , 63 , 50 ), // #180
247 INST(Fcomip , FpuR , O_FPU(00,DFF0,_) , 0 , 44 , 0 , 63 , 50 ), // #181
248 INST(Fcomp , FpuCom , O_FPU(00,D8D8,3) , 0 , 45 , 0 , 64 , 0 ), // #182
249 INST(Fcompp , FpuOp , O_FPU(00,DED9,_) , 0 , 37 , 0 , 30 , 0 ), // #183
250 INST(Fcos , FpuOp , O_FPU(00,D9FF,_) , 0 , 35 , 0 , 30 , 0 ), // #184
251 INST(Fdecstp , FpuOp , O_FPU(00,D9F6,_) , 0 , 35 , 0 , 30 , 0 ), // #185
252 INST(Fdiv , FpuArith , O_FPU(00,F0F8,6) , 0 , 46 , 0 , 60 , 0 ), // #186
253 INST(Fdivp , FpuRDef , O_FPU(00,DEF8,_) , 0 , 37 , 0 , 61 , 0 ), // #187
254 INST(Fdivr , FpuArith , O_FPU(00,F8F0,7) , 0 , 47 , 0 , 60 , 0 ), // #188
255 INST(Fdivrp , FpuRDef , O_FPU(00,DEF0,_) , 0 , 37 , 0 , 61 , 0 ), // #189
256 INST(Femms , X86Op , O(000F00,0E,_,_,_,_,_,_ ), 0 , 4 , 0 , 30 , 51 ), // #190
257 INST(Ffree , FpuR , O_FPU(00,DDC0,_) , 0 , 48 , 0 , 63 , 0 ), // #191
258 INST(Fiadd , FpuM , O_FPU(00,00DA,0) , 0 , 49 , 0 , 65 , 0 ), // #192
259 INST(Ficom , FpuM , O_FPU(00,00DA,2) , 0 , 50 , 0 , 65 , 0 ), // #193
260 INST(Ficomp , FpuM , O_FPU(00,00DA,3) , 0 , 51 , 0 , 65 , 0 ), // #194
261 INST(Fidiv , FpuM , O_FPU(00,00DA,6) , 0 , 39 , 0 , 65 , 0 ), // #195
262 INST(Fidivr , FpuM , O_FPU(00,00DA,7) , 0 , 52 , 0 , 65 , 0 ), // #196
263 INST(Fild , FpuM , O_FPU(00,00DB,0) , O_FPU(00,00DF,5) , 49 , 8 , 66 , 0 ), // #197
264 INST(Fimul , FpuM , O_FPU(00,00DA,1) , 0 , 53 , 0 , 65 , 0 ), // #198
265 INST(Fincstp , FpuOp , O_FPU(00,D9F7,_) , 0 , 35 , 0 , 30 , 0 ), // #199
266 INST(Finit , FpuOp , O_FPU(9B,DBE3,_) , 0 , 40 , 0 , 30 , 0 ), // #200
267 INST(Fist , FpuM , O_FPU(00,00DB,2) , 0 , 50 , 0 , 65 , 0 ), // #201
268 INST(Fistp , FpuM , O_FPU(00,00DB,3) , O_FPU(00,00DF,7) , 51 , 9 , 66 , 0 ), // #202
269 INST(Fisttp , FpuM , O_FPU(00,00DB,1) , O_FPU(00,00DD,1) , 53 , 10 , 66 , 6 ), // #203
270 INST(Fisub , FpuM , O_FPU(00,00DA,4) , 0 , 38 , 0 , 65 , 0 ), // #204
271 INST(Fisubr , FpuM , O_FPU(00,00DA,5) , 0 , 54 , 0 , 65 , 0 ), // #205
272 INST(Fld , FpuFldFst , O_FPU(00,00D9,0) , O_FPU(00,00DB,5) , 49 , 11 , 67 , 0 ), // #206
273 INST(Fld1 , FpuOp , O_FPU(00,D9E8,_) , 0 , 35 , 0 , 30 , 0 ), // #207
274 INST(Fldcw , X86M_Only , O_FPU(00,00D9,5) , 0 , 54 , 0 , 68 , 0 ), // #208
275 INST(Fldenv , X86M_Only , O_FPU(00,00D9,4) , 0 , 38 , 0 , 69 , 0 ), // #209
276 INST(Fldl2e , FpuOp , O_FPU(00,D9EA,_) , 0 , 35 , 0 , 30 , 0 ), // #210
277 INST(Fldl2t , FpuOp , O_FPU(00,D9E9,_) , 0 , 35 , 0 , 30 , 0 ), // #211
278 INST(Fldlg2 , FpuOp , O_FPU(00,D9EC,_) , 0 , 35 , 0 , 30 , 0 ), // #212
279 INST(Fldln2 , FpuOp , O_FPU(00,D9ED,_) , 0 , 35 , 0 , 30 , 0 ), // #213
280 INST(Fldpi , FpuOp , O_FPU(00,D9EB,_) , 0 , 35 , 0 , 30 , 0 ), // #214
281 INST(Fldz , FpuOp , O_FPU(00,D9EE,_) , 0 , 35 , 0 , 30 , 0 ), // #215
282 INST(Fmul , FpuArith , O_FPU(00,C8C8,1) , 0 , 55 , 0 , 60 , 0 ), // #216
283 INST(Fmulp , FpuRDef , O_FPU(00,DEC8,_) , 0 , 37 , 0 , 61 , 0 ), // #217
284 INST(Fnclex , FpuOp , O_FPU(00,DBE2,_) , 0 , 42 , 0 , 30 , 0 ), // #218
285 INST(Fninit , FpuOp , O_FPU(00,DBE3,_) , 0 , 42 , 0 , 30 , 0 ), // #219
286 INST(Fnop , FpuOp , O_FPU(00,D9D0,_) , 0 , 35 , 0 , 30 , 0 ), // #220
287 INST(Fnsave , X86M_Only , O_FPU(00,00DD,6) , 0 , 39 , 0 , 69 , 0 ), // #221
288 INST(Fnstcw , X86M_Only , O_FPU(00,00D9,7) , 0 , 52 , 0 , 68 , 0 ), // #222
289 INST(Fnstenv , X86M_Only , O_FPU(00,00D9,6) , 0 , 39 , 0 , 69 , 0 ), // #223
290 INST(Fnstsw , FpuStsw , O_FPU(00,00DD,7) , O_FPU(00,DFE0,_) , 52 , 12 , 70 , 0 ), // #224
291 INST(Fpatan , FpuOp , O_FPU(00,D9F3,_) , 0 , 35 , 0 , 30 , 0 ), // #225
292 INST(Fprem , FpuOp , O_FPU(00,D9F8,_) , 0 , 35 , 0 , 30 , 0 ), // #226
293 INST(Fprem1 , FpuOp , O_FPU(00,D9F5,_) , 0 , 35 , 0 , 30 , 0 ), // #227
294 INST(Fptan , FpuOp , O_FPU(00,D9F2,_) , 0 , 35 , 0 , 30 , 0 ), // #228
295 INST(Frndint , FpuOp , O_FPU(00,D9FC,_) , 0 , 35 , 0 , 30 , 0 ), // #229
296 INST(Frstor , X86M_Only , O_FPU(00,00DD,4) , 0 , 38 , 0 , 69 , 0 ), // #230
297 INST(Fsave , X86M_Only , O_FPU(9B,00DD,6) , 0 , 56 , 0 , 69 , 0 ), // #231
298 INST(Fscale , FpuOp , O_FPU(00,D9FD,_) , 0 , 35 , 0 , 30 , 0 ), // #232
299 INST(Fsin , FpuOp , O_FPU(00,D9FE,_) , 0 , 35 , 0 , 30 , 0 ), // #233
300 INST(Fsincos , FpuOp , O_FPU(00,D9FB,_) , 0 , 35 , 0 , 30 , 0 ), // #234
301 INST(Fsqrt , FpuOp , O_FPU(00,D9FA,_) , 0 , 35 , 0 , 30 , 0 ), // #235
302 INST(Fst , FpuFldFst , O_FPU(00,00D9,2) , 0 , 50 , 0 , 71 , 0 ), // #236
303 INST(Fstcw , X86M_Only , O_FPU(9B,00D9,7) , 0 , 57 , 0 , 68 , 0 ), // #237
304 INST(Fstenv , X86M_Only , O_FPU(9B,00D9,6) , 0 , 56 , 0 , 69 , 0 ), // #238
305 INST(Fstp , FpuFldFst , O_FPU(00,00D9,3) , O(000000,DB,7,_,_,_,_,_ ), 51 , 13 , 67 , 0 ), // #239
306 INST(Fstsw , FpuStsw , O_FPU(9B,00DD,7) , O_FPU(9B,DFE0,_) , 57 , 14 , 70 , 0 ), // #240
307 INST(Fsub , FpuArith , O_FPU(00,E0E8,4) , 0 , 58 , 0 , 60 , 0 ), // #241
308 INST(Fsubp , FpuRDef , O_FPU(00,DEE8,_) , 0 , 37 , 0 , 61 , 0 ), // #242
309 INST(Fsubr , FpuArith , O_FPU(00,E8E0,5) , 0 , 59 , 0 , 60 , 0 ), // #243
310 INST(Fsubrp , FpuRDef , O_FPU(00,DEE0,_) , 0 , 37 , 0 , 61 , 0 ), // #244
311 INST(Ftst , FpuOp , O_FPU(00,D9E4,_) , 0 , 35 , 0 , 30 , 0 ), // #245
312 INST(Fucom , FpuRDef , O_FPU(00,DDE0,_) , 0 , 48 , 0 , 61 , 0 ), // #246
313 INST(Fucomi , FpuR , O_FPU(00,DBE8,_) , 0 , 42 , 0 , 63 , 50 ), // #247
314 INST(Fucomip , FpuR , O_FPU(00,DFE8,_) , 0 , 44 , 0 , 63 , 50 ), // #248
315 INST(Fucomp , FpuRDef , O_FPU(00,DDE8,_) , 0 , 48 , 0 , 61 , 0 ), // #249
316 INST(Fucompp , FpuOp , O_FPU(00,DAE9,_) , 0 , 41 , 0 , 30 , 0 ), // #250
317 INST(Fwait , X86Op , O_FPU(00,009B,_) , 0 , 49 , 0 , 30 , 0 ), // #251
318 INST(Fxam , FpuOp , O_FPU(00,D9E5,_) , 0 , 35 , 0 , 30 , 0 ), // #252
319 INST(Fxch , FpuR , O_FPU(00,D9C8,_) , 0 , 35 , 0 , 61 , 0 ), // #253
320 INST(Fxrstor , X86M_Only , O(000F00,AE,1,_,_,_,_,_ ), 0 , 29 , 0 , 69 , 52 ), // #254
321 INST(Fxrstor64 , X86M_Only , O(000F00,AE,1,_,1,_,_,_ ), 0 , 28 , 0 , 72 , 52 ), // #255
322 INST(Fxsave , X86M_Only , O(000F00,AE,0,_,_,_,_,_ ), 0 , 4 , 0 , 69 , 52 ), // #256
323 INST(Fxsave64 , X86M_Only , O(000F00,AE,0,_,1,_,_,_ ), 0 , 60 , 0 , 72 , 52 ), // #257
324 INST(Fxtract , FpuOp , O_FPU(00,D9F4,_) , 0 , 35 , 0 , 30 , 0 ), // #258
325 INST(Fyl2x , FpuOp , O_FPU(00,D9F1,_) , 0 , 35 , 0 , 30 , 0 ), // #259
326 INST(Fyl2xp1 , FpuOp , O_FPU(00,D9F9,_) , 0 , 35 , 0 , 30 , 0 ), // #260
327 INST(Getsec , X86Op , O(000F00,37,_,_,_,_,_,_ ), 0 , 4 , 0 , 30 , 53 ), // #261
328 INST(Gf2p8affineinvqb , ExtRmi , O(660F3A,CF,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 54 ), // #262
329 INST(Gf2p8affineqb , ExtRmi , O(660F3A,CE,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 54 ), // #263
330 INST(Gf2p8mulb , ExtRm , O(660F38,CF,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 54 ), // #264
331 INST(Haddpd , ExtRm , O(660F00,7C,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 6 ), // #265
332 INST(Haddps , ExtRm , O(F20F00,7C,_,_,_,_,_,_ ), 0 , 5 , 0 , 5 , 6 ), // #266
333 INST(Hlt , X86Op , O(000000,F4,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 0 ), // #267
334 INST(Hreset , X86Op_Mod11RM_I8 , O(F30F3A,F0,0,_,_,_,_,_ ), 0 , 61 , 0 , 73 , 55 ), // #268
335 INST(Hsubpd , ExtRm , O(660F00,7D,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 6 ), // #269
336 INST(Hsubps , ExtRm , O(F20F00,7D,_,_,_,_,_,_ ), 0 , 5 , 0 , 5 , 6 ), // #270
337 INST(Idiv , X86M_GPB_MulDiv , O(000000,F6,7,_,x,_,_,_ ), 0 , 27 , 0 , 54 , 1 ), // #271
338 INST(Imul , X86Imul , O(000000,F6,5,_,x,_,_,_ ), 0 , 62 , 0 , 74 , 1 ), // #272
339 INST(In , X86In , O(000000,EC,_,_,_,_,_,_ ), O(000000,E4,_,_,_,_,_,_ ), 0 , 15 , 75 , 0 ), // #273
340 INST(Inc , X86IncDec , O(000000,FE,0,_,x,_,_,_ ), O(000000,40,_,_,x,_,_,_ ), 0 , 16 , 53 , 45 ), // #274
341 INST(Incsspd , X86M , O(F30F00,AE,5,_,0,_,_,_ ), 0 , 63 , 0 , 76 , 56 ), // #275
342 INST(Incsspq , X86M , O(F30F00,AE,5,_,1,_,_,_ ), 0 , 64 , 0 , 77 , 56 ), // #276
343 INST(Ins , X86Ins , O(000000,6C,_,_,_,_,_,_ ), 0 , 0 , 0 , 78 , 0 ), // #277
344 INST(Insertps , ExtRmi , O(660F3A,21,_,_,_,_,_,_ ), 0 , 8 , 0 , 38 , 12 ), // #278
345 INST(Insertq , ExtInsertq , O(F20F00,79,_,_,_,_,_,_ ), O(F20F00,78,_,_,_,_,_,_ ), 5 , 17 , 79 , 49 ), // #279
346 INST(Int , X86Int , O(000000,CD,_,_,_,_,_,_ ), 0 , 0 , 0 , 80 , 0 ), // #280
347 INST(Int3 , X86Op , O(000000,CC,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 0 ), // #281
348 INST(Into , X86Op , O(000000,CE,_,_,_,_,_,_ ), 0 , 0 , 0 , 81 , 57 ), // #282
349 INST(Invd , X86Op , O(000F00,08,_,_,_,_,_,_ ), 0 , 4 , 0 , 30 , 43 ), // #283
350 INST(Invept , X86Rm_NoSize , O(660F38,80,_,_,_,_,_,_ ), 0 , 2 , 0 , 82 , 58 ), // #284
351 INST(Invlpg , X86M_Only , O(000F00,01,7,_,_,_,_,_ ), 0 , 22 , 0 , 69 , 43 ), // #285
352 INST(Invlpga , X86Op_xAddr , O(000F01,DF,_,_,_,_,_,_ ), 0 , 21 , 0 , 83 , 22 ), // #286
353 INST(Invpcid , X86Rm_NoSize , O(660F38,82,_,_,_,_,_,_ ), 0 , 2 , 0 , 82 , 43 ), // #287
354 INST(Invvpid , X86Rm_NoSize , O(660F38,81,_,_,_,_,_,_ ), 0 , 2 , 0 , 82 , 58 ), // #288
355 INST(Iret , X86Op , O(660000,CF,_,_,_,_,_,_ ), 0 , 19 , 0 , 84 , 1 ), // #289
356 INST(Iretd , X86Op , O(000000,CF,_,_,_,_,_,_ ), 0 , 0 , 0 , 84 , 1 ), // #290
357 INST(Iretq , X86Op , O(000000,CF,_,_,1,_,_,_ ), 0 , 20 , 0 , 85 , 1 ), // #291
358 INST(Ja , X86Jcc , O(000F00,87,_,_,_,_,_,_ ), O(000000,77,_,_,_,_,_,_ ), 4 , 18 , 86 , 59 ), // #292
359 INST(Jae , X86Jcc , O(000F00,83,_,_,_,_,_,_ ), O(000000,73,_,_,_,_,_,_ ), 4 , 19 , 86 , 60 ), // #293
360 INST(Jb , X86Jcc , O(000F00,82,_,_,_,_,_,_ ), O(000000,72,_,_,_,_,_,_ ), 4 , 20 , 86 , 60 ), // #294
361 INST(Jbe , X86Jcc , O(000F00,86,_,_,_,_,_,_ ), O(000000,76,_,_,_,_,_,_ ), 4 , 21 , 86 , 59 ), // #295
362 INST(Jc , X86Jcc , O(000F00,82,_,_,_,_,_,_ ), O(000000,72,_,_,_,_,_,_ ), 4 , 20 , 86 , 60 ), // #296
363 INST(Je , X86Jcc , O(000F00,84,_,_,_,_,_,_ ), O(000000,74,_,_,_,_,_,_ ), 4 , 22 , 86 , 61 ), // #297
364 INST(Jecxz , X86JecxzLoop , 0 , O(000000,E3,_,_,_,_,_,_ ), 0 , 23 , 87 , 0 ), // #298
365 INST(Jg , X86Jcc , O(000F00,8F,_,_,_,_,_,_ ), O(000000,7F,_,_,_,_,_,_ ), 4 , 24 , 86 , 62 ), // #299
366 INST(Jge , X86Jcc , O(000F00,8D,_,_,_,_,_,_ ), O(000000,7D,_,_,_,_,_,_ ), 4 , 25 , 86 , 63 ), // #300
367 INST(Jl , X86Jcc , O(000F00,8C,_,_,_,_,_,_ ), O(000000,7C,_,_,_,_,_,_ ), 4 , 26 , 86 , 63 ), // #301
368 INST(Jle , X86Jcc , O(000F00,8E,_,_,_,_,_,_ ), O(000000,7E,_,_,_,_,_,_ ), 4 , 27 , 86 , 62 ), // #302
369 INST(Jmp , X86Jmp , O(000000,FF,4,_,_,_,_,_ ), O(000000,EB,_,_,_,_,_,_ ), 9 , 28 , 88 , 0 ), // #303
370 INST(Jna , X86Jcc , O(000F00,86,_,_,_,_,_,_ ), O(000000,76,_,_,_,_,_,_ ), 4 , 21 , 86 , 59 ), // #304
371 INST(Jnae , X86Jcc , O(000F00,82,_,_,_,_,_,_ ), O(000000,72,_,_,_,_,_,_ ), 4 , 20 , 86 , 60 ), // #305
372 INST(Jnb , X86Jcc , O(000F00,83,_,_,_,_,_,_ ), O(000000,73,_,_,_,_,_,_ ), 4 , 19 , 86 , 60 ), // #306
373 INST(Jnbe , X86Jcc , O(000F00,87,_,_,_,_,_,_ ), O(000000,77,_,_,_,_,_,_ ), 4 , 18 , 86 , 59 ), // #307
374 INST(Jnc , X86Jcc , O(000F00,83,_,_,_,_,_,_ ), O(000000,73,_,_,_,_,_,_ ), 4 , 19 , 86 , 60 ), // #308
375 INST(Jne , X86Jcc , O(000F00,85,_,_,_,_,_,_ ), O(000000,75,_,_,_,_,_,_ ), 4 , 29 , 86 , 61 ), // #309
376 INST(Jng , X86Jcc , O(000F00,8E,_,_,_,_,_,_ ), O(000000,7E,_,_,_,_,_,_ ), 4 , 27 , 86 , 62 ), // #310
377 INST(Jnge , X86Jcc , O(000F00,8C,_,_,_,_,_,_ ), O(000000,7C,_,_,_,_,_,_ ), 4 , 26 , 86 , 63 ), // #311
378 INST(Jnl , X86Jcc , O(000F00,8D,_,_,_,_,_,_ ), O(000000,7D,_,_,_,_,_,_ ), 4 , 25 , 86 , 63 ), // #312
379 INST(Jnle , X86Jcc , O(000F00,8F,_,_,_,_,_,_ ), O(000000,7F,_,_,_,_,_,_ ), 4 , 24 , 86 , 62 ), // #313
380 INST(Jno , X86Jcc , O(000F00,81,_,_,_,_,_,_ ), O(000000,71,_,_,_,_,_,_ ), 4 , 30 , 86 , 57 ), // #314
381 INST(Jnp , X86Jcc , O(000F00,8B,_,_,_,_,_,_ ), O(000000,7B,_,_,_,_,_,_ ), 4 , 31 , 86 , 64 ), // #315
382 INST(Jns , X86Jcc , O(000F00,89,_,_,_,_,_,_ ), O(000000,79,_,_,_,_,_,_ ), 4 , 32 , 86 , 65 ), // #316
383 INST(Jnz , X86Jcc , O(000F00,85,_,_,_,_,_,_ ), O(000000,75,_,_,_,_,_,_ ), 4 , 29 , 86 , 61 ), // #317
384 INST(Jo , X86Jcc , O(000F00,80,_,_,_,_,_,_ ), O(000000,70,_,_,_,_,_,_ ), 4 , 33 , 86 , 57 ), // #318
385 INST(Jp , X86Jcc , O(000F00,8A,_,_,_,_,_,_ ), O(000000,7A,_,_,_,_,_,_ ), 4 , 34 , 86 , 64 ), // #319
386 INST(Jpe , X86Jcc , O(000F00,8A,_,_,_,_,_,_ ), O(000000,7A,_,_,_,_,_,_ ), 4 , 34 , 86 , 64 ), // #320
387 INST(Jpo , X86Jcc , O(000F00,8B,_,_,_,_,_,_ ), O(000000,7B,_,_,_,_,_,_ ), 4 , 31 , 86 , 64 ), // #321
388 INST(Js , X86Jcc , O(000F00,88,_,_,_,_,_,_ ), O(000000,78,_,_,_,_,_,_ ), 4 , 35 , 86 , 65 ), // #322
389 INST(Jz , X86Jcc , O(000F00,84,_,_,_,_,_,_ ), O(000000,74,_,_,_,_,_,_ ), 4 , 22 , 86 , 61 ), // #323
390 INST(Kaddb , VexRvm , V(660F00,4A,_,1,0,_,_,_ ), 0 , 65 , 0 , 89 , 66 ), // #324
391 INST(Kaddd , VexRvm , V(660F00,4A,_,1,1,_,_,_ ), 0 , 66 , 0 , 89 , 67 ), // #325
392 INST(Kaddq , VexRvm , V(000F00,4A,_,1,1,_,_,_ ), 0 , 67 , 0 , 89 , 67 ), // #326
393 INST(Kaddw , VexRvm , V(000F00,4A,_,1,0,_,_,_ ), 0 , 68 , 0 , 89 , 66 ), // #327
394 INST(Kandb , VexRvm , V(660F00,41,_,1,0,_,_,_ ), 0 , 65 , 0 , 89 , 66 ), // #328
395 INST(Kandd , VexRvm , V(660F00,41,_,1,1,_,_,_ ), 0 , 66 , 0 , 89 , 67 ), // #329
396 INST(Kandnb , VexRvm , V(660F00,42,_,1,0,_,_,_ ), 0 , 65 , 0 , 89 , 66 ), // #330
397 INST(Kandnd , VexRvm , V(660F00,42,_,1,1,_,_,_ ), 0 , 66 , 0 , 89 , 67 ), // #331
398 INST(Kandnq , VexRvm , V(000F00,42,_,1,1,_,_,_ ), 0 , 67 , 0 , 89 , 67 ), // #332
399 INST(Kandnw , VexRvm , V(000F00,42,_,1,0,_,_,_ ), 0 , 68 , 0 , 89 , 68 ), // #333
400 INST(Kandq , VexRvm , V(000F00,41,_,1,1,_,_,_ ), 0 , 67 , 0 , 89 , 67 ), // #334
401 INST(Kandw , VexRvm , V(000F00,41,_,1,0,_,_,_ ), 0 , 68 , 0 , 89 , 68 ), // #335
402 INST(Kmovb , VexKmov , V(660F00,90,_,0,0,_,_,_ ), V(660F00,92,_,0,0,_,_,_ ), 69 , 36 , 90 , 69 ), // #336
403 INST(Kmovd , VexKmov , V(660F00,90,_,0,1,_,_,_ ), V(F20F00,92,_,0,0,_,_,_ ), 70 , 37 , 91 , 70 ), // #337
404 INST(Kmovq , VexKmov , V(000F00,90,_,0,1,_,_,_ ), V(F20F00,92,_,0,1,_,_,_ ), 71 , 38 , 92 , 70 ), // #338
405 INST(Kmovw , VexKmov , V(000F00,90,_,0,0,_,_,_ ), V(000F00,92,_,0,0,_,_,_ ), 72 , 39 , 93 , 71 ), // #339
406 INST(Knotb , VexRm , V(660F00,44,_,0,0,_,_,_ ), 0 , 69 , 0 , 94 , 66 ), // #340
407 INST(Knotd , VexRm , V(660F00,44,_,0,1,_,_,_ ), 0 , 70 , 0 , 94 , 67 ), // #341
408 INST(Knotq , VexRm , V(000F00,44,_,0,1,_,_,_ ), 0 , 71 , 0 , 94 , 67 ), // #342
409 INST(Knotw , VexRm , V(000F00,44,_,0,0,_,_,_ ), 0 , 72 , 0 , 94 , 68 ), // #343
410 INST(Korb , VexRvm , V(660F00,45,_,1,0,_,_,_ ), 0 , 65 , 0 , 89 , 66 ), // #344
411 INST(Kord , VexRvm , V(660F00,45,_,1,1,_,_,_ ), 0 , 66 , 0 , 89 , 67 ), // #345
412 INST(Korq , VexRvm , V(000F00,45,_,1,1,_,_,_ ), 0 , 67 , 0 , 89 , 67 ), // #346
413 INST(Kortestb , VexRm , V(660F00,98,_,0,0,_,_,_ ), 0 , 69 , 0 , 94 , 72 ), // #347
414 INST(Kortestd , VexRm , V(660F00,98,_,0,1,_,_,_ ), 0 , 70 , 0 , 94 , 73 ), // #348
415 INST(Kortestq , VexRm , V(000F00,98,_,0,1,_,_,_ ), 0 , 71 , 0 , 94 , 73 ), // #349
416 INST(Kortestw , VexRm , V(000F00,98,_,0,0,_,_,_ ), 0 , 72 , 0 , 94 , 74 ), // #350
417 INST(Korw , VexRvm , V(000F00,45,_,1,0,_,_,_ ), 0 , 68 , 0 , 89 , 68 ), // #351
418 INST(Kshiftlb , VexRmi , V(660F3A,32,_,0,0,_,_,_ ), 0 , 73 , 0 , 95 , 66 ), // #352
419 INST(Kshiftld , VexRmi , V(660F3A,33,_,0,0,_,_,_ ), 0 , 73 , 0 , 95 , 67 ), // #353
420 INST(Kshiftlq , VexRmi , V(660F3A,33,_,0,1,_,_,_ ), 0 , 74 , 0 , 95 , 67 ), // #354
421 INST(Kshiftlw , VexRmi , V(660F3A,32,_,0,1,_,_,_ ), 0 , 74 , 0 , 95 , 68 ), // #355
422 INST(Kshiftrb , VexRmi , V(660F3A,30,_,0,0,_,_,_ ), 0 , 73 , 0 , 95 , 66 ), // #356
423 INST(Kshiftrd , VexRmi , V(660F3A,31,_,0,0,_,_,_ ), 0 , 73 , 0 , 95 , 67 ), // #357
424 INST(Kshiftrq , VexRmi , V(660F3A,31,_,0,1,_,_,_ ), 0 , 74 , 0 , 95 , 67 ), // #358
425 INST(Kshiftrw , VexRmi , V(660F3A,30,_,0,1,_,_,_ ), 0 , 74 , 0 , 95 , 68 ), // #359
426 INST(Ktestb , VexRm , V(660F00,99,_,0,0,_,_,_ ), 0 , 69 , 0 , 94 , 72 ), // #360
427 INST(Ktestd , VexRm , V(660F00,99,_,0,1,_,_,_ ), 0 , 70 , 0 , 94 , 73 ), // #361
428 INST(Ktestq , VexRm , V(000F00,99,_,0,1,_,_,_ ), 0 , 71 , 0 , 94 , 73 ), // #362
429 INST(Ktestw , VexRm , V(000F00,99,_,0,0,_,_,_ ), 0 , 72 , 0 , 94 , 72 ), // #363
430 INST(Kunpckbw , VexRvm , V(660F00,4B,_,1,0,_,_,_ ), 0 , 65 , 0 , 89 , 68 ), // #364
431 INST(Kunpckdq , VexRvm , V(000F00,4B,_,1,1,_,_,_ ), 0 , 67 , 0 , 89 , 67 ), // #365
432 INST(Kunpckwd , VexRvm , V(000F00,4B,_,1,0,_,_,_ ), 0 , 68 , 0 , 89 , 67 ), // #366
433 INST(Kxnorb , VexRvm , V(660F00,46,_,1,0,_,_,_ ), 0 , 65 , 0 , 96 , 66 ), // #367
434 INST(Kxnord , VexRvm , V(660F00,46,_,1,1,_,_,_ ), 0 , 66 , 0 , 96 , 67 ), // #368
435 INST(Kxnorq , VexRvm , V(000F00,46,_,1,1,_,_,_ ), 0 , 67 , 0 , 96 , 67 ), // #369
436 INST(Kxnorw , VexRvm , V(000F00,46,_,1,0,_,_,_ ), 0 , 68 , 0 , 96 , 68 ), // #370
437 INST(Kxorb , VexRvm , V(660F00,47,_,1,0,_,_,_ ), 0 , 65 , 0 , 96 , 66 ), // #371
438 INST(Kxord , VexRvm , V(660F00,47,_,1,1,_,_,_ ), 0 , 66 , 0 , 96 , 67 ), // #372
439 INST(Kxorq , VexRvm , V(000F00,47,_,1,1,_,_,_ ), 0 , 67 , 0 , 96 , 67 ), // #373
440 INST(Kxorw , VexRvm , V(000F00,47,_,1,0,_,_,_ ), 0 , 68 , 0 , 96 , 68 ), // #374
441 INST(Lahf , X86Op , O(000000,9F,_,_,_,_,_,_ ), 0 , 0 , 0 , 97 , 75 ), // #375
442 INST(Lar , X86Rm , O(000F00,02,_,_,_,_,_,_ ), 0 , 4 , 0 , 98 , 10 ), // #376
443 INST(Lcall , X86LcallLjmp , O(000000,FF,3,_,_,_,_,_ ), O(000000,9A,_,_,_,_,_,_ ), 75 , 40 , 99 , 1 ), // #377
444 INST(Lddqu , ExtRm , O(F20F00,F0,_,_,_,_,_,_ ), 0 , 5 , 0 , 100, 6 ), // #378
445 INST(Ldmxcsr , X86M_Only , O(000F00,AE,2,_,_,_,_,_ ), 0 , 76 , 0 , 101, 5 ), // #379
446 INST(Lds , X86Rm , O(000000,C5,_,_,_,_,_,_ ), 0 , 0 , 0 , 102, 0 ), // #380
447 INST(Ldtilecfg , AmxCfg , V(000F38,49,_,0,0,_,_,_ ), 0 , 10 , 0 , 103, 76 ), // #381
448 INST(Lea , X86Lea , O(000000,8D,_,_,x,_,_,_ ), 0 , 0 , 0 , 104, 0 ), // #382
449 INST(Leave , X86Op , O(000000,C9,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 0 ), // #383
450 INST(Les , X86Rm , O(000000,C4,_,_,_,_,_,_ ), 0 , 0 , 0 , 102, 0 ), // #384
451 INST(Lfence , X86Fence , O(000F00,AE,5,_,_,_,_,_ ), 0 , 77 , 0 , 30 , 4 ), // #385
452 INST(Lfs , X86Rm , O(000F00,B4,_,_,_,_,_,_ ), 0 , 4 , 0 , 105, 0 ), // #386
453 INST(Lgdt , X86M_Only , O(000F00,01,2,_,_,_,_,_ ), 0 , 76 , 0 , 69 , 0 ), // #387
454 INST(Lgs , X86Rm , O(000F00,B5,_,_,_,_,_,_ ), 0 , 4 , 0 , 105, 0 ), // #388
455 INST(Lidt , X86M_Only , O(000F00,01,3,_,_,_,_,_ ), 0 , 78 , 0 , 69 , 0 ), // #389
456 INST(Ljmp , X86LcallLjmp , O(000000,FF,5,_,_,_,_,_ ), O(000000,EA,_,_,_,_,_,_ ), 62 , 41 , 106, 0 ), // #390
457 INST(Lldt , X86M_NoSize , O(000F00,00,2,_,_,_,_,_ ), 0 , 76 , 0 , 107, 0 ), // #391
458 INST(Llwpcb , VexR_Wx , V(XOP_M9,12,0,0,x,_,_,_ ), 0 , 79 , 0 , 108, 77 ), // #392
459 INST(Lmsw , X86M_NoSize , O(000F00,01,6,_,_,_,_,_ ), 0 , 80 , 0 , 107, 0 ), // #393
460 INST(Lods , X86StrRm , O(000000,AC,_,_,_,_,_,_ ), 0 , 0 , 0 , 109, 78 ), // #394
461 INST(Loop , X86JecxzLoop , 0 , O(000000,E2,_,_,_,_,_,_ ), 0 , 42 , 110, 0 ), // #395
462 INST(Loope , X86JecxzLoop , 0 , O(000000,E1,_,_,_,_,_,_ ), 0 , 43 , 110, 61 ), // #396
463 INST(Loopne , X86JecxzLoop , 0 , O(000000,E0,_,_,_,_,_,_ ), 0 , 44 , 110, 61 ), // #397
464 INST(Lsl , X86Rm , O(000F00,03,_,_,_,_,_,_ ), 0 , 4 , 0 , 111, 10 ), // #398
465 INST(Lss , X86Rm , O(000F00,B2,_,_,_,_,_,_ ), 0 , 4 , 0 , 105, 0 ), // #399
466 INST(Ltr , X86M_NoSize , O(000F00,00,3,_,_,_,_,_ ), 0 , 78 , 0 , 107, 0 ), // #400
467 INST(Lwpins , VexVmi4_Wx , V(XOP_MA,12,0,0,x,_,_,_ ), 0 , 81 , 0 , 112, 77 ), // #401
468 INST(Lwpval , VexVmi4_Wx , V(XOP_MA,12,1,0,x,_,_,_ ), 0 , 82 , 0 , 112, 77 ), // #402
469 INST(Lzcnt , X86Rm_Raw66H , O(F30F00,BD,_,_,x,_,_,_ ), 0 , 6 , 0 , 22 , 79 ), // #403
470 INST(Maskmovdqu , ExtRm_ZDI , O(660F00,F7,_,_,_,_,_,_ ), 0 , 3 , 0 , 113, 4 ), // #404
471 INST(Maskmovq , ExtRm_ZDI , O(000F00,F7,_,_,_,_,_,_ ), 0 , 4 , 0 , 114, 80 ), // #405
472 INST(Maxpd , ExtRm , O(660F00,5F,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #406
473 INST(Maxps , ExtRm , O(000F00,5F,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #407
474 INST(Maxsd , ExtRm , O(F20F00,5F,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 4 ), // #408
475 INST(Maxss , ExtRm , O(F30F00,5F,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #409
476 INST(Mcommit , X86Op , O(F30F01,FA,_,_,_,_,_,_ ), 0 , 25 , 0 , 30 , 81 ), // #410
477 INST(Mfence , X86Fence , O(000F00,AE,6,_,_,_,_,_ ), 0 , 80 , 0 , 30 , 4 ), // #411
478 INST(Minpd , ExtRm , O(660F00,5D,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #412
479 INST(Minps , ExtRm , O(000F00,5D,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #413
480 INST(Minsd , ExtRm , O(F20F00,5D,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 4 ), // #414
481 INST(Minss , ExtRm , O(F30F00,5D,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #415
482 INST(Monitor , X86Op , O(000F01,C8,_,_,_,_,_,_ ), 0 , 21 , 0 , 115, 82 ), // #416
483 INST(Monitorx , X86Op , O(000F01,FA,_,_,_,_,_,_ ), 0 , 21 , 0 , 115, 83 ), // #417
484 INST(Mov , X86Mov , 0 , 0 , 0 , 0 , 116, 84 ), // #418
485 INST(Movabs , X86Movabs , 0 , 0 , 0 , 0 , 117, 0 ), // #419
486 INST(Movapd , ExtMov , O(660F00,28,_,_,_,_,_,_ ), O(660F00,29,_,_,_,_,_,_ ), 3 , 45 , 118, 85 ), // #420
487 INST(Movaps , ExtMov , O(000F00,28,_,_,_,_,_,_ ), O(000F00,29,_,_,_,_,_,_ ), 4 , 46 , 118, 86 ), // #421
488 INST(Movbe , ExtMovbe , O(000F38,F0,_,_,x,_,_,_ ), O(000F38,F1,_,_,x,_,_,_ ), 83 , 47 , 119, 87 ), // #422
489 INST(Movd , ExtMovd , O(000F00,6E,_,_,_,_,_,_ ), O(000F00,7E,_,_,_,_,_,_ ), 4 , 48 , 120, 88 ), // #423
490 INST(Movddup , ExtMov , O(F20F00,12,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 6 ), // #424
491 INST(Movdir64b , X86EnqcmdMovdir64b , O(660F38,F8,_,_,_,_,_,_ ), 0 , 2 , 0 , 121, 89 ), // #425
492 INST(Movdiri , X86MovntiMovdiri , O(000F38,F9,_,_,_,_,_,_ ), 0 , 83 , 0 , 122, 90 ), // #426
493 INST(Movdq2q , ExtMov , O(F20F00,D6,_,_,_,_,_,_ ), 0 , 5 , 0 , 123, 4 ), // #427
494 INST(Movdqa , ExtMov , O(660F00,6F,_,_,_,_,_,_ ), O(660F00,7F,_,_,_,_,_,_ ), 3 , 49 , 118, 85 ), // #428
495 INST(Movdqu , ExtMov , O(F30F00,6F,_,_,_,_,_,_ ), O(F30F00,7F,_,_,_,_,_,_ ), 6 , 50 , 118, 85 ), // #429
496 INST(Movhlps , ExtMov , O(000F00,12,_,_,_,_,_,_ ), 0 , 4 , 0 , 124, 5 ), // #430
497 INST(Movhpd , ExtMov , O(660F00,16,_,_,_,_,_,_ ), O(660F00,17,_,_,_,_,_,_ ), 3 , 51 , 125, 4 ), // #431
498 INST(Movhps , ExtMov , O(000F00,16,_,_,_,_,_,_ ), O(000F00,17,_,_,_,_,_,_ ), 4 , 52 , 125, 5 ), // #432
499 INST(Movlhps , ExtMov , O(000F00,16,_,_,_,_,_,_ ), 0 , 4 , 0 , 124, 5 ), // #433
500 INST(Movlpd , ExtMov , O(660F00,12,_,_,_,_,_,_ ), O(660F00,13,_,_,_,_,_,_ ), 3 , 53 , 125, 4 ), // #434
501 INST(Movlps , ExtMov , O(000F00,12,_,_,_,_,_,_ ), O(000F00,13,_,_,_,_,_,_ ), 4 , 54 , 125, 5 ), // #435
502 INST(Movmskpd , ExtMov , O(660F00,50,_,_,_,_,_,_ ), 0 , 3 , 0 , 126, 4 ), // #436
503 INST(Movmskps , ExtMov , O(000F00,50,_,_,_,_,_,_ ), 0 , 4 , 0 , 126, 5 ), // #437
504 INST(Movntdq , ExtMov , 0 , O(660F00,E7,_,_,_,_,_,_ ), 0 , 55 , 127, 4 ), // #438
505 INST(Movntdqa , ExtMov , O(660F38,2A,_,_,_,_,_,_ ), 0 , 2 , 0 , 100, 12 ), // #439
506 INST(Movnti , X86MovntiMovdiri , O(000F00,C3,_,_,x,_,_,_ ), 0 , 4 , 0 , 122, 4 ), // #440
507 INST(Movntpd , ExtMov , 0 , O(660F00,2B,_,_,_,_,_,_ ), 0 , 56 , 127, 4 ), // #441
508 INST(Movntps , ExtMov , 0 , O(000F00,2B,_,_,_,_,_,_ ), 0 , 57 , 127, 5 ), // #442
509 INST(Movntq , ExtMov , 0 , O(000F00,E7,_,_,_,_,_,_ ), 0 , 58 , 128, 80 ), // #443
510 INST(Movntsd , ExtMov , 0 , O(F20F00,2B,_,_,_,_,_,_ ), 0 , 59 , 129, 49 ), // #444
511 INST(Movntss , ExtMov , 0 , O(F30F00,2B,_,_,_,_,_,_ ), 0 , 60 , 130, 49 ), // #445
512 INST(Movq , ExtMovq , O(000F00,6E,_,_,x,_,_,_ ), O(000F00,7E,_,_,x,_,_,_ ), 4 , 48 , 131, 91 ), // #446
513 INST(Movq2dq , ExtRm , O(F30F00,D6,_,_,_,_,_,_ ), 0 , 6 , 0 , 132, 4 ), // #447
514 INST(Movs , X86StrMm , O(000000,A4,_,_,_,_,_,_ ), 0 , 0 , 0 , 133, 78 ), // #448
515 INST(Movsd , ExtMov , O(F20F00,10,_,_,_,_,_,_ ), O(F20F00,11,_,_,_,_,_,_ ), 5 , 61 , 134, 85 ), // #449
516 INST(Movshdup , ExtRm , O(F30F00,16,_,_,_,_,_,_ ), 0 , 6 , 0 , 5 , 6 ), // #450
517 INST(Movsldup , ExtRm , O(F30F00,12,_,_,_,_,_,_ ), 0 , 6 , 0 , 5 , 6 ), // #451
518 INST(Movss , ExtMov , O(F30F00,10,_,_,_,_,_,_ ), O(F30F00,11,_,_,_,_,_,_ ), 6 , 62 , 135, 86 ), // #452
519 INST(Movsx , X86MovsxMovzx , O(000F00,BE,_,_,x,_,_,_ ), 0 , 4 , 0 , 136, 0 ), // #453
520 INST(Movsxd , X86Rm , O(000000,63,_,_,x,_,_,_ ), 0 , 0 , 0 , 137, 0 ), // #454
521 INST(Movupd , ExtMov , O(660F00,10,_,_,_,_,_,_ ), O(660F00,11,_,_,_,_,_,_ ), 3 , 63 , 118, 85 ), // #455
522 INST(Movups , ExtMov , O(000F00,10,_,_,_,_,_,_ ), O(000F00,11,_,_,_,_,_,_ ), 4 , 64 , 118, 86 ), // #456
523 INST(Movzx , X86MovsxMovzx , O(000F00,B6,_,_,x,_,_,_ ), 0 , 4 , 0 , 136, 0 ), // #457
524 INST(Mpsadbw , ExtRmi , O(660F3A,42,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 12 ), // #458
525 INST(Mul , X86M_GPB_MulDiv , O(000000,F6,4,_,x,_,_,_ ), 0 , 9 , 0 , 54 , 1 ), // #459
526 INST(Mulpd , ExtRm , O(660F00,59,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #460
527 INST(Mulps , ExtRm , O(000F00,59,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #461
528 INST(Mulsd , ExtRm , O(F20F00,59,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 4 ), // #462
529 INST(Mulss , ExtRm , O(F30F00,59,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #463
530 INST(Mulx , VexRvm_ZDX_Wx , V(F20F38,F6,_,0,x,_,_,_ ), 0 , 84 , 0 , 138, 92 ), // #464
531 INST(Mwait , X86Op , O(000F01,C9,_,_,_,_,_,_ ), 0 , 21 , 0 , 139, 82 ), // #465
532 INST(Mwaitx , X86Op , O(000F01,FB,_,_,_,_,_,_ ), 0 , 21 , 0 , 140, 83 ), // #466
533 INST(Neg , X86M_GPB , O(000000,F6,3,_,x,_,_,_ ), 0 , 75 , 0 , 141, 1 ), // #467
534 INST(Nop , X86M_Nop , O(000000,90,_,_,_,_,_,_ ), 0 , 0 , 0 , 142, 0 ), // #468
535 INST(Not , X86M_GPB , O(000000,F6,2,_,x,_,_,_ ), 0 , 1 , 0 , 141, 0 ), // #469
536 INST(Or , X86Arith , O(000000,08,1,_,x,_,_,_ ), 0 , 31 , 0 , 143, 1 ), // #470
537 INST(Orpd , ExtRm , O(660F00,56,_,_,_,_,_,_ ), 0 , 3 , 0 , 11 , 4 ), // #471
538 INST(Orps , ExtRm , O(000F00,56,_,_,_,_,_,_ ), 0 , 4 , 0 , 11 , 5 ), // #472
539 INST(Out , X86Out , O(000000,EE,_,_,_,_,_,_ ), O(000000,E6,_,_,_,_,_,_ ), 0 , 65 , 144, 0 ), // #473
540 INST(Outs , X86Outs , O(000000,6E,_,_,_,_,_,_ ), 0 , 0 , 0 , 145, 0 ), // #474
541 INST(Pabsb , ExtRm_P , O(000F38,1C,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #475
542 INST(Pabsd , ExtRm_P , O(000F38,1E,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #476
543 INST(Pabsw , ExtRm_P , O(000F38,1D,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #477
544 INST(Packssdw , ExtRm_P , O(000F00,6B,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #478
545 INST(Packsswb , ExtRm_P , O(000F00,63,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #479
546 INST(Packusdw , ExtRm , O(660F38,2B,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 12 ), // #480
547 INST(Packuswb , ExtRm_P , O(000F00,67,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #481
548 INST(Paddb , ExtRm_P , O(000F00,FC,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #482
549 INST(Paddd , ExtRm_P , O(000F00,FE,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #483
550 INST(Paddq , ExtRm_P , O(000F00,D4,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 4 ), // #484
551 INST(Paddsb , ExtRm_P , O(000F00,EC,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #485
552 INST(Paddsw , ExtRm_P , O(000F00,ED,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #486
553 INST(Paddusb , ExtRm_P , O(000F00,DC,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #487
554 INST(Paddusw , ExtRm_P , O(000F00,DD,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #488
555 INST(Paddw , ExtRm_P , O(000F00,FD,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #489
556 INST(Palignr , ExtRmi_P , O(000F3A,0F,_,_,_,_,_,_ ), 0 , 85 , 0 , 147, 6 ), // #490
557 INST(Pand , ExtRm_P , O(000F00,DB,_,_,_,_,_,_ ), 0 , 4 , 0 , 148, 88 ), // #491
558 INST(Pandn , ExtRm_P , O(000F00,DF,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #492
559 INST(Pause , X86Op , O(F30000,90,_,_,_,_,_,_ ), 0 , 86 , 0 , 30 , 0 ), // #493
560 INST(Pavgb , ExtRm_P , O(000F00,E0,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 94 ), // #494
561 INST(Pavgusb , Ext3dNow , O(000F0F,BF,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #495
562 INST(Pavgw , ExtRm_P , O(000F00,E3,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 94 ), // #496
563 INST(Pblendvb , ExtRm_XMM0 , O(660F38,10,_,_,_,_,_,_ ), 0 , 2 , 0 , 15 , 12 ), // #497
564 INST(Pblendw , ExtRmi , O(660F3A,0E,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 12 ), // #498
565 INST(Pclmulqdq , ExtRmi , O(660F3A,44,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 95 ), // #499
566 INST(Pcmpeqb , ExtRm_P , O(000F00,74,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #500
567 INST(Pcmpeqd , ExtRm_P , O(000F00,76,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #501
568 INST(Pcmpeqq , ExtRm , O(660F38,29,_,_,_,_,_,_ ), 0 , 2 , 0 , 151, 12 ), // #502
569 INST(Pcmpeqw , ExtRm_P , O(000F00,75,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #503
570 INST(Pcmpestri , ExtRmi , O(660F3A,61,_,_,_,_,_,_ ), 0 , 8 , 0 , 152, 96 ), // #504
571 INST(Pcmpestrm , ExtRmi , O(660F3A,60,_,_,_,_,_,_ ), 0 , 8 , 0 , 153, 96 ), // #505
572 INST(Pcmpgtb , ExtRm_P , O(000F00,64,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #506
573 INST(Pcmpgtd , ExtRm_P , O(000F00,66,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #507
574 INST(Pcmpgtq , ExtRm , O(660F38,37,_,_,_,_,_,_ ), 0 , 2 , 0 , 151, 44 ), // #508
575 INST(Pcmpgtw , ExtRm_P , O(000F00,65,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #509
576 INST(Pcmpistri , ExtRmi , O(660F3A,63,_,_,_,_,_,_ ), 0 , 8 , 0 , 154, 96 ), // #510
577 INST(Pcmpistrm , ExtRmi , O(660F3A,62,_,_,_,_,_,_ ), 0 , 8 , 0 , 155, 96 ), // #511
578 INST(Pconfig , X86Op , O(000F01,C5,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 97 ), // #512
579 INST(Pdep , VexRvm_Wx , V(F20F38,F5,_,0,x,_,_,_ ), 0 , 84 , 0 , 10 , 92 ), // #513
580 INST(Pext , VexRvm_Wx , V(F30F38,F5,_,0,x,_,_,_ ), 0 , 88 , 0 , 10 , 92 ), // #514
581 INST(Pextrb , ExtExtract , O(000F3A,14,_,_,_,_,_,_ ), 0 , 85 , 0 , 156, 12 ), // #515
582 INST(Pextrd , ExtExtract , O(000F3A,16,_,_,_,_,_,_ ), 0 , 85 , 0 , 58 , 12 ), // #516
583 INST(Pextrq , ExtExtract , O(000F3A,16,_,_,1,_,_,_ ), 0 , 89 , 0 , 157, 12 ), // #517
584 INST(Pextrw , ExtPextrw , O(000F00,C5,_,_,_,_,_,_ ), O(000F3A,15,_,_,_,_,_,_ ), 4 , 66 , 158, 98 ), // #518
585 INST(Pf2id , Ext3dNow , O(000F0F,1D,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #519
586 INST(Pf2iw , Ext3dNow , O(000F0F,1C,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 99 ), // #520
587 INST(Pfacc , Ext3dNow , O(000F0F,AE,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #521
588 INST(Pfadd , Ext3dNow , O(000F0F,9E,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #522
589 INST(Pfcmpeq , Ext3dNow , O(000F0F,B0,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #523
590 INST(Pfcmpge , Ext3dNow , O(000F0F,90,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #524
591 INST(Pfcmpgt , Ext3dNow , O(000F0F,A0,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #525
592 INST(Pfmax , Ext3dNow , O(000F0F,A4,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #526
593 INST(Pfmin , Ext3dNow , O(000F0F,94,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #527
594 INST(Pfmul , Ext3dNow , O(000F0F,B4,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #528
595 INST(Pfnacc , Ext3dNow , O(000F0F,8A,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 99 ), // #529
596 INST(Pfpnacc , Ext3dNow , O(000F0F,8E,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 99 ), // #530
597 INST(Pfrcp , Ext3dNow , O(000F0F,96,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #531
598 INST(Pfrcpit1 , Ext3dNow , O(000F0F,A6,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #532
599 INST(Pfrcpit2 , Ext3dNow , O(000F0F,B6,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #533
600 INST(Pfrcpv , Ext3dNow , O(000F0F,86,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 100), // #534
601 INST(Pfrsqit1 , Ext3dNow , O(000F0F,A7,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #535
602 INST(Pfrsqrt , Ext3dNow , O(000F0F,97,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #536
603 INST(Pfrsqrtv , Ext3dNow , O(000F0F,87,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 100), // #537
604 INST(Pfsub , Ext3dNow , O(000F0F,9A,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #538
605 INST(Pfsubr , Ext3dNow , O(000F0F,AA,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #539
606 INST(Phaddd , ExtRm_P , O(000F38,02,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #540
607 INST(Phaddsw , ExtRm_P , O(000F38,03,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #541
608 INST(Phaddw , ExtRm_P , O(000F38,01,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #542
609 INST(Phminposuw , ExtRm , O(660F38,41,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 12 ), // #543
610 INST(Phsubd , ExtRm_P , O(000F38,06,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #544
611 INST(Phsubsw , ExtRm_P , O(000F38,07,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #545
612 INST(Phsubw , ExtRm_P , O(000F38,05,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #546
613 INST(Pi2fd , Ext3dNow , O(000F0F,0D,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #547
614 INST(Pi2fw , Ext3dNow , O(000F0F,0C,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 99 ), // #548
615 INST(Pinsrb , ExtRmi , O(660F3A,20,_,_,_,_,_,_ ), 0 , 8 , 0 , 159, 12 ), // #549
616 INST(Pinsrd , ExtRmi , O(660F3A,22,_,_,_,_,_,_ ), 0 , 8 , 0 , 160, 12 ), // #550
617 INST(Pinsrq , ExtRmi , O(660F3A,22,_,_,1,_,_,_ ), 0 , 90 , 0 , 161, 12 ), // #551
618 INST(Pinsrw , ExtRmi_P , O(000F00,C4,_,_,_,_,_,_ ), 0 , 4 , 0 , 162, 94 ), // #552
619 INST(Pmaddubsw , ExtRm_P , O(000F38,04,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #553
620 INST(Pmaddwd , ExtRm_P , O(000F00,F5,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #554
621 INST(Pmaxsb , ExtRm , O(660F38,3C,_,_,_,_,_,_ ), 0 , 2 , 0 , 11 , 12 ), // #555
622 INST(Pmaxsd , ExtRm , O(660F38,3D,_,_,_,_,_,_ ), 0 , 2 , 0 , 11 , 12 ), // #556
623 INST(Pmaxsw , ExtRm_P , O(000F00,EE,_,_,_,_,_,_ ), 0 , 4 , 0 , 148, 94 ), // #557
624 INST(Pmaxub , ExtRm_P , O(000F00,DE,_,_,_,_,_,_ ), 0 , 4 , 0 , 148, 94 ), // #558
625 INST(Pmaxud , ExtRm , O(660F38,3F,_,_,_,_,_,_ ), 0 , 2 , 0 , 11 , 12 ), // #559
626 INST(Pmaxuw , ExtRm , O(660F38,3E,_,_,_,_,_,_ ), 0 , 2 , 0 , 11 , 12 ), // #560
627 INST(Pminsb , ExtRm , O(660F38,38,_,_,_,_,_,_ ), 0 , 2 , 0 , 11 , 12 ), // #561
628 INST(Pminsd , ExtRm , O(660F38,39,_,_,_,_,_,_ ), 0 , 2 , 0 , 11 , 12 ), // #562
629 INST(Pminsw , ExtRm_P , O(000F00,EA,_,_,_,_,_,_ ), 0 , 4 , 0 , 148, 94 ), // #563
630 INST(Pminub , ExtRm_P , O(000F00,DA,_,_,_,_,_,_ ), 0 , 4 , 0 , 148, 94 ), // #564
631 INST(Pminud , ExtRm , O(660F38,3B,_,_,_,_,_,_ ), 0 , 2 , 0 , 11 , 12 ), // #565
632 INST(Pminuw , ExtRm , O(660F38,3A,_,_,_,_,_,_ ), 0 , 2 , 0 , 11 , 12 ), // #566
633 INST(Pmovmskb , ExtRm_P , O(000F00,D7,_,_,_,_,_,_ ), 0 , 4 , 0 , 163, 94 ), // #567
634 INST(Pmovsxbd , ExtRm , O(660F38,21,_,_,_,_,_,_ ), 0 , 2 , 0 , 7 , 12 ), // #568
635 INST(Pmovsxbq , ExtRm , O(660F38,22,_,_,_,_,_,_ ), 0 , 2 , 0 , 164, 12 ), // #569
636 INST(Pmovsxbw , ExtRm , O(660F38,20,_,_,_,_,_,_ ), 0 , 2 , 0 , 6 , 12 ), // #570
637 INST(Pmovsxdq , ExtRm , O(660F38,25,_,_,_,_,_,_ ), 0 , 2 , 0 , 6 , 12 ), // #571
638 INST(Pmovsxwd , ExtRm , O(660F38,23,_,_,_,_,_,_ ), 0 , 2 , 0 , 6 , 12 ), // #572
639 INST(Pmovsxwq , ExtRm , O(660F38,24,_,_,_,_,_,_ ), 0 , 2 , 0 , 7 , 12 ), // #573
640 INST(Pmovzxbd , ExtRm , O(660F38,31,_,_,_,_,_,_ ), 0 , 2 , 0 , 7 , 12 ), // #574
641 INST(Pmovzxbq , ExtRm , O(660F38,32,_,_,_,_,_,_ ), 0 , 2 , 0 , 164, 12 ), // #575
642 INST(Pmovzxbw , ExtRm , O(660F38,30,_,_,_,_,_,_ ), 0 , 2 , 0 , 6 , 12 ), // #576
643 INST(Pmovzxdq , ExtRm , O(660F38,35,_,_,_,_,_,_ ), 0 , 2 , 0 , 6 , 12 ), // #577
644 INST(Pmovzxwd , ExtRm , O(660F38,33,_,_,_,_,_,_ ), 0 , 2 , 0 , 6 , 12 ), // #578
645 INST(Pmovzxwq , ExtRm , O(660F38,34,_,_,_,_,_,_ ), 0 , 2 , 0 , 7 , 12 ), // #579
646 INST(Pmuldq , ExtRm , O(660F38,28,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 12 ), // #580
647 INST(Pmulhrsw , ExtRm_P , O(000F38,0B,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #581
648 INST(Pmulhrw , Ext3dNow , O(000F0F,B7,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 51 ), // #582
649 INST(Pmulhuw , ExtRm_P , O(000F00,E4,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 94 ), // #583
650 INST(Pmulhw , ExtRm_P , O(000F00,E5,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #584
651 INST(Pmulld , ExtRm , O(660F38,40,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 12 ), // #585
652 INST(Pmullw , ExtRm_P , O(000F00,D5,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #586
653 INST(Pmuludq , ExtRm_P , O(000F00,F4,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 4 ), // #587
654 INST(Pop , X86Pop , O(000000,8F,0,_,_,_,_,_ ), O(000000,58,_,_,_,_,_,_ ), 0 , 67 , 165, 0 ), // #588
655 INST(Popa , X86Op , O(660000,61,_,_,_,_,_,_ ), 0 , 19 , 0 , 81 , 0 ), // #589
656 INST(Popad , X86Op , O(000000,61,_,_,_,_,_,_ ), 0 , 0 , 0 , 81 , 0 ), // #590
657 INST(Popcnt , X86Rm_Raw66H , O(F30F00,B8,_,_,x,_,_,_ ), 0 , 6 , 0 , 22 , 101), // #591
658 INST(Popf , X86Op , O(660000,9D,_,_,_,_,_,_ ), 0 , 19 , 0 , 30 , 102), // #592
659 INST(Popfd , X86Op , O(000000,9D,_,_,_,_,_,_ ), 0 , 0 , 0 , 81 , 102), // #593
660 INST(Popfq , X86Op , O(000000,9D,_,_,_,_,_,_ ), 0 , 0 , 0 , 33 , 102), // #594
661 INST(Por , ExtRm_P , O(000F00,EB,_,_,_,_,_,_ ), 0 , 4 , 0 , 148, 88 ), // #595
662 INST(Prefetch , X86M_Only , O(000F00,0D,0,_,_,_,_,_ ), 0 , 4 , 0 , 31 , 51 ), // #596
663 INST(Prefetchnta , X86M_Only , O(000F00,18,0,_,_,_,_,_ ), 0 , 4 , 0 , 31 , 80 ), // #597
664 INST(Prefetcht0 , X86M_Only , O(000F00,18,1,_,_,_,_,_ ), 0 , 29 , 0 , 31 , 80 ), // #598
665 INST(Prefetcht1 , X86M_Only , O(000F00,18,2,_,_,_,_,_ ), 0 , 76 , 0 , 31 , 80 ), // #599
666 INST(Prefetcht2 , X86M_Only , O(000F00,18,3,_,_,_,_,_ ), 0 , 78 , 0 , 31 , 80 ), // #600
667 INST(Prefetchw , X86M_Only , O(000F00,0D,1,_,_,_,_,_ ), 0 , 29 , 0 , 31 , 103), // #601
668 INST(Prefetchwt1 , X86M_Only , O(000F00,0D,2,_,_,_,_,_ ), 0 , 76 , 0 , 31 , 104), // #602
669 INST(Psadbw , ExtRm_P , O(000F00,F6,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 94 ), // #603
670 INST(Pshufb , ExtRm_P , O(000F38,00,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #604
671 INST(Pshufd , ExtRmi , O(660F00,70,_,_,_,_,_,_ ), 0 , 3 , 0 , 8 , 4 ), // #605
672 INST(Pshufhw , ExtRmi , O(F30F00,70,_,_,_,_,_,_ ), 0 , 6 , 0 , 8 , 4 ), // #606
673 INST(Pshuflw , ExtRmi , O(F20F00,70,_,_,_,_,_,_ ), 0 , 5 , 0 , 8 , 4 ), // #607
674 INST(Pshufw , ExtRmi_P , O(000F00,70,_,_,_,_,_,_ ), 0 , 4 , 0 , 166, 80 ), // #608
675 INST(Psignb , ExtRm_P , O(000F38,08,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #609
676 INST(Psignd , ExtRm_P , O(000F38,0A,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #610
677 INST(Psignw , ExtRm_P , O(000F38,09,_,_,_,_,_,_ ), 0 , 83 , 0 , 146, 93 ), // #611
678 INST(Pslld , ExtRmRi_P , O(000F00,F2,_,_,_,_,_,_ ), O(000F00,72,6,_,_,_,_,_ ), 4 , 68 , 167, 88 ), // #612
679 INST(Pslldq , ExtRmRi , 0 , O(660F00,73,7,_,_,_,_,_ ), 0 , 69 , 168, 4 ), // #613
680 INST(Psllq , ExtRmRi_P , O(000F00,F3,_,_,_,_,_,_ ), O(000F00,73,6,_,_,_,_,_ ), 4 , 70 , 167, 88 ), // #614
681 INST(Psllw , ExtRmRi_P , O(000F00,F1,_,_,_,_,_,_ ), O(000F00,71,6,_,_,_,_,_ ), 4 , 71 , 167, 88 ), // #615
682 INST(Psmash , X86Op , O(F30F01,FF,_,_,_,_,_,_ ), 0 , 25 , 0 , 33 , 105), // #616
683 INST(Psrad , ExtRmRi_P , O(000F00,E2,_,_,_,_,_,_ ), O(000F00,72,4,_,_,_,_,_ ), 4 , 72 , 167, 88 ), // #617
684 INST(Psraw , ExtRmRi_P , O(000F00,E1,_,_,_,_,_,_ ), O(000F00,71,4,_,_,_,_,_ ), 4 , 73 , 167, 88 ), // #618
685 INST(Psrld , ExtRmRi_P , O(000F00,D2,_,_,_,_,_,_ ), O(000F00,72,2,_,_,_,_,_ ), 4 , 74 , 167, 88 ), // #619
686 INST(Psrldq , ExtRmRi , 0 , O(660F00,73,3,_,_,_,_,_ ), 0 , 75 , 168, 4 ), // #620
687 INST(Psrlq , ExtRmRi_P , O(000F00,D3,_,_,_,_,_,_ ), O(000F00,73,2,_,_,_,_,_ ), 4 , 76 , 167, 88 ), // #621
688 INST(Psrlw , ExtRmRi_P , O(000F00,D1,_,_,_,_,_,_ ), O(000F00,71,2,_,_,_,_,_ ), 4 , 77 , 167, 88 ), // #622
689 INST(Psubb , ExtRm_P , O(000F00,F8,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #623
690 INST(Psubd , ExtRm_P , O(000F00,FA,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #624
691 INST(Psubq , ExtRm_P , O(000F00,FB,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 4 ), // #625
692 INST(Psubsb , ExtRm_P , O(000F00,E8,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #626
693 INST(Psubsw , ExtRm_P , O(000F00,E9,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #627
694 INST(Psubusb , ExtRm_P , O(000F00,D8,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #628
695 INST(Psubusw , ExtRm_P , O(000F00,D9,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #629
696 INST(Psubw , ExtRm_P , O(000F00,F9,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #630
697 INST(Pswapd , Ext3dNow , O(000F0F,BB,_,_,_,_,_,_ ), 0 , 87 , 0 , 150, 99 ), // #631
698 INST(Ptest , ExtRm , O(660F38,17,_,_,_,_,_,_ ), 0 , 2 , 0 , 5 , 106), // #632
699 INST(Ptwrite , X86M , O(F30F00,AE,4,_,_,_,_,_ ), 0 , 91 , 0 , 169, 107), // #633
700 INST(Punpckhbw , ExtRm_P , O(000F00,68,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #634
701 INST(Punpckhdq , ExtRm_P , O(000F00,6A,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #635
702 INST(Punpckhqdq , ExtRm , O(660F00,6D,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #636
703 INST(Punpckhwd , ExtRm_P , O(000F00,69,_,_,_,_,_,_ ), 0 , 4 , 0 , 146, 88 ), // #637
704 INST(Punpcklbw , ExtRm_P , O(000F00,60,_,_,_,_,_,_ ), 0 , 4 , 0 , 170, 88 ), // #638
705 INST(Punpckldq , ExtRm_P , O(000F00,62,_,_,_,_,_,_ ), 0 , 4 , 0 , 170, 88 ), // #639
706 INST(Punpcklqdq , ExtRm , O(660F00,6C,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #640
707 INST(Punpcklwd , ExtRm_P , O(000F00,61,_,_,_,_,_,_ ), 0 , 4 , 0 , 170, 88 ), // #641
708 INST(Push , X86Push , O(000000,FF,6,_,_,_,_,_ ), O(000000,50,_,_,_,_,_,_ ), 32 , 78 , 171, 0 ), // #642
709 INST(Pusha , X86Op , O(660000,60,_,_,_,_,_,_ ), 0 , 19 , 0 , 81 , 0 ), // #643
710 INST(Pushad , X86Op , O(000000,60,_,_,_,_,_,_ ), 0 , 0 , 0 , 81 , 0 ), // #644
711 INST(Pushf , X86Op , O(660000,9C,_,_,_,_,_,_ ), 0 , 19 , 0 , 30 , 108), // #645
712 INST(Pushfd , X86Op , O(000000,9C,_,_,_,_,_,_ ), 0 , 0 , 0 , 81 , 108), // #646
713 INST(Pushfq , X86Op , O(000000,9C,_,_,_,_,_,_ ), 0 , 0 , 0 , 33 , 108), // #647
714 INST(Pvalidate , X86Op , O(F20F01,FF,_,_,_,_,_,_ ), 0 , 92 , 0 , 30 , 109), // #648
715 INST(Pxor , ExtRm_P , O(000F00,EF,_,_,_,_,_,_ ), 0 , 4 , 0 , 149, 88 ), // #649
716 INST(Rcl , X86Rot , O(000000,D0,2,_,x,_,_,_ ), 0 , 1 , 0 , 172, 110), // #650
717 INST(Rcpps , ExtRm , O(000F00,53,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #651
718 INST(Rcpss , ExtRm , O(F30F00,53,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #652
719 INST(Rcr , X86Rot , O(000000,D0,3,_,x,_,_,_ ), 0 , 75 , 0 , 172, 110), // #653
720 INST(Rdfsbase , X86M , O(F30F00,AE,0,_,x,_,_,_ ), 0 , 6 , 0 , 173, 111), // #654
721 INST(Rdgsbase , X86M , O(F30F00,AE,1,_,x,_,_,_ ), 0 , 93 , 0 , 173, 111), // #655
722 INST(Rdmsr , X86Op , O(000F00,32,_,_,_,_,_,_ ), 0 , 4 , 0 , 174, 112), // #656
723 INST(Rdpid , X86R_Native , O(F30F00,C7,7,_,_,_,_,_ ), 0 , 94 , 0 , 175, 113), // #657
724 INST(Rdpkru , X86Op , O(000F01,EE,_,_,_,_,_,_ ), 0 , 21 , 0 , 174, 114), // #658
725 INST(Rdpmc , X86Op , O(000F00,33,_,_,_,_,_,_ ), 0 , 4 , 0 , 174, 0 ), // #659
726 INST(Rdpru , X86Op , O(000F01,FD,_,_,_,_,_,_ ), 0 , 21 , 0 , 174, 115), // #660
727 INST(Rdrand , X86M , O(000F00,C7,6,_,x,_,_,_ ), 0 , 80 , 0 , 23 , 116), // #661
728 INST(Rdseed , X86M , O(000F00,C7,7,_,x,_,_,_ ), 0 , 22 , 0 , 23 , 117), // #662
729 INST(Rdsspd , X86M , O(F30F00,1E,1,_,_,_,_,_ ), 0 , 93 , 0 , 76 , 56 ), // #663
730 INST(Rdsspq , X86M , O(F30F00,1E,1,_,_,_,_,_ ), 0 , 93 , 0 , 77 , 56 ), // #664
731 INST(Rdtsc , X86Op , O(000F00,31,_,_,_,_,_,_ ), 0 , 4 , 0 , 28 , 118), // #665
732 INST(Rdtscp , X86Op , O(000F01,F9,_,_,_,_,_,_ ), 0 , 21 , 0 , 174, 119), // #666
733 INST(Ret , X86Ret , O(000000,C2,_,_,_,_,_,_ ), 0 , 0 , 0 , 176, 0 ), // #667
734 INST(Retf , X86Ret , O(000000,CA,_,_,x,_,_,_ ), 0 , 0 , 0 , 177, 0 ), // #668
735 INST(Rmpadjust , X86Op , O(F30F01,FE,_,_,_,_,_,_ ), 0 , 25 , 0 , 33 , 105), // #669
736 INST(Rmpupdate , X86Op , O(F20F01,FE,_,_,_,_,_,_ ), 0 , 92 , 0 , 33 , 105), // #670
737 INST(Rol , X86Rot , O(000000,D0,0,_,x,_,_,_ ), 0 , 0 , 0 , 172, 120), // #671
738 INST(Ror , X86Rot , O(000000,D0,1,_,x,_,_,_ ), 0 , 31 , 0 , 172, 120), // #672
739 INST(Rorx , VexRmi_Wx , V(F20F3A,F0,_,0,x,_,_,_ ), 0 , 95 , 0 , 178, 92 ), // #673
740 INST(Roundpd , ExtRmi , O(660F3A,09,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 12 ), // #674
741 INST(Roundps , ExtRmi , O(660F3A,08,_,_,_,_,_,_ ), 0 , 8 , 0 , 8 , 12 ), // #675
742 INST(Roundsd , ExtRmi , O(660F3A,0B,_,_,_,_,_,_ ), 0 , 8 , 0 , 37 , 12 ), // #676
743 INST(Roundss , ExtRmi , O(660F3A,0A,_,_,_,_,_,_ ), 0 , 8 , 0 , 38 , 12 ), // #677
744 INST(Rsm , X86Op , O(000F00,AA,_,_,_,_,_,_ ), 0 , 4 , 0 , 81 , 1 ), // #678
745 INST(Rsqrtps , ExtRm , O(000F00,52,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #679
746 INST(Rsqrtss , ExtRm , O(F30F00,52,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #680
747 INST(Rstorssp , X86M_Only , O(F30F00,01,5,_,_,_,_,_ ), 0 , 63 , 0 , 32 , 24 ), // #681
748 INST(Sahf , X86Op , O(000000,9E,_,_,_,_,_,_ ), 0 , 0 , 0 , 97 , 121), // #682
749 INST(Sal , X86Rot , O(000000,D0,4,_,x,_,_,_ ), 0 , 9 , 0 , 172, 1 ), // #683
750 INST(Sar , X86Rot , O(000000,D0,7,_,x,_,_,_ ), 0 , 27 , 0 , 172, 1 ), // #684
751 INST(Sarx , VexRmv_Wx , V(F30F38,F7,_,0,x,_,_,_ ), 0 , 88 , 0 , 13 , 92 ), // #685
752 INST(Saveprevssp , X86Op , O(F30F01,EA,_,_,_,_,_,_ ), 0 , 25 , 0 , 30 , 24 ), // #686
753 INST(Sbb , X86Arith , O(000000,18,3,_,x,_,_,_ ), 0 , 75 , 0 , 179, 2 ), // #687
754 INST(Scas , X86StrRm , O(000000,AE,_,_,_,_,_,_ ), 0 , 0 , 0 , 180, 37 ), // #688
755 INST(Senduipi , X86M_NoSize , O(F30F00,C7,6,_,_,_,_,_ ), 0 , 24 , 0 , 77 , 25 ), // #689
756 INST(Serialize , X86Op , O(000F01,E8,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 122), // #690
757 INST(Seta , X86Set , O(000F00,97,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 59 ), // #691
758 INST(Setae , X86Set , O(000F00,93,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 60 ), // #692
759 INST(Setb , X86Set , O(000F00,92,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 60 ), // #693
760 INST(Setbe , X86Set , O(000F00,96,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 59 ), // #694
761 INST(Setc , X86Set , O(000F00,92,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 60 ), // #695
762 INST(Sete , X86Set , O(000F00,94,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 61 ), // #696
763 INST(Setg , X86Set , O(000F00,9F,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 62 ), // #697
764 INST(Setge , X86Set , O(000F00,9D,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 63 ), // #698
765 INST(Setl , X86Set , O(000F00,9C,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 63 ), // #699
766 INST(Setle , X86Set , O(000F00,9E,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 62 ), // #700
767 INST(Setna , X86Set , O(000F00,96,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 59 ), // #701
768 INST(Setnae , X86Set , O(000F00,92,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 60 ), // #702
769 INST(Setnb , X86Set , O(000F00,93,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 60 ), // #703
770 INST(Setnbe , X86Set , O(000F00,97,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 59 ), // #704
771 INST(Setnc , X86Set , O(000F00,93,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 60 ), // #705
772 INST(Setne , X86Set , O(000F00,95,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 61 ), // #706
773 INST(Setng , X86Set , O(000F00,9E,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 62 ), // #707
774 INST(Setnge , X86Set , O(000F00,9C,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 63 ), // #708
775 INST(Setnl , X86Set , O(000F00,9D,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 63 ), // #709
776 INST(Setnle , X86Set , O(000F00,9F,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 62 ), // #710
777 INST(Setno , X86Set , O(000F00,91,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 57 ), // #711
778 INST(Setnp , X86Set , O(000F00,9B,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 64 ), // #712
779 INST(Setns , X86Set , O(000F00,99,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 65 ), // #713
780 INST(Setnz , X86Set , O(000F00,95,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 61 ), // #714
781 INST(Seto , X86Set , O(000F00,90,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 57 ), // #715
782 INST(Setp , X86Set , O(000F00,9A,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 64 ), // #716
783 INST(Setpe , X86Set , O(000F00,9A,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 64 ), // #717
784 INST(Setpo , X86Set , O(000F00,9B,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 64 ), // #718
785 INST(Sets , X86Set , O(000F00,98,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 65 ), // #719
786 INST(Setssbsy , X86Op , O(F30F01,E8,_,_,_,_,_,_ ), 0 , 25 , 0 , 30 , 56 ), // #720
787 INST(Setz , X86Set , O(000F00,94,_,_,_,_,_,_ ), 0 , 4 , 0 , 181, 61 ), // #721
788 INST(Sfence , X86Fence , O(000F00,AE,7,_,_,_,_,_ ), 0 , 22 , 0 , 30 , 80 ), // #722
789 INST(Sgdt , X86M_Only , O(000F00,01,0,_,_,_,_,_ ), 0 , 4 , 0 , 69 , 0 ), // #723
790 INST(Sha1msg1 , ExtRm , O(000F38,C9,_,_,_,_,_,_ ), 0 , 83 , 0 , 5 , 123), // #724
791 INST(Sha1msg2 , ExtRm , O(000F38,CA,_,_,_,_,_,_ ), 0 , 83 , 0 , 5 , 123), // #725
792 INST(Sha1nexte , ExtRm , O(000F38,C8,_,_,_,_,_,_ ), 0 , 83 , 0 , 5 , 123), // #726
793 INST(Sha1rnds4 , ExtRmi , O(000F3A,CC,_,_,_,_,_,_ ), 0 , 85 , 0 , 8 , 123), // #727
794 INST(Sha256msg1 , ExtRm , O(000F38,CC,_,_,_,_,_,_ ), 0 , 83 , 0 , 5 , 123), // #728
795 INST(Sha256msg2 , ExtRm , O(000F38,CD,_,_,_,_,_,_ ), 0 , 83 , 0 , 5 , 123), // #729
796 INST(Sha256rnds2 , ExtRm_XMM0 , O(000F38,CB,_,_,_,_,_,_ ), 0 , 83 , 0 , 15 , 123), // #730
797 INST(Shl , X86Rot , O(000000,D0,4,_,x,_,_,_ ), 0 , 9 , 0 , 172, 1 ), // #731
798 INST(Shld , X86ShldShrd , O(000F00,A4,_,_,x,_,_,_ ), 0 , 4 , 0 , 182, 1 ), // #732
799 INST(Shlx , VexRmv_Wx , V(660F38,F7,_,0,x,_,_,_ ), 0 , 96 , 0 , 13 , 92 ), // #733
800 INST(Shr , X86Rot , O(000000,D0,5,_,x,_,_,_ ), 0 , 62 , 0 , 172, 1 ), // #734
801 INST(Shrd , X86ShldShrd , O(000F00,AC,_,_,x,_,_,_ ), 0 , 4 , 0 , 182, 1 ), // #735
802 INST(Shrx , VexRmv_Wx , V(F20F38,F7,_,0,x,_,_,_ ), 0 , 84 , 0 , 13 , 92 ), // #736
803 INST(Shufpd , ExtRmi , O(660F00,C6,_,_,_,_,_,_ ), 0 , 3 , 0 , 8 , 4 ), // #737
804 INST(Shufps , ExtRmi , O(000F00,C6,_,_,_,_,_,_ ), 0 , 4 , 0 , 8 , 5 ), // #738
805 INST(Sidt , X86M_Only , O(000F00,01,1,_,_,_,_,_ ), 0 , 29 , 0 , 69 , 0 ), // #739
806 INST(Skinit , X86Op_xAX , O(000F01,DE,_,_,_,_,_,_ ), 0 , 21 , 0 , 52 , 124), // #740
807 INST(Sldt , X86M_NoMemSize , O(000F00,00,0,_,_,_,_,_ ), 0 , 4 , 0 , 183, 0 ), // #741
808 INST(Slwpcb , VexR_Wx , V(XOP_M9,12,1,0,x,_,_,_ ), 0 , 11 , 0 , 108, 77 ), // #742
809 INST(Smsw , X86M_NoMemSize , O(000F00,01,4,_,_,_,_,_ ), 0 , 97 , 0 , 183, 0 ), // #743
810 INST(Sqrtpd , ExtRm , O(660F00,51,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #744
811 INST(Sqrtps , ExtRm , O(000F00,51,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #745
812 INST(Sqrtsd , ExtRm , O(F20F00,51,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 4 ), // #746
813 INST(Sqrtss , ExtRm , O(F30F00,51,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #747
814 INST(Stac , X86Op , O(000F01,CB,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 16 ), // #748
815 INST(Stc , X86Op , O(000000,F9,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 17 ), // #749
816 INST(Std , X86Op , O(000000,FD,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 18 ), // #750
817 INST(Stgi , X86Op , O(000F01,DC,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 124), // #751
818 INST(Sti , X86Op , O(000000,FB,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 23 ), // #752
819 INST(Stmxcsr , X86M_Only , O(000F00,AE,3,_,_,_,_,_ ), 0 , 78 , 0 , 101, 5 ), // #753
820 INST(Stos , X86StrMr , O(000000,AA,_,_,_,_,_,_ ), 0 , 0 , 0 , 184, 78 ), // #754
821 INST(Str , X86M_NoMemSize , O(000F00,00,1,_,_,_,_,_ ), 0 , 29 , 0 , 183, 0 ), // #755
822 INST(Sttilecfg , AmxCfg , V(660F38,49,_,0,0,_,_,_ ), 0 , 96 , 0 , 103, 76 ), // #756
823 INST(Stui , X86Op , O(F30F01,EF,_,_,_,_,_,_ ), 0 , 25 , 0 , 33 , 25 ), // #757
824 INST(Sub , X86Arith , O(000000,28,5,_,x,_,_,_ ), 0 , 62 , 0 , 179, 1 ), // #758
825 INST(Subpd , ExtRm , O(660F00,5C,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #759
826 INST(Subps , ExtRm , O(000F00,5C,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #760
827 INST(Subsd , ExtRm , O(F20F00,5C,_,_,_,_,_,_ ), 0 , 5 , 0 , 6 , 4 ), // #761
828 INST(Subss , ExtRm , O(F30F00,5C,_,_,_,_,_,_ ), 0 , 6 , 0 , 7 , 5 ), // #762
829 INST(Swapgs , X86Op , O(000F01,F8,_,_,_,_,_,_ ), 0 , 21 , 0 , 33 , 0 ), // #763
830 INST(Syscall , X86Op , O(000F00,05,_,_,_,_,_,_ ), 0 , 4 , 0 , 33 , 0 ), // #764
831 INST(Sysenter , X86Op , O(000F00,34,_,_,_,_,_,_ ), 0 , 4 , 0 , 30 , 0 ), // #765
832 INST(Sysexit , X86Op , O(000F00,35,_,_,_,_,_,_ ), 0 , 4 , 0 , 30 , 0 ), // #766
833 INST(Sysexitq , X86Op , O(000F00,35,_,_,1,_,_,_ ), 0 , 60 , 0 , 30 , 0 ), // #767
834 INST(Sysret , X86Op , O(000F00,07,_,_,_,_,_,_ ), 0 , 4 , 0 , 33 , 0 ), // #768
835 INST(Sysretq , X86Op , O(000F00,07,_,_,1,_,_,_ ), 0 , 60 , 0 , 33 , 0 ), // #769
836 INST(T1mskc , VexVm_Wx , V(XOP_M9,01,7,0,x,_,_,_ ), 0 , 98 , 0 , 14 , 11 ), // #770
837 INST(Tdpbf16ps , AmxRmv , V(F30F38,5C,_,0,0,_,_,_ ), 0 , 88 , 0 , 185, 125), // #771
838 INST(Tdpbssd , AmxRmv , V(F20F38,5E,_,0,0,_,_,_ ), 0 , 84 , 0 , 185, 126), // #772
839 INST(Tdpbsud , AmxRmv , V(F30F38,5E,_,0,0,_,_,_ ), 0 , 88 , 0 , 185, 126), // #773
840 INST(Tdpbusd , AmxRmv , V(660F38,5E,_,0,0,_,_,_ ), 0 , 96 , 0 , 185, 126), // #774
841 INST(Tdpbuud , AmxRmv , V(000F38,5E,_,0,0,_,_,_ ), 0 , 10 , 0 , 185, 126), // #775
842 INST(Test , X86Test , O(000000,84,_,_,x,_,_,_ ), O(000000,F6,_,_,x,_,_,_ ), 0 , 79 , 186, 1 ), // #776
843 INST(Testui , X86Op , O(F30F01,ED,_,_,_,_,_,_ ), 0 , 25 , 0 , 33 , 127), // #777
844 INST(Tileloadd , AmxRm , V(F20F38,4B,_,0,0,_,_,_ ), 0 , 84 , 0 , 187, 76 ), // #778
845 INST(Tileloaddt1 , AmxRm , V(660F38,4B,_,0,0,_,_,_ ), 0 , 96 , 0 , 187, 76 ), // #779
846 INST(Tilerelease , VexOpMod , V(000F38,49,0,0,0,_,_,_ ), 0 , 10 , 0 , 188, 76 ), // #780
847 INST(Tilestored , AmxMr , V(F30F38,4B,_,0,0,_,_,_ ), 0 , 88 , 0 , 189, 76 ), // #781
848 INST(Tilezero , AmxR , V(F20F38,49,_,0,0,_,_,_ ), 0 , 84 , 0 , 190, 76 ), // #782
849 INST(Tpause , X86R32_EDX_EAX , O(660F00,AE,6,_,_,_,_,_ ), 0 , 26 , 0 , 191, 128), // #783
850 INST(Tzcnt , X86Rm_Raw66H , O(F30F00,BC,_,_,x,_,_,_ ), 0 , 6 , 0 , 22 , 9 ), // #784
851 INST(Tzmsk , VexVm_Wx , V(XOP_M9,01,4,0,x,_,_,_ ), 0 , 99 , 0 , 14 , 11 ), // #785
852 INST(Ucomisd , ExtRm , O(660F00,2E,_,_,_,_,_,_ ), 0 , 3 , 0 , 6 , 41 ), // #786
853 INST(Ucomiss , ExtRm , O(000F00,2E,_,_,_,_,_,_ ), 0 , 4 , 0 , 7 , 42 ), // #787
854 INST(Ud0 , X86Rm , O(000F00,FF,_,_,_,_,_,_ ), 0 , 4 , 0 , 192, 0 ), // #788
855 INST(Ud1 , X86Rm , O(000F00,B9,_,_,_,_,_,_ ), 0 , 4 , 0 , 192, 0 ), // #789
856 INST(Ud2 , X86Op , O(000F00,0B,_,_,_,_,_,_ ), 0 , 4 , 0 , 30 , 0 ), // #790
857 INST(Uiret , X86Op , O(F30F01,EC,_,_,_,_,_,_ ), 0 , 25 , 0 , 33 , 25 ), // #791
858 INST(Umonitor , X86R_FromM , O(F30F00,AE,6,_,_,_,_,_ ), 0 , 24 , 0 , 193, 129), // #792
859 INST(Umwait , X86R32_EDX_EAX , O(F20F00,AE,6,_,_,_,_,_ ), 0 , 100, 0 , 191, 128), // #793
860 INST(Unpckhpd , ExtRm , O(660F00,15,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #794
861 INST(Unpckhps , ExtRm , O(000F00,15,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #795
862 INST(Unpcklpd , ExtRm , O(660F00,14,_,_,_,_,_,_ ), 0 , 3 , 0 , 5 , 4 ), // #796
863 INST(Unpcklps , ExtRm , O(000F00,14,_,_,_,_,_,_ ), 0 , 4 , 0 , 5 , 5 ), // #797
864 INST(V4fmaddps , VexRm_T1_4X , E(F20F38,9A,_,2,_,0,4,T4X), 0 , 101, 0 , 194, 130), // #798
865 INST(V4fmaddss , VexRm_T1_4X , E(F20F38,9B,_,0,_,0,4,T4X), 0 , 102, 0 , 195, 130), // #799
866 INST(V4fnmaddps , VexRm_T1_4X , E(F20F38,AA,_,2,_,0,4,T4X), 0 , 101, 0 , 194, 130), // #800
867 INST(V4fnmaddss , VexRm_T1_4X , E(F20F38,AB,_,0,_,0,4,T4X), 0 , 102, 0 , 195, 130), // #801
868 INST(Vaddpd , VexRvm_Lx , V(660F00,58,_,x,I,1,4,FV ), 0 , 103, 0 , 196, 131), // #802
869 INST(Vaddph , VexRvm_Lx , E(00MAP5,58,_,_,_,0,4,FV ), 0 , 104, 0 , 197, 132), // #803
870 INST(Vaddps , VexRvm_Lx , V(000F00,58,_,x,I,0,4,FV ), 0 , 105, 0 , 198, 131), // #804
871 INST(Vaddsd , VexRvm , V(F20F00,58,_,I,I,1,3,T1S), 0 , 106, 0 , 199, 133), // #805
872 INST(Vaddsh , VexRvm , E(F3MAP5,58,_,_,_,0,1,T1S), 0 , 107, 0 , 200, 134), // #806
873 INST(Vaddss , VexRvm , V(F30F00,58,_,I,I,0,2,T1S), 0 , 108, 0 , 201, 133), // #807
874 INST(Vaddsubpd , VexRvm_Lx , V(660F00,D0,_,x,I,_,_,_ ), 0 , 69 , 0 , 202, 135), // #808
875 INST(Vaddsubps , VexRvm_Lx , V(F20F00,D0,_,x,I,_,_,_ ), 0 , 109, 0 , 202, 135), // #809
876 INST(Vaesdec , VexRvm_Lx , V(660F38,DE,_,x,I,_,4,FVM), 0 , 110, 0 , 203, 136), // #810
877 INST(Vaesdeclast , VexRvm_Lx , V(660F38,DF,_,x,I,_,4,FVM), 0 , 110, 0 , 203, 136), // #811
878 INST(Vaesenc , VexRvm_Lx , V(660F38,DC,_,x,I,_,4,FVM), 0 , 110, 0 , 203, 136), // #812
879 INST(Vaesenclast , VexRvm_Lx , V(660F38,DD,_,x,I,_,4,FVM), 0 , 110, 0 , 203, 136), // #813
880 INST(Vaesimc , VexRm , V(660F38,DB,_,0,I,_,_,_ ), 0 , 96 , 0 , 204, 137), // #814
881 INST(Vaeskeygenassist , VexRmi , V(660F3A,DF,_,0,I,_,_,_ ), 0 , 73 , 0 , 205, 137), // #815
882 INST(Valignd , VexRvmi_Lx , E(660F3A,03,_,x,_,0,4,FV ), 0 , 111, 0 , 206, 138), // #816
883 INST(Valignq , VexRvmi_Lx , E(660F3A,03,_,x,_,1,4,FV ), 0 , 112, 0 , 207, 138), // #817
884 INST(Vandnpd , VexRvm_Lx , V(660F00,55,_,x,I,1,4,FV ), 0 , 103, 0 , 208, 139), // #818
885 INST(Vandnps , VexRvm_Lx , V(000F00,55,_,x,I,0,4,FV ), 0 , 105, 0 , 209, 139), // #819
886 INST(Vandpd , VexRvm_Lx , V(660F00,54,_,x,I,1,4,FV ), 0 , 103, 0 , 210, 139), // #820
887 INST(Vandps , VexRvm_Lx , V(000F00,54,_,x,I,0,4,FV ), 0 , 105, 0 , 211, 139), // #821
888 INST(Vblendmpd , VexRvm_Lx , E(660F38,65,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #822
889 INST(Vblendmps , VexRvm_Lx , E(660F38,65,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 138), // #823
890 INST(Vblendpd , VexRvmi_Lx , V(660F3A,0D,_,x,I,_,_,_ ), 0 , 73 , 0 , 214, 135), // #824
891 INST(Vblendps , VexRvmi_Lx , V(660F3A,0C,_,x,I,_,_,_ ), 0 , 73 , 0 , 214, 135), // #825
892 INST(Vblendvpd , VexRvmr_Lx , V(660F3A,4B,_,x,0,_,_,_ ), 0 , 73 , 0 , 215, 135), // #826
893 INST(Vblendvps , VexRvmr_Lx , V(660F3A,4A,_,x,0,_,_,_ ), 0 , 73 , 0 , 215, 135), // #827
894 INST(Vbroadcastf128 , VexRm , V(660F38,1A,_,1,0,_,_,_ ), 0 , 115, 0 , 216, 135), // #828
895 INST(Vbroadcastf32x2 , VexRm_Lx , E(660F38,19,_,x,_,0,3,T2 ), 0 , 116, 0 , 217, 140), // #829
896 INST(Vbroadcastf32x4 , VexRm_Lx , E(660F38,1A,_,x,_,0,4,T4 ), 0 , 117, 0 , 218, 68 ), // #830
897 INST(Vbroadcastf32x8 , VexRm , E(660F38,1B,_,2,_,0,5,T8 ), 0 , 118, 0 , 219, 66 ), // #831
898 INST(Vbroadcastf64x2 , VexRm_Lx , E(660F38,1A,_,x,_,1,4,T2 ), 0 , 119, 0 , 218, 140), // #832
899 INST(Vbroadcastf64x4 , VexRm , E(660F38,1B,_,2,_,1,5,T4 ), 0 , 120, 0 , 219, 68 ), // #833
900 INST(Vbroadcasti128 , VexRm , V(660F38,5A,_,1,0,_,_,_ ), 0 , 115, 0 , 216, 141), // #834
901 INST(Vbroadcasti32x2 , VexRm_Lx , E(660F38,59,_,x,_,0,3,T2 ), 0 , 116, 0 , 220, 140), // #835
902 INST(Vbroadcasti32x4 , VexRm_Lx , E(660F38,5A,_,x,_,0,4,T4 ), 0 , 117, 0 , 218, 138), // #836
903 INST(Vbroadcasti32x8 , VexRm , E(660F38,5B,_,2,_,0,5,T8 ), 0 , 118, 0 , 219, 66 ), // #837
904 INST(Vbroadcasti64x2 , VexRm_Lx , E(660F38,5A,_,x,_,1,4,T2 ), 0 , 119, 0 , 218, 140), // #838
905 INST(Vbroadcasti64x4 , VexRm , E(660F38,5B,_,2,_,1,5,T4 ), 0 , 120, 0 , 219, 68 ), // #839
906 INST(Vbroadcastsd , VexRm_Lx , V(660F38,19,_,x,0,1,3,T1S), 0 , 121, 0 , 221, 142), // #840
907 INST(Vbroadcastss , VexRm_Lx , V(660F38,18,_,x,0,0,2,T1S), 0 , 122, 0 , 222, 142), // #841
908 INST(Vcmppd , VexRvmi_Lx_KEvex , V(660F00,C2,_,x,I,1,4,FV ), 0 , 103, 0 , 223, 131), // #842
909 INST(Vcmpph , VexRvmi_Lx_KEvex , E(000F3A,C2,_,_,_,0,4,FV ), 0 , 123, 0 , 224, 132), // #843
910 INST(Vcmpps , VexRvmi_Lx_KEvex , V(000F00,C2,_,x,I,0,4,FV ), 0 , 105, 0 , 225, 131), // #844
911 INST(Vcmpsd , VexRvmi_KEvex , V(F20F00,C2,_,I,I,1,3,T1S), 0 , 106, 0 , 226, 133), // #845
912 INST(Vcmpsh , VexRvmi_KEvex , E(F30F3A,C2,_,_,_,0,1,T1S), 0 , 124, 0 , 227, 134), // #846
913 INST(Vcmpss , VexRvmi_KEvex , V(F30F00,C2,_,I,I,0,2,T1S), 0 , 108, 0 , 228, 133), // #847
914 INST(Vcomisd , VexRm , V(660F00,2F,_,I,I,1,3,T1S), 0 , 125, 0 , 229, 143), // #848
915 INST(Vcomish , VexRm , E(00MAP5,2F,_,_,_,0,1,T1S), 0 , 126, 0 , 230, 134), // #849
916 INST(Vcomiss , VexRm , V(000F00,2F,_,I,I,0,2,T1S), 0 , 127, 0 , 231, 143), // #850
917 INST(Vcompresspd , VexMr_Lx , E(660F38,8A,_,x,_,1,3,T1S), 0 , 128, 0 , 232, 138), // #851
918 INST(Vcompressps , VexMr_Lx , E(660F38,8A,_,x,_,0,2,T1S), 0 , 129, 0 , 232, 138), // #852
919 INST(Vcvtdq2pd , VexRm_Lx , V(F30F00,E6,_,x,I,0,3,HV ), 0 , 130, 0 , 233, 131), // #853
920 INST(Vcvtdq2ph , VexRm_Lx , E(00MAP5,5B,_,_,_,0,4,FV ), 0 , 104, 0 , 234, 132), // #854
921 INST(Vcvtdq2ps , VexRm_Lx , V(000F00,5B,_,x,I,0,4,FV ), 0 , 105, 0 , 235, 131), // #855
922 INST(Vcvtne2ps2bf16 , VexRvm_Lx , E(F20F38,72,_,_,_,0,4,FV ), 0 , 131, 0 , 213, 144), // #856
923 INST(Vcvtneps2bf16 , VexRm_Lx_Narrow , E(F30F38,72,_,_,_,0,4,FV ), 0 , 132, 0 , 236, 144), // #857
924 INST(Vcvtpd2dq , VexRm_Lx_Narrow , V(F20F00,E6,_,x,I,1,4,FV ), 0 , 133, 0 , 237, 131), // #858
925 INST(Vcvtpd2ph , VexRm_Lx , E(66MAP5,5A,_,_,_,1,4,FV ), 0 , 134, 0 , 238, 132), // #859
926 INST(Vcvtpd2ps , VexRm_Lx_Narrow , V(660F00,5A,_,x,I,1,4,FV ), 0 , 103, 0 , 237, 131), // #860
927 INST(Vcvtpd2qq , VexRm_Lx , E(660F00,7B,_,x,_,1,4,FV ), 0 , 135, 0 , 239, 140), // #861
928 INST(Vcvtpd2udq , VexRm_Lx_Narrow , E(000F00,79,_,x,_,1,4,FV ), 0 , 136, 0 , 240, 138), // #862
929 INST(Vcvtpd2uqq , VexRm_Lx , E(660F00,79,_,x,_,1,4,FV ), 0 , 135, 0 , 239, 140), // #863
930 INST(Vcvtph2dq , VexRm_Lx , E(66MAP5,5B,_,_,_,0,3,HV ), 0 , 137, 0 , 241, 132), // #864
931 INST(Vcvtph2pd , VexRm_Lx , E(00MAP5,5A,_,_,_,0,2,QV ), 0 , 138, 0 , 242, 132), // #865
932 INST(Vcvtph2ps , VexRm_Lx , V(660F38,13,_,x,0,0,3,HVM), 0 , 139, 0 , 243, 145), // #866
933 INST(Vcvtph2psx , VexRm_Lx , E(66MAP6,13,_,_,_,0,3,HV ), 0 , 140, 0 , 244, 132), // #867
934 INST(Vcvtph2qq , VexRm_Lx , E(66MAP5,7B,_,_,_,0,2,QV ), 0 , 141, 0 , 245, 132), // #868
935 INST(Vcvtph2udq , VexRm_Lx , E(00MAP5,79,_,_,_,0,3,HV ), 0 , 142, 0 , 241, 132), // #869
936 INST(Vcvtph2uqq , VexRm_Lx , E(66MAP5,79,_,_,_,0,2,QV ), 0 , 141, 0 , 245, 132), // #870
937 INST(Vcvtph2uw , VexRm_Lx , E(00MAP5,7D,_,_,_,0,4,FV ), 0 , 104, 0 , 246, 132), // #871
938 INST(Vcvtph2w , VexRm_Lx , E(66MAP5,7D,_,_,_,0,4,FV ), 0 , 143, 0 , 246, 132), // #872
939 INST(Vcvtps2dq , VexRm_Lx , V(660F00,5B,_,x,I,0,4,FV ), 0 , 144, 0 , 235, 131), // #873
940 INST(Vcvtps2pd , VexRm_Lx , V(000F00,5A,_,x,I,0,3,HV ), 0 , 145, 0 , 247, 131), // #874
941 INST(Vcvtps2ph , VexMri_Lx , V(660F3A,1D,_,x,0,0,3,HVM), 0 , 146, 0 , 248, 145), // #875
942 INST(Vcvtps2phx , VexRm_Lx , E(66MAP5,1D,_,_,_,0,4,FV ), 0 , 143, 0 , 234, 132), // #876
943 INST(Vcvtps2qq , VexRm_Lx , E(660F00,7B,_,x,_,0,3,HV ), 0 , 147, 0 , 249, 140), // #877
944 INST(Vcvtps2udq , VexRm_Lx , E(000F00,79,_,x,_,0,4,FV ), 0 , 148, 0 , 250, 138), // #878
945 INST(Vcvtps2uqq , VexRm_Lx , E(660F00,79,_,x,_,0,3,HV ), 0 , 147, 0 , 249, 140), // #879
946 INST(Vcvtqq2pd , VexRm_Lx , E(F30F00,E6,_,x,_,1,4,FV ), 0 , 149, 0 , 239, 140), // #880
947 INST(Vcvtqq2ph , VexRm_Lx , E(00MAP5,5B,_,_,_,1,4,FV ), 0 , 150, 0 , 238, 132), // #881
948 INST(Vcvtqq2ps , VexRm_Lx_Narrow , E(000F00,5B,_,x,_,1,4,FV ), 0 , 136, 0 , 240, 140), // #882
949 INST(Vcvtsd2sh , VexRvm , E(F2MAP5,5A,_,_,_,1,3,T1S), 0 , 151, 0 , 251, 134), // #883
950 INST(Vcvtsd2si , VexRm_Wx , V(F20F00,2D,_,I,x,x,3,T1F), 0 , 152, 0 , 252, 133), // #884
951 INST(Vcvtsd2ss , VexRvm , V(F20F00,5A,_,I,I,1,3,T1S), 0 , 106, 0 , 199, 133), // #885
952 INST(Vcvtsd2usi , VexRm_Wx , E(F20F00,79,_,I,_,x,3,T1F), 0 , 153, 0 , 253, 68 ), // #886
953 INST(Vcvtsh2sd , VexRvm , E(F3MAP5,5A,_,_,_,0,1,T1S), 0 , 107, 0 , 254, 134), // #887
954 INST(Vcvtsh2si , VexRm_Wx , E(F3MAP5,2D,_,_,_,x,1,T1S), 0 , 107, 0 , 255, 134), // #888
955 INST(Vcvtsh2ss , VexRvm , E(00MAP6,13,_,_,_,0,1,T1S), 0 , 154, 0 , 254, 134), // #889
956 INST(Vcvtsh2usi , VexRm_Wx , E(F3MAP5,79,_,_,_,x,1,T1S), 0 , 107, 0 , 255, 134), // #890
957 INST(Vcvtsi2sd , VexRvm_Wx , V(F20F00,2A,_,I,x,x,2,T1W), 0 , 155, 0 , 256, 133), // #891
958 INST(Vcvtsi2sh , VexRvm_Wx , E(F3MAP5,2A,_,_,_,x,2,T1W), 0 , 156, 0 , 257, 134), // #892
959 INST(Vcvtsi2ss , VexRvm_Wx , V(F30F00,2A,_,I,x,x,2,T1W), 0 , 157, 0 , 256, 133), // #893
960 INST(Vcvtss2sd , VexRvm , V(F30F00,5A,_,I,I,0,2,T1S), 0 , 108, 0 , 258, 133), // #894
961 INST(Vcvtss2sh , VexRvm , E(00MAP5,1D,_,_,_,0,2,T1S), 0 , 158, 0 , 259, 134), // #895
962 INST(Vcvtss2si , VexRm_Wx , V(F30F00,2D,_,I,x,x,2,T1F), 0 , 108, 0 , 260, 133), // #896
963 INST(Vcvtss2usi , VexRm_Wx , E(F30F00,79,_,I,_,x,2,T1F), 0 , 159, 0 , 261, 68 ), // #897
964 INST(Vcvttpd2dq , VexRm_Lx_Narrow , V(660F00,E6,_,x,I,1,4,FV ), 0 , 103, 0 , 262, 131), // #898
965 INST(Vcvttpd2qq , VexRm_Lx , E(660F00,7A,_,x,_,1,4,FV ), 0 , 135, 0 , 263, 138), // #899
966 INST(Vcvttpd2udq , VexRm_Lx_Narrow , E(000F00,78,_,x,_,1,4,FV ), 0 , 136, 0 , 264, 138), // #900
967 INST(Vcvttpd2uqq , VexRm_Lx , E(660F00,78,_,x,_,1,4,FV ), 0 , 135, 0 , 263, 140), // #901
968 INST(Vcvttph2dq , VexRm_Lx , E(F3MAP5,5B,_,_,_,0,3,HV ), 0 , 160, 0 , 244, 132), // #902
969 INST(Vcvttph2qq , VexRm_Lx , E(66MAP5,7A,_,_,_,0,2,QV ), 0 , 141, 0 , 242, 132), // #903
970 INST(Vcvttph2udq , VexRm_Lx , E(00MAP5,78,_,_,_,0,3,HV ), 0 , 142, 0 , 244, 132), // #904
971 INST(Vcvttph2uqq , VexRm_Lx , E(66MAP5,78,_,_,_,0,2,QV ), 0 , 141, 0 , 242, 132), // #905
972 INST(Vcvttph2uw , VexRm_Lx , E(00MAP5,7C,_,_,_,0,4,FV ), 0 , 104, 0 , 265, 132), // #906
973 INST(Vcvttph2w , VexRm_Lx , E(66MAP5,7C,_,_,_,0,4,FV ), 0 , 143, 0 , 265, 132), // #907
974 INST(Vcvttps2dq , VexRm_Lx , V(F30F00,5B,_,x,I,0,4,FV ), 0 , 161, 0 , 266, 131), // #908
975 INST(Vcvttps2qq , VexRm_Lx , E(660F00,7A,_,x,_,0,3,HV ), 0 , 147, 0 , 267, 140), // #909
976 INST(Vcvttps2udq , VexRm_Lx , E(000F00,78,_,x,_,0,4,FV ), 0 , 148, 0 , 268, 138), // #910
977 INST(Vcvttps2uqq , VexRm_Lx , E(660F00,78,_,x,_,0,3,HV ), 0 , 147, 0 , 267, 140), // #911
978 INST(Vcvttsd2si , VexRm_Wx , V(F20F00,2C,_,I,x,x,3,T1F), 0 , 152, 0 , 269, 133), // #912
979 INST(Vcvttsd2usi , VexRm_Wx , E(F20F00,78,_,I,_,x,3,T1F), 0 , 153, 0 , 270, 68 ), // #913
980 INST(Vcvttsh2si , VexRm_Wx , E(F3MAP5,2C,_,_,_,x,1,T1S), 0 , 107, 0 , 271, 134), // #914
981 INST(Vcvttsh2usi , VexRm_Wx , E(F3MAP5,78,_,_,_,x,1,T1S), 0 , 107, 0 , 271, 134), // #915
982 INST(Vcvttss2si , VexRm_Wx , V(F30F00,2C,_,I,x,x,2,T1F), 0 , 108, 0 , 272, 133), // #916
983 INST(Vcvttss2usi , VexRm_Wx , E(F30F00,78,_,I,_,x,2,T1F), 0 , 159, 0 , 273, 68 ), // #917
984 INST(Vcvtudq2pd , VexRm_Lx , E(F30F00,7A,_,x,_,0,3,HV ), 0 , 162, 0 , 274, 138), // #918
985 INST(Vcvtudq2ph , VexRm_Lx , E(F2MAP5,7A,_,_,_,0,4,FV ), 0 , 163, 0 , 234, 132), // #919
986 INST(Vcvtudq2ps , VexRm_Lx , E(F20F00,7A,_,x,_,0,4,FV ), 0 , 164, 0 , 250, 138), // #920
987 INST(Vcvtuqq2pd , VexRm_Lx , E(F30F00,7A,_,x,_,1,4,FV ), 0 , 149, 0 , 239, 140), // #921
988 INST(Vcvtuqq2ph , VexRm_Lx , E(F2MAP5,7A,_,_,_,1,4,FV ), 0 , 165, 0 , 238, 132), // #922
989 INST(Vcvtuqq2ps , VexRm_Lx_Narrow , E(F20F00,7A,_,x,_,1,4,FV ), 0 , 166, 0 , 240, 140), // #923
990 INST(Vcvtusi2sd , VexRvm_Wx , E(F20F00,7B,_,I,_,x,2,T1W), 0 , 167, 0 , 257, 68 ), // #924
991 INST(Vcvtusi2sh , VexRvm_Wx , E(F3MAP5,7B,_,_,_,x,2,T1W), 0 , 156, 0 , 257, 134), // #925
992 INST(Vcvtusi2ss , VexRvm_Wx , E(F30F00,7B,_,I,_,x,2,T1W), 0 , 168, 0 , 257, 68 ), // #926
993 INST(Vcvtuw2ph , VexRm_Lx , E(F2MAP5,7D,_,_,_,0,4,FV ), 0 , 163, 0 , 246, 132), // #927
994 INST(Vcvtw2ph , VexRm_Lx , E(F3MAP5,7D,_,_,_,0,4,FV ), 0 , 169, 0 , 246, 132), // #928
995 INST(Vdbpsadbw , VexRvmi_Lx , E(660F3A,42,_,x,_,0,4,FVM), 0 , 111, 0 , 275, 146), // #929
996 INST(Vdivpd , VexRvm_Lx , V(660F00,5E,_,x,I,1,4,FV ), 0 , 103, 0 , 196, 131), // #930
997 INST(Vdivph , VexRvm_Lx , E(00MAP5,5E,_,_,_,0,4,FV ), 0 , 104, 0 , 197, 132), // #931
998 INST(Vdivps , VexRvm_Lx , V(000F00,5E,_,x,I,0,4,FV ), 0 , 105, 0 , 198, 131), // #932
999 INST(Vdivsd , VexRvm , V(F20F00,5E,_,I,I,1,3,T1S), 0 , 106, 0 , 199, 133), // #933
1000 INST(Vdivsh , VexRvm , E(F3MAP5,5E,_,_,_,0,1,T1S), 0 , 107, 0 , 200, 134), // #934
1001 INST(Vdivss , VexRvm , V(F30F00,5E,_,I,I,0,2,T1S), 0 , 108, 0 , 201, 133), // #935
1002 INST(Vdpbf16ps , VexRvm_Lx , E(F30F38,52,_,_,_,0,4,FV ), 0 , 132, 0 , 213, 144), // #936
1003 INST(Vdppd , VexRvmi_Lx , V(660F3A,41,_,x,I,_,_,_ ), 0 , 73 , 0 , 276, 135), // #937
1004 INST(Vdpps , VexRvmi_Lx , V(660F3A,40,_,x,I,_,_,_ ), 0 , 73 , 0 , 214, 135), // #938
1005 INST(Verr , X86M_NoSize , O(000F00,00,4,_,_,_,_,_ ), 0 , 97 , 0 , 107, 10 ), // #939
1006 INST(Verw , X86M_NoSize , O(000F00,00,5,_,_,_,_,_ ), 0 , 77 , 0 , 107, 10 ), // #940
1007 INST(Vexp2pd , VexRm , E(660F38,C8,_,2,_,1,4,FV ), 0 , 170, 0 , 277, 147), // #941
1008 INST(Vexp2ps , VexRm , E(660F38,C8,_,2,_,0,4,FV ), 0 , 171, 0 , 278, 147), // #942
1009 INST(Vexpandpd , VexRm_Lx , E(660F38,88,_,x,_,1,3,T1S), 0 , 128, 0 , 279, 138), // #943
1010 INST(Vexpandps , VexRm_Lx , E(660F38,88,_,x,_,0,2,T1S), 0 , 129, 0 , 279, 138), // #944
1011 INST(Vextractf128 , VexMri , V(660F3A,19,_,1,0,_,_,_ ), 0 , 172, 0 , 280, 135), // #945
1012 INST(Vextractf32x4 , VexMri_Lx , E(660F3A,19,_,x,_,0,4,T4 ), 0 , 173, 0 , 281, 138), // #946
1013 INST(Vextractf32x8 , VexMri , E(660F3A,1B,_,2,_,0,5,T8 ), 0 , 174, 0 , 282, 66 ), // #947
1014 INST(Vextractf64x2 , VexMri_Lx , E(660F3A,19,_,x,_,1,4,T2 ), 0 , 175, 0 , 281, 140), // #948
1015 INST(Vextractf64x4 , VexMri , E(660F3A,1B,_,2,_,1,5,T4 ), 0 , 176, 0 , 282, 68 ), // #949
1016 INST(Vextracti128 , VexMri , V(660F3A,39,_,1,0,_,_,_ ), 0 , 172, 0 , 280, 141), // #950
1017 INST(Vextracti32x4 , VexMri_Lx , E(660F3A,39,_,x,_,0,4,T4 ), 0 , 173, 0 , 281, 138), // #951
1018 INST(Vextracti32x8 , VexMri , E(660F3A,3B,_,2,_,0,5,T8 ), 0 , 174, 0 , 282, 66 ), // #952
1019 INST(Vextracti64x2 , VexMri_Lx , E(660F3A,39,_,x,_,1,4,T2 ), 0 , 175, 0 , 281, 140), // #953
1020 INST(Vextracti64x4 , VexMri , E(660F3A,3B,_,2,_,1,5,T4 ), 0 , 176, 0 , 282, 68 ), // #954
1021 INST(Vextractps , VexMri , V(660F3A,17,_,0,I,I,2,T1S), 0 , 177, 0 , 283, 133), // #955
1022 INST(Vfcmaddcph , VexRvm_Lx , E(F2MAP6,56,_,_,_,0,4,FV ), 0 , 178, 0 , 284, 132), // #956
1023 INST(Vfcmaddcsh , VexRvm , E(F2MAP6,57,_,_,_,0,2,T1S), 0 , 179, 0 , 259, 132), // #957
1024 INST(Vfcmulcph , VexRvm_Lx , E(F2MAP6,D6,_,_,_,0,4,FV ), 0 , 178, 0 , 284, 132), // #958
1025 INST(Vfcmulcsh , VexRvm , E(F2MAP6,D7,_,_,_,0,2,T1S), 0 , 179, 0 , 259, 132), // #959
1026 INST(Vfixupimmpd , VexRvmi_Lx , E(660F3A,54,_,x,_,1,4,FV ), 0 , 112, 0 , 285, 138), // #960
1027 INST(Vfixupimmps , VexRvmi_Lx , E(660F3A,54,_,x,_,0,4,FV ), 0 , 111, 0 , 286, 138), // #961
1028 INST(Vfixupimmsd , VexRvmi , E(660F3A,55,_,I,_,1,3,T1S), 0 , 180, 0 , 287, 68 ), // #962
1029 INST(Vfixupimmss , VexRvmi , E(660F3A,55,_,I,_,0,2,T1S), 0 , 181, 0 , 288, 68 ), // #963
1030 INST(Vfmadd132pd , VexRvm_Lx , V(660F38,98,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #964
1031 INST(Vfmadd132ph , VexRvm_Lx , E(66MAP6,98,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #965
1032 INST(Vfmadd132ps , VexRvm_Lx , V(660F38,98,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #966
1033 INST(Vfmadd132sd , VexRvm , V(660F38,99,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #967
1034 INST(Vfmadd132sh , VexRvm , E(66MAP6,99,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #968
1035 INST(Vfmadd132ss , VexRvm , V(660F38,99,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #969
1036 INST(Vfmadd213pd , VexRvm_Lx , V(660F38,A8,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #970
1037 INST(Vfmadd213ph , VexRvm_Lx , E(66MAP6,A8,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #971
1038 INST(Vfmadd213ps , VexRvm_Lx , V(660F38,A8,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #972
1039 INST(Vfmadd213sd , VexRvm , V(660F38,A9,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #973
1040 INST(Vfmadd213sh , VexRvm , E(66MAP6,A9,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #974
1041 INST(Vfmadd213ss , VexRvm , V(660F38,A9,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #975
1042 INST(Vfmadd231pd , VexRvm_Lx , V(660F38,B8,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #976
1043 INST(Vfmadd231ph , VexRvm_Lx , E(66MAP6,B8,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #977
1044 INST(Vfmadd231ps , VexRvm_Lx , V(660F38,B8,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #978
1045 INST(Vfmadd231sd , VexRvm , V(660F38,B9,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #979
1046 INST(Vfmadd231sh , VexRvm , E(66MAP6,B9,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #980
1047 INST(Vfmadd231ss , VexRvm , V(660F38,B9,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #981
1048 INST(Vfmaddcph , VexRvm_Lx , E(F3MAP6,56,_,_,_,0,4,FV ), 0 , 186, 0 , 284, 132), // #982
1049 INST(Vfmaddcsh , VexRvm , E(F3MAP6,57,_,_,_,0,2,T1S), 0 , 187, 0 , 259, 132), // #983
1050 INST(Vfmaddpd , Fma4_Lx , V(660F3A,69,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #984
1051 INST(Vfmaddps , Fma4_Lx , V(660F3A,68,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #985
1052 INST(Vfmaddsd , Fma4 , V(660F3A,6B,_,0,x,_,_,_ ), 0 , 73 , 0 , 290, 150), // #986
1053 INST(Vfmaddss , Fma4 , V(660F3A,6A,_,0,x,_,_,_ ), 0 , 73 , 0 , 291, 150), // #987
1054 INST(Vfmaddsub132pd , VexRvm_Lx , V(660F38,96,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #988
1055 INST(Vfmaddsub132ph , VexRvm_Lx , E(66MAP6,96,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #989
1056 INST(Vfmaddsub132ps , VexRvm_Lx , V(660F38,96,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #990
1057 INST(Vfmaddsub213pd , VexRvm_Lx , V(660F38,A6,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #991
1058 INST(Vfmaddsub213ph , VexRvm_Lx , E(66MAP6,A6,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #992
1059 INST(Vfmaddsub213ps , VexRvm_Lx , V(660F38,A6,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #993
1060 INST(Vfmaddsub231pd , VexRvm_Lx , V(660F38,B6,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #994
1061 INST(Vfmaddsub231ph , VexRvm_Lx , E(66MAP6,B6,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #995
1062 INST(Vfmaddsub231ps , VexRvm_Lx , V(660F38,B6,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #996
1063 INST(Vfmaddsubpd , Fma4_Lx , V(660F3A,5D,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #997
1064 INST(Vfmaddsubps , Fma4_Lx , V(660F3A,5C,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #998
1065 INST(Vfmsub132pd , VexRvm_Lx , V(660F38,9A,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #999
1066 INST(Vfmsub132ph , VexRvm_Lx , E(66MAP6,9A,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1000
1067 INST(Vfmsub132ps , VexRvm_Lx , V(660F38,9A,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1001
1068 INST(Vfmsub132sd , VexRvm , V(660F38,9B,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1002
1069 INST(Vfmsub132sh , VexRvm , E(66MAP6,9B,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1003
1070 INST(Vfmsub132ss , VexRvm , V(660F38,9B,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1004
1071 INST(Vfmsub213pd , VexRvm_Lx , V(660F38,AA,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1005
1072 INST(Vfmsub213ph , VexRvm_Lx , E(66MAP6,AA,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1006
1073 INST(Vfmsub213ps , VexRvm_Lx , V(660F38,AA,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1007
1074 INST(Vfmsub213sd , VexRvm , V(660F38,AB,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1008
1075 INST(Vfmsub213sh , VexRvm , E(66MAP6,AB,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1009
1076 INST(Vfmsub213ss , VexRvm , V(660F38,AB,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1010
1077 INST(Vfmsub231pd , VexRvm_Lx , V(660F38,BA,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1011
1078 INST(Vfmsub231ph , VexRvm_Lx , E(66MAP6,BA,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1012
1079 INST(Vfmsub231ps , VexRvm_Lx , V(660F38,BA,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1013
1080 INST(Vfmsub231sd , VexRvm , V(660F38,BB,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1014
1081 INST(Vfmsub231sh , VexRvm , E(66MAP6,BB,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1015
1082 INST(Vfmsub231ss , VexRvm , V(660F38,BB,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1016
1083 INST(Vfmsubadd132pd , VexRvm_Lx , V(660F38,97,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1017
1084 INST(Vfmsubadd132ph , VexRvm_Lx , E(66MAP6,97,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1018
1085 INST(Vfmsubadd132ps , VexRvm_Lx , V(660F38,97,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1019
1086 INST(Vfmsubadd213pd , VexRvm_Lx , V(660F38,A7,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1020
1087 INST(Vfmsubadd213ph , VexRvm_Lx , E(66MAP6,A7,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1021
1088 INST(Vfmsubadd213ps , VexRvm_Lx , V(660F38,A7,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1022
1089 INST(Vfmsubadd231pd , VexRvm_Lx , V(660F38,B7,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1023
1090 INST(Vfmsubadd231ph , VexRvm_Lx , E(66MAP6,B7,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1024
1091 INST(Vfmsubadd231ps , VexRvm_Lx , V(660F38,B7,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1025
1092 INST(Vfmsubaddpd , Fma4_Lx , V(660F3A,5F,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #1026
1093 INST(Vfmsubaddps , Fma4_Lx , V(660F3A,5E,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #1027
1094 INST(Vfmsubpd , Fma4_Lx , V(660F3A,6D,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #1028
1095 INST(Vfmsubps , Fma4_Lx , V(660F3A,6C,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #1029
1096 INST(Vfmsubsd , Fma4 , V(660F3A,6F,_,0,x,_,_,_ ), 0 , 73 , 0 , 290, 150), // #1030
1097 INST(Vfmsubss , Fma4 , V(660F3A,6E,_,0,x,_,_,_ ), 0 , 73 , 0 , 291, 150), // #1031
1098 INST(Vfmulcph , VexRvm_Lx , E(F3MAP6,D6,_,_,_,0,4,FV ), 0 , 186, 0 , 284, 132), // #1032
1099 INST(Vfmulcsh , VexRvm , E(F3MAP6,D7,_,_,_,0,2,T1S), 0 , 187, 0 , 259, 132), // #1033
1100 INST(Vfnmadd132pd , VexRvm_Lx , V(660F38,9C,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1034
1101 INST(Vfnmadd132ph , VexRvm_Lx , E(66MAP6,9C,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1035
1102 INST(Vfnmadd132ps , VexRvm_Lx , V(660F38,9C,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1036
1103 INST(Vfnmadd132sd , VexRvm , V(660F38,9D,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1037
1104 INST(Vfnmadd132sh , VexRvm , E(66MAP6,9D,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1038
1105 INST(Vfnmadd132ss , VexRvm , V(660F38,9D,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1039
1106 INST(Vfnmadd213pd , VexRvm_Lx , V(660F38,AC,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1040
1107 INST(Vfnmadd213ph , VexRvm_Lx , E(66MAP6,AC,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1041
1108 INST(Vfnmadd213ps , VexRvm_Lx , V(660F38,AC,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1042
1109 INST(Vfnmadd213sd , VexRvm , V(660F38,AD,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1043
1110 INST(Vfnmadd213sh , VexRvm , E(66MAP6,AD,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1044
1111 INST(Vfnmadd213ss , VexRvm , V(660F38,AD,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1045
1112 INST(Vfnmadd231pd , VexRvm_Lx , V(660F38,BC,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1046
1113 INST(Vfnmadd231ph , VexRvm_Lx , E(66MAP6,BC,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1047
1114 INST(Vfnmadd231ps , VexRvm_Lx , V(660F38,BC,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1048
1115 INST(Vfnmadd231sd , VexRvm , V(660F38,BD,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1049
1116 INST(Vfnmadd231sh , VexRvm , E(66MAP6,BD,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1050
1117 INST(Vfnmadd231ss , VexRvm , V(660F38,BD,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1051
1118 INST(Vfnmaddpd , Fma4_Lx , V(660F3A,79,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #1052
1119 INST(Vfnmaddps , Fma4_Lx , V(660F3A,78,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #1053
1120 INST(Vfnmaddsd , Fma4 , V(660F3A,7B,_,0,x,_,_,_ ), 0 , 73 , 0 , 290, 150), // #1054
1121 INST(Vfnmaddss , Fma4 , V(660F3A,7A,_,0,x,_,_,_ ), 0 , 73 , 0 , 291, 150), // #1055
1122 INST(Vfnmsub132pd , VexRvm_Lx , V(660F38,9E,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1056
1123 INST(Vfnmsub132ph , VexRvm_Lx , E(66MAP6,9E,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1057
1124 INST(Vfnmsub132ps , VexRvm_Lx , V(660F38,9E,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1058
1125 INST(Vfnmsub132sd , VexRvm , V(660F38,9F,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1059
1126 INST(Vfnmsub132sh , VexRvm , E(66MAP6,9F,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1060
1127 INST(Vfnmsub132ss , VexRvm , V(660F38,9F,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1061
1128 INST(Vfnmsub213pd , VexRvm_Lx , V(660F38,AE,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1062
1129 INST(Vfnmsub213ph , VexRvm_Lx , E(66MAP6,AE,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1063
1130 INST(Vfnmsub213ps , VexRvm_Lx , V(660F38,AE,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1064
1131 INST(Vfnmsub213sd , VexRvm , V(660F38,AF,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1065
1132 INST(Vfnmsub213sh , VexRvm , E(66MAP6,AF,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1066
1133 INST(Vfnmsub213ss , VexRvm , V(660F38,AF,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1067
1134 INST(Vfnmsub231pd , VexRvm_Lx , V(660F38,BE,_,x,1,1,4,FV ), 0 , 182, 0 , 196, 148), // #1068
1135 INST(Vfnmsub231ph , VexRvm_Lx , E(66MAP6,BE,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1069
1136 INST(Vfnmsub231ps , VexRvm_Lx , V(660F38,BE,_,x,0,0,4,FV ), 0 , 110, 0 , 198, 148), // #1070
1137 INST(Vfnmsub231sd , VexRvm , V(660F38,BF,_,I,1,1,3,T1S), 0 , 184, 0 , 199, 149), // #1071
1138 INST(Vfnmsub231sh , VexRvm , E(66MAP6,BF,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1072
1139 INST(Vfnmsub231ss , VexRvm , V(660F38,BF,_,I,0,0,2,T1S), 0 , 122, 0 , 201, 149), // #1073
1140 INST(Vfnmsubpd , Fma4_Lx , V(660F3A,7D,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #1074
1141 INST(Vfnmsubps , Fma4_Lx , V(660F3A,7C,_,x,x,_,_,_ ), 0 , 73 , 0 , 289, 150), // #1075
1142 INST(Vfnmsubsd , Fma4 , V(660F3A,7F,_,0,x,_,_,_ ), 0 , 73 , 0 , 290, 150), // #1076
1143 INST(Vfnmsubss , Fma4 , V(660F3A,7E,_,0,x,_,_,_ ), 0 , 73 , 0 , 291, 150), // #1077
1144 INST(Vfpclasspd , VexRmi_Lx , E(660F3A,66,_,x,_,1,4,FV ), 0 , 112, 0 , 292, 140), // #1078
1145 INST(Vfpclassph , VexRmi_Lx , E(000F3A,66,_,_,_,0,4,FV ), 0 , 123, 0 , 293, 132), // #1079
1146 INST(Vfpclassps , VexRmi_Lx , E(660F3A,66,_,x,_,0,4,FV ), 0 , 111, 0 , 294, 140), // #1080
1147 INST(Vfpclasssd , VexRmi , E(660F3A,67,_,I,_,1,3,T1S), 0 , 180, 0 , 295, 66 ), // #1081
1148 INST(Vfpclasssh , VexRmi , E(000F3A,67,_,_,_,0,1,T1S), 0 , 188, 0 , 296, 134), // #1082
1149 INST(Vfpclassss , VexRmi , E(660F3A,67,_,I,_,0,2,T1S), 0 , 181, 0 , 297, 66 ), // #1083
1150 INST(Vfrczpd , VexRm_Lx , V(XOP_M9,81,_,x,0,_,_,_ ), 0 , 79 , 0 , 298, 151), // #1084
1151 INST(Vfrczps , VexRm_Lx , V(XOP_M9,80,_,x,0,_,_,_ ), 0 , 79 , 0 , 298, 151), // #1085
1152 INST(Vfrczsd , VexRm , V(XOP_M9,83,_,0,0,_,_,_ ), 0 , 79 , 0 , 299, 151), // #1086
1153 INST(Vfrczss , VexRm , V(XOP_M9,82,_,0,0,_,_,_ ), 0 , 79 , 0 , 300, 151), // #1087
1154 INST(Vgatherdpd , VexRmvRm_VM , V(660F38,92,_,x,1,_,_,_ ), E(660F38,92,_,x,_,1,3,T1S), 189, 80 , 301, 152), // #1088
1155 INST(Vgatherdps , VexRmvRm_VM , V(660F38,92,_,x,0,_,_,_ ), E(660F38,92,_,x,_,0,2,T1S), 96 , 81 , 302, 152), // #1089
1156 INST(Vgatherpf0dpd , VexM_VM , E(660F38,C6,1,2,_,1,3,T1S), 0 , 190, 0 , 303, 153), // #1090
1157 INST(Vgatherpf0dps , VexM_VM , E(660F38,C6,1,2,_,0,2,T1S), 0 , 191, 0 , 304, 153), // #1091
1158 INST(Vgatherpf0qpd , VexM_VM , E(660F38,C7,1,2,_,1,3,T1S), 0 , 190, 0 , 305, 153), // #1092
1159 INST(Vgatherpf0qps , VexM_VM , E(660F38,C7,1,2,_,0,2,T1S), 0 , 191, 0 , 305, 153), // #1093
1160 INST(Vgatherpf1dpd , VexM_VM , E(660F38,C6,2,2,_,1,3,T1S), 0 , 192, 0 , 303, 153), // #1094
1161 INST(Vgatherpf1dps , VexM_VM , E(660F38,C6,2,2,_,0,2,T1S), 0 , 193, 0 , 304, 153), // #1095
1162 INST(Vgatherpf1qpd , VexM_VM , E(660F38,C7,2,2,_,1,3,T1S), 0 , 192, 0 , 305, 153), // #1096
1163 INST(Vgatherpf1qps , VexM_VM , E(660F38,C7,2,2,_,0,2,T1S), 0 , 193, 0 , 305, 153), // #1097
1164 INST(Vgatherqpd , VexRmvRm_VM , V(660F38,93,_,x,1,_,_,_ ), E(660F38,93,_,x,_,1,3,T1S), 189, 82 , 306, 152), // #1098
1165 INST(Vgatherqps , VexRmvRm_VM , V(660F38,93,_,x,0,_,_,_ ), E(660F38,93,_,x,_,0,2,T1S), 96 , 83 , 307, 152), // #1099
1166 INST(Vgetexppd , VexRm_Lx , E(660F38,42,_,x,_,1,4,FV ), 0 , 113, 0 , 263, 138), // #1100
1167 INST(Vgetexpph , VexRm_Lx , E(66MAP6,42,_,_,_,0,4,FV ), 0 , 183, 0 , 265, 132), // #1101
1168 INST(Vgetexpps , VexRm_Lx , E(660F38,42,_,x,_,0,4,FV ), 0 , 114, 0 , 268, 138), // #1102
1169 INST(Vgetexpsd , VexRvm , E(660F38,43,_,I,_,1,3,T1S), 0 , 128, 0 , 308, 68 ), // #1103
1170 INST(Vgetexpsh , VexRvm , E(66MAP6,43,_,_,_,0,1,T1S), 0 , 185, 0 , 254, 134), // #1104
1171 INST(Vgetexpss , VexRvm , E(660F38,43,_,I,_,0,2,T1S), 0 , 129, 0 , 309, 68 ), // #1105
1172 INST(Vgetmantpd , VexRmi_Lx , E(660F3A,26,_,x,_,1,4,FV ), 0 , 112, 0 , 310, 138), // #1106
1173 INST(Vgetmantph , VexRmi_Lx , E(000F3A,26,_,_,_,0,4,FV ), 0 , 123, 0 , 311, 132), // #1107
1174 INST(Vgetmantps , VexRmi_Lx , E(660F3A,26,_,x,_,0,4,FV ), 0 , 111, 0 , 312, 138), // #1108
1175 INST(Vgetmantsd , VexRvmi , E(660F3A,27,_,I,_,1,3,T1S), 0 , 180, 0 , 287, 68 ), // #1109
1176 INST(Vgetmantsh , VexRvmi , E(000F3A,27,_,_,_,0,1,T1S), 0 , 188, 0 , 313, 134), // #1110
1177 INST(Vgetmantss , VexRvmi , E(660F3A,27,_,I,_,0,2,T1S), 0 , 181, 0 , 288, 68 ), // #1111
1178 INST(Vgf2p8affineinvqb, VexRvmi_Lx , V(660F3A,CF,_,x,1,1,4,FV ), 0 , 194, 0 , 314, 154), // #1112
1179 INST(Vgf2p8affineqb , VexRvmi_Lx , V(660F3A,CE,_,x,1,1,4,FV ), 0 , 194, 0 , 314, 154), // #1113
1180 INST(Vgf2p8mulb , VexRvm_Lx , V(660F38,CF,_,x,0,0,4,FV ), 0 , 110, 0 , 315, 154), // #1114
1181 INST(Vhaddpd , VexRvm_Lx , V(660F00,7C,_,x,I,_,_,_ ), 0 , 69 , 0 , 202, 135), // #1115
1182 INST(Vhaddps , VexRvm_Lx , V(F20F00,7C,_,x,I,_,_,_ ), 0 , 109, 0 , 202, 135), // #1116
1183 INST(Vhsubpd , VexRvm_Lx , V(660F00,7D,_,x,I,_,_,_ ), 0 , 69 , 0 , 202, 135), // #1117
1184 INST(Vhsubps , VexRvm_Lx , V(F20F00,7D,_,x,I,_,_,_ ), 0 , 109, 0 , 202, 135), // #1118
1185 INST(Vinsertf128 , VexRvmi , V(660F3A,18,_,1,0,_,_,_ ), 0 , 172, 0 , 316, 135), // #1119
1186 INST(Vinsertf32x4 , VexRvmi_Lx , E(660F3A,18,_,x,_,0,4,T4 ), 0 , 173, 0 , 317, 138), // #1120
1187 INST(Vinsertf32x8 , VexRvmi , E(660F3A,1A,_,2,_,0,5,T8 ), 0 , 174, 0 , 318, 66 ), // #1121
1188 INST(Vinsertf64x2 , VexRvmi_Lx , E(660F3A,18,_,x,_,1,4,T2 ), 0 , 175, 0 , 317, 140), // #1122
1189 INST(Vinsertf64x4 , VexRvmi , E(660F3A,1A,_,2,_,1,5,T4 ), 0 , 176, 0 , 318, 68 ), // #1123
1190 INST(Vinserti128 , VexRvmi , V(660F3A,38,_,1,0,_,_,_ ), 0 , 172, 0 , 316, 141), // #1124
1191 INST(Vinserti32x4 , VexRvmi_Lx , E(660F3A,38,_,x,_,0,4,T4 ), 0 , 173, 0 , 317, 138), // #1125
1192 INST(Vinserti32x8 , VexRvmi , E(660F3A,3A,_,2,_,0,5,T8 ), 0 , 174, 0 , 318, 66 ), // #1126
1193 INST(Vinserti64x2 , VexRvmi_Lx , E(660F3A,38,_,x,_,1,4,T2 ), 0 , 175, 0 , 317, 140), // #1127
1194 INST(Vinserti64x4 , VexRvmi , E(660F3A,3A,_,2,_,1,5,T4 ), 0 , 176, 0 , 318, 68 ), // #1128
1195 INST(Vinsertps , VexRvmi , V(660F3A,21,_,0,I,0,2,T1S), 0 , 177, 0 , 319, 133), // #1129
1196 INST(Vlddqu , VexRm_Lx , V(F20F00,F0,_,x,I,_,_,_ ), 0 , 109, 0 , 320, 135), // #1130
1197 INST(Vldmxcsr , VexM , V(000F00,AE,2,0,I,_,_,_ ), 0 , 195, 0 , 321, 135), // #1131
1198 INST(Vmaskmovdqu , VexRm_ZDI , V(660F00,F7,_,0,I,_,_,_ ), 0 , 69 , 0 , 322, 135), // #1132
1199 INST(Vmaskmovpd , VexRvmMvr_Lx , V(660F38,2D,_,x,0,_,_,_ ), V(660F38,2F,_,x,0,_,_,_ ), 96 , 84 , 323, 135), // #1133
1200 INST(Vmaskmovps , VexRvmMvr_Lx , V(660F38,2C,_,x,0,_,_,_ ), V(660F38,2E,_,x,0,_,_,_ ), 96 , 85 , 323, 135), // #1134
1201 INST(Vmaxpd , VexRvm_Lx , V(660F00,5F,_,x,I,1,4,FV ), 0 , 103, 0 , 324, 131), // #1135
1202 INST(Vmaxph , VexRvm_Lx , E(00MAP5,5F,_,_,_,0,4,FV ), 0 , 104, 0 , 325, 132), // #1136
1203 INST(Vmaxps , VexRvm_Lx , V(000F00,5F,_,x,I,0,4,FV ), 0 , 105, 0 , 326, 131), // #1137
1204 INST(Vmaxsd , VexRvm , V(F20F00,5F,_,I,I,1,3,T1S), 0 , 106, 0 , 327, 131), // #1138
1205 INST(Vmaxsh , VexRvm , E(F3MAP5,5F,_,_,_,0,1,T1S), 0 , 107, 0 , 254, 134), // #1139
1206 INST(Vmaxss , VexRvm , V(F30F00,5F,_,I,I,0,2,T1S), 0 , 108, 0 , 258, 131), // #1140
1207 INST(Vmcall , X86Op , O(000F01,C1,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 58 ), // #1141
1208 INST(Vmclear , X86M_Only , O(660F00,C7,6,_,_,_,_,_ ), 0 , 26 , 0 , 32 , 58 ), // #1142
1209 INST(Vmfunc , X86Op , O(000F01,D4,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 58 ), // #1143
1210 INST(Vminpd , VexRvm_Lx , V(660F00,5D,_,x,I,1,4,FV ), 0 , 103, 0 , 324, 131), // #1144
1211 INST(Vminph , VexRvm_Lx , E(00MAP5,5D,_,_,_,0,4,FV ), 0 , 104, 0 , 325, 132), // #1145
1212 INST(Vminps , VexRvm_Lx , V(000F00,5D,_,x,I,0,4,FV ), 0 , 105, 0 , 326, 131), // #1146
1213 INST(Vminsd , VexRvm , V(F20F00,5D,_,I,I,1,3,T1S), 0 , 106, 0 , 327, 131), // #1147
1214 INST(Vminsh , VexRvm , E(F3MAP5,5D,_,_,_,0,1,T1S), 0 , 107, 0 , 254, 134), // #1148
1215 INST(Vminss , VexRvm , V(F30F00,5D,_,I,I,0,2,T1S), 0 , 108, 0 , 258, 131), // #1149
1216 INST(Vmlaunch , X86Op , O(000F01,C2,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 58 ), // #1150
1217 INST(Vmload , X86Op_xAX , O(000F01,DA,_,_,_,_,_,_ ), 0 , 21 , 0 , 328, 22 ), // #1151
1218 INST(Vmmcall , X86Op , O(000F01,D9,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 22 ), // #1152
1219 INST(Vmovapd , VexRmMr_Lx , V(660F00,28,_,x,I,1,4,FVM), V(660F00,29,_,x,I,1,4,FVM), 103, 86 , 329, 155), // #1153
1220 INST(Vmovaps , VexRmMr_Lx , V(000F00,28,_,x,I,0,4,FVM), V(000F00,29,_,x,I,0,4,FVM), 105, 87 , 329, 155), // #1154
1221 INST(Vmovd , VexMovdMovq , V(660F00,6E,_,0,0,0,2,T1S), V(660F00,7E,_,0,0,0,2,T1S), 196, 88 , 330, 133), // #1155
1222 INST(Vmovddup , VexRm_Lx , V(F20F00,12,_,x,I,1,3,DUP), 0 , 197, 0 , 331, 131), // #1156
1223 INST(Vmovdqa , VexRmMr_Lx , V(660F00,6F,_,x,I,_,_,_ ), V(660F00,7F,_,x,I,_,_,_ ), 69 , 89 , 332, 156), // #1157
1224 INST(Vmovdqa32 , VexRmMr_Lx , E(660F00,6F,_,x,_,0,4,FVM), E(660F00,7F,_,x,_,0,4,FVM), 198, 90 , 333, 157), // #1158
1225 INST(Vmovdqa64 , VexRmMr_Lx , E(660F00,6F,_,x,_,1,4,FVM), E(660F00,7F,_,x,_,1,4,FVM), 135, 91 , 333, 157), // #1159
1226 INST(Vmovdqu , VexRmMr_Lx , V(F30F00,6F,_,x,I,_,_,_ ), V(F30F00,7F,_,x,I,_,_,_ ), 199, 92 , 332, 156), // #1160
1227 INST(Vmovdqu16 , VexRmMr_Lx , E(F20F00,6F,_,x,_,1,4,FVM), E(F20F00,7F,_,x,_,1,4,FVM), 166, 93 , 333, 158), // #1161
1228 INST(Vmovdqu32 , VexRmMr_Lx , E(F30F00,6F,_,x,_,0,4,FVM), E(F30F00,7F,_,x,_,0,4,FVM), 200, 94 , 333, 157), // #1162
1229 INST(Vmovdqu64 , VexRmMr_Lx , E(F30F00,6F,_,x,_,1,4,FVM), E(F30F00,7F,_,x,_,1,4,FVM), 149, 95 , 333, 157), // #1163
1230 INST(Vmovdqu8 , VexRmMr_Lx , E(F20F00,6F,_,x,_,0,4,FVM), E(F20F00,7F,_,x,_,0,4,FVM), 164, 96 , 333, 158), // #1164
1231 INST(Vmovhlps , VexRvm , V(000F00,12,_,0,I,0,_,_ ), 0 , 72 , 0 , 334, 133), // #1165
1232 INST(Vmovhpd , VexRvmMr , V(660F00,16,_,0,I,1,3,T1S), V(660F00,17,_,0,I,1,3,T1S), 125, 97 , 335, 133), // #1166
1233 INST(Vmovhps , VexRvmMr , V(000F00,16,_,0,I,0,3,T2 ), V(000F00,17,_,0,I,0,3,T2 ), 201, 98 , 335, 133), // #1167
1234 INST(Vmovlhps , VexRvm , V(000F00,16,_,0,I,0,_,_ ), 0 , 72 , 0 , 334, 133), // #1168
1235 INST(Vmovlpd , VexRvmMr , V(660F00,12,_,0,I,1,3,T1S), V(660F00,13,_,0,I,1,3,T1S), 125, 99 , 335, 133), // #1169
1236 INST(Vmovlps , VexRvmMr , V(000F00,12,_,0,I,0,3,T2 ), V(000F00,13,_,0,I,0,3,T2 ), 201, 100, 335, 133), // #1170
1237 INST(Vmovmskpd , VexRm_Lx , V(660F00,50,_,x,I,_,_,_ ), 0 , 69 , 0 , 336, 135), // #1171
1238 INST(Vmovmskps , VexRm_Lx , V(000F00,50,_,x,I,_,_,_ ), 0 , 72 , 0 , 336, 135), // #1172
1239 INST(Vmovntdq , VexMr_Lx , V(660F00,E7,_,x,I,0,4,FVM), 0 , 144, 0 , 337, 131), // #1173
1240 INST(Vmovntdqa , VexRm_Lx , V(660F38,2A,_,x,I,0,4,FVM), 0 , 110, 0 , 338, 142), // #1174
1241 INST(Vmovntpd , VexMr_Lx , V(660F00,2B,_,x,I,1,4,FVM), 0 , 103, 0 , 337, 131), // #1175
1242 INST(Vmovntps , VexMr_Lx , V(000F00,2B,_,x,I,0,4,FVM), 0 , 105, 0 , 337, 131), // #1176
1243 INST(Vmovq , VexMovdMovq , V(660F00,6E,_,0,I,1,3,T1S), V(660F00,7E,_,0,I,1,3,T1S), 125, 101, 339, 159), // #1177
1244 INST(Vmovsd , VexMovssMovsd , V(F20F00,10,_,I,I,1,3,T1S), V(F20F00,11,_,I,I,1,3,T1S), 106, 102, 340, 159), // #1178
1245 INST(Vmovsh , VexMovssMovsd , E(F3MAP5,10,_,I,_,0,1,T1S), E(F3MAP5,11,_,I,_,0,1,T1S), 107, 103, 341, 134), // #1179
1246 INST(Vmovshdup , VexRm_Lx , V(F30F00,16,_,x,I,0,4,FVM), 0 , 161, 0 , 342, 131), // #1180
1247 INST(Vmovsldup , VexRm_Lx , V(F30F00,12,_,x,I,0,4,FVM), 0 , 161, 0 , 342, 131), // #1181
1248 INST(Vmovss , VexMovssMovsd , V(F30F00,10,_,I,I,0,2,T1S), V(F30F00,11,_,I,I,0,2,T1S), 108, 104, 343, 159), // #1182
1249 INST(Vmovupd , VexRmMr_Lx , V(660F00,10,_,x,I,1,4,FVM), V(660F00,11,_,x,I,1,4,FVM), 103, 105, 329, 155), // #1183
1250 INST(Vmovups , VexRmMr_Lx , V(000F00,10,_,x,I,0,4,FVM), V(000F00,11,_,x,I,0,4,FVM), 105, 106, 329, 155), // #1184
1251 INST(Vmovw , VexMovdMovq , E(66MAP5,6E,_,0,_,I,1,T1S), E(66MAP5,7E,_,0,_,I,1,T1S), 202, 107, 344, 134), // #1185
1252 INST(Vmpsadbw , VexRvmi_Lx , V(660F3A,42,_,x,I,_,_,_ ), 0 , 73 , 0 , 214, 160), // #1186
1253 INST(Vmptrld , X86M_Only , O(000F00,C7,6,_,_,_,_,_ ), 0 , 80 , 0 , 32 , 58 ), // #1187
1254 INST(Vmptrst , X86M_Only , O(000F00,C7,7,_,_,_,_,_ ), 0 , 22 , 0 , 32 , 58 ), // #1188
1255 INST(Vmread , X86Mr_NoSize , O(000F00,78,_,_,_,_,_,_ ), 0 , 4 , 0 , 345, 58 ), // #1189
1256 INST(Vmresume , X86Op , O(000F01,C3,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 58 ), // #1190
1257 INST(Vmrun , X86Op_xAX , O(000F01,D8,_,_,_,_,_,_ ), 0 , 21 , 0 , 328, 22 ), // #1191
1258 INST(Vmsave , X86Op_xAX , O(000F01,DB,_,_,_,_,_,_ ), 0 , 21 , 0 , 328, 22 ), // #1192
1259 INST(Vmulpd , VexRvm_Lx , V(660F00,59,_,x,I,1,4,FV ), 0 , 103, 0 , 196, 131), // #1193
1260 INST(Vmulph , VexRvm_Lx , E(00MAP5,59,_,_,_,0,4,FV ), 0 , 104, 0 , 197, 132), // #1194
1261 INST(Vmulps , VexRvm_Lx , V(000F00,59,_,x,I,0,4,FV ), 0 , 105, 0 , 198, 131), // #1195
1262 INST(Vmulsd , VexRvm , V(F20F00,59,_,I,I,1,3,T1S), 0 , 106, 0 , 199, 133), // #1196
1263 INST(Vmulsh , VexRvm , E(F3MAP5,59,_,_,_,0,1,T1S), 0 , 107, 0 , 200, 134), // #1197
1264 INST(Vmulss , VexRvm , V(F30F00,59,_,I,I,0,2,T1S), 0 , 108, 0 , 201, 133), // #1198
1265 INST(Vmwrite , X86Rm_NoSize , O(000F00,79,_,_,_,_,_,_ ), 0 , 4 , 0 , 346, 58 ), // #1199
1266 INST(Vmxon , X86M_Only , O(F30F00,C7,6,_,_,_,_,_ ), 0 , 24 , 0 , 32 , 58 ), // #1200
1267 INST(Vorpd , VexRvm_Lx , V(660F00,56,_,x,I,1,4,FV ), 0 , 103, 0 , 210, 139), // #1201
1268 INST(Vorps , VexRvm_Lx , V(000F00,56,_,x,I,0,4,FV ), 0 , 105, 0 , 211, 139), // #1202
1269 INST(Vp2intersectd , VexRvm_Lx_2xK , E(F20F38,68,_,_,_,0,4,FV ), 0 , 131, 0 , 347, 161), // #1203
1270 INST(Vp2intersectq , VexRvm_Lx_2xK , E(F20F38,68,_,_,_,1,4,FV ), 0 , 203, 0 , 348, 161), // #1204
1271 INST(Vp4dpwssd , VexRm_T1_4X , E(F20F38,52,_,2,_,0,4,T4X), 0 , 101, 0 , 194, 162), // #1205
1272 INST(Vp4dpwssds , VexRm_T1_4X , E(F20F38,53,_,2,_,0,4,T4X), 0 , 101, 0 , 194, 162), // #1206
1273 INST(Vpabsb , VexRm_Lx , V(660F38,1C,_,x,I,_,4,FVM), 0 , 110, 0 , 342, 163), // #1207
1274 INST(Vpabsd , VexRm_Lx , V(660F38,1E,_,x,I,0,4,FV ), 0 , 110, 0 , 349, 142), // #1208
1275 INST(Vpabsq , VexRm_Lx , E(660F38,1F,_,x,_,1,4,FV ), 0 , 113, 0 , 350, 138), // #1209
1276 INST(Vpabsw , VexRm_Lx , V(660F38,1D,_,x,I,_,4,FVM), 0 , 110, 0 , 342, 163), // #1210
1277 INST(Vpackssdw , VexRvm_Lx , V(660F00,6B,_,x,I,0,4,FV ), 0 , 144, 0 , 209, 163), // #1211
1278 INST(Vpacksswb , VexRvm_Lx , V(660F00,63,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1212
1279 INST(Vpackusdw , VexRvm_Lx , V(660F38,2B,_,x,I,0,4,FV ), 0 , 110, 0 , 209, 163), // #1213
1280 INST(Vpackuswb , VexRvm_Lx , V(660F00,67,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1214
1281 INST(Vpaddb , VexRvm_Lx , V(660F00,FC,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1215
1282 INST(Vpaddd , VexRvm_Lx , V(660F00,FE,_,x,I,0,4,FV ), 0 , 144, 0 , 209, 142), // #1216
1283 INST(Vpaddq , VexRvm_Lx , V(660F00,D4,_,x,I,1,4,FV ), 0 , 103, 0 , 208, 142), // #1217
1284 INST(Vpaddsb , VexRvm_Lx , V(660F00,EC,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1218
1285 INST(Vpaddsw , VexRvm_Lx , V(660F00,ED,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1219
1286 INST(Vpaddusb , VexRvm_Lx , V(660F00,DC,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1220
1287 INST(Vpaddusw , VexRvm_Lx , V(660F00,DD,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1221
1288 INST(Vpaddw , VexRvm_Lx , V(660F00,FD,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1222
1289 INST(Vpalignr , VexRvmi_Lx , V(660F3A,0F,_,x,I,I,4,FVM), 0 , 204, 0 , 314, 163), // #1223
1290 INST(Vpand , VexRvm_Lx , V(660F00,DB,_,x,I,_,_,_ ), 0 , 69 , 0 , 351, 160), // #1224
1291 INST(Vpandd , VexRvm_Lx , E(660F00,DB,_,x,_,0,4,FV ), 0 , 198, 0 , 352, 138), // #1225
1292 INST(Vpandn , VexRvm_Lx , V(660F00,DF,_,x,I,_,_,_ ), 0 , 69 , 0 , 353, 160), // #1226
1293 INST(Vpandnd , VexRvm_Lx , E(660F00,DF,_,x,_,0,4,FV ), 0 , 198, 0 , 354, 138), // #1227
1294 INST(Vpandnq , VexRvm_Lx , E(660F00,DF,_,x,_,1,4,FV ), 0 , 135, 0 , 355, 138), // #1228
1295 INST(Vpandq , VexRvm_Lx , E(660F00,DB,_,x,_,1,4,FV ), 0 , 135, 0 , 356, 138), // #1229
1296 INST(Vpavgb , VexRvm_Lx , V(660F00,E0,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1230
1297 INST(Vpavgw , VexRvm_Lx , V(660F00,E3,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1231
1298 INST(Vpblendd , VexRvmi_Lx , V(660F3A,02,_,x,0,_,_,_ ), 0 , 73 , 0 , 214, 141), // #1232
1299 INST(Vpblendmb , VexRvm_Lx , E(660F38,66,_,x,_,0,4,FVM), 0 , 114, 0 , 357, 146), // #1233
1300 INST(Vpblendmd , VexRvm_Lx , E(660F38,64,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 138), // #1234
1301 INST(Vpblendmq , VexRvm_Lx , E(660F38,64,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1235
1302 INST(Vpblendmw , VexRvm_Lx , E(660F38,66,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 146), // #1236
1303 INST(Vpblendvb , VexRvmr_Lx , V(660F3A,4C,_,x,0,_,_,_ ), 0 , 73 , 0 , 215, 160), // #1237
1304 INST(Vpblendw , VexRvmi_Lx , V(660F3A,0E,_,x,I,_,_,_ ), 0 , 73 , 0 , 214, 160), // #1238
1305 INST(Vpbroadcastb , VexRm_Lx_Bcst , V(660F38,78,_,x,0,0,0,T1S), E(660F38,7A,_,x,0,0,0,T1S), 96 , 108, 358, 164), // #1239
1306 INST(Vpbroadcastd , VexRm_Lx_Bcst , V(660F38,58,_,x,0,0,2,T1S), E(660F38,7C,_,x,0,0,0,T1S), 122, 109, 359, 152), // #1240
1307 INST(Vpbroadcastmb2q , VexRm_Lx , E(F30F38,2A,_,x,_,1,_,_ ), 0 , 205, 0 , 360, 165), // #1241
1308 INST(Vpbroadcastmw2d , VexRm_Lx , E(F30F38,3A,_,x,_,0,_,_ ), 0 , 206, 0 , 360, 165), // #1242
1309 INST(Vpbroadcastq , VexRm_Lx_Bcst , V(660F38,59,_,x,0,1,3,T1S), E(660F38,7C,_,x,0,1,0,T1S), 121, 110, 361, 152), // #1243
1310 INST(Vpbroadcastw , VexRm_Lx_Bcst , V(660F38,79,_,x,0,0,1,T1S), E(660F38,7B,_,x,0,0,0,T1S), 207, 111, 362, 164), // #1244
1311 INST(Vpclmulqdq , VexRvmi_Lx , V(660F3A,44,_,x,I,_,4,FVM), 0 , 204, 0 , 363, 166), // #1245
1312 INST(Vpcmov , VexRvrmRvmr_Lx , V(XOP_M8,A2,_,x,x,_,_,_ ), 0 , 208, 0 , 289, 151), // #1246
1313 INST(Vpcmpb , VexRvmi_Lx , E(660F3A,3F,_,x,_,0,4,FVM), 0 , 111, 0 , 364, 146), // #1247
1314 INST(Vpcmpd , VexRvmi_Lx , E(660F3A,1F,_,x,_,0,4,FV ), 0 , 111, 0 , 365, 138), // #1248
1315 INST(Vpcmpeqb , VexRvm_Lx_KEvex , V(660F00,74,_,x,I,I,4,FV ), 0 , 144, 0 , 366, 163), // #1249
1316 INST(Vpcmpeqd , VexRvm_Lx_KEvex , V(660F00,76,_,x,I,0,4,FVM), 0 , 144, 0 , 367, 142), // #1250
1317 INST(Vpcmpeqq , VexRvm_Lx_KEvex , V(660F38,29,_,x,I,1,4,FVM), 0 , 209, 0 , 368, 142), // #1251
1318 INST(Vpcmpeqw , VexRvm_Lx_KEvex , V(660F00,75,_,x,I,I,4,FV ), 0 , 144, 0 , 366, 163), // #1252
1319 INST(Vpcmpestri , VexRmi , V(660F3A,61,_,0,I,_,_,_ ), 0 , 73 , 0 , 369, 167), // #1253
1320 INST(Vpcmpestrm , VexRmi , V(660F3A,60,_,0,I,_,_,_ ), 0 , 73 , 0 , 370, 167), // #1254
1321 INST(Vpcmpgtb , VexRvm_Lx_KEvex , V(660F00,64,_,x,I,I,4,FV ), 0 , 144, 0 , 366, 163), // #1255
1322 INST(Vpcmpgtd , VexRvm_Lx_KEvex , V(660F00,66,_,x,I,0,4,FVM), 0 , 144, 0 , 367, 142), // #1256
1323 INST(Vpcmpgtq , VexRvm_Lx_KEvex , V(660F38,37,_,x,I,1,4,FVM), 0 , 209, 0 , 368, 142), // #1257
1324 INST(Vpcmpgtw , VexRvm_Lx_KEvex , V(660F00,65,_,x,I,I,4,FV ), 0 , 144, 0 , 366, 163), // #1258
1325 INST(Vpcmpistri , VexRmi , V(660F3A,63,_,0,I,_,_,_ ), 0 , 73 , 0 , 371, 167), // #1259
1326 INST(Vpcmpistrm , VexRmi , V(660F3A,62,_,0,I,_,_,_ ), 0 , 73 , 0 , 372, 167), // #1260
1327 INST(Vpcmpq , VexRvmi_Lx , E(660F3A,1F,_,x,_,1,4,FV ), 0 , 112, 0 , 373, 138), // #1261
1328 INST(Vpcmpub , VexRvmi_Lx , E(660F3A,3E,_,x,_,0,4,FVM), 0 , 111, 0 , 364, 146), // #1262
1329 INST(Vpcmpud , VexRvmi_Lx , E(660F3A,1E,_,x,_,0,4,FV ), 0 , 111, 0 , 365, 138), // #1263
1330 INST(Vpcmpuq , VexRvmi_Lx , E(660F3A,1E,_,x,_,1,4,FV ), 0 , 112, 0 , 373, 138), // #1264
1331 INST(Vpcmpuw , VexRvmi_Lx , E(660F3A,3E,_,x,_,1,4,FVM), 0 , 112, 0 , 373, 146), // #1265
1332 INST(Vpcmpw , VexRvmi_Lx , E(660F3A,3F,_,x,_,1,4,FVM), 0 , 112, 0 , 373, 146), // #1266
1333 INST(Vpcomb , VexRvmi , V(XOP_M8,CC,_,0,0,_,_,_ ), 0 , 208, 0 , 276, 151), // #1267
1334 INST(Vpcomd , VexRvmi , V(XOP_M8,CE,_,0,0,_,_,_ ), 0 , 208, 0 , 276, 151), // #1268
1335 INST(Vpcompressb , VexMr_Lx , E(660F38,63,_,x,_,0,0,T1S), 0 , 210, 0 , 232, 168), // #1269
1336 INST(Vpcompressd , VexMr_Lx , E(660F38,8B,_,x,_,0,2,T1S), 0 , 129, 0 , 232, 138), // #1270
1337 INST(Vpcompressq , VexMr_Lx , E(660F38,8B,_,x,_,1,3,T1S), 0 , 128, 0 , 232, 138), // #1271
1338 INST(Vpcompressw , VexMr_Lx , E(660F38,63,_,x,_,1,1,T1S), 0 , 211, 0 , 232, 168), // #1272
1339 INST(Vpcomq , VexRvmi , V(XOP_M8,CF,_,0,0,_,_,_ ), 0 , 208, 0 , 276, 151), // #1273
1340 INST(Vpcomub , VexRvmi , V(XOP_M8,EC,_,0,0,_,_,_ ), 0 , 208, 0 , 276, 151), // #1274
1341 INST(Vpcomud , VexRvmi , V(XOP_M8,EE,_,0,0,_,_,_ ), 0 , 208, 0 , 276, 151), // #1275
1342 INST(Vpcomuq , VexRvmi , V(XOP_M8,EF,_,0,0,_,_,_ ), 0 , 208, 0 , 276, 151), // #1276
1343 INST(Vpcomuw , VexRvmi , V(XOP_M8,ED,_,0,0,_,_,_ ), 0 , 208, 0 , 276, 151), // #1277
1344 INST(Vpcomw , VexRvmi , V(XOP_M8,CD,_,0,0,_,_,_ ), 0 , 208, 0 , 276, 151), // #1278
1345 INST(Vpconflictd , VexRm_Lx , E(660F38,C4,_,x,_,0,4,FV ), 0 , 114, 0 , 374, 165), // #1279
1346 INST(Vpconflictq , VexRm_Lx , E(660F38,C4,_,x,_,1,4,FV ), 0 , 113, 0 , 374, 165), // #1280
1347 INST(Vpdpbusd , VexRvm_Lx , V(660F38,50,_,x,_,0,4,FV ), 0 , 110, 0 , 375, 169), // #1281
1348 INST(Vpdpbusds , VexRvm_Lx , V(660F38,51,_,x,_,0,4,FV ), 0 , 110, 0 , 375, 169), // #1282
1349 INST(Vpdpwssd , VexRvm_Lx , V(660F38,52,_,x,_,0,4,FV ), 0 , 110, 0 , 375, 169), // #1283
1350 INST(Vpdpwssds , VexRvm_Lx , V(660F38,53,_,x,_,0,4,FV ), 0 , 110, 0 , 375, 169), // #1284
1351 INST(Vperm2f128 , VexRvmi , V(660F3A,06,_,1,0,_,_,_ ), 0 , 172, 0 , 376, 135), // #1285
1352 INST(Vperm2i128 , VexRvmi , V(660F3A,46,_,1,0,_,_,_ ), 0 , 172, 0 , 376, 141), // #1286
1353 INST(Vpermb , VexRvm_Lx , E(660F38,8D,_,x,_,0,4,FVM), 0 , 114, 0 , 357, 170), // #1287
1354 INST(Vpermd , VexRvm_Lx , V(660F38,36,_,x,0,0,4,FV ), 0 , 110, 0 , 377, 152), // #1288
1355 INST(Vpermi2b , VexRvm_Lx , E(660F38,75,_,x,_,0,4,FVM), 0 , 114, 0 , 357, 170), // #1289
1356 INST(Vpermi2d , VexRvm_Lx , E(660F38,76,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 138), // #1290
1357 INST(Vpermi2pd , VexRvm_Lx , E(660F38,77,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1291
1358 INST(Vpermi2ps , VexRvm_Lx , E(660F38,77,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 138), // #1292
1359 INST(Vpermi2q , VexRvm_Lx , E(660F38,76,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1293
1360 INST(Vpermi2w , VexRvm_Lx , E(660F38,75,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 146), // #1294
1361 INST(Vpermil2pd , VexRvrmiRvmri_Lx , V(660F3A,49,_,x,x,_,_,_ ), 0 , 73 , 0 , 378, 151), // #1295
1362 INST(Vpermil2ps , VexRvrmiRvmri_Lx , V(660F3A,48,_,x,x,_,_,_ ), 0 , 73 , 0 , 378, 151), // #1296
1363 INST(Vpermilpd , VexRvmRmi_Lx , V(660F38,0D,_,x,0,1,4,FV ), V(660F3A,05,_,x,0,1,4,FV ), 209, 112, 379, 131), // #1297
1364 INST(Vpermilps , VexRvmRmi_Lx , V(660F38,0C,_,x,0,0,4,FV ), V(660F3A,04,_,x,0,0,4,FV ), 110, 113, 380, 131), // #1298
1365 INST(Vpermpd , VexRvmRmi_Lx , E(660F38,16,_,x,1,1,4,FV ), V(660F3A,01,_,x,1,1,4,FV ), 212, 114, 381, 152), // #1299
1366 INST(Vpermps , VexRvm_Lx , V(660F38,16,_,x,0,0,4,FV ), 0 , 110, 0 , 377, 152), // #1300
1367 INST(Vpermq , VexRvmRmi_Lx , E(660F38,36,_,x,_,1,4,FV ), V(660F3A,00,_,x,1,1,4,FV ), 113, 115, 381, 152), // #1301
1368 INST(Vpermt2b , VexRvm_Lx , E(660F38,7D,_,x,_,0,4,FVM), 0 , 114, 0 , 357, 170), // #1302
1369 INST(Vpermt2d , VexRvm_Lx , E(660F38,7E,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 138), // #1303
1370 INST(Vpermt2pd , VexRvm_Lx , E(660F38,7F,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1304
1371 INST(Vpermt2ps , VexRvm_Lx , E(660F38,7F,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 138), // #1305
1372 INST(Vpermt2q , VexRvm_Lx , E(660F38,7E,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1306
1373 INST(Vpermt2w , VexRvm_Lx , E(660F38,7D,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 146), // #1307
1374 INST(Vpermw , VexRvm_Lx , E(660F38,8D,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 146), // #1308
1375 INST(Vpexpandb , VexRm_Lx , E(660F38,62,_,x,_,0,0,T1S), 0 , 210, 0 , 279, 168), // #1309
1376 INST(Vpexpandd , VexRm_Lx , E(660F38,89,_,x,_,0,2,T1S), 0 , 129, 0 , 279, 138), // #1310
1377 INST(Vpexpandq , VexRm_Lx , E(660F38,89,_,x,_,1,3,T1S), 0 , 128, 0 , 279, 138), // #1311
1378 INST(Vpexpandw , VexRm_Lx , E(660F38,62,_,x,_,1,1,T1S), 0 , 211, 0 , 279, 168), // #1312
1379 INST(Vpextrb , VexMri , V(660F3A,14,_,0,0,I,0,T1S), 0 , 73 , 0 , 382, 171), // #1313
1380 INST(Vpextrd , VexMri , V(660F3A,16,_,0,0,0,2,T1S), 0 , 177, 0 , 283, 172), // #1314
1381 INST(Vpextrq , VexMri , V(660F3A,16,_,0,1,1,3,T1S), 0 , 213, 0 , 383, 172), // #1315
1382 INST(Vpextrw , VexMri_Vpextrw , V(660F3A,15,_,0,0,I,1,T1S), 0 , 214, 0 , 384, 171), // #1316
1383 INST(Vpgatherdd , VexRmvRm_VM , V(660F38,90,_,x,0,_,_,_ ), E(660F38,90,_,x,_,0,2,T1S), 96 , 116, 302, 152), // #1317
1384 INST(Vpgatherdq , VexRmvRm_VM , V(660F38,90,_,x,1,_,_,_ ), E(660F38,90,_,x,_,1,3,T1S), 189, 117, 301, 152), // #1318
1385 INST(Vpgatherqd , VexRmvRm_VM , V(660F38,91,_,x,0,_,_,_ ), E(660F38,91,_,x,_,0,2,T1S), 96 , 118, 307, 152), // #1319
1386 INST(Vpgatherqq , VexRmvRm_VM , V(660F38,91,_,x,1,_,_,_ ), E(660F38,91,_,x,_,1,3,T1S), 189, 119, 306, 152), // #1320
1387 INST(Vphaddbd , VexRm , V(XOP_M9,C2,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1321
1388 INST(Vphaddbq , VexRm , V(XOP_M9,C3,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1322
1389 INST(Vphaddbw , VexRm , V(XOP_M9,C1,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1323
1390 INST(Vphaddd , VexRvm_Lx , V(660F38,02,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1324
1391 INST(Vphadddq , VexRm , V(XOP_M9,CB,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1325
1392 INST(Vphaddsw , VexRvm_Lx , V(660F38,03,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1326
1393 INST(Vphaddubd , VexRm , V(XOP_M9,D2,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1327
1394 INST(Vphaddubq , VexRm , V(XOP_M9,D3,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1328
1395 INST(Vphaddubw , VexRm , V(XOP_M9,D1,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1329
1396 INST(Vphaddudq , VexRm , V(XOP_M9,DB,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1330
1397 INST(Vphadduwd , VexRm , V(XOP_M9,D6,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1331
1398 INST(Vphadduwq , VexRm , V(XOP_M9,D7,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1332
1399 INST(Vphaddw , VexRvm_Lx , V(660F38,01,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1333
1400 INST(Vphaddwd , VexRm , V(XOP_M9,C6,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1334
1401 INST(Vphaddwq , VexRm , V(XOP_M9,C7,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1335
1402 INST(Vphminposuw , VexRm , V(660F38,41,_,0,I,_,_,_ ), 0 , 96 , 0 , 204, 135), // #1336
1403 INST(Vphsubbw , VexRm , V(XOP_M9,E1,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1337
1404 INST(Vphsubd , VexRvm_Lx , V(660F38,06,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1338
1405 INST(Vphsubdq , VexRm , V(XOP_M9,E3,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1339
1406 INST(Vphsubsw , VexRvm_Lx , V(660F38,07,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1340
1407 INST(Vphsubw , VexRvm_Lx , V(660F38,05,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1341
1408 INST(Vphsubwd , VexRm , V(XOP_M9,E2,_,0,0,_,_,_ ), 0 , 79 , 0 , 204, 151), // #1342
1409 INST(Vpinsrb , VexRvmi , V(660F3A,20,_,0,0,I,0,T1S), 0 , 73 , 0 , 385, 171), // #1343
1410 INST(Vpinsrd , VexRvmi , V(660F3A,22,_,0,0,0,2,T1S), 0 , 177, 0 , 386, 172), // #1344
1411 INST(Vpinsrq , VexRvmi , V(660F3A,22,_,0,1,1,3,T1S), 0 , 213, 0 , 387, 172), // #1345
1412 INST(Vpinsrw , VexRvmi , V(660F00,C4,_,0,0,I,1,T1S), 0 , 215, 0 , 388, 171), // #1346
1413 INST(Vplzcntd , VexRm_Lx , E(660F38,44,_,x,_,0,4,FV ), 0 , 114, 0 , 374, 165), // #1347
1414 INST(Vplzcntq , VexRm_Lx , E(660F38,44,_,x,_,1,4,FV ), 0 , 113, 0 , 350, 165), // #1348
1415 INST(Vpmacsdd , VexRvmr , V(XOP_M8,9E,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1349
1416 INST(Vpmacsdqh , VexRvmr , V(XOP_M8,9F,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1350
1417 INST(Vpmacsdql , VexRvmr , V(XOP_M8,97,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1351
1418 INST(Vpmacssdd , VexRvmr , V(XOP_M8,8E,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1352
1419 INST(Vpmacssdqh , VexRvmr , V(XOP_M8,8F,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1353
1420 INST(Vpmacssdql , VexRvmr , V(XOP_M8,87,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1354
1421 INST(Vpmacsswd , VexRvmr , V(XOP_M8,86,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1355
1422 INST(Vpmacssww , VexRvmr , V(XOP_M8,85,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1356
1423 INST(Vpmacswd , VexRvmr , V(XOP_M8,96,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1357
1424 INST(Vpmacsww , VexRvmr , V(XOP_M8,95,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1358
1425 INST(Vpmadcsswd , VexRvmr , V(XOP_M8,A6,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1359
1426 INST(Vpmadcswd , VexRvmr , V(XOP_M8,B6,_,0,0,_,_,_ ), 0 , 208, 0 , 389, 151), // #1360
1427 INST(Vpmadd52huq , VexRvm_Lx , E(660F38,B5,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 173), // #1361
1428 INST(Vpmadd52luq , VexRvm_Lx , E(660F38,B4,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 173), // #1362
1429 INST(Vpmaddubsw , VexRvm_Lx , V(660F38,04,_,x,I,I,4,FVM), 0 , 110, 0 , 315, 163), // #1363
1430 INST(Vpmaddwd , VexRvm_Lx , V(660F00,F5,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1364
1431 INST(Vpmaskmovd , VexRvmMvr_Lx , V(660F38,8C,_,x,0,_,_,_ ), V(660F38,8E,_,x,0,_,_,_ ), 96 , 120, 323, 141), // #1365
1432 INST(Vpmaskmovq , VexRvmMvr_Lx , V(660F38,8C,_,x,1,_,_,_ ), V(660F38,8E,_,x,1,_,_,_ ), 189, 121, 323, 141), // #1366
1433 INST(Vpmaxsb , VexRvm_Lx , V(660F38,3C,_,x,I,I,4,FVM), 0 , 110, 0 , 390, 163), // #1367
1434 INST(Vpmaxsd , VexRvm_Lx , V(660F38,3D,_,x,I,0,4,FV ), 0 , 110, 0 , 211, 142), // #1368
1435 INST(Vpmaxsq , VexRvm_Lx , E(660F38,3D,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1369
1436 INST(Vpmaxsw , VexRvm_Lx , V(660F00,EE,_,x,I,I,4,FVM), 0 , 144, 0 , 390, 163), // #1370
1437 INST(Vpmaxub , VexRvm_Lx , V(660F00,DE,_,x,I,I,4,FVM), 0 , 144, 0 , 390, 163), // #1371
1438 INST(Vpmaxud , VexRvm_Lx , V(660F38,3F,_,x,I,0,4,FV ), 0 , 110, 0 , 211, 142), // #1372
1439 INST(Vpmaxuq , VexRvm_Lx , E(660F38,3F,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1373
1440 INST(Vpmaxuw , VexRvm_Lx , V(660F38,3E,_,x,I,I,4,FVM), 0 , 110, 0 , 390, 163), // #1374
1441 INST(Vpminsb , VexRvm_Lx , V(660F38,38,_,x,I,I,4,FVM), 0 , 110, 0 , 390, 163), // #1375
1442 INST(Vpminsd , VexRvm_Lx , V(660F38,39,_,x,I,0,4,FV ), 0 , 110, 0 , 211, 142), // #1376
1443 INST(Vpminsq , VexRvm_Lx , E(660F38,39,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1377
1444 INST(Vpminsw , VexRvm_Lx , V(660F00,EA,_,x,I,I,4,FVM), 0 , 144, 0 , 390, 163), // #1378
1445 INST(Vpminub , VexRvm_Lx , V(660F00,DA,_,x,I,_,4,FVM), 0 , 144, 0 , 390, 163), // #1379
1446 INST(Vpminud , VexRvm_Lx , V(660F38,3B,_,x,I,0,4,FV ), 0 , 110, 0 , 211, 142), // #1380
1447 INST(Vpminuq , VexRvm_Lx , E(660F38,3B,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1381
1448 INST(Vpminuw , VexRvm_Lx , V(660F38,3A,_,x,I,_,4,FVM), 0 , 110, 0 , 390, 163), // #1382
1449 INST(Vpmovb2m , VexRm_Lx , E(F30F38,29,_,x,_,0,_,_ ), 0 , 206, 0 , 391, 146), // #1383
1450 INST(Vpmovd2m , VexRm_Lx , E(F30F38,39,_,x,_,0,_,_ ), 0 , 206, 0 , 391, 140), // #1384
1451 INST(Vpmovdb , VexMr_Lx , E(F30F38,31,_,x,_,0,2,QVM), 0 , 216, 0 , 392, 138), // #1385
1452 INST(Vpmovdw , VexMr_Lx , E(F30F38,33,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 138), // #1386
1453 INST(Vpmovm2b , VexRm_Lx , E(F30F38,28,_,x,_,0,_,_ ), 0 , 206, 0 , 360, 146), // #1387
1454 INST(Vpmovm2d , VexRm_Lx , E(F30F38,38,_,x,_,0,_,_ ), 0 , 206, 0 , 360, 140), // #1388
1455 INST(Vpmovm2q , VexRm_Lx , E(F30F38,38,_,x,_,1,_,_ ), 0 , 205, 0 , 360, 140), // #1389
1456 INST(Vpmovm2w , VexRm_Lx , E(F30F38,28,_,x,_,1,_,_ ), 0 , 205, 0 , 360, 146), // #1390
1457 INST(Vpmovmskb , VexRm_Lx , V(660F00,D7,_,x,I,_,_,_ ), 0 , 69 , 0 , 336, 160), // #1391
1458 INST(Vpmovq2m , VexRm_Lx , E(F30F38,39,_,x,_,1,_,_ ), 0 , 205, 0 , 391, 140), // #1392
1459 INST(Vpmovqb , VexMr_Lx , E(F30F38,32,_,x,_,0,1,OVM), 0 , 218, 0 , 394, 138), // #1393
1460 INST(Vpmovqd , VexMr_Lx , E(F30F38,35,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 138), // #1394
1461 INST(Vpmovqw , VexMr_Lx , E(F30F38,34,_,x,_,0,2,QVM), 0 , 216, 0 , 392, 138), // #1395
1462 INST(Vpmovsdb , VexMr_Lx , E(F30F38,21,_,x,_,0,2,QVM), 0 , 216, 0 , 392, 138), // #1396
1463 INST(Vpmovsdw , VexMr_Lx , E(F30F38,23,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 138), // #1397
1464 INST(Vpmovsqb , VexMr_Lx , E(F30F38,22,_,x,_,0,1,OVM), 0 , 218, 0 , 394, 138), // #1398
1465 INST(Vpmovsqd , VexMr_Lx , E(F30F38,25,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 138), // #1399
1466 INST(Vpmovsqw , VexMr_Lx , E(F30F38,24,_,x,_,0,2,QVM), 0 , 216, 0 , 392, 138), // #1400
1467 INST(Vpmovswb , VexMr_Lx , E(F30F38,20,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 146), // #1401
1468 INST(Vpmovsxbd , VexRm_Lx , V(660F38,21,_,x,I,I,2,QVM), 0 , 219, 0 , 395, 142), // #1402
1469 INST(Vpmovsxbq , VexRm_Lx , V(660F38,22,_,x,I,I,1,OVM), 0 , 220, 0 , 396, 142), // #1403
1470 INST(Vpmovsxbw , VexRm_Lx , V(660F38,20,_,x,I,I,3,HVM), 0 , 139, 0 , 397, 163), // #1404
1471 INST(Vpmovsxdq , VexRm_Lx , V(660F38,25,_,x,I,0,3,HVM), 0 , 139, 0 , 397, 142), // #1405
1472 INST(Vpmovsxwd , VexRm_Lx , V(660F38,23,_,x,I,I,3,HVM), 0 , 139, 0 , 397, 142), // #1406
1473 INST(Vpmovsxwq , VexRm_Lx , V(660F38,24,_,x,I,I,2,QVM), 0 , 219, 0 , 395, 142), // #1407
1474 INST(Vpmovusdb , VexMr_Lx , E(F30F38,11,_,x,_,0,2,QVM), 0 , 216, 0 , 392, 138), // #1408
1475 INST(Vpmovusdw , VexMr_Lx , E(F30F38,13,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 138), // #1409
1476 INST(Vpmovusqb , VexMr_Lx , E(F30F38,12,_,x,_,0,1,OVM), 0 , 218, 0 , 394, 138), // #1410
1477 INST(Vpmovusqd , VexMr_Lx , E(F30F38,15,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 138), // #1411
1478 INST(Vpmovusqw , VexMr_Lx , E(F30F38,14,_,x,_,0,2,QVM), 0 , 216, 0 , 392, 138), // #1412
1479 INST(Vpmovuswb , VexMr_Lx , E(F30F38,10,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 146), // #1413
1480 INST(Vpmovw2m , VexRm_Lx , E(F30F38,29,_,x,_,1,_,_ ), 0 , 205, 0 , 391, 146), // #1414
1481 INST(Vpmovwb , VexMr_Lx , E(F30F38,30,_,x,_,0,3,HVM), 0 , 217, 0 , 393, 146), // #1415
1482 INST(Vpmovzxbd , VexRm_Lx , V(660F38,31,_,x,I,I,2,QVM), 0 , 219, 0 , 395, 142), // #1416
1483 INST(Vpmovzxbq , VexRm_Lx , V(660F38,32,_,x,I,I,1,OVM), 0 , 220, 0 , 396, 142), // #1417
1484 INST(Vpmovzxbw , VexRm_Lx , V(660F38,30,_,x,I,I,3,HVM), 0 , 139, 0 , 397, 163), // #1418
1485 INST(Vpmovzxdq , VexRm_Lx , V(660F38,35,_,x,I,0,3,HVM), 0 , 139, 0 , 397, 142), // #1419
1486 INST(Vpmovzxwd , VexRm_Lx , V(660F38,33,_,x,I,I,3,HVM), 0 , 139, 0 , 397, 142), // #1420
1487 INST(Vpmovzxwq , VexRm_Lx , V(660F38,34,_,x,I,I,2,QVM), 0 , 219, 0 , 395, 142), // #1421
1488 INST(Vpmuldq , VexRvm_Lx , V(660F38,28,_,x,I,1,4,FV ), 0 , 209, 0 , 208, 142), // #1422
1489 INST(Vpmulhrsw , VexRvm_Lx , V(660F38,0B,_,x,I,I,4,FVM), 0 , 110, 0 , 315, 163), // #1423
1490 INST(Vpmulhuw , VexRvm_Lx , V(660F00,E4,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1424
1491 INST(Vpmulhw , VexRvm_Lx , V(660F00,E5,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1425
1492 INST(Vpmulld , VexRvm_Lx , V(660F38,40,_,x,I,0,4,FV ), 0 , 110, 0 , 209, 142), // #1426
1493 INST(Vpmullq , VexRvm_Lx , E(660F38,40,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 140), // #1427
1494 INST(Vpmullw , VexRvm_Lx , V(660F00,D5,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1428
1495 INST(Vpmultishiftqb , VexRvm_Lx , E(660F38,83,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 170), // #1429
1496 INST(Vpmuludq , VexRvm_Lx , V(660F00,F4,_,x,I,1,4,FV ), 0 , 103, 0 , 208, 142), // #1430
1497 INST(Vpopcntb , VexRm_Lx , E(660F38,54,_,x,_,0,4,FV ), 0 , 114, 0 , 279, 174), // #1431
1498 INST(Vpopcntd , VexRm_Lx , E(660F38,55,_,x,_,0,4,FVM), 0 , 114, 0 , 374, 175), // #1432
1499 INST(Vpopcntq , VexRm_Lx , E(660F38,55,_,x,_,1,4,FVM), 0 , 113, 0 , 350, 175), // #1433
1500 INST(Vpopcntw , VexRm_Lx , E(660F38,54,_,x,_,1,4,FV ), 0 , 113, 0 , 279, 174), // #1434
1501 INST(Vpor , VexRvm_Lx , V(660F00,EB,_,x,I,_,_,_ ), 0 , 69 , 0 , 351, 160), // #1435
1502 INST(Vpord , VexRvm_Lx , E(660F00,EB,_,x,_,0,4,FV ), 0 , 198, 0 , 352, 138), // #1436
1503 INST(Vporq , VexRvm_Lx , E(660F00,EB,_,x,_,1,4,FV ), 0 , 135, 0 , 356, 138), // #1437
1504 INST(Vpperm , VexRvrmRvmr , V(XOP_M8,A3,_,0,x,_,_,_ ), 0 , 208, 0 , 398, 151), // #1438
1505 INST(Vprold , VexVmi_Lx , E(660F00,72,1,x,_,0,4,FV ), 0 , 221, 0 , 399, 138), // #1439
1506 INST(Vprolq , VexVmi_Lx , E(660F00,72,1,x,_,1,4,FV ), 0 , 222, 0 , 400, 138), // #1440
1507 INST(Vprolvd , VexRvm_Lx , E(660F38,15,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 138), // #1441
1508 INST(Vprolvq , VexRvm_Lx , E(660F38,15,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1442
1509 INST(Vprord , VexVmi_Lx , E(660F00,72,0,x,_,0,4,FV ), 0 , 198, 0 , 399, 138), // #1443
1510 INST(Vprorq , VexVmi_Lx , E(660F00,72,0,x,_,1,4,FV ), 0 , 135, 0 , 400, 138), // #1444
1511 INST(Vprorvd , VexRvm_Lx , E(660F38,14,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 138), // #1445
1512 INST(Vprorvq , VexRvm_Lx , E(660F38,14,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1446
1513 INST(Vprotb , VexRvmRmvRmi , V(XOP_M9,90,_,0,x,_,_,_ ), V(XOP_M8,C0,_,0,x,_,_,_ ), 79 , 122, 401, 151), // #1447
1514 INST(Vprotd , VexRvmRmvRmi , V(XOP_M9,92,_,0,x,_,_,_ ), V(XOP_M8,C2,_,0,x,_,_,_ ), 79 , 123, 401, 151), // #1448
1515 INST(Vprotq , VexRvmRmvRmi , V(XOP_M9,93,_,0,x,_,_,_ ), V(XOP_M8,C3,_,0,x,_,_,_ ), 79 , 124, 401, 151), // #1449
1516 INST(Vprotw , VexRvmRmvRmi , V(XOP_M9,91,_,0,x,_,_,_ ), V(XOP_M8,C1,_,0,x,_,_,_ ), 79 , 125, 401, 151), // #1450
1517 INST(Vpsadbw , VexRvm_Lx , V(660F00,F6,_,x,I,I,4,FVM), 0 , 144, 0 , 203, 163), // #1451
1518 INST(Vpscatterdd , VexMr_VM , E(660F38,A0,_,x,_,0,2,T1S), 0 , 129, 0 , 402, 138), // #1452
1519 INST(Vpscatterdq , VexMr_VM , E(660F38,A0,_,x,_,1,3,T1S), 0 , 128, 0 , 403, 138), // #1453
1520 INST(Vpscatterqd , VexMr_VM , E(660F38,A1,_,x,_,0,2,T1S), 0 , 129, 0 , 404, 138), // #1454
1521 INST(Vpscatterqq , VexMr_VM , E(660F38,A1,_,x,_,1,3,T1S), 0 , 128, 0 , 405, 138), // #1455
1522 INST(Vpshab , VexRvmRmv , V(XOP_M9,98,_,0,x,_,_,_ ), 0 , 79 , 0 , 406, 151), // #1456
1523 INST(Vpshad , VexRvmRmv , V(XOP_M9,9A,_,0,x,_,_,_ ), 0 , 79 , 0 , 406, 151), // #1457
1524 INST(Vpshaq , VexRvmRmv , V(XOP_M9,9B,_,0,x,_,_,_ ), 0 , 79 , 0 , 406, 151), // #1458
1525 INST(Vpshaw , VexRvmRmv , V(XOP_M9,99,_,0,x,_,_,_ ), 0 , 79 , 0 , 406, 151), // #1459
1526 INST(Vpshlb , VexRvmRmv , V(XOP_M9,94,_,0,x,_,_,_ ), 0 , 79 , 0 , 406, 151), // #1460
1527 INST(Vpshld , VexRvmRmv , V(XOP_M9,96,_,0,x,_,_,_ ), 0 , 79 , 0 , 406, 151), // #1461
1528 INST(Vpshldd , VexRvmi_Lx , E(660F3A,71,_,x,_,0,4,FV ), 0 , 111, 0 , 206, 168), // #1462
1529 INST(Vpshldq , VexRvmi_Lx , E(660F3A,71,_,x,_,1,4,FV ), 0 , 112, 0 , 207, 168), // #1463
1530 INST(Vpshldvd , VexRvm_Lx , E(660F38,71,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 168), // #1464
1531 INST(Vpshldvq , VexRvm_Lx , E(660F38,71,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 168), // #1465
1532 INST(Vpshldvw , VexRvm_Lx , E(660F38,70,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 168), // #1466
1533 INST(Vpshldw , VexRvmi_Lx , E(660F3A,70,_,x,_,1,4,FVM), 0 , 112, 0 , 275, 168), // #1467
1534 INST(Vpshlq , VexRvmRmv , V(XOP_M9,97,_,0,x,_,_,_ ), 0 , 79 , 0 , 406, 151), // #1468
1535 INST(Vpshlw , VexRvmRmv , V(XOP_M9,95,_,0,x,_,_,_ ), 0 , 79 , 0 , 406, 151), // #1469
1536 INST(Vpshrdd , VexRvmi_Lx , E(660F3A,73,_,x,_,0,4,FV ), 0 , 111, 0 , 206, 168), // #1470
1537 INST(Vpshrdq , VexRvmi_Lx , E(660F3A,73,_,x,_,1,4,FV ), 0 , 112, 0 , 207, 168), // #1471
1538 INST(Vpshrdvd , VexRvm_Lx , E(660F38,73,_,x,_,0,4,FV ), 0 , 114, 0 , 213, 168), // #1472
1539 INST(Vpshrdvq , VexRvm_Lx , E(660F38,73,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 168), // #1473
1540 INST(Vpshrdvw , VexRvm_Lx , E(660F38,72,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 168), // #1474
1541 INST(Vpshrdw , VexRvmi_Lx , E(660F3A,72,_,x,_,1,4,FVM), 0 , 112, 0 , 275, 168), // #1475
1542 INST(Vpshufb , VexRvm_Lx , V(660F38,00,_,x,I,I,4,FVM), 0 , 110, 0 , 315, 163), // #1476
1543 INST(Vpshufbitqmb , VexRvm_Lx , E(660F38,8F,_,x,0,0,4,FVM), 0 , 114, 0 , 407, 174), // #1477
1544 INST(Vpshufd , VexRmi_Lx , V(660F00,70,_,x,I,0,4,FV ), 0 , 144, 0 , 408, 142), // #1478
1545 INST(Vpshufhw , VexRmi_Lx , V(F30F00,70,_,x,I,I,4,FVM), 0 , 161, 0 , 409, 163), // #1479
1546 INST(Vpshuflw , VexRmi_Lx , V(F20F00,70,_,x,I,I,4,FVM), 0 , 223, 0 , 409, 163), // #1480
1547 INST(Vpsignb , VexRvm_Lx , V(660F38,08,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1481
1548 INST(Vpsignd , VexRvm_Lx , V(660F38,0A,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1482
1549 INST(Vpsignw , VexRvm_Lx , V(660F38,09,_,x,I,_,_,_ ), 0 , 96 , 0 , 202, 160), // #1483
1550 INST(Vpslld , VexRvmVmi_Lx_MEvex , V(660F00,F2,_,x,I,0,4,128), V(660F00,72,6,x,I,0,4,FV ), 224, 126, 410, 142), // #1484
1551 INST(Vpslldq , VexVmi_Lx_MEvex , V(660F00,73,7,x,I,I,4,FVM), 0 , 225, 0 , 411, 163), // #1485
1552 INST(Vpsllq , VexRvmVmi_Lx_MEvex , V(660F00,F3,_,x,I,1,4,128), V(660F00,73,6,x,I,1,4,FV ), 226, 127, 412, 142), // #1486
1553 INST(Vpsllvd , VexRvm_Lx , V(660F38,47,_,x,0,0,4,FV ), 0 , 110, 0 , 209, 152), // #1487
1554 INST(Vpsllvq , VexRvm_Lx , V(660F38,47,_,x,1,1,4,FV ), 0 , 182, 0 , 208, 152), // #1488
1555 INST(Vpsllvw , VexRvm_Lx , E(660F38,12,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 146), // #1489
1556 INST(Vpsllw , VexRvmVmi_Lx_MEvex , V(660F00,F1,_,x,I,I,4,128), V(660F00,71,6,x,I,I,4,FVM), 224, 128, 413, 163), // #1490
1557 INST(Vpsrad , VexRvmVmi_Lx_MEvex , V(660F00,E2,_,x,I,0,4,128), V(660F00,72,4,x,I,0,4,FV ), 224, 129, 410, 142), // #1491
1558 INST(Vpsraq , VexRvmVmi_Lx_MEvex , E(660F00,E2,_,x,_,1,4,128), E(660F00,72,4,x,_,1,4,FV ), 227, 130, 414, 138), // #1492
1559 INST(Vpsravd , VexRvm_Lx , V(660F38,46,_,x,0,0,4,FV ), 0 , 110, 0 , 209, 152), // #1493
1560 INST(Vpsravq , VexRvm_Lx , E(660F38,46,_,x,_,1,4,FV ), 0 , 113, 0 , 212, 138), // #1494
1561 INST(Vpsravw , VexRvm_Lx , E(660F38,11,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 146), // #1495
1562 INST(Vpsraw , VexRvmVmi_Lx_MEvex , V(660F00,E1,_,x,I,I,4,128), V(660F00,71,4,x,I,I,4,FVM), 224, 131, 413, 163), // #1496
1563 INST(Vpsrld , VexRvmVmi_Lx_MEvex , V(660F00,D2,_,x,I,0,4,128), V(660F00,72,2,x,I,0,4,FV ), 224, 132, 410, 142), // #1497
1564 INST(Vpsrldq , VexVmi_Lx_MEvex , V(660F00,73,3,x,I,I,4,FVM), 0 , 228, 0 , 411, 163), // #1498
1565 INST(Vpsrlq , VexRvmVmi_Lx_MEvex , V(660F00,D3,_,x,I,1,4,128), V(660F00,73,2,x,I,1,4,FV ), 226, 133, 412, 142), // #1499
1566 INST(Vpsrlvd , VexRvm_Lx , V(660F38,45,_,x,0,0,4,FV ), 0 , 110, 0 , 209, 152), // #1500
1567 INST(Vpsrlvq , VexRvm_Lx , V(660F38,45,_,x,1,1,4,FV ), 0 , 182, 0 , 208, 152), // #1501
1568 INST(Vpsrlvw , VexRvm_Lx , E(660F38,10,_,x,_,1,4,FVM), 0 , 113, 0 , 357, 146), // #1502
1569 INST(Vpsrlw , VexRvmVmi_Lx_MEvex , V(660F00,D1,_,x,I,I,4,128), V(660F00,71,2,x,I,I,4,FVM), 224, 134, 413, 163), // #1503
1570 INST(Vpsubb , VexRvm_Lx , V(660F00,F8,_,x,I,I,4,FVM), 0 , 144, 0 , 415, 163), // #1504
1571 INST(Vpsubd , VexRvm_Lx , V(660F00,FA,_,x,I,0,4,FV ), 0 , 144, 0 , 416, 142), // #1505
1572 INST(Vpsubq , VexRvm_Lx , V(660F00,FB,_,x,I,1,4,FV ), 0 , 103, 0 , 417, 142), // #1506
1573 INST(Vpsubsb , VexRvm_Lx , V(660F00,E8,_,x,I,I,4,FVM), 0 , 144, 0 , 415, 163), // #1507
1574 INST(Vpsubsw , VexRvm_Lx , V(660F00,E9,_,x,I,I,4,FVM), 0 , 144, 0 , 415, 163), // #1508
1575 INST(Vpsubusb , VexRvm_Lx , V(660F00,D8,_,x,I,I,4,FVM), 0 , 144, 0 , 415, 163), // #1509
1576 INST(Vpsubusw , VexRvm_Lx , V(660F00,D9,_,x,I,I,4,FVM), 0 , 144, 0 , 415, 163), // #1510
1577 INST(Vpsubw , VexRvm_Lx , V(660F00,F9,_,x,I,I,4,FVM), 0 , 144, 0 , 415, 163), // #1511
1578 INST(Vpternlogd , VexRvmi_Lx , E(660F3A,25,_,x,_,0,4,FV ), 0 , 111, 0 , 206, 138), // #1512
1579 INST(Vpternlogq , VexRvmi_Lx , E(660F3A,25,_,x,_,1,4,FV ), 0 , 112, 0 , 207, 138), // #1513
1580 INST(Vptest , VexRm_Lx , V(660F38,17,_,x,I,_,_,_ ), 0 , 96 , 0 , 298, 167), // #1514
1581 INST(Vptestmb , VexRvm_Lx , E(660F38,26,_,x,_,0,4,FVM), 0 , 114, 0 , 407, 146), // #1515
1582 INST(Vptestmd , VexRvm_Lx , E(660F38,27,_,x,_,0,4,FV ), 0 , 114, 0 , 418, 138), // #1516
1583 INST(Vptestmq , VexRvm_Lx , E(660F38,27,_,x,_,1,4,FV ), 0 , 113, 0 , 419, 138), // #1517
1584 INST(Vptestmw , VexRvm_Lx , E(660F38,26,_,x,_,1,4,FVM), 0 , 113, 0 , 407, 146), // #1518
1585 INST(Vptestnmb , VexRvm_Lx , E(F30F38,26,_,x,_,0,4,FVM), 0 , 132, 0 , 407, 146), // #1519
1586 INST(Vptestnmd , VexRvm_Lx , E(F30F38,27,_,x,_,0,4,FV ), 0 , 132, 0 , 418, 138), // #1520
1587 INST(Vptestnmq , VexRvm_Lx , E(F30F38,27,_,x,_,1,4,FV ), 0 , 229, 0 , 419, 138), // #1521
1588 INST(Vptestnmw , VexRvm_Lx , E(F30F38,26,_,x,_,1,4,FVM), 0 , 229, 0 , 407, 146), // #1522
1589 INST(Vpunpckhbw , VexRvm_Lx , V(660F00,68,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1523
1590 INST(Vpunpckhdq , VexRvm_Lx , V(660F00,6A,_,x,I,0,4,FV ), 0 , 144, 0 , 209, 142), // #1524
1591 INST(Vpunpckhqdq , VexRvm_Lx , V(660F00,6D,_,x,I,1,4,FV ), 0 , 103, 0 , 208, 142), // #1525
1592 INST(Vpunpckhwd , VexRvm_Lx , V(660F00,69,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1526
1593 INST(Vpunpcklbw , VexRvm_Lx , V(660F00,60,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1527
1594 INST(Vpunpckldq , VexRvm_Lx , V(660F00,62,_,x,I,0,4,FV ), 0 , 144, 0 , 209, 142), // #1528
1595 INST(Vpunpcklqdq , VexRvm_Lx , V(660F00,6C,_,x,I,1,4,FV ), 0 , 103, 0 , 208, 142), // #1529
1596 INST(Vpunpcklwd , VexRvm_Lx , V(660F00,61,_,x,I,I,4,FVM), 0 , 144, 0 , 315, 163), // #1530
1597 INST(Vpxor , VexRvm_Lx , V(660F00,EF,_,x,I,_,_,_ ), 0 , 69 , 0 , 353, 160), // #1531
1598 INST(Vpxord , VexRvm_Lx , E(660F00,EF,_,x,_,0,4,FV ), 0 , 198, 0 , 354, 138), // #1532
1599 INST(Vpxorq , VexRvm_Lx , E(660F00,EF,_,x,_,1,4,FV ), 0 , 135, 0 , 355, 138), // #1533
1600 INST(Vrangepd , VexRvmi_Lx , E(660F3A,50,_,x,_,1,4,FV ), 0 , 112, 0 , 285, 140), // #1534
1601 INST(Vrangeps , VexRvmi_Lx , E(660F3A,50,_,x,_,0,4,FV ), 0 , 111, 0 , 286, 140), // #1535
1602 INST(Vrangesd , VexRvmi , E(660F3A,51,_,I,_,1,3,T1S), 0 , 180, 0 , 287, 66 ), // #1536
1603 INST(Vrangess , VexRvmi , E(660F3A,51,_,I,_,0,2,T1S), 0 , 181, 0 , 288, 66 ), // #1537
1604 INST(Vrcp14pd , VexRm_Lx , E(660F38,4C,_,x,_,1,4,FV ), 0 , 113, 0 , 350, 138), // #1538
1605 INST(Vrcp14ps , VexRm_Lx , E(660F38,4C,_,x,_,0,4,FV ), 0 , 114, 0 , 374, 138), // #1539
1606 INST(Vrcp14sd , VexRvm , E(660F38,4D,_,I,_,1,3,T1S), 0 , 128, 0 , 420, 68 ), // #1540
1607 INST(Vrcp14ss , VexRvm , E(660F38,4D,_,I,_,0,2,T1S), 0 , 129, 0 , 421, 68 ), // #1541
1608 INST(Vrcp28pd , VexRm , E(660F38,CA,_,2,_,1,4,FV ), 0 , 170, 0 , 277, 147), // #1542
1609 INST(Vrcp28ps , VexRm , E(660F38,CA,_,2,_,0,4,FV ), 0 , 171, 0 , 278, 147), // #1543
1610 INST(Vrcp28sd , VexRvm , E(660F38,CB,_,I,_,1,3,T1S), 0 , 128, 0 , 308, 147), // #1544
1611 INST(Vrcp28ss , VexRvm , E(660F38,CB,_,I,_,0,2,T1S), 0 , 129, 0 , 309, 147), // #1545
1612 INST(Vrcpph , VexRm_Lx , E(66MAP6,4C,_,_,_,0,4,FV ), 0 , 183, 0 , 422, 134), // #1546
1613 INST(Vrcpps , VexRm_Lx , V(000F00,53,_,x,I,_,_,_ ), 0 , 72 , 0 , 298, 135), // #1547
1614 INST(Vrcpsh , VexRvm , E(66MAP6,4D,_,_,_,0,1,T1S), 0 , 185, 0 , 423, 134), // #1548
1615 INST(Vrcpss , VexRvm , V(F30F00,53,_,I,I,_,_,_ ), 0 , 199, 0 , 424, 135), // #1549
1616 INST(Vreducepd , VexRmi_Lx , E(660F3A,56,_,x,_,1,4,FV ), 0 , 112, 0 , 400, 140), // #1550
1617 INST(Vreduceph , VexRmi_Lx , E(000F3A,56,_,_,_,0,4,FV ), 0 , 123, 0 , 311, 132), // #1551
1618 INST(Vreduceps , VexRmi_Lx , E(660F3A,56,_,x,_,0,4,FV ), 0 , 111, 0 , 399, 140), // #1552
1619 INST(Vreducesd , VexRvmi , E(660F3A,57,_,I,_,1,3,T1S), 0 , 180, 0 , 425, 66 ), // #1553
1620 INST(Vreducesh , VexRvmi , E(000F3A,57,_,_,_,0,1,T1S), 0 , 188, 0 , 313, 134), // #1554
1621 INST(Vreducess , VexRvmi , E(660F3A,57,_,I,_,0,2,T1S), 0 , 181, 0 , 426, 66 ), // #1555
1622 INST(Vrndscalepd , VexRmi_Lx , E(660F3A,09,_,x,_,1,4,FV ), 0 , 112, 0 , 310, 138), // #1556
1623 INST(Vrndscaleph , VexRmi_Lx , E(000F3A,08,_,_,_,0,4,FV ), 0 , 123, 0 , 311, 132), // #1557
1624 INST(Vrndscaleps , VexRmi_Lx , E(660F3A,08,_,x,_,0,4,FV ), 0 , 111, 0 , 312, 138), // #1558
1625 INST(Vrndscalesd , VexRvmi , E(660F3A,0B,_,I,_,1,3,T1S), 0 , 180, 0 , 287, 68 ), // #1559
1626 INST(Vrndscalesh , VexRvmi , E(000F3A,0A,_,_,_,0,1,T1S), 0 , 188, 0 , 313, 134), // #1560
1627 INST(Vrndscaless , VexRvmi , E(660F3A,0A,_,I,_,0,2,T1S), 0 , 181, 0 , 288, 68 ), // #1561
1628 INST(Vroundpd , VexRmi_Lx , V(660F3A,09,_,x,I,_,_,_ ), 0 , 73 , 0 , 427, 135), // #1562
1629 INST(Vroundps , VexRmi_Lx , V(660F3A,08,_,x,I,_,_,_ ), 0 , 73 , 0 , 427, 135), // #1563
1630 INST(Vroundsd , VexRvmi , V(660F3A,0B,_,I,I,_,_,_ ), 0 , 73 , 0 , 428, 135), // #1564
1631 INST(Vroundss , VexRvmi , V(660F3A,0A,_,I,I,_,_,_ ), 0 , 73 , 0 , 429, 135), // #1565
1632 INST(Vrsqrt14pd , VexRm_Lx , E(660F38,4E,_,x,_,1,4,FV ), 0 , 113, 0 , 350, 138), // #1566
1633 INST(Vrsqrt14ps , VexRm_Lx , E(660F38,4E,_,x,_,0,4,FV ), 0 , 114, 0 , 374, 138), // #1567
1634 INST(Vrsqrt14sd , VexRvm , E(660F38,4F,_,I,_,1,3,T1S), 0 , 128, 0 , 420, 68 ), // #1568
1635 INST(Vrsqrt14ss , VexRvm , E(660F38,4F,_,I,_,0,2,T1S), 0 , 129, 0 , 421, 68 ), // #1569
1636 INST(Vrsqrt28pd , VexRm , E(660F38,CC,_,2,_,1,4,FV ), 0 , 170, 0 , 277, 147), // #1570
1637 INST(Vrsqrt28ps , VexRm , E(660F38,CC,_,2,_,0,4,FV ), 0 , 171, 0 , 278, 147), // #1571
1638 INST(Vrsqrt28sd , VexRvm , E(660F38,CD,_,I,_,1,3,T1S), 0 , 128, 0 , 308, 147), // #1572
1639 INST(Vrsqrt28ss , VexRvm , E(660F38,CD,_,I,_,0,2,T1S), 0 , 129, 0 , 309, 147), // #1573
1640 INST(Vrsqrtph , VexRm_Lx , E(66MAP6,4E,_,_,_,0,4,FV ), 0 , 183, 0 , 422, 132), // #1574
1641 INST(Vrsqrtps , VexRm_Lx , V(000F00,52,_,x,I,_,_,_ ), 0 , 72 , 0 , 298, 135), // #1575
1642 INST(Vrsqrtsh , VexRvm , E(66MAP6,4F,_,_,_,0,1,T1S), 0 , 185, 0 , 423, 134), // #1576
1643 INST(Vrsqrtss , VexRvm , V(F30F00,52,_,I,I,_,_,_ ), 0 , 199, 0 , 424, 135), // #1577
1644 INST(Vscalefpd , VexRvm_Lx , E(660F38,2C,_,x,_,1,4,FV ), 0 , 113, 0 , 430, 138), // #1578
1645 INST(Vscalefph , VexRvm_Lx , E(66MAP6,2C,_,_,_,0,4,FV ), 0 , 183, 0 , 197, 132), // #1579
1646 INST(Vscalefps , VexRvm_Lx , E(660F38,2C,_,x,_,0,4,FV ), 0 , 114, 0 , 284, 138), // #1580
1647 INST(Vscalefsd , VexRvm , E(660F38,2D,_,I,_,1,3,T1S), 0 , 128, 0 , 251, 68 ), // #1581
1648 INST(Vscalefsh , VexRvm , E(66MAP6,2D,_,_,_,0,1,T1S), 0 , 185, 0 , 200, 134), // #1582
1649 INST(Vscalefss , VexRvm , E(660F38,2D,_,I,_,0,2,T1S), 0 , 129, 0 , 259, 68 ), // #1583
1650 INST(Vscatterdpd , VexMr_VM , E(660F38,A2,_,x,_,1,3,T1S), 0 , 128, 0 , 403, 138), // #1584
1651 INST(Vscatterdps , VexMr_VM , E(660F38,A2,_,x,_,0,2,T1S), 0 , 129, 0 , 402, 138), // #1585
1652 INST(Vscatterpf0dpd , VexM_VM , E(660F38,C6,5,2,_,1,3,T1S), 0 , 230, 0 , 303, 153), // #1586
1653 INST(Vscatterpf0dps , VexM_VM , E(660F38,C6,5,2,_,0,2,T1S), 0 , 231, 0 , 304, 153), // #1587
1654 INST(Vscatterpf0qpd , VexM_VM , E(660F38,C7,5,2,_,1,3,T1S), 0 , 230, 0 , 305, 153), // #1588
1655 INST(Vscatterpf0qps , VexM_VM , E(660F38,C7,5,2,_,0,2,T1S), 0 , 231, 0 , 305, 153), // #1589
1656 INST(Vscatterpf1dpd , VexM_VM , E(660F38,C6,6,2,_,1,3,T1S), 0 , 232, 0 , 303, 153), // #1590
1657 INST(Vscatterpf1dps , VexM_VM , E(660F38,C6,6,2,_,0,2,T1S), 0 , 233, 0 , 304, 153), // #1591
1658 INST(Vscatterpf1qpd , VexM_VM , E(660F38,C7,6,2,_,1,3,T1S), 0 , 232, 0 , 305, 153), // #1592
1659 INST(Vscatterpf1qps , VexM_VM , E(660F38,C7,6,2,_,0,2,T1S), 0 , 233, 0 , 305, 153), // #1593
1660 INST(Vscatterqpd , VexMr_VM , E(660F38,A3,_,x,_,1,3,T1S), 0 , 128, 0 , 405, 138), // #1594
1661 INST(Vscatterqps , VexMr_VM , E(660F38,A3,_,x,_,0,2,T1S), 0 , 129, 0 , 404, 138), // #1595
1662 INST(Vshuff32x4 , VexRvmi_Lx , E(660F3A,23,_,x,_,0,4,FV ), 0 , 111, 0 , 431, 138), // #1596
1663 INST(Vshuff64x2 , VexRvmi_Lx , E(660F3A,23,_,x,_,1,4,FV ), 0 , 112, 0 , 432, 138), // #1597
1664 INST(Vshufi32x4 , VexRvmi_Lx , E(660F3A,43,_,x,_,0,4,FV ), 0 , 111, 0 , 431, 138), // #1598
1665 INST(Vshufi64x2 , VexRvmi_Lx , E(660F3A,43,_,x,_,1,4,FV ), 0 , 112, 0 , 432, 138), // #1599
1666 INST(Vshufpd , VexRvmi_Lx , V(660F00,C6,_,x,I,1,4,FV ), 0 , 103, 0 , 433, 131), // #1600
1667 INST(Vshufps , VexRvmi_Lx , V(000F00,C6,_,x,I,0,4,FV ), 0 , 105, 0 , 434, 131), // #1601
1668 INST(Vsqrtpd , VexRm_Lx , V(660F00,51,_,x,I,1,4,FV ), 0 , 103, 0 , 435, 131), // #1602
1669 INST(Vsqrtph , VexRm_Lx , E(00MAP5,51,_,_,_,0,4,FV ), 0 , 104, 0 , 246, 132), // #1603
1670 INST(Vsqrtps , VexRm_Lx , V(000F00,51,_,x,I,0,4,FV ), 0 , 105, 0 , 235, 131), // #1604
1671 INST(Vsqrtsd , VexRvm , V(F20F00,51,_,I,I,1,3,T1S), 0 , 106, 0 , 199, 133), // #1605
1672 INST(Vsqrtsh , VexRvm , E(F3MAP5,51,_,_,_,0,1,T1S), 0 , 107, 0 , 200, 134), // #1606
1673 INST(Vsqrtss , VexRvm , V(F30F00,51,_,I,I,0,2,T1S), 0 , 108, 0 , 201, 133), // #1607
1674 INST(Vstmxcsr , VexM , V(000F00,AE,3,0,I,_,_,_ ), 0 , 234, 0 , 321, 135), // #1608
1675 INST(Vsubpd , VexRvm_Lx , V(660F00,5C,_,x,I,1,4,FV ), 0 , 103, 0 , 196, 131), // #1609
1676 INST(Vsubph , VexRvm_Lx , E(00MAP5,5C,_,_,_,0,4,FV ), 0 , 104, 0 , 197, 132), // #1610
1677 INST(Vsubps , VexRvm_Lx , V(000F00,5C,_,x,I,0,4,FV ), 0 , 105, 0 , 198, 131), // #1611
1678 INST(Vsubsd , VexRvm , V(F20F00,5C,_,I,I,1,3,T1S), 0 , 106, 0 , 199, 133), // #1612
1679 INST(Vsubsh , VexRvm , E(F3MAP5,5C,_,_,_,0,1,T1S), 0 , 107, 0 , 200, 134), // #1613
1680 INST(Vsubss , VexRvm , V(F30F00,5C,_,I,I,0,2,T1S), 0 , 108, 0 , 201, 133), // #1614
1681 INST(Vtestpd , VexRm_Lx , V(660F38,0F,_,x,0,_,_,_ ), 0 , 96 , 0 , 298, 167), // #1615
1682 INST(Vtestps , VexRm_Lx , V(660F38,0E,_,x,0,_,_,_ ), 0 , 96 , 0 , 298, 167), // #1616
1683 INST(Vucomisd , VexRm , V(660F00,2E,_,I,I,1,3,T1S), 0 , 125, 0 , 229, 143), // #1617
1684 INST(Vucomish , VexRm , E(00MAP5,2E,_,_,_,0,1,T1S), 0 , 126, 0 , 230, 134), // #1618
1685 INST(Vucomiss , VexRm , V(000F00,2E,_,I,I,0,2,T1S), 0 , 127, 0 , 231, 143), // #1619
1686 INST(Vunpckhpd , VexRvm_Lx , V(660F00,15,_,x,I,1,4,FV ), 0 , 103, 0 , 208, 131), // #1620
1687 INST(Vunpckhps , VexRvm_Lx , V(000F00,15,_,x,I,0,4,FV ), 0 , 105, 0 , 209, 131), // #1621
1688 INST(Vunpcklpd , VexRvm_Lx , V(660F00,14,_,x,I,1,4,FV ), 0 , 103, 0 , 208, 131), // #1622
1689 INST(Vunpcklps , VexRvm_Lx , V(000F00,14,_,x,I,0,4,FV ), 0 , 105, 0 , 209, 131), // #1623
1690 INST(Vxorpd , VexRvm_Lx , V(660F00,57,_,x,I,1,4,FV ), 0 , 103, 0 , 417, 139), // #1624
1691 INST(Vxorps , VexRvm_Lx , V(000F00,57,_,x,I,0,4,FV ), 0 , 105, 0 , 416, 139), // #1625
1692 INST(Vzeroall , VexOp , V(000F00,77,_,1,I,_,_,_ ), 0 , 68 , 0 , 436, 135), // #1626
1693 INST(Vzeroupper , VexOp , V(000F00,77,_,0,I,_,_,_ ), 0 , 72 , 0 , 436, 135), // #1627
1694 INST(Wbinvd , X86Op , O(000F00,09,_,_,_,_,_,_ ), 0 , 4 , 0 , 30 , 0 ), // #1628
1695 INST(Wbnoinvd , X86Op , O(F30F00,09,_,_,_,_,_,_ ), 0 , 6 , 0 , 30 , 176), // #1629
1696 INST(Wrfsbase , X86M , O(F30F00,AE,2,_,x,_,_,_ ), 0 , 235, 0 , 173, 111), // #1630
1697 INST(Wrgsbase , X86M , O(F30F00,AE,3,_,x,_,_,_ ), 0 , 236, 0 , 173, 111), // #1631
1698 INST(Wrmsr , X86Op , O(000F00,30,_,_,_,_,_,_ ), 0 , 4 , 0 , 174, 112), // #1632
1699 INST(Wrssd , X86Mr , O(000F38,F6,_,_,_,_,_,_ ), 0 , 83 , 0 , 437, 56 ), // #1633
1700 INST(Wrssq , X86Mr , O(000F38,F6,_,_,1,_,_,_ ), 0 , 237, 0 , 438, 56 ), // #1634
1701 INST(Wrussd , X86Mr , O(660F38,F5,_,_,_,_,_,_ ), 0 , 2 , 0 , 437, 56 ), // #1635
1702 INST(Wrussq , X86Mr , O(660F38,F5,_,_,1,_,_,_ ), 0 , 238, 0 , 438, 56 ), // #1636
1703 INST(Xabort , X86Op_Mod11RM_I8 , O(000000,C6,7,_,_,_,_,_ ), 0 , 27 , 0 , 80 , 177), // #1637
1704 INST(Xadd , X86Xadd , O(000F00,C0,_,_,x,_,_,_ ), 0 , 4 , 0 , 439, 38 ), // #1638
1705 INST(Xbegin , X86JmpRel , O(000000,C7,7,_,_,_,_,_ ), 0 , 27 , 0 , 440, 177), // #1639
1706 INST(Xchg , X86Xchg , O(000000,86,_,_,x,_,_,_ ), 0 , 0 , 0 , 441, 0 ), // #1640
1707 INST(Xend , X86Op , O(000F01,D5,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 177), // #1641
1708 INST(Xgetbv , X86Op , O(000F01,D0,_,_,_,_,_,_ ), 0 , 21 , 0 , 174, 178), // #1642
1709 INST(Xlatb , X86Op , O(000000,D7,_,_,_,_,_,_ ), 0 , 0 , 0 , 30 , 0 ), // #1643
1710 INST(Xor , X86Arith , O(000000,30,6,_,x,_,_,_ ), 0 , 32 , 0 , 179, 1 ), // #1644
1711 INST(Xorpd , ExtRm , O(660F00,57,_,_,_,_,_,_ ), 0 , 3 , 0 , 151, 4 ), // #1645
1712 INST(Xorps , ExtRm , O(000F00,57,_,_,_,_,_,_ ), 0 , 4 , 0 , 151, 5 ), // #1646
1713 INST(Xresldtrk , X86Op , O(F20F01,E9,_,_,_,_,_,_ ), 0 , 92 , 0 , 30 , 179), // #1647
1714 INST(Xrstor , X86M_Only_EDX_EAX , O(000F00,AE,5,_,_,_,_,_ ), 0 , 77 , 0 , 442, 178), // #1648
1715 INST(Xrstor64 , X86M_Only_EDX_EAX , O(000F00,AE,5,_,1,_,_,_ ), 0 , 239, 0 , 443, 178), // #1649
1716 INST(Xrstors , X86M_Only_EDX_EAX , O(000F00,C7,3,_,_,_,_,_ ), 0 , 78 , 0 , 442, 180), // #1650
1717 INST(Xrstors64 , X86M_Only_EDX_EAX , O(000F00,C7,3,_,1,_,_,_ ), 0 , 240, 0 , 443, 180), // #1651
1718 INST(Xsave , X86M_Only_EDX_EAX , O(000F00,AE,4,_,_,_,_,_ ), 0 , 97 , 0 , 442, 178), // #1652
1719 INST(Xsave64 , X86M_Only_EDX_EAX , O(000F00,AE,4,_,1,_,_,_ ), 0 , 241, 0 , 443, 178), // #1653
1720 INST(Xsavec , X86M_Only_EDX_EAX , O(000F00,C7,4,_,_,_,_,_ ), 0 , 97 , 0 , 442, 181), // #1654
1721 INST(Xsavec64 , X86M_Only_EDX_EAX , O(000F00,C7,4,_,1,_,_,_ ), 0 , 241, 0 , 443, 181), // #1655
1722 INST(Xsaveopt , X86M_Only_EDX_EAX , O(000F00,AE,6,_,_,_,_,_ ), 0 , 80 , 0 , 442, 182), // #1656
1723 INST(Xsaveopt64 , X86M_Only_EDX_EAX , O(000F00,AE,6,_,1,_,_,_ ), 0 , 242, 0 , 443, 182), // #1657
1724 INST(Xsaves , X86M_Only_EDX_EAX , O(000F00,C7,5,_,_,_,_,_ ), 0 , 77 , 0 , 442, 180), // #1658
1725 INST(Xsaves64 , X86M_Only_EDX_EAX , O(000F00,C7,5,_,1,_,_,_ ), 0 , 239, 0 , 443, 180), // #1659
1726 INST(Xsetbv , X86Op , O(000F01,D1,_,_,_,_,_,_ ), 0 , 21 , 0 , 174, 178), // #1660
1727 INST(Xsusldtrk , X86Op , O(F20F01,E8,_,_,_,_,_,_ ), 0 , 92 , 0 , 30 , 179), // #1661
1728 INST(Xtest , X86Op , O(000F01,D6,_,_,_,_,_,_ ), 0 , 21 , 0 , 30 , 183) // #1662
17371729 // ${InstInfo:End}
17381730 };
17391731 #undef NAME_DATA_INDEX
28442836 #ifndef ASMJIT_NO_TEXT
28452837 // ${NameData:Begin}
28462838 // ------------------- Automatically generated, do not edit -------------------
2847 const char InstDB::_nameData[] =
2848 "\0" "aaa\0" "aad\0" "aam\0" "aas\0" "adc\0" "adcx\0" "adox\0" "arpl\0" "bextr\0" "blcfill\0" "blci\0" "blcic\0"
2849 "blcmsk\0" "blcs\0" "blsfill\0" "blsi\0" "blsic\0" "blsmsk\0" "blsr\0" "bndcl\0" "bndcn\0" "bndcu\0" "bndldx\0"
2850 "bndmk\0" "bndmov\0" "bndstx\0" "bound\0" "bsf\0" "bsr\0" "bswap\0" "bt\0" "btc\0" "btr\0" "bts\0" "bzhi\0" "cbw\0"
2851 "cdq\0" "cdqe\0" "clac\0" "clc\0" "cld\0" "cldemote\0" "clflush\0" "clflushopt\0" "clgi\0" "cli\0" "clrssbsy\0"
2852 "clts\0" "clui\0" "clwb\0" "clzero\0" "cmc\0" "cmova\0" "cmovae\0" "cmovc\0" "cmovg\0" "cmovge\0" "cmovl\0"
2853 "cmovle\0" "cmovna\0" "cmovnae\0" "cmovnc\0" "cmovng\0" "cmovnge\0" "cmovnl\0" "cmovnle\0" "cmovno\0" "cmovnp\0"
2854 "cmovns\0" "cmovnz\0" "cmovo\0" "cmovp\0" "cmovpe\0" "cmovpo\0" "cmovs\0" "cmovz\0" "cmp\0" "cmps\0" "cmpxchg\0"
2855 "cmpxchg16b\0" "cmpxchg8b\0" "cpuid\0" "cqo\0" "crc32\0" "cvtpd2pi\0" "cvtpi2pd\0" "cvtpi2ps\0" "cvtps2pi\0"
2856 "cvttpd2pi\0" "cvttps2pi\0" "cwd\0" "cwde\0" "daa\0" "das\0" "endbr32\0" "endbr64\0" "enqcmd\0" "enqcmds\0" "f2xm1\0"
2857 "fabs\0" "faddp\0" "fbld\0" "fbstp\0" "fchs\0" "fclex\0" "fcmovb\0" "fcmovbe\0" "fcmove\0" "fcmovnb\0" "fcmovnbe\0"
2858 "fcmovne\0" "fcmovnu\0" "fcmovu\0" "fcom\0" "fcomi\0" "fcomip\0" "fcomp\0" "fcompp\0" "fcos\0" "fdecstp\0" "fdiv\0"
2859 "fdivp\0" "fdivr\0" "fdivrp\0" "femms\0" "ffree\0" "fiadd\0" "ficom\0" "ficomp\0" "fidiv\0" "fidivr\0" "fild\0"
2860 "fimul\0" "fincstp\0" "finit\0" "fist\0" "fistp\0" "fisttp\0" "fisub\0" "fisubr\0" "fld\0" "fld1\0" "fldcw\0"
2861 "fldenv\0" "fldl2e\0" "fldl2t\0" "fldlg2\0" "fldln2\0" "fldpi\0" "fldz\0" "fmulp\0" "fnclex\0" "fninit\0" "fnop\0"
2862 "fnsave\0" "fnstcw\0" "fnstenv\0" "fnstsw\0" "fpatan\0" "fprem\0" "fprem1\0" "fptan\0" "frndint\0" "frstor\0"
2863 "fsave\0" "fscale\0" "fsin\0" "fsincos\0" "fsqrt\0" "fst\0" "fstcw\0" "fstenv\0" "fstp\0" "fstsw\0" "fsubp\0"
2864 "fsubrp\0" "ftst\0" "fucom\0" "fucomi\0" "fucomip\0" "fucomp\0" "fucompp\0" "fwait\0" "fxam\0" "fxch\0" "fxrstor\0"
2865 "fxrstor64\0" "fxsave\0" "fxsave64\0" "fxtract\0" "fyl2x\0" "fyl2xp1\0" "getsec\0" "hlt\0" "hreset\0" "inc\0"
2866 "incsspd\0" "incsspq\0" "insertq\0" "int3\0" "into\0" "invept\0" "invlpg\0" "invlpga\0" "invpcid\0" "invvpid\0"
2867 "iretd\0" "iretq\0" "ja\0" "jae\0" "jb\0" "jbe\0" "jc\0" "je\0" "jecxz\0" "jg\0" "jge\0" "jl\0" "jle\0" "jna\0"
2868 "jnae\0" "jnb\0" "jnbe\0" "jnc\0" "jne\0" "jng\0" "jnge\0" "jnl\0" "jnle\0" "jno\0" "jnp\0" "jns\0" "jnz\0" "jo\0"
2869 "jp\0" "jpe\0" "jpo\0" "js\0" "jz\0" "kaddb\0" "kaddd\0" "kaddq\0" "kaddw\0" "kandb\0" "kandd\0" "kandnb\0"
2870 "kandnd\0" "kandnq\0" "kandnw\0" "kandq\0" "kandw\0" "kmovb\0" "kmovw\0" "knotb\0" "knotd\0" "knotq\0" "knotw\0"
2871 "korb\0" "kord\0" "korq\0" "kortestb\0" "kortestd\0" "kortestq\0" "kortestw\0" "korw\0" "kshiftlb\0" "kshiftld\0"
2872 "kshiftlq\0" "kshiftlw\0" "kshiftrb\0" "kshiftrd\0" "kshiftrq\0" "kshiftrw\0" "ktestb\0" "ktestd\0" "ktestq\0"
2873 "ktestw\0" "kunpckbw\0" "kunpckdq\0" "kunpckwd\0" "kxnorb\0" "kxnord\0" "kxnorq\0" "kxnorw\0" "kxorb\0" "kxord\0"
2874 "kxorq\0" "kxorw\0" "lahf\0" "lar\0" "lcall\0" "lds\0" "ldtilecfg\0" "lea\0" "leave\0" "les\0" "lfence\0" "lfs\0"
2875 "lgdt\0" "lgs\0" "lidt\0" "ljmp\0" "lldt\0" "llwpcb\0" "lmsw\0" "lods\0" "loop\0" "loope\0" "loopne\0" "lsl\0"
2876 "ltr\0" "lwpins\0" "lwpval\0" "lzcnt\0" "mcommit\0" "mfence\0" "monitorx\0" "movabs\0" "movdir64b\0" "movdiri\0"
2877 "movdq2q\0" "movnti\0" "movntq\0" "movntsd\0" "movntss\0" "movq2dq\0" "movsx\0" "movsxd\0" "movzx\0" "mulx\0"
2878 "mwaitx\0" "neg\0" "not\0" "out\0" "outs\0" "pavgusb\0" "pconfig\0" "pdep\0" "pext\0" "pf2id\0" "pf2iw\0" "pfacc\0"
2879 "pfadd\0" "pfcmpeq\0" "pfcmpge\0" "pfcmpgt\0" "pfmax\0" "pfmin\0" "pfmul\0" "pfnacc\0" "pfpnacc\0" "pfrcp\0"
2880 "pfrcpit1\0" "pfrcpit2\0" "pfrcpv\0" "pfrsqit1\0" "pfrsqrt\0" "pfrsqrtv\0" "pfsub\0" "pfsubr\0" "pi2fd\0" "pi2fw\0"
2881 "pmulhrw\0" "pop\0" "popa\0" "popad\0" "popcnt\0" "popf\0" "popfd\0" "popfq\0" "prefetch\0" "prefetchnta\0"
2882 "prefetcht0\0" "prefetcht1\0" "prefetcht2\0" "prefetchw\0" "prefetchwt1\0" "pshufw\0" "psmash\0" "pswapd\0"
2883 "ptwrite\0" "push\0" "pusha\0" "pushad\0" "pushf\0" "pushfd\0" "pushfq\0" "pvalidate\0" "rcl\0" "rcr\0" "rdfsbase\0"
2884 "rdgsbase\0" "rdmsr\0" "rdpid\0" "rdpkru\0" "rdpmc\0" "rdpru\0" "rdrand\0" "rdseed\0" "rdsspd\0" "rdsspq\0" "rdtsc\0"
2885 "rdtscp\0" "retf\0" "rmpadjust\0" "rmpupdate\0" "rol\0" "ror\0" "rorx\0" "rsm\0" "rstorssp\0" "sahf\0" "sal\0"
2886 "sar\0" "sarx\0" "saveprevssp\0" "sbb\0" "scas\0" "senduipi\0" "serialize\0" "seta\0" "setae\0" "setb\0" "setbe\0"
2887 "setc\0" "sete\0" "setg\0" "setge\0" "setl\0" "setle\0" "setna\0" "setnae\0" "setnb\0" "setnbe\0" "setnc\0" "setne\0"
2888 "setng\0" "setnge\0" "setnl\0" "setnle\0" "setno\0" "setnp\0" "setns\0" "setnz\0" "seto\0" "setp\0" "setpe\0"
2889 "setpo\0" "sets\0" "setssbsy\0" "setz\0" "sfence\0" "sgdt\0" "sha1msg1\0" "sha1msg2\0" "sha1nexte\0" "sha1rnds4\0"
2890 "sha256msg1\0" "sha256msg2\0" "sha256rnds2\0" "shl\0" "shlx\0" "shr\0" "shrd\0" "shrx\0" "sidt\0" "skinit\0" "sldt\0"
2891 "slwpcb\0" "smsw\0" "stac\0" "stc\0" "stgi\0" "sti\0" "stos\0" "str\0" "sttilecfg\0" "swapgs\0" "syscall\0"
2892 "sysenter\0" "sysexit\0" "sysexitq\0" "sysret\0" "sysretq\0" "t1mskc\0" "tdpbf16ps\0" "tdpbssd\0" "tdpbsud\0"
2893 "tdpbusd\0" "tdpbuud\0" "testui\0" "tileloadd\0" "tileloaddt1\0" "tilerelease\0" "tilestored\0" "tilezero\0"
2894 "tpause\0" "tzcnt\0" "tzmsk\0" "ud0\0" "ud1\0" "ud2\0" "uiret\0" "umonitor\0" "umwait\0" "v4fmaddps\0" "v4fmaddss\0"
2895 "v4fnmaddps\0" "v4fnmaddss\0" "vaddpd\0" "vaddph\0" "vaddps\0" "vaddsd\0" "vaddsh\0" "vaddss\0" "vaddsubpd\0"
2896 "vaddsubps\0" "vaesdec\0" "vaesdeclast\0" "vaesenc\0" "vaesenclast\0" "vaesimc\0" "vaeskeygenassist\0" "valignd\0"
2897 "valignq\0" "vandnpd\0" "vandnps\0" "vandpd\0" "vandps\0" "vblendmpd\0" "vblendmps\0" "vblendpd\0" "vblendps\0"
2898 "vblendvpd\0" "vblendvps\0" "vbroadcastf128\0" "vbroadcastf32x2\0" "vbroadcastf32x4\0" "vbroadcastf32x8\0"
2899 "vbroadcastf64x2\0" "vbroadcastf64x4\0" "vbroadcasti128\0" "vbroadcasti32x2\0" "vbroadcasti32x4\0"
2900 "vbroadcasti32x8\0" "vbroadcasti64x2\0" "vbroadcasti64x4\0" "vbroadcastsd\0" "vbroadcastss\0" "vcmppd\0" "vcmpph\0"
2901 "vcmpps\0" "vcmpsd\0" "vcmpsh\0" "vcmpss\0" "vcomisd\0" "vcomish\0" "vcomiss\0" "vcompresspd\0" "vcompressps\0"
2902 "vcvtdq2pd\0" "vcvtdq2ph\0" "vcvtdq2ps\0" "vcvtne2ps2bf16\0" "vcvtneps2bf16\0" "vcvtpd2dq\0" "vcvtpd2ph\0"
2903 "vcvtpd2ps\0" "vcvtpd2qq\0" "vcvtpd2udq\0" "vcvtpd2uqq\0" "vcvtph2dq\0" "vcvtph2pd\0" "vcvtph2ps\0" "vcvtph2psx\0"
2904 "vcvtph2qq\0" "vcvtph2udq\0" "vcvtph2uqq\0" "vcvtph2uw\0" "vcvtph2w\0" "vcvtps2dq\0" "vcvtps2pd\0" "vcvtps2ph\0"
2905 "vcvtps2phx\0" "vcvtps2qq\0" "vcvtps2udq\0" "vcvtps2uqq\0" "vcvtqq2pd\0" "vcvtqq2ph\0" "vcvtqq2ps\0" "vcvtsd2sh\0"
2906 "vcvtsd2si\0" "vcvtsd2ss\0" "vcvtsd2usi\0" "vcvtsh2sd\0" "vcvtsh2si\0" "vcvtsh2ss\0" "vcvtsh2usi\0" "vcvtsi2sd\0"
2907 "vcvtsi2sh\0" "vcvtsi2ss\0" "vcvtss2sd\0" "vcvtss2sh\0" "vcvtss2si\0" "vcvtss2usi\0" "vcvttpd2dq\0" "vcvttpd2qq\0"
2908 "vcvttpd2udq\0" "vcvttpd2uqq\0" "vcvttph2dq\0" "vcvttph2qq\0" "vcvttph2udq\0" "vcvttph2uqq\0" "vcvttph2uw\0"
2909 "vcvttph2w\0" "vcvttps2dq\0" "vcvttps2qq\0" "vcvttps2udq\0" "vcvttps2uqq\0" "vcvttsd2si\0" "vcvttsd2usi\0"
2910 "vcvttsh2si\0" "vcvttsh2usi\0" "vcvttss2si\0" "vcvttss2usi\0" "vcvtudq2pd\0" "vcvtudq2ph\0" "vcvtudq2ps\0"
2911 "vcvtuqq2pd\0" "vcvtuqq2ph\0" "vcvtuqq2ps\0" "vcvtusi2sd\0" "vcvtusi2sh\0" "vcvtusi2ss\0" "vcvtuw2ph\0" "vcvtw2ph\0"
2912 "vdbpsadbw\0" "vdivpd\0" "vdivph\0" "vdivps\0" "vdivsd\0" "vdivsh\0" "vdivss\0" "vdpbf16ps\0" "vdppd\0" "vdpps\0"
2913 "verr\0" "verw\0" "vexp2pd\0" "vexp2ps\0" "vexpandpd\0" "vexpandps\0" "vextractf128\0" "vextractf32x4\0"
2914 "vextractf32x8\0" "vextractf64x2\0" "vextractf64x4\0" "vextracti128\0" "vextracti32x4\0" "vextracti32x8\0"
2915 "vextracti64x2\0" "vextracti64x4\0" "vextractps\0" "vfcmaddcph\0" "vfcmaddcsh\0" "vfcmulcph\0" "vfcmulcsh\0"
2916 "vfixupimmpd\0" "vfixupimmps\0" "vfixupimmsd\0" "vfixupimmss\0" "vfmadd132pd\0" "vfmadd132ph\0" "vfmadd132ps\0"
2917 "vfmadd132sd\0" "vfmadd132sh\0" "vfmadd132ss\0" "vfmadd213pd\0" "vfmadd213ph\0" "vfmadd213ps\0" "vfmadd213sd\0"
2918 "vfmadd213sh\0" "vfmadd213ss\0" "vfmadd231pd\0" "vfmadd231ph\0" "vfmadd231ps\0" "vfmadd231sd\0" "vfmadd231sh\0"
2919 "vfmadd231ss\0" "vfmaddcph\0" "vfmaddcsh\0" "vfmaddpd\0" "vfmaddps\0" "vfmaddsd\0" "vfmaddss\0" "vfmaddsub132pd\0"
2920 "vfmaddsub132ph\0" "vfmaddsub132ps\0" "vfmaddsub213pd\0" "vfmaddsub213ph\0" "vfmaddsub213ps\0" "vfmaddsub231pd\0"
2921 "vfmaddsub231ph\0" "vfmaddsub231ps\0" "vfmaddsubpd\0" "vfmaddsubps\0" "vfmsub132pd\0" "vfmsub132ph\0" "vfmsub132ps\0"
2922 "vfmsub132sd\0" "vfmsub132sh\0" "vfmsub132ss\0" "vfmsub213pd\0" "vfmsub213ph\0" "vfmsub213ps\0" "vfmsub213sd\0"
2923 "vfmsub213sh\0" "vfmsub213ss\0" "vfmsub231pd\0" "vfmsub231ph\0" "vfmsub231ps\0" "vfmsub231sd\0" "vfmsub231sh\0"
2924 "vfmsub231ss\0" "vfmsubadd132pd\0" "vfmsubadd132ph\0" "vfmsubadd132ps\0" "vfmsubadd213pd\0" "vfmsubadd213ph\0"
2925 "vfmsubadd213ps\0" "vfmsubadd231pd\0" "vfmsubadd231ph\0" "vfmsubadd231ps\0" "vfmsubaddpd\0" "vfmsubaddps\0"
2926 "vfmsubpd\0" "vfmsubps\0" "vfmsubsd\0" "vfmsubss\0" "vfmulcph\0" "vfmulcsh\0" "vfnmadd132pd\0" "vfnmadd132ph\0"
2927 "vfnmadd132ps\0" "vfnmadd132sd\0" "vfnmadd132sh\0" "vfnmadd132ss\0" "vfnmadd213pd\0" "vfnmadd213ph\0"
2928 "vfnmadd213ps\0" "vfnmadd213sd\0" "vfnmadd213sh\0" "vfnmadd213ss\0" "vfnmadd231pd\0" "vfnmadd231ph\0"
2929 "vfnmadd231ps\0" "vfnmadd231sd\0" "vfnmadd231sh\0" "vfnmadd231ss\0" "vfnmaddpd\0" "vfnmaddps\0" "vfnmaddsd\0"
2930 "vfnmaddss\0" "vfnmsub132pd\0" "vfnmsub132ph\0" "vfnmsub132ps\0" "vfnmsub132sd\0" "vfnmsub132sh\0" "vfnmsub132ss\0"
2931 "vfnmsub213pd\0" "vfnmsub213ph\0" "vfnmsub213ps\0" "vfnmsub213sd\0" "vfnmsub213sh\0" "vfnmsub213ss\0"
2932 "vfnmsub231pd\0" "vfnmsub231ph\0" "vfnmsub231ps\0" "vfnmsub231sd\0" "vfnmsub231sh\0" "vfnmsub231ss\0" "vfnmsubpd\0"
2933 "vfnmsubps\0" "vfnmsubsd\0" "vfnmsubss\0" "vfpclasspd\0" "vfpclassph\0" "vfpclassps\0" "vfpclasssd\0" "vfpclasssh\0"
2934 "vfpclassss\0" "vfrczpd\0" "vfrczps\0" "vfrczsd\0" "vfrczss\0" "vgatherdpd\0" "vgatherdps\0" "vgatherpf0dpd\0"
2935 "vgatherpf0dps\0" "vgatherpf0qpd\0" "vgatherpf0qps\0" "vgatherpf1dpd\0" "vgatherpf1dps\0" "vgatherpf1qpd\0"
2936 "vgatherpf1qps\0" "vgatherqpd\0" "vgatherqps\0" "vgetexppd\0" "vgetexpph\0" "vgetexpps\0" "vgetexpsd\0" "vgetexpsh\0"
2937 "vgetexpss\0" "vgetmantpd\0" "vgetmantph\0" "vgetmantps\0" "vgetmantsd\0" "vgetmantsh\0" "vgetmantss\0"
2938 "vgf2p8affineinvqb\0" "vgf2p8affineqb\0" "vgf2p8mulb\0" "vhaddpd\0" "vhaddps\0" "vhsubpd\0" "vhsubps\0"
2939 "vinsertf128\0" "vinsertf32x4\0" "vinsertf32x8\0" "vinsertf64x2\0" "vinsertf64x4\0" "vinserti128\0" "vinserti32x4\0"
2940 "vinserti32x8\0" "vinserti64x2\0" "vinserti64x4\0" "vinsertps\0" "vlddqu\0" "vldmxcsr\0" "vmaskmovdqu\0"
2941 "vmaskmovpd\0" "vmaskmovps\0" "vmaxpd\0" "vmaxph\0" "vmaxps\0" "vmaxsd\0" "vmaxsh\0" "vmaxss\0" "vmcall\0"
2942 "vmclear\0" "vmfunc\0" "vminpd\0" "vminph\0" "vminps\0" "vminsd\0" "vminsh\0" "vminss\0" "vmlaunch\0" "vmload\0"
2943 "vmmcall\0" "vmovapd\0" "vmovaps\0" "vmovd\0" "vmovddup\0" "vmovdqa\0" "vmovdqa32\0" "vmovdqa64\0" "vmovdqu\0"
2944 "vmovdqu16\0" "vmovdqu32\0" "vmovdqu64\0" "vmovdqu8\0" "vmovhlps\0" "vmovhpd\0" "vmovhps\0" "vmovlhps\0" "vmovlpd\0"
2945 "vmovlps\0" "vmovmskpd\0" "vmovmskps\0" "vmovntdq\0" "vmovntdqa\0" "vmovntpd\0" "vmovntps\0" "vmovq\0" "vmovsd\0"
2946 "vmovsh\0" "vmovshdup\0" "vmovsldup\0" "vmovss\0" "vmovupd\0" "vmovups\0" "vmovw\0" "vmpsadbw\0" "vmptrld\0"
2947 "vmptrst\0" "vmread\0" "vmresume\0" "vmrun\0" "vmsave\0" "vmulpd\0" "vmulph\0" "vmulps\0" "vmulsd\0" "vmulsh\0"
2948 "vmulss\0" "vmwrite\0" "vmxon\0" "vorpd\0" "vorps\0" "vp2intersectd\0" "vp2intersectq\0" "vp4dpwssd\0" "vp4dpwssds\0"
2949 "vpabsb\0" "vpabsd\0" "vpabsq\0" "vpabsw\0" "vpackssdw\0" "vpacksswb\0" "vpackusdw\0" "vpackuswb\0" "vpaddb\0"
2950 "vpaddd\0" "vpaddq\0" "vpaddsb\0" "vpaddsw\0" "vpaddusb\0" "vpaddusw\0" "vpaddw\0" "vpalignr\0" "vpand\0" "vpandd\0"
2951 "vpandn\0" "vpandnd\0" "vpandnq\0" "vpandq\0" "vpavgb\0" "vpavgw\0" "vpblendd\0" "vpblendmb\0" "vpblendmd\0"
2952 "vpblendmq\0" "vpblendmw\0" "vpblendvb\0" "vpblendw\0" "vpbroadcastb\0" "vpbroadcastd\0" "vpbroadcastmb2q\0"
2953 "vpbroadcastmw2d\0" "vpbroadcastq\0" "vpbroadcastw\0" "vpclmulqdq\0" "vpcmov\0" "vpcmpb\0" "vpcmpd\0" "vpcmpeqb\0"
2954 "vpcmpeqd\0" "vpcmpeqq\0" "vpcmpeqw\0" "vpcmpestri\0" "vpcmpestrm\0" "vpcmpgtb\0" "vpcmpgtd\0" "vpcmpgtq\0"
2955 "vpcmpgtw\0" "vpcmpistri\0" "vpcmpistrm\0" "vpcmpq\0" "vpcmpub\0" "vpcmpud\0" "vpcmpuq\0" "vpcmpuw\0" "vpcmpw\0"
2956 "vpcomb\0" "vpcomd\0" "vpcompressb\0" "vpcompressd\0" "vpcompressq\0" "vpcompressw\0" "vpcomq\0" "vpcomub\0"
2957 "vpcomud\0" "vpcomuq\0" "vpcomuw\0" "vpcomw\0" "vpconflictd\0" "vpconflictq\0" "vpdpbusd\0" "vpdpbusds\0"
2958 "vpdpwssd\0" "vpdpwssds\0" "vperm2f128\0" "vperm2i128\0" "vpermb\0" "vpermd\0" "vpermi2b\0" "vpermi2d\0"
2959 "vpermi2pd\0" "vpermi2ps\0" "vpermi2q\0" "vpermi2w\0" "vpermil2pd\0" "vpermil2ps\0" "vpermilpd\0" "vpermilps\0"
2960 "vpermpd\0" "vpermps\0" "vpermq\0" "vpermt2b\0" "vpermt2d\0" "vpermt2pd\0" "vpermt2ps\0" "vpermt2q\0" "vpermt2w\0"
2961 "vpermw\0" "vpexpandb\0" "vpexpandd\0" "vpexpandq\0" "vpexpandw\0" "vpextrb\0" "vpextrd\0" "vpextrq\0" "vpextrw\0"
2962 "vpgatherdd\0" "vpgatherdq\0" "vpgatherqd\0" "vpgatherqq\0" "vphaddbd\0" "vphaddbq\0" "vphaddbw\0" "vphaddd\0"
2963 "vphadddq\0" "vphaddsw\0" "vphaddubd\0" "vphaddubq\0" "vphaddubw\0" "vphaddudq\0" "vphadduwd\0" "vphadduwq\0"
2964 "vphaddw\0" "vphaddwd\0" "vphaddwq\0" "vphminposuw\0" "vphsubbw\0" "vphsubd\0" "vphsubdq\0" "vphsubsw\0" "vphsubw\0"
2965 "vphsubwd\0" "vpinsrb\0" "vpinsrd\0" "vpinsrq\0" "vpinsrw\0" "vplzcntd\0" "vplzcntq\0" "vpmacsdd\0" "vpmacsdqh\0"
2966 "vpmacsdql\0" "vpmacssdd\0" "vpmacssdqh\0" "vpmacssdql\0" "vpmacsswd\0" "vpmacssww\0" "vpmacswd\0" "vpmacsww\0"
2967 "vpmadcsswd\0" "vpmadcswd\0" "vpmadd52huq\0" "vpmadd52luq\0" "vpmaddubsw\0" "vpmaddwd\0" "vpmaskmovd\0"
2968 "vpmaskmovq\0" "vpmaxsb\0" "vpmaxsd\0" "vpmaxsq\0" "vpmaxsw\0" "vpmaxub\0" "vpmaxud\0" "vpmaxuq\0" "vpmaxuw\0"
2969 "vpminsb\0" "vpminsd\0" "vpminsq\0" "vpminsw\0" "vpminub\0" "vpminud\0" "vpminuq\0" "vpminuw\0" "vpmovb2m\0"
2970 "vpmovd2m\0" "vpmovdb\0" "vpmovdw\0" "vpmovm2b\0" "vpmovm2d\0" "vpmovm2q\0" "vpmovm2w\0" "vpmovmskb\0" "vpmovq2m\0"
2971 "vpmovqb\0" "vpmovqd\0" "vpmovqw\0" "vpmovsdb\0" "vpmovsdw\0" "vpmovsqb\0" "vpmovsqd\0" "vpmovsqw\0" "vpmovswb\0"
2972 "vpmovsxbd\0" "vpmovsxbq\0" "vpmovsxbw\0" "vpmovsxdq\0" "vpmovsxwd\0" "vpmovsxwq\0" "vpmovusdb\0" "vpmovusdw\0"
2973 "vpmovusqb\0" "vpmovusqd\0" "vpmovusqw\0" "vpmovuswb\0" "vpmovw2m\0" "vpmovwb\0" "vpmovzxbd\0" "vpmovzxbq\0"
2974 "vpmovzxbw\0" "vpmovzxdq\0" "vpmovzxwd\0" "vpmovzxwq\0" "vpmuldq\0" "vpmulhrsw\0" "vpmulhuw\0" "vpmulhw\0"
2975 "vpmulld\0" "vpmullq\0" "vpmullw\0" "vpmultishiftqb\0" "vpmuludq\0" "vpopcntb\0" "vpopcntd\0" "vpopcntq\0"
2976 "vpopcntw\0" "vpor\0" "vpord\0" "vporq\0" "vpperm\0" "vprold\0" "vprolq\0" "vprolvd\0" "vprolvq\0" "vprord\0"
2977 "vprorq\0" "vprorvd\0" "vprorvq\0" "vprotb\0" "vprotd\0" "vprotq\0" "vprotw\0" "vpsadbw\0" "vpscatterdd\0"
2978 "vpscatterdq\0" "vpscatterqd\0" "vpscatterqq\0" "vpshab\0" "vpshad\0" "vpshaq\0" "vpshaw\0" "vpshlb\0" "vpshld\0"
2979 "vpshldd\0" "vpshldq\0" "vpshldvd\0" "vpshldvq\0" "vpshldvw\0" "vpshldw\0" "vpshlq\0" "vpshlw\0" "vpshrdd\0"
2980 "vpshrdq\0" "vpshrdvd\0" "vpshrdvq\0" "vpshrdvw\0" "vpshrdw\0" "vpshufb\0" "vpshufbitqmb\0" "vpshufd\0" "vpshufhw\0"
2981 "vpshuflw\0" "vpsignb\0" "vpsignd\0" "vpsignw\0" "vpslld\0" "vpslldq\0" "vpsllq\0" "vpsllvd\0" "vpsllvq\0"
2982 "vpsllvw\0" "vpsllw\0" "vpsrad\0" "vpsraq\0" "vpsravd\0" "vpsravq\0" "vpsravw\0" "vpsraw\0" "vpsrld\0" "vpsrldq\0"
2983 "vpsrlq\0" "vpsrlvd\0" "vpsrlvq\0" "vpsrlvw\0" "vpsrlw\0" "vpsubb\0" "vpsubd\0" "vpsubq\0" "vpsubsb\0" "vpsubsw\0"
2984 "vpsubusb\0" "vpsubusw\0" "vpsubw\0" "vpternlogd\0" "vpternlogq\0" "vptest\0" "vptestmb\0" "vptestmd\0" "vptestmq\0"
2985 "vptestmw\0" "vptestnmb\0" "vptestnmd\0" "vptestnmq\0" "vptestnmw\0" "vpunpckhbw\0" "vpunpckhdq\0" "vpunpckhqdq\0"
2986 "vpunpckhwd\0" "vpunpcklbw\0" "vpunpckldq\0" "vpunpcklqdq\0" "vpunpcklwd\0" "vpxor\0" "vpxord\0" "vpxorq\0"
2987 "vrangepd\0" "vrangeps\0" "vrangesd\0" "vrangess\0" "vrcp14pd\0" "vrcp14ps\0" "vrcp14sd\0" "vrcp14ss\0" "vrcp28pd\0"
2988 "vrcp28ps\0" "vrcp28sd\0" "vrcp28ss\0" "vrcpph\0" "vrcpps\0" "vrcpsh\0" "vrcpss\0" "vreducepd\0" "vreduceph\0"
2989 "vreduceps\0" "vreducesd\0" "vreducesh\0" "vreducess\0" "vrndscalepd\0" "vrndscaleph\0" "vrndscaleps\0"
2990 "vrndscalesd\0" "vrndscalesh\0" "vrndscaless\0" "vroundpd\0" "vroundps\0" "vroundsd\0" "vroundss\0" "vrsqrt14pd\0"
2991 "vrsqrt14ps\0" "vrsqrt14sd\0" "vrsqrt14ss\0" "vrsqrt28pd\0" "vrsqrt28ps\0" "vrsqrt28sd\0" "vrsqrt28ss\0" "vrsqrtph\0"
2992 "vrsqrtps\0" "vrsqrtsh\0" "vrsqrtss\0" "vscalefpd\0" "vscalefph\0" "vscalefps\0" "vscalefsd\0" "vscalefsh\0"
2993 "vscalefss\0" "vscatterdpd\0" "vscatterdps\0" "vscatterpf0dpd\0" "vscatterpf0dps\0" "vscatterpf0qpd\0"
2994 "vscatterpf0qps\0" "vscatterpf1dpd\0" "vscatterpf1dps\0" "vscatterpf1qpd\0" "vscatterpf1qps\0" "vscatterqpd\0"
2995 "vscatterqps\0" "vshuff32x4\0" "vshuff64x2\0" "vshufi32x4\0" "vshufi64x2\0" "vshufpd\0" "vshufps\0" "vsqrtpd\0"
2996 "vsqrtph\0" "vsqrtps\0" "vsqrtsd\0" "vsqrtsh\0" "vsqrtss\0" "vstmxcsr\0" "vsubpd\0" "vsubph\0" "vsubps\0" "vsubsd\0"
2997 "vsubsh\0" "vsubss\0" "vtestpd\0" "vtestps\0" "vucomisd\0" "vucomish\0" "vucomiss\0" "vunpckhpd\0" "vunpckhps\0"
2998 "vunpcklpd\0" "vunpcklps\0" "vxorpd\0" "vxorps\0" "vzeroall\0" "vzeroupper\0" "wbinvd\0" "wbnoinvd\0" "wrfsbase\0"
2999 "wrgsbase\0" "wrmsr\0" "wrssd\0" "wrssq\0" "wrussd\0" "wrussq\0" "xabort\0" "xadd\0" "xbegin\0" "xend\0" "xgetbv\0"
3000 "xlatb\0" "xresldtrk\0" "xrstors\0" "xrstors64\0" "xsavec\0" "xsavec64\0" "xsaveopt\0" "xsaveopt64\0" "xsaves\0"
3001 "xsaves64\0" "xsetbv\0" "xsusldtrk\0" "xtest";
2839 const uint32_t InstDB::_instNameIndexTable[] = {
2840 0x80000000, // Small ''.
2841 0x80000421, // Small 'aaa'.
2842 0x80001021, // Small 'aad'.
2843 0x80003421, // Small 'aam'.
2844 0x80004C21, // Small 'aas'.
2845 0x80000C81, // Small 'adc'.
2846 0x800C0C81, // Small 'adcx'.
2847 0x80001081, // Small 'add'.
2848 0x80481081, // Small 'addpd'.
2849 0x81381081, // Small 'addps'.
2850 0x80499081, // Small 'addsd'.
2851 0x81399081, // Small 'addss'.
2852 0x20876079, // Large 'addsub|pd'.
2853 0x20706079, // Large 'addsub|ps'.
2854 0x800C3C81, // Small 'adox'.
2855 0x86524CA1, // Small 'aesdec'.
2856 0x3028718D, // Large 'aesdecl|ast'.
2857 0x86E2CCA1, // Small 'aesenc'.
2858 0x30287195, // Large 'aesencl|ast'.
2859 0x86D4CCA1, // Small 'aesimc'.
2860 0x0000F012, // Large 'aeskeygenassist'.
2861 0x800011C1, // Small 'and'.
2862 0x800711C1, // Small 'andn'.
2863 0x890711C1, // Small 'andnpd'.
2864 0xA70711C1, // Small 'andnps'.
2865 0x804811C1, // Small 'andpd'.
2866 0x813811C1, // Small 'andps'.
2867 0x80064241, // Small 'arpl'.
2868 0x812A60A2, // Small 'bextr'.
2869 0x261B5630, // Large 'blcfi|ll'.
2870 0x80048D82, // Small 'blci'.
2871 0x80348D82, // Small 'blcic'.
2872 0x97368D82, // Small 'blcmsk'.
2873 0x80098D82, // Small 'blcs'.
2874 0x208753E4, // Large 'blend|pd'.
2875 0x207053E4, // Large 'blend|ps'.
2876 0x33EA53E4, // Large 'blend|vpd'.
2877 0x315053E4, // Large 'blend|vps'.
2878 0x261B5635, // Large 'blsfi|ll'.
2879 0x8004CD82, // Small 'blsi'.
2880 0x8034CD82, // Small 'blsic'.
2881 0x9736CD82, // Small 'blsmsk'.
2882 0x80094D82, // Small 'blsr'.
2883 0x80C191C2, // Small 'bndcl'.
2884 0x80E191C2, // Small 'bndcn'.
2885 0x815191C2, // Small 'bndcu'.
2886 0xB04611C2, // Small 'bndldx'.
2887 0x80B691C2, // Small 'bndmk'.
2888 0xACF691C2, // Small 'bndmov'.
2889 0xB14991C2, // Small 'bndstx'.
2890 0x804755E2, // Small 'bound'.
2891 0x80001A62, // Small 'bsf'.
2892 0x80004A62, // Small 'bsr'.
2893 0x8100DE62, // Small 'bswap'.
2894 0x80000282, // Small 'bt'.
2895 0x80000E82, // Small 'btc'.
2896 0x80004A82, // Small 'btr'.
2897 0x80004E82, // Small 'bts'.
2898 0x8004A342, // Small 'bzhi'.
2899 0x80063023, // Small 'call'.
2900 0x80005C43, // Small 'cbw'.
2901 0x80004483, // Small 'cdq'.
2902 0x8002C483, // Small 'cdqe'.
2903 0x80018583, // Small 'clac'.
2904 0x80000D83, // Small 'clc'.
2905 0x80001183, // Small 'cld'.
2906 0x20BF6503, // Large 'cldemo|te'.
2907 0x0000724D, // Large 'clflush'.
2908 0x1020924D, // Large 'clflushop|t'.
2909 0x80049D83, // Small 'clgi'.
2910 0x80002583, // Small 'cli'.
2911 0x10177509, // Large 'clrssbs|y'.
2912 0x8009D183, // Small 'clts'.
2913 0x8004D583, // Small 'clui'.
2914 0x80015D83, // Small 'clwb'.
2915 0x9F22E983, // Small 'clzero'.
2916 0x80000DA3, // Small 'cmc'.
2917 0x801B3DA3, // Small 'cmova'.
2918 0x8A1B3DA3, // Small 'cmovae'.
2919 0x802B3DA3, // Small 'cmovb'.
2920 0x8A2B3DA3, // Small 'cmovbe'.
2921 0x803B3DA3, // Small 'cmovc'.
2922 0x805B3DA3, // Small 'cmove'.
2923 0x807B3DA3, // Small 'cmovg'.
2924 0x8A7B3DA3, // Small 'cmovge'.
2925 0x80CB3DA3, // Small 'cmovl'.
2926 0x8ACB3DA3, // Small 'cmovle'.
2927 0x82EB3DA3, // Small 'cmovna'.
2928 0x20125516, // Large 'cmovn|ae'.
2929 0x84EB3DA3, // Small 'cmovnb'.
2930 0x100B6516, // Large 'cmovnb|e'.
2931 0x86EB3DA3, // Small 'cmovnc'.
2932 0x8AEB3DA3, // Small 'cmovne'.
2933 0x8EEB3DA3, // Small 'cmovng'.
2934 0x20185516, // Large 'cmovn|ge'.
2935 0x98EB3DA3, // Small 'cmovnl'.
2936 0x217C5516, // Large 'cmovn|le'.
2937 0x9EEB3DA3, // Small 'cmovno'.
2938 0xA0EB3DA3, // Small 'cmovnp'.
2939 0xA6EB3DA3, // Small 'cmovns'.
2940 0xB4EB3DA3, // Small 'cmovnz'.
2941 0x80FB3DA3, // Small 'cmovo'.
2942 0x810B3DA3, // Small 'cmovp'.
2943 0x8B0B3DA3, // Small 'cmovpe'.
2944 0x9F0B3DA3, // Small 'cmovpo'.
2945 0x813B3DA3, // Small 'cmovs'.
2946 0x81AB3DA3, // Small 'cmovz'.
2947 0x800041A3, // Small 'cmp'.
2948 0x804841A3, // Small 'cmppd'.
2949 0x813841A3, // Small 'cmpps'.
2950 0x8009C1A3, // Small 'cmps'.
2951 0x8049C1A3, // Small 'cmpsd'.
2952 0x8139C1A3, // Small 'cmpss'.
2953 0x00007256, // Large 'cmpxchg'.
2954 0x10109256, // Large 'cmpxchg16|b'.
2955 0x23837256, // Large 'cmpxchg|8b'.
2956 0x8934B5E3, // Small 'comisd'.
2957 0xA734B5E3, // Small 'comiss'.
2958 0x8044D603, // Small 'cpuid'.
2959 0x80003E23, // Small 'cqo'.
2960 0x81DF0E43, // Small 'crc32'.
2961 0x208763EE, // Large 'cvtdq2|pd'.
2962 0x207063EE, // Large 'cvtdq2|ps'.
2963 0x20C5627F, // Large 'cvtpd2|dq'.
2964 0x21E2627F, // Large 'cvtpd2|pi'.
2965 0x2070627F, // Large 'cvtpd2|ps'.
2966 0x34875510, // Large 'cvtpi|2pd'.
2967 0x306F5510, // Large 'cvtpi|2ps'.
2968 0x20C56293, // Large 'cvtps2|dq'.
2969 0x10267293, // Large 'cvtps2p|d'.
2970 0x10097293, // Large 'cvtps2p|i'.
2971 0x201D629C, // Large 'cvtsd2|si'.
2972 0x201C629C, // Large 'cvtsd2|ss'.
2973 0x210E63FE, // Large 'cvtsi2|sd'.
2974 0x201C63FE, // Large 'cvtsi2|ss'.
2975 0x210E62AC, // Large 'cvtss2|sd'.
2976 0x201D62AC, // Large 'cvtss2|si'.
2977 0x20C571A6, // Large 'cvttpd2|dq'.
2978 0x21E271A6, // Large 'cvttpd2|pi'.
2979 0x20C571BA, // Large 'cvttps2|dq'.
2980 0x21E271BA, // Large 'cvttps2|pi'.
2981 0x201D71C3, // Large 'cvttsd2|si'.
2982 0x201D71D5, // Large 'cvttss2|si'.
2983 0x800012E3, // Small 'cwd'.
2984 0x800292E3, // Small 'cwde'.
2985 0x80000424, // Small 'daa'.
2986 0x80004C24, // Small 'das'.
2987 0x80000CA4, // Small 'dec'.
2988 0x80005924, // Small 'div'.
2989 0x80485924, // Small 'divpd'.
2990 0x81385924, // Small 'divps'.
2991 0x8049D924, // Small 'divsd'.
2992 0x8139D924, // Small 'divss'.
2993 0x80024204, // Small 'dppd'.
2994 0x8009C204, // Small 'dpps'.
2995 0x8009B5A5, // Small 'emms'.
2996 0x202C563A, // Large 'endbr|32'.
2997 0x2030563A, // Large 'endbr|64'.
2998 0x88D1C5C5, // Small 'enqcmd'.
2999 0x207B563F, // Large 'enqcm|ds'.
3000 0x8122D1C5, // Small 'enter'.
3001 0x207070F0, // Large 'extract|ps'.
3002 0x81195305, // Small 'extrq'.
3003 0x81C6E3A6, // Small 'f2xm1'.
3004 0x80098826, // Small 'fabs'.
3005 0x80021026, // Small 'fadd'.
3006 0x81021026, // Small 'faddp'.
3007 0x80023046, // Small 'fbld'.
3008 0x810A4C46, // Small 'fbstp'.
3009 0x8009A066, // Small 'fchs'.
3010 0x8182B066, // Small 'fclex'.
3011 0x8567B466, // Small 'fcmovb'.
3012 0x26445515, // Large 'fcmov|be'.
3013 0x8B67B466, // Small 'fcmove'.
3014 0x00007515, // Large 'fcmovnb'.
3015 0x100B7515, // Large 'fcmovnb|e'.
3016 0x100B6515, // Large 'fcmovn|e'.
3017 0x107D6515, // Large 'fcmovn|u'.
3018 0xAB67B466, // Small 'fcmovu'.
3019 0x8006BC66, // Small 'fcom'.
3020 0x8096BC66, // Small 'fcomi'.
3021 0xA096BC66, // Small 'fcomip'.
3022 0x8106BC66, // Small 'fcomp'.
3023 0xA106BC66, // Small 'fcompp'.
3024 0x8009BC66, // Small 'fcos'.
3025 0x21A95646, // Large 'fdecs|tp'.
3026 0x800B2486, // Small 'fdiv'.
3027 0x810B2486, // Small 'fdivp'.
3028 0x812B2486, // Small 'fdivr'.
3029 0xA12B2486, // Small 'fdivrp'.
3030 0x8136B4A6, // Small 'femms'.
3031 0x8052C8C6, // Small 'ffree'.
3032 0x80420526, // Small 'fiadd'.
3033 0x80D78D26, // Small 'ficom'.
3034 0xA0D78D26, // Small 'ficomp'.
3035 0x81649126, // Small 'fidiv'.
3036 0xA5649126, // Small 'fidivr'.
3037 0x80023126, // Small 'fild'.
3038 0x80CAB526, // Small 'fimul'.
3039 0x21A9564B, // Large 'fincs|tp'.
3040 0x8144B926, // Small 'finit'.
3041 0x800A4D26, // Small 'fist'.
3042 0x810A4D26, // Small 'fistp'.
3043 0xA14A4D26, // Small 'fisttp'.
3044 0x802ACD26, // Small 'fisub'.
3045 0xA42ACD26, // Small 'fisubr'.
3046 0x80001186, // Small 'fld'.
3047 0x800E1186, // Small 'fld1'.
3048 0x81719186, // Small 'fldcw'.
3049 0xACE29186, // Small 'fldenv'.
3050 0x8BD61186, // Small 'fldl2e'.
3051 0xA9D61186, // Small 'fldl2t'.
3052 0xBA761186, // Small 'fldlg2'.
3053 0xBAE61186, // Small 'fldln2'.
3054 0x80981186, // Small 'fldpi'.
3055 0x800D1186, // Small 'fldz'.
3056 0x800655A6, // Small 'fmul'.
3057 0x810655A6, // Small 'fmulp'.
3058 0xB0560DC6, // Small 'fnclex'.
3059 0xA89725C6, // Small 'fninit'.
3060 0x80083DC6, // Small 'fnop'.
3061 0x8B60CDC6, // Small 'fnsave'.
3062 0xAE3A4DC6, // Small 'fnstcw'.
3063 0x200D5650, // Large 'fnste|nv'.
3064 0xAF3A4DC6, // Small 'fnstsw'.
3065 0x9C1A0606, // Small 'fpatan'.
3066 0x80D2CA06, // Small 'fprem'.
3067 0xB8D2CA06, // Small 'fprem1'.
3068 0x80E0D206, // Small 'fptan'.
3069 0x31054655, // Large 'frnd|int'.
3070 0xA4FA4E46, // Small 'frstor'.
3071 0x805B0666, // Small 'fsave'.
3072 0x8AC08E66, // Small 'fscale'.
3073 0x80072666, // Small 'fsin'.
3074 0x221D5659, // Large 'fsinc|os'.
3075 0x81494666, // Small 'fsqrt'.
3076 0x80005266, // Small 'fst'.
3077 0x8171D266, // Small 'fstcw'.
3078 0xACE2D266, // Small 'fstenv'.
3079 0x80085266, // Small 'fstp'.
3080 0x8179D266, // Small 'fstsw'.
3081 0x80015666, // Small 'fsub'.
3082 0x81015666, // Small 'fsubp'.
3083 0x81215666, // Small 'fsubr'.
3084 0xA1215666, // Small 'fsubrp'.
3085 0x800A4E86, // Small 'ftst'.
3086 0x80D78EA6, // Small 'fucom'.
3087 0x92D78EA6, // Small 'fucomi'.
3088 0x2543565E, // Large 'fucom|ip'.
3089 0xA0D78EA6, // Small 'fucomp'.
3090 0x2663565E, // Large 'fucom|pp'.
3091 0x814486E6, // Small 'fwait'.
3092 0x80068706, // Small 'fxam'.
3093 0x80040F06, // Small 'fxch'.
3094 0x00007385, // Large 'fxrstor'.
3095 0x20307385, // Large 'fxrstor|64'.
3096 0x8B60CF06, // Small 'fxsave'.
3097 0x2030651C, // Large 'fxsave|64'.
3098 0x50F22385, // Large 'fx|tract'.
3099 0x818EB326, // Small 'fyl2x'.
3100 0x26025665, // Large 'fyl2x|p1'.
3101 0x8659D0A7, // Small 'getsec'.
3102 0x1010F001, // Large 'gf2p8affineinvq|b'.
3103 0x200FB001, // Large 'gf2p8affine|qb'.
3104 0x42E25001, // Large 'gf2p8|mulb'.
3105 0x89021028, // Small 'haddpd'.
3106 0xA7021028, // Small 'haddps'.
3107 0x80005188, // Small 'hlt'.
3108 0xA8599648, // Small 'hreset'.
3109 0x89015668, // Small 'hsubpd'.
3110 0xA7015668, // Small 'hsubps'.
3111 0x800B2489, // Small 'idiv'.
3112 0x800655A9, // Small 'imul'.
3113 0x800001C9, // Small 'in'.
3114 0x80000DC9, // Small 'inc'.
3115 0x2087566A, // Large 'incss|pd'.
3116 0x266F566A, // Large 'incss|pq'.
3117 0x80004DC9, // Small 'ins'.
3118 0x20706149, // Large 'insert|ps'.
3119 0x100F6149, // Large 'insert|q'.
3120 0x800051C9, // Small 'int'.
3121 0x800F51C9, // Small 'int3'.
3122 0x8007D1C9, // Small 'into'.
3123 0x800259C9, // Small 'invd'.
3124 0xA902D9C9, // Small 'invept'.
3125 0x8F0659C9, // Small 'invlpg'.
3126 0x33164671, // Large 'invl|pga'.
3127 0x23A05675, // Large 'invpc|id'.
3128 0x23A0567A, // Large 'invvp|id'.
3129 0x800A1649, // Small 'iret'.
3130 0x804A1649, // Small 'iretd'.
3131 0x811A1649, // Small 'iretq'.
3132 0x8000002A, // Small 'ja'.
3133 0x8000142A, // Small 'jae'.
3134 0x8000004A, // Small 'jb'.
3135 0x8000144A, // Small 'jbe'.
3136 0x8000006A, // Small 'jc'.
3137 0x800000AA, // Small 'je'.
3138 0x81AC0CAA, // Small 'jecxz'.
3139 0x800000EA, // Small 'jg'.
3140 0x800014EA, // Small 'jge'.
3141 0x8000018A, // Small 'jl'.
3142 0x8000158A, // Small 'jle'.
3143 0x800041AA, // Small 'jmp'.
3144 0x800005CA, // Small 'jna'.
3145 0x800285CA, // Small 'jnae'.
3146 0x800009CA, // Small 'jnb'.
3147 0x800289CA, // Small 'jnbe'.
3148 0x80000DCA, // Small 'jnc'.
3149 0x800015CA, // Small 'jne'.
3150 0x80001DCA, // Small 'jng'.
3151 0x80029DCA, // Small 'jnge'.
3152 0x800031CA, // Small 'jnl'.
3153 0x8002B1CA, // Small 'jnle'.
3154 0x80003DCA, // Small 'jno'.
3155 0x800041CA, // Small 'jnp'.
3156 0x80004DCA, // Small 'jns'.
3157 0x800069CA, // Small 'jnz'.
3158 0x800001EA, // Small 'jo'.
3159 0x8000020A, // Small 'jp'.
3160 0x8000160A, // Small 'jpe'.
3161 0x80003E0A, // Small 'jpo'.
3162 0x8000026A, // Small 'js'.
3163 0x8000034A, // Small 'jz'.
3164 0x8022102B, // Small 'kaddb'.
3165 0x8042102B, // Small 'kaddd'.
3166 0x8112102B, // Small 'kaddq'.
3167 0x8172102B, // Small 'kaddw'.
3168 0x8022382B, // Small 'kandb'.
3169 0x8042382B, // Small 'kandd'.
3170 0x84E2382B, // Small 'kandnb'.
3171 0x88E2382B, // Small 'kandnd'.
3172 0xA2E2382B, // Small 'kandnq'.
3173 0xAEE2382B, // Small 'kandnw'.
3174 0x8112382B, // Small 'kandq'.
3175 0x8172382B, // Small 'kandw'.
3176 0x802B3DAB, // Small 'kmovb'.
3177 0x804B3DAB, // Small 'kmovd'.
3178 0x811B3DAB, // Small 'kmovq'.
3179 0x817B3DAB, // Small 'kmovw'.
3180 0x802A3DCB, // Small 'knotb'.
3181 0x804A3DCB, // Small 'knotd'.
3182 0x811A3DCB, // Small 'knotq'.
3183 0x817A3DCB, // Small 'knotw'.
3184 0x800149EB, // Small 'korb'.
3185 0x800249EB, // Small 'kord'.
3186 0x8008C9EB, // Small 'korq'.
3187 0x10107522, // Large 'kortest|b'.
3188 0x10267522, // Large 'kortest|d'.
3189 0x100F7522, // Large 'kortest|q'.
3190 0x105F7522, // Large 'kortest|w'.
3191 0x800BC9EB, // Small 'korw'.
3192 0x22E46529, // Large 'kshift|lb'.
3193 0x234B6529, // Large 'kshift|ld'.
3194 0x22406529, // Large 'kshift|lq'.
3195 0x234E6529, // Large 'kshift|lw'.
3196 0x252F6529, // Large 'kshift|rb'.
3197 0x10267529, // Large 'kshiftr|d'.
3198 0x100F7529, // Large 'kshiftr|q'.
3199 0x105F7529, // Large 'kshiftr|w'.
3200 0x8549968B, // Small 'ktestb'.
3201 0x8949968B, // Small 'ktestd'.
3202 0xA349968B, // Small 'ktestq'.
3203 0xAF49968B, // Small 'ktestw'.
3204 0x23446531, // Large 'kunpck|bw'.
3205 0x20C56531, // Large 'kunpck|dq'.
3206 0x23466531, // Large 'kunpck|wd'.
3207 0x8527BB0B, // Small 'kxnorb'.
3208 0x8927BB0B, // Small 'kxnord'.
3209 0xA327BB0B, // Small 'kxnorq'.
3210 0xAF27BB0B, // Small 'kxnorw'.
3211 0x80293F0B, // Small 'kxorb'.
3212 0x80493F0B, // Small 'kxord'.
3213 0x81193F0B, // Small 'kxorq'.
3214 0x81793F0B, // Small 'kxorw'.
3215 0x8003202C, // Small 'lahf'.
3216 0x8000482C, // Small 'lar'.
3217 0x80C6046C, // Small 'lcall'.
3218 0x8158908C, // Small 'lddqu'.
3219 0x1023657B, // Large 'ldmxcs|r'.
3220 0x80004C8C, // Small 'lds'.
3221 0x1001838C, // Large 'ldtilecf|g'.
3222 0x800004AC, // Small 'lea'.
3223 0x805B04AC, // Small 'leave'.
3224 0x80004CAC, // Small 'les'.
3225 0x8A3714CC, // Small 'lfence'.
3226 0x80004CCC, // Small 'lfs'.
3227 0x800A10EC, // Small 'lgdt'.
3228 0x80004CEC, // Small 'lgs'.
3229 0x800A112C, // Small 'lidt'.
3230 0x8008354C, // Small 'ljmp'.
3231 0x800A118C, // Small 'lldt'.
3232 0x84385D8C, // Small 'llwpcb'.
3233 0x800BCDAC, // Small 'lmsw'.
3234 0x800991EC, // Small 'lods'.
3235 0x80083DEC, // Small 'loop'.
3236 0x80583DEC, // Small 'loope'.
3237 0x8AE83DEC, // Small 'loopne'.
3238 0x8000326C, // Small 'lsl'.
3239 0x80004E6C, // Small 'lss'.
3240 0x80004A8C, // Small 'ltr'.
3241 0xA6E4C2EC, // Small 'lwpins'.
3242 0x981B42EC, // Small 'lwpval'.
3243 0x81470F4C, // Small 'lzcnt'.
3244 0x107D91F9, // Large 'maskmovdq|u'.
3245 0x100F71F9, // Large 'maskmov|q'.
3246 0x8048602D, // Small 'maxpd'.
3247 0x8138602D, // Small 'maxps'.
3248 0x8049E02D, // Small 'maxsd'.
3249 0x8139E02D, // Small 'maxss'.
3250 0x2157567F, // Large 'mcomm|it'.
3251 0x8A3714CD, // Small 'mfence'.
3252 0x8048392D, // Small 'minpd'.
3253 0x8138392D, // Small 'minps'.
3254 0x8049B92D, // Small 'minsd'.
3255 0x8139B92D, // Small 'minss'.
3256 0x00007537, // Large 'monitor'.
3257 0x102E7537, // Large 'monitor|x'.
3258 0x800059ED, // Small 'mov'.
3259 0xA620D9ED, // Small 'movabs'.
3260 0x8900D9ED, // Small 'movapd'.
3261 0xA700D9ED, // Small 'movaps'.
3262 0x805159ED, // Small 'movbe'.
3263 0x800259ED, // Small 'movd'.
3264 0x358741FD, // Large 'movd|dup'.
3265 0x10108394, // Large 'movdir64|b'.
3266 0x10096394, // Large 'movdir|i'.
3267 0x25BD51FD, // Large 'movdq|2q'.
3268 0x831259ED, // Small 'movdqa'.
3269 0xAB1259ED, // Small 'movdqu'.
3270 0x34ED458D, // Large 'movh|lps'.
3271 0x890459ED, // Small 'movhpd'.
3272 0xA70459ED, // Small 'movhps'.
3273 0x20705592, // Large 'movlh|ps'.
3274 0x890659ED, // Small 'movlpd'.
3275 0xA70659ED, // Small 'movlps'.
3276 0x20876443, // Large 'movmsk|pd'.
3277 0x20706443, // Large 'movmsk|ps'.
3278 0x20C5544A, // Large 'movnt|dq'.
3279 0x3436544A, // Large 'movnt|dqa'.
3280 0x934759ED, // Small 'movnti'.
3281 0x2087544A, // Large 'movnt|pd'.
3282 0x2070544A, // Large 'movnt|ps'.
3283 0xA34759ED, // Small 'movntq'.
3284 0x210E544A, // Large 'movnt|sd'.
3285 0x201C544A, // Large 'movnt|ss'.
3286 0x8008D9ED, // Small 'movq'.
3287 0x20C55684, // Large 'movq2|dq'.
3288 0x8009D9ED, // Small 'movs'.
3289 0x8049D9ED, // Small 'movsd'.
3290 0x21E16450, // Large 'movshd|up'.
3291 0x21E16457, // Large 'movsld|up'.
3292 0x8139D9ED, // Small 'movss'.
3293 0x8189D9ED, // Small 'movsx'.
3294 0x8989D9ED, // Small 'movsxd'.
3295 0x890AD9ED, // Small 'movupd'.
3296 0xA70AD9ED, // Small 'movups'.
3297 0x818D59ED, // Small 'movzx'.
3298 0x23445598, // Large 'mpsad|bw'.
3299 0x800032AD, // Small 'mul'.
3300 0x804832AD, // Small 'mulpd'.
3301 0x813832AD, // Small 'mulps'.
3302 0x8049B2AD, // Small 'mulsd'.
3303 0x8139B2AD, // Small 'mulss'.
3304 0x800C32AD, // Small 'mulx'.
3305 0x814486ED, // Small 'mwait'.
3306 0xB14486ED, // Small 'mwaitx'.
3307 0x80001CAE, // Small 'neg'.
3308 0x800041EE, // Small 'nop'.
3309 0x800051EE, // Small 'not'.
3310 0x8000024F, // Small 'or'.
3311 0x8002424F, // Small 'orpd'.
3312 0x8009C24F, // Small 'orps'.
3313 0x800052AF, // Small 'out'.
3314 0x8009D2AF, // Small 'outs'.
3315 0x80298830, // Small 'pabsb'.
3316 0x80498830, // Small 'pabsd'.
3317 0x81798830, // Small 'pabsw'.
3318 0x0000845E, // Large 'packssdw'.
3319 0x2465645E, // Large 'packss|wb'.
3320 0x24646468, // Large 'packus|dw'.
3321 0x00008468, // Large 'packuswb'.
3322 0x80221030, // Small 'paddb'.
3323 0x80421030, // Small 'paddd'.
3324 0x81121030, // Small 'paddq'.
3325 0x85321030, // Small 'paddsb'.
3326 0xAF321030, // Small 'paddsw'.
3327 0x250D55A5, // Large 'paddu|sb'.
3328 0x232D55A5, // Large 'paddu|sw'.
3329 0x81721030, // Small 'paddw'.
3330 0x102365AB, // Large 'palign|r'.
3331 0x80023830, // Small 'pand'.
3332 0x80E23830, // Small 'pandn'.
3333 0x8059D430, // Small 'pause'.
3334 0x8023D830, // Small 'pavgb'.
3335 0x250D5689, // Large 'pavgu|sb'.
3336 0x8173D830, // Small 'pavgw'.
3337 0x20216471, // Large 'pblend|vb'.
3338 0x105F6471, // Large 'pblend|w'.
3339 0x424052EF, // Large 'pclmu|lqdq'.
3340 0x200F52F5, // Large 'pcmpe|qb'.
3341 0x223552F5, // Large 'pcmpe|qd'.
3342 0x21AE52F5, // Large 'pcmpe|qq'.
3343 0x24BB52F5, // Large 'pcmpe|qw'.
3344 0x100982F5, // Large 'pcmpestr|i'.
3345 0x105C82F5, // Large 'pcmpestr|m'.
3346 0x35B14255, // Large 'pcmp|gtb'.
3347 0x35B44255, // Large 'pcmp|gtd'.
3348 0x35B74255, // Large 'pcmp|gtq'.
3349 0x35BA4255, // Large 'pcmp|gtw'.
3350 0x100982FE, // Large 'pcmpistr|i'.
3351 0x105C82FE, // Large 'pcmpistr|m'.
3352 0x25AE520D, // Large 'pconf|ig'.
3353 0x80081490, // Small 'pdep'.
3354 0x800A60B0, // Small 'pext'.
3355 0x852A60B0, // Small 'pextrb'.
3356 0x892A60B0, // Small 'pextrd'.
3357 0xA32A60B0, // Small 'pextrq'.
3358 0xAF2A60B0, // Small 'pextrw'.
3359 0x8044F4D0, // Small 'pf2id'.
3360 0x8174F4D0, // Small 'pf2iw'.
3361 0x803184D0, // Small 'pfacc'.
3362 0x804204D0, // Small 'pfadd'.
3363 0x100F668E, // Large 'pfcmpe|q'.
3364 0x2018568E, // Large 'pfcmp|ge'.
3365 0x25B1568E, // Large 'pfcmp|gt'.
3366 0x8180B4D0, // Small 'pfmax'.
3367 0x80E4B4D0, // Small 'pfmin'.
3368 0x80CAB4D0, // Small 'pfmul'.
3369 0x8630B8D0, // Small 'pfnacc'.
3370 0x24245694, // Large 'pfpna|cc'.
3371 0x8101C8D0, // Small 'pfrcp'.
3372 0x2165653E, // Large 'pfrcpi|t1'.
3373 0x2261653E, // Large 'pfrcpi|t2'.
3374 0xAD01C8D0, // Small 'pfrcpv'.
3375 0x21656544, // Large 'pfrsqi|t1'.
3376 0x214D5544, // Large 'pfrsq|rt'.
3377 0x354A5544, // Large 'pfrsq|rtv'.
3378 0x802ACCD0, // Small 'pfsub'.
3379 0xA42ACCD0, // Small 'pfsubr'.
3380 0x88420510, // Small 'phaddd'.
3381 0x232D5498, // Large 'phadd|sw'.
3382 0xAE420510, // Small 'phaddw'.
3383 0x105F9217, // Large 'phminposu|w'.
3384 0x882ACD10, // Small 'phsubd'.
3385 0x232D55C4, // Large 'phsub|sw'.
3386 0xAE2ACD10, // Small 'phsubw'.
3387 0x80437530, // Small 'pi2fd'.
3388 0x81737530, // Small 'pi2fw'.
3389 0x8529B930, // Small 'pinsrb'.
3390 0x8929B930, // Small 'pinsrd'.
3391 0xA329B930, // Small 'pinsrq'.
3392 0xAF29B930, // Small 'pinsrw'.
3393 0x432F5221, // Large 'pmadd|ubsw'.
3394 0x23465221, // Large 'pmadd|wd'.
3395 0x853C05B0, // Small 'pmaxsb'.
3396 0x893C05B0, // Small 'pmaxsd'.
3397 0xAF3C05B0, // Small 'pmaxsw'.
3398 0x855C05B0, // Small 'pmaxub'.
3399 0x895C05B0, // Small 'pmaxud'.
3400 0xAF5C05B0, // Small 'pmaxuw'.
3401 0x853725B0, // Small 'pminsb'.
3402 0x893725B0, // Small 'pminsd'.
3403 0xAF3725B0, // Small 'pminsw'.
3404 0x855725B0, // Small 'pminub'.
3405 0x895725B0, // Small 'pminud'.
3406 0xAF5725B0, // Small 'pminuw'.
3407 0x101074A5, // Large 'pmovmsk|b'.
3408 0x102674AD, // Large 'pmovsxb|d'.
3409 0x100F74AD, // Large 'pmovsxb|q'.
3410 0x105F74AD, // Large 'pmovsxb|w'.
3411 0x20C564AD, // Large 'pmovsx|dq'.
3412 0x234664AD, // Large 'pmovsx|wd'.
3413 0x249F64AD, // Large 'pmovsx|wq'.
3414 0x102674BE, // Large 'pmovzxb|d'.
3415 0x100F74BE, // Large 'pmovzxb|q'.
3416 0x105F74BE, // Large 'pmovzxb|w'.
3417 0x20C564BE, // Large 'pmovzx|dq'.
3418 0x234664BE, // Large 'pmovzx|wd'.
3419 0x249F64BE, // Large 'pmovzx|wq'.
3420 0xA24655B0, // Small 'pmuldq'.
3421 0x232D64C6, // Large 'pmulhr|sw'.
3422 0x105F64C6, // Large 'pmulhr|w'.
3423 0x23F454C6, // Large 'pmulh|uw'.
3424 0xAE8655B0, // Small 'pmulhw'.
3425 0x88C655B0, // Small 'pmulld'.
3426 0xAEC655B0, // Small 'pmullw'.
3427 0x328F40AF, // Large 'pmul|udq'.
3428 0x800041F0, // Small 'pop'.
3429 0x8000C1F0, // Small 'popa'.
3430 0x8040C1F0, // Small 'popad'.
3431 0xA8E1C1F0, // Small 'popcnt'.
3432 0x800341F0, // Small 'popf'.
3433 0x804341F0, // Small 'popfd'.
3434 0x811341F0, // Small 'popfq'.
3435 0x800049F0, // Small 'por'.
3436 0x0000815A, // Large 'prefetch'.
3437 0x1006A15A, // Large 'prefetchnt|a'.
3438 0x225F815A, // Large 'prefetch|t0'.
3439 0x2165815A, // Large 'prefetch|t1'.
3440 0x2261815A, // Large 'prefetch|t2'.
3441 0x105F815A, // Large 'prefetch|w'.
3442 0x3164815A, // Large 'prefetch|wt1'.
3443 0xAE220670, // Small 'psadbw'.
3444 0x846AA270, // Small 'pshufb'.
3445 0x886AA270, // Small 'pshufd'.
3446 0x25F15151, // Large 'pshuf|hw'.
3447 0x234E5151, // Large 'pshuf|lw'.
3448 0xAE6AA270, // Small 'pshufw'.
3449 0x84E3A670, // Small 'psignb'.
3450 0x88E3A670, // Small 'psignd'.
3451 0xAEE3A670, // Small 'psignw'.
3452 0x80463270, // Small 'pslld'.
3453 0xA2463270, // Small 'pslldq'.
3454 0x81163270, // Small 'psllq'.
3455 0x81763270, // Small 'psllw'.
3456 0x9130B670, // Small 'psmash'.
3457 0x8040CA70, // Small 'psrad'.
3458 0x8170CA70, // Small 'psraw'.
3459 0x80464A70, // Small 'psrld'.
3460 0xA2464A70, // Small 'psrldq'.
3461 0x81164A70, // Small 'psrlq'.
3462 0x81764A70, // Small 'psrlw'.
3463 0x80215670, // Small 'psubb'.
3464 0x80415670, // Small 'psubd'.
3465 0x81115670, // Small 'psubq'.
3466 0x85315670, // Small 'psubsb'.
3467 0xAF315670, // Small 'psubsw'.
3468 0x250D55F4, // Large 'psubu|sb'.
3469 0x232D55F4, // Large 'psubu|sw'.
3470 0x81715670, // Small 'psubw'.
3471 0x8900DE70, // Small 'pswapd'.
3472 0x81499690, // Small 'ptest'.
3473 0x20BF5699, // Large 'ptwri|te'.
3474 0x23447238, // Large 'punpckh|bw'.
3475 0x20C57238, // Large 'punpckh|dq'.
3476 0x20C58238, // Large 'punpckhq|dq'.
3477 0x23467238, // Large 'punpckh|wd'.
3478 0x33486238, // Large 'punpck|lbw'.
3479 0x334B6238, // Large 'punpck|ldq'.
3480 0x42406238, // Large 'punpck|lqdq'.
3481 0x334E6238, // Large 'punpck|lwd'.
3482 0x80044EB0, // Small 'push'.
3483 0x80144EB0, // Small 'pusha'.
3484 0x88144EB0, // Small 'pushad'.
3485 0x80644EB0, // Small 'pushf'.
3486 0x88644EB0, // Small 'pushfd'.
3487 0xA2644EB0, // Small 'pushfq'.
3488 0x20BF739C, // Large 'pvalida|te'.
3489 0x80093F10, // Small 'pxor'.
3490 0x80003072, // Small 'rcl'.
3491 0x81384072, // Small 'rcpps'.
3492 0x8139C072, // Small 'rcpss'.
3493 0x80004872, // Small 'rcr'.
3494 0x33B0554D, // Large 'rdfsb|ase'.
3495 0x33B05552, // Large 'rdgsb|ase'.
3496 0x8129B492, // Small 'rdmsr'.
3497 0x8044C092, // Small 'rdpid'.
3498 0xAB25C092, // Small 'rdpkru'.
3499 0x8036C092, // Small 'rdpmc'.
3500 0x81594092, // Small 'rdpru'.
3501 0x88E0C892, // Small 'rdrand'.
3502 0x8852CC92, // Small 'rdseed'.
3503 0x8909CC92, // Small 'rdsspd'.
3504 0xA309CC92, // Small 'rdsspq'.
3505 0x8039D092, // Small 'rdtsc'.
3506 0xA039D092, // Small 'rdtscp'.
3507 0x800050B2, // Small 'ret'.
3508 0x800350B2, // Small 'retf'.
3509 0x201F73A3, // Large 'rmpadju|st'.
3510 0x20BF73AA, // Large 'rmpupda|te'.
3511 0x800031F2, // Small 'rol'.
3512 0x800049F2, // Small 'ror'.
3513 0x800C49F2, // Small 'rorx'.
3514 0x20875606, // Large 'round|pd'.
3515 0x20705606, // Large 'round|ps'.
3516 0x00007606, // Large 'roundsd'.
3517 0x10146606, // Large 'rounds|s'.
3518 0x80003672, // Small 'rsm'.
3519 0x20705352, // Large 'rsqrt|ps'.
3520 0x201C5352, // Large 'rsqrt|ss'.
3521 0x35575387, // Large 'rstor|ssp'.
3522 0x80032033, // Small 'sahf'.
3523 0x80003033, // Small 'sal'.
3524 0x80004833, // Small 'sar'.
3525 0x800C4833, // Small 'sarx'.
3526 0x1004A167, // Large 'saveprevss|p'.
3527 0x80000853, // Small 'sbb'.
3528 0x80098473, // Small 'scas'.
3529 0x21E2655A, // Large 'sendui|pi'.
3530 0x237573B1, // Large 'seriali|ze'.
3531 0x8000D0B3, // Small 'seta'.
3532 0x8050D0B3, // Small 'setae'.
3533 0x800150B3, // Small 'setb'.
3534 0x805150B3, // Small 'setbe'.
3535 0x8001D0B3, // Small 'setc'.
3536 0x8002D0B3, // Small 'sete'.
3537 0x8003D0B3, // Small 'setg'.
3538 0x8053D0B3, // Small 'setge'.
3539 0x800650B3, // Small 'setl'.
3540 0x805650B3, // Small 'setle'.
3541 0x801750B3, // Small 'setna'.
3542 0x8A1750B3, // Small 'setnae'.
3543 0x802750B3, // Small 'setnb'.
3544 0x8A2750B3, // Small 'setnbe'.
3545 0x803750B3, // Small 'setnc'.
3546 0x805750B3, // Small 'setne'.
3547 0x807750B3, // Small 'setng'.
3548 0x8A7750B3, // Small 'setnge'.
3549 0x80C750B3, // Small 'setnl'.
3550 0x8AC750B3, // Small 'setnle'.
3551 0x80F750B3, // Small 'setno'.
3552 0x810750B3, // Small 'setnp'.
3553 0x813750B3, // Small 'setns'.
3554 0x81A750B3, // Small 'setnz'.
3555 0x8007D0B3, // Small 'seto'.
3556 0x800850B3, // Small 'setp'.
3557 0x805850B3, // Small 'setpe'.
3558 0x80F850B3, // Small 'setpo'.
3559 0x8009D0B3, // Small 'sets'.
3560 0x10177560, // Large 'setssbs|y'.
3561 0x800D50B3, // Small 'setz'.
3562 0x8A3714D3, // Small 'sfence'.
3563 0x800A10F3, // Small 'sgdt'.
3564 0x426343B8, // Large 'sha1|msg1'.
3565 0x426743B8, // Large 'sha1|msg2'.
3566 0x20BF73B8, // Large 'sha1nex|te'.
3567 0x102F83BF, // Large 'sha1rnds|4'.
3568 0x42636171, // Large 'sha256|msg1'.
3569 0x42676171, // Large 'sha256|msg2'.
3570 0x20719171, // Large 'sha256rnd|s2'.
3571 0x80003113, // Small 'shl'.
3572 0x80023113, // Small 'shld'.
3573 0x800C3113, // Small 'shlx'.
3574 0x80004913, // Small 'shr'.
3575 0x80024913, // Small 'shrd'.
3576 0x800C4913, // Small 'shrx'.
3577 0x89035513, // Small 'shufpd'.
3578 0xA7035513, // Small 'shufps'.
3579 0x800A1133, // Small 'sidt'.
3580 0xA8972573, // Small 'skinit'.
3581 0x800A1193, // Small 'sldt'.
3582 0x84385D93, // Small 'slwpcb'.
3583 0x800BCDB3, // Small 'smsw'.
3584 0x890A4A33, // Small 'sqrtpd'.
3585 0xA70A4A33, // Small 'sqrtps'.
3586 0x893A4A33, // Small 'sqrtsd'.
3587 0xA73A4A33, // Small 'sqrtss'.
3588 0x80018693, // Small 'stac'.
3589 0x80000E93, // Small 'stc'.
3590 0x80001293, // Small 'std'.
3591 0x80049E93, // Small 'stgi'.
3592 0x80002693, // Small 'sti'.
3593 0x1023660E, // Large 'stmxcs|r'.
3594 0x8009BE93, // Small 'stos'.
3595 0x80004A93, // Small 'str'.
3596 0x100183C7, // Large 'sttilecf|g'.
3597 0x8004D693, // Small 'stui'.
3598 0x80000AB3, // Small 'sub'.
3599 0x80480AB3, // Small 'subpd'.
3600 0x81380AB3, // Small 'subps'.
3601 0x80498AB3, // Small 'subsd'.
3602 0x81398AB3, // Small 'subss'.
3603 0xA67806F3, // Small 'swapgs'.
3604 0x361A469E, // Large 'sysc|all'.
3605 0x41064567, // Large 'syse|nter'.
3606 0x2157556B, // Large 'sysex|it'.
3607 0x3157556B, // Large 'sysex|itq'.
3608 0xA8594F33, // Small 'sysret'.
3609 0x215856A2, // Large 'sysre|tq'.
3610 0x86B9B794, // Small 't1mskc'.
3611 0x207073CF, // Large 'tdpbf16|ps'.
3612 0x332243CF, // Large 'tdpb|ssd'.
3613 0x328E43CF, // Large 'tdpb|sud'.
3614 0x210E56A7, // Large 'tdpbu|sd'.
3615 0x228F56A7, // Large 'tdpbu|ud'.
3616 0x800A4CB4, // Small 'test'.
3617 0x935A4CB4, // Small 'testui'.
3618 0x0000917A, // Large 'tileloadd'.
3619 0x2165917A, // Large 'tileloadd|t1'.
3620 0x210A9183, // Large 'tilerelea|se'.
3621 0x1026926B, // Large 'tilestore|d'.
3622 0x4375417A, // Large 'tile|zero'.
3623 0x8B3A8614, // Small 'tpause'.
3624 0x81470F54, // Small 'tzcnt'.
3625 0x80B9B754, // Small 'tzmsk'.
3626 0x210E5615, // Large 'ucomi|sd'.
3627 0x201C5615, // Large 'ucomi|ss'.
3628 0x80006C95, // Small 'ud0'.
3629 0x80007095, // Small 'ud1'.
3630 0x80007495, // Small 'ud2'.
3631 0x8142C935, // Small 'uiret'.
3632 0x7537107D, // Large 'u|monitor'.
3633 0xA890DDB5, // Small 'umwait'.
3634 0x20876239, // Large 'unpckh|pd'.
3635 0x20706239, // Large 'unpckh|ps'.
3636 0x34EA5239, // Large 'unpck|lpd'.
3637 0x34ED5239, // Large 'unpck|lps'.
3638 0x30D163D6, // Large 'v4fmad|dps'.
3639 0x327B63D6, // Large 'v4fmad|dss'.
3640 0x30D17274, // Large 'v4fnmad|dps'.
3641 0x327B7274, // Large 'v4fnmad|dss'.
3642 0x89021036, // Small 'vaddpd'.
3643 0x91021036, // Small 'vaddph'.
3644 0xA7021036, // Small 'vaddps'.
3645 0x89321036, // Small 'vaddsd'.
3646 0x91321036, // Small 'vaddsh'.
3647 0xA7321036, // Small 'vaddss'.
3648 0x208773DC, // Large 'vaddsub|pd'.
3649 0x207073DC, // Large 'vaddsub|ps'.
3650 0x0000718C, // Large 'vaesdec'.
3651 0x3028818C, // Large 'vaesdecl|ast'.
3652 0x00007194, // Large 'vaesenc'.
3653 0x30288194, // Large 'vaesencl|ast'.
3654 0x267F56AC, // Large 'vaesi|mc'.
3655 0x1020F011, // Large 'vaeskeygenassis|t'.
3656 0x217856B1, // Large 'valig|nd'.
3657 0x264056B1, // Large 'valig|nq'.
3658 0x208756B6, // Large 'vandn|pd'.
3659 0x207056B6, // Large 'vandn|ps'.
3660 0x89023836, // Small 'vandpd'.
3661 0xA7023836, // Small 'vandps'.
3662 0x208773E3, // Large 'vblendm|pd'.
3663 0x207073E3, // Large 'vblendm|ps'.
3664 0x208763E3, // Large 'vblend|pd'.
3665 0x207063E3, // Large 'vblend|ps'.
3666 0x33EA63E3, // Large 'vblend|vpd'.
3667 0x315063E3, // Large 'vblend|vps'.
3668 0x3062B021, // Large 'vbroadcastf|128'.
3669 0x1003E021, // Large 'vbroadcastf32x|2'.
3670 0x102FE021, // Large 'vbroadcastf32x|4'.
3671 0x1005E021, // Large 'vbroadcastf32x|8'.
3672 0x4030B021, // Large 'vbroadcastf|64x2'.
3673 0x4034B021, // Large 'vbroadcastf|64x4'.
3674 0x4065A021, // Large 'vbroadcast|i128'.
3675 0x5038A021, // Large 'vbroadcast|i32x2'.
3676 0x503DA021, // Large 'vbroadcast|i32x4'.
3677 0x5042A021, // Large 'vbroadcast|i32x8'.
3678 0x5047A021, // Large 'vbroadcast|i64x2'.
3679 0x504CA021, // Large 'vbroadcast|i64x4'.
3680 0x210EA021, // Large 'vbroadcast|sd'.
3681 0x201CA021, // Large 'vbroadcast|ss'.
3682 0x89083476, // Small 'vcmppd'.
3683 0x91083476, // Small 'vcmpph'.
3684 0xA7083476, // Small 'vcmpps'.
3685 0x89383476, // Small 'vcmpsd'.
3686 0x91383476, // Small 'vcmpsh'.
3687 0xA7383476, // Small 'vcmpss'.
3688 0x210E56BB, // Large 'vcomi|sd'.
3689 0x20B556BB, // Large 'vcomi|sh'.
3690 0x201C56BB, // Large 'vcomi|ss'.
3691 0x2087919C, // Large 'vcompress|pd'.
3692 0x2070919C, // Large 'vcompress|ps'.
3693 0x208773ED, // Large 'vcvtdq2|pd'.
3694 0x208273ED, // Large 'vcvtdq2|ph'.
3695 0x207073ED, // Large 'vcvtdq2|ps'.
3696 0x1030D069, // Large 'vcvtne2ps2bf1|6'.
3697 0x1030C0DC, // Large 'vcvtneps2bf1|6'.
3698 0x20C5727E, // Large 'vcvtpd2|dq'.
3699 0x2082727E, // Large 'vcvtpd2|ph'.
3700 0x2070727E, // Large 'vcvtpd2|ps'.
3701 0x21AE727E, // Large 'vcvtpd2|qq'.
3702 0x20C5827E, // Large 'vcvtpd2u|dq'.
3703 0x21AE827E, // Large 'vcvtpd2u|qq'.
3704 0x20C57286, // Large 'vcvtph2|dq'.
3705 0x10268286, // Large 'vcvtph2p|d'.
3706 0x00009286, // Large 'vcvtph2ps'.
3707 0x102E9286, // Large 'vcvtph2ps|x'.
3708 0x21AE7286, // Large 'vcvtph2|qq'.
3709 0x328F7286, // Large 'vcvtph2|udq'.
3710 0x31AD7286, // Large 'vcvtph2|uqq'.
3711 0x23F47286, // Large 'vcvtph2|uw'.
3712 0x105F7286, // Large 'vcvtph2|w'.
3713 0x20C57292, // Large 'vcvtps2|dq'.
3714 0x10268292, // Large 'vcvtps2p|d'.
3715 0x00009292, // Large 'vcvtps2ph'.
3716 0x102E9292, // Large 'vcvtps2ph|x'.
3717 0x21AE7292, // Large 'vcvtps2|qq'.
3718 0x328F7292, // Large 'vcvtps2|udq'.
3719 0x31AD7292, // Large 'vcvtps2|uqq'.
3720 0x208773F6, // Large 'vcvtqq2|pd'.
3721 0x208273F6, // Large 'vcvtqq2|ph'.
3722 0x207073F6, // Large 'vcvtqq2|ps'.
3723 0x20B5729B, // Large 'vcvtsd2|sh'.
3724 0x201D729B, // Large 'vcvtsd2|si'.
3725 0x201C729B, // Large 'vcvtsd2|ss'.
3726 0x201D829B, // Large 'vcvtsd2u|si'.
3727 0x210E72A3, // Large 'vcvtsh2|sd'.
3728 0x201D72A3, // Large 'vcvtsh2|si'.
3729 0x201C72A3, // Large 'vcvtsh2|ss'.
3730 0x201D82A3, // Large 'vcvtsh2u|si'.
3731 0x210E73FD, // Large 'vcvtsi2|sd'.
3732 0x20B573FD, // Large 'vcvtsi2|sh'.
3733 0x201C73FD, // Large 'vcvtsi2|ss'.
3734 0x210E72AB, // Large 'vcvtss2|sd'.
3735 0x20B572AB, // Large 'vcvtss2|sh'.
3736 0x201D72AB, // Large 'vcvtss2|si'.
3737 0x201D82AB, // Large 'vcvtss2u|si'.
3738 0x20C581A5, // Large 'vcvttpd2|dq'.
3739 0x21AE81A5, // Large 'vcvttpd2|qq'.
3740 0x20C591A5, // Large 'vcvttpd2u|dq'.
3741 0x21AE91A5, // Large 'vcvttpd2u|qq'.
3742 0x20C581B0, // Large 'vcvttph2|dq'.
3743 0x21AE81B0, // Large 'vcvttph2|qq'.
3744 0x20C591B0, // Large 'vcvttph2u|dq'.
3745 0x21AE91B0, // Large 'vcvttph2u|qq'.
3746 0x105F91B0, // Large 'vcvttph2u|w'.
3747 0x105F81B0, // Large 'vcvttph2|w'.
3748 0x20C581B9, // Large 'vcvttps2|dq'.
3749 0x21AE81B9, // Large 'vcvttps2|qq'.
3750 0x20C591B9, // Large 'vcvttps2u|dq'.
3751 0x21AE91B9, // Large 'vcvttps2u|qq'.
3752 0x201D81C2, // Large 'vcvttsd2|si'.
3753 0x201D91C2, // Large 'vcvttsd2u|si'.
3754 0x201D81CB, // Large 'vcvttsh2|si'.
3755 0x201D91CB, // Large 'vcvttsh2u|si'.
3756 0x201D81D4, // Large 'vcvttss2|si'.
3757 0x201D91D4, // Large 'vcvttss2u|si'.
3758 0x208782B3, // Large 'vcvtudq2|pd'.
3759 0x208282B3, // Large 'vcvtudq2|ph'.
3760 0x207082B3, // Large 'vcvtudq2|ps'.
3761 0x208782BB, // Large 'vcvtuqq2|pd'.
3762 0x208282BB, // Large 'vcvtuqq2|ph'.
3763 0x207082BB, // Large 'vcvtuqq2|ps'.
3764 0x210E82C3, // Large 'vcvtusi2|sd'.
3765 0x20B582C3, // Large 'vcvtusi2|sh'.
3766 0x201C82C3, // Large 'vcvtusi2|ss'.
3767 0x30816404, // Large 'vcvtuw|2ph'.
3768 0x30815570, // Large 'vcvtw|2ph'.
3769 0x2344740A, // Large 'vdbpsad|bw'.
3770 0x890B2496, // Small 'vdivpd'.
3771 0x910B2496, // Small 'vdivph'.
3772 0xA70B2496, // Small 'vdivps'.
3773 0x893B2496, // Small 'vdivsd'.
3774 0x913B2496, // Small 'vdivsh'.
3775 0xA73B2496, // Small 'vdivss'.
3776 0x20707411, // Large 'vdpbf16|ps'.
3777 0x80484096, // Small 'vdppd'.
3778 0x81384096, // Small 'vdpps'.
3779 0x800948B6, // Small 'verr'.
3780 0x800BC8B6, // Small 'verw'.
3781 0x34874418, // Large 'vexp|2pd'.
3782 0x306F4418, // Large 'vexp|2ps'.
3783 0x30CD6418, // Large 'vexpan|dpd'.
3784 0x30D16418, // Large 'vexpan|dps'.
3785 0x306290EF, // Large 'vextractf|128'.
3786 0x602A70E8, // Large 'vextrac|tf32x4'.
3787 0x404390EF, // Large 'vextractf|32x8'.
3788 0x403090EF, // Large 'vextractf|64x2'.
3789 0x403490EF, // Large 'vextractf|64x4'.
3790 0x406580EF, // Large 'vextract|i128'.
3791 0x503D80EF, // Large 'vextract|i32x4'.
3792 0x504280EF, // Large 'vextract|i32x8'.
3793 0x504780EF, // Large 'vextract|i64x2'.
3794 0x504C80EF, // Large 'vextract|i64x4'.
3795 0x207080EF, // Large 'vextract|ps'.
3796 0x208282CB, // Large 'vfcmaddc|ph'.
3797 0x20B582CB, // Large 'vfcmaddc|sh'.
3798 0x2082741E, // Large 'vfcmulc|ph'.
3799 0x20B5741E, // Large 'vfcmulc|sh'.
3800 0x208791DD, // Large 'vfixupimm|pd'.
3801 0x207091DD, // Large 'vfixupimm|ps'.
3802 0x210E91DD, // Large 'vfixupimm|sd'.
3803 0x201C91DD, // Large 'vfixupimm|ss'.
3804 0x208791E6, // Large 'vfmadd132|pd'.
3805 0x208291E6, // Large 'vfmadd132|ph'.
3806 0x207091E6, // Large 'vfmadd132|ps'.
3807 0x210E91E6, // Large 'vfmadd132|sd'.
3808 0x20B591E6, // Large 'vfmadd132|sh'.
3809 0x201C91E6, // Large 'vfmadd132|ss'.
3810 0x50846076, // Large 'vfmadd|213pd'.
3811 0x50896076, // Large 'vfmadd|213ph'.
3812 0x508E6076, // Large 'vfmadd|213ps'.
3813 0x511A6076, // Large 'vfmadd|213sd'.
3814 0x511F6076, // Large 'vfmadd|213sh'.
3815 0x51246076, // Large 'vfmadd|213ss'.
3816 0x50936076, // Large 'vfmadd|231pd'.
3817 0x50986076, // Large 'vfmadd|231ph'.
3818 0x509D6076, // Large 'vfmadd|231ps'.
3819 0x51296076, // Large 'vfmadd|231sd'.
3820 0x512E6076, // Large 'vfmadd|231sh'.
3821 0x51336076, // Large 'vfmadd|231ss'.
3822 0x34256076, // Large 'vfmadd|cph'.
3823 0x34286076, // Large 'vfmadd|csh'.
3824 0x20876076, // Large 'vfmadd|pd'.
3825 0x20706076, // Large 'vfmadd|ps'.
3826 0x10267076, // Large 'vfmadds|d'.
3827 0x10147076, // Large 'vfmadds|s'.
3828 0x1026D076, // Large 'vfmaddsub132p|d'.
3829 0x1083D076, // Large 'vfmaddsub132p|h'.
3830 0x1014D076, // Large 'vfmaddsub132p|s'.
3831 0x50849076, // Large 'vfmaddsub|213pd'.
3832 0x50899076, // Large 'vfmaddsub|213ph'.
3833 0x508E9076, // Large 'vfmaddsub|213ps'.
3834 0x50939076, // Large 'vfmaddsub|231pd'.
3835 0x50989076, // Large 'vfmaddsub|231ph'.
3836 0x509D9076, // Large 'vfmaddsub|231ps'.
3837 0x20879076, // Large 'vfmaddsub|pd'.
3838 0x20709076, // Large 'vfmaddsub|ps'.
3839 0x208791EF, // Large 'vfmsub132|pd'.
3840 0x208291EF, // Large 'vfmsub132|ph'.
3841 0x207091EF, // Large 'vfmsub132|ps'.
3842 0x210E91EF, // Large 'vfmsub132|sd'.
3843 0x20B591EF, // Large 'vfmsub132|sh'.
3844 0x201C91EF, // Large 'vfmsub132|ss'.
3845 0x508460A2, // Large 'vfmsub|213pd'.
3846 0x508960A2, // Large 'vfmsub|213ph'.
3847 0x508E60A2, // Large 'vfmsub|213ps'.
3848 0x511A60A2, // Large 'vfmsub|213sd'.
3849 0x511F60A2, // Large 'vfmsub|213sh'.
3850 0x512460A2, // Large 'vfmsub|213ss'.
3851 0x509360A2, // Large 'vfmsub|231pd'.
3852 0x509860A2, // Large 'vfmsub|231ph'.
3853 0x509D60A2, // Large 'vfmsub|231ps'.
3854 0x512960A2, // Large 'vfmsub|231sd'.
3855 0x512E60A2, // Large 'vfmsub|231sh'.
3856 0x513360A2, // Large 'vfmsub|231ss'.
3857 0x2087C0A2, // Large 'vfmsubadd132|pd'.
3858 0x2082C0A2, // Large 'vfmsubadd132|ph'.
3859 0x2070C0A2, // Large 'vfmsubadd132|ps'.
3860 0x508490A2, // Large 'vfmsubadd|213pd'.
3861 0x508990A2, // Large 'vfmsubadd|213ph'.
3862 0x508E90A2, // Large 'vfmsubadd|213ps'.
3863 0x509390A2, // Large 'vfmsubadd|231pd'.
3864 0x509890A2, // Large 'vfmsubadd|231ph'.
3865 0x509D90A2, // Large 'vfmsubadd|231ps'.
3866 0x208790A2, // Large 'vfmsubadd|pd'.
3867 0x207090A2, // Large 'vfmsubadd|ps'.
3868 0x208760A2, // Large 'vfmsub|pd'.
3869 0x207060A2, // Large 'vfmsub|ps'.
3870 0x210E60A2, // Large 'vfmsub|sd'.
3871 0x201C60A2, // Large 'vfmsub|ss'.
3872 0x34255575, // Large 'vfmul|cph'.
3873 0x34285575, // Large 'vfmul|csh'.
3874 0x2087A110, // Large 'vfnmadd132|pd'.
3875 0x2082A110, // Large 'vfnmadd132|ph'.
3876 0x2070A110, // Large 'vfnmadd132|ps'.
3877 0x210EA110, // Large 'vfnmadd132|sd'.
3878 0x20B5A110, // Large 'vfnmadd132|sh'.
3879 0x201CA110, // Large 'vfnmadd132|ss'.
3880 0x50847110, // Large 'vfnmadd|213pd'.
3881 0x50897110, // Large 'vfnmadd|213ph'.
3882 0x508E7110, // Large 'vfnmadd|213ps'.
3883 0x511A7110, // Large 'vfnmadd|213sd'.
3884 0x511F7110, // Large 'vfnmadd|213sh'.
3885 0x51247110, // Large 'vfnmadd|213ss'.
3886 0x50937110, // Large 'vfnmadd|231pd'.
3887 0x50987110, // Large 'vfnmadd|231ph'.
3888 0x509D7110, // Large 'vfnmadd|231ps'.
3889 0x51297110, // Large 'vfnmadd|231sd'.
3890 0x512E7110, // Large 'vfnmadd|231sh'.
3891 0x51337110, // Large 'vfnmadd|231ss'.
3892 0x20877110, // Large 'vfnmadd|pd'.
3893 0x20707110, // Large 'vfnmadd|ps'.
3894 0x210E7110, // Large 'vfnmadd|sd'.
3895 0x201C7110, // Large 'vfnmadd|ss'.
3896 0x2087A138, // Large 'vfnmsub132|pd'.
3897 0x2082A138, // Large 'vfnmsub132|ph'.
3898 0x2070A138, // Large 'vfnmsub132|ps'.
3899 0x210EA138, // Large 'vfnmsub132|sd'.
3900 0x20B5A138, // Large 'vfnmsub132|sh'.
3901 0x201CA138, // Large 'vfnmsub132|ss'.
3902 0x50847138, // Large 'vfnmsub|213pd'.
3903 0x50897138, // Large 'vfnmsub|213ph'.
3904 0x508E7138, // Large 'vfnmsub|213ps'.
3905 0x511A7138, // Large 'vfnmsub|213sd'.
3906 0x511F7138, // Large 'vfnmsub|213sh'.
3907 0x51247138, // Large 'vfnmsub|213ss'.
3908 0x50937138, // Large 'vfnmsub|231pd'.
3909 0x50987138, // Large 'vfnmsub|231ph'.
3910 0x509D7138, // Large 'vfnmsub|231ps'.
3911 0x51297138, // Large 'vfnmsub|231sd'.
3912 0x512E7138, // Large 'vfnmsub|231sh'.
3913 0x51337138, // Large 'vfnmsub|231ss'.
3914 0x20877138, // Large 'vfnmsub|pd'.
3915 0x20707138, // Large 'vfnmsub|ps'.
3916 0x210E7138, // Large 'vfnmsub|sd'.
3917 0x201C7138, // Large 'vfnmsub|ss'.
3918 0x208782D3, // Large 'vfpclass|pd'.
3919 0x208282D3, // Large 'vfpclass|ph'.
3920 0x207082D3, // Large 'vfpclass|ps'.
3921 0x210E82D3, // Large 'vfpclass|sd'.
3922 0x20B582D3, // Large 'vfpclass|sh'.
3923 0x201C82D3, // Large 'vfpclass|ss'.
3924 0x208756C0, // Large 'vfrcz|pd'.
3925 0x207056C0, // Large 'vfrcz|ps'.
3926 0x210E56C0, // Large 'vfrcz|sd'.
3927 0x201C56C0, // Large 'vfrcz|ss'.
3928 0x30CD70F8, // Large 'vgather|dpd'.
3929 0x30D170F8, // Large 'vgather|dps'.
3930 0x30CDA0F8, // Large 'vgatherpf0|dpd'.
3931 0x30D1A0F8, // Large 'vgatherpf0|dps'.
3932 0x30C6A0F8, // Large 'vgatherpf0|qpd'.
3933 0x30C9A0F8, // Large 'vgatherpf0|qps'.
3934 0x40CC90F8, // Large 'vgatherpf|1dpd'.
3935 0x40D090F8, // Large 'vgatherpf|1dps'.
3936 0x40D490F8, // Large 'vgatherpf|1qpd'.
3937 0x40D890F8, // Large 'vgatherpf|1qps'.
3938 0x30C670F8, // Large 'vgather|qpd'.
3939 0x30C970F8, // Large 'vgather|qps'.
3940 0x2087742B, // Large 'vgetexp|pd'.
3941 0x2082742B, // Large 'vgetexp|ph'.
3942 0x2070742B, // Large 'vgetexp|ps'.
3943 0x210E742B, // Large 'vgetexp|sd'.
3944 0x20B5742B, // Large 'vgetexp|sh'.
3945 0x201C742B, // Large 'vgetexp|ss'.
3946 0x31A972DB, // Large 'vgetman|tpd'.
3947 0x31B472DB, // Large 'vgetman|tph'.
3948 0x31BD72DB, // Large 'vgetman|tps'.
3949 0x310D72DB, // Large 'vgetman|tsd'.
3950 0x31CF72DB, // Large 'vgetman|tsh'.
3951 0x31D872DB, // Large 'vgetman|tss'.
3952 0x200FF000, // Large 'vgf2p8affineinv|qb'.
3953 0x200FC000, // Large 'vgf2p8affine|qb'.
3954 0x42E26000, // Large 'vgf2p8|mulb'.
3955 0x30CD46C5, // Large 'vhad|dpd'.
3956 0x30D146C5, // Large 'vhad|dps'.
3957 0x208756C9, // Large 'vhsub|pd'.
3958 0x207056C9, // Large 'vhsub|ps'.
3959 0x30628148, // Large 'vinsertf|128'.
3960 0x602A6142, // Large 'vinser|tf32x4'.
3961 0x40438148, // Large 'vinsertf|32x8'.
3962 0x40308148, // Large 'vinsertf|64x2'.
3963 0x40348148, // Large 'vinsertf|64x4'.
3964 0x40657148, // Large 'vinsert|i128'.
3965 0x503D7148, // Large 'vinsert|i32x4'.
3966 0x50427148, // Large 'vinsert|i32x8'.
3967 0x50477148, // Large 'vinsert|i64x2'.
3968 0x504C7148, // Large 'vinsert|i64x4'.
3969 0x20707148, // Large 'vinsert|ps'.
3970 0xAB121196, // Small 'vlddqu'.
3971 0x1023757A, // Large 'vldmxcs|r'.
3972 0x107DA1F8, // Large 'vmaskmovdq|u'.
3973 0x208781F8, // Large 'vmaskmov|pd'.
3974 0x207081F8, // Large 'vmaskmov|ps'.
3975 0x890C05B6, // Small 'vmaxpd'.
3976 0x910C05B6, // Small 'vmaxph'.
3977 0xA70C05B6, // Small 'vmaxps'.
3978 0x893C05B6, // Small 'vmaxsd'.
3979 0x913C05B6, // Small 'vmaxsh'.
3980 0xA73C05B6, // Small 'vmaxss'.
3981 0x98C08DB6, // Small 'vmcall'.
3982 0x23A256CE, // Large 'vmcle|ar'.
3983 0x86EA99B6, // Small 'vmfunc'.
3984 0x890725B6, // Small 'vminpd'.
3985 0x910725B6, // Small 'vminph'.
3986 0xA70725B6, // Small 'vminps'.
3987 0x893725B6, // Small 'vminsd'.
3988 0x913725B6, // Small 'vminsh'.
3989 0xA73725B6, // Small 'vminss'.
3990 0x21606581, // Large 'vmlaun|ch'.
3991 0x8817B1B6, // Small 'vmload'.
3992 0x361A46D3, // Large 'vmmc|all'.
3993 0x208756D7, // Large 'vmova|pd'.
3994 0x207056D7, // Large 'vmova|ps'.
3995 0x804B3DB6, // Small 'vmovd'.
3996 0x35875432, // Large 'vmovd|dup'.
3997 0x00007432, // Large 'vmovdqa'.
3998 0x202C7432, // Large 'vmovdqa|32'.
3999 0x20307432, // Large 'vmovdqa|64'.
4000 0x107D6432, // Large 'vmovdq|u'.
4001 0x34396432, // Large 'vmovdq|u16'.
4002 0x343C6432, // Large 'vmovdq|u32'.
4003 0x343F6432, // Large 'vmovdq|u64'.
4004 0x258A6432, // Large 'vmovdq|u8'.
4005 0x34ED558C, // Large 'vmovh|lps'.
4006 0x2087558C, // Large 'vmovh|pd'.
4007 0x2070558C, // Large 'vmovh|ps'.
4008 0x20706591, // Large 'vmovlh|ps'.
4009 0x20875591, // Large 'vmovl|pd'.
4010 0x20705591, // Large 'vmovl|ps'.
4011 0x20877442, // Large 'vmovmsk|pd'.
4012 0x20707442, // Large 'vmovmsk|ps'.
4013 0x20C56449, // Large 'vmovnt|dq'.
4014 0x34366449, // Large 'vmovnt|dqa'.
4015 0x20876449, // Large 'vmovnt|pd'.
4016 0x20706449, // Large 'vmovnt|ps'.
4017 0x811B3DB6, // Small 'vmovq'.
4018 0x893B3DB6, // Small 'vmovsd'.
4019 0x913B3DB6, // Small 'vmovsh'.
4020 0x21E1744F, // Large 'vmovshd|up'.
4021 0x21E17456, // Large 'vmovsld|up'.
4022 0xA73B3DB6, // Small 'vmovss'.
4023 0x33AD4432, // Large 'vmov|upd'.
4024 0x207056DC, // Large 'vmovu|ps'.
4025 0x817B3DB6, // Small 'vmovw'.
4026 0x23446597, // Large 'vmpsad|bw'.
4027 0x338B46E1, // Large 'vmpt|rld'.
4028 0x338746E1, // Large 'vmpt|rst'.
4029 0x8812C9B6, // Small 'vmread'.
4030 0x100B759D, // Large 'vmresum|e'.
4031 0x80EAC9B6, // Small 'vmrun'.
4032 0x8B60CDB6, // Small 'vmsave'.
4033 0x890655B6, // Small 'vmulpd'.
4034 0x910655B6, // Small 'vmulph'.
4035 0xA70655B6, // Small 'vmulps'.
4036 0x893655B6, // Small 'vmulsd'.
4037 0x913655B6, // Small 'vmulsh'.
4038 0xA73655B6, // Small 'vmulss'.
4039 0x20BF56E5, // Large 'vmwri|te'.
4040 0x80E7E1B6, // Small 'vmxon'.
4041 0x804849F6, // Small 'vorpd'.
4042 0x813849F6, // Small 'vorps'.
4043 0x1026C102, // Large 'vp2intersect|d'.
4044 0x100FC102, // Large 'vp2intersect|q'.
4045 0x102682E6, // Large 'vp4dpwss|d'.
4046 0x207B82E6, // Large 'vp4dpwss|ds'.
4047 0x85310616, // Small 'vpabsb'.
4048 0x89310616, // Small 'vpabsd'.
4049 0xA3310616, // Small 'vpabsq'.
4050 0xAF310616, // Small 'vpabsw'.
4051 0x105F845D, // Large 'vpackssd|w'.
4052 0x2465745D, // Large 'vpackss|wb'.
4053 0x34636467, // Large 'vpacku|sdw'.
4054 0x346D6467, // Large 'vpacku|swb'.
4055 0x84420616, // Small 'vpaddb'.
4056 0x88420616, // Small 'vpaddd'.
4057 0xA2420616, // Small 'vpaddq'.
4058 0x250D55A4, // Large 'vpadd|sb'.
4059 0x232D55A4, // Large 'vpadd|sw'.
4060 0x250D65A4, // Large 'vpaddu|sb'.
4061 0x232D65A4, // Large 'vpaddu|sw'.
4062 0xAE420616, // Small 'vpaddw'.
4063 0x102375AA, // Large 'vpalign|r'.
4064 0x80470616, // Small 'vpand'.
4065 0x88470616, // Small 'vpandd'.
4066 0x9C470616, // Small 'vpandn'.
4067 0x217856EA, // Large 'vpand|nd'.
4068 0x264056EA, // Large 'vpand|nq'.
4069 0xA2470616, // Small 'vpandq'.
4070 0x847B0616, // Small 'vpavgb'.
4071 0xAE7B0616, // Small 'vpavgw'.
4072 0x10267470, // Large 'vpblend|d'.
4073 0x205C7470, // Large 'vpblend|mb'.
4074 0x24777470, // Large 'vpblend|md'.
4075 0x100F8470, // Large 'vpblendm|q'.
4076 0x105F8470, // Large 'vpblendm|w'.
4077 0x20217470, // Large 'vpblend|vb'.
4078 0x105F7470, // Large 'vpblend|w'.
4079 0x1010B051, // Large 'vpbroadcast|b'.
4080 0x1026B051, // Large 'vpbroadcast|d'.
4081 0x100FE051, // Large 'vpbroadcastmb2|q'.
4082 0x305FC051, // Large 'vpbroadcastm|w2d'.
4083 0x100FB051, // Large 'vpbroadcast|q'.
4084 0x105FB051, // Large 'vpbroadcast|w'.
4085 0x424062EE, // Large 'vpclmu|lqdq'.
4086 0xACF68E16, // Small 'vpcmov'.
4087 0x85068E16, // Small 'vpcmpb'.
4088 0x89068E16, // Small 'vpcmpd'.
4089 0x200F62F4, // Large 'vpcmpe|qb'.
4090 0x223562F4, // Large 'vpcmpe|qd'.
4091 0x21AE62F4, // Large 'vpcmpe|qq'.
4092 0x24BB62F4, // Large 'vpcmpe|qw'.
4093 0x100992F4, // Large 'vpcmpestr|i'.
4094 0x105C92F4, // Large 'vpcmpestr|m'.
4095 0x35B152F4, // Large 'vpcmp|gtb'.
4096 0x35B452F4, // Large 'vpcmp|gtd'.
4097 0x35B752F4, // Large 'vpcmp|gtq'.
4098 0x35BA52F4, // Large 'vpcmp|gtw'.
4099 0x100992FD, // Large 'vpcmpistr|i'.
4100 0x105C92FD, // Large 'vpcmpistr|m'.
4101 0xA3068E16, // Small 'vpcmpq'.
4102 0x207D52F4, // Large 'vpcmp|ub'.
4103 0x228F52F4, // Large 'vpcmp|ud'.
4104 0x21AD52F4, // Large 'vpcmp|uq'.
4105 0x23F452F4, // Large 'vpcmp|uw'.
4106 0xAF068E16, // Small 'vpcmpw'.
4107 0x84D78E16, // Small 'vpcomb'.
4108 0x88D78E16, // Small 'vpcomd'.
4109 0x1010A202, // Large 'vpcompress|b'.
4110 0x1026A202, // Large 'vpcompress|d'.
4111 0x100FA202, // Large 'vpcompress|q'.
4112 0x105FA202, // Large 'vpcompress|w'.
4113 0xA2D78E16, // Small 'vpcomq'.
4114 0x207D5202, // Large 'vpcom|ub'.
4115 0x228F5202, // Large 'vpcom|ud'.
4116 0x21AD5202, // Large 'vpcom|uq'.
4117 0x23F45202, // Large 'vpcom|uw'.
4118 0xAED78E16, // Small 'vpcomw'.
4119 0x1026A20C, // Large 'vpconflict|d'.
4120 0x100FA20C, // Large 'vpconflict|q'.
4121 0x10267479, // Large 'vpdpbus|d'.
4122 0x207B7479, // Large 'vpdpbus|ds'.
4123 0x10267480, // Large 'vpdpwss|d'.
4124 0x207B7480, // Large 'vpdpwss|ds'.
4125 0x30627306, // Large 'vperm2f|128'.
4126 0x40656306, // Large 'vperm2|i128'.
4127 0x84D91616, // Small 'vpermb'.
4128 0x88D91616, // Small 'vpermd'.
4129 0x2072630D, // Large 'vpermi|2b'.
4130 0x2060630D, // Large 'vpermi|2d'.
4131 0x3487630D, // Large 'vpermi|2pd'.
4132 0x306F630D, // Large 'vpermi|2ps'.
4133 0x25BD630D, // Large 'vpermi|2q'.
4134 0x205E630D, // Large 'vpermi|2w'.
4135 0x2087830D, // Large 'vpermil2|pd'.
4136 0x2070830D, // Large 'vpermil2|ps'.
4137 0x2087730D, // Large 'vpermil|pd'.
4138 0x2070730D, // Large 'vpermil|ps'.
4139 0x20875306, // Large 'vperm|pd'.
4140 0x20705306, // Large 'vperm|ps'.
4141 0xA2D91616, // Small 'vpermq'.
4142 0x2072648A, // Large 'vpermt|2b'.
4143 0x2060648A, // Large 'vpermt|2d'.
4144 0x3487648A, // Large 'vpermt|2pd'.
4145 0x306F648A, // Large 'vpermt|2ps'.
4146 0x25BD648A, // Large 'vpermt|2q'.
4147 0x205E648A, // Large 'vpermt|2w'.
4148 0xAED91616, // Small 'vpermw'.
4149 0x240B7490, // Large 'vpexpan|db'.
4150 0x207A7490, // Large 'vpexpan|dd'.
4151 0x20C57490, // Large 'vpexpan|dq'.
4152 0x24647490, // Large 'vpexpan|dw'.
4153 0x352E4490, // Large 'vpex|trb'.
4154 0x254D56EF, // Large 'vpext|rd'.
4155 0x223456EF, // Large 'vpext|rq'.
4156 0x26F456EF, // Large 'vpext|rw'.
4157 0x207A8315, // Large 'vpgather|dd'.
4158 0x20C58315, // Large 'vpgather|dq'.
4159 0x22358315, // Large 'vpgather|qd'.
4160 0x21AE8315, // Large 'vpgather|qq'.
4161 0x25BF6497, // Large 'vphadd|bd'.
4162 0x25C16497, // Large 'vphadd|bq'.
4163 0x23446497, // Large 'vphadd|bw'.
4164 0x10266497, // Large 'vphadd|d'.
4165 0x20C56497, // Large 'vphadd|dq'.
4166 0x232D6497, // Large 'vphadd|sw'.
4167 0x10268497, // Large 'vphaddub|d'.
4168 0x100F8497, // Large 'vphaddub|q'.
4169 0x105F8497, // Large 'vphaddub|w'.
4170 0x20C57497, // Large 'vphaddu|dq'.
4171 0x23467497, // Large 'vphaddu|wd'.
4172 0x249F7497, // Large 'vphaddu|wq'.
4173 0x105F6497, // Large 'vphadd|w'.
4174 0x23466497, // Large 'vphadd|wd'.
4175 0x249F6497, // Large 'vphadd|wq'.
4176 0x105FA216, // Large 'vphminposu|w'.
4177 0x234465C3, // Large 'vphsub|bw'.
4178 0x102665C3, // Large 'vphsub|d'.
4179 0x20C565C3, // Large 'vphsub|dq'.
4180 0x232D65C3, // Large 'vphsub|sw'.
4181 0x105F65C3, // Large 'vphsub|w'.
4182 0x234665C3, // Large 'vphsub|wd'.
4183 0x252F56F6, // Large 'vpins|rb'.
4184 0x254D56F6, // Large 'vpins|rd'.
4185 0x223456F6, // Large 'vpins|rq'.
4186 0x26F456F6, // Large 'vpins|rw'.
4187 0x23CF65C9, // Large 'vplzcn|td'.
4188 0x215865C9, // Large 'vplzcn|tq'.
4189 0x207A631D, // Large 'vpmacs|dd'.
4190 0x34A1631D, // Large 'vpmacs|dqh'.
4191 0x334C631D, // Large 'vpmacs|dql'.
4192 0x1026831D, // Large 'vpmacssd|d'.
4193 0x1083931D, // Large 'vpmacssdq|h'.
4194 0x10B2931D, // Large 'vpmacssdq|l'.
4195 0x2346731D, // Large 'vpmacss|wd'.
4196 0x2345731D, // Large 'vpmacss|ww'.
4197 0x2346631D, // Large 'vpmacs|wd'.
4198 0x2345631D, // Large 'vpmacs|ww'.
4199 0x10269326, // Large 'vpmadcssw|d'.
4200 0x23467326, // Large 'vpmadcs|wd'.
4201 0x21AD9220, // Large 'vpmadd52h|uq'.
4202 0x32298220, // Large 'vpmadd52|luq'.
4203 0x432F6220, // Large 'vpmadd|ubsw'.
4204 0x23466220, // Large 'vpmadd|wd'.
4205 0x61FB4220, // Large 'vpma|skmovd'.
4206 0x200E8333, // Large 'vpmaskmo|vq'.
4207 0x250D56FB, // Large 'vpmax|sb'.
4208 0x210E56FB, // Large 'vpmax|sd'.
4209 0x235356FB, // Large 'vpmax|sq'.
4210 0x232D56FB, // Large 'vpmax|sw'.
4211 0x207D56FB, // Large 'vpmax|ub'.
4212 0x228F56FB, // Large 'vpmax|ud'.
4213 0x21AD56FB, // Large 'vpmax|uq'.
4214 0x23F456FB, // Large 'vpmax|uw'.
4215 0x250D5700, // Large 'vpmin|sb'.
4216 0x210E5700, // Large 'vpmin|sd'.
4217 0x23535700, // Large 'vpmin|sq'.
4218 0x232D5700, // Large 'vpmin|sw'.
4219 0x207D5700, // Large 'vpmin|ub'.
4220 0x228F5700, // Large 'vpmin|ud'.
4221 0x21AD5700, // Large 'vpmin|uq'.
4222 0x23F45700, // Large 'vpmin|uw'.
4223 0x35CF54A4, // Large 'vpmov|b2m'.
4224 0x35D254A4, // Large 'vpmov|d2m'.
4225 0x240B54A4, // Large 'vpmov|db'.
4226 0x246454A4, // Large 'vpmov|dw'.
4227 0x207264A4, // Large 'vpmovm|2b'.
4228 0x206064A4, // Large 'vpmovm|2d'.
4229 0x25BD64A4, // Large 'vpmovm|2q'.
4230 0x205E64A4, // Large 'vpmovm|2w'.
4231 0x101084A4, // Large 'vpmovmsk|b'.
4232 0x35D554A4, // Large 'vpmov|q2m'.
4233 0x200F54A4, // Large 'vpmov|qb'.
4234 0x223554A4, // Large 'vpmov|qd'.
4235 0x24BB54A4, // Large 'vpmov|qw'.
4236 0x240B64AC, // Large 'vpmovs|db'.
4237 0x246464AC, // Large 'vpmovs|dw'.
4238 0x200F64AC, // Large 'vpmovs|qb'.
4239 0x223564AC, // Large 'vpmovs|qd'.
4240 0x24BB64AC, // Large 'vpmovs|qw'.
4241 0x246564AC, // Large 'vpmovs|wb'.
4242 0x102684AC, // Large 'vpmovsxb|d'.
4243 0x100F84AC, // Large 'vpmovsxb|q'.
4244 0x105F84AC, // Large 'vpmovsxb|w'.
4245 0x20C574AC, // Large 'vpmovsx|dq'.
4246 0x234674AC, // Large 'vpmovsx|wd'.
4247 0x249F74AC, // Large 'vpmovsx|wq'.
4248 0x240B74B4, // Large 'vpmovus|db'.
4249 0x246474B4, // Large 'vpmovus|dw'.
4250 0x200F74B4, // Large 'vpmovus|qb'.
4251 0x223574B4, // Large 'vpmovus|qd'.
4252 0x24BB74B4, // Large 'vpmovus|qw'.
4253 0x246574B4, // Large 'vpmovus|wb'.
4254 0x35D854A4, // Large 'vpmov|w2m'.
4255 0x246554A4, // Large 'vpmov|wb'.
4256 0x102684BD, // Large 'vpmovzxb|d'.
4257 0x100F84BD, // Large 'vpmovzxb|q'.
4258 0x105F84BD, // Large 'vpmovzxb|w'.
4259 0x20C574BD, // Large 'vpmovzx|dq'.
4260 0x234674BD, // Large 'vpmovzx|wd'.
4261 0x249F74BD, // Large 'vpmovzx|wq'.
4262 0x20C550AE, // Large 'vpmul|dq'.
4263 0x232D74C5, // Large 'vpmulhr|sw'.
4264 0x23F464C5, // Large 'vpmulh|uw'.
4265 0x105F64C5, // Large 'vpmulh|w'.
4266 0x234B50AE, // Large 'vpmul|ld'.
4267 0x224050AE, // Large 'vpmul|lq'.
4268 0x234E50AE, // Large 'vpmul|lw'.
4269 0x200FC0AE, // Large 'vpmultishift|qb'.
4270 0x328F50AE, // Large 'vpmul|udq'.
4271 0x25B265DB, // Large 'vpopcn|tb'.
4272 0x23CF65DB, // Large 'vpopcn|td'.
4273 0x215865DB, // Large 'vpopcn|tq'.
4274 0x216365DB, // Large 'vpopcn|tw'.
4275 0x80093E16, // Small 'vpor'.
4276 0x80493E16, // Small 'vpord'.
4277 0x81193E16, // Small 'vporq'.
4278 0x9B22C216, // Small 'vpperm'.
4279 0x88C7CA16, // Small 'vprold'.
4280 0xA2C7CA16, // Small 'vprolq'.
4281 0x21FF5705, // Large 'vprol|vd'.
4282 0x200E5705, // Large 'vprol|vq'.
4283 0x8927CA16, // Small 'vprord'.
4284 0xA327CA16, // Small 'vprorq'.
4285 0x21FF570A, // Large 'vpror|vd'.
4286 0x200E570A, // Large 'vpror|vq'.
4287 0x8547CA16, // Small 'vprotb'.
4288 0x8947CA16, // Small 'vprotd'.
4289 0xA347CA16, // Small 'vprotq'.
4290 0xAF47CA16, // Small 'vprotw'.
4291 0x2344570F, // Large 'vpsad|bw'.
4292 0x207A922C, // Large 'vpscatter|dd'.
4293 0x20C5922C, // Large 'vpscatter|dq'.
4294 0x2235922C, // Large 'vpscatter|qd'.
4295 0x100FA22C, // Large 'vpscatterq|q'.
4296 0x84144E16, // Small 'vpshab'.
4297 0x88144E16, // Small 'vpshad'.
4298 0xA2144E16, // Small 'vpshaq'.
4299 0xAE144E16, // Small 'vpshaw'.
4300 0x84C44E16, // Small 'vpshlb'.
4301 0x88C44E16, // Small 'vpshld'.
4302 0x102665E1, // Large 'vpshld|d'.
4303 0x100F65E1, // Large 'vpshld|q'.
4304 0x341055E1, // Large 'vpshl|dvd'.
4305 0x35E655E1, // Large 'vpshl|dvq'.
4306 0x105F75E1, // Large 'vpshldv|w'.
4307 0x105F65E1, // Large 'vpshld|w'.
4308 0xA2C44E16, // Small 'vpshlq'.
4309 0xAEC44E16, // Small 'vpshlw'.
4310 0x102665E9, // Large 'vpshrd|d'.
4311 0x100F65E9, // Large 'vpshrd|q'.
4312 0x341055E9, // Large 'vpshr|dvd'.
4313 0x35E655E9, // Large 'vpshr|dvq'.
4314 0x35EE55E9, // Large 'vpshr|dvw'.
4315 0x105F65E9, // Large 'vpshrd|w'.
4316 0x00007150, // Large 'vpshufb'.
4317 0x205CA150, // Large 'vpshufbitq|mb'.
4318 0x10266150, // Large 'vpshuf|d'.
4319 0x25F16150, // Large 'vpshuf|hw'.
4320 0x234E6150, // Large 'vpshuf|lw'.
4321 0x251A5714, // Large 'vpsig|nb'.
4322 0x21785714, // Large 'vpsig|nd'.
4323 0x26225714, // Large 'vpsig|nw'.
4324 0x88C64E16, // Small 'vpslld'.
4325 0x334B4719, // Large 'vpsl|ldq'.
4326 0xA2C64E16, // Small 'vpsllq'.
4327 0x21FF571D, // Large 'vpsll|vd'.
4328 0x200E571D, // Large 'vpsll|vq'.
4329 0x25EF571D, // Large 'vpsll|vw'.
4330 0xAEC64E16, // Small 'vpsllw'.
4331 0x88194E16, // Small 'vpsrad'.
4332 0xA2194E16, // Small 'vpsraq'.
4333 0x21FF5722, // Large 'vpsra|vd'.
4334 0x200E5722, // Large 'vpsra|vq'.
4335 0x25EF5722, // Large 'vpsra|vw'.
4336 0xAE194E16, // Small 'vpsraw'.
4337 0x88C94E16, // Small 'vpsrld'.
4338 0x334B4722, // Large 'vpsr|ldq'.
4339 0xA2C94E16, // Small 'vpsrlq'.
4340 0x21FF5727, // Large 'vpsrl|vd'.
4341 0x200E5727, // Large 'vpsrl|vq'.
4342 0x25EF5727, // Large 'vpsrl|vw'.
4343 0xAEC94E16, // Small 'vpsrlw'.
4344 0x842ACE16, // Small 'vpsubb'.
4345 0x882ACE16, // Small 'vpsubd'.
4346 0xA22ACE16, // Small 'vpsubq'.
4347 0x250D55F3, // Large 'vpsub|sb'.
4348 0x232D55F3, // Large 'vpsub|sw'.
4349 0x250D65F3, // Large 'vpsubu|sb'.
4350 0x232D65F3, // Large 'vpsubu|sw'.
4351 0xAE2ACE16, // Small 'vpsubw'.
4352 0x1026933B, // Large 'vpternlog|d'.
4353 0x100F933B, // Large 'vpternlog|q'.
4354 0xA932D216, // Small 'vptest'.
4355 0x205C64CC, // Large 'vptest|mb'.
4356 0x247764CC, // Large 'vptest|md'.
4357 0x24D364CC, // Large 'vptest|mq'.
4358 0x25D764CC, // Large 'vptest|mw'.
4359 0x205C74CC, // Large 'vptestn|mb'.
4360 0x247774CC, // Large 'vptestn|md'.
4361 0x24D374CC, // Large 'vptestn|mq'.
4362 0x105F84CC, // Large 'vptestnm|w'.
4363 0x23448237, // Large 'vpunpckh|bw'.
4364 0x20C58237, // Large 'vpunpckh|dq'.
4365 0x20C59237, // Large 'vpunpckhq|dq'.
4366 0x23468237, // Large 'vpunpckh|wd'.
4367 0x33487237, // Large 'vpunpck|lbw'.
4368 0x334B7237, // Large 'vpunpck|ldq'.
4369 0x42407237, // Large 'vpunpck|lqdq'.
4370 0x334E7237, // Large 'vpunpck|lwd'.
4371 0x8127E216, // Small 'vpxor'.
4372 0x8927E216, // Small 'vpxord'.
4373 0xA327E216, // Small 'vpxorq'.
4374 0x208765F9, // Large 'vrange|pd'.
4375 0x207065F9, // Large 'vrange|ps'.
4376 0x210E65F9, // Large 'vrange|sd'.
4377 0x201C65F9, // Large 'vrange|ss'.
4378 0x208765FF, // Large 'vrcp14|pd'.
4379 0x207065FF, // Large 'vrcp14|ps'.
4380 0x210E65FF, // Large 'vrcp14|sd'.
4381 0x201C65FF, // Large 'vrcp14|ss'.
4382 0x435945FF, // Large 'vrcp|28pd'.
4383 0x435D45FF, // Large 'vrcp|28ps'.
4384 0x436145FF, // Large 'vrcp|28sd'.
4385 0x436545FF, // Large 'vrcp|28ss'.
4386 0x91080E56, // Small 'vrcpph'.
4387 0xA7080E56, // Small 'vrcpps'.
4388 0x91380E56, // Small 'vrcpsh'.
4389 0xA7380E56, // Small 'vrcpss'.
4390 0x208774D5, // Large 'vreduce|pd'.
4391 0x208274D5, // Large 'vreduce|ph'.
4392 0x207074D5, // Large 'vreduce|ps'.
4393 0x210E74D5, // Large 'vreduce|sd'.
4394 0x20B574D5, // Large 'vreduce|sh'.
4395 0x201C74D5, // Large 'vreduce|ss'.
4396 0x20879244, // Large 'vrndscale|pd'.
4397 0x20829244, // Large 'vrndscale|ph'.
4398 0x20709244, // Large 'vrndscale|ps'.
4399 0x210E9244, // Large 'vrndscale|sd'.
4400 0x20B59244, // Large 'vrndscale|sh'.
4401 0x201C9244, // Large 'vrndscale|ss'.
4402 0x30CD5605, // Large 'vroun|dpd'.
4403 0x30D15605, // Large 'vroun|dps'.
4404 0x360A5605, // Large 'vroun|dsd'.
4405 0x10147605, // Large 'vrounds|s'.
4406 0x20878351, // Large 'vrsqrt14|pd'.
4407 0x20708351, // Large 'vrsqrt14|ps'.
4408 0x210E8351, // Large 'vrsqrt14|sd'.
4409 0x201C8351, // Large 'vrsqrt14|ss'.
4410 0x43596351, // Large 'vrsqrt|28pd'.
4411 0x435D6351, // Large 'vrsqrt|28ps'.
4412 0x43616351, // Large 'vrsqrt|28sd'.
4413 0x43656351, // Large 'vrsqrt|28ss'.
4414 0x20826351, // Large 'vrsqrt|ph'.
4415 0x20706351, // Large 'vrsqrt|ps'.
4416 0x20B56351, // Large 'vrsqrt|sh'.
4417 0x201C6351, // Large 'vrsqrt|ss'.
4418 0x208774DC, // Large 'vscalef|pd'.
4419 0x208274DC, // Large 'vscalef|ph'.
4420 0x207074DC, // Large 'vscalef|ps'.
4421 0x210E74DC, // Large 'vscalef|sd'.
4422 0x20B574DC, // Large 'vscalef|sh'.
4423 0x201C74DC, // Large 'vscalef|ss'.
4424 0x30CD80BA, // Large 'vscatter|dpd'.
4425 0x30D180BA, // Large 'vscatter|dps'.
4426 0x2087C0BA, // Large 'vscatterpf0d|pd'.
4427 0x2070C0BA, // Large 'vscatterpf0d|ps'.
4428 0x30C6B0BA, // Large 'vscatterpf0|qpd'.
4429 0x30C9B0BA, // Large 'vscatterpf0|qps'.
4430 0x40CCA0BA, // Large 'vscatterpf|1dpd'.
4431 0x40D0A0BA, // Large 'vscatterpf|1dps'.
4432 0x40D4A0BA, // Large 'vscatterpf|1qpd'.
4433 0x40D8A0BA, // Large 'vscatterpf|1qps'.
4434 0x30C680BA, // Large 'vscatter|qpd'.
4435 0x30C980BA, // Large 'vscatter|qps'.
4436 0x502B5369, // Large 'vshuf|f32x4'.
4437 0x4030636E, // Large 'vshuff|64x2'.
4438 0x503D5369, // Large 'vshuf|i32x4'.
4439 0x50475369, // Large 'vshuf|i64x2'.
4440 0x20875369, // Large 'vshuf|pd'.
4441 0x20705369, // Large 'vshuf|ps'.
4442 0x31A9472C, // Large 'vsqr|tpd'.
4443 0x31B4472C, // Large 'vsqr|tph'.
4444 0x31BD472C, // Large 'vsqr|tps'.
4445 0x310D472C, // Large 'vsqr|tsd'.
4446 0x31CF472C, // Large 'vsqr|tsh'.
4447 0x31D8472C, // Large 'vsqr|tss'.
4448 0x1023760D, // Large 'vstmxcs|r'.
4449 0x89015676, // Small 'vsubpd'.
4450 0x91015676, // Small 'vsubph'.
4451 0xA7015676, // Small 'vsubps'.
4452 0x89315676, // Small 'vsubsd'.
4453 0x91315676, // Small 'vsubsh'.
4454 0xA7315676, // Small 'vsubss'.
4455 0x31A94730, // Large 'vtes|tpd'.
4456 0x31BD4730, // Large 'vtes|tps'.
4457 0x210E6614, // Large 'vucomi|sd'.
4458 0x20B56614, // Large 'vucomi|sh'.
4459 0x201C6614, // Large 'vucomi|ss'.
4460 0x208774E3, // Large 'vunpckh|pd'.
4461 0x207074E3, // Large 'vunpckh|ps'.
4462 0x34EA64E3, // Large 'vunpck|lpd'.
4463 0x34ED64E3, // Large 'vunpck|lps'.
4464 0x89093F16, // Small 'vxorpd'.
4465 0xA7093F16, // Small 'vxorps'.
4466 0x361A5374, // Large 'vzero|all'.
4467 0x33077374, // Large 'vzeroup|per'.
4468 0x89672457, // Small 'wbinvd'.
4469 0x21FF661D, // Large 'wbnoin|vd'.
4470 0x33B05623, // Large 'wrfsb|ase'.
4471 0x33B05628, // Large 'wrgsb|ase'.
4472 0x8129B657, // Small 'wrmsr'.
4473 0x8049CE57, // Small 'wrssd'.
4474 0x8119CE57, // Small 'wrssq'.
4475 0x8939D657, // Small 'wrussd'.
4476 0xA339D657, // Small 'wrussq'.
4477 0xA9278838, // Small 'xabort'.
4478 0x80021038, // Small 'xadd'.
4479 0x9C939458, // Small 'xbegin'.
4480 0x8003A078, // Small 'xchg'.
4481 0x800238B8, // Small 'xend'.
4482 0xAC2A14F8, // Small 'xgetbv'.
4483 0x802A0598, // Small 'xlatb'.
4484 0x800049F8, // Small 'xor'.
4485 0x804849F8, // Small 'xorpd'.
4486 0x813849F8, // Small 'xorps'.
4487 0x101584F0, // Large 'xresldtr|k'.
4488 0xA4FA4E58, // Small 'xrstor'.
4489 0x20306386, // Large 'xrstor|64'.
4490 0x10146386, // Large 'xrstor|s'.
4491 0x34F86386, // Large 'xrstor|s64'.
4492 0x805B0678, // Small 'xsave'.
4493 0x2030537B, // Large 'xsave|64'.
4494 0x865B0678, // Small 'xsavec'.
4495 0x362D537B, // Large 'xsave|c64'.
4496 0x0000837B, // Large 'xsaveopt'.
4497 0x2030837B, // Large 'xsaveopt|64'.
4498 0xA65B0678, // Small 'xsaves'.
4499 0x34F8537B, // Large 'xsave|s64'.
4500 0xAC2A1678, // Small 'xsetbv'.
4501 0x101584FB, // Large 'xsusldtr|k'.
4502 0x81499698 // Small 'xtest'.
4503 };
4504
4505 const char InstDB::_instNameStringTable[] =
4506 "vgf2p8affineinvqbvaeskeygenassistvbroadcastf32x464x264x4i32x2i32x4i32x8i64x2i64x"
4507 "4vpbroadcastmb2w2d128i128vcvtne2ps2bf1vfmaddsub132ph213pd213ph213ps231pd231ph231"
4508 "psvfmsubadd132vpmultishiftvscatterpf0dqpdqps1dpd1dps1qpd1qpsvcvtneps2bf1vextracv"
4509 "extractfvgatherpf0vp2intersectsdvfnmadd132213sd213sh213ss231sd231sh231ssvfnmsub1"
4510 "32vinservinsertfvpshufbitqprefetchntwt1saveprevsssha256rndtileloaddtilereleavaes"
4511 "declvaesenclvcompressvcvttpd2uqqvcvttph2uvcvttps2uvcvttsd2uvcvttsh2uvcvttss2uvfi"
4512 "xupimmvfmadd132vfmsub132vmaskmovdqvpcompressvpconflictvphminposuvpmadd52hluqvpsc"
4513 "atterqdvpunpckhqlqdqvrndscaleclflushopcmpxchg16t0t2msg1msg2tilestorev4fnmaddssvc"
4514 "vtpd2uvcvtph2psudqvcvtps2phvcvtsd2uvcvtsh2uvcvtss2uvcvtudq2vcvtuqq2vcvtusi2vfcma"
4515 "ddcvfpclassvgetmanmulbvp4dpwssvpclmuvpcmpestrvpcmpistrvperm2fvpermil2vpgathervpm"
4516 "acssdqvpmadcsswubswvpmaskmovpternlogbwwdlbwldqlwdvrsqrt1428pd28ps28sd28ssvshufvs"
4517 "huffvzeroupxsaveopt8bfxrstorldtilecfmovdir64pvalidarmpadjurmpupdaserialisha1nexs"
4518 "ha1rndssttilecftdpbf16v4fmadvaddsubvblendmvpdvcvtdq2uwvcvtqq2vcvtsi2vcvtuwvdbpsa"
4519 "dvdpbf16vexpanvfcmulccphcshvgetexpvmovdqau16u32u64vmovmskvmovntvmovshdvmovsldvpa"
4520 "ckssdwbvpackuswbvpblendmdvpdpbusvpdpwss2pdvpermtvpexpanvphaddubwqdqhvpmovmskvpmo"
4521 "vsxbvpmovusqwvpmovzxbvpmulhrvptestnmqvreducevscalefvunpckhlpdlpsxresldtrs64xsusl"
4522 "dtrcldemoclrssbscvtpifcmovnbfxsavekortestkshiftrbkunpckmonitorpfrcpipfrsqirtvrdf"
4523 "sbrdgsbsspsenduisetssbssysesysexvcvtwvfmulvldmxcsvmlaundupu8vmovhvmovlhvmpsadvmr"
4524 "esumvpadduvpaligngtbgtdgtqgtw2qbdbqvphsubvplzcnb2md2mq2mw2mvpopcnvpshldvqvpshrdv"
4525 "whwvpsubuvrangevrcp14vroundsdvstmxcsvucomiallwbnoinwrfsbwrgsbc64blcfiblsfiendbre"
4526 "nqcmbefdecsfincsfnstefrndfsincfucomppfyl2xincsspqinvlinvpcinvvpmcommmovq2pavgupf"
4527 "cmpepfpnaptwrisyscsysretdpbuvaesivaligvandnvcomivfrczvhadvhsubvmclevmmcvmovavmov"
4528 "uvmptvmwrivpandvpextrwvpinsvpmaxvpminvprolvprorvpsadvpsigvpslvpsllvpsravpsrlvsqr"
4529 "vtes";
4530
30024531
30034532 const InstDB::InstNameIndex InstDB::instNameIndex[26] = {
30044533 { Inst::kIdAaa , Inst::kIdArpl + 1 },
30894618 ROW(3, 1, 1, 2, 34 , 33 , 27 , 0 , 0 , 0 ), // {<dx>, <ax>, r16|m16|mem}
30904619 ROW(3, 1, 1, 2, 35 , 36 , 28 , 0 , 0 , 0 ), // {<edx>, <eax>, r32|m32|mem}
30914620 ROW(3, 0, 1, 2, 37 , 38 , 15 , 0 , 0 , 0 ), // {<rdx>, <rax>, r64|m64|mem}
3092 ROW(2, 1, 1, 0, 4 , 39 , 0 , 0 , 0 , 0 ), // {r16, r16|m16|mem|i8|i16}
3093 ROW(2, 1, 1, 0, 6 , 40 , 0 , 0 , 0 , 0 ), // {r32, r32|m32|mem|i8|i32}
4621 ROW(2, 1, 1, 0, 4 , 39 , 0 , 0 , 0 , 0 ), // {r16, r16|m16|mem|i8|i16|u16}
4622 ROW(2, 1, 1, 0, 6 , 40 , 0 , 0 , 0 , 0 ), // {r32, r32|m32|mem|i8|i32|u32}
30944623 ROW(2, 0, 1, 0, 8 , 41 , 0 , 0 , 0 , 0 ), // {r64, r64|m64|mem|i8|i32}
30954624 ROW(3, 1, 1, 0, 4 , 27 , 42 , 0 , 0 , 0 ), // {r16, r16|m16|mem, i8|i16|u16}
30964625 ROW(3, 1, 1, 0, 6 , 28 , 43 , 0 , 0 , 0 ), // {r32, r32|m32|mem, i8|i32|u32}
36075136 ROW(F(RegGpd) | F(FlagImplicit), 0x01),
36085137 ROW(F(RegGpq) | F(FlagImplicit), 0x04),
36095138 ROW(F(RegGpq) | F(FlagImplicit), 0x01),
3610 ROW(F(RegGpw) | F(MemUnspecified) | F(Mem16) | F(ImmI8) | F(ImmI16), 0x00),
3611 ROW(F(RegGpd) | F(MemUnspecified) | F(Mem32) | F(ImmI8) | F(ImmI32), 0x00),
5139 ROW(F(RegGpw) | F(MemUnspecified) | F(Mem16) | F(ImmI8) | F(ImmI16) | F(ImmU16), 0x00),
5140 ROW(F(RegGpd) | F(MemUnspecified) | F(Mem32) | F(ImmI8) | F(ImmI32) | F(ImmU32), 0x00),
36125141 ROW(F(RegGpq) | F(MemUnspecified) | F(Mem64) | F(ImmI8) | F(ImmI32), 0x00),
36135142 ROW(F(ImmI8) | F(ImmI16) | F(ImmU16), 0x00),
36145143 ROW(F(ImmI8) | F(ImmI32) | F(ImmU32), 0x00),
38615390 0, 0, 0, 74, 39, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
38625391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 10,
38635392 10, 10, 10, 10, 10, 10, 0, 0, 2, 2, 2, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0,
3865 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 80, 81, 80, 81, 81, 81, 80, 80, 82, 83, 0, 84,
3866 0, 0, 0, 0, 0, 0, 85, 2, 2, 86, 87, 0, 0, 0, 11, 88, 0, 0, 4, 0, 0, 0, 89, 0,
3867 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
3868 90, 90, 90, 90, 90, 90, 90, 90, 90, 0, 90, 0, 32, 0, 0, 0, 5, 0, 0, 6, 0, 91,
3869 4, 0, 91, 4, 5, 5, 32, 19, 92, 80, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 92,
3870 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 95, 95, 95, 0, 0, 0, 0,
3871 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 56, 97, 0, 0, 0, 0, 98, 99, 98, 99, 3,
3872 3, 3, 100, 101, 102, 3, 3, 3, 3, 3, 3, 0, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 103,
3873 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 104, 3, 105, 106, 107, 0,
3874 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3875 108, 0, 0, 0, 0, 0, 0, 0, 109, 0, 110, 0, 111, 0, 111, 0, 112, 113, 114, 115,
3876 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3877 0, 0, 0, 112, 113, 114, 0, 0, 3, 3, 3, 3, 100, 111, 102, 3, 117, 3, 55, 55,
3878 0, 0, 0, 0, 118, 119, 120, 119, 120, 118, 119, 120, 119, 120, 22, 121, 122, 121,
3879 122, 121, 121, 123, 124, 121, 121, 121, 125, 126, 127, 121, 121, 121, 125,
3880 126, 127, 121, 121, 121, 125, 126, 127, 121, 122, 128, 128, 129, 130, 121, 121,
3881 121, 121, 121, 121, 121, 121, 121, 128, 128, 121, 121, 121, 125, 131, 127, 121,
3882 121, 121, 125, 131, 127, 121, 121, 121, 125, 131, 127, 121, 121, 121, 121,
3883 121, 121, 121, 121, 121, 128, 128, 128, 128, 129, 130, 121, 122, 121, 121, 121,
3884 125, 126, 127, 121, 121, 121, 125, 126, 127, 121, 121, 121, 125, 126, 127,
3885 128, 128, 129, 130, 121, 121, 121, 125, 131, 127, 121, 121, 121, 125, 131, 127,
3886 121, 121, 121, 132, 131, 133, 128, 128, 129, 130, 134, 134, 134, 78, 135, 136,
5393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0,
5394 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 80, 79, 80, 80, 80, 79, 79, 81, 82, 0, 83,
5395 0, 0, 0, 0, 0, 0, 84, 2, 2, 85, 86, 0, 0, 0, 11, 87, 0, 0, 4, 0, 0, 0, 88, 0,
5396 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
5397 89, 89, 89, 89, 89, 89, 89, 89, 89, 0, 89, 0, 32, 0, 0, 0, 5, 0, 0, 6, 0, 90,
5398 4, 0, 90, 4, 5, 5, 32, 19, 91, 79, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 91,
5399 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 94, 94, 94, 94, 0, 0, 0, 0,
5400 0, 0, 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, 56, 96, 0, 0, 0, 0, 97, 98, 97, 98, 3,
5401 3, 3, 99, 100, 101, 3, 3, 3, 3, 3, 3, 0, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 102,
5402 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 103, 3, 104, 105, 106, 0, 0,
5403 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107,
5404 0, 0, 0, 0, 0, 0, 0, 108, 0, 109, 0, 110, 0, 110, 0, 111, 112, 113, 114, 115,
5405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5406 0, 0, 0, 111, 112, 113, 0, 0, 3, 3, 3, 3, 99, 110, 101, 3, 116, 3, 55, 55, 0,
5407 0, 0, 0, 117, 118, 119, 118, 119, 117, 118, 119, 118, 119, 22, 120, 121, 120,
5408 121, 122, 122, 123, 124, 122, 122, 122, 125, 126, 127, 122, 122, 122, 125, 126,
5409 127, 122, 122, 122, 125, 126, 127, 120, 121, 128, 128, 129, 130, 122, 122,
5410 122, 122, 122, 122, 122, 122, 122, 128, 128, 122, 122, 122, 125, 131, 127, 122,
5411 122, 122, 125, 131, 127, 122, 122, 122, 125, 131, 127, 122, 122, 122, 122, 122,
5412 122, 122, 122, 122, 128, 128, 128, 128, 129, 130, 120, 121, 122, 122, 122,
5413 125, 126, 127, 122, 122, 122, 125, 126, 127, 122, 122, 122, 125, 126, 127, 128,
5414 128, 129, 130, 122, 122, 122, 125, 131, 127, 122, 122, 122, 125, 131, 127,
5415 122, 122, 122, 132, 131, 133, 128, 128, 129, 130, 134, 134, 134, 78, 135, 136,
38875416 0, 0, 0, 0, 137, 138, 10, 10, 10, 10, 10, 10, 10, 10, 138, 139, 0, 0, 0, 140,
3888 141, 142, 85, 85, 85, 140, 141, 142, 3, 3, 3, 3, 3, 3, 3, 143, 144, 145, 144,
3889 145, 143, 144, 145, 144, 145, 102, 0, 53, 58, 146, 146, 3, 3, 3, 100, 101,
3890 102, 0, 147, 0, 3, 3, 3, 100, 101, 102, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3891 0, 0, 0, 149, 150, 150, 151, 152, 152, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 155,
3892 0, 0, 0, 3, 11, 147, 0, 0, 156, 148, 3, 3, 3, 100, 101, 102, 0, 11, 3, 3, 157,
3893 157, 158, 158, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3894 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 103, 3, 0, 0, 0, 0, 0, 0, 3, 128, 104, 104, 3,
3895 3, 3, 3, 67, 68, 3, 3, 3, 3, 69, 70, 104, 104, 104, 104, 104, 104, 117, 117, 0,
3896 0, 0, 0, 117, 117, 117, 117, 117, 117, 0, 0, 121, 121, 121, 121, 159, 159, 3,
3897 3, 3, 121, 3, 3, 121, 121, 128, 128, 160, 160, 160, 3, 160, 3, 121, 121, 121,
3898 121, 121, 3, 0, 0, 0, 0, 71, 22, 72, 161, 138, 137, 139, 138, 0, 0, 0, 3, 0,
3899 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 3, 3, 0, 162, 102, 100, 101, 0, 0,
3900 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 121, 121, 3, 3, 146,
3901 146, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
5417 141, 142, 84, 84, 84, 140, 141, 142, 3, 3, 3, 3, 3, 3, 3, 143, 144, 145, 144,
5418 145, 143, 144, 145, 144, 145, 101, 0, 53, 58, 146, 146, 3, 3, 3, 99, 100, 101,
5419 0, 147, 0, 3, 3, 3, 99, 100, 101, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5420 0, 149, 150, 150, 151, 152, 152, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 0, 155, 0,
5421 0, 0, 3, 11, 147, 0, 0, 156, 148, 3, 3, 3, 99, 100, 101, 0, 11, 3, 3, 157, 157,
5422 158, 158, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5423 3, 3, 3, 3, 3, 3, 3, 3, 102, 3, 0, 0, 0, 0, 0, 0, 3, 128, 103, 103, 3, 3, 3,
5424 3, 67, 68, 3, 3, 3, 3, 69, 70, 103, 103, 103, 103, 103, 103, 116, 116, 0, 0,
5425 0, 0, 116, 116, 116, 116, 116, 116, 0, 0, 122, 122, 122, 122, 159, 159, 3, 3,
5426 3, 122, 3, 3, 122, 122, 128, 128, 160, 160, 160, 3, 160, 3, 122, 122, 122, 122,
5427 122, 3, 0, 0, 0, 0, 71, 22, 72, 161, 138, 137, 139, 138, 0, 0, 0, 3, 0, 3, 0,
5428 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 3, 3, 0, 162, 101, 99, 100, 0, 0, 163, 163,
5429 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 122, 122, 3, 3, 146, 146,
5430 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
39025431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3903 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 164, 85, 85,
3904 3, 3, 85, 85, 3, 3, 165, 165, 165, 165, 3, 0, 0, 0, 0, 165, 165, 165, 165, 165,
3905 165, 3, 3, 121, 121, 121, 3, 165, 165, 3, 3, 121, 121, 121, 3, 3, 104, 85, 85,
3906 85, 3, 3, 3, 166, 167, 166, 3, 3, 3, 168, 166, 169, 3, 3, 3, 168, 166, 167,
3907 166, 3, 3, 3, 168, 3, 3, 3, 3, 3, 3, 3, 3, 121, 121, 0, 104, 104, 104, 104, 104,
3908 104, 104, 104, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 140, 142, 0, 0, 140,
3909 142, 0, 0, 140, 142, 0, 0, 141, 142, 85, 85, 85, 140, 141, 142, 85, 85, 85, 140,
3910 141, 142, 85, 85, 140, 142, 0, 0, 140, 142, 0, 0, 140, 142, 0, 0, 141, 142,
3911 3, 3, 3, 100, 101, 102, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 3, 3, 3,
3912 3, 3, 3, 0, 0, 0, 140, 141, 142, 93, 3, 3, 3, 100, 101, 102, 0, 0, 0, 0, 0, 3,
3913 3, 3, 3, 3, 3, 0, 0, 0, 0, 56, 56, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0,
3914 0, 0, 0, 171, 171, 171, 171, 172, 172, 172, 172, 172, 172, 172, 172, 170, 0,
3915 0
5432 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 164, 84, 84, 3, 3,
5433 84, 84, 3, 3, 165, 165, 165, 165, 3, 0, 0, 0, 0, 165, 165, 165, 165, 165, 165,
5434 3, 3, 122, 122, 122, 3, 165, 165, 3, 3, 122, 122, 122, 3, 3, 103, 84, 84, 84,
5435 3, 3, 3, 166, 167, 166, 3, 3, 3, 168, 166, 169, 3, 3, 3, 168, 166, 167, 166,
5436 3, 3, 3, 168, 3, 3, 3, 3, 3, 3, 3, 3, 170, 170, 0, 103, 103, 103, 103, 103, 103,
5437 103, 103, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 140, 142, 0, 0, 140, 142,
5438 0, 0, 140, 142, 0, 0, 141, 142, 84, 84, 84, 140, 141, 142, 84, 84, 84, 140, 141,
5439 142, 84, 84, 140, 142, 0, 0, 140, 142, 0, 0, 140, 142, 0, 0, 141, 142, 3, 3,
5440 3, 99, 100, 101, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 3, 3, 3, 3, 3,
5441 3, 0, 0, 0, 140, 141, 142, 92, 3, 3, 3, 99, 100, 101, 0, 0, 0, 0, 0, 3, 3, 3,
5442 3, 3, 3, 0, 0, 0, 0, 56, 56, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
5443 172, 172, 172, 172, 173, 173, 173, 173, 173, 173, 173, 173, 171, 0, 0
39165444 };
39175445
39185446 const InstDB::RWInfo InstDB::rwInfoA[] = {
40075535 { InstDB::RWInfo::kCategoryGeneric , 0 , { 4 , 0 , 0 , 0 , 0 , 0 } }, // #88 [ref=2x]
40085536 { InstDB::RWInfo::kCategoryGeneric , 3 , { 5 , 5 , 0 , 0 , 0 , 0 } }, // #89 [ref=1x]
40095537 { InstDB::RWInfo::kCategoryPunpcklxx , 38, { 0 , 0 , 0 , 0 , 0 , 0 } }, // #90 [ref=3x]
4010 { InstDB::RWInfo::kCategoryGeneric , 10, { 2 , 71, 0 , 0 , 0 , 0 } }, // #91 [ref=8x]
5538 { InstDB::RWInfo::kCategoryGeneric , 10, { 2 , 70, 0 , 0 , 0 , 0 } }, // #91 [ref=8x]
40115539 { InstDB::RWInfo::kCategoryGeneric , 5 , { 37, 9 , 0 , 0 , 0 , 0 } }, // #92 [ref=3x]
40125540 { InstDB::RWInfo::kCategoryGeneric , 0 , { 16, 50, 0 , 0 , 0 , 0 } }, // #93 [ref=1x]
40135541 { InstDB::RWInfo::kCategoryGeneric , 0 , { 22, 21, 0 , 0 , 0 , 0 } }, // #94 [ref=1x]
40145542 { InstDB::RWInfo::kCategoryGeneric , 0 , { 63, 22, 0 , 0 , 0 , 0 } }, // #95 [ref=1x]
4015 { InstDB::RWInfo::kCategoryGeneric , 8 , { 74, 3 , 0 , 0 , 0 , 0 } }, // #96 [ref=2x]
5543 { InstDB::RWInfo::kCategoryGeneric , 8 , { 73, 3 , 0 , 0 , 0 , 0 } }, // #96 [ref=2x]
40165544 { InstDB::RWInfo::kCategoryGeneric , 8 , { 11, 43, 0 , 0 , 0 , 0 } }, // #97 [ref=1x]
40175545 { InstDB::RWInfo::kCategoryGeneric , 5 , { 53, 9 , 0 , 0 , 0 , 0 } }, // #98 [ref=2x]
4018 { InstDB::RWInfo::kCategoryGeneric , 13, { 80, 5 , 0 , 0 , 0 , 0 } }, // #99 [ref=2x]
5546 { InstDB::RWInfo::kCategoryGeneric , 13, { 79, 5 , 0 , 0 , 0 , 0 } }, // #99 [ref=2x]
40195547 { InstDB::RWInfo::kCategoryGeneric , 13, { 11, 5 , 0 , 0 , 0 , 0 } }, // #100 [ref=4x]
4020 { InstDB::RWInfo::kCategoryGeneric , 43, { 74, 81, 0 , 0 , 0 , 0 } }, // #101 [ref=4x]
5548 { InstDB::RWInfo::kCategoryGeneric , 43, { 73, 80, 0 , 0 , 0 , 0 } }, // #101 [ref=4x]
40215549 { InstDB::RWInfo::kCategoryGeneric , 44, { 11, 7 , 0 , 0 , 0 , 0 } }, // #102 [ref=1x]
40225550 { InstDB::RWInfo::kCategoryGeneric , 45, { 11, 9 , 0 , 0 , 0 , 0 } }, // #103 [ref=1x]
40235551 { InstDB::RWInfo::kCategoryGeneric , 27, { 13, 13, 0 , 0 , 0 , 0 } }, // #104 [ref=2x]
40285556 { InstDB::RWInfo::kCategoryGeneric , 46, { 11, 3 , 0 , 0 , 0 , 0 } }, // #109 [ref=5x]
40295557 { InstDB::RWInfo::kCategoryGeneric , 47, { 11, 5 , 0 , 0 , 0 , 0 } }, // #110 [ref=5x]
40305558 { InstDB::RWInfo::kCategoryGeneric , 27, { 11, 5 , 0 , 0 , 0 , 0 } }, // #111 [ref=4x]
4031 { InstDB::RWInfo::kCategoryGeneric , 51, { 74, 43, 0 , 0 , 0 , 0 } }, // #112 [ref=6x]
5559 { InstDB::RWInfo::kCategoryGeneric , 51, { 73, 43, 0 , 0 , 0 , 0 } }, // #112 [ref=6x]
40325560 { InstDB::RWInfo::kCategoryGeneric , 5 , { 44, 9 , 0 , 0 , 0 , 0 } }, // #113 [ref=1x]
40335561 { InstDB::RWInfo::kCategoryGeneric , 18, { 2 , 3 , 0 , 0 , 0 , 0 } }, // #114 [ref=2x]
40345562 { InstDB::RWInfo::kCategoryGeneric , 58, { 11, 3 , 0 , 0 , 0 , 0 } }, // #115 [ref=12x]
41215649 { InstDB::RWInfo::kCategoryGeneric , 6 , { 64, 42, 3 , 0 , 0 , 0 } }, // #62 [ref=1x]
41225650 { InstDB::RWInfo::kCategoryGeneric , 6 , { 11, 11, 3 , 65, 0 , 0 } }, // #63 [ref=1x]
41235651 { InstDB::RWInfo::kCategoryGeneric , 0 , { 17, 29, 30, 0 , 0 , 0 } }, // #64 [ref=1x]
4124 { InstDB::RWInfo::kCategoryGeneric , 10, { 3 , 0 , 0 , 0 , 0 , 0 } }, // #65 [ref=2x]
5652 { InstDB::RWInfo::kCategoryGeneric , 10, { 3 , 0 , 0 , 0 , 0 , 0 } }, // #65 [ref=3x]
41255653 { InstDB::RWInfo::kCategoryGeneric , 2 , { 2 , 3 , 0 , 0 , 0 , 0 } }, // #66 [ref=1x]
41265654 { InstDB::RWInfo::kCategoryGeneric , 3 , { 5 , 5 , 0 , 67, 17, 60 } }, // #67 [ref=2x]
41275655 { InstDB::RWInfo::kCategoryGeneric , 3 , { 5 , 5 , 0 , 68, 17, 60 } }, // #68 [ref=2x]
41335661 { InstDB::RWInfo::kCategoryGeneric , 15, { 4 , 40, 0 , 0 , 0 , 0 } }, // #74 [ref=1x]
41345662 { InstDB::RWInfo::kCategoryGeneric , 4 , { 4 , 7 , 0 , 0 , 0 , 0 } }, // #75 [ref=1x]
41355663 { InstDB::RWInfo::kCategoryGeneric , 27, { 2 , 13, 0 , 0 , 0 , 0 } }, // #76 [ref=1x]
4136 { InstDB::RWInfo::kCategoryGeneric , 10, { 70, 0 , 0 , 0 , 0 , 0 } }, // #77 [ref=1x]
5664 { InstDB::RWInfo::kCategoryGeneric , 10, { 11, 0 , 0 , 0 , 0 , 0 } }, // #77 [ref=1x]
41375665 { InstDB::RWInfo::kCategoryGeneric , 4 , { 35, 7 , 0 , 0 , 0 , 0 } }, // #78 [ref=2x]
4138 { InstDB::RWInfo::kCategoryGeneric , 10, { 65, 0 , 0 , 0 , 0 , 0 } }, // #79 [ref=1x]
4139 { InstDB::RWInfo::kCategoryGeneric , 0 , { 11, 0 , 0 , 0 , 0 , 0 } }, // #80 [ref=6x]
4140 { InstDB::RWInfo::kCategoryGeneric , 0 , { 16, 50, 29, 0 , 0 , 0 } }, // #81 [ref=5x]
4141 { InstDB::RWInfo::kCategoryGeneric , 0 , { 44, 0 , 0 , 0 , 0 , 0 } }, // #82 [ref=1x]
4142 { InstDB::RWInfo::kCategoryGeneric , 0 , { 35, 0 , 0 , 0 , 0 , 0 } }, // #83 [ref=1x]
4143 { InstDB::RWInfo::kCategoryGeneric , 0 , { 16, 50, 67, 0 , 0 , 0 } }, // #84 [ref=1x]
4144 { InstDB::RWInfo::kCategoryGeneric , 2 , { 11, 3 , 0 , 0 , 0 , 0 } }, // #85 [ref=19x]
4145 { InstDB::RWInfo::kCategoryGeneric , 4 , { 36, 7 , 0 , 0 , 0 , 0 } }, // #86 [ref=1x]
4146 { InstDB::RWInfo::kCategoryGeneric , 5 , { 37, 9 , 0 , 0 , 0 , 0 } }, // #87 [ref=1x]
4147 { InstDB::RWInfo::kCategoryGeneric , 0 , { 72, 0 , 0 , 0 , 0 , 0 } }, // #88 [ref=1x]
4148 { InstDB::RWInfo::kCategoryGeneric , 0 , { 7 , 0 , 0 , 0 , 0 , 0 } }, // #89 [ref=1x]
4149 { InstDB::RWInfo::kCategoryGeneric , 34, { 73, 0 , 0 , 0 , 0 , 0 } }, // #90 [ref=30x]
4150 { InstDB::RWInfo::kCategoryGeneric , 11, { 2 , 3 , 71, 0 , 0 , 0 } }, // #91 [ref=2x]
4151 { InstDB::RWInfo::kCategoryGeneric , 39, { 11, 0 , 0 , 0 , 0 , 0 } }, // #92 [ref=3x]
4152 { InstDB::RWInfo::kCategoryGeneric , 28, { 44, 0 , 0 , 0 , 0 , 0 } }, // #93 [ref=2x]
4153 { InstDB::RWInfo::kCategoryGeneric , 16, { 74, 0 , 0 , 0 , 0 , 0 } }, // #94 [ref=1x]
4154 { InstDB::RWInfo::kCategoryGeneric , 0 , { 75, 43, 43, 0 , 0 , 0 } }, // #95 [ref=5x]
4155 { InstDB::RWInfo::kCategoryGeneric , 0 , { 74, 0 , 0 , 0 , 0 , 0 } }, // #96 [ref=1x]
4156 { InstDB::RWInfo::kCategoryGeneric , 0 , { 9 , 60, 17, 0 , 0 , 0 } }, // #97 [ref=2x]
4157 { InstDB::RWInfo::kCategoryGeneric , 13, { 75, 76, 77, 77, 77, 5 } }, // #98 [ref=2x]
4158 { InstDB::RWInfo::kCategoryGeneric , 13, { 4 , 78, 79, 79, 79, 5 } }, // #99 [ref=2x]
4159 { InstDB::RWInfo::kCategoryGeneric , 40, { 10, 5 , 7 , 0 , 0 , 0 } }, // #100 [ref=8x]
4160 { InstDB::RWInfo::kCategoryGeneric , 41, { 10, 5 , 13, 0 , 0 , 0 } }, // #101 [ref=7x]
4161 { InstDB::RWInfo::kCategoryGeneric , 42, { 10, 5 , 9 , 0 , 0 , 0 } }, // #102 [ref=9x]
4162 { InstDB::RWInfo::kCategoryGeneric , 6 , { 11, 3 , 3 , 3 , 0 , 0 } }, // #103 [ref=3x]
4163 { InstDB::RWInfo::kCategoryGeneric , 6 , { 35, 3 , 3 , 0 , 0 , 0 } }, // #104 [ref=18x]
4164 { InstDB::RWInfo::kCategoryGeneric , 40, { 11, 5 , 7 , 0 , 0 , 0 } }, // #105 [ref=1x]
4165 { InstDB::RWInfo::kCategoryGeneric , 41, { 35, 13, 13, 0 , 0 , 0 } }, // #106 [ref=1x]
4166 { InstDB::RWInfo::kCategoryGeneric , 42, { 11, 5 , 9 , 0 , 0 , 0 } }, // #107 [ref=1x]
4167 { InstDB::RWInfo::kCategoryVmov1_2 , 48, { 0 , 0 , 0 , 0 , 0 , 0 } }, // #108 [ref=1x]
4168 { InstDB::RWInfo::kCategoryGeneric , 40, { 10, 5 , 5 , 0 , 0 , 0 } }, // #109 [ref=1x]
4169 { InstDB::RWInfo::kCategoryGeneric , 40, { 10, 82, 7 , 0 , 0 , 0 } }, // #110 [ref=1x]
4170 { InstDB::RWInfo::kCategoryGeneric , 41, { 10, 5 , 5 , 0 , 0 , 0 } }, // #111 [ref=3x]
4171 { InstDB::RWInfo::kCategoryGeneric , 49, { 10, 61, 3 , 0 , 0 , 0 } }, // #112 [ref=2x]
4172 { InstDB::RWInfo::kCategoryGeneric , 49, { 10, 3 , 3 , 0 , 0 , 0 } }, // #113 [ref=2x]
4173 { InstDB::RWInfo::kCategoryGeneric , 49, { 10, 82, 3 , 0 , 0 , 0 } }, // #114 [ref=2x]
4174 { InstDB::RWInfo::kCategoryGeneric , 42, { 10, 61, 9 , 0 , 0 , 0 } }, // #115 [ref=1x]
4175 { InstDB::RWInfo::kCategoryGeneric , 42, { 10, 5 , 5 , 0 , 0 , 0 } }, // #116 [ref=1x]
4176 { InstDB::RWInfo::kCategoryGeneric , 50, { 10, 5 , 5 , 0 , 0 , 0 } }, // #117 [ref=9x]
4177 { InstDB::RWInfo::kCategoryGeneric , 52, { 10, 81, 0 , 0 , 0 , 0 } }, // #118 [ref=2x]
4178 { InstDB::RWInfo::kCategoryGeneric , 52, { 10, 3 , 0 , 0 , 0 , 0 } }, // #119 [ref=4x]
4179 { InstDB::RWInfo::kCategoryGeneric , 53, { 80, 43, 0 , 0 , 0 , 0 } }, // #120 [ref=4x]
4180 { InstDB::RWInfo::kCategoryGeneric , 6 , { 2 , 3 , 3 , 0 , 0 , 0 } }, // #121 [ref=82x]
4181 { InstDB::RWInfo::kCategoryGeneric , 42, { 4 , 5 , 5 , 0 , 0 , 0 } }, // #122 [ref=4x]
5666 { InstDB::RWInfo::kCategoryGeneric , 0 , { 11, 0 , 0 , 0 , 0 , 0 } }, // #79 [ref=6x]
5667 { InstDB::RWInfo::kCategoryGeneric , 0 , { 16, 50, 29, 0 , 0 , 0 } }, // #80 [ref=5x]
5668 { InstDB::RWInfo::kCategoryGeneric , 0 , { 44, 0 , 0 , 0 , 0 , 0 } }, // #81 [ref=1x]
5669 { InstDB::RWInfo::kCategoryGeneric , 0 , { 35, 0 , 0 , 0 , 0 , 0 } }, // #82 [ref=1x]
5670 { InstDB::RWInfo::kCategoryGeneric , 0 , { 16, 50, 67, 0 , 0 , 0 } }, // #83 [ref=1x]
5671 { InstDB::RWInfo::kCategoryGeneric , 2 , { 11, 3 , 0 , 0 , 0 , 0 } }, // #84 [ref=19x]
5672 { InstDB::RWInfo::kCategoryGeneric , 4 , { 36, 7 , 0 , 0 , 0 , 0 } }, // #85 [ref=1x]
5673 { InstDB::RWInfo::kCategoryGeneric , 5 , { 37, 9 , 0 , 0 , 0 , 0 } }, // #86 [ref=1x]
5674 { InstDB::RWInfo::kCategoryGeneric , 0 , { 71, 0 , 0 , 0 , 0 , 0 } }, // #87 [ref=1x]
5675 { InstDB::RWInfo::kCategoryGeneric , 0 , { 7 , 0 , 0 , 0 , 0 , 0 } }, // #88 [ref=1x]
5676 { InstDB::RWInfo::kCategoryGeneric , 34, { 72, 0 , 0 , 0 , 0 , 0 } }, // #89 [ref=30x]
5677 { InstDB::RWInfo::kCategoryGeneric , 11, { 2 , 3 , 70, 0 , 0 , 0 } }, // #90 [ref=2x]
5678 { InstDB::RWInfo::kCategoryGeneric , 39, { 11, 0 , 0 , 0 , 0 , 0 } }, // #91 [ref=3x]
5679 { InstDB::RWInfo::kCategoryGeneric , 28, { 44, 0 , 0 , 0 , 0 , 0 } }, // #92 [ref=2x]
5680 { InstDB::RWInfo::kCategoryGeneric , 16, { 73, 0 , 0 , 0 , 0 , 0 } }, // #93 [ref=1x]
5681 { InstDB::RWInfo::kCategoryGeneric , 0 , { 74, 43, 43, 0 , 0 , 0 } }, // #94 [ref=5x]
5682 { InstDB::RWInfo::kCategoryGeneric , 0 , { 73, 0 , 0 , 0 , 0 , 0 } }, // #95 [ref=1x]
5683 { InstDB::RWInfo::kCategoryGeneric , 0 , { 9 , 60, 17, 0 , 0 , 0 } }, // #96 [ref=2x]
5684 { InstDB::RWInfo::kCategoryGeneric , 13, { 74, 75, 76, 76, 76, 5 } }, // #97 [ref=2x]
5685 { InstDB::RWInfo::kCategoryGeneric , 13, { 4 , 77, 78, 78, 78, 5 } }, // #98 [ref=2x]
5686 { InstDB::RWInfo::kCategoryGeneric , 40, { 10, 5 , 7 , 0 , 0 , 0 } }, // #99 [ref=8x]
5687 { InstDB::RWInfo::kCategoryGeneric , 41, { 10, 5 , 13, 0 , 0 , 0 } }, // #100 [ref=7x]
5688 { InstDB::RWInfo::kCategoryGeneric , 42, { 10, 5 , 9 , 0 , 0 , 0 } }, // #101 [ref=9x]
5689 { InstDB::RWInfo::kCategoryGeneric , 6 , { 11, 3 , 3 , 3 , 0 , 0 } }, // #102 [ref=3x]
5690 { InstDB::RWInfo::kCategoryGeneric , 6 , { 35, 3 , 3 , 0 , 0 , 0 } }, // #103 [ref=18x]
5691 { InstDB::RWInfo::kCategoryGeneric , 40, { 11, 5 , 7 , 0 , 0 , 0 } }, // #104 [ref=1x]
5692 { InstDB::RWInfo::kCategoryGeneric , 41, { 35, 13, 13, 0 , 0 , 0 } }, // #105 [ref=1x]
5693 { InstDB::RWInfo::kCategoryGeneric , 42, { 11, 5 , 9 , 0 , 0 , 0 } }, // #106 [ref=1x]
5694 { InstDB::RWInfo::kCategoryVmov1_2 , 48, { 0 , 0 , 0 , 0 , 0 , 0 } }, // #107 [ref=1x]
5695 { InstDB::RWInfo::kCategoryGeneric , 40, { 10, 5 , 5 , 0 , 0 , 0 } }, // #108 [ref=1x]
5696 { InstDB::RWInfo::kCategoryGeneric , 40, { 10, 81, 7 , 0 , 0 , 0 } }, // #109 [ref=1x]
5697 { InstDB::RWInfo::kCategoryGeneric , 41, { 10, 5 , 5 , 0 , 0 , 0 } }, // #110 [ref=3x]
5698 { InstDB::RWInfo::kCategoryGeneric , 49, { 10, 61, 3 , 0 , 0 , 0 } }, // #111 [ref=2x]
5699 { InstDB::RWInfo::kCategoryGeneric , 49, { 10, 3 , 3 , 0 , 0 , 0 } }, // #112 [ref=2x]
5700 { InstDB::RWInfo::kCategoryGeneric , 49, { 10, 81, 3 , 0 , 0 , 0 } }, // #113 [ref=2x]
5701 { InstDB::RWInfo::kCategoryGeneric , 42, { 10, 61, 9 , 0 , 0 , 0 } }, // #114 [ref=1x]
5702 { InstDB::RWInfo::kCategoryGeneric , 42, { 10, 5 , 5 , 0 , 0 , 0 } }, // #115 [ref=1x]
5703 { InstDB::RWInfo::kCategoryGeneric , 50, { 10, 5 , 5 , 0 , 0 , 0 } }, // #116 [ref=9x]
5704 { InstDB::RWInfo::kCategoryGeneric , 52, { 10, 80, 0 , 0 , 0 , 0 } }, // #117 [ref=2x]
5705 { InstDB::RWInfo::kCategoryGeneric , 52, { 10, 3 , 0 , 0 , 0 , 0 } }, // #118 [ref=4x]
5706 { InstDB::RWInfo::kCategoryGeneric , 53, { 79, 43, 0 , 0 , 0 , 0 } }, // #119 [ref=4x]
5707 { InstDB::RWInfo::kCategoryGeneric , 6 , { 82, 3 , 3 , 0 , 0 , 0 } }, // #120 [ref=4x]
5708 { InstDB::RWInfo::kCategoryGeneric , 42, { 83, 5 , 5 , 0 , 0 , 0 } }, // #121 [ref=4x]
5709 { InstDB::RWInfo::kCategoryGeneric , 6 , { 2 , 3 , 3 , 0 , 0 , 0 } }, // #122 [ref=76x]
41825710 { InstDB::RWInfo::kCategoryGeneric , 40, { 4 , 61, 7 , 0 , 0 , 0 } }, // #123 [ref=1x]
4183 { InstDB::RWInfo::kCategoryGeneric , 42, { 4 , 82, 9 , 0 , 0 , 0 } }, // #124 [ref=1x]
5711 { InstDB::RWInfo::kCategoryGeneric , 42, { 4 , 81, 9 , 0 , 0 , 0 } }, // #124 [ref=1x]
41845712 { InstDB::RWInfo::kCategoryGeneric , 40, { 6 , 7 , 7 , 0 , 0 , 0 } }, // #125 [ref=11x]
41855713 { InstDB::RWInfo::kCategoryGeneric , 41, { 4 , 5 , 5 , 0 , 0 , 0 } }, // #126 [ref=6x]
41865714 { InstDB::RWInfo::kCategoryGeneric , 42, { 8 , 9 , 9 , 0 , 0 , 0 } }, // #127 [ref=11x]
41975725 { InstDB::RWInfo::kCategoryGeneric , 0 , { 2 , 3 , 2 , 0 , 0 , 0 } }, // #138 [ref=4x]
41985726 { InstDB::RWInfo::kCategoryGeneric , 18, { 4 , 3 , 4 , 0 , 0 , 0 } }, // #139 [ref=2x]
41995727 { InstDB::RWInfo::kCategoryGeneric , 40, { 10, 61, 7 , 0 , 0 , 0 } }, // #140 [ref=11x]
4200 { InstDB::RWInfo::kCategoryGeneric , 41, { 10, 83, 13, 0 , 0 , 0 } }, // #141 [ref=7x]
4201 { InstDB::RWInfo::kCategoryGeneric , 42, { 10, 82, 9 , 0 , 0 , 0 } }, // #142 [ref=13x]
4202 { InstDB::RWInfo::kCategoryGeneric , 50, { 80, 81, 5 , 0 , 0 , 0 } }, // #143 [ref=2x]
5728 { InstDB::RWInfo::kCategoryGeneric , 41, { 10, 84, 13, 0 , 0 , 0 } }, // #141 [ref=7x]
5729 { InstDB::RWInfo::kCategoryGeneric , 42, { 10, 81, 9 , 0 , 0 , 0 } }, // #142 [ref=13x]
5730 { InstDB::RWInfo::kCategoryGeneric , 50, { 79, 80, 5 , 0 , 0 , 0 } }, // #143 [ref=2x]
42035731 { InstDB::RWInfo::kCategoryGeneric , 50, { 11, 3 , 5 , 0 , 0 , 0 } }, // #144 [ref=4x]
4204 { InstDB::RWInfo::kCategoryGeneric , 57, { 74, 43, 81, 0 , 0 , 0 } }, // #145 [ref=4x]
5732 { InstDB::RWInfo::kCategoryGeneric , 57, { 73, 43, 80, 0 , 0 , 0 } }, // #145 [ref=4x]
42055733 { InstDB::RWInfo::kCategoryVmaskmov , 0 , { 0 , 0 , 0 , 0 , 0 , 0 } }, // #146 [ref=4x]
42065734 { InstDB::RWInfo::kCategoryGeneric , 12, { 35, 0 , 0 , 0 , 0 , 0 } }, // #147 [ref=2x]
42075735 { InstDB::RWInfo::kCategoryGeneric , 0 , { 22, 0 , 0 , 0 , 0 , 0 } }, // #148 [ref=2x]
42105738 { InstDB::RWInfo::kCategoryGeneric , 0 , { 10, 7 , 7 , 0 , 0 , 0 } }, // #151 [ref=1x]
42115739 { InstDB::RWInfo::kCategoryGeneric , 12, { 10, 61, 7 , 0 , 0 , 0 } }, // #152 [ref=2x]
42125740 { InstDB::RWInfo::kCategoryGeneric , 0 , { 10, 61, 7 , 0 , 0 , 0 } }, // #153 [ref=1x]
4213 { InstDB::RWInfo::kCategoryGeneric , 0 , { 10, 83, 13, 0 , 0 , 0 } }, // #154 [ref=1x]
4214 { InstDB::RWInfo::kCategoryGeneric , 0 , { 10, 82, 9 , 0 , 0 , 0 } }, // #155 [ref=1x]
4215 { InstDB::RWInfo::kCategoryGeneric , 0 , { 84, 0 , 0 , 0 , 0 , 0 } }, // #156 [ref=1x]
4216 { InstDB::RWInfo::kCategoryGeneric , 60, { 85, 86, 3 , 3 , 0 , 0 } }, // #157 [ref=2x]
4217 { InstDB::RWInfo::kCategoryGeneric , 13, { 74, 76, 77, 77, 77, 5 } }, // #158 [ref=2x]
4218 { InstDB::RWInfo::kCategoryGeneric , 57, { 80, 81, 81, 0 , 0 , 0 } }, // #159 [ref=2x]
5741 { InstDB::RWInfo::kCategoryGeneric , 0 , { 10, 84, 13, 0 , 0 , 0 } }, // #154 [ref=1x]
5742 { InstDB::RWInfo::kCategoryGeneric , 0 , { 10, 81, 9 , 0 , 0 , 0 } }, // #155 [ref=1x]
5743 { InstDB::RWInfo::kCategoryGeneric , 0 , { 85, 0 , 0 , 0 , 0 , 0 } }, // #156 [ref=1x]
5744 { InstDB::RWInfo::kCategoryGeneric , 60, { 86, 87, 3 , 3 , 0 , 0 } }, // #157 [ref=2x]
5745 { InstDB::RWInfo::kCategoryGeneric , 13, { 73, 75, 76, 76, 76, 5 } }, // #158 [ref=2x]
5746 { InstDB::RWInfo::kCategoryGeneric , 57, { 79, 80, 80, 0 , 0 , 0 } }, // #159 [ref=2x]
42195747 { InstDB::RWInfo::kCategoryGeneric , 22, { 11, 3 , 3 , 0 , 0 , 0 } }, // #160 [ref=4x]
42205748 { InstDB::RWInfo::kCategoryGeneric , 7 , { 48, 5 , 0 , 0 , 0 , 0 } }, // #161 [ref=1x]
42215749 { InstDB::RWInfo::kCategoryGeneric , 61, { 10, 5 , 40, 0 , 0 , 0 } }, // #162 [ref=1x]
42265754 { InstDB::RWInfo::kCategoryGeneric , 68, { 11, 3 , 0 , 0 , 0 , 0 } }, // #167 [ref=2x]
42275755 { InstDB::RWInfo::kCategoryGeneric , 69, { 11, 3 , 5 , 0 , 0 , 0 } }, // #168 [ref=3x]
42285756 { InstDB::RWInfo::kCategoryGeneric , 22, { 11, 3 , 5 , 0 , 0 , 0 } }, // #169 [ref=1x]
4229 { InstDB::RWInfo::kCategoryGeneric , 0 , { 60, 17, 29, 0 , 0 , 0 } }, // #170 [ref=2x]
4230 { InstDB::RWInfo::kCategoryGeneric , 8 , { 3 , 60, 17, 0 , 0 , 0 } }, // #171 [ref=4x]
4231 { InstDB::RWInfo::kCategoryGeneric , 8 , { 11, 60, 17, 0 , 0 , 0 } } // #172 [ref=8x]
5757 { InstDB::RWInfo::kCategoryGenericEx , 6 , { 2 , 3 , 3 , 0 , 0 , 0 } }, // #170 [ref=2x]
5758 { InstDB::RWInfo::kCategoryGeneric , 0 , { 60, 17, 29, 0 , 0 , 0 } }, // #171 [ref=2x]
5759 { InstDB::RWInfo::kCategoryGeneric , 8 , { 3 , 60, 17, 0 , 0 , 0 } }, // #172 [ref=4x]
5760 { InstDB::RWInfo::kCategoryGeneric , 8 , { 11, 60, 17, 0 , 0 , 0 } } // #173 [ref=8x]
42325761 };
42335762
42345763 const InstDB::RWInfoOp InstDB::rwInfoOp[] = {
42355764 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kNone }, // #0 [ref=16519x]
42365765 { 0x0000000000000003u, 0x0000000000000003u, 0x00, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kRegPhysId }, // #1 [ref=10x]
4237 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kZExt }, // #2 [ref=236x]
4238 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #3 [ref=1077x]
4239 { 0x000000000000FFFFu, 0x000000000000FFFFu, 0xFF, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kZExt }, // #4 [ref=108x]
5766 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kZExt }, // #2 [ref=232x]
5767 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #3 [ref=1078x]
5768 { 0x000000000000FFFFu, 0x000000000000FFFFu, 0xFF, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kZExt }, // #4 [ref=104x]
42405769 { 0x000000000000FFFFu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #5 [ref=348x]
42415770 { 0x00000000000000FFu, 0x00000000000000FFu, 0xFF, 0, { 0 }, OpRWFlags::kRW }, // #6 [ref=18x]
42425771 { 0x00000000000000FFu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #7 [ref=186x]
42435772 { 0x000000000000000Fu, 0x000000000000000Fu, 0xFF, 0, { 0 }, OpRWFlags::kRW }, // #8 [ref=18x]
42445773 { 0x000000000000000Fu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #9 [ref=135x]
42455774 { 0x0000000000000000u, 0x000000000000FFFFu, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #10 [ref=184x]
4246 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #11 [ref=455x]
5775 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #11 [ref=456x]
42475776 { 0x0000000000000003u, 0x0000000000000003u, 0xFF, 0, { 0 }, OpRWFlags::kRW }, // #12 [ref=1x]
42485777 { 0x0000000000000003u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #13 [ref=63x]
42495778 { 0x000000000000FFFFu, 0x0000000000000000u, 0x00, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kRegPhysId }, // #14 [ref=4x]
42975826 { 0x0000000000000000u, 0x000000000000FF00u, 0xFF, 0, { 0 }, OpRWFlags::kWrite }, // #62 [ref=1x]
42985827 { 0x0000000000000000u, 0x0000000000000000u, 0x07, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt | OpRWFlags::kMemBaseRW | OpRWFlags::kMemBasePostModify | OpRWFlags::kMemPhysId }, // #63 [ref=2x]
42995828 { 0x0000000000000000u, 0x0000000000000000u, 0x02, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kRegPhysId | OpRWFlags::kZExt }, // #64 [ref=1x]
4300 { 0x0000000000000000u, 0x0000000000000000u, 0x02, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kRegPhysId }, // #65 [ref=2x]
5829 { 0x0000000000000000u, 0x0000000000000000u, 0x02, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kRegPhysId }, // #65 [ref=1x]
43015830 { 0x0000000000000000u, 0x0000000000000000u, 0x06, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kMemPhysId }, // #66 [ref=1x]
43025831 { 0x0000000000000000u, 0x000000000000000Fu, 0x01, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt | OpRWFlags::kRegPhysId }, // #67 [ref=5x]
43035832 { 0x0000000000000000u, 0x000000000000FFFFu, 0x00, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt | OpRWFlags::kRegPhysId }, // #68 [ref=4x]
43045833 { 0x0000000000000000u, 0x0000000000000007u, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #69 [ref=2x]
4305 { 0x0000000000000000u, 0x0000000000000000u, 0x04, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt | OpRWFlags::kRegPhysId }, // #70 [ref=1x]
4306 { 0x0000000000000001u, 0x0000000000000000u, 0x01, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kRegPhysId }, // #71 [ref=10x]
4307 { 0x0000000000000001u, 0x0000000000000000u, 0x00, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kRegPhysId }, // #72 [ref=1x]
4308 { 0x0000000000000000u, 0x0000000000000001u, 0xFF, 0, { 0 }, OpRWFlags::kWrite }, // #73 [ref=30x]
4309 { 0x0000000000000000u, 0xFFFFFFFFFFFFFFFFu, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #74 [ref=20x]
4310 { 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFF, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kZExt }, // #75 [ref=7x]
4311 { 0xFFFFFFFFFFFFFFFFu, 0x0000000000000000u, 0xFF, 4, { 0 }, OpRWFlags::kRead }, // #76 [ref=4x]
4312 { 0xFFFFFFFFFFFFFFFFu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kConsecutive }, // #77 [ref=12x]
4313 { 0x000000000000FFFFu, 0x0000000000000000u, 0xFF, 4, { 0 }, OpRWFlags::kRead }, // #78 [ref=2x]
4314 { 0x000000000000FFFFu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kConsecutive }, // #79 [ref=6x]
4315 { 0x0000000000000000u, 0x00000000FFFFFFFFu, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #80 [ref=10x]
4316 { 0x00000000FFFFFFFFu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #81 [ref=16x]
4317 { 0x000000000000FFF0u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #82 [ref=18x]
4318 { 0x000000000000FFFCu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #83 [ref=8x]
4319 { 0x0000000000000000u, 0x0000000000000000u, 0x00, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kZExt | OpRWFlags::kRegPhysId }, // #84 [ref=1x]
4320 { 0x0000000000000000u, 0x00000000000000FFu, 0xFF, 2, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #85 [ref=2x]
4321 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt | OpRWFlags::kConsecutive } // #86 [ref=2x]
5834 { 0x0000000000000001u, 0x0000000000000000u, 0x01, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kRegPhysId }, // #70 [ref=10x]
5835 { 0x0000000000000001u, 0x0000000000000000u, 0x00, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kRegPhysId }, // #71 [ref=1x]
5836 { 0x0000000000000000u, 0x0000000000000001u, 0xFF, 0, { 0 }, OpRWFlags::kWrite }, // #72 [ref=30x]
5837 { 0x0000000000000000u, 0xFFFFFFFFFFFFFFFFu, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #73 [ref=20x]
5838 { 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFF, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kZExt }, // #74 [ref=7x]
5839 { 0xFFFFFFFFFFFFFFFFu, 0x0000000000000000u, 0xFF, 4, { 0 }, OpRWFlags::kRead }, // #75 [ref=4x]
5840 { 0xFFFFFFFFFFFFFFFFu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kConsecutive }, // #76 [ref=12x]
5841 { 0x000000000000FFFFu, 0x0000000000000000u, 0xFF, 4, { 0 }, OpRWFlags::kRead }, // #77 [ref=2x]
5842 { 0x000000000000FFFFu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead | OpRWFlags::kConsecutive }, // #78 [ref=6x]
5843 { 0x0000000000000000u, 0x00000000FFFFFFFFu, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #79 [ref=10x]
5844 { 0x00000000FFFFFFFFu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #80 [ref=16x]
5845 { 0x000000000000FFF0u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #81 [ref=18x]
5846 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kUnique | OpRWFlags::kZExt }, // #82 [ref=4x]
5847 { 0x000000000000FFFFu, 0x000000000000FFFFu, 0xFF, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kUnique | OpRWFlags::kZExt }, // #83 [ref=4x]
5848 { 0x000000000000FFFCu, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kRead }, // #84 [ref=8x]
5849 { 0x0000000000000000u, 0x0000000000000000u, 0x00, 0, { 0 }, OpRWFlags::kRW | OpRWFlags::kZExt | OpRWFlags::kRegPhysId }, // #85 [ref=1x]
5850 { 0x0000000000000000u, 0x00000000000000FFu, 0xFF, 2, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt }, // #86 [ref=2x]
5851 { 0x0000000000000000u, 0x0000000000000000u, 0xFF, 0, { 0 }, OpRWFlags::kWrite | OpRWFlags::kZExt | OpRWFlags::kConsecutive } // #87 [ref=2x]
43225852 };
43235853
43245854 const InstDB::RWInfoRm InstDB::rwInfoRm[] = {
44045934 INFO("Checking validity of Inst enums");
44055935
44065936 // Cross-validate prefixes.
4407 EXPECT(uint32_t(InstOptions::kX86_Rex ) == 0x40000000u, "REX prefix must be at 0x40000000");
4408 EXPECT(uint32_t(InstOptions::kX86_Evex) == 0x00001000u, "EVEX prefix must be at 0x00001000");
5937 EXPECT_EQ(uint32_t(InstOptions::kX86_Rex ), 0x40000000u)
5938 .message("REX prefix must be at 0x40000000");
5939
5940 EXPECT_EQ(uint32_t(InstOptions::kX86_Evex), 0x00001000u)
5941 .message("EVEX prefix must be at 0x00001000");
44095942
44105943 // These could be combined together to form a valid REX prefix, they must match.
4411 EXPECT(uint32_t(InstOptions::kX86_OpCodeB) == uint32_t(Opcode::kB), "Opcode::kB must match InstOptions::kX86_OpCodeB");
4412 EXPECT(uint32_t(InstOptions::kX86_OpCodeX) == uint32_t(Opcode::kX), "Opcode::kX must match InstOptions::kX86_OpCodeX");
4413 EXPECT(uint32_t(InstOptions::kX86_OpCodeR) == uint32_t(Opcode::kR), "Opcode::kR must match InstOptions::kX86_OpCodeR");
4414 EXPECT(uint32_t(InstOptions::kX86_OpCodeW) == uint32_t(Opcode::kW), "Opcode::kW must match InstOptions::kX86_OpCodeW");
5944 EXPECT_EQ(uint32_t(InstOptions::kX86_OpCodeB), uint32_t(Opcode::kB))
5945 .message("Opcode::kB must match InstOptions::kX86_OpCodeB");
5946
5947 EXPECT_EQ(uint32_t(InstOptions::kX86_OpCodeX), uint32_t(Opcode::kX))
5948 .message("Opcode::kX must match InstOptions::kX86_OpCodeX");
5949
5950 EXPECT_EQ(uint32_t(InstOptions::kX86_OpCodeR), uint32_t(Opcode::kR))
5951 .message("Opcode::kR must match InstOptions::kX86_OpCodeR");
5952
5953 EXPECT_EQ(uint32_t(InstOptions::kX86_OpCodeW), uint32_t(Opcode::kW))
5954 .message("Opcode::kW must match InstOptions::kX86_OpCodeW");
44155955
44165956 uint32_t rex_rb = (Opcode::kR >> Opcode::kREX_Shift) | (Opcode::kB >> Opcode::kREX_Shift) | 0x40;
44175957 uint32_t rex_rw = (Opcode::kR >> Opcode::kREX_Shift) | (Opcode::kW >> Opcode::kREX_Shift) | 0x40;
44185958
4419 EXPECT(rex_rb == 0x45, "Opcode::kR|B must form a valid REX prefix (0x45) if combined with 0x40");
4420 EXPECT(rex_rw == 0x4C, "Opcode::kR|W must form a valid REX prefix (0x4C) if combined with 0x40");
5959 EXPECT_EQ(rex_rb, 0x45u)
5960 .message("Opcode::kR|B must form a valid REX prefix (0x45) if combined with 0x40");
5961
5962 EXPECT_EQ(rex_rw, 0x4Cu)
5963 .message("Opcode::kR|W must form a valid REX prefix (0x4C) if combined with 0x40");
44215964 }
44225965 #endif
44235966
441441
442442 //! Instruction information.
443443 struct InstInfo {
444 //! Index to \ref _nameData.
445 uint32_t _nameDataIndex : 14;
444 //! Reserved for future use.
445 uint32_t _reserved : 14;
446446 //! Index to \ref _commonInfoTable.
447447 uint32_t _commonInfoIndex : 10;
448448 //! Index to \ref _additionalInfoTable.
212212
213213 struct RWInfo {
214214 enum Category : uint8_t {
215 kCategoryGeneric,
215 kCategoryGeneric = 0,
216 kCategoryGenericEx,
216217 kCategoryMov,
217218 kCategoryMovabs,
218219 kCategoryImul,
294295 extern const uint32_t _altOpcodeTable[];
295296
296297 #ifndef ASMJIT_NO_TEXT
297 extern const char _nameData[];
298 extern const uint32_t _instNameIndexTable[];
299 extern const char _instNameStringTable[];
298300 extern const InstNameIndex instNameIndex[26];
299301 #endif // !ASMJIT_NO_TEXT
300302
1818 Label L(1000); // Label with some ID.
1919
2020 INFO("Checking basic properties of built-in X86 registers");
21 EXPECT(gpb(Gp::kIdAx) == al);
22 EXPECT(gpb(Gp::kIdBx) == bl);
23 EXPECT(gpb(Gp::kIdCx) == cl);
24 EXPECT(gpb(Gp::kIdDx) == dl);
25
26 EXPECT(gpb_lo(Gp::kIdAx) == al);
27 EXPECT(gpb_lo(Gp::kIdBx) == bl);
28 EXPECT(gpb_lo(Gp::kIdCx) == cl);
29 EXPECT(gpb_lo(Gp::kIdDx) == dl);
30
31 EXPECT(gpb_hi(Gp::kIdAx) == ah);
32 EXPECT(gpb_hi(Gp::kIdBx) == bh);
33 EXPECT(gpb_hi(Gp::kIdCx) == ch);
34 EXPECT(gpb_hi(Gp::kIdDx) == dh);
35
36 EXPECT(gpw(Gp::kIdAx) == ax);
37 EXPECT(gpw(Gp::kIdBx) == bx);
38 EXPECT(gpw(Gp::kIdCx) == cx);
39 EXPECT(gpw(Gp::kIdDx) == dx);
40
41 EXPECT(gpd(Gp::kIdAx) == eax);
42 EXPECT(gpd(Gp::kIdBx) == ebx);
43 EXPECT(gpd(Gp::kIdCx) == ecx);
44 EXPECT(gpd(Gp::kIdDx) == edx);
45
46 EXPECT(gpq(Gp::kIdAx) == rax);
47 EXPECT(gpq(Gp::kIdBx) == rbx);
48 EXPECT(gpq(Gp::kIdCx) == rcx);
49 EXPECT(gpq(Gp::kIdDx) == rdx);
50
51 EXPECT(gpb(Gp::kIdAx) != dl);
52 EXPECT(gpw(Gp::kIdBx) != cx);
53 EXPECT(gpd(Gp::kIdCx) != ebx);
54 EXPECT(gpq(Gp::kIdDx) != rax);
21 EXPECT_EQ(gpb(Gp::kIdAx), al);
22 EXPECT_EQ(gpb(Gp::kIdBx), bl);
23 EXPECT_EQ(gpb(Gp::kIdCx), cl);
24 EXPECT_EQ(gpb(Gp::kIdDx), dl);
25
26 EXPECT_EQ(gpb_lo(Gp::kIdAx), al);
27 EXPECT_EQ(gpb_lo(Gp::kIdBx), bl);
28 EXPECT_EQ(gpb_lo(Gp::kIdCx), cl);
29 EXPECT_EQ(gpb_lo(Gp::kIdDx), dl);
30
31 EXPECT_EQ(gpb_hi(Gp::kIdAx), ah);
32 EXPECT_EQ(gpb_hi(Gp::kIdBx), bh);
33 EXPECT_EQ(gpb_hi(Gp::kIdCx), ch);
34 EXPECT_EQ(gpb_hi(Gp::kIdDx), dh);
35
36 EXPECT_EQ(gpw(Gp::kIdAx), ax);
37 EXPECT_EQ(gpw(Gp::kIdBx), bx);
38 EXPECT_EQ(gpw(Gp::kIdCx), cx);
39 EXPECT_EQ(gpw(Gp::kIdDx), dx);
40
41 EXPECT_EQ(gpd(Gp::kIdAx), eax);
42 EXPECT_EQ(gpd(Gp::kIdBx), ebx);
43 EXPECT_EQ(gpd(Gp::kIdCx), ecx);
44 EXPECT_EQ(gpd(Gp::kIdDx), edx);
45
46 EXPECT_EQ(gpq(Gp::kIdAx), rax);
47 EXPECT_EQ(gpq(Gp::kIdBx), rbx);
48 EXPECT_EQ(gpq(Gp::kIdCx), rcx);
49 EXPECT_EQ(gpq(Gp::kIdDx), rdx);
50
51 EXPECT_NE(gpb(Gp::kIdAx), dl);
52 EXPECT_NE(gpw(Gp::kIdBx), cx);
53 EXPECT_NE(gpd(Gp::kIdCx), ebx);
54 EXPECT_NE(gpq(Gp::kIdDx), rax);
5555
5656 INFO("Checking if x86::reg(...) matches built-in IDs");
57 EXPECT(gpb(5) == bpl);
58 EXPECT(gpw(5) == bp);
59 EXPECT(gpd(5) == ebp);
60 EXPECT(gpq(5) == rbp);
61 EXPECT(st(5) == st5);
62 EXPECT(mm(5) == mm5);
63 EXPECT(k(5) == k5);
64 EXPECT(cr(5) == cr5);
65 EXPECT(dr(5) == dr5);
66 EXPECT(xmm(5) == xmm5);
67 EXPECT(ymm(5) == ymm5);
68 EXPECT(zmm(5) == zmm5);
57 EXPECT_EQ(gpb(5), bpl);
58 EXPECT_EQ(gpw(5), bp);
59 EXPECT_EQ(gpd(5), ebp);
60 EXPECT_EQ(gpq(5), rbp);
61 EXPECT_EQ(st(5) , st5);
62 EXPECT_EQ(mm(5) , mm5);
63 EXPECT_EQ(k(5) , k5);
64 EXPECT_EQ(cr(5) , cr5);
65 EXPECT_EQ(dr(5) , dr5);
66 EXPECT_EQ(xmm(5), xmm5);
67 EXPECT_EQ(ymm(5), ymm5);
68 EXPECT_EQ(zmm(5), zmm5);
6969
7070 INFO("Checking x86::Gp register properties");
71 EXPECT(Gp().isReg() == true);
72 EXPECT(eax.isReg() == true);
73 EXPECT(eax.id() == 0);
74 EXPECT(eax.size() == 4);
75 EXPECT(eax.type() == RegType::kX86_Gpd);
76 EXPECT(eax.group() == RegGroup::kGp);
71 EXPECT_TRUE(Gp().isReg());
72 EXPECT_TRUE(eax.isReg());
73 EXPECT_EQ(eax.id(), 0u);
74 EXPECT_EQ(eax.size(), 4u);
75 EXPECT_EQ(eax.type(), RegType::kX86_Gpd);
76 EXPECT_EQ(eax.group(), RegGroup::kGp);
7777
7878 INFO("Checking x86::Xmm register properties");
79 EXPECT(Xmm().isReg() == true);
80 EXPECT(xmm4.isReg() == true);
81 EXPECT(xmm4.id() == 4);
82 EXPECT(xmm4.size() == 16);
83 EXPECT(xmm4.type() == RegType::kX86_Xmm);
84 EXPECT(xmm4.group() == RegGroup::kVec);
85 EXPECT(xmm4.isVec());
79 EXPECT_TRUE(Xmm().isReg());
80 EXPECT_TRUE(xmm4.isReg());
81 EXPECT_EQ(xmm4.id(), 4u);
82 EXPECT_EQ(xmm4.size(), 16u);
83 EXPECT_EQ(xmm4.type(), RegType::kX86_Xmm);
84 EXPECT_EQ(xmm4.group(), RegGroup::kVec);
85 EXPECT_TRUE(xmm4.isVec());
8686
8787 INFO("Checking x86::Ymm register properties");
88 EXPECT(Ymm().isReg() == true);
89 EXPECT(ymm5.isReg() == true);
90 EXPECT(ymm5.id() == 5);
91 EXPECT(ymm5.size() == 32);
92 EXPECT(ymm5.type() == RegType::kX86_Ymm);
93 EXPECT(ymm5.group() == RegGroup::kVec);
94 EXPECT(ymm5.isVec());
88 EXPECT_TRUE(Ymm().isReg());
89 EXPECT_TRUE(ymm5.isReg());
90 EXPECT_EQ(ymm5.id(), 5u);
91 EXPECT_EQ(ymm5.size(), 32u);
92 EXPECT_EQ(ymm5.type(), RegType::kX86_Ymm);
93 EXPECT_EQ(ymm5.group(), RegGroup::kVec);
94 EXPECT_TRUE(ymm5.isVec());
9595
9696 INFO("Checking x86::Zmm register properties");
97 EXPECT(Zmm().isReg() == true);
98 EXPECT(zmm6.isReg() == true);
99 EXPECT(zmm6.id() == 6);
100 EXPECT(zmm6.size() == 64);
101 EXPECT(zmm6.type() == RegType::kX86_Zmm);
102 EXPECT(zmm6.group() == RegGroup::kVec);
103 EXPECT(zmm6.isVec());
97 EXPECT_TRUE(Zmm().isReg());
98 EXPECT_TRUE(zmm6.isReg());
99 EXPECT_EQ(zmm6.id(), 6u);
100 EXPECT_EQ(zmm6.size(), 64u);
101 EXPECT_EQ(zmm6.type(), RegType::kX86_Zmm);
102 EXPECT_EQ(zmm6.group(), RegGroup::kVec);
103 EXPECT_TRUE(zmm6.isVec());
104104
105105 INFO("Checking x86::Vec register properties");
106 EXPECT(Vec().isReg() == true);
106 EXPECT_TRUE(Vec().isReg());
107107 // Converts a VEC register to a type of the passed register, but keeps the ID.
108 EXPECT(xmm4.cloneAs(ymm10) == ymm4);
109 EXPECT(xmm4.cloneAs(zmm11) == zmm4);
110 EXPECT(ymm5.cloneAs(xmm12) == xmm5);
111 EXPECT(ymm5.cloneAs(zmm13) == zmm5);
112 EXPECT(zmm6.cloneAs(xmm14) == xmm6);
113 EXPECT(zmm6.cloneAs(ymm15) == ymm6);
114
115 EXPECT(xmm7.xmm() == xmm7);
116 EXPECT(xmm7.ymm() == ymm7);
117 EXPECT(xmm7.zmm() == zmm7);
118
119 EXPECT(ymm7.xmm() == xmm7);
120 EXPECT(ymm7.ymm() == ymm7);
121 EXPECT(ymm7.zmm() == zmm7);
122
123 EXPECT(zmm7.xmm() == xmm7);
124 EXPECT(zmm7.ymm() == ymm7);
125 EXPECT(zmm7.zmm() == zmm7);
108 EXPECT_EQ(xmm4.cloneAs(ymm10), ymm4);
109 EXPECT_EQ(xmm4.cloneAs(zmm11), zmm4);
110 EXPECT_EQ(ymm5.cloneAs(xmm12), xmm5);
111 EXPECT_EQ(ymm5.cloneAs(zmm13), zmm5);
112 EXPECT_EQ(zmm6.cloneAs(xmm14), xmm6);
113 EXPECT_EQ(zmm6.cloneAs(ymm15), ymm6);
114
115 EXPECT_EQ(xmm7.xmm(), xmm7);
116 EXPECT_EQ(xmm7.ymm(), ymm7);
117 EXPECT_EQ(xmm7.zmm(), zmm7);
118
119 EXPECT_EQ(ymm7.xmm(), xmm7);
120 EXPECT_EQ(ymm7.ymm(), ymm7);
121 EXPECT_EQ(ymm7.zmm(), zmm7);
122
123 EXPECT_EQ(zmm7.xmm(), xmm7);
124 EXPECT_EQ(zmm7.ymm(), ymm7);
125 EXPECT_EQ(zmm7.zmm(), zmm7);
126126
127127 INFO("Checking x86::Mm register properties");
128 EXPECT(Mm().isReg() == true);
129 EXPECT(mm2.isReg() == true);
130 EXPECT(mm2.id() == 2);
131 EXPECT(mm2.size() == 8);
132 EXPECT(mm2.type() == RegType::kX86_Mm);
133 EXPECT(mm2.group() == RegGroup::kX86_MM);
128 EXPECT_TRUE(Mm().isReg());
129 EXPECT_TRUE(mm2.isReg());
130 EXPECT_EQ(mm2.id(), 2u);
131 EXPECT_EQ(mm2.size(), 8u);
132 EXPECT_EQ(mm2.type(), RegType::kX86_Mm);
133 EXPECT_EQ(mm2.group(), RegGroup::kX86_MM);
134134
135135 INFO("Checking x86::KReg register properties");
136 EXPECT(KReg().isReg() == true);
137 EXPECT(k3.isReg() == true);
138 EXPECT(k3.id() == 3);
139 EXPECT(k3.size() == 0);
140 EXPECT(k3.type() == RegType::kX86_KReg);
141 EXPECT(k3.group() == RegGroup::kX86_K);
136 EXPECT_TRUE(KReg().isReg());
137 EXPECT_TRUE(k3.isReg());
138 EXPECT_EQ(k3.id(), 3u);
139 EXPECT_EQ(k3.size(), 0u);
140 EXPECT_EQ(k3.type(), RegType::kX86_KReg);
141 EXPECT_EQ(k3.group(), RegGroup::kX86_K);
142142
143143 INFO("Checking x86::St register properties");
144 EXPECT(St().isReg() == true);
145 EXPECT(st1.isReg() == true);
146 EXPECT(st1.id() == 1);
147 EXPECT(st1.size() == 10);
148 EXPECT(st1.type() == RegType::kX86_St);
149 EXPECT(st1.group() == RegGroup::kX86_St);
144 EXPECT_TRUE(St().isReg());
145 EXPECT_TRUE(st1.isReg());
146 EXPECT_EQ(st1.id(), 1u);
147 EXPECT_EQ(st1.size(), 10u);
148 EXPECT_EQ(st1.type(), RegType::kX86_St);
149 EXPECT_EQ(st1.group(), RegGroup::kX86_St);
150150
151151 INFO("Checking if default constructed regs behave as expected");
152 EXPECT(Reg().isValid() == false);
153 EXPECT(Gp().isValid() == false);
154 EXPECT(Xmm().isValid() == false);
155 EXPECT(Ymm().isValid() == false);
156 EXPECT(Zmm().isValid() == false);
157 EXPECT(Mm().isValid() == false);
158 EXPECT(KReg().isValid() == false);
159 EXPECT(SReg().isValid() == false);
160 EXPECT(CReg().isValid() == false);
161 EXPECT(DReg().isValid() == false);
162 EXPECT(St().isValid() == false);
163 EXPECT(Bnd().isValid() == false);
152 EXPECT_FALSE(Reg().isValid());
153 EXPECT_FALSE(Gp().isValid());
154 EXPECT_FALSE(Xmm().isValid());
155 EXPECT_FALSE(Ymm().isValid());
156 EXPECT_FALSE(Zmm().isValid());
157 EXPECT_FALSE(Mm().isValid());
158 EXPECT_FALSE(KReg().isValid());
159 EXPECT_FALSE(SReg().isValid());
160 EXPECT_FALSE(CReg().isValid());
161 EXPECT_FALSE(DReg().isValid());
162 EXPECT_FALSE(St().isValid());
163 EXPECT_FALSE(Bnd().isValid());
164164
165165 INFO("Checking x86::Mem operand");
166166 Mem m;
167 EXPECT(m == Mem(), "Two default constructed x86::Mem operands must be equal");
167 EXPECT_EQ(m, Mem());
168168
169169 m = ptr(L);
170 EXPECT(m.hasBase() == true);
171 EXPECT(m.hasBaseReg() == false);
172 EXPECT(m.hasBaseLabel() == true);
173 EXPECT(m.hasOffset() == false);
174 EXPECT(m.isOffset64Bit() == false);
175 EXPECT(m.offset() == 0);
176 EXPECT(m.offsetLo32() == 0);
170 EXPECT_TRUE(m.hasBase());
171 EXPECT_FALSE(m.hasBaseReg());
172 EXPECT_TRUE(m.hasBaseLabel());
173 EXPECT_FALSE(m.hasOffset());
174 EXPECT_FALSE(m.isOffset64Bit());
175 EXPECT_EQ(m.offset(), 0);
176 EXPECT_EQ(m.offsetLo32(), 0);
177177
178178 m = ptr(0x0123456789ABCDEFu);
179 EXPECT(m.hasBase() == false);
180 EXPECT(m.hasBaseReg() == false);
181 EXPECT(m.hasIndex() == false);
182 EXPECT(m.hasIndexReg() == false);
183 EXPECT(m.hasOffset() == true);
184 EXPECT(m.isOffset64Bit() == true);
185 EXPECT(m.offset() == int64_t(0x0123456789ABCDEFu));
186 EXPECT(m.offsetLo32() == int32_t(0x89ABCDEFu));
179 EXPECT_FALSE(m.hasBase());
180 EXPECT_FALSE(m.hasBaseReg());
181 EXPECT_FALSE(m.hasIndex());
182 EXPECT_FALSE(m.hasIndexReg());
183 EXPECT_TRUE(m.hasOffset());
184 EXPECT_TRUE(m.isOffset64Bit());
185 EXPECT_EQ(m.offset(), int64_t(0x0123456789ABCDEFu));
186 EXPECT_EQ(m.offsetLo32(), int32_t(0x89ABCDEFu));
187187 m.addOffset(1);
188 EXPECT(m.offset() == int64_t(0x0123456789ABCDF0u));
188 EXPECT_EQ(m.offset(), int64_t(0x0123456789ABCDF0u));
189189
190190 m = ptr(0x0123456789ABCDEFu, rdi, 3);
191 EXPECT(m.hasSegment() == false);
192 EXPECT(m.hasBase() == false);
193 EXPECT(m.hasBaseReg() == false);
194 EXPECT(m.hasIndex() == true);
195 EXPECT(m.hasIndexReg() == true);
196 EXPECT(m.indexType() == rdi.type());
197 EXPECT(m.indexId() == rdi.id());
198 EXPECT(m.shift() == 3);
199 EXPECT(m.hasOffset() == true);
200 EXPECT(m.isOffset64Bit() == true);
201 EXPECT(m.offset() == int64_t(0x0123456789ABCDEFu));
202 EXPECT(m.offsetLo32() == int32_t(0x89ABCDEFu));
191 EXPECT_FALSE(m.hasSegment());
192 EXPECT_FALSE(m.hasBase());
193 EXPECT_FALSE(m.hasBaseReg());
194 EXPECT_TRUE(m.hasIndex());
195 EXPECT_TRUE(m.hasIndexReg());
196 EXPECT_EQ(m.indexType(), rdi.type());
197 EXPECT_EQ(m.indexId(), rdi.id());
198 EXPECT_EQ(m.shift(), 3u);
199 EXPECT_TRUE(m.hasOffset());
200 EXPECT_TRUE(m.isOffset64Bit());
201 EXPECT_EQ(m.offset(), int64_t(0x0123456789ABCDEFu));
202 EXPECT_EQ(m.offsetLo32(), int32_t(0x89ABCDEFu));
203203 m.resetIndex();
204 EXPECT(m.hasIndex() == false);
205 EXPECT(m.hasIndexReg() == false);
204 EXPECT_FALSE(m.hasIndex());
205 EXPECT_FALSE(m.hasIndexReg());
206206
207207 m = ptr(rax);
208 EXPECT(m.hasBase() == true);
209 EXPECT(m.hasBaseReg() == true);
210 EXPECT(m.baseType() == rax.type());
211 EXPECT(m.baseId() == rax.id());
212 EXPECT(m.hasIndex() == false);
213 EXPECT(m.hasIndexReg() == false);
214 EXPECT(m.indexType() == RegType::kNone);
215 EXPECT(m.indexId() == 0);
216 EXPECT(m.hasOffset() == false);
217 EXPECT(m.isOffset64Bit() == false);
218 EXPECT(m.offset() == 0);
219 EXPECT(m.offsetLo32() == 0);
208 EXPECT_TRUE(m.hasBase());
209 EXPECT_TRUE(m.hasBaseReg());
210 EXPECT_EQ(m.baseType(), rax.type());
211 EXPECT_EQ(m.baseId(), rax.id());
212 EXPECT_FALSE(m.hasIndex());
213 EXPECT_FALSE(m.hasIndexReg());
214 EXPECT_EQ(m.indexType(), RegType::kNone);
215 EXPECT_EQ(m.indexId(), 0u);
216 EXPECT_FALSE(m.hasOffset());
217 EXPECT_FALSE(m.isOffset64Bit());
218 EXPECT_EQ(m.offset(), 0);
219 EXPECT_EQ(m.offsetLo32(), 0);
220220 m.setIndex(rsi);
221 EXPECT(m.hasIndex() == true);
222 EXPECT(m.hasIndexReg() == true);
223 EXPECT(m.indexType() == rsi.type());
224 EXPECT(m.indexId() == rsi.id());
221 EXPECT_TRUE(m.hasIndex());
222 EXPECT_TRUE(m.hasIndexReg());
223 EXPECT_EQ(m.indexType(), rsi.type());
224 EXPECT_EQ(m.indexId(), rsi.id());
225225 }
226226 #endif
227227
182182 RATiedFlags flags = raRegRwFlags(opRwInfo.opFlags());
183183 RegMask allowedRegs = instructionAllowedRegs;
184184
185 if (opRwInfo.isUnique())
186 flags |= RATiedFlags::kUnique;
187
185188 // X86-specific constraints related to LO|HI general purpose registers. This is only required when the
186189 // register is part of the encoding. If the register is fixed we won't restrict anything as it doesn't
187190 // restrict encoding of other registers.
219222 }
220223 }
221224
222 // Do not use RegMem flag if changing Reg to Mem requires additional CPU feature that may not be enabled.
225 // Do not use RegMem flag if changing Reg to Mem requires a CPU feature that is not available.
223226 if (rwInfo.rmFeature() && Support::test(flags, RATiedFlags::kUseRM | RATiedFlags::kOutRM)) {
224 flags &= ~(RATiedFlags::kUseRM | RATiedFlags::kOutRM);
227 if (!cc()->code()->cpuFeatures().has(rwInfo.rmFeature())) {
228 flags &= ~(RATiedFlags::kUseRM | RATiedFlags::kOutRM);
229 }
225230 }
226231
227232 RegGroup group = workReg->group();
1212 #include <vector>
1313 #include <chrono>
1414
15 #if !defined(ASMJIT_NO_COMPILER)
16
1517 #include "cmdline.h"
1618 #include "asmjitutils.h"
1719 #include "performancetimer.h"
18
1920 #include "asmjit_test_compiler.h"
2021
21 #if !defined(ASMJIT_NO_X86) && ASMJIT_ARCH_X86
22 #include <asmjit/x86.h>
23 void compiler_add_x86_tests(TestApp& app);
24 #endif
25
26 #if !defined(ASMJIT_NO_AARCH64) && ASMJIT_ARCH_ARM == 64
27 #include <asmjit/a64.h>
28 void compiler_add_a64_tests(TestApp& app);
29 #endif
30
31 #if !defined(ASMJIT_NO_X86) && ASMJIT_ARCH_X86
32 #define ASMJIT_HAVE_WORKING_JIT
33 #endif
34
35 #if !defined(ASMJIT_NO_AARCH64) && ASMJIT_ARCH_ARM == 64
36 #define ASMJIT_HAVE_WORKING_JIT
37 #endif
22 #if !defined(ASMJIT_NO_X86)
23 #include <asmjit/x86.h>
24 void compiler_add_x86_tests(TestApp& app);
25 #endif // !ASMJIT_NO_X86
26
27 #if !defined(ASMJIT_NO_AARCH64)
28 #include <asmjit/a64.h>
29 void compiler_add_a64_tests(TestApp& app);
30 #endif // !ASMJIT_NO_AARCH64
3831
3932 using namespace asmjit;
4033
4134 int TestApp::handleArgs(int argc, const char* const* argv) {
4235 CmdLine cmd(argc, argv);
43
36 _arch = cmd.valueOf("--arch", "all");
37
38 if (cmd.hasArg("--help")) _helpOnly = true;
4439 if (cmd.hasArg("--verbose")) _verbose = true;
40
41 #ifndef ASMJIT_NO_LOGGING
4542 if (cmd.hasArg("--dump-asm")) _dumpAsm = true;
43 #endif // !ASMJIT_NO_LOGGING
44
4645 if (cmd.hasArg("--dump-hex")) _dumpHex = true;
4746
4847 return 0;
5453 unsigned((ASMJIT_LIBRARY_VERSION >> 8) & 0xFF),
5554 unsigned((ASMJIT_LIBRARY_VERSION ) & 0xFF),
5655 asmjitArchAsString(Arch::kHost));
57 printf(" [%s] Verbose (use --verbose to turn verbose output ON)\n", _verbose ? "x" : " ");
58 printf(" [%s] DumpAsm (use --dump-asm to turn assembler dumps ON)\n", _dumpAsm ? "x" : " ");
59 printf(" [%s] DumpHex (use --dump-hex to dump binary in hexadecimal)\n", _dumpHex ? "x" : " ");
56
57 printf("Usage:\n");
58 printf(" --help Show usage only\n");
59 printf(" --arch=<ARCH> Select architecture to run ('all' by default)\n");
60 printf(" --verbose Verbose output\n");
61 printf(" --dump-asm Assembler output\n");
62 printf(" --dump-hex Hexadecimal output (relocated, only for host arch)\n");
6063 printf("\n");
6164 }
6265
66 #ifndef ASMJIT_NO_LOGGING
67 class IndentedStdoutLogger : public Logger {
68 public:
69 ASMJIT_NONCOPYABLE(IndentedStdoutLogger)
70
71 size_t _indentation = 0;
72
73 explicit IndentedStdoutLogger(size_t indentation) noexcept
74 : _indentation(indentation) {}
75
76 Error _log(const char* data, size_t size = SIZE_MAX) noexcept override {
77 asmjit::DebugUtils::unused(size);
78 printIndented(data, _indentation);
79 return kErrorOk;
80 }
81 };
82 #endif // !ASMJIT_NO_LOGGING
83
6384 int TestApp::run() {
64 #ifndef ASMJIT_HAVE_WORKING_JIT
65 return 0;
66 #else
6785 #ifndef ASMJIT_NO_LOGGING
6886 FormatOptions formatOptions;
6987 formatOptions.addFlags(
7088 FormatFlags::kMachineCode |
7189 FormatFlags::kExplainImms |
7290 FormatFlags::kRegCasts );
73
74 FileLogger fileLogger(stdout);
75 fileLogger.setOptions(formatOptions);
91 formatOptions.setIndentation(FormatIndentationGroup::kCode, 2);
92
93 IndentedStdoutLogger printLogger(4);
94 printLogger.setOptions(formatOptions);
7695
7796 StringLogger stringLogger;
7897 stringLogger.setOptions(formatOptions);
79 #endif
80
98
99 auto printStringLoggerContent = [&]() {
100 if (!_verbose)
101 printf("%s", stringLogger.data());
102 };
103 #else
104 auto printStringLoggerContent = [&]() {};
105 #endif // !ASMJIT_NO_LOGGING
106
107 // maybe unused...
108 DebugUtils::unused(printStringLoggerContent);
109
110 #ifndef ASMJIT_NO_JIT
81111 JitRuntime runtime;
112 #endif // !ASMJIT_NO_JIT
82113
83114 PerformanceTimer compileTimer;
84115 PerformanceTimer finalizeTimer;
87118
88119 for (std::unique_ptr<TestCase>& test : _tests) {
89120 for (uint32_t pass = 0; pass < 2; pass++) {
121 bool runnable = false;
90122 CodeHolder code;
91123 SimpleErrorHandler errorHandler;
92124
93 code.init(runtime.environment());
125 const char* statusSeparator = " ";
126
127 // Filter architecture to run.
128 if (strcmp(_arch, "all") != 0) {
129 switch (test->arch()) {
130 case Arch::kX86:
131 if (strcmp(_arch, "x86") == 0)
132 break;
133 continue;
134 case Arch::kX64:
135 if (strcmp(_arch, "x64") == 0)
136 break;
137 continue;
138 case Arch::kAArch64:
139 if (strcmp(_arch, "aarch64") == 0)
140 break;
141 continue;
142 default:
143 continue;
144 }
145 }
146
147 // Use platform environment and CPU features when the test can run on the arch.
148 #ifndef ASMJIT_NO_JIT
149 if (runtime.arch() == test->arch()) {
150 code.init(runtime.environment(), runtime.cpuFeatures());
151 runnable = true;
152 }
153 #endif // !ASMJIT_NO_JIT
154
155 if (!code.isInitialized()) {
156 Environment customEnv;
157 CpuFeatures features;
158
159 switch (test->arch()) {
160 case Arch::kX86:
161 case Arch::kX64:
162 features.add(CpuFeatures::X86::kADX,
163 CpuFeatures::X86::kAVX,
164 CpuFeatures::X86::kAVX2,
165 CpuFeatures::X86::kBMI,
166 CpuFeatures::X86::kBMI2,
167 CpuFeatures::X86::kCMOV,
168 CpuFeatures::X86::kF16C,
169 CpuFeatures::X86::kFMA,
170 CpuFeatures::X86::kFPU,
171 CpuFeatures::X86::kI486,
172 CpuFeatures::X86::kLZCNT,
173 CpuFeatures::X86::kMMX,
174 CpuFeatures::X86::kMMX2,
175 CpuFeatures::X86::kPOPCNT,
176 CpuFeatures::X86::kSSE,
177 CpuFeatures::X86::kSSE2,
178 CpuFeatures::X86::kSSE3,
179 CpuFeatures::X86::kSSSE3,
180 CpuFeatures::X86::kSSE4_1,
181 CpuFeatures::X86::kSSE4_2);
182 break;
183
184 case Arch::kAArch64:
185 features.add(CpuFeatures::ARM::kAES,
186 CpuFeatures::ARM::kASIMD,
187 CpuFeatures::ARM::kIDIVA,
188 CpuFeatures::ARM::kIDIVT,
189 CpuFeatures::ARM::kPMULL);
190 break;
191
192 default:
193 break;
194 }
195
196 customEnv.init(test->arch());
197 code.init(customEnv, features);
198 }
199
94200 code.setErrorHandler(&errorHandler);
95201
96202 if (pass != 0) {
97 #ifndef ASMJIT_NO_LOGGING
203 printf("[Test:%s] %s", asmjitArchAsString(test->arch()), test->name());
204
205 #ifndef ASMJIT_NO_LOGGING
206 if (_verbose || _dumpAsm || _dumpHex) {
207 printf("\n");
208 statusSeparator = " ";
209 }
210
98211 if (_verbose) {
99 code.setLogger(&fileLogger);
212 printf(" [Log]\n");
213 code.setLogger(&printLogger);
100214 }
101215 else {
102216 stringLogger.clear();
103217 code.setLogger(&stringLogger);
104218 }
105 #endif
106
107 printf("[Test] %s", test->name());
108
109 #ifndef ASMJIT_NO_LOGGING
110 if (_verbose)
111 printf("\n");
112 #endif
113 }
114
115
116 #if !defined(ASMJIT_NO_X86) && ASMJIT_ARCH_X86
117 x86::Compiler cc(&code);
118 #endif
119
120 #if !defined(ASMJIT_NO_AARCH64) && ASMJIT_ARCH_ARM == 64
121 a64::Compiler cc(&code);
122 #endif
123
124 #ifndef ASMJIT_NO_LOGGING
125 cc.addDiagnosticOptions(DiagnosticOptions::kRAAnnotate | DiagnosticOptions::kRADebugAll);
126 #endif
219 #endif // !ASMJIT_NO_LOGGING
220 }
221
222 std::unique_ptr<BaseCompiler> cc;
223
224 #ifndef ASMJIT_NO_X86
225 if (code.arch() == Arch::kX86 || code.arch() == Arch::kX64)
226 cc = std::unique_ptr<x86::Compiler>(new x86::Compiler(&code));
227 #endif // !ASMJIT_NO_X86
228
229 #ifndef ASMJIT_NO_AARCH64
230 if (code.arch() == Arch::kAArch64)
231 cc = std::unique_ptr<a64::Compiler>(new a64::Compiler(&code));
232 #endif // !ASMJIT_NO_AARCH64
233
234 if (!cc)
235 continue;
236
237 #ifndef ASMJIT_NO_LOGGING
238 cc->addDiagnosticOptions(DiagnosticOptions::kRAAnnotate | DiagnosticOptions::kRADebugAll);
239 #endif // !ASMJIT_NO_LOGGING
127240
128241 compileTimer.start();
129 test->compile(cc);
242 test->compile(*cc);
130243 compileTimer.stop();
131244
132 void* func = nullptr;
133245 Error err = errorHandler._err;
134
135246 if (!err) {
136247 finalizeTimer.start();
137 err = cc.finalize();
248 err = cc->finalize();
138249 finalizeTimer.stop();
139250 }
140251
149260
150261 #ifndef ASMJIT_NO_LOGGING
151262 if (_dumpAsm) {
152 if (!_verbose)
153 printf("\n");
154
155263 String sb;
156 Formatter::formatNodeList(sb, formatOptions, &cc);
157 printf("%s", sb.data());
158 }
159 #endif
160
161 if (err == kErrorOk)
162 err = runtime.add(&func, &code);
163
164 if (err == kErrorOk && _dumpHex) {
165 String sb;
166 sb.appendHex((void*)func, code.codeSize());
167 printf("\n (HEX: %s)\n", sb.data());
168 }
169
170 if (_verbose)
171 fflush(stdout);
172
173 if (err == kErrorOk) {
174 _outputSize += code.codeSize();
175
176 StringTmp<128> result;
177 StringTmp<128> expect;
178
179 if (test->run(func, result, expect)) {
180 if (!_verbose)
181 printf(" [OK]\n");
264 Formatter::formatNodeList(sb, formatOptions, cc.get());
265 printf(" [Assembly]\n");
266 printIndented(sb.data(), 4);
267 }
268 #endif // !ASMJIT_NO_LOGGING
269
270 #ifndef ASMJIT_NO_JIT
271 if (runnable) {
272 void* func = nullptr;
273 if (err == kErrorOk)
274 err = runtime.add(&func, &code);
275
276 if (err == kErrorOk && _dumpHex) {
277 String sb;
278 sb.appendHex((void*)func, code.codeSize());
279 printf(" [Hex Dump]:\n");
280 for (size_t i = 0; i < sb.size(); i += 76) {
281 printf(" %.60s\n", sb.data() + i);
282 }
283 }
284
285 if (_verbose)
286 fflush(stdout);
287
288 if (err == kErrorOk) {
289 _outputSize += code.codeSize();
290
291 StringTmp<128> result;
292 StringTmp<128> expect;
293
294 if (test->run(func, result, expect)) {
295 if (!_verbose)
296 printf("%s[RUN OK]\n", statusSeparator);
297 }
298 else {
299 if (!_verbose)
300 printf("%s[RUN FAILED]\n", statusSeparator);
301
302 printStringLoggerContent();
303 printf(" [Output]\n");
304 printf(" Returned: %s\n", result.data());
305 printf(" Expected: %s\n", expect.data());
306 _nFailed++;
307 }
308
309 if (_dumpAsm)
310 printf("\n");
311
312 runtime.release(func);
182313 }
183314 else {
184315 if (!_verbose)
185 printf(" [FAILED]\n");
186
187 #ifndef ASMJIT_NO_LOGGING
188 if (!_verbose)
189 printf("%s", stringLogger.data());
190 #endif
191
192 printf("[Status]\n");
193 printf(" Returned: %s\n", result.data());
194 printf(" Expected: %s\n", expect.data());
195
316 printf("%s[COMPILE FAILED]\n", statusSeparator);
317
318 printStringLoggerContent();
319 printf(" [Status]\n");
320 printf(" ERROR 0x%08X: %s\n", unsigned(err), errorHandler._message.data());
196321 _nFailed++;
197322 }
198
199 if (_dumpAsm)
200 printf("\n");
201
202 runtime.release(func);
203 }
204 else {
205 if (!_verbose)
206 printf(" [FAILED]\n");
207
208 #ifndef ASMJIT_NO_LOGGING
209 if (!_verbose)
210 printf("%s", stringLogger.data());
211 #endif
212
213 printf("[Status]\n");
214 printf(" ERROR 0x%08X: %s\n", unsigned(err), errorHandler._message.data());
215
216 _nFailed++;
217 }
323 }
324 #endif // !ASMJIT_NO_JIT
325
326 if (!runnable) {
327 if (err) {
328 printf(" [Status]\n");
329 printf(" ERROR 0x%08X: %s\n", unsigned(err), errorHandler._message.data());
330 _nFailed++;
331 }
332 else {
333 printf("%s[COMPILE OK]\n", statusSeparator);
334 }
335 }
336
337 #ifndef ASMJIT_NO_LOGGING
338 if (_verbose || _dumpAsm || _dumpHex) {
339 printf("\n");
340 }
341 #endif // !ASMJIT_NO_LOGGING
218342 }
219343 }
220344
231355 printf("** FAILURE: %u of %u tests failed **\n", _nFailed, unsigned(_tests.size()));
232356
233357 return _nFailed == 0 ? 0 : 1;
234 #endif
235358 }
236359
237360 int main(int argc, char* argv[]) {
240363 app.handleArgs(argc, argv);
241364 app.showInfo();
242365
243 #if !defined(ASMJIT_NO_X86) && ASMJIT_ARCH_X86
366 #if !defined(ASMJIT_NO_X86)
244367 compiler_add_x86_tests(app);
245 #endif
246
247 #if !defined(ASMJIT_NO_AARCH64) && ASMJIT_ARCH_ARM == 64
368 #endif // !ASMJIT_NO_X86
369
370 #if !defined(ASMJIT_NO_AARCH64)
248371 compiler_add_a64_tests(app);
249 #endif
372 #endif // !ASMJIT_NO_AARCH64
250373
251374 return app.run();
252375 }
376
377 #else
378
379 int main(int argc, char* argv[]) {
380 DebugUtils::unused(argc, argv);
381
382 printf("AsmJit Compiler Test suite is disabled when compiling with ASMJIT_NO_COMPILER\n\n");
383 return 0;
384 }
385
386 #endif // !ASMJIT_NO_COMPILER
2828 //! A test case interface for testing AsmJit's Compiler.
2929 class TestCase {
3030 public:
31 TestCase(const char* name = nullptr) {
31 TestCase(const char* name, asmjit::Arch arch) {
3232 if (name)
3333 _name.assign(name);
34 _arch = arch;
3435 }
3536
3637 virtual ~TestCase() {}
3738
3839 inline const char* name() const { return _name.data(); }
40 inline asmjit::Arch arch() const { return _arch; }
3941
4042 virtual void compile(asmjit::BaseCompiler& cc) = 0;
4143 virtual bool run(void* func, asmjit::String& result, asmjit::String& expect) = 0;
4244
4345 asmjit::String _name;
46 asmjit::Arch _arch;
4447 };
4548
4649 class TestApp {
4750 public:
4851 std::vector<std::unique_ptr<TestCase>> _tests;
4952
50 unsigned _nFailed = 0;
51 size_t _outputSize = 0;
52
53 const char* _arch = nullptr;
54 bool _helpOnly = false;
5355 bool _verbose = false;
5456 bool _dumpAsm = false;
5557 bool _dumpHex = false;
5658
57 TestApp() noexcept {}
59 unsigned _nFailed = 0;
60 size_t _outputSize = 0;
61
62 TestApp() noexcept
63 : _arch("all") {}
5864 ~TestApp() noexcept {}
5965
6066 void add(TestCase* test) noexcept {
33 // SPDX-License-Identifier: Zlib
44
55 #include <asmjit/core.h>
6 #if !defined(ASMJIT_NO_AARCH64) && ASMJIT_ARCH_ARM == 64
6 #if !defined(ASMJIT_NO_COMPILER) && !defined(ASMJIT_NO_AARCH64)
77
88 #include <asmjit/a64.h>
99 #include <stdio.h>
2020 class A64TestCase : public TestCase {
2121 public:
2222 A64TestCase(const char* name = nullptr)
23 : TestCase(name) {}
23 : TestCase(name, Arch::kAArch64) {}
2424
2525 virtual void compile(BaseCompiler& cc) override {
2626 compile(static_cast<a64::Compiler&>(cc));
686686 app.addT<A64Test_JumpTable>();
687687 }
688688
689 #endif // !ASMJIT_NO_AARCH64 && ASMJIT_ARCH_ARM == 64
689 #endif // !ASMJIT_NO_COMPILER && !ASMJIT_NO_AARCH64
33 // SPDX-License-Identifier: Zlib
44
55 #include <asmjit/core.h>
6 #if !defined(ASMJIT_NO_X86) && ASMJIT_ARCH_X86
6 #if !defined(ASMJIT_NO_X86) && !defined(ASMJIT_NO_COMPILER)
77
88 #include <asmjit/x86.h>
99 #include <setjmp.h>
1111 #include <stdlib.h>
1212 #include <string.h>
1313
14 // Required for function tests that pass / return XMM registers.
15 #include <emmintrin.h>
14 #if ASMJIT_ARCH_X86
15 // Required for function tests that pass / return XMM registers.
16 #include <emmintrin.h>
17 #endif
1618
1719 #include "asmjit_test_misc.h"
1820 #include "asmjit_test_compiler.h"
3032 class X86TestCase : public TestCase {
3133 public:
3234 X86TestCase(const char* name = nullptr)
33 : TestCase(name) {}
35 : TestCase(name, Arch::kHost == Arch::kX86 ? Arch::kX86 : Arch::kX64) {}
3436
3537 virtual void compile(BaseCompiler& cc) override {
3638 compile(static_cast<x86::Compiler&>(cc));
18871889 // x86::Compiler - X86Test_AllocArgsVec
18881890 // ====================================
18891891
1892 #if ASMJIT_ARCH_X86
18901893 class X86Test_AllocArgsVec : public X86TestCase {
18911894 public:
18921895 X86Test_AllocArgsVec() : X86TestCase("AllocArgsVec") {}
19361939 return result == expect;
19371940 }
19381941 };
1942 #endif // ASMJIT_ARCH_X86
19391943
19401944 // x86::Compiler - X86Test_AllocRetFloat1
19411945 // ======================================
26142618 // x86::Compiler - X86Test_FuncCallSIMD
26152619 // ====================================
26162620
2621 #if ASMJIT_ARCH_X86
26172622 class X86Test_FuncCallSIMD : public X86TestCase {
26182623 public:
26192624 bool _useVectorCall;
27002705 }
27012706 #endif
27022707 };
2708 #endif // ASMJIT_ARCH_X86
27032709
27042710 // x86::Compiler - X86Test_FuncCallLight
27052711 // =====================================
43894395 app.addT<X86Test_AllocArgsIntPtr>();
43904396 app.addT<X86Test_AllocArgsFloat>();
43914397 app.addT<X86Test_AllocArgsDouble>();
4398 #if ASMJIT_ARCH_X86
43924399 app.addT<X86Test_AllocArgsVec>();
4400 #endif
43934401 app.addT<X86Test_AllocRetFloat1>();
43944402 app.addT<X86Test_AllocRetFloat2>();
43954403 app.addT<X86Test_AllocRetDouble1>();
44044412 app.addT<X86Test_FuncCallBase2>();
44054413 app.addT<X86Test_FuncCallStd>();
44064414 app.addT<X86Test_FuncCallFast>();
4415 #if ASMJIT_ARCH_X86
44074416 app.addT<X86Test_FuncCallSIMD>();
4417 #endif
44084418 app.addT<X86Test_FuncCallLight>();
44094419 app.addT<X86Test_FuncCallManyArgs>();
44104420 app.addT<X86Test_FuncCallDuplicateArgs>();
44354445 app.addT<X86Test_MiscUnfollow>();
44364446 }
44374447
4438 #endif // !ASMJIT_NO_X86 && ASMJIT_ARCH_X86
4448 #endif // !ASMJIT_NO_X86 && !ASMJIT_NO_COMPILER
44
55 #include <asmjit/core.h>
66
7 #if !defined(ASMJIT_NO_X86) && ASMJIT_ARCH_X86
7 #if ASMJIT_ARCH_X86 && !defined(ASMJIT_NO_X86) && !defined(ASMJIT_NO_JIT)
88 #include <asmjit/x86.h>
99
1010 #include <stdio.h>
8989 #endif
9090
9191 CodeHolder code;
92 code.init(rt.environment());
92 code.init(rt.environment(), rt.cpuFeatures());
9393
9494 #ifndef ASMJIT_NO_LOGGING
9595 code.setLogger(&logger);
190190 }
191191 #else
192192 int main() {
193 printf("AsmJit X86 Emitter Test is disabled on non-x86 host\n\n");
193 printf("AsmJit X86 Emitter Test is disabled on non-x86 hosts or when compiled with ASMJIT_NO_JIT option\n\n");
194194 return 0;
195195 }
196 #endif // !ASMJIT_NO_X86 && ASMJIT_ARCH_X86
196 #endif // ASMJIT_ARCH_X86 && !ASMJIT_NO_X86 && !ASMJIT_NO_JIT
99 #include "asmjitutils.h"
1010 #include "performancetimer.h"
1111
12 class MyErrorHandler : public asmjit::ErrorHandler {
12 namespace asmjit_perf_utils {
13
14 class TestErrorHandler : public asmjit::ErrorHandler {
1315 void handleError(asmjit::Error err, const char* message, asmjit::BaseEmitter* origin) {
1416 (void)err;
1517 (void)origin;
1820 }
1921 };
2022
23 #ifndef ASMJIT_NO_BUILDER
24 template<typename BuilderT, typename FuncT>
25 static uint32_t calculateInstructionCount(asmjit::CodeHolder& code, asmjit::Arch arch, const FuncT& func) noexcept {
26 BuilderT builder;
27 TestErrorHandler eh;
28
29 asmjit::Environment env(arch);
30 code.init(env);
31 code.setErrorHandler(&eh);
32 code.attach(&builder);
33 func(builder);
34
35 uint32_t count = 0;
36 asmjit::BaseNode* node = builder.firstNode();
37
38 while (node) {
39 count += uint32_t(node->isInst());
40 node = node->next();
41 }
42
43 return count;
44 }
45 #endif
46
47 static inline double mbps(double duration, uint64_t outputSize) noexcept {
48 if (duration == 0)
49 return 0.0;
50
51 double bytesTotal = double(outputSize);
52 return (bytesTotal * 1000) / (duration * 1024 * 1024);
53 }
54
55 static inline double mips(double duration, uint64_t instCount) noexcept {
56 if (duration == 0)
57 return 0.0;
58
59 return double(instCount) * 1000.0 / (duration * 1e6);
60 }
61
2162 template<typename EmitterT, typename FuncT>
22 static void bench(asmjit::CodeHolder& code, asmjit::Arch arch, uint32_t numIterations, const char* testName, const FuncT& func) noexcept {
63 static void bench(asmjit::CodeHolder& code, asmjit::Arch arch, uint32_t numIterations, const char* testName, uint32_t instCount, const FuncT& func) noexcept {
2364 EmitterT emitter;
24 MyErrorHandler eh;
65 TestErrorHandler eh;
2566
2667 const char* archName = asmjitArchAsString(arch);
2768 const char* emitterName =
5293 }
5394
5495 printf(" [%s] %-9s %-16s | CodeSize:%5llu [B] | Time:%8.4f [ms]", archName, emitterName, testName, (unsigned long long)codeSize, duration);
55 if (codeSize)
96 if (codeSize) {
5697 printf(" | Speed:%8.3f [MB/s]", mbps(duration, codeSize));
98 }
99 else {
100 printf(" | Speed: N/A ");
101 }
102
103 if (instCount) {
104 printf(", %8.3f [MI/s]", mips(duration, instCount));
105 }
106
57107 printf("\n");
58108 }
59109
110 } // {asmjit_perf_utils}
111
60112 #endif // ASMJIT_TEST_PERF_H_INCLUDED
644644 CodeHolder code;
645645 printf("%s:\n", description);
646646
647 bench<a64::Assembler>(code, arch, numIterations, "[raw]", [&](a64::Assembler& cc) {
647 uint32_t instCount = 0;
648
649 #ifndef ASMJIT_NO_BUILDER
650 instCount = asmjit_perf_utils::calculateInstructionCount<a64::Builder>(code, arch, [&](a64::Builder& cc) {
648651 emitterFn(cc, false);
649652 });
650
651 bench<a64::Assembler>(code, arch, numIterations, "[validated]", [&](a64::Assembler& cc) {
653 #endif
654
655 asmjit_perf_utils::bench<a64::Assembler>(code, arch, numIterations, "[raw]", instCount, [&](a64::Assembler& cc) {
656 emitterFn(cc, false);
657 });
658
659 asmjit_perf_utils::bench<a64::Assembler>(code, arch, numIterations, "[validated]", instCount, [&](a64::Assembler& cc) {
652660 cc.addDiagnosticOptions(DiagnosticOptions::kValidateAssembler);
653661 emitterFn(cc, false);
654662 });
655663
656 bench<a64::Assembler>(code, arch, numIterations, "[prolog/epilog]", [&](a64::Assembler& cc) {
664 asmjit_perf_utils::bench<a64::Assembler>(code, arch, numIterations, "[prolog/epilog]", instCount, [&](a64::Assembler& cc) {
657665 cc.addDiagnosticOptions(DiagnosticOptions::kValidateAssembler);
658666 emitterFn(cc, true);
659667 });
660668
661669 #ifndef ASMJIT_NO_BUILDER
662 bench<a64::Builder>(code, arch, numIterations, "[no-asm]", [&](a64::Builder& cc) {
670 asmjit_perf_utils::bench<a64::Builder>(code, arch, numIterations, "[no-asm]", instCount, [&](a64::Builder& cc) {
663671 emitterFn(cc, false);
664672 });
665673
666 bench<a64::Builder>(code, arch, numIterations, "[finalized]", [&](a64::Builder& cc) {
674 asmjit_perf_utils::bench<a64::Builder>(code, arch, numIterations, "[finalized]", instCount, [&](a64::Builder& cc) {
667675 emitterFn(cc, false);
668676 cc.finalize();
669677 });
670678
671 bench<a64::Builder>(code, arch, numIterations, "[prolog/epilog]", [&](a64::Builder& cc) {
679 asmjit_perf_utils::bench<a64::Builder>(code, arch, numIterations, "[prolog/epilog]", instCount, [&](a64::Builder& cc) {
672680 emitterFn(cc, true);
673681 cc.finalize();
674682 });
675683 #endif
676684
677685 #ifndef ASMJIT_NO_COMPILER
678 bench<a64::Compiler>(code, arch, numIterations, "[no-asm]", [&](a64::Compiler& cc) {
686 asmjit_perf_utils::bench<a64::Compiler>(code, arch, numIterations, "[no-asm]", instCount, [&](a64::Compiler& cc) {
679687 emitterFn(cc, true);
680688 });
681689
682 bench<a64::Compiler>(code, arch, numIterations, "[finalized]", [&](a64::Compiler& cc) {
690 asmjit_perf_utils::bench<a64::Compiler>(code, arch, numIterations, "[finalized]", instCount, [&](a64::Compiler& cc) {
683691 emitterFn(cc, true);
684692 cc.finalize();
685693 });
982982
983983 // Generates a long sequence of AVX instructions.
984984 template<typename Emitter>
985 static void generateAvxSequenceInternalRegOnly(
986 Emitter& cc,
987 const x86::Gp& gp,
988 const x86::Vec& vecA, const x86::Vec& vecB, const x86::Vec& vecC, const x86::Vec& vecD) {
989
990 x86::Gp gpd = gp.r32();
991 x86::Gp gpq = gp.r64();
992 x86::Gp gpz = cc.is32Bit() ? gpd : gpq;
993
994 x86::Xmm xmmA = vecA.xmm();
995 x86::Xmm xmmB = vecB.xmm();
996 x86::Xmm xmmC = vecC.xmm();
997 x86::Xmm xmmD = vecD.xmm();
998
999 x86::Ymm ymmA = vecA.ymm();
1000 x86::Ymm ymmB = vecB.ymm();
1001 x86::Ymm ymmC = vecC.ymm();
1002
1003 cc.xor_(gpd, gpd);
1004 cc.vxorps(xmmA, xmmA, xmmA);
1005 cc.vxorps(xmmB, xmmB, xmmB);
1006 cc.vxorps(xmmC, xmmC, xmmC);
1007 cc.vxorps(xmmD, xmmD, xmmD);
1008
1009 cc.vaddpd(xmmA, xmmB, xmmC);
1010 cc.vaddpd(ymmA, ymmB, ymmC);
1011 cc.vaddps(xmmA, xmmB, xmmC);
1012 cc.vaddps(ymmA, ymmB, ymmC);
1013 cc.vaddsd(xmmA, xmmB, xmmC);
1014 cc.vaddss(xmmA, xmmB, xmmC);
1015 cc.vaddsubpd(xmmA, xmmB, xmmC);
1016 cc.vaddsubpd(ymmA, ymmB, ymmC);
1017 cc.vaddsubps(xmmA, xmmB, xmmC);
1018 cc.vaddsubps(ymmA, ymmB, ymmC);
1019 cc.vandpd(xmmA, xmmB, xmmC);
1020 cc.vandpd(ymmA, ymmB, ymmC);
1021 cc.vandps(xmmA, xmmB, xmmC);
1022 cc.vandps(ymmA, ymmB, ymmC);
1023 cc.vandnpd(xmmA, xmmB, xmmC);
1024 cc.vandnpd(ymmA, ymmB, ymmC);
1025 cc.vandnps(xmmA, xmmB, xmmC);
1026 cc.vandnps(ymmA, ymmB, ymmC);
1027 cc.vblendpd(xmmA, xmmB, xmmC, 0);
1028 cc.vblendpd(ymmA, ymmB, ymmC, 0);
1029 cc.vblendps(xmmA, xmmB, xmmC, 0);
1030 cc.vblendps(ymmA, ymmB, ymmC, 0);
1031 cc.vblendvpd(xmmA, xmmB, xmmC, xmmA);
1032 cc.vblendvpd(ymmA, ymmB, ymmC, ymmA);
1033 cc.vcmppd(xmmA, xmmB, xmmC, 0);
1034 cc.vcmppd(ymmA, ymmB, ymmC, 0);
1035 cc.vcmpps(xmmA, xmmB, xmmC, 0);
1036 cc.vcmpps(ymmA, ymmB, ymmC, 0);
1037 cc.vcmpsd(xmmA, xmmB, xmmC, 0);
1038 cc.vcmpss(xmmA, xmmB, xmmC, 0);
1039 cc.vcomisd(xmmA, xmmB);
1040 cc.vcomiss(xmmA, xmmB);
1041 cc.vcvtdq2pd(xmmA, xmmB);
1042 cc.vcvtdq2pd(ymmA, xmmB);
1043 cc.vcvtdq2ps(xmmA, xmmB);
1044 cc.vcvtdq2ps(ymmA, ymmB);
1045 cc.vcvtpd2dq(xmmA, xmmB);
1046 cc.vcvtpd2dq(xmmA, ymmB);
1047 cc.vcvtpd2ps(xmmA, xmmB);
1048 cc.vcvtpd2ps(xmmA, ymmB);
1049 cc.vcvtps2dq(xmmA, xmmB);
1050 cc.vcvtps2dq(ymmA, ymmB);
1051 cc.vcvtps2pd(xmmA, xmmB);
1052 cc.vcvtps2pd(ymmA, xmmB);
1053 cc.vcvtsd2si(gpd, xmmB);
1054 cc.vcvtsd2si(gpz, xmmB);
1055 cc.vcvtsd2ss(xmmA, xmmB, xmmC);
1056 cc.vcvtsi2sd(xmmA, xmmB, gpd);
1057 cc.vcvtsi2sd(xmmA, xmmB, gpz);
1058 cc.vcvtsi2ss(xmmA, xmmB, gpd);
1059 cc.vcvtsi2ss(xmmA, xmmB, gpz);
1060 cc.vcvtss2sd(xmmA, xmmB, xmmC);
1061 cc.vcvtss2si(gpd, xmmB);
1062 cc.vcvttpd2dq(xmmA, xmmB);
1063 cc.vcvttpd2dq(xmmA, ymmB);
1064 cc.vcvttps2dq(xmmA, xmmB);
1065 cc.vcvttps2dq(ymmA, ymmB);
1066 cc.vcvttsd2si(gpd, xmmB);
1067 cc.vcvttss2si(gpz, xmmB);
1068 cc.vdivpd(xmmA, xmmB, xmmC);
1069 cc.vdivpd(ymmA, ymmB, ymmC);
1070 cc.vdivps(xmmA, xmmB, xmmC);
1071 cc.vdivps(ymmA, ymmB, ymmC);
1072 cc.vdivsd(xmmA, xmmB, xmmC);
1073 cc.vdivss(xmmA, xmmB, xmmC);
1074 cc.vdppd(xmmA, xmmB, xmmC, 0);
1075 cc.vdpps(xmmA, xmmB, xmmC, 0);
1076 cc.vdpps(ymmA, ymmB, ymmC, 0);
1077 cc.vextractf128(xmmA, ymmB, 0);
1078 cc.vextractps(gpd, xmmB, 0);
1079 cc.vhaddpd(xmmA, xmmB, xmmC);
1080 cc.vhaddpd(ymmA, ymmB, ymmC);
1081 cc.vhaddps(xmmA, xmmB, xmmC);
1082 cc.vhaddps(ymmA, ymmB, ymmC);
1083 cc.vhsubpd(xmmA, xmmB, xmmC);
1084 cc.vhsubpd(ymmA, ymmB, ymmC);
1085 cc.vhsubps(xmmA, xmmB, xmmC);
1086 cc.vhsubps(ymmA, ymmB, ymmC);
1087 cc.vinsertf128(ymmA, ymmB, xmmC, 0);
1088 cc.vinsertps(xmmA, xmmB, xmmC, 0);
1089 cc.vmaxpd(xmmA, xmmB, xmmC);
1090 cc.vmaxpd(ymmA, ymmB, ymmC);
1091 cc.vmaxps(xmmA, xmmB, xmmC);
1092 cc.vmaxps(ymmA, ymmB, ymmC);
1093 cc.vmaxsd(xmmA, xmmB, xmmC);
1094 cc.vmaxss(xmmA, xmmB, xmmC);
1095 cc.vminpd(xmmA, xmmB, xmmC);
1096 cc.vminpd(ymmA, ymmB, ymmC);
1097 cc.vminps(xmmA, xmmB, xmmC);
1098 cc.vminps(ymmA, ymmB, ymmC);
1099 cc.vminsd(xmmA, xmmB, xmmC);
1100 cc.vminss(xmmA, xmmB, xmmC);
1101 cc.vmovapd(xmmA, xmmB);
1102 cc.vmovapd(ymmA, ymmB);
1103 cc.vmovaps(xmmA, xmmB);
1104 cc.vmovaps(ymmA, ymmB);
1105 cc.vmovd(xmmA, gpd);
1106 cc.vmovd(gpd, xmmB);
1107 cc.vmovddup(xmmA, xmmB);
1108 cc.vmovddup(ymmA, ymmB);
1109 cc.vmovdqa(xmmA, xmmB);
1110 cc.vmovdqa(ymmA, ymmB);
1111 cc.vmovdqu(xmmA, xmmB);
1112 cc.vmovdqu(ymmA, ymmB);
1113 cc.vmovhlps(xmmA, xmmB, xmmC);
1114 cc.vmovlhps(xmmA, xmmB, xmmC);
1115 cc.vmovmskpd(gpd, xmmB);
1116 cc.vmovmskpd(gpd, ymmB);
1117 cc.vmovmskps(gpd, xmmB);
1118 cc.vmovmskps(gpd, ymmB);
1119 cc.vmovsd(xmmA, xmmB, xmmC);
1120 cc.vmovshdup(xmmA, xmmB);
1121 cc.vmovshdup(ymmA, ymmB);
1122 cc.vmovsldup(xmmA, xmmB);
1123 cc.vmovsldup(ymmA, ymmB);
1124 cc.vmovss(xmmA, xmmB, xmmC);
1125 cc.vmovupd(xmmA, xmmB);
1126 cc.vmovupd(ymmA, ymmB);
1127 cc.vmovups(xmmA, xmmB);
1128 cc.vmovups(ymmA, ymmB);
1129 cc.vmpsadbw(xmmA, xmmB, xmmC, 0);
1130 cc.vmulpd(xmmA, xmmB, xmmC);
1131 cc.vmulpd(ymmA, ymmB, ymmC);
1132 cc.vmulps(xmmA, xmmB, xmmC);
1133 cc.vmulps(ymmA, ymmB, ymmC);
1134 cc.vmulsd(xmmA, xmmB, xmmC);
1135 cc.vmulss(xmmA, xmmB, xmmC);
1136 cc.vorpd(xmmA, xmmB, xmmC);
1137 cc.vorpd(ymmA, ymmB, ymmC);
1138 cc.vorps(xmmA, xmmB, xmmC);
1139 cc.vorps(ymmA, ymmB, ymmC);
1140 cc.vpabsb(xmmA, xmmB);
1141 cc.vpabsd(xmmA, xmmB);
1142 cc.vpabsw(xmmA, xmmB);
1143 cc.vpackssdw(xmmA, xmmB, xmmC);
1144 cc.vpacksswb(xmmA, xmmB, xmmC);
1145 cc.vpackusdw(xmmA, xmmB, xmmC);
1146 cc.vpackuswb(xmmA, xmmB, xmmC);
1147 cc.vpaddb(xmmA, xmmB, xmmC);
1148 cc.vpaddd(xmmA, xmmB, xmmC);
1149 cc.vpaddq(xmmA, xmmB, xmmC);
1150 cc.vpaddw(xmmA, xmmB, xmmC);
1151 cc.vpaddsb(xmmA, xmmB, xmmC);
1152 cc.vpaddsw(xmmA, xmmB, xmmC);
1153 cc.vpaddusb(xmmA, xmmB, xmmC);
1154 cc.vpaddusw(xmmA, xmmB, xmmC);
1155 cc.vpalignr(xmmA, xmmB, xmmC, 0);
1156 cc.vpand(xmmA, xmmB, xmmC);
1157 cc.vpandn(xmmA, xmmB, xmmC);
1158 cc.vpavgb(xmmA, xmmB, xmmC);
1159 cc.vpavgw(xmmA, xmmB, xmmC);
1160 cc.vpblendvb(xmmA, xmmB, xmmC, xmmA);
1161 cc.vpblendw(xmmA, xmmB, xmmC, 0);
1162 cc.vpcmpeqb(xmmA, xmmB, xmmC);
1163 cc.vpcmpeqd(xmmA, xmmB, xmmC);
1164 cc.vpcmpeqq(xmmA, xmmB, xmmC);
1165 cc.vpcmpeqw(xmmA, xmmB, xmmC);
1166 cc.vpcmpgtb(xmmA, xmmB, xmmC);
1167 cc.vpcmpgtd(xmmA, xmmB, xmmC);
1168 cc.vpcmpgtq(xmmA, xmmB, xmmC);
1169 cc.vpcmpgtw(xmmA, xmmB, xmmC);
1170 cc.vpermilpd(xmmA, xmmB, xmmC);
1171 cc.vpermilpd(ymmA, ymmB, ymmC);
1172 cc.vpermilpd(xmmA, xmmB, 0);
1173 cc.vpermilpd(ymmA, ymmB, 0);
1174 cc.vpermilps(xmmA, xmmB, xmmC);
1175 cc.vpermilps(ymmA, ymmB, ymmC);
1176 cc.vpermilps(xmmA, xmmB, 0);
1177 cc.vpermilps(ymmA, ymmB, 0);
1178 cc.vperm2f128(ymmA, ymmB, ymmC, 0);
1179 cc.vpextrb(gpd, xmmB, 0);
1180 cc.vpextrd(gpd, xmmB, 0);
1181 if (cc.is64Bit()) cc.vpextrq(gpq, xmmB, 0);
1182 cc.vpextrw(gpd, xmmB, 0);
1183 cc.vphaddd(xmmA, xmmB, xmmC);
1184 cc.vphaddsw(xmmA, xmmB, xmmC);
1185 cc.vphaddw(xmmA, xmmB, xmmC);
1186 cc.vphminposuw(xmmA, xmmB);
1187 cc.vphsubd(xmmA, xmmB, xmmC);
1188 cc.vphsubsw(xmmA, xmmB, xmmC);
1189 cc.vphsubw(xmmA, xmmB, xmmC);
1190 cc.vpinsrb(xmmA, xmmB, gpd, 0);
1191 cc.vpinsrd(xmmA, xmmB, gpd, 0);
1192 cc.vpinsrw(xmmA, xmmB, gpd, 0);
1193 cc.vpmaddubsw(xmmA, xmmB, xmmC);
1194 cc.vpmaddwd(xmmA, xmmB, xmmC);
1195 cc.vpmaxsb(xmmA, xmmB, xmmC);
1196 cc.vpmaxsd(xmmA, xmmB, xmmC);
1197 cc.vpmaxsw(xmmA, xmmB, xmmC);
1198 cc.vpmaxub(xmmA, xmmB, xmmC);
1199 cc.vpmaxud(xmmA, xmmB, xmmC);
1200 cc.vpmaxuw(xmmA, xmmB, xmmC);
1201 cc.vpminsb(xmmA, xmmB, xmmC);
1202 cc.vpminsd(xmmA, xmmB, xmmC);
1203 cc.vpminsw(xmmA, xmmB, xmmC);
1204 cc.vpminub(xmmA, xmmB, xmmC);
1205 cc.vpminud(xmmA, xmmB, xmmC);
1206 cc.vpminuw(xmmA, xmmB, xmmC);
1207 cc.vpmovmskb(gpd, xmmB);
1208 cc.vpmovsxbd(xmmA, xmmB);
1209 cc.vpmovsxbq(xmmA, xmmB);
1210 cc.vpmovsxbw(xmmA, xmmB);
1211 cc.vpmovsxdq(xmmA, xmmB);
1212 cc.vpmovsxwd(xmmA, xmmB);
1213 cc.vpmovsxwq(xmmA, xmmB);
1214 cc.vpmovzxbd(xmmA, xmmB);
1215 cc.vpmovzxbq(xmmA, xmmB);
1216 cc.vpmovzxbw(xmmA, xmmB);
1217 cc.vpmovzxdq(xmmA, xmmB);
1218 cc.vpmovzxwd(xmmA, xmmB);
1219 cc.vpmovzxwq(xmmA, xmmB);
1220 cc.vpmuldq(xmmA, xmmB, xmmC);
1221 cc.vpmulhrsw(xmmA, xmmB, xmmC);
1222 cc.vpmulhuw(xmmA, xmmB, xmmC);
1223 cc.vpmulhw(xmmA, xmmB, xmmC);
1224 cc.vpmulld(xmmA, xmmB, xmmC);
1225 cc.vpmullw(xmmA, xmmB, xmmC);
1226 cc.vpmuludq(xmmA, xmmB, xmmC);
1227 cc.vpor(xmmA, xmmB, xmmC);
1228 cc.vpsadbw(xmmA, xmmB, xmmC);
1229 cc.vpshufb(xmmA, xmmB, xmmC);
1230 cc.vpshufd(xmmA, xmmB, 0);
1231 cc.vpshufhw(xmmA, xmmB, 0);
1232 cc.vpshuflw(xmmA, xmmB, 0);
1233 cc.vpsignb(xmmA, xmmB, xmmC);
1234 cc.vpsignd(xmmA, xmmB, xmmC);
1235 cc.vpsignw(xmmA, xmmB, xmmC);
1236 cc.vpslld(xmmA, xmmB, xmmC);
1237 cc.vpslld(xmmA, xmmB, 0);
1238 cc.vpslldq(xmmA, xmmB, 0);
1239 cc.vpsllq(xmmA, xmmB, xmmC);
1240 cc.vpsllq(xmmA, xmmB, 0);
1241 cc.vpsllw(xmmA, xmmB, xmmC);
1242 cc.vpsllw(xmmA, xmmB, 0);
1243 cc.vpsrad(xmmA, xmmB, xmmC);
1244 cc.vpsrad(xmmA, xmmB, 0);
1245 cc.vpsraw(xmmA, xmmB, xmmC);
1246 cc.vpsraw(xmmA, xmmB, 0);
1247 cc.vpsrld(xmmA, xmmB, xmmC);
1248 cc.vpsrld(xmmA, xmmB, 0);
1249 cc.vpsrldq(xmmA, xmmB, 0);
1250 cc.vpsrlq(xmmA, xmmB, xmmC);
1251 cc.vpsrlq(xmmA, xmmB, 0);
1252 cc.vpsrlw(xmmA, xmmB, xmmC);
1253 cc.vpsrlw(xmmA, xmmB, 0);
1254 cc.vpsubb(xmmA, xmmB, xmmC);
1255 cc.vpsubd(xmmA, xmmB, xmmC);
1256 cc.vpsubq(xmmA, xmmB, xmmC);
1257 cc.vpsubw(xmmA, xmmB, xmmC);
1258 cc.vpsubsb(xmmA, xmmB, xmmC);
1259 cc.vpsubsw(xmmA, xmmB, xmmC);
1260 cc.vpsubusb(xmmA, xmmB, xmmC);
1261 cc.vpsubusw(xmmA, xmmB, xmmC);
1262 cc.vptest(xmmA, xmmB);
1263 cc.vptest(ymmA, ymmB);
1264 cc.vpunpckhbw(xmmA, xmmB, xmmC);
1265 cc.vpunpckhdq(xmmA, xmmB, xmmC);
1266 cc.vpunpckhqdq(xmmA, xmmB, xmmC);
1267 cc.vpunpckhwd(xmmA, xmmB, xmmC);
1268 cc.vpunpcklbw(xmmA, xmmB, xmmC);
1269 cc.vpunpckldq(xmmA, xmmB, xmmC);
1270 cc.vpunpcklqdq(xmmA, xmmB, xmmC);
1271 cc.vpunpcklwd(xmmA, xmmB, xmmC);
1272 cc.vpxor(xmmA, xmmB, xmmC);
1273 cc.vrcpps(xmmA, xmmB);
1274 cc.vrcpps(ymmA, ymmB);
1275 cc.vrcpss(xmmA, xmmB, xmmC);
1276 cc.vrsqrtps(xmmA, xmmB);
1277 cc.vrsqrtps(ymmA, ymmB);
1278 cc.vrsqrtss(xmmA, xmmB, xmmC);
1279 cc.vroundpd(xmmA, xmmB, 0);
1280 cc.vroundpd(ymmA, ymmB, 0);
1281 cc.vroundps(xmmA, xmmB, 0);
1282 cc.vroundps(ymmA, ymmB, 0);
1283 cc.vroundsd(xmmA, xmmB, xmmC, 0);
1284 cc.vroundss(xmmA, xmmB, xmmC, 0);
1285 cc.vshufpd(xmmA, xmmB, xmmC, 0);
1286 cc.vshufpd(ymmA, ymmB, ymmC, 0);
1287 cc.vshufps(xmmA, xmmB, xmmC, 0);
1288 cc.vshufps(ymmA, ymmB, ymmC, 0);
1289 cc.vsqrtpd(xmmA, xmmB);
1290 cc.vsqrtpd(ymmA, ymmB);
1291 cc.vsqrtps(xmmA, xmmB);
1292 cc.vsqrtps(ymmA, ymmB);
1293 cc.vsqrtsd(xmmA, xmmB, xmmC);
1294 cc.vsqrtss(xmmA, xmmB, xmmC);
1295 cc.vsubpd(xmmA, xmmB, xmmC);
1296 cc.vsubpd(ymmA, ymmB, ymmC);
1297 cc.vsubps(xmmA, xmmB, xmmC);
1298 cc.vsubps(ymmA, ymmB, ymmC);
1299 cc.vsubsd(xmmA, xmmB, xmmC);
1300 cc.vsubss(xmmA, xmmB, xmmC);
1301 cc.vtestps(xmmA, xmmB);
1302 cc.vtestps(ymmA, ymmB);
1303 cc.vtestpd(xmmA, xmmB);
1304 cc.vtestpd(ymmA, ymmB);
1305 cc.vucomisd(xmmA, xmmB);
1306 cc.vucomiss(xmmA, xmmB);
1307 cc.vunpckhpd(xmmA, xmmB, xmmC);
1308 cc.vunpckhpd(ymmA, ymmB, ymmC);
1309 cc.vunpckhps(xmmA, xmmB, xmmC);
1310 cc.vunpckhps(ymmA, ymmB, ymmC);
1311 cc.vunpcklpd(xmmA, xmmB, xmmC);
1312 cc.vunpcklpd(ymmA, ymmB, ymmC);
1313 cc.vunpcklps(xmmA, xmmB, xmmC);
1314 cc.vunpcklps(ymmA, ymmB, ymmC);
1315 cc.vxorpd(xmmA, xmmB, xmmC);
1316 cc.vxorpd(ymmA, ymmB, ymmC);
1317 cc.vxorps(xmmA, xmmB, xmmC);
1318 cc.vxorps(ymmA, ymmB, ymmC);
1319
1320 // AVX+AESNI.
1321 cc.vaesdec(xmmA, xmmB, xmmC);
1322 cc.vaesdeclast(xmmA, xmmB, xmmC);
1323 cc.vaesenc(xmmA, xmmB, xmmC);
1324 cc.vaesenclast(xmmA, xmmB, xmmC);
1325 cc.vaesimc(xmmA, xmmB);
1326 cc.vaeskeygenassist(xmmA, xmmB, 0);
1327
1328 // AVX+PCLMULQDQ.
1329 cc.vpclmulqdq(xmmA, xmmB, xmmC, 0);
1330
1331 // AVX2.
1332 cc.vbroadcastsd(ymmA, xmmB);
1333 cc.vbroadcastss(xmmA, xmmB);
1334 cc.vbroadcastss(ymmA, xmmB);
1335 cc.vextracti128(xmmA, ymmB, 0);
1336 cc.vinserti128(ymmA, ymmB, xmmC, 0);
1337 cc.vmpsadbw(ymmA, ymmB, ymmC, 0);
1338 cc.vpabsb(ymmA, ymmB);
1339 cc.vpabsd(ymmA, ymmB);
1340 cc.vpabsw(ymmA, ymmB);
1341 cc.vpackssdw(ymmA, ymmB, ymmC);
1342 cc.vpacksswb(ymmA, ymmB, ymmC);
1343 cc.vpackusdw(ymmA, ymmB, ymmC);
1344 cc.vpackuswb(ymmA, ymmB, ymmC);
1345 cc.vpaddb(ymmA, ymmB, ymmC);
1346 cc.vpaddd(ymmA, ymmB, ymmC);
1347 cc.vpaddq(ymmA, ymmB, ymmC);
1348 cc.vpaddw(ymmA, ymmB, ymmC);
1349 cc.vpaddsb(ymmA, ymmB, ymmC);
1350 cc.vpaddsw(ymmA, ymmB, ymmC);
1351 cc.vpaddusb(ymmA, ymmB, ymmC);
1352 cc.vpaddusw(ymmA, ymmB, ymmC);
1353 cc.vpalignr(ymmA, ymmB, ymmC, 0);
1354 cc.vpand(ymmA, ymmB, ymmC);
1355 cc.vpandn(ymmA, ymmB, ymmC);
1356 cc.vpavgb(ymmA, ymmB, ymmC);
1357 cc.vpavgw(ymmA, ymmB, ymmC);
1358 cc.vpblendd(xmmA, xmmB, xmmC, 0);
1359 cc.vpblendd(ymmA, ymmB, ymmC, 0);
1360 cc.vpblendvb(ymmA, ymmB, ymmC, ymmA);
1361 cc.vpblendw(ymmA, ymmB, ymmC, 0);
1362 cc.vpbroadcastb(xmmA, xmmB);
1363 cc.vpbroadcastb(ymmA, xmmB);
1364 cc.vpbroadcastd(xmmA, xmmB);
1365 cc.vpbroadcastd(ymmA, xmmB);
1366 cc.vpbroadcastq(xmmA, xmmB);
1367 cc.vpbroadcastq(ymmA, xmmB);
1368 cc.vpbroadcastw(xmmA, xmmB);
1369 cc.vpbroadcastw(ymmA, xmmB);
1370 cc.vpcmpeqb(ymmA, ymmB, ymmC);
1371 cc.vpcmpeqd(ymmA, ymmB, ymmC);
1372 cc.vpcmpeqq(ymmA, ymmB, ymmC);
1373 cc.vpcmpeqw(ymmA, ymmB, ymmC);
1374 cc.vpcmpgtb(ymmA, ymmB, ymmC);
1375 cc.vpcmpgtd(ymmA, ymmB, ymmC);
1376 cc.vpcmpgtq(ymmA, ymmB, ymmC);
1377 cc.vpcmpgtw(ymmA, ymmB, ymmC);
1378 cc.vperm2i128(ymmA, ymmB, ymmC, 0);
1379 cc.vpermd(ymmA, ymmB, ymmC);
1380 cc.vpermps(ymmA, ymmB, ymmC);
1381 cc.vpermpd(ymmA, ymmB, 0);
1382 cc.vpermq(ymmA, ymmB, 0);
1383 cc.vpmovmskb(gpd, ymmB);
1384 cc.vpmovsxbd(ymmA, xmmB);
1385 cc.vpmovsxbq(ymmA, xmmB);
1386 cc.vpmovsxbw(ymmA, xmmB);
1387 cc.vpmovsxdq(ymmA, xmmB);
1388 cc.vpmovsxwd(ymmA, xmmB);
1389 cc.vpmovsxwq(ymmA, xmmB);
1390 cc.vpmovzxbd(ymmA, xmmB);
1391 cc.vpmovzxbq(ymmA, xmmB);
1392 cc.vpmovzxbw(ymmA, xmmB);
1393 cc.vpmovzxdq(ymmA, xmmB);
1394 cc.vpmovzxwd(ymmA, xmmB);
1395 cc.vpmovzxwq(ymmA, xmmB);
1396 cc.vpshufd(ymmA, ymmB, 0);
1397 cc.vpshufhw(ymmA, ymmB, 0);
1398 cc.vpshuflw(ymmA, ymmB, 0);
1399 cc.vpslld(ymmA, ymmB, 0);
1400 cc.vpslldq(ymmA, ymmB, 0);
1401 cc.vpsllq(ymmA, ymmB, 0);
1402 cc.vpsllw(ymmA, ymmB, 0);
1403 cc.vpsrad(ymmA, ymmB, 0);
1404 cc.vpsraw(ymmA, ymmB, 0);
1405 cc.vpsrld(ymmA, ymmB, 0);
1406 cc.vpsrldq(ymmA, ymmB, 0);
1407 cc.vpsrlq(ymmA, ymmB, 0);
1408 cc.vpsrlw(ymmA, ymmB, 0);
1409 cc.vphaddd(ymmA, ymmB, ymmC);
1410 cc.vphaddsw(ymmA, ymmB, ymmC);
1411 cc.vphaddw(ymmA, ymmB, ymmC);
1412 cc.vphsubd(ymmA, ymmB, ymmC);
1413 cc.vphsubsw(ymmA, ymmB, ymmC);
1414 cc.vphsubw(ymmA, ymmB, ymmC);
1415 cc.vpmaddubsw(ymmA, ymmB, ymmC);
1416 cc.vpmaddwd(ymmA, ymmB, ymmC);
1417 cc.vpmaxsb(ymmA, ymmB, ymmC);
1418 cc.vpmaxsd(ymmA, ymmB, ymmC);
1419 cc.vpmaxsw(ymmA, ymmB, ymmC);
1420 cc.vpmaxub(ymmA, ymmB, ymmC);
1421 cc.vpmaxud(ymmA, ymmB, ymmC);
1422 cc.vpmaxuw(ymmA, ymmB, ymmC);
1423 cc.vpminsb(ymmA, ymmB, ymmC);
1424 cc.vpminsd(ymmA, ymmB, ymmC);
1425 cc.vpminsw(ymmA, ymmB, ymmC);
1426 cc.vpminub(ymmA, ymmB, ymmC);
1427 cc.vpminud(ymmA, ymmB, ymmC);
1428 cc.vpminuw(ymmA, ymmB, ymmC);
1429 cc.vpmuldq(ymmA, ymmB, ymmC);
1430 cc.vpmulhrsw(ymmA, ymmB, ymmC);
1431 cc.vpmulhuw(ymmA, ymmB, ymmC);
1432 cc.vpmulhw(ymmA, ymmB, ymmC);
1433 cc.vpmulld(ymmA, ymmB, ymmC);
1434 cc.vpmullw(ymmA, ymmB, ymmC);
1435 cc.vpmuludq(ymmA, ymmB, ymmC);
1436 cc.vpor(ymmA, ymmB, ymmC);
1437 cc.vpsadbw(ymmA, ymmB, ymmC);
1438 cc.vpshufb(ymmA, ymmB, ymmC);
1439 cc.vpsignb(ymmA, ymmB, ymmC);
1440 cc.vpsignd(ymmA, ymmB, ymmC);
1441 cc.vpsignw(ymmA, ymmB, ymmC);
1442 cc.vpslld(ymmA, ymmB, xmmC);
1443 cc.vpsllq(ymmA, ymmB, xmmC);
1444 cc.vpsllvd(xmmA, xmmB, xmmC);
1445 cc.vpsllvd(ymmA, ymmB, ymmC);
1446 cc.vpsllvq(xmmA, xmmB, xmmC);
1447 cc.vpsllvq(ymmA, ymmB, ymmC);
1448 cc.vpsllw(ymmA, ymmB, xmmC);
1449 cc.vpsrad(ymmA, ymmB, xmmC);
1450 cc.vpsravd(xmmA, xmmB, xmmC);
1451 cc.vpsravd(ymmA, ymmB, ymmC);
1452 cc.vpsraw(ymmA, ymmB, xmmC);
1453 cc.vpsrld(ymmA, ymmB, xmmC);
1454 cc.vpsrlq(ymmA, ymmB, xmmC);
1455 cc.vpsrlvd(xmmA, xmmB, xmmC);
1456 cc.vpsrlvd(ymmA, ymmB, ymmC);
1457 cc.vpsrlvq(xmmA, xmmB, xmmC);
1458 cc.vpsrlvq(ymmA, ymmB, ymmC);
1459 cc.vpsrlw(ymmA, ymmB, xmmC);
1460 cc.vpsubb(ymmA, ymmB, ymmC);
1461 cc.vpsubd(ymmA, ymmB, ymmC);
1462 cc.vpsubq(ymmA, ymmB, ymmC);
1463 cc.vpsubsb(ymmA, ymmB, ymmC);
1464 cc.vpsubsw(ymmA, ymmB, ymmC);
1465 cc.vpsubusb(ymmA, ymmB, ymmC);
1466 cc.vpsubusw(ymmA, ymmB, ymmC);
1467 cc.vpsubw(ymmA, ymmB, ymmC);
1468 cc.vpunpckhbw(ymmA, ymmB, ymmC);
1469 cc.vpunpckhdq(ymmA, ymmB, ymmC);
1470 cc.vpunpckhqdq(ymmA, ymmB, ymmC);
1471 cc.vpunpckhwd(ymmA, ymmB, ymmC);
1472 cc.vpunpcklbw(ymmA, ymmB, ymmC);
1473 cc.vpunpckldq(ymmA, ymmB, ymmC);
1474 cc.vpunpcklqdq(ymmA, ymmB, ymmC);
1475 cc.vpunpcklwd(ymmA, ymmB, ymmC);
1476 cc.vpxor(ymmA, ymmB, ymmC);
1477
1478 // FMA.
1479 cc.vfmadd132pd(xmmA, xmmB, xmmC);
1480 cc.vfmadd132pd(ymmA, ymmB, ymmC);
1481 cc.vfmadd132ps(xmmA, xmmB, xmmC);
1482 cc.vfmadd132ps(ymmA, ymmB, ymmC);
1483 cc.vfmadd132sd(xmmA, xmmB, xmmC);
1484 cc.vfmadd132ss(xmmA, xmmB, xmmC);
1485 cc.vfmadd213pd(xmmA, xmmB, xmmC);
1486 cc.vfmadd213pd(ymmA, ymmB, ymmC);
1487 cc.vfmadd213ps(xmmA, xmmB, xmmC);
1488 cc.vfmadd213ps(ymmA, ymmB, ymmC);
1489 cc.vfmadd213sd(xmmA, xmmB, xmmC);
1490 cc.vfmadd213ss(xmmA, xmmB, xmmC);
1491 cc.vfmadd231pd(xmmA, xmmB, xmmC);
1492 cc.vfmadd231pd(ymmA, ymmB, ymmC);
1493 cc.vfmadd231ps(xmmA, xmmB, xmmC);
1494 cc.vfmadd231ps(ymmA, ymmB, ymmC);
1495 cc.vfmadd231sd(xmmA, xmmB, xmmC);
1496 cc.vfmadd231ss(xmmA, xmmB, xmmC);
1497 cc.vfmaddsub132pd(xmmA, xmmB, xmmC);
1498 cc.vfmaddsub132pd(ymmA, ymmB, ymmC);
1499 cc.vfmaddsub132ps(xmmA, xmmB, xmmC);
1500 cc.vfmaddsub132ps(ymmA, ymmB, ymmC);
1501 cc.vfmaddsub213pd(xmmA, xmmB, xmmC);
1502 cc.vfmaddsub213pd(ymmA, ymmB, ymmC);
1503 cc.vfmaddsub213ps(xmmA, xmmB, xmmC);
1504 cc.vfmaddsub213ps(ymmA, ymmB, ymmC);
1505 cc.vfmaddsub231pd(xmmA, xmmB, xmmC);
1506 cc.vfmaddsub231pd(ymmA, ymmB, ymmC);
1507 cc.vfmaddsub231ps(xmmA, xmmB, xmmC);
1508 cc.vfmaddsub231ps(ymmA, ymmB, ymmC);
1509 cc.vfmsub132pd(xmmA, xmmB, xmmC);
1510 cc.vfmsub132pd(ymmA, ymmB, ymmC);
1511 cc.vfmsub132ps(xmmA, xmmB, xmmC);
1512 cc.vfmsub132ps(ymmA, ymmB, ymmC);
1513 cc.vfmsub132sd(xmmA, xmmB, xmmC);
1514 cc.vfmsub132ss(xmmA, xmmB, xmmC);
1515 cc.vfmsub213pd(xmmA, xmmB, xmmC);
1516 cc.vfmsub213pd(ymmA, ymmB, ymmC);
1517 cc.vfmsub213ps(xmmA, xmmB, xmmC);
1518 cc.vfmsub213ps(ymmA, ymmB, ymmC);
1519 cc.vfmsub213sd(xmmA, xmmB, xmmC);
1520 cc.vfmsub213ss(xmmA, xmmB, xmmC);
1521 cc.vfmsub231pd(xmmA, xmmB, xmmC);
1522 cc.vfmsub231pd(ymmA, ymmB, ymmC);
1523 cc.vfmsub231ps(xmmA, xmmB, xmmC);
1524 cc.vfmsub231ps(ymmA, ymmB, ymmC);
1525 cc.vfmsub231sd(xmmA, xmmB, xmmC);
1526 cc.vfmsub231ss(xmmA, xmmB, xmmC);
1527 cc.vfmsubadd132pd(xmmA, xmmB, xmmC);
1528 cc.vfmsubadd132pd(ymmA, ymmB, ymmC);
1529 cc.vfmsubadd132ps(xmmA, xmmB, xmmC);
1530 cc.vfmsubadd132ps(ymmA, ymmB, ymmC);
1531 cc.vfmsubadd213pd(xmmA, xmmB, xmmC);
1532 cc.vfmsubadd213pd(ymmA, ymmB, ymmC);
1533 cc.vfmsubadd213ps(xmmA, xmmB, xmmC);
1534 cc.vfmsubadd213ps(ymmA, ymmB, ymmC);
1535 cc.vfmsubadd231pd(xmmA, xmmB, xmmC);
1536 cc.vfmsubadd231pd(ymmA, ymmB, ymmC);
1537 cc.vfmsubadd231ps(xmmA, xmmB, xmmC);
1538 cc.vfmsubadd231ps(ymmA, ymmB, ymmC);
1539 cc.vfnmadd132pd(xmmA, xmmB, xmmC);
1540 cc.vfnmadd132pd(ymmA, ymmB, ymmC);
1541 cc.vfnmadd132ps(xmmA, xmmB, xmmC);
1542 cc.vfnmadd132ps(ymmA, ymmB, ymmC);
1543 cc.vfnmadd132sd(xmmA, xmmB, xmmC);
1544 cc.vfnmadd132ss(xmmA, xmmB, xmmC);
1545 cc.vfnmadd213pd(xmmA, xmmB, xmmC);
1546 cc.vfnmadd213pd(ymmA, ymmB, ymmC);
1547 cc.vfnmadd213ps(xmmA, xmmB, xmmC);
1548 cc.vfnmadd213ps(ymmA, ymmB, ymmC);
1549 cc.vfnmadd213sd(xmmA, xmmB, xmmC);
1550 cc.vfnmadd213ss(xmmA, xmmB, xmmC);
1551 cc.vfnmadd231pd(xmmA, xmmB, xmmC);
1552 cc.vfnmadd231pd(ymmA, ymmB, ymmC);
1553 cc.vfnmadd231ps(xmmA, xmmB, xmmC);
1554 cc.vfnmadd231ps(ymmA, ymmB, ymmC);
1555 cc.vfnmadd231sd(xmmA, xmmB, xmmC);
1556 cc.vfnmadd231ss(xmmA, xmmB, xmmC);
1557 cc.vfnmsub132pd(xmmA, xmmB, xmmC);
1558 cc.vfnmsub132pd(ymmA, ymmB, ymmC);
1559 cc.vfnmsub132ps(xmmA, xmmB, xmmC);
1560 cc.vfnmsub132ps(ymmA, ymmB, ymmC);
1561 cc.vfnmsub132sd(xmmA, xmmB, xmmC);
1562 cc.vfnmsub132ss(xmmA, xmmB, xmmC);
1563 cc.vfnmsub213pd(xmmA, xmmB, xmmC);
1564 cc.vfnmsub213pd(ymmA, ymmB, ymmC);
1565 cc.vfnmsub213ps(xmmA, xmmB, xmmC);
1566 cc.vfnmsub213ps(ymmA, ymmB, ymmC);
1567 cc.vfnmsub213sd(xmmA, xmmB, xmmC);
1568 cc.vfnmsub213ss(xmmA, xmmB, xmmC);
1569 cc.vfnmsub231pd(xmmA, xmmB, xmmC);
1570 cc.vfnmsub231pd(ymmA, ymmB, ymmC);
1571 cc.vfnmsub231ps(xmmA, xmmB, xmmC);
1572 cc.vfnmsub231ps(ymmA, ymmB, ymmC);
1573 cc.vfnmsub231sd(xmmA, xmmB, xmmC);
1574 cc.vfnmsub231ss(xmmA, xmmB, xmmC);
1575 }
1576
1577 // Generates a long sequence of AVX instructions.
1578 template<typename Emitter>
1579 static void generateAvxSequenceInternalRegMem(
1580 Emitter& cc,
1581 const x86::Gp& gp,
1582 const x86::Vec& vecA, const x86::Vec& vecB, const x86::Vec& vecC, const x86::Vec& vecD) {
1583
1584 x86::Gp gpd = gp.r32();
1585 x86::Gp gpq = gp.r64();
1586 x86::Gp gpz = cc.is32Bit() ? gpd : gpq;
1587
1588 x86::Xmm xmmA = vecA.xmm();
1589 x86::Xmm xmmB = vecB.xmm();
1590 x86::Xmm xmmC = vecC.xmm();
1591 x86::Xmm xmmD = vecD.xmm();
1592
1593 x86::Ymm ymmA = vecA.ymm();
1594 x86::Ymm ymmB = vecB.ymm();
1595 x86::Ymm ymmC = vecC.ymm();
1596 x86::Ymm ymmD = vecD.ymm();
1597
1598 x86::Mem m = x86::ptr(gpz);
1599 x86::Mem m128 = x86::xmmword_ptr(gpz);
1600 x86::Mem m256 = x86::xmmword_ptr(gpz);
1601 x86::Mem vx_ptr = x86::ptr(gpz, xmmD);
1602 x86::Mem vy_ptr = x86::ptr(gpz, ymmD);
1603
1604 cc.xor_(gpd, gpd);
1605 cc.vxorps(xmmA, xmmA, xmmA);
1606 cc.vxorps(xmmB, xmmB, xmmB);
1607 cc.vxorps(xmmC, xmmC, xmmC);
1608 cc.vxorps(xmmD, xmmD, xmmD);
1609
1610 cc.vaddpd(xmmA, xmmB, m);
1611 cc.vaddpd(ymmA, ymmB, m);
1612 cc.vaddps(xmmA, xmmB, m);
1613 cc.vaddps(ymmA, ymmB, m);
1614 cc.vaddsd(xmmA, xmmB, m);
1615 cc.vaddss(xmmA, xmmB, m);
1616 cc.vaddsubpd(xmmA, xmmB, m);
1617 cc.vaddsubpd(ymmA, ymmB, m);
1618 cc.vaddsubps(xmmA, xmmB, m);
1619 cc.vaddsubps(ymmA, ymmB, m);
1620 cc.vandpd(xmmA, xmmB, m);
1621 cc.vandpd(ymmA, ymmB, m);
1622 cc.vandps(xmmA, xmmB, m);
1623 cc.vandps(ymmA, ymmB, m);
1624 cc.vandnpd(xmmA, xmmB, m);
1625 cc.vandnpd(ymmA, ymmB, m);
1626 cc.vandnps(xmmA, xmmB, m);
1627 cc.vandnps(ymmA, ymmB, m);
1628 cc.vblendpd(xmmA, xmmB, m, 0);
1629 cc.vblendpd(ymmA, ymmB, m, 0);
1630 cc.vblendps(xmmA, xmmB, m, 0);
1631 cc.vblendps(ymmA, ymmB, m, 0);
1632 cc.vblendvpd(xmmA, xmmB, m, xmmA);
1633 cc.vblendvpd(ymmA, ymmB, m, ymmA);
1634 cc.vbroadcastf128(ymmA, m);
1635 cc.vbroadcastsd(ymmA, m);
1636 cc.vbroadcastss(xmmA, m);
1637 cc.vbroadcastss(ymmA, m);
1638 cc.vcmppd(xmmA, xmmB, m, 0);
1639 cc.vcmppd(ymmA, ymmB, m, 0);
1640 cc.vcmpps(xmmA, xmmB, m, 0);
1641 cc.vcmpps(ymmA, ymmB, m, 0);
1642 cc.vcmpsd(xmmA, xmmB, m, 0);
1643 cc.vcmpss(xmmA, xmmB, m, 0);
1644 cc.vcomisd(xmmA, m);
1645 cc.vcomiss(xmmA, m);
1646 cc.vcvtdq2pd(xmmA, m);
1647 cc.vcvtdq2pd(ymmA, m);
1648 cc.vcvtdq2ps(xmmA, m);
1649 cc.vcvtdq2ps(ymmA, m);
1650 cc.vcvtpd2dq(xmmA, m128);
1651 cc.vcvtpd2dq(xmmA, m256);
1652 cc.vcvtpd2ps(xmmA, m128);
1653 cc.vcvtpd2ps(xmmA, m256);
1654 cc.vcvtps2dq(xmmA, m);
1655 cc.vcvtps2dq(ymmA, m);
1656 cc.vcvtps2pd(xmmA, m);
1657 cc.vcvtps2pd(ymmA, m);
1658 cc.vcvtsd2si(gpd, m);
1659 cc.vcvtsd2ss(xmmA, xmmB, m);
1660 cc.vcvtsi2sd(xmmA, xmmB, m);
1661 cc.vcvtsi2ss(xmmA, xmmB, m);
1662 cc.vcvtss2sd(xmmA, xmmB, m);
1663 cc.vcvtss2si(gpd, m);
1664 cc.vcvttpd2dq(xmmA, m128);
1665 cc.vcvttpd2dq(xmmA, m256);
1666 cc.vcvttps2dq(xmmA, m);
1667 cc.vcvttps2dq(ymmA, m);
1668 cc.vcvttsd2si(gpd, m);
1669 cc.vcvttss2si(gpd, m);
1670 cc.vdivpd(xmmA, xmmB, m);
1671 cc.vdivpd(ymmA, ymmB, m);
1672 cc.vdivps(xmmA, xmmB, m);
1673 cc.vdivps(ymmA, ymmB, m);
1674 cc.vdivsd(xmmA, xmmB, m);
1675 cc.vdivss(xmmA, xmmB, m);
1676 cc.vdppd(xmmA, xmmB, m, 0);
1677 cc.vdpps(xmmA, xmmB, m, 0);
1678 cc.vdpps(ymmA, ymmB, m, 0);
1679 cc.vextractf128(m, ymmB, 0);
1680 cc.vextractps(m, xmmB, 0);
1681 cc.vhaddpd(xmmA, xmmB, m);
1682 cc.vhaddpd(ymmA, ymmB, m);
1683 cc.vhaddps(xmmA, xmmB, m);
1684 cc.vhaddps(ymmA, ymmB, m);
1685 cc.vhsubpd(xmmA, xmmB, m);
1686 cc.vhsubpd(ymmA, ymmB, m);
1687 cc.vhsubps(xmmA, xmmB, m);
1688 cc.vhsubps(ymmA, ymmB, m);
1689 cc.vinsertf128(ymmA, ymmB, m, 0);
1690 cc.vinsertps(xmmA, xmmB, m, 0);
1691 cc.vlddqu(xmmA, m);
1692 cc.vlddqu(ymmA, m);
1693 cc.vmaskmovps(xmmA, xmmB, m);
1694 cc.vmaskmovps(ymmA, ymmB, m);
1695 cc.vmaskmovps(m, xmmB, xmmC);
1696 cc.vmaskmovps(m, ymmB, ymmC);
1697 cc.vmaskmovpd(xmmA, xmmB, m);
1698 cc.vmaskmovpd(ymmA, ymmB, m);
1699 cc.vmaskmovpd(m, xmmB, xmmC);
1700 cc.vmaskmovpd(m, ymmB, ymmC);
1701 cc.vmaxpd(xmmA, xmmB, m);
1702 cc.vmaxpd(ymmA, ymmB, m);
1703 cc.vmaxps(xmmA, xmmB, m);
1704 cc.vmaxps(ymmA, ymmB, m);
1705 cc.vmaxsd(xmmA, xmmB, m);
1706 cc.vmaxss(xmmA, xmmB, m);
1707 cc.vminpd(xmmA, xmmB, m);
1708 cc.vminpd(ymmA, ymmB, m);
1709 cc.vminps(xmmA, xmmB, m);
1710 cc.vminps(ymmA, ymmB, m);
1711 cc.vminsd(xmmA, xmmB, m);
1712 cc.vminss(xmmA, xmmB, m);
1713 cc.vmovapd(xmmA, m);
1714 cc.vmovapd(m, xmmB);
1715 cc.vmovapd(ymmA, m);
1716 cc.vmovapd(m, ymmB);
1717 cc.vmovaps(xmmA, m);
1718 cc.vmovaps(m, xmmB);
1719 cc.vmovaps(ymmA, m);
1720 cc.vmovaps(m, ymmB);
1721 cc.vmovd(xmmA, m);
1722 cc.vmovd(m, xmmB);
1723 cc.vmovddup(xmmA, m);
1724 cc.vmovddup(ymmA, m);
1725 cc.vmovdqa(xmmA, m);
1726 cc.vmovdqa(m, xmmB);
1727 cc.vmovdqa(ymmA, m);
1728 cc.vmovdqa(m, ymmB);
1729 cc.vmovdqu(xmmA, m);
1730 cc.vmovdqu(m, xmmB);
1731 cc.vmovdqu(ymmA, m);
1732 cc.vmovdqu(m, ymmB);
1733 cc.vmovhpd(xmmA, xmmB, m);
1734 cc.vmovhps(xmmA, xmmB, m);
1735 cc.vmovhps(m, xmmB);
1736 cc.vmovlpd(xmmA, xmmB, m);
1737 cc.vmovlpd(m, xmmB);
1738 cc.vmovlps(xmmA, xmmB, m);
1739 cc.vmovlps(m, xmmB);
1740 cc.vmovntdq(m, xmmB);
1741 cc.vmovntdq(m, ymmB);
1742 cc.vmovntdqa(xmmA, m);
1743 cc.vmovntpd(m, xmmB);
1744 cc.vmovntpd(m, ymmB);
1745 cc.vmovntps(m, xmmB);
1746 cc.vmovntps(m, ymmB);
1747 cc.vmovsd(xmmA, m);
1748 cc.vmovsd(m, xmmB);
1749 cc.vmovshdup(xmmA, m);
1750 cc.vmovshdup(ymmA, m);
1751 cc.vmovsldup(xmmA, m);
1752 cc.vmovsldup(ymmA, m);
1753 cc.vmovss(xmmA, m);
1754 cc.vmovss(m, xmmB);
1755 cc.vmovupd(xmmA, m);
1756 cc.vmovupd(m, xmmB);
1757 cc.vmovupd(ymmA, m);
1758 cc.vmovupd(m, ymmB);
1759 cc.vmovups(xmmA, m);
1760 cc.vmovups(m, xmmB);
1761 cc.vmovups(ymmA, m);
1762 cc.vmovups(m, ymmB);
1763 cc.vmpsadbw(xmmA, xmmB, m, 0);
1764 cc.vmulpd(xmmA, xmmB, m);
1765 cc.vmulpd(ymmA, ymmB, m);
1766 cc.vmulps(xmmA, xmmB, m);
1767 cc.vmulps(ymmA, ymmB, m);
1768 cc.vmulsd(xmmA, xmmB, m);
1769 cc.vmulss(xmmA, xmmB, m);
1770 cc.vorpd(xmmA, xmmB, m);
1771 cc.vorpd(ymmA, ymmB, m);
1772 cc.vorps(xmmA, xmmB, m);
1773 cc.vorps(ymmA, ymmB, m);
1774 cc.vpabsb(xmmA, m);
1775 cc.vpabsd(xmmA, m);
1776 cc.vpabsw(xmmA, m);
1777 cc.vpackssdw(xmmA, xmmB, m);
1778 cc.vpacksswb(xmmA, xmmB, m);
1779 cc.vpackusdw(xmmA, xmmB, m);
1780 cc.vpackuswb(xmmA, xmmB, m);
1781 cc.vpaddb(xmmA, xmmB, m);
1782 cc.vpaddd(xmmA, xmmB, m);
1783 cc.vpaddq(xmmA, xmmB, m);
1784 cc.vpaddw(xmmA, xmmB, m);
1785 cc.vpaddsb(xmmA, xmmB, m);
1786 cc.vpaddsw(xmmA, xmmB, m);
1787 cc.vpaddusb(xmmA, xmmB, m);
1788 cc.vpaddusw(xmmA, xmmB, m);
1789 cc.vpalignr(xmmA, xmmB, m, 0);
1790 cc.vpand(xmmA, xmmB, m);
1791 cc.vpandn(xmmA, xmmB, m);
1792 cc.vpavgb(xmmA, xmmB, m);
1793 cc.vpavgw(xmmA, xmmB, m);
1794 cc.vpblendvb(xmmA, xmmB, m, xmmA);
1795 cc.vpblendw(xmmA, xmmB, m, 0);
1796 cc.vpcmpeqb(xmmA, xmmB, m);
1797 cc.vpcmpeqd(xmmA, xmmB, m);
1798 cc.vpcmpeqq(xmmA, xmmB, m);
1799 cc.vpcmpeqw(xmmA, xmmB, m);
1800 cc.vpcmpgtb(xmmA, xmmB, m);
1801 cc.vpcmpgtd(xmmA, xmmB, m);
1802 cc.vpcmpgtq(xmmA, xmmB, m);
1803 cc.vpcmpgtw(xmmA, xmmB, m);
1804 cc.vpermilpd(xmmA, xmmB, m);
1805 cc.vpermilpd(ymmA, ymmB, m);
1806 cc.vpermilpd(xmmA, m, 0);
1807 cc.vpermilpd(ymmA, m, 0);
1808 cc.vpermilps(xmmA, xmmB, m);
1809 cc.vpermilps(ymmA, ymmB, m);
1810 cc.vpermilps(xmmA, m, 0);
1811 cc.vpermilps(ymmA, m, 0);
1812 cc.vperm2f128(ymmA, ymmB, m, 0);
1813 cc.vpextrb(m, xmmB, 0);
1814 cc.vpextrd(m, xmmB, 0);
1815 if (cc.is64Bit()) cc.vpextrq(m, xmmB, 0);
1816 cc.vpextrw(m, xmmB, 0);
1817 cc.vphaddd(xmmA, xmmB, m);
1818 cc.vphaddsw(xmmA, xmmB, m);
1819 cc.vphaddw(xmmA, xmmB, m);
1820 cc.vphminposuw(xmmA, m);
1821 cc.vphsubd(xmmA, xmmB, m);
1822 cc.vphsubsw(xmmA, xmmB, m);
1823 cc.vphsubw(xmmA, xmmB, m);
1824 cc.vpinsrb(xmmA, xmmB, m, 0);
1825 cc.vpinsrd(xmmA, xmmB, m, 0);
1826 cc.vpinsrw(xmmA, xmmB, m, 0);
1827 cc.vpmaddubsw(xmmA, xmmB, m);
1828 cc.vpmaddwd(xmmA, xmmB, m);
1829 cc.vpmaxsb(xmmA, xmmB, m);
1830 cc.vpmaxsd(xmmA, xmmB, m);
1831 cc.vpmaxsw(xmmA, xmmB, m);
1832 cc.vpmaxub(xmmA, xmmB, m);
1833 cc.vpmaxud(xmmA, xmmB, m);
1834 cc.vpmaxuw(xmmA, xmmB, m);
1835 cc.vpminsb(xmmA, xmmB, m);
1836 cc.vpminsd(xmmA, xmmB, m);
1837 cc.vpminsw(xmmA, xmmB, m);
1838 cc.vpminub(xmmA, xmmB, m);
1839 cc.vpminud(xmmA, xmmB, m);
1840 cc.vpminuw(xmmA, xmmB, m);
1841 cc.vpmovsxbd(xmmA, m);
1842 cc.vpmovsxbq(xmmA, m);
1843 cc.vpmovsxbw(xmmA, m);
1844 cc.vpmovsxdq(xmmA, m);
1845 cc.vpmovsxwd(xmmA, m);
1846 cc.vpmovsxwq(xmmA, m);
1847 cc.vpmovzxbd(xmmA, m);
1848 cc.vpmovzxbq(xmmA, m);
1849 cc.vpmovzxbw(xmmA, m);
1850 cc.vpmovzxdq(xmmA, m);
1851 cc.vpmovzxwd(xmmA, m);
1852 cc.vpmovzxwq(xmmA, m);
1853 cc.vpmuldq(xmmA, xmmB, m);
1854 cc.vpmulhrsw(xmmA, xmmB, m);
1855 cc.vpmulhuw(xmmA, xmmB, m);
1856 cc.vpmulhw(xmmA, xmmB, m);
1857 cc.vpmulld(xmmA, xmmB, m);
1858 cc.vpmullw(xmmA, xmmB, m);
1859 cc.vpmuludq(xmmA, xmmB, m);
1860 cc.vpor(xmmA, xmmB, m);
1861 cc.vpsadbw(xmmA, xmmB, m);
1862 cc.vpshufb(xmmA, xmmB, m);
1863 cc.vpshufd(xmmA, m, 0);
1864 cc.vpshufhw(xmmA, m, 0);
1865 cc.vpshuflw(xmmA, m, 0);
1866 cc.vpsignb(xmmA, xmmB, m);
1867 cc.vpsignd(xmmA, xmmB, m);
1868 cc.vpsignw(xmmA, xmmB, m);
1869 cc.vpslld(xmmA, xmmB, m);
1870 cc.vpsllq(xmmA, xmmB, m);
1871 cc.vpsllw(xmmA, xmmB, m);
1872 cc.vpsrad(xmmA, xmmB, m);
1873 cc.vpsraw(xmmA, xmmB, m);
1874 cc.vpsrld(xmmA, xmmB, m);
1875 cc.vpsrlq(xmmA, xmmB, m);
1876 cc.vpsrlw(xmmA, xmmB, m);
1877 cc.vpsubb(xmmA, xmmB, m);
1878 cc.vpsubd(xmmA, xmmB, m);
1879 cc.vpsubq(xmmA, xmmB, m);
1880 cc.vpsubw(xmmA, xmmB, m);
1881 cc.vpsubsb(xmmA, xmmB, m);
1882 cc.vpsubsw(xmmA, xmmB, m);
1883 cc.vpsubusb(xmmA, xmmB, m);
1884 cc.vpsubusw(xmmA, xmmB, m);
1885 cc.vptest(xmmA, m);
1886 cc.vptest(ymmA, m);
1887 cc.vpunpckhbw(xmmA, xmmB, m);
1888 cc.vpunpckhdq(xmmA, xmmB, m);
1889 cc.vpunpckhqdq(xmmA, xmmB, m);
1890 cc.vpunpckhwd(xmmA, xmmB, m);
1891 cc.vpunpcklbw(xmmA, xmmB, m);
1892 cc.vpunpckldq(xmmA, xmmB, m);
1893 cc.vpunpcklqdq(xmmA, xmmB, m);
1894 cc.vpunpcklwd(xmmA, xmmB, m);
1895 cc.vpxor(xmmA, xmmB, m);
1896 cc.vrcpps(xmmA, m);
1897 cc.vrcpps(ymmA, m);
1898 cc.vrcpss(xmmA, xmmB, m);
1899 cc.vrsqrtps(xmmA, m);
1900 cc.vrsqrtps(ymmA, m);
1901 cc.vrsqrtss(xmmA, xmmB, m);
1902 cc.vroundpd(xmmA, m, 0);
1903 cc.vroundpd(ymmA, m, 0);
1904 cc.vroundps(xmmA, m, 0);
1905 cc.vroundps(ymmA, m, 0);
1906 cc.vroundsd(xmmA, xmmB, m, 0);
1907 cc.vroundss(xmmA, xmmB, m, 0);
1908 cc.vshufpd(xmmA, xmmB, m, 0);
1909 cc.vshufpd(ymmA, ymmB, m, 0);
1910 cc.vshufps(xmmA, xmmB, m, 0);
1911 cc.vshufps(ymmA, ymmB, m, 0);
1912 cc.vsqrtpd(xmmA, m);
1913 cc.vsqrtpd(ymmA, m);
1914 cc.vsqrtps(xmmA, m);
1915 cc.vsqrtps(ymmA, m);
1916 cc.vsqrtsd(xmmA, xmmB, m);
1917 cc.vsqrtss(xmmA, xmmB, m);
1918 cc.vsubpd(xmmA, xmmB, m);
1919 cc.vsubpd(ymmA, ymmB, m);
1920 cc.vsubps(xmmA, xmmB, m);
1921 cc.vsubps(ymmA, ymmB, m);
1922 cc.vsubsd(xmmA, xmmB, m);
1923 cc.vsubss(xmmA, xmmB, m);
1924 cc.vtestps(xmmA, m);
1925 cc.vtestps(ymmA, m);
1926 cc.vtestpd(xmmA, m);
1927 cc.vtestpd(ymmA, m);
1928 cc.vucomisd(xmmA, m);
1929 cc.vucomiss(xmmA, m);
1930 cc.vunpckhpd(xmmA, xmmB, m);
1931 cc.vunpckhpd(ymmA, ymmB, m);
1932 cc.vunpckhps(xmmA, xmmB, m);
1933 cc.vunpckhps(ymmA, ymmB, m);
1934 cc.vunpcklpd(xmmA, xmmB, m);
1935 cc.vunpcklpd(ymmA, ymmB, m);
1936 cc.vunpcklps(xmmA, xmmB, m);
1937 cc.vunpcklps(ymmA, ymmB, m);
1938 cc.vxorpd(xmmA, xmmB, m);
1939 cc.vxorpd(ymmA, ymmB, m);
1940 cc.vxorps(xmmA, xmmB, m);
1941 cc.vxorps(ymmA, ymmB, m);
1942
1943 // AVX+AESNI.
1944 cc.vaesdec(xmmA, xmmB, m);
1945 cc.vaesdeclast(xmmA, xmmB, m);
1946 cc.vaesenc(xmmA, xmmB, m);
1947 cc.vaesenclast(xmmA, xmmB, m);
1948 cc.vaesimc(xmmA, m);
1949 cc.vaeskeygenassist(xmmA, m, 0);
1950
1951 // AVX+PCLMULQDQ.
1952 cc.vpclmulqdq(xmmA, xmmB, m, 0);
1953
1954 // AVX2.
1955 cc.vbroadcasti128(ymmA, m);
1956 cc.vextracti128(m, ymmB, 0);
1957 cc.vgatherdpd(xmmA, vx_ptr, xmmC);
1958 cc.vgatherdpd(ymmA, vx_ptr, ymmC);
1959 cc.vgatherdps(xmmA, vx_ptr, xmmC);
1960 cc.vgatherdps(ymmA, vy_ptr, ymmC);
1961 cc.vgatherqpd(xmmA, vx_ptr, xmmC);
1962 cc.vgatherqpd(ymmA, vy_ptr, ymmC);
1963 cc.vgatherqps(xmmA, vx_ptr, xmmC);
1964 cc.vgatherqps(xmmA, vy_ptr, xmmC);
1965 cc.vinserti128(ymmA, ymmB, m, 0);
1966 cc.vmovntdqa(ymmA, m);
1967 cc.vmpsadbw(ymmA, ymmB, m, 0);
1968 cc.vpabsb(ymmA, m);
1969 cc.vpabsd(ymmA, m);
1970 cc.vpabsw(ymmA, m);
1971 cc.vpackssdw(ymmA, ymmB, m);
1972 cc.vpacksswb(ymmA, ymmB, m);
1973 cc.vpackusdw(ymmA, ymmB, m);
1974 cc.vpackuswb(ymmA, ymmB, m);
1975 cc.vpaddb(ymmA, ymmB, m);
1976 cc.vpaddd(ymmA, ymmB, m);
1977 cc.vpaddq(ymmA, ymmB, m);
1978 cc.vpaddw(ymmA, ymmB, m);
1979 cc.vpaddsb(ymmA, ymmB, m);
1980 cc.vpaddsw(ymmA, ymmB, m);
1981 cc.vpaddusb(ymmA, ymmB, m);
1982 cc.vpaddusw(ymmA, ymmB, m);
1983 cc.vpalignr(ymmA, ymmB, m, 0);
1984 cc.vpand(ymmA, ymmB, m);
1985 cc.vpandn(ymmA, ymmB, m);
1986 cc.vpavgb(ymmA, ymmB, m);
1987 cc.vpavgw(ymmA, ymmB, m);
1988 cc.vpblendd(xmmA, xmmB, m, 0);
1989 cc.vpblendd(ymmA, ymmB, m, 0);
1990 cc.vpblendvb(ymmA, ymmB, m, ymmA);
1991 cc.vpblendw(ymmA, ymmB, m, 0);
1992 cc.vpbroadcastb(xmmA, m);
1993 cc.vpbroadcastb(ymmA, m);
1994 cc.vpbroadcastd(xmmA, m);
1995 cc.vpbroadcastd(ymmA, m);
1996 cc.vpbroadcastq(xmmA, m);
1997 cc.vpbroadcastq(ymmA, m);
1998 cc.vpbroadcastw(xmmA, m);
1999 cc.vpbroadcastw(ymmA, m);
2000 cc.vpcmpeqb(ymmA, ymmB, m);
2001 cc.vpcmpeqd(ymmA, ymmB, m);
2002 cc.vpcmpeqq(ymmA, ymmB, m);
2003 cc.vpcmpeqw(ymmA, ymmB, m);
2004 cc.vpcmpgtb(ymmA, ymmB, m);
2005 cc.vpcmpgtd(ymmA, ymmB, m);
2006 cc.vpcmpgtq(ymmA, ymmB, m);
2007 cc.vpcmpgtw(ymmA, ymmB, m);
2008 cc.vperm2i128(ymmA, ymmB, m, 0);
2009 cc.vpermd(ymmA, ymmB, m);
2010 cc.vpermps(ymmA, ymmB, m);
2011 cc.vpermpd(ymmA, m, 0);
2012 cc.vpermq(ymmA, m, 0);
2013 cc.vpgatherdd(xmmA, vx_ptr, xmmC);
2014 cc.vpgatherdd(ymmA, vy_ptr, ymmC);
2015 cc.vpgatherdq(xmmA, vx_ptr, xmmC);
2016 cc.vpgatherdq(ymmA, vx_ptr, ymmC);
2017 cc.vpgatherqd(xmmA, vx_ptr, xmmC);
2018 cc.vpgatherqd(xmmA, vy_ptr, xmmC);
2019 cc.vpgatherqq(xmmA, vx_ptr, xmmC);
2020 cc.vpgatherqq(ymmA, vy_ptr, ymmC);
2021 cc.vpmovsxbd(ymmA, m);
2022 cc.vpmovsxbq(ymmA, m);
2023 cc.vpmovsxbw(ymmA, m);
2024 cc.vpmovsxdq(ymmA, m);
2025 cc.vpmovsxwd(ymmA, m);
2026 cc.vpmovsxwq(ymmA, m);
2027 cc.vpmovzxbd(ymmA, m);
2028 cc.vpmovzxbq(ymmA, m);
2029 cc.vpmovzxbw(ymmA, m);
2030 cc.vpmovzxdq(ymmA, m);
2031 cc.vpmovzxwd(ymmA, m);
2032 cc.vpmovzxwq(ymmA, m);
2033 cc.vpshufd(ymmA, m, 0);
2034 cc.vpshufhw(ymmA, m, 0);
2035 cc.vpshuflw(ymmA, m, 0);
2036 cc.vphaddd(ymmA, ymmB, m);
2037 cc.vphaddsw(ymmA, ymmB, m);
2038 cc.vphaddw(ymmA, ymmB, m);
2039 cc.vphsubd(ymmA, ymmB, m);
2040 cc.vphsubsw(ymmA, ymmB, m);
2041 cc.vphsubw(ymmA, ymmB, m);
2042 cc.vpmaddubsw(ymmA, ymmB, m);
2043 cc.vpmaddwd(ymmA, ymmB, m);
2044 cc.vpmaskmovd(m, xmmB, xmmC);
2045 cc.vpmaskmovd(m, ymmB, ymmC);
2046 cc.vpmaskmovd(xmmA, xmmB, m);
2047 cc.vpmaskmovd(ymmA, ymmB, m);
2048 cc.vpmaskmovq(m, xmmB, xmmC);
2049 cc.vpmaskmovq(m, ymmB, ymmC);
2050 cc.vpmaskmovq(xmmA, xmmB, m);
2051 cc.vpmaskmovq(ymmA, ymmB, m);
2052 cc.vpmaxsb(ymmA, ymmB, m);
2053 cc.vpmaxsd(ymmA, ymmB, m);
2054 cc.vpmaxsw(ymmA, ymmB, m);
2055 cc.vpmaxub(ymmA, ymmB, m);
2056 cc.vpmaxud(ymmA, ymmB, m);
2057 cc.vpmaxuw(ymmA, ymmB, m);
2058 cc.vpminsb(ymmA, ymmB, m);
2059 cc.vpminsd(ymmA, ymmB, m);
2060 cc.vpminsw(ymmA, ymmB, m);
2061 cc.vpminub(ymmA, ymmB, m);
2062 cc.vpminud(ymmA, ymmB, m);
2063 cc.vpminuw(ymmA, ymmB, m);
2064 cc.vpmuldq(ymmA, ymmB, m);
2065 cc.vpmulhrsw(ymmA, ymmB, m);
2066 cc.vpmulhuw(ymmA, ymmB, m);
2067 cc.vpmulhw(ymmA, ymmB, m);
2068 cc.vpmulld(ymmA, ymmB, m);
2069 cc.vpmullw(ymmA, ymmB, m);
2070 cc.vpmuludq(ymmA, ymmB, m);
2071 cc.vpor(ymmA, ymmB, m);
2072 cc.vpsadbw(ymmA, ymmB, m);
2073 cc.vpshufb(ymmA, ymmB, m);
2074 cc.vpsignb(ymmA, ymmB, m);
2075 cc.vpsignd(ymmA, ymmB, m);
2076 cc.vpsignw(ymmA, ymmB, m);
2077 cc.vpslld(ymmA, ymmB, m);
2078 cc.vpsllq(ymmA, ymmB, m);
2079 cc.vpsllvd(xmmA, xmmB, m);
2080 cc.vpsllvd(ymmA, ymmB, m);
2081 cc.vpsllvq(xmmA, xmmB, m);
2082 cc.vpsllvq(ymmA, ymmB, m);
2083 cc.vpsllw(ymmA, ymmB, m);
2084 cc.vpsrad(ymmA, ymmB, m);
2085 cc.vpsravd(xmmA, xmmB, m);
2086 cc.vpsravd(ymmA, ymmB, m);
2087 cc.vpsraw(ymmA, ymmB, m);
2088 cc.vpsrld(ymmA, ymmB, m);
2089 cc.vpsrlq(ymmA, ymmB, m);
2090 cc.vpsrlvd(xmmA, xmmB, m);
2091 cc.vpsrlvd(ymmA, ymmB, m);
2092 cc.vpsrlvq(xmmA, xmmB, m);
2093 cc.vpsrlvq(ymmA, ymmB, m);
2094 cc.vpsrlw(ymmA, ymmB, m);
2095 cc.vpsubb(ymmA, ymmB, m);
2096 cc.vpsubd(ymmA, ymmB, m);
2097 cc.vpsubq(ymmA, ymmB, m);
2098 cc.vpsubsb(ymmA, ymmB, m);
2099 cc.vpsubsw(ymmA, ymmB, m);
2100 cc.vpsubusb(ymmA, ymmB, m);
2101 cc.vpsubusw(ymmA, ymmB, m);
2102 cc.vpsubw(ymmA, ymmB, m);
2103 cc.vpunpckhbw(ymmA, ymmB, m);
2104 cc.vpunpckhdq(ymmA, ymmB, m);
2105 cc.vpunpckhqdq(ymmA, ymmB, m);
2106 cc.vpunpckhwd(ymmA, ymmB, m);
2107 cc.vpunpcklbw(ymmA, ymmB, m);
2108 cc.vpunpckldq(ymmA, ymmB, m);
2109 cc.vpunpcklqdq(ymmA, ymmB, m);
2110 cc.vpunpcklwd(ymmA, ymmB, m);
2111 cc.vpxor(ymmA, ymmB, m);
2112 }
2113
2114 // Generates a long sequence of AVX instructions.
2115 template<typename Emitter>
9852116 static void generateAvxSequenceInternal(
9862117 Emitter& cc,
9872118 InstForm form,
9882119 const x86::Gp& gp,
9892120 const x86::Vec& vecA, const x86::Vec& vecB, const x86::Vec& vecC, const x86::Vec& vecD) {
9902121
991 x86::Gp gpd = gp.r32();
992 x86::Gp gpq = gp.r64();
993 x86::Gp gpz = cc.is32Bit() ? gpd : gpq;
994
995 x86::Xmm xmmA = vecA.xmm();
996 x86::Xmm xmmB = vecB.xmm();
997 x86::Xmm xmmC = vecC.xmm();
998 x86::Xmm xmmD = vecD.xmm();
999
1000 x86::Ymm ymmA = vecA.ymm();
1001 x86::Ymm ymmB = vecB.ymm();
1002 x86::Ymm ymmC = vecC.ymm();
1003 x86::Ymm ymmD = vecD.ymm();
1004
1005 cc.xor_(gpd, gpd);
1006 cc.vxorps(xmmA, xmmA, xmmA);
1007 cc.vxorps(xmmB, xmmB, xmmB);
1008 cc.vxorps(xmmC, xmmC, xmmC);
1009 cc.vxorps(xmmD, xmmD, xmmD);
1010
1011 if (form == InstForm::kReg) {
1012 cc.vaddpd(xmmA, xmmB, xmmC);
1013 cc.vaddpd(ymmA, ymmB, ymmC);
1014 cc.vaddps(xmmA, xmmB, xmmC);
1015 cc.vaddps(ymmA, ymmB, ymmC);
1016 cc.vaddsd(xmmA, xmmB, xmmC);
1017 cc.vaddss(xmmA, xmmB, xmmC);
1018 cc.vaddsubpd(xmmA, xmmB, xmmC);
1019 cc.vaddsubpd(ymmA, ymmB, ymmC);
1020 cc.vaddsubps(xmmA, xmmB, xmmC);
1021 cc.vaddsubps(ymmA, ymmB, ymmC);
1022 cc.vandpd(xmmA, xmmB, xmmC);
1023 cc.vandpd(ymmA, ymmB, ymmC);
1024 cc.vandps(xmmA, xmmB, xmmC);
1025 cc.vandps(ymmA, ymmB, ymmC);
1026 cc.vandnpd(xmmA, xmmB, xmmC);
1027 cc.vandnpd(ymmA, ymmB, ymmC);
1028 cc.vandnps(xmmA, xmmB, xmmC);
1029 cc.vandnps(ymmA, ymmB, ymmC);
1030 cc.vblendpd(xmmA, xmmB, xmmC, 0);
1031 cc.vblendpd(ymmA, ymmB, ymmC, 0);
1032 cc.vblendps(xmmA, xmmB, xmmC, 0);
1033 cc.vblendps(ymmA, ymmB, ymmC, 0);
1034 cc.vblendvpd(xmmA, xmmB, xmmC, xmmA);
1035 cc.vblendvpd(ymmA, ymmB, ymmC, ymmA);
1036 cc.vcmppd(xmmA, xmmB, xmmC, 0);
1037 cc.vcmppd(ymmA, ymmB, ymmC, 0);
1038 cc.vcmpps(xmmA, xmmB, xmmC, 0);
1039 cc.vcmpps(ymmA, ymmB, ymmC, 0);
1040 cc.vcmpsd(xmmA, xmmB, xmmC, 0);
1041 cc.vcmpss(xmmA, xmmB, xmmC, 0);
1042 cc.vcomisd(xmmA, xmmB);
1043 cc.vcomiss(xmmA, xmmB);
1044 cc.vcvtdq2pd(xmmA, xmmB);
1045 cc.vcvtdq2pd(ymmA, xmmB);
1046 cc.vcvtdq2ps(xmmA, xmmB);
1047 cc.vcvtdq2ps(ymmA, ymmB);
1048 cc.vcvtpd2dq(xmmA, xmmB);
1049 cc.vcvtpd2dq(xmmA, ymmB);
1050 cc.vcvtpd2ps(xmmA, xmmB);
1051 cc.vcvtpd2ps(xmmA, ymmB);
1052 cc.vcvtps2dq(xmmA, xmmB);
1053 cc.vcvtps2dq(ymmA, ymmB);
1054 cc.vcvtps2pd(xmmA, xmmB);
1055 cc.vcvtps2pd(ymmA, xmmB);
1056 cc.vcvtsd2si(gpd, xmmB);
1057 cc.vcvtsd2si(gpz, xmmB);
1058 cc.vcvtsd2ss(xmmA, xmmB, xmmC);
1059 cc.vcvtsi2sd(xmmA, xmmB, gpd);
1060 cc.vcvtsi2sd(xmmA, xmmB, gpz);
1061 cc.vcvtsi2ss(xmmA, xmmB, gpd);
1062 cc.vcvtsi2ss(xmmA, xmmB, gpz);
1063 cc.vcvtss2sd(xmmA, xmmB, xmmC);
1064 cc.vcvtss2si(gpd, xmmB);
1065 cc.vcvttpd2dq(xmmA, xmmB);
1066 cc.vcvttpd2dq(xmmA, ymmB);
1067 cc.vcvttps2dq(xmmA, xmmB);
1068 cc.vcvttps2dq(ymmA, ymmB);
1069 cc.vcvttsd2si(gpd, xmmB);
1070 cc.vcvttss2si(gpz, xmmB);
1071 cc.vdivpd(xmmA, xmmB, xmmC);
1072 cc.vdivpd(ymmA, ymmB, ymmC);
1073 cc.vdivps(xmmA, xmmB, xmmC);
1074 cc.vdivps(ymmA, ymmB, ymmC);
1075 cc.vdivsd(xmmA, xmmB, xmmC);
1076 cc.vdivss(xmmA, xmmB, xmmC);
1077 cc.vdppd(xmmA, xmmB, xmmC, 0);
1078 cc.vdpps(xmmA, xmmB, xmmC, 0);
1079 cc.vdpps(ymmA, ymmB, ymmC, 0);
1080 cc.vextractf128(xmmA, ymmB, 0);
1081 cc.vextractps(gpd, xmmB, 0);
1082 cc.vhaddpd(xmmA, xmmB, xmmC);
1083 cc.vhaddpd(ymmA, ymmB, ymmC);
1084 cc.vhaddps(xmmA, xmmB, xmmC);
1085 cc.vhaddps(ymmA, ymmB, ymmC);
1086 cc.vhsubpd(xmmA, xmmB, xmmC);
1087 cc.vhsubpd(ymmA, ymmB, ymmC);
1088 cc.vhsubps(xmmA, xmmB, xmmC);
1089 cc.vhsubps(ymmA, ymmB, ymmC);
1090 cc.vinsertf128(ymmA, ymmB, xmmC, 0);
1091 cc.vinsertps(xmmA, xmmB, xmmC, 0);
1092 cc.vmaxpd(xmmA, xmmB, xmmC);
1093 cc.vmaxpd(ymmA, ymmB, ymmC);
1094 cc.vmaxps(xmmA, xmmB, xmmC);
1095 cc.vmaxps(ymmA, ymmB, ymmC);
1096 cc.vmaxsd(xmmA, xmmB, xmmC);
1097 cc.vmaxss(xmmA, xmmB, xmmC);
1098 cc.vminpd(xmmA, xmmB, xmmC);
1099 cc.vminpd(ymmA, ymmB, ymmC);
1100 cc.vminps(xmmA, xmmB, xmmC);
1101 cc.vminps(ymmA, ymmB, ymmC);
1102 cc.vminsd(xmmA, xmmB, xmmC);
1103 cc.vminss(xmmA, xmmB, xmmC);
1104 cc.vmovapd(xmmA, xmmB);
1105 cc.vmovapd(ymmA, ymmB);
1106 cc.vmovaps(xmmA, xmmB);
1107 cc.vmovaps(ymmA, ymmB);
1108 cc.vmovd(xmmA, gpd);
1109 cc.vmovd(gpd, xmmB);
1110 cc.vmovddup(xmmA, xmmB);
1111 cc.vmovddup(ymmA, ymmB);
1112 cc.vmovdqa(xmmA, xmmB);
1113 cc.vmovdqa(ymmA, ymmB);
1114 cc.vmovdqu(xmmA, xmmB);
1115 cc.vmovdqu(ymmA, ymmB);
1116 cc.vmovhlps(xmmA, xmmB, xmmC);
1117 cc.vmovlhps(xmmA, xmmB, xmmC);
1118 cc.vmovmskpd(gpd, xmmB);
1119 cc.vmovmskpd(gpd, ymmB);
1120 cc.vmovmskps(gpd, xmmB);
1121 cc.vmovmskps(gpd, ymmB);
1122 cc.vmovsd(xmmA, xmmB, xmmC);
1123 cc.vmovshdup(xmmA, xmmB);
1124 cc.vmovshdup(ymmA, ymmB);
1125 cc.vmovsldup(xmmA, xmmB);
1126 cc.vmovsldup(ymmA, ymmB);
1127 cc.vmovss(xmmA, xmmB, xmmC);
1128 cc.vmovupd(xmmA, xmmB);
1129 cc.vmovupd(ymmA, ymmB);
1130 cc.vmovups(xmmA, xmmB);
1131 cc.vmovups(ymmA, ymmB);
1132 cc.vmpsadbw(xmmA, xmmB, xmmC, 0);
1133 cc.vmulpd(xmmA, xmmB, xmmC);
1134 cc.vmulpd(ymmA, ymmB, ymmC);
1135 cc.vmulps(xmmA, xmmB, xmmC);
1136 cc.vmulps(ymmA, ymmB, ymmC);
1137 cc.vmulsd(xmmA, xmmB, xmmC);
1138 cc.vmulss(xmmA, xmmB, xmmC);
1139 cc.vorpd(xmmA, xmmB, xmmC);
1140 cc.vorpd(ymmA, ymmB, ymmC);
1141 cc.vorps(xmmA, xmmB, xmmC);
1142 cc.vorps(ymmA, ymmB, ymmC);
1143 cc.vpabsb(xmmA, xmmB);
1144 cc.vpabsd(xmmA, xmmB);
1145 cc.vpabsw(xmmA, xmmB);
1146 cc.vpackssdw(xmmA, xmmB, xmmC);
1147 cc.vpacksswb(xmmA, xmmB, xmmC);
1148 cc.vpackusdw(xmmA, xmmB, xmmC);
1149 cc.vpackuswb(xmmA, xmmB, xmmC);
1150 cc.vpaddb(xmmA, xmmB, xmmC);
1151 cc.vpaddd(xmmA, xmmB, xmmC);
1152 cc.vpaddq(xmmA, xmmB, xmmC);
1153 cc.vpaddw(xmmA, xmmB, xmmC);
1154 cc.vpaddsb(xmmA, xmmB, xmmC);
1155 cc.vpaddsw(xmmA, xmmB, xmmC);
1156 cc.vpaddusb(xmmA, xmmB, xmmC);
1157 cc.vpaddusw(xmmA, xmmB, xmmC);
1158 cc.vpalignr(xmmA, xmmB, xmmC, 0);
1159 cc.vpand(xmmA, xmmB, xmmC);
1160 cc.vpandn(xmmA, xmmB, xmmC);
1161 cc.vpavgb(xmmA, xmmB, xmmC);
1162 cc.vpavgw(xmmA, xmmB, xmmC);
1163 cc.vpblendvb(xmmA, xmmB, xmmC, xmmA);
1164 cc.vpblendw(xmmA, xmmB, xmmC, 0);
1165 cc.vpcmpeqb(xmmA, xmmB, xmmC);
1166 cc.vpcmpeqd(xmmA, xmmB, xmmC);
1167 cc.vpcmpeqq(xmmA, xmmB, xmmC);
1168 cc.vpcmpeqw(xmmA, xmmB, xmmC);
1169 cc.vpcmpgtb(xmmA, xmmB, xmmC);
1170 cc.vpcmpgtd(xmmA, xmmB, xmmC);
1171 cc.vpcmpgtq(xmmA, xmmB, xmmC);
1172 cc.vpcmpgtw(xmmA, xmmB, xmmC);
1173 cc.vpermilpd(xmmA, xmmB, xmmC);
1174 cc.vpermilpd(ymmA, ymmB, ymmC);
1175 cc.vpermilpd(xmmA, xmmB, 0);
1176 cc.vpermilpd(ymmA, ymmB, 0);
1177 cc.vpermilps(xmmA, xmmB, xmmC);
1178 cc.vpermilps(ymmA, ymmB, ymmC);
1179 cc.vpermilps(xmmA, xmmB, 0);
1180 cc.vpermilps(ymmA, ymmB, 0);
1181 cc.vperm2f128(ymmA, ymmB, ymmC, 0);
1182 cc.vpextrb(gpd, xmmB, 0);
1183 cc.vpextrd(gpd, xmmB, 0);
1184 if (cc.is64Bit()) cc.vpextrq(gpq, xmmB, 0);
1185 cc.vpextrw(gpd, xmmB, 0);
1186 cc.vphaddd(xmmA, xmmB, xmmC);
1187 cc.vphaddsw(xmmA, xmmB, xmmC);
1188 cc.vphaddw(xmmA, xmmB, xmmC);
1189 cc.vphminposuw(xmmA, xmmB);
1190 cc.vphsubd(xmmA, xmmB, xmmC);
1191 cc.vphsubsw(xmmA, xmmB, xmmC);
1192 cc.vphsubw(xmmA, xmmB, xmmC);
1193 cc.vpinsrb(xmmA, xmmB, gpd, 0);
1194 cc.vpinsrd(xmmA, xmmB, gpd, 0);
1195 cc.vpinsrw(xmmA, xmmB, gpd, 0);
1196 cc.vpmaddubsw(xmmA, xmmB, xmmC);
1197 cc.vpmaddwd(xmmA, xmmB, xmmC);
1198 cc.vpmaxsb(xmmA, xmmB, xmmC);
1199 cc.vpmaxsd(xmmA, xmmB, xmmC);
1200 cc.vpmaxsw(xmmA, xmmB, xmmC);
1201 cc.vpmaxub(xmmA, xmmB, xmmC);
1202 cc.vpmaxud(xmmA, xmmB, xmmC);
1203 cc.vpmaxuw(xmmA, xmmB, xmmC);
1204 cc.vpminsb(xmmA, xmmB, xmmC);
1205 cc.vpminsd(xmmA, xmmB, xmmC);
1206 cc.vpminsw(xmmA, xmmB, xmmC);
1207 cc.vpminub(xmmA, xmmB, xmmC);
1208 cc.vpminud(xmmA, xmmB, xmmC);
1209 cc.vpminuw(xmmA, xmmB, xmmC);
1210 cc.vpmovmskb(gpd, xmmB);
1211 cc.vpmovsxbd(xmmA, xmmB);
1212 cc.vpmovsxbq(xmmA, xmmB);
1213 cc.vpmovsxbw(xmmA, xmmB);
1214 cc.vpmovsxdq(xmmA, xmmB);
1215 cc.vpmovsxwd(xmmA, xmmB);
1216 cc.vpmovsxwq(xmmA, xmmB);
1217 cc.vpmovzxbd(xmmA, xmmB);
1218 cc.vpmovzxbq(xmmA, xmmB);
1219 cc.vpmovzxbw(xmmA, xmmB);
1220 cc.vpmovzxdq(xmmA, xmmB);
1221 cc.vpmovzxwd(xmmA, xmmB);
1222 cc.vpmovzxwq(xmmA, xmmB);
1223 cc.vpmuldq(xmmA, xmmB, xmmC);
1224 cc.vpmulhrsw(xmmA, xmmB, xmmC);
1225 cc.vpmulhuw(xmmA, xmmB, xmmC);
1226 cc.vpmulhw(xmmA, xmmB, xmmC);
1227 cc.vpmulld(xmmA, xmmB, xmmC);
1228 cc.vpmullw(xmmA, xmmB, xmmC);
1229 cc.vpmuludq(xmmA, xmmB, xmmC);
1230 cc.vpor(xmmA, xmmB, xmmC);
1231 cc.vpsadbw(xmmA, xmmB, xmmC);
1232 cc.vpshufb(xmmA, xmmB, xmmC);
1233 cc.vpshufd(xmmA, xmmB, 0);
1234 cc.vpshufhw(xmmA, xmmB, 0);
1235 cc.vpshuflw(xmmA, xmmB, 0);
1236 cc.vpsignb(xmmA, xmmB, xmmC);
1237 cc.vpsignd(xmmA, xmmB, xmmC);
1238 cc.vpsignw(xmmA, xmmB, xmmC);
1239 cc.vpslld(xmmA, xmmB, xmmC);
1240 cc.vpslld(xmmA, xmmB, 0);
1241 cc.vpslldq(xmmA, xmmB, 0);
1242 cc.vpsllq(xmmA, xmmB, xmmC);
1243 cc.vpsllq(xmmA, xmmB, 0);
1244 cc.vpsllw(xmmA, xmmB, xmmC);
1245 cc.vpsllw(xmmA, xmmB, 0);
1246 cc.vpsrad(xmmA, xmmB, xmmC);
1247 cc.vpsrad(xmmA, xmmB, 0);
1248 cc.vpsraw(xmmA, xmmB, xmmC);
1249 cc.vpsraw(xmmA, xmmB, 0);
1250 cc.vpsrld(xmmA, xmmB, xmmC);
1251 cc.vpsrld(xmmA, xmmB, 0);
1252 cc.vpsrldq(xmmA, xmmB, 0);
1253 cc.vpsrlq(xmmA, xmmB, xmmC);
1254 cc.vpsrlq(xmmA, xmmB, 0);
1255 cc.vpsrlw(xmmA, xmmB, xmmC);
1256 cc.vpsrlw(xmmA, xmmB, 0);
1257 cc.vpsubb(xmmA, xmmB, xmmC);
1258 cc.vpsubd(xmmA, xmmB, xmmC);
1259 cc.vpsubq(xmmA, xmmB, xmmC);
1260 cc.vpsubw(xmmA, xmmB, xmmC);
1261 cc.vpsubsb(xmmA, xmmB, xmmC);
1262 cc.vpsubsw(xmmA, xmmB, xmmC);
1263 cc.vpsubusb(xmmA, xmmB, xmmC);
1264 cc.vpsubusw(xmmA, xmmB, xmmC);
1265 cc.vptest(xmmA, xmmB);
1266 cc.vptest(ymmA, ymmB);
1267 cc.vpunpckhbw(xmmA, xmmB, xmmC);
1268 cc.vpunpckhdq(xmmA, xmmB, xmmC);
1269 cc.vpunpckhqdq(xmmA, xmmB, xmmC);
1270 cc.vpunpckhwd(xmmA, xmmB, xmmC);
1271 cc.vpunpcklbw(xmmA, xmmB, xmmC);
1272 cc.vpunpckldq(xmmA, xmmB, xmmC);
1273 cc.vpunpcklqdq(xmmA, xmmB, xmmC);
1274 cc.vpunpcklwd(xmmA, xmmB, xmmC);
1275 cc.vpxor(xmmA, xmmB, xmmC);
1276 cc.vrcpps(xmmA, xmmB);
1277 cc.vrcpps(ymmA, ymmB);
1278 cc.vrcpss(xmmA, xmmB, xmmC);
1279 cc.vrsqrtps(xmmA, xmmB);
1280 cc.vrsqrtps(ymmA, ymmB);
1281 cc.vrsqrtss(xmmA, xmmB, xmmC);
1282 cc.vroundpd(xmmA, xmmB, 0);
1283 cc.vroundpd(ymmA, ymmB, 0);
1284 cc.vroundps(xmmA, xmmB, 0);
1285 cc.vroundps(ymmA, ymmB, 0);
1286 cc.vroundsd(xmmA, xmmB, xmmC, 0);
1287 cc.vroundss(xmmA, xmmB, xmmC, 0);
1288 cc.vshufpd(xmmA, xmmB, xmmC, 0);
1289 cc.vshufpd(ymmA, ymmB, ymmC, 0);
1290 cc.vshufps(xmmA, xmmB, xmmC, 0);
1291 cc.vshufps(ymmA, ymmB, ymmC, 0);
1292 cc.vsqrtpd(xmmA, xmmB);
1293 cc.vsqrtpd(ymmA, ymmB);
1294 cc.vsqrtps(xmmA, xmmB);
1295 cc.vsqrtps(ymmA, ymmB);
1296 cc.vsqrtsd(xmmA, xmmB, xmmC);
1297 cc.vsqrtss(xmmA, xmmB, xmmC);
1298 cc.vsubpd(xmmA, xmmB, xmmC);
1299 cc.vsubpd(ymmA, ymmB, ymmC);
1300 cc.vsubps(xmmA, xmmB, xmmC);
1301 cc.vsubps(ymmA, ymmB, ymmC);
1302 cc.vsubsd(xmmA, xmmB, xmmC);
1303 cc.vsubss(xmmA, xmmB, xmmC);
1304 cc.vtestps(xmmA, xmmB);
1305 cc.vtestps(ymmA, ymmB);
1306 cc.vtestpd(xmmA, xmmB);
1307 cc.vtestpd(ymmA, ymmB);
1308 cc.vucomisd(xmmA, xmmB);
1309 cc.vucomiss(xmmA, xmmB);
1310 cc.vunpckhpd(xmmA, xmmB, xmmC);
1311 cc.vunpckhpd(ymmA, ymmB, ymmC);
1312 cc.vunpckhps(xmmA, xmmB, xmmC);
1313 cc.vunpckhps(ymmA, ymmB, ymmC);
1314 cc.vunpcklpd(xmmA, xmmB, xmmC);
1315 cc.vunpcklpd(ymmA, ymmB, ymmC);
1316 cc.vunpcklps(xmmA, xmmB, xmmC);
1317 cc.vunpcklps(ymmA, ymmB, ymmC);
1318 cc.vxorpd(xmmA, xmmB, xmmC);
1319 cc.vxorpd(ymmA, ymmB, ymmC);
1320 cc.vxorps(xmmA, xmmB, xmmC);
1321 cc.vxorps(ymmA, ymmB, ymmC);
1322
1323 // AVX+AESNI.
1324 cc.vaesdec(xmmA, xmmB, xmmC);
1325 cc.vaesdeclast(xmmA, xmmB, xmmC);
1326 cc.vaesenc(xmmA, xmmB, xmmC);
1327 cc.vaesenclast(xmmA, xmmB, xmmC);
1328 cc.vaesimc(xmmA, xmmB);
1329 cc.vaeskeygenassist(xmmA, xmmB, 0);
1330
1331 // AVX+PCLMULQDQ.
1332 cc.vpclmulqdq(xmmA, xmmB, xmmC, 0);
1333
1334 // AVX2.
1335 cc.vbroadcastsd(ymmA, xmmB);
1336 cc.vbroadcastss(xmmA, xmmB);
1337 cc.vbroadcastss(ymmA, xmmB);
1338 cc.vextracti128(xmmA, ymmB, 0);
1339 cc.vinserti128(ymmA, ymmB, xmmC, 0);
1340 cc.vmpsadbw(ymmA, ymmB, ymmC, 0);
1341 cc.vpabsb(ymmA, ymmB);
1342 cc.vpabsd(ymmA, ymmB);
1343 cc.vpabsw(ymmA, ymmB);
1344 cc.vpackssdw(ymmA, ymmB, ymmC);
1345 cc.vpacksswb(ymmA, ymmB, ymmC);
1346 cc.vpackusdw(ymmA, ymmB, ymmC);
1347 cc.vpackuswb(ymmA, ymmB, ymmC);
1348 cc.vpaddb(ymmA, ymmB, ymmC);
1349 cc.vpaddd(ymmA, ymmB, ymmC);
1350 cc.vpaddq(ymmA, ymmB, ymmC);
1351 cc.vpaddw(ymmA, ymmB, ymmC);
1352 cc.vpaddsb(ymmA, ymmB, ymmC);
1353 cc.vpaddsw(ymmA, ymmB, ymmC);
1354 cc.vpaddusb(ymmA, ymmB, ymmC);
1355 cc.vpaddusw(ymmA, ymmB, ymmC);
1356 cc.vpalignr(ymmA, ymmB, ymmC, 0);
1357 cc.vpand(ymmA, ymmB, ymmC);
1358 cc.vpandn(ymmA, ymmB, ymmC);
1359 cc.vpavgb(ymmA, ymmB, ymmC);
1360 cc.vpavgw(ymmA, ymmB, ymmC);
1361 cc.vpblendd(xmmA, xmmB, xmmC, 0);
1362 cc.vpblendd(ymmA, ymmB, ymmC, 0);
1363 cc.vpblendvb(ymmA, ymmB, ymmC, ymmA);
1364 cc.vpblendw(ymmA, ymmB, ymmC, 0);
1365 cc.vpbroadcastb(xmmA, xmmB);
1366 cc.vpbroadcastb(ymmA, xmmB);
1367 cc.vpbroadcastd(xmmA, xmmB);
1368 cc.vpbroadcastd(ymmA, xmmB);
1369 cc.vpbroadcastq(xmmA, xmmB);
1370 cc.vpbroadcastq(ymmA, xmmB);
1371 cc.vpbroadcastw(xmmA, xmmB);
1372 cc.vpbroadcastw(ymmA, xmmB);
1373 cc.vpcmpeqb(ymmA, ymmB, ymmC);
1374 cc.vpcmpeqd(ymmA, ymmB, ymmC);
1375 cc.vpcmpeqq(ymmA, ymmB, ymmC);
1376 cc.vpcmpeqw(ymmA, ymmB, ymmC);
1377 cc.vpcmpgtb(ymmA, ymmB, ymmC);
1378 cc.vpcmpgtd(ymmA, ymmB, ymmC);
1379 cc.vpcmpgtq(ymmA, ymmB, ymmC);
1380 cc.vpcmpgtw(ymmA, ymmB, ymmC);
1381 cc.vperm2i128(ymmA, ymmB, ymmC, 0);
1382 cc.vpermd(ymmA, ymmB, ymmC);
1383 cc.vpermps(ymmA, ymmB, ymmC);
1384 cc.vpermpd(ymmA, ymmB, 0);
1385 cc.vpermq(ymmA, ymmB, 0);
1386 cc.vpmovmskb(gpd, ymmB);
1387 cc.vpmovsxbd(ymmA, xmmB);
1388 cc.vpmovsxbq(ymmA, xmmB);
1389 cc.vpmovsxbw(ymmA, xmmB);
1390 cc.vpmovsxdq(ymmA, xmmB);
1391 cc.vpmovsxwd(ymmA, xmmB);
1392 cc.vpmovsxwq(ymmA, xmmB);
1393 cc.vpmovzxbd(ymmA, xmmB);
1394 cc.vpmovzxbq(ymmA, xmmB);
1395 cc.vpmovzxbw(ymmA, xmmB);
1396 cc.vpmovzxdq(ymmA, xmmB);
1397 cc.vpmovzxwd(ymmA, xmmB);
1398 cc.vpmovzxwq(ymmA, xmmB);
1399 cc.vpshufd(ymmA, ymmB, 0);
1400 cc.vpshufhw(ymmA, ymmB, 0);
1401 cc.vpshuflw(ymmA, ymmB, 0);
1402 cc.vpslld(ymmA, ymmB, 0);
1403 cc.vpslldq(ymmA, ymmB, 0);
1404 cc.vpsllq(ymmA, ymmB, 0);
1405 cc.vpsllw(ymmA, ymmB, 0);
1406 cc.vpsrad(ymmA, ymmB, 0);
1407 cc.vpsraw(ymmA, ymmB, 0);
1408 cc.vpsrld(ymmA, ymmB, 0);
1409 cc.vpsrldq(ymmA, ymmB, 0);
1410 cc.vpsrlq(ymmA, ymmB, 0);
1411 cc.vpsrlw(ymmA, ymmB, 0);
1412 cc.vphaddd(ymmA, ymmB, ymmC);
1413 cc.vphaddsw(ymmA, ymmB, ymmC);
1414 cc.vphaddw(ymmA, ymmB, ymmC);
1415 cc.vphsubd(ymmA, ymmB, ymmC);
1416 cc.vphsubsw(ymmA, ymmB, ymmC);
1417 cc.vphsubw(ymmA, ymmB, ymmC);
1418 cc.vpmaddubsw(ymmA, ymmB, ymmC);
1419 cc.vpmaddwd(ymmA, ymmB, ymmC);
1420 cc.vpmaxsb(ymmA, ymmB, ymmC);
1421 cc.vpmaxsd(ymmA, ymmB, ymmC);
1422 cc.vpmaxsw(ymmA, ymmB, ymmC);
1423 cc.vpmaxub(ymmA, ymmB, ymmC);
1424 cc.vpmaxud(ymmA, ymmB, ymmC);
1425 cc.vpmaxuw(ymmA, ymmB, ymmC);
1426 cc.vpminsb(ymmA, ymmB, ymmC);
1427 cc.vpminsd(ymmA, ymmB, ymmC);
1428 cc.vpminsw(ymmA, ymmB, ymmC);
1429 cc.vpminub(ymmA, ymmB, ymmC);
1430 cc.vpminud(ymmA, ymmB, ymmC);
1431 cc.vpminuw(ymmA, ymmB, ymmC);
1432 cc.vpmuldq(ymmA, ymmB, ymmC);
1433 cc.vpmulhrsw(ymmA, ymmB, ymmC);
1434 cc.vpmulhuw(ymmA, ymmB, ymmC);
1435 cc.vpmulhw(ymmA, ymmB, ymmC);
1436 cc.vpmulld(ymmA, ymmB, ymmC);
1437 cc.vpmullw(ymmA, ymmB, ymmC);
1438 cc.vpmuludq(ymmA, ymmB, ymmC);
1439 cc.vpor(ymmA, ymmB, ymmC);
1440 cc.vpsadbw(ymmA, ymmB, ymmC);
1441 cc.vpshufb(ymmA, ymmB, ymmC);
1442 cc.vpsignb(ymmA, ymmB, ymmC);
1443 cc.vpsignd(ymmA, ymmB, ymmC);
1444 cc.vpsignw(ymmA, ymmB, ymmC);
1445 cc.vpslld(ymmA, ymmB, xmmC);
1446 cc.vpsllq(ymmA, ymmB, xmmC);
1447 cc.vpsllvd(xmmA, xmmB, xmmC);
1448 cc.vpsllvd(ymmA, ymmB, ymmC);
1449 cc.vpsllvq(xmmA, xmmB, xmmC);
1450 cc.vpsllvq(ymmA, ymmB, ymmC);
1451 cc.vpsllw(ymmA, ymmB, xmmC);
1452 cc.vpsrad(ymmA, ymmB, xmmC);
1453 cc.vpsravd(xmmA, xmmB, xmmC);
1454 cc.vpsravd(ymmA, ymmB, ymmC);
1455 cc.vpsraw(ymmA, ymmB, xmmC);
1456 cc.vpsrld(ymmA, ymmB, xmmC);
1457 cc.vpsrlq(ymmA, ymmB, xmmC);
1458 cc.vpsrlvd(xmmA, xmmB, xmmC);
1459 cc.vpsrlvd(ymmA, ymmB, ymmC);
1460 cc.vpsrlvq(xmmA, xmmB, xmmC);
1461 cc.vpsrlvq(ymmA, ymmB, ymmC);
1462 cc.vpsrlw(ymmA, ymmB, xmmC);
1463 cc.vpsubb(ymmA, ymmB, ymmC);
1464 cc.vpsubd(ymmA, ymmB, ymmC);
1465 cc.vpsubq(ymmA, ymmB, ymmC);
1466 cc.vpsubsb(ymmA, ymmB, ymmC);
1467 cc.vpsubsw(ymmA, ymmB, ymmC);
1468 cc.vpsubusb(ymmA, ymmB, ymmC);
1469 cc.vpsubusw(ymmA, ymmB, ymmC);
1470 cc.vpsubw(ymmA, ymmB, ymmC);
1471 cc.vpunpckhbw(ymmA, ymmB, ymmC);
1472 cc.vpunpckhdq(ymmA, ymmB, ymmC);
1473 cc.vpunpckhqdq(ymmA, ymmB, ymmC);
1474 cc.vpunpckhwd(ymmA, ymmB, ymmC);
1475 cc.vpunpcklbw(ymmA, ymmB, ymmC);
1476 cc.vpunpckldq(ymmA, ymmB, ymmC);
1477 cc.vpunpcklqdq(ymmA, ymmB, ymmC);
1478 cc.vpunpcklwd(ymmA, ymmB, ymmC);
1479 cc.vpxor(ymmA, ymmB, ymmC);
1480
1481 // FMA.
1482 cc.vfmadd132pd(xmmA, xmmB, xmmC);
1483 cc.vfmadd132pd(ymmA, ymmB, ymmC);
1484 cc.vfmadd132ps(xmmA, xmmB, xmmC);
1485 cc.vfmadd132ps(ymmA, ymmB, ymmC);
1486 cc.vfmadd132sd(xmmA, xmmB, xmmC);
1487 cc.vfmadd132ss(xmmA, xmmB, xmmC);
1488 cc.vfmadd213pd(xmmA, xmmB, xmmC);
1489 cc.vfmadd213pd(ymmA, ymmB, ymmC);
1490 cc.vfmadd213ps(xmmA, xmmB, xmmC);
1491 cc.vfmadd213ps(ymmA, ymmB, ymmC);
1492 cc.vfmadd213sd(xmmA, xmmB, xmmC);
1493 cc.vfmadd213ss(xmmA, xmmB, xmmC);
1494 cc.vfmadd231pd(xmmA, xmmB, xmmC);
1495 cc.vfmadd231pd(ymmA, ymmB, ymmC);
1496 cc.vfmadd231ps(xmmA, xmmB, xmmC);
1497 cc.vfmadd231ps(ymmA, ymmB, ymmC);
1498 cc.vfmadd231sd(xmmA, xmmB, xmmC);
1499 cc.vfmadd231ss(xmmA, xmmB, xmmC);
1500 cc.vfmaddsub132pd(xmmA, xmmB, xmmC);
1501 cc.vfmaddsub132pd(ymmA, ymmB, ymmC);
1502 cc.vfmaddsub132ps(xmmA, xmmB, xmmC);
1503 cc.vfmaddsub132ps(ymmA, ymmB, ymmC);
1504 cc.vfmaddsub213pd(xmmA, xmmB, xmmC);
1505 cc.vfmaddsub213pd(ymmA, ymmB, ymmC);
1506 cc.vfmaddsub213ps(xmmA, xmmB, xmmC);
1507 cc.vfmaddsub213ps(ymmA, ymmB, ymmC);
1508 cc.vfmaddsub231pd(xmmA, xmmB, xmmC);
1509 cc.vfmaddsub231pd(ymmA, ymmB, ymmC);
1510 cc.vfmaddsub231ps(xmmA, xmmB, xmmC);
1511 cc.vfmaddsub231ps(ymmA, ymmB, ymmC);
1512 cc.vfmsub132pd(xmmA, xmmB, xmmC);
1513 cc.vfmsub132pd(ymmA, ymmB, ymmC);
1514 cc.vfmsub132ps(xmmA, xmmB, xmmC);
1515 cc.vfmsub132ps(ymmA, ymmB, ymmC);
1516 cc.vfmsub132sd(xmmA, xmmB, xmmC);
1517 cc.vfmsub132ss(xmmA, xmmB, xmmC);
1518 cc.vfmsub213pd(xmmA, xmmB, xmmC);
1519 cc.vfmsub213pd(ymmA, ymmB, ymmC);
1520 cc.vfmsub213ps(xmmA, xmmB, xmmC);
1521 cc.vfmsub213ps(ymmA, ymmB, ymmC);
1522 cc.vfmsub213sd(xmmA, xmmB, xmmC);
1523 cc.vfmsub213ss(xmmA, xmmB, xmmC);
1524 cc.vfmsub231pd(xmmA, xmmB, xmmC);
1525 cc.vfmsub231pd(ymmA, ymmB, ymmC);
1526 cc.vfmsub231ps(xmmA, xmmB, xmmC);
1527 cc.vfmsub231ps(ymmA, ymmB, ymmC);
1528 cc.vfmsub231sd(xmmA, xmmB, xmmC);
1529 cc.vfmsub231ss(xmmA, xmmB, xmmC);
1530 cc.vfmsubadd132pd(xmmA, xmmB, xmmC);
1531 cc.vfmsubadd132pd(ymmA, ymmB, ymmC);
1532 cc.vfmsubadd132ps(xmmA, xmmB, xmmC);
1533 cc.vfmsubadd132ps(ymmA, ymmB, ymmC);
1534 cc.vfmsubadd213pd(xmmA, xmmB, xmmC);
1535 cc.vfmsubadd213pd(ymmA, ymmB, ymmC);
1536 cc.vfmsubadd213ps(xmmA, xmmB, xmmC);
1537 cc.vfmsubadd213ps(ymmA, ymmB, ymmC);
1538 cc.vfmsubadd231pd(xmmA, xmmB, xmmC);
1539 cc.vfmsubadd231pd(ymmA, ymmB, ymmC);
1540 cc.vfmsubadd231ps(xmmA, xmmB, xmmC);
1541 cc.vfmsubadd231ps(ymmA, ymmB, ymmC);
1542 cc.vfnmadd132pd(xmmA, xmmB, xmmC);
1543 cc.vfnmadd132pd(ymmA, ymmB, ymmC);
1544 cc.vfnmadd132ps(xmmA, xmmB, xmmC);
1545 cc.vfnmadd132ps(ymmA, ymmB, ymmC);
1546 cc.vfnmadd132sd(xmmA, xmmB, xmmC);
1547 cc.vfnmadd132ss(xmmA, xmmB, xmmC);
1548 cc.vfnmadd213pd(xmmA, xmmB, xmmC);
1549 cc.vfnmadd213pd(ymmA, ymmB, ymmC);
1550 cc.vfnmadd213ps(xmmA, xmmB, xmmC);
1551 cc.vfnmadd213ps(ymmA, ymmB, ymmC);
1552 cc.vfnmadd213sd(xmmA, xmmB, xmmC);
1553 cc.vfnmadd213ss(xmmA, xmmB, xmmC);
1554 cc.vfnmadd231pd(xmmA, xmmB, xmmC);
1555 cc.vfnmadd231pd(ymmA, ymmB, ymmC);
1556 cc.vfnmadd231ps(xmmA, xmmB, xmmC);
1557 cc.vfnmadd231ps(ymmA, ymmB, ymmC);
1558 cc.vfnmadd231sd(xmmA, xmmB, xmmC);
1559 cc.vfnmadd231ss(xmmA, xmmB, xmmC);
1560 cc.vfnmsub132pd(xmmA, xmmB, xmmC);
1561 cc.vfnmsub132pd(ymmA, ymmB, ymmC);
1562 cc.vfnmsub132ps(xmmA, xmmB, xmmC);
1563 cc.vfnmsub132ps(ymmA, ymmB, ymmC);
1564 cc.vfnmsub132sd(xmmA, xmmB, xmmC);
1565 cc.vfnmsub132ss(xmmA, xmmB, xmmC);
1566 cc.vfnmsub213pd(xmmA, xmmB, xmmC);
1567 cc.vfnmsub213pd(ymmA, ymmB, ymmC);
1568 cc.vfnmsub213ps(xmmA, xmmB, xmmC);
1569 cc.vfnmsub213ps(ymmA, ymmB, ymmC);
1570 cc.vfnmsub213sd(xmmA, xmmB, xmmC);
1571 cc.vfnmsub213ss(xmmA, xmmB, xmmC);
1572 cc.vfnmsub231pd(xmmA, xmmB, xmmC);
1573 cc.vfnmsub231pd(ymmA, ymmB, ymmC);
1574 cc.vfnmsub231ps(xmmA, xmmB, xmmC);
1575 cc.vfnmsub231ps(ymmA, ymmB, ymmC);
1576 cc.vfnmsub231sd(xmmA, xmmB, xmmC);
1577 cc.vfnmsub231ss(xmmA, xmmB, xmmC);
1578 }
1579 else {
1580 x86::Mem m = x86::ptr(gpz);
1581 x86::Mem m128 = x86::xmmword_ptr(gpz);
1582 x86::Mem m256 = x86::xmmword_ptr(gpz);
1583 x86::Mem vx_ptr = x86::ptr(gpz, xmmD);
1584 x86::Mem vy_ptr = x86::ptr(gpz, ymmD);
1585
1586 cc.vaddpd(xmmA, xmmB, m);
1587 cc.vaddpd(ymmA, ymmB, m);
1588 cc.vaddps(xmmA, xmmB, m);
1589 cc.vaddps(ymmA, ymmB, m);
1590 cc.vaddsd(xmmA, xmmB, m);
1591 cc.vaddss(xmmA, xmmB, m);
1592 cc.vaddsubpd(xmmA, xmmB, m);
1593 cc.vaddsubpd(ymmA, ymmB, m);
1594 cc.vaddsubps(xmmA, xmmB, m);
1595 cc.vaddsubps(ymmA, ymmB, m);
1596 cc.vandpd(xmmA, xmmB, m);
1597 cc.vandpd(ymmA, ymmB, m);
1598 cc.vandps(xmmA, xmmB, m);
1599 cc.vandps(ymmA, ymmB, m);
1600 cc.vandnpd(xmmA, xmmB, m);
1601 cc.vandnpd(ymmA, ymmB, m);
1602 cc.vandnps(xmmA, xmmB, m);
1603 cc.vandnps(ymmA, ymmB, m);
1604 cc.vblendpd(xmmA, xmmB, m, 0);
1605 cc.vblendpd(ymmA, ymmB, m, 0);
1606 cc.vblendps(xmmA, xmmB, m, 0);
1607 cc.vblendps(ymmA, ymmB, m, 0);
1608 cc.vblendvpd(xmmA, xmmB, m, xmmA);
1609 cc.vblendvpd(ymmA, ymmB, m, ymmA);
1610 cc.vbroadcastf128(ymmA, m);
1611 cc.vbroadcastsd(ymmA, m);
1612 cc.vbroadcastss(xmmA, m);
1613 cc.vbroadcastss(ymmA, m);
1614 cc.vcmppd(xmmA, xmmB, m, 0);
1615 cc.vcmppd(ymmA, ymmB, m, 0);
1616 cc.vcmpps(xmmA, xmmB, m, 0);
1617 cc.vcmpps(ymmA, ymmB, m, 0);
1618 cc.vcmpsd(xmmA, xmmB, m, 0);
1619 cc.vcmpss(xmmA, xmmB, m, 0);
1620 cc.vcomisd(xmmA, m);
1621 cc.vcomiss(xmmA, m);
1622 cc.vcvtdq2pd(xmmA, m);
1623 cc.vcvtdq2pd(ymmA, m);
1624 cc.vcvtdq2ps(xmmA, m);
1625 cc.vcvtdq2ps(ymmA, m);
1626 cc.vcvtpd2dq(xmmA, m128);
1627 cc.vcvtpd2dq(xmmA, m256);
1628 cc.vcvtpd2ps(xmmA, m128);
1629 cc.vcvtpd2ps(xmmA, m256);
1630 cc.vcvtps2dq(xmmA, m);
1631 cc.vcvtps2dq(ymmA, m);
1632 cc.vcvtps2pd(xmmA, m);
1633 cc.vcvtps2pd(ymmA, m);
1634 cc.vcvtsd2si(gpd, m);
1635 cc.vcvtsd2ss(xmmA, xmmB, m);
1636 cc.vcvtsi2sd(xmmA, xmmB, m);
1637 cc.vcvtsi2ss(xmmA, xmmB, m);
1638 cc.vcvtss2sd(xmmA, xmmB, m);
1639 cc.vcvtss2si(gpd, m);
1640 cc.vcvttpd2dq(xmmA, m128);
1641 cc.vcvttpd2dq(xmmA, m256);
1642 cc.vcvttps2dq(xmmA, m);
1643 cc.vcvttps2dq(ymmA, m);
1644 cc.vcvttsd2si(gpd, m);
1645 cc.vcvttss2si(gpd, m);
1646 cc.vdivpd(xmmA, xmmB, m);
1647 cc.vdivpd(ymmA, ymmB, m);
1648 cc.vdivps(xmmA, xmmB, m);
1649 cc.vdivps(ymmA, ymmB, m);
1650 cc.vdivsd(xmmA, xmmB, m);
1651 cc.vdivss(xmmA, xmmB, m);
1652 cc.vdppd(xmmA, xmmB, m, 0);
1653 cc.vdpps(xmmA, xmmB, m, 0);
1654 cc.vdpps(ymmA, ymmB, m, 0);
1655 cc.vextractf128(m, ymmB, 0);
1656 cc.vextractps(m, xmmB, 0);
1657 cc.vhaddpd(xmmA, xmmB, m);
1658 cc.vhaddpd(ymmA, ymmB, m);
1659 cc.vhaddps(xmmA, xmmB, m);
1660 cc.vhaddps(ymmA, ymmB, m);
1661 cc.vhsubpd(xmmA, xmmB, m);
1662 cc.vhsubpd(ymmA, ymmB, m);
1663 cc.vhsubps(xmmA, xmmB, m);
1664 cc.vhsubps(ymmA, ymmB, m);
1665 cc.vinsertf128(ymmA, ymmB, m, 0);
1666 cc.vinsertps(xmmA, xmmB, m, 0);
1667 cc.vlddqu(xmmA, m);
1668 cc.vlddqu(ymmA, m);
1669 cc.vmaskmovps(xmmA, xmmB, m);
1670 cc.vmaskmovps(ymmA, ymmB, m);
1671 cc.vmaskmovps(m, xmmB, xmmC);
1672 cc.vmaskmovps(m, ymmB, ymmC);
1673 cc.vmaskmovpd(xmmA, xmmB, m);
1674 cc.vmaskmovpd(ymmA, ymmB, m);
1675 cc.vmaskmovpd(m, xmmB, xmmC);
1676 cc.vmaskmovpd(m, ymmB, ymmC);
1677 cc.vmaxpd(xmmA, xmmB, m);
1678 cc.vmaxpd(ymmA, ymmB, m);
1679 cc.vmaxps(xmmA, xmmB, m);
1680 cc.vmaxps(ymmA, ymmB, m);
1681 cc.vmaxsd(xmmA, xmmB, m);
1682 cc.vmaxss(xmmA, xmmB, m);
1683 cc.vminpd(xmmA, xmmB, m);
1684 cc.vminpd(ymmA, ymmB, m);
1685 cc.vminps(xmmA, xmmB, m);
1686 cc.vminps(ymmA, ymmB, m);
1687 cc.vminsd(xmmA, xmmB, m);
1688 cc.vminss(xmmA, xmmB, m);
1689 cc.vmovapd(xmmA, m);
1690 cc.vmovapd(m, xmmB);
1691 cc.vmovapd(ymmA, m);
1692 cc.vmovapd(m, ymmB);
1693 cc.vmovaps(xmmA, m);
1694 cc.vmovaps(m, xmmB);
1695 cc.vmovaps(ymmA, m);
1696 cc.vmovaps(m, ymmB);
1697 cc.vmovd(xmmA, m);
1698 cc.vmovd(m, xmmB);
1699 cc.vmovddup(xmmA, m);
1700 cc.vmovddup(ymmA, m);
1701 cc.vmovdqa(xmmA, m);
1702 cc.vmovdqa(m, xmmB);
1703 cc.vmovdqa(ymmA, m);
1704 cc.vmovdqa(m, ymmB);
1705 cc.vmovdqu(xmmA, m);
1706 cc.vmovdqu(m, xmmB);
1707 cc.vmovdqu(ymmA, m);
1708 cc.vmovdqu(m, ymmB);
1709 cc.vmovhpd(xmmA, xmmB, m);
1710 cc.vmovhps(xmmA, xmmB, m);
1711 cc.vmovhps(m, xmmB);
1712 cc.vmovlpd(xmmA, xmmB, m);
1713 cc.vmovlpd(m, xmmB);
1714 cc.vmovlps(xmmA, xmmB, m);
1715 cc.vmovlps(m, xmmB);
1716 cc.vmovntdq(m, xmmB);
1717 cc.vmovntdq(m, ymmB);
1718 cc.vmovntdqa(xmmA, m);
1719 cc.vmovntpd(m, xmmB);
1720 cc.vmovntpd(m, ymmB);
1721 cc.vmovntps(m, xmmB);
1722 cc.vmovntps(m, ymmB);
1723 cc.vmovsd(xmmA, m);
1724 cc.vmovsd(m, xmmB);
1725 cc.vmovshdup(xmmA, m);
1726 cc.vmovshdup(ymmA, m);
1727 cc.vmovsldup(xmmA, m);
1728 cc.vmovsldup(ymmA, m);
1729 cc.vmovss(xmmA, m);
1730 cc.vmovss(m, xmmB);
1731 cc.vmovupd(xmmA, m);
1732 cc.vmovupd(m, xmmB);
1733 cc.vmovupd(ymmA, m);
1734 cc.vmovupd(m, ymmB);
1735 cc.vmovups(xmmA, m);
1736 cc.vmovups(m, xmmB);
1737 cc.vmovups(ymmA, m);
1738 cc.vmovups(m, ymmB);
1739 cc.vmpsadbw(xmmA, xmmB, m, 0);
1740 cc.vmulpd(xmmA, xmmB, m);
1741 cc.vmulpd(ymmA, ymmB, m);
1742 cc.vmulps(xmmA, xmmB, m);
1743 cc.vmulps(ymmA, ymmB, m);
1744 cc.vmulsd(xmmA, xmmB, m);
1745 cc.vmulss(xmmA, xmmB, m);
1746 cc.vorpd(xmmA, xmmB, m);
1747 cc.vorpd(ymmA, ymmB, m);
1748 cc.vorps(xmmA, xmmB, m);
1749 cc.vorps(ymmA, ymmB, m);
1750 cc.vpabsb(xmmA, m);
1751 cc.vpabsd(xmmA, m);
1752 cc.vpabsw(xmmA, m);
1753 cc.vpackssdw(xmmA, xmmB, m);
1754 cc.vpacksswb(xmmA, xmmB, m);
1755 cc.vpackusdw(xmmA, xmmB, m);
1756 cc.vpackuswb(xmmA, xmmB, m);
1757 cc.vpaddb(xmmA, xmmB, m);
1758 cc.vpaddd(xmmA, xmmB, m);
1759 cc.vpaddq(xmmA, xmmB, m);
1760 cc.vpaddw(xmmA, xmmB, m);
1761 cc.vpaddsb(xmmA, xmmB, m);
1762 cc.vpaddsw(xmmA, xmmB, m);
1763 cc.vpaddusb(xmmA, xmmB, m);
1764 cc.vpaddusw(xmmA, xmmB, m);
1765 cc.vpalignr(xmmA, xmmB, m, 0);
1766 cc.vpand(xmmA, xmmB, m);
1767 cc.vpandn(xmmA, xmmB, m);
1768 cc.vpavgb(xmmA, xmmB, m);
1769 cc.vpavgw(xmmA, xmmB, m);
1770 cc.vpblendvb(xmmA, xmmB, m, xmmA);
1771 cc.vpblendw(xmmA, xmmB, m, 0);
1772 cc.vpcmpeqb(xmmA, xmmB, m);
1773 cc.vpcmpeqd(xmmA, xmmB, m);
1774 cc.vpcmpeqq(xmmA, xmmB, m);
1775 cc.vpcmpeqw(xmmA, xmmB, m);
1776 cc.vpcmpgtb(xmmA, xmmB, m);
1777 cc.vpcmpgtd(xmmA, xmmB, m);
1778 cc.vpcmpgtq(xmmA, xmmB, m);
1779 cc.vpcmpgtw(xmmA, xmmB, m);
1780 cc.vpermilpd(xmmA, xmmB, m);
1781 cc.vpermilpd(ymmA, ymmB, m);
1782 cc.vpermilpd(xmmA, m, 0);
1783 cc.vpermilpd(ymmA, m, 0);
1784 cc.vpermilps(xmmA, xmmB, m);
1785 cc.vpermilps(ymmA, ymmB, m);
1786 cc.vpermilps(xmmA, m, 0);
1787 cc.vpermilps(ymmA, m, 0);
1788 cc.vperm2f128(ymmA, ymmB, m, 0);
1789 cc.vpextrb(m, xmmB, 0);
1790 cc.vpextrd(m, xmmB, 0);
1791 if (cc.is64Bit()) cc.vpextrq(m, xmmB, 0);
1792 cc.vpextrw(m, xmmB, 0);
1793 cc.vphaddd(xmmA, xmmB, m);
1794 cc.vphaddsw(xmmA, xmmB, m);
1795 cc.vphaddw(xmmA, xmmB, m);
1796 cc.vphminposuw(xmmA, m);
1797 cc.vphsubd(xmmA, xmmB, m);
1798 cc.vphsubsw(xmmA, xmmB, m);
1799 cc.vphsubw(xmmA, xmmB, m);
1800 cc.vpinsrb(xmmA, xmmB, m, 0);
1801 cc.vpinsrd(xmmA, xmmB, m, 0);
1802 cc.vpinsrw(xmmA, xmmB, m, 0);
1803 cc.vpmaddubsw(xmmA, xmmB, m);
1804 cc.vpmaddwd(xmmA, xmmB, m);
1805 cc.vpmaxsb(xmmA, xmmB, m);
1806 cc.vpmaxsd(xmmA, xmmB, m);
1807 cc.vpmaxsw(xmmA, xmmB, m);
1808 cc.vpmaxub(xmmA, xmmB, m);
1809 cc.vpmaxud(xmmA, xmmB, m);
1810 cc.vpmaxuw(xmmA, xmmB, m);
1811 cc.vpminsb(xmmA, xmmB, m);
1812 cc.vpminsd(xmmA, xmmB, m);
1813 cc.vpminsw(xmmA, xmmB, m);
1814 cc.vpminub(xmmA, xmmB, m);
1815 cc.vpminud(xmmA, xmmB, m);
1816 cc.vpminuw(xmmA, xmmB, m);
1817 cc.vpmovsxbd(xmmA, m);
1818 cc.vpmovsxbq(xmmA, m);
1819 cc.vpmovsxbw(xmmA, m);
1820 cc.vpmovsxdq(xmmA, m);
1821 cc.vpmovsxwd(xmmA, m);
1822 cc.vpmovsxwq(xmmA, m);
1823 cc.vpmovzxbd(xmmA, m);
1824 cc.vpmovzxbq(xmmA, m);
1825 cc.vpmovzxbw(xmmA, m);
1826 cc.vpmovzxdq(xmmA, m);
1827 cc.vpmovzxwd(xmmA, m);
1828 cc.vpmovzxwq(xmmA, m);
1829 cc.vpmuldq(xmmA, xmmB, m);
1830 cc.vpmulhrsw(xmmA, xmmB, m);
1831 cc.vpmulhuw(xmmA, xmmB, m);
1832 cc.vpmulhw(xmmA, xmmB, m);
1833 cc.vpmulld(xmmA, xmmB, m);
1834 cc.vpmullw(xmmA, xmmB, m);
1835 cc.vpmuludq(xmmA, xmmB, m);
1836 cc.vpor(xmmA, xmmB, m);
1837 cc.vpsadbw(xmmA, xmmB, m);
1838 cc.vpshufb(xmmA, xmmB, m);
1839 cc.vpshufd(xmmA, m, 0);
1840 cc.vpshufhw(xmmA, m, 0);
1841 cc.vpshuflw(xmmA, m, 0);
1842 cc.vpsignb(xmmA, xmmB, m);
1843 cc.vpsignd(xmmA, xmmB, m);
1844 cc.vpsignw(xmmA, xmmB, m);
1845 cc.vpslld(xmmA, xmmB, m);
1846 cc.vpsllq(xmmA, xmmB, m);
1847 cc.vpsllw(xmmA, xmmB, m);
1848 cc.vpsrad(xmmA, xmmB, m);
1849 cc.vpsraw(xmmA, xmmB, m);
1850 cc.vpsrld(xmmA, xmmB, m);
1851 cc.vpsrlq(xmmA, xmmB, m);
1852 cc.vpsrlw(xmmA, xmmB, m);
1853 cc.vpsubb(xmmA, xmmB, m);
1854 cc.vpsubd(xmmA, xmmB, m);
1855 cc.vpsubq(xmmA, xmmB, m);
1856 cc.vpsubw(xmmA, xmmB, m);
1857 cc.vpsubsb(xmmA, xmmB, m);
1858 cc.vpsubsw(xmmA, xmmB, m);
1859 cc.vpsubusb(xmmA, xmmB, m);
1860 cc.vpsubusw(xmmA, xmmB, m);
1861 cc.vptest(xmmA, m);
1862 cc.vptest(ymmA, m);
1863 cc.vpunpckhbw(xmmA, xmmB, m);
1864 cc.vpunpckhdq(xmmA, xmmB, m);
1865 cc.vpunpckhqdq(xmmA, xmmB, m);
1866 cc.vpunpckhwd(xmmA, xmmB, m);
1867 cc.vpunpcklbw(xmmA, xmmB, m);
1868 cc.vpunpckldq(xmmA, xmmB, m);
1869 cc.vpunpcklqdq(xmmA, xmmB, m);
1870 cc.vpunpcklwd(xmmA, xmmB, m);
1871 cc.vpxor(xmmA, xmmB, m);
1872 cc.vrcpps(xmmA, m);
1873 cc.vrcpps(ymmA, m);
1874 cc.vrcpss(xmmA, xmmB, m);
1875 cc.vrsqrtps(xmmA, m);
1876 cc.vrsqrtps(ymmA, m);
1877 cc.vrsqrtss(xmmA, xmmB, m);
1878 cc.vroundpd(xmmA, m, 0);
1879 cc.vroundpd(ymmA, m, 0);
1880 cc.vroundps(xmmA, m, 0);
1881 cc.vroundps(ymmA, m, 0);
1882 cc.vroundsd(xmmA, xmmB, m, 0);
1883 cc.vroundss(xmmA, xmmB, m, 0);
1884 cc.vshufpd(xmmA, xmmB, m, 0);
1885 cc.vshufpd(ymmA, ymmB, m, 0);
1886 cc.vshufps(xmmA, xmmB, m, 0);
1887 cc.vshufps(ymmA, ymmB, m, 0);
1888 cc.vsqrtpd(xmmA, m);
1889 cc.vsqrtpd(ymmA, m);
1890 cc.vsqrtps(xmmA, m);
1891 cc.vsqrtps(ymmA, m);
1892 cc.vsqrtsd(xmmA, xmmB, m);
1893 cc.vsqrtss(xmmA, xmmB, m);
1894 cc.vsubpd(xmmA, xmmB, m);
1895 cc.vsubpd(ymmA, ymmB, m);
1896 cc.vsubps(xmmA, xmmB, m);
1897 cc.vsubps(ymmA, ymmB, m);
1898 cc.vsubsd(xmmA, xmmB, m);
1899 cc.vsubss(xmmA, xmmB, m);
1900 cc.vtestps(xmmA, m);
1901 cc.vtestps(ymmA, m);
1902 cc.vtestpd(xmmA, m);
1903 cc.vtestpd(ymmA, m);
1904 cc.vucomisd(xmmA, m);
1905 cc.vucomiss(xmmA, m);
1906 cc.vunpckhpd(xmmA, xmmB, m);
1907 cc.vunpckhpd(ymmA, ymmB, m);
1908 cc.vunpckhps(xmmA, xmmB, m);
1909 cc.vunpckhps(ymmA, ymmB, m);
1910 cc.vunpcklpd(xmmA, xmmB, m);
1911 cc.vunpcklpd(ymmA, ymmB, m);
1912 cc.vunpcklps(xmmA, xmmB, m);
1913 cc.vunpcklps(ymmA, ymmB, m);
1914 cc.vxorpd(xmmA, xmmB, m);
1915 cc.vxorpd(ymmA, ymmB, m);
1916 cc.vxorps(xmmA, xmmB, m);
1917 cc.vxorps(ymmA, ymmB, m);
1918
1919 // AVX+AESNI.
1920 cc.vaesdec(xmmA, xmmB, m);
1921 cc.vaesdeclast(xmmA, xmmB, m);
1922 cc.vaesenc(xmmA, xmmB, m);
1923 cc.vaesenclast(xmmA, xmmB, m);
1924 cc.vaesimc(xmmA, m);
1925 cc.vaeskeygenassist(xmmA, m, 0);
1926
1927 // AVX+PCLMULQDQ.
1928 cc.vpclmulqdq(xmmA, xmmB, m, 0);
1929
1930 // AVX2.
1931 cc.vbroadcasti128(ymmA, m);
1932 cc.vextracti128(m, ymmB, 0);
1933 cc.vgatherdpd(xmmA, vx_ptr, xmmC);
1934 cc.vgatherdpd(ymmA, vx_ptr, ymmC);
1935 cc.vgatherdps(xmmA, vx_ptr, xmmC);
1936 cc.vgatherdps(ymmA, vy_ptr, ymmC);
1937 cc.vgatherqpd(xmmA, vx_ptr, xmmC);
1938 cc.vgatherqpd(ymmA, vy_ptr, ymmC);
1939 cc.vgatherqps(xmmA, vx_ptr, xmmC);
1940 cc.vgatherqps(xmmA, vy_ptr, xmmC);
1941 cc.vinserti128(ymmA, ymmB, m, 0);
1942 cc.vmovntdqa(ymmA, m);
1943 cc.vmpsadbw(ymmA, ymmB, m, 0);
1944 cc.vpabsb(ymmA, m);
1945 cc.vpabsd(ymmA, m);
1946 cc.vpabsw(ymmA, m);
1947 cc.vpackssdw(ymmA, ymmB, m);
1948 cc.vpacksswb(ymmA, ymmB, m);
1949 cc.vpackusdw(ymmA, ymmB, m);
1950 cc.vpackuswb(ymmA, ymmB, m);
1951 cc.vpaddb(ymmA, ymmB, m);
1952 cc.vpaddd(ymmA, ymmB, m);
1953 cc.vpaddq(ymmA, ymmB, m);
1954 cc.vpaddw(ymmA, ymmB, m);
1955 cc.vpaddsb(ymmA, ymmB, m);
1956 cc.vpaddsw(ymmA, ymmB, m);
1957 cc.vpaddusb(ymmA, ymmB, m);
1958 cc.vpaddusw(ymmA, ymmB, m);
1959 cc.vpalignr(ymmA, ymmB, m, 0);
1960 cc.vpand(ymmA, ymmB, m);
1961 cc.vpandn(ymmA, ymmB, m);
1962 cc.vpavgb(ymmA, ymmB, m);
1963 cc.vpavgw(ymmA, ymmB, m);
1964 cc.vpblendd(xmmA, xmmB, m, 0);
1965 cc.vpblendd(ymmA, ymmB, m, 0);
1966 cc.vpblendvb(ymmA, ymmB, m, ymmA);
1967 cc.vpblendw(ymmA, ymmB, m, 0);
1968 cc.vpbroadcastb(xmmA, m);
1969 cc.vpbroadcastb(ymmA, m);
1970 cc.vpbroadcastd(xmmA, m);
1971 cc.vpbroadcastd(ymmA, m);
1972 cc.vpbroadcastq(xmmA, m);
1973 cc.vpbroadcastq(ymmA, m);
1974 cc.vpbroadcastw(xmmA, m);
1975 cc.vpbroadcastw(ymmA, m);
1976 cc.vpcmpeqb(ymmA, ymmB, m);
1977 cc.vpcmpeqd(ymmA, ymmB, m);
1978 cc.vpcmpeqq(ymmA, ymmB, m);
1979 cc.vpcmpeqw(ymmA, ymmB, m);
1980 cc.vpcmpgtb(ymmA, ymmB, m);
1981 cc.vpcmpgtd(ymmA, ymmB, m);
1982 cc.vpcmpgtq(ymmA, ymmB, m);
1983 cc.vpcmpgtw(ymmA, ymmB, m);
1984 cc.vperm2i128(ymmA, ymmB, m, 0);
1985 cc.vpermd(ymmA, ymmB, m);
1986 cc.vpermps(ymmA, ymmB, m);
1987 cc.vpermpd(ymmA, m, 0);
1988 cc.vpermq(ymmA, m, 0);
1989 cc.vpgatherdd(xmmA, vx_ptr, xmmC);
1990 cc.vpgatherdd(ymmA, vy_ptr, ymmC);
1991 cc.vpgatherdq(xmmA, vx_ptr, xmmC);
1992 cc.vpgatherdq(ymmA, vx_ptr, ymmC);
1993 cc.vpgatherqd(xmmA, vx_ptr, xmmC);
1994 cc.vpgatherqd(xmmA, vy_ptr, xmmC);
1995 cc.vpgatherqq(xmmA, vx_ptr, xmmC);
1996 cc.vpgatherqq(ymmA, vy_ptr, ymmC);
1997 cc.vpmovsxbd(ymmA, m);
1998 cc.vpmovsxbq(ymmA, m);
1999 cc.vpmovsxbw(ymmA, m);
2000 cc.vpmovsxdq(ymmA, m);
2001 cc.vpmovsxwd(ymmA, m);
2002 cc.vpmovsxwq(ymmA, m);
2003 cc.vpmovzxbd(ymmA, m);
2004 cc.vpmovzxbq(ymmA, m);
2005 cc.vpmovzxbw(ymmA, m);
2006 cc.vpmovzxdq(ymmA, m);
2007 cc.vpmovzxwd(ymmA, m);
2008 cc.vpmovzxwq(ymmA, m);
2009 cc.vpshufd(ymmA, m, 0);
2010 cc.vpshufhw(ymmA, m, 0);
2011 cc.vpshuflw(ymmA, m, 0);
2012 cc.vphaddd(ymmA, ymmB, m);
2013 cc.vphaddsw(ymmA, ymmB, m);
2014 cc.vphaddw(ymmA, ymmB, m);
2015 cc.vphsubd(ymmA, ymmB, m);
2016 cc.vphsubsw(ymmA, ymmB, m);
2017 cc.vphsubw(ymmA, ymmB, m);
2018 cc.vpmaddubsw(ymmA, ymmB, m);
2019 cc.vpmaddwd(ymmA, ymmB, m);
2020 cc.vpmaskmovd(m, xmmB, xmmC);
2021 cc.vpmaskmovd(m, ymmB, ymmC);
2022 cc.vpmaskmovd(xmmA, xmmB, m);
2023 cc.vpmaskmovd(ymmA, ymmB, m);
2024 cc.vpmaskmovq(m, xmmB, xmmC);
2025 cc.vpmaskmovq(m, ymmB, ymmC);
2026 cc.vpmaskmovq(xmmA, xmmB, m);
2027 cc.vpmaskmovq(ymmA, ymmB, m);
2028 cc.vpmaxsb(ymmA, ymmB, m);
2029 cc.vpmaxsd(ymmA, ymmB, m);
2030 cc.vpmaxsw(ymmA, ymmB, m);
2031 cc.vpmaxub(ymmA, ymmB, m);
2032 cc.vpmaxud(ymmA, ymmB, m);
2033 cc.vpmaxuw(ymmA, ymmB, m);
2034 cc.vpminsb(ymmA, ymmB, m);
2035 cc.vpminsd(ymmA, ymmB, m);
2036 cc.vpminsw(ymmA, ymmB, m);
2037 cc.vpminub(ymmA, ymmB, m);
2038 cc.vpminud(ymmA, ymmB, m);
2039 cc.vpminuw(ymmA, ymmB, m);
2040 cc.vpmuldq(ymmA, ymmB, m);
2041 cc.vpmulhrsw(ymmA, ymmB, m);
2042 cc.vpmulhuw(ymmA, ymmB, m);
2043 cc.vpmulhw(ymmA, ymmB, m);
2044 cc.vpmulld(ymmA, ymmB, m);
2045 cc.vpmullw(ymmA, ymmB, m);
2046 cc.vpmuludq(ymmA, ymmB, m);
2047 cc.vpor(ymmA, ymmB, m);
2048 cc.vpsadbw(ymmA, ymmB, m);
2049 cc.vpshufb(ymmA, ymmB, m);
2050 cc.vpsignb(ymmA, ymmB, m);
2051 cc.vpsignd(ymmA, ymmB, m);
2052 cc.vpsignw(ymmA, ymmB, m);
2053 cc.vpslld(ymmA, ymmB, m);
2054 cc.vpsllq(ymmA, ymmB, m);
2055 cc.vpsllvd(xmmA, xmmB, m);
2056 cc.vpsllvd(ymmA, ymmB, m);
2057 cc.vpsllvq(xmmA, xmmB, m);
2058 cc.vpsllvq(ymmA, ymmB, m);
2059 cc.vpsllw(ymmA, ymmB, m);
2060 cc.vpsrad(ymmA, ymmB, m);
2061 cc.vpsravd(xmmA, xmmB, m);
2062 cc.vpsravd(ymmA, ymmB, m);
2063 cc.vpsraw(ymmA, ymmB, m);
2064 cc.vpsrld(ymmA, ymmB, m);
2065 cc.vpsrlq(ymmA, ymmB, m);
2066 cc.vpsrlvd(xmmA, xmmB, m);
2067 cc.vpsrlvd(ymmA, ymmB, m);
2068 cc.vpsrlvq(xmmA, xmmB, m);
2069 cc.vpsrlvq(ymmA, ymmB, m);
2070 cc.vpsrlw(ymmA, ymmB, m);
2071 cc.vpsubb(ymmA, ymmB, m);
2072 cc.vpsubd(ymmA, ymmB, m);
2073 cc.vpsubq(ymmA, ymmB, m);
2074 cc.vpsubsb(ymmA, ymmB, m);
2075 cc.vpsubsw(ymmA, ymmB, m);
2076 cc.vpsubusb(ymmA, ymmB, m);
2077 cc.vpsubusw(ymmA, ymmB, m);
2078 cc.vpsubw(ymmA, ymmB, m);
2079 cc.vpunpckhbw(ymmA, ymmB, m);
2080 cc.vpunpckhdq(ymmA, ymmB, m);
2081 cc.vpunpckhqdq(ymmA, ymmB, m);
2082 cc.vpunpckhwd(ymmA, ymmB, m);
2083 cc.vpunpcklbw(ymmA, ymmB, m);
2084 cc.vpunpckldq(ymmA, ymmB, m);
2085 cc.vpunpcklqdq(ymmA, ymmB, m);
2086 cc.vpunpcklwd(ymmA, ymmB, m);
2087 cc.vpxor(ymmA, ymmB, m);
2088 }
2122 if (form == InstForm::kReg)
2123 generateAvxSequenceInternalRegOnly(cc, gp, vecA, vecB, vecC, vecD);
2124 else
2125 generateAvxSequenceInternalRegMem(cc, gp, vecA, vecB, vecC, vecD);
20892126 }
20902127
20912128 static void generateAvxSequence(BaseEmitter& emitter, InstForm form, bool emitPrologEpilog) {
21522189
21532190 // Generates a long sequence of AVX512 instructions.
21542191 template<typename Emitter>
2192 static void generateAvx512SequenceInternalRegOnly(
2193 Emitter& cc,
2194 const x86::Gp& gp,
2195 const x86::KReg& kA, const x86::KReg& kB, const x86::KReg& kC,
2196 const x86::Vec& vecA, const x86::Vec& vecB, const x86::Vec& vecC, const x86::Vec& vecD) {
2197
2198 x86::Gp gpd = gp.r32();
2199 x86::Gp gpq = gp.r64();
2200 x86::Gp gpz = cc.is32Bit() ? gpd : gpq;
2201
2202 x86::Xmm xmmA = vecA.xmm();
2203 x86::Xmm xmmB = vecB.xmm();
2204 x86::Xmm xmmC = vecC.xmm();
2205 x86::Xmm xmmD = vecD.xmm();
2206
2207 x86::Ymm ymmA = vecA.ymm();
2208 x86::Ymm ymmB = vecB.ymm();
2209 x86::Ymm ymmC = vecC.ymm();
2210
2211 x86::Zmm zmmA = vecA.zmm();
2212 x86::Zmm zmmB = vecB.zmm();
2213 x86::Zmm zmmC = vecC.zmm();
2214
2215 cc.xor_(gpd, gpd);
2216 cc.vxorps(xmmA, xmmA, xmmA);
2217 cc.vxorps(xmmB, xmmB, xmmB);
2218 cc.vxorps(xmmC, xmmC, xmmC);
2219 cc.vxorps(xmmD, xmmD, xmmD);
2220
2221 cc.kaddb(kA, kB, kC);
2222 cc.kaddd(kA, kB, kC);
2223 cc.kaddq(kA, kB, kC);
2224 cc.kaddw(kA, kB, kC);
2225 cc.kandb(kA, kB, kC);
2226 cc.kandd(kA, kB, kC);
2227 cc.kandnb(kA, kB, kC);
2228 cc.kandnd(kA, kB, kC);
2229 cc.kandnq(kA, kB, kC);
2230 cc.kandnw(kA, kB, kC);
2231 cc.kandq(kA, kB, kC);
2232 cc.kandw(kA, kB, kC);
2233 cc.kmovb(kA, kB);
2234 cc.kmovb(kA, gpd);
2235 cc.kmovb(gpd, kB);
2236 cc.kmovd(kA, kB);
2237 cc.kmovd(kA, gpd);
2238 cc.kmovd(gpd, kB);
2239 cc.kmovq(kA, kB);
2240 if (cc.is64Bit()) cc.kmovq(kA, gpq);
2241 if (cc.is64Bit()) cc.kmovq(gpq, kB);
2242 cc.kmovw(kA, kB);
2243 cc.kmovw(kA, gpd);
2244 cc.kmovw(gpd, kB);
2245 cc.knotb(kA, kB);
2246 cc.knotd(kA, kB);
2247 cc.knotq(kA, kB);
2248 cc.knotw(kA, kB);
2249 cc.korb(kA, kB, kC);
2250 cc.kord(kA, kB, kC);
2251 cc.korq(kA, kB, kC);
2252 cc.kortestb(kA, kB);
2253 cc.kortestd(kA, kB);
2254 cc.kortestq(kA, kB);
2255 cc.kortestw(kA, kB);
2256 cc.korw(kA, kB, kC);
2257 cc.kshiftlb(kA, kB, 0);
2258 cc.kshiftld(kA, kB, 0);
2259 cc.kshiftlq(kA, kB, 0);
2260 cc.kshiftlw(kA, kB, 0);
2261 cc.kshiftrb(kA, kB, 0);
2262 cc.kshiftrd(kA, kB, 0);
2263 cc.kshiftrq(kA, kB, 0);
2264 cc.kshiftrw(kA, kB, 0);
2265 cc.ktestb(kA, kB);
2266 cc.ktestd(kA, kB);
2267 cc.ktestq(kA, kB);
2268 cc.ktestw(kA, kB);
2269 cc.kunpckbw(kA, kB, kC);
2270 cc.kunpckdq(kA, kB, kC);
2271 cc.kunpckwd(kA, kB, kC);
2272 cc.kxnorb(kA, kB, kC);
2273 cc.kxnord(kA, kB, kC);
2274 cc.kxnorq(kA, kB, kC);
2275 cc.kxnorw(kA, kB, kC);
2276 cc.kxorb(kA, kB, kC);
2277 cc.kxord(kA, kB, kC);
2278 cc.kxorq(kA, kB, kC);
2279 cc.kxorw(kA, kB, kC);
2280 cc.nop();
2281
2282 cc.evex().vaddpd(xmmA, xmmB, xmmC);
2283 cc.evex().vaddpd(ymmA, ymmB, ymmC);
2284 cc.evex().vaddpd(zmmA, zmmB, zmmC);
2285 cc.evex().vaddps(xmmA, xmmB, xmmC);
2286 cc.evex().vaddps(ymmA, ymmB, ymmC);
2287 cc.evex().vaddps(zmmA, zmmB, zmmC);
2288 cc.evex().vaddsd(xmmA, xmmB, xmmC);
2289 cc.evex().vaddss(xmmA, xmmB, xmmC);
2290 cc.evex().valignd(xmmA, xmmB, xmmC, 0);
2291 cc.evex().valignd(ymmA, ymmB, ymmC, 0);
2292 cc.evex().valignd(zmmA, zmmB, zmmC, 0);
2293 cc.evex().valignq(xmmA, xmmB, xmmC, 0);
2294 cc.evex().valignq(ymmA, ymmB, ymmC, 0);
2295 cc.evex().valignq(zmmA, zmmB, zmmC, 0);
2296 cc.evex().vandnpd(xmmA, xmmB, xmmC);
2297 cc.evex().vandnpd(ymmA, ymmB, ymmC);
2298 cc.evex().vandnpd(zmmA, zmmB, zmmC);
2299 cc.evex().vandnps(xmmA, xmmB, xmmC);
2300 cc.evex().vandnps(ymmA, ymmB, ymmC);
2301 cc.evex().vandnps(zmmA, zmmB, zmmC);
2302 cc.evex().vandpd(xmmA, xmmB, xmmC);
2303 cc.evex().vandpd(ymmA, ymmB, ymmC);
2304 cc.evex().vandpd(zmmA, zmmB, zmmC);
2305 cc.evex().vandps(xmmA, xmmB, xmmC);
2306 cc.evex().vandps(ymmA, ymmB, ymmC);
2307 cc.evex().vandps(zmmA, zmmB, zmmC);
2308 cc.evex().vblendmpd(xmmA, xmmB, xmmC);
2309 cc.evex().vblendmpd(ymmA, ymmB, ymmC);
2310 cc.evex().vblendmpd(zmmA, zmmB, zmmC);
2311 cc.evex().vblendmps(xmmA, xmmB, xmmC);
2312 cc.evex().vblendmps(ymmA, ymmB, ymmC);
2313 cc.evex().vblendmps(zmmA, zmmB, zmmC);
2314 cc.evex().vbroadcastf32x2(ymmA, xmmB);
2315 cc.evex().vbroadcastf32x2(zmmA, xmmB);
2316 cc.evex().vbroadcasti32x2(xmmA, xmmB);
2317 cc.evex().vbroadcasti32x2(ymmA, xmmB);
2318 cc.evex().vbroadcasti32x2(zmmA, xmmB);
2319 cc.evex().vbroadcastsd(ymmA, xmmB);
2320 cc.evex().vbroadcastsd(zmmA, xmmB);
2321 cc.evex().vbroadcastss(xmmA, xmmB);
2322 cc.evex().vbroadcastss(ymmA, xmmB);
2323 cc.evex().vbroadcastss(zmmA, xmmB);
2324 cc.evex().vcmppd(kA, xmmB, xmmC, 0);
2325 cc.evex().vcmppd(kA, ymmB, ymmC, 0);
2326 cc.evex().vcmppd(kA, zmmB, zmmC, 0);
2327 cc.evex().vcmpps(kA, xmmB, xmmC, 0);
2328 cc.evex().vcmpps(kA, ymmB, ymmC, 0);
2329 cc.evex().vcmpps(kA, zmmB, zmmC, 0);
2330 cc.evex().vcmpsd(kA, xmmB, xmmC, 0);
2331 cc.evex().vcmpss(kA, xmmB, xmmC, 0);
2332 cc.evex().vcomisd(xmmA, xmmB);
2333 cc.evex().vcomiss(xmmA, xmmB);
2334 cc.evex().vcompresspd(xmmA, xmmB);
2335 cc.evex().vcompresspd(ymmA, ymmB);
2336 cc.evex().vcompresspd(zmmA, zmmB);
2337 cc.evex().vcompressps(xmmA, xmmB);
2338 cc.evex().vcompressps(ymmA, ymmB);
2339 cc.evex().vcompressps(zmmA, zmmB);
2340 cc.evex().vcvtdq2pd(xmmA, xmmB);
2341 cc.evex().vcvtdq2pd(ymmA, xmmB);
2342 cc.evex().vcvtdq2pd(zmmA, ymmB);
2343 cc.evex().vcvtdq2ps(xmmA, xmmB);
2344 cc.evex().vcvtdq2ps(ymmA, ymmB);
2345 cc.evex().vcvtdq2ps(zmmA, zmmB);
2346 cc.evex().vcvtpd2dq(xmmA, xmmB);
2347 cc.evex().vcvtpd2dq(xmmA, ymmB);
2348 cc.evex().vcvtpd2dq(ymmA, zmmB);
2349 cc.evex().vcvtpd2qq(xmmA, xmmB);
2350 cc.evex().vcvtpd2qq(ymmA, ymmB);
2351 cc.evex().vcvtpd2qq(zmmA, zmmB);
2352 cc.evex().vcvtpd2udq(xmmA, xmmB);
2353 cc.evex().vcvtpd2udq(xmmA, ymmB);
2354 cc.evex().vcvtpd2udq(ymmA, zmmB);
2355 cc.evex().vcvtpd2uqq(xmmA, xmmB);
2356 cc.evex().vcvtpd2uqq(ymmA, ymmB);
2357 cc.evex().vcvtpd2uqq(zmmA, zmmB);
2358 cc.evex().vcvtph2ps(xmmA, xmmB);
2359 cc.evex().vcvtph2ps(ymmA, xmmB);
2360 cc.evex().vcvtph2ps(zmmA, ymmB);
2361 cc.evex().vcvtps2dq(xmmA, xmmB);
2362 cc.evex().vcvtps2dq(ymmA, ymmB);
2363 cc.evex().vcvtps2dq(zmmA, zmmB);
2364 cc.evex().vcvtps2pd(xmmA, xmmB);
2365 cc.evex().vcvtps2pd(ymmA, xmmB);
2366 cc.evex().vcvtps2pd(zmmA, ymmB);
2367 cc.evex().vcvtps2ph(xmmA, xmmB, 0);
2368 cc.evex().vcvtps2ph(xmmA, ymmB, 0);
2369 cc.evex().vcvtps2ph(ymmA, zmmB, 0);
2370 cc.evex().vcvtps2qq(xmmA, xmmB);
2371 cc.evex().vcvtps2qq(ymmA, xmmB);
2372 cc.evex().vcvtps2qq(zmmA, ymmB);
2373 cc.evex().vcvtps2udq(xmmA, xmmB);
2374 cc.evex().vcvtps2udq(ymmA, ymmB);
2375 cc.evex().vcvtps2udq(zmmA, zmmB);
2376 cc.evex().vcvtps2uqq(xmmA, xmmB);
2377 cc.evex().vcvtps2uqq(ymmA, xmmB);
2378 cc.evex().vcvtps2uqq(zmmA, ymmB);
2379 cc.evex().vcvtqq2pd(xmmA, xmmB);
2380 cc.evex().vcvtqq2pd(ymmA, ymmB);
2381 cc.evex().vcvtqq2pd(zmmA, zmmB);
2382 cc.evex().vcvtqq2ps(xmmA, xmmB);
2383 cc.evex().vcvtqq2ps(xmmA, ymmB);
2384 cc.evex().vcvtqq2ps(ymmA, zmmB);
2385 cc.evex().vcvtsd2si(gpd, xmmB);
2386 cc.evex().vcvtsd2si(gpz, xmmB);
2387 cc.evex().vcvtsd2ss(xmmA, xmmB, xmmC);
2388 cc.evex().vcvtsd2usi(gpd, xmmB);
2389 cc.evex().vcvtsd2usi(gpz, xmmB);
2390 cc.evex().vcvtsi2sd(xmmA, xmmB, gpd);
2391 cc.evex().vcvtsi2sd(xmmA, xmmB, gpz);
2392 cc.evex().vcvtsi2ss(xmmA, xmmB, gpd);
2393 cc.evex().vcvtsi2ss(xmmA, xmmB, gpz);
2394 cc.evex().vcvtss2sd(xmmA, xmmB, xmmC);
2395 cc.evex().vcvtss2si(gpd, xmmB);
2396 cc.evex().vcvtss2si(gpz, xmmB);
2397 cc.evex().vcvtss2usi(gpd, xmmB);
2398 cc.evex().vcvtss2usi(gpz, xmmB);
2399 cc.evex().vcvttpd2dq(xmmA, xmmB);
2400 cc.evex().vcvttpd2dq(xmmA, ymmB);
2401 cc.evex().vcvttpd2dq(ymmA, zmmB);
2402 cc.evex().vcvttpd2qq(xmmA, xmmB);
2403 cc.evex().vcvttpd2qq(ymmA, ymmB);
2404 cc.evex().vcvttpd2qq(zmmA, zmmB);
2405 cc.evex().vcvttpd2udq(xmmA, xmmB);
2406 cc.evex().vcvttpd2udq(xmmA, ymmB);
2407 cc.evex().vcvttpd2udq(ymmA, zmmB);
2408 cc.evex().vcvttpd2uqq(xmmA, xmmB);
2409 cc.evex().vcvttpd2uqq(ymmA, ymmB);
2410 cc.evex().vcvttpd2uqq(zmmA, zmmB);
2411 cc.evex().vcvttps2dq(xmmA, xmmB);
2412 cc.evex().vcvttps2dq(ymmA, ymmB);
2413 cc.evex().vcvttps2dq(zmmA, zmmB);
2414 cc.evex().vcvttps2qq(xmmA, xmmB);
2415 cc.evex().vcvttps2qq(ymmA, xmmB);
2416 cc.evex().vcvttps2qq(zmmA, ymmB);
2417 cc.evex().vcvttps2udq(xmmA, xmmB);
2418 cc.evex().vcvttps2udq(ymmA, ymmB);
2419 cc.evex().vcvttps2udq(zmmA, zmmB);
2420 cc.evex().vcvttps2uqq(xmmA, xmmB);
2421 cc.evex().vcvttps2uqq(ymmA, xmmB);
2422 cc.evex().vcvttps2uqq(zmmA, ymmB);
2423 cc.evex().vcvttsd2si(gpd, xmmB);
2424 cc.evex().vcvttsd2si(gpz, xmmB);
2425 cc.evex().vcvttsd2usi(gpd, xmmB);
2426 cc.evex().vcvttsd2usi(gpz, xmmB);
2427 cc.evex().vcvttss2si(gpd, xmmB);
2428 cc.evex().vcvttss2si(gpz, xmmB);
2429 cc.evex().vcvttss2usi(gpd, xmmB);
2430 cc.evex().vcvttss2usi(gpz, xmmB);
2431 cc.evex().vcvtudq2pd(xmmA, xmmB);
2432 cc.evex().vcvtudq2pd(ymmA, xmmB);
2433 cc.evex().vcvtudq2pd(zmmA, ymmB);
2434 cc.evex().vcvtudq2ps(xmmA, xmmB);
2435 cc.evex().vcvtudq2ps(ymmA, ymmB);
2436 cc.evex().vcvtudq2ps(zmmA, zmmB);
2437 cc.evex().vcvtuqq2pd(xmmA, xmmB);
2438 cc.evex().vcvtuqq2pd(ymmA, ymmB);
2439 cc.evex().vcvtuqq2pd(zmmA, zmmB);
2440 cc.evex().vcvtuqq2ps(xmmA, xmmB);
2441 cc.evex().vcvtuqq2ps(xmmA, ymmB);
2442 cc.evex().vcvtuqq2ps(ymmA, zmmB);
2443 cc.evex().vcvtusi2sd(xmmA, xmmB, gpd);
2444 cc.evex().vcvtusi2sd(xmmA, xmmB, gpz);
2445 cc.evex().vcvtusi2ss(xmmA, xmmB, gpd);
2446 cc.evex().vcvtusi2ss(xmmA, xmmB, gpz);
2447 cc.evex().vdbpsadbw(xmmA, xmmB, xmmC, 0);
2448 cc.evex().vdbpsadbw(ymmA, ymmB, ymmC, 0);
2449 cc.evex().vdbpsadbw(zmmA, zmmB, zmmC, 0);
2450 cc.evex().vdivpd(xmmA, xmmB, xmmC);
2451 cc.evex().vdivpd(ymmA, ymmB, ymmC);
2452 cc.evex().vdivpd(zmmA, zmmB, zmmC);
2453 cc.evex().vdivps(xmmA, xmmB, xmmC);
2454 cc.evex().vdivps(ymmA, ymmB, ymmC);
2455 cc.evex().vdivps(zmmA, zmmB, zmmC);
2456 cc.evex().vdivsd(xmmA, xmmB, xmmC);
2457 cc.evex().vdivss(xmmA, xmmB, xmmC);
2458 cc.evex().vexp2pd(zmmA, zmmB);
2459 cc.evex().vexp2ps(zmmA, zmmB);
2460 cc.evex().vexpandpd(xmmA, xmmB);
2461 cc.evex().vexpandpd(ymmA, ymmB);
2462 cc.evex().vexpandpd(zmmA, zmmB);
2463 cc.evex().vexpandps(xmmA, xmmB);
2464 cc.evex().vexpandps(ymmA, ymmB);
2465 cc.evex().vexpandps(zmmA, zmmB);
2466 cc.evex().vextractf32x4(xmmA, ymmB, 0);
2467 cc.evex().vextractf32x4(xmmA, zmmB, 0);
2468 cc.evex().vextractf32x8(ymmA, zmmB, 0);
2469 cc.evex().vextractf64x2(xmmA, ymmB, 0);
2470 cc.evex().vextractf64x2(xmmA, zmmB, 0);
2471 cc.evex().vextractf64x4(ymmA, zmmB, 0);
2472 cc.evex().vextracti32x4(xmmA, ymmB, 0);
2473 cc.evex().vextracti32x4(xmmA, zmmB, 0);
2474 cc.evex().vextracti32x8(ymmA, zmmB, 0);
2475 cc.evex().vextracti64x2(xmmA, ymmB, 0);
2476 cc.evex().vextracti64x2(xmmA, zmmB, 0);
2477 cc.evex().vextracti64x4(ymmA, zmmB, 0);
2478 cc.evex().vextractps(gpd, xmmB, 0);
2479 cc.evex().vfixupimmpd(xmmA, xmmB, xmmC, 0);
2480 cc.evex().vfixupimmpd(ymmA, ymmB, ymmC, 0);
2481 cc.evex().vfixupimmpd(zmmA, zmmB, zmmC, 0);
2482 cc.evex().vfixupimmps(xmmA, xmmB, xmmC, 0);
2483 cc.evex().vfixupimmps(ymmA, ymmB, ymmC, 0);
2484 cc.evex().vfixupimmps(zmmA, zmmB, zmmC, 0);
2485 cc.evex().vfixupimmsd(xmmA, xmmB, xmmC, 0);
2486 cc.evex().vfixupimmss(xmmA, xmmB, xmmC, 0);
2487 cc.evex().vfmadd132pd(xmmA, xmmB, xmmC);
2488 cc.evex().vfmadd132pd(ymmA, ymmB, ymmC);
2489 cc.evex().vfmadd132pd(zmmA, zmmB, zmmC);
2490 cc.evex().vfmadd132ps(xmmA, xmmB, xmmC);
2491 cc.evex().vfmadd132ps(ymmA, ymmB, ymmC);
2492 cc.evex().vfmadd132ps(zmmA, zmmB, zmmC);
2493 cc.evex().vfmadd132sd(xmmA, xmmB, xmmC);
2494 cc.evex().vfmadd132ss(xmmA, xmmB, xmmC);
2495 cc.evex().vfmadd213pd(xmmA, xmmB, xmmC);
2496 cc.evex().vfmadd213pd(ymmA, ymmB, ymmC);
2497 cc.evex().vfmadd213pd(zmmA, zmmB, zmmC);
2498 cc.evex().vfmadd213ps(xmmA, xmmB, xmmC);
2499 cc.evex().vfmadd213ps(ymmA, ymmB, ymmC);
2500 cc.evex().vfmadd213ps(zmmA, zmmB, zmmC);
2501 cc.evex().vfmadd213sd(xmmA, xmmB, xmmC);
2502 cc.evex().vfmadd213ss(xmmA, xmmB, xmmC);
2503 cc.evex().vfmadd231pd(xmmA, xmmB, xmmC);
2504 cc.evex().vfmadd231pd(ymmA, ymmB, ymmC);
2505 cc.evex().vfmadd231pd(zmmA, zmmB, zmmC);
2506 cc.evex().vfmadd231ps(xmmA, xmmB, xmmC);
2507 cc.evex().vfmadd231ps(ymmA, ymmB, ymmC);
2508 cc.evex().vfmadd231ps(zmmA, zmmB, zmmC);
2509 cc.evex().vfmadd231sd(xmmA, xmmB, xmmC);
2510 cc.evex().vfmadd231ss(xmmA, xmmB, xmmC);
2511 cc.evex().vfmaddsub132pd(xmmA, xmmB, xmmC);
2512 cc.evex().vfmaddsub132pd(ymmA, ymmB, ymmC);
2513 cc.evex().vfmaddsub132pd(zmmA, zmmB, zmmC);
2514 cc.evex().vfmaddsub132ps(xmmA, xmmB, xmmC);
2515 cc.evex().vfmaddsub132ps(ymmA, ymmB, ymmC);
2516 cc.evex().vfmaddsub132ps(zmmA, zmmB, zmmC);
2517 cc.evex().vfmaddsub213pd(xmmA, xmmB, xmmC);
2518 cc.evex().vfmaddsub213pd(ymmA, ymmB, ymmC);
2519 cc.evex().vfmaddsub213pd(zmmA, zmmB, zmmC);
2520 cc.evex().vfmaddsub213ps(xmmA, xmmB, xmmC);
2521 cc.evex().vfmaddsub213ps(ymmA, ymmB, ymmC);
2522 cc.evex().vfmaddsub213ps(zmmA, zmmB, zmmC);
2523 cc.evex().vfmaddsub231pd(xmmA, xmmB, xmmC);
2524 cc.evex().vfmaddsub231pd(ymmA, ymmB, ymmC);
2525 cc.evex().vfmaddsub231pd(zmmA, zmmB, zmmC);
2526 cc.evex().vfmaddsub231ps(xmmA, xmmB, xmmC);
2527 cc.evex().vfmaddsub231ps(ymmA, ymmB, ymmC);
2528 cc.evex().vfmaddsub231ps(zmmA, zmmB, zmmC);
2529 cc.evex().vfmsub132pd(xmmA, xmmB, xmmC);
2530 cc.evex().vfmsub132pd(ymmA, ymmB, ymmC);
2531 cc.evex().vfmsub132pd(zmmA, zmmB, zmmC);
2532 cc.evex().vfmsub132ps(xmmA, xmmB, xmmC);
2533 cc.evex().vfmsub132ps(ymmA, ymmB, ymmC);
2534 cc.evex().vfmsub132ps(zmmA, zmmB, zmmC);
2535 cc.evex().vfmsub132sd(xmmA, xmmB, xmmC);
2536 cc.evex().vfmsub132ss(xmmA, xmmB, xmmC);
2537 cc.evex().vfmsub213pd(xmmA, xmmB, xmmC);
2538 cc.evex().vfmsub213pd(ymmA, ymmB, ymmC);
2539 cc.evex().vfmsub213pd(zmmA, zmmB, zmmC);
2540 cc.evex().vfmsub213ps(xmmA, xmmB, xmmC);
2541 cc.evex().vfmsub213ps(ymmA, ymmB, ymmC);
2542 cc.evex().vfmsub213ps(zmmA, zmmB, zmmC);
2543 cc.evex().vfmsub213sd(xmmA, xmmB, xmmC);
2544 cc.evex().vfmsub213ss(xmmA, xmmB, xmmC);
2545 cc.evex().vfmsub231pd(xmmA, xmmB, xmmC);
2546 cc.evex().vfmsub231pd(ymmA, ymmB, ymmC);
2547 cc.evex().vfmsub231pd(zmmA, zmmB, zmmC);
2548 cc.evex().vfmsub231ps(xmmA, xmmB, xmmC);
2549 cc.evex().vfmsub231ps(ymmA, ymmB, ymmC);
2550 cc.evex().vfmsub231ps(zmmA, zmmB, zmmC);
2551 cc.evex().vfmsub231sd(xmmA, xmmB, xmmC);
2552 cc.evex().vfmsub231ss(xmmA, xmmB, xmmC);
2553 cc.evex().vfmsubadd132pd(xmmA, xmmB, xmmC);
2554 cc.evex().vfmsubadd132pd(ymmA, ymmB, ymmC);
2555 cc.evex().vfmsubadd132pd(zmmA, zmmB, zmmC);
2556 cc.evex().vfmsubadd132ps(xmmA, xmmB, xmmC);
2557 cc.evex().vfmsubadd132ps(ymmA, ymmB, ymmC);
2558 cc.evex().vfmsubadd132ps(zmmA, zmmB, zmmC);
2559 cc.evex().vfmsubadd213pd(xmmA, xmmB, xmmC);
2560 cc.evex().vfmsubadd213pd(ymmA, ymmB, ymmC);
2561 cc.evex().vfmsubadd213pd(zmmA, zmmB, zmmC);
2562 cc.evex().vfmsubadd213ps(xmmA, xmmB, xmmC);
2563 cc.evex().vfmsubadd213ps(ymmA, ymmB, ymmC);
2564 cc.evex().vfmsubadd213ps(zmmA, zmmB, zmmC);
2565 cc.evex().vfmsubadd231pd(xmmA, xmmB, xmmC);
2566 cc.evex().vfmsubadd231pd(ymmA, ymmB, ymmC);
2567 cc.evex().vfmsubadd231pd(zmmA, zmmB, zmmC);
2568 cc.evex().vfmsubadd231ps(xmmA, xmmB, xmmC);
2569 cc.evex().vfmsubadd231ps(ymmA, ymmB, ymmC);
2570 cc.evex().vfmsubadd231ps(zmmA, zmmB, zmmC);
2571 cc.evex().vfnmadd132pd(xmmA, xmmB, xmmC);
2572 cc.evex().vfnmadd132pd(ymmA, ymmB, ymmC);
2573 cc.evex().vfnmadd132pd(zmmA, zmmB, zmmC);
2574 cc.evex().vfnmadd132ps(xmmA, xmmB, xmmC);
2575 cc.evex().vfnmadd132ps(ymmA, ymmB, ymmC);
2576 cc.evex().vfnmadd132ps(zmmA, zmmB, zmmC);
2577 cc.evex().vfnmadd132sd(xmmA, xmmB, xmmC);
2578 cc.evex().vfnmadd132ss(xmmA, xmmB, xmmC);
2579 cc.evex().vfnmadd213pd(xmmA, xmmB, xmmC);
2580 cc.evex().vfnmadd213pd(ymmA, ymmB, ymmC);
2581 cc.evex().vfnmadd213pd(zmmA, zmmB, zmmC);
2582 cc.evex().vfnmadd213ps(xmmA, xmmB, xmmC);
2583 cc.evex().vfnmadd213ps(ymmA, ymmB, ymmC);
2584 cc.evex().vfnmadd213ps(zmmA, zmmB, zmmC);
2585 cc.evex().vfnmadd213sd(xmmA, xmmB, xmmC);
2586 cc.evex().vfnmadd213ss(xmmA, xmmB, xmmC);
2587 cc.evex().vfnmadd231pd(xmmA, xmmB, xmmC);
2588 cc.evex().vfnmadd231pd(ymmA, ymmB, ymmC);
2589 cc.evex().vfnmadd231pd(zmmA, zmmB, zmmC);
2590 cc.evex().vfnmadd231ps(xmmA, xmmB, xmmC);
2591 cc.evex().vfnmadd231ps(ymmA, ymmB, ymmC);
2592 cc.evex().vfnmadd231ps(zmmA, zmmB, zmmC);
2593 cc.evex().vfnmadd231sd(xmmA, xmmB, xmmC);
2594 cc.evex().vfnmadd231ss(xmmA, xmmB, xmmC);
2595 cc.evex().vfnmsub132pd(xmmA, xmmB, xmmC);
2596 cc.evex().vfnmsub132pd(ymmA, ymmB, ymmC);
2597 cc.evex().vfnmsub132pd(zmmA, zmmB, zmmC);
2598 cc.evex().vfnmsub132ps(xmmA, xmmB, xmmC);
2599 cc.evex().vfnmsub132ps(ymmA, ymmB, ymmC);
2600 cc.evex().vfnmsub132ps(zmmA, zmmB, zmmC);
2601 cc.evex().vfnmsub132sd(xmmA, xmmB, xmmC);
2602 cc.evex().vfnmsub132ss(xmmA, xmmB, xmmC);
2603 cc.evex().vfnmsub213pd(xmmA, xmmB, xmmC);
2604 cc.evex().vfnmsub213pd(ymmA, ymmB, ymmC);
2605 cc.evex().vfnmsub213pd(zmmA, zmmB, zmmC);
2606 cc.evex().vfnmsub213ps(xmmA, xmmB, xmmC);
2607 cc.evex().vfnmsub213ps(ymmA, ymmB, ymmC);
2608 cc.evex().vfnmsub213ps(zmmA, zmmB, zmmC);
2609 cc.evex().vfnmsub213sd(xmmA, xmmB, xmmC);
2610 cc.evex().vfnmsub213ss(xmmA, xmmB, xmmC);
2611 cc.evex().vfnmsub231pd(xmmA, xmmB, xmmC);
2612 cc.evex().vfnmsub231pd(ymmA, ymmB, ymmC);
2613 cc.evex().vfnmsub231pd(zmmA, zmmB, zmmC);
2614 cc.evex().vfnmsub231ps(xmmA, xmmB, xmmC);
2615 cc.evex().vfnmsub231ps(ymmA, ymmB, ymmC);
2616 cc.evex().vfnmsub231ps(zmmA, zmmB, zmmC);
2617 cc.evex().vfnmsub231sd(xmmA, xmmB, xmmC);
2618 cc.evex().vfnmsub231ss(xmmA, xmmB, xmmC);
2619 cc.evex().vfpclasspd(kA, xmmB, 0);
2620 cc.evex().vfpclasspd(kA, ymmB, 0);
2621 cc.evex().vfpclasspd(kA, zmmB, 0);
2622 cc.evex().vfpclassps(kA, xmmB, 0);
2623 cc.evex().vfpclassps(kA, ymmB, 0);
2624 cc.evex().vfpclassps(kA, zmmB, 0);
2625 cc.evex().vfpclasssd(kA, xmmB, 0);
2626 cc.evex().vfpclassss(kA, xmmB, 0);
2627 cc.evex().vgetexppd(xmmA, xmmB);
2628 cc.evex().vgetexppd(ymmA, ymmB);
2629 cc.evex().vgetexppd(zmmA, zmmB);
2630 cc.evex().vgetexpps(xmmA, xmmB);
2631 cc.evex().vgetexpps(ymmA, ymmB);
2632 cc.evex().vgetexpps(zmmA, zmmB);
2633 cc.evex().vgetexpsd(xmmA, xmmB, xmmC);
2634 cc.evex().vgetexpss(xmmA, xmmB, xmmC);
2635 cc.evex().vgetmantpd(xmmA, xmmB, 0);
2636 cc.evex().vgetmantpd(ymmA, ymmB, 0);
2637 cc.evex().vgetmantpd(zmmA, zmmB, 0);
2638 cc.evex().vgetmantps(xmmA, xmmB, 0);
2639 cc.evex().vgetmantps(ymmA, ymmB, 0);
2640 cc.evex().vgetmantps(zmmA, zmmB, 0);
2641 cc.evex().vgetmantsd(xmmA, xmmB, xmmC, 0);
2642 cc.evex().vgetmantss(xmmA, xmmB, xmmC, 0);
2643 cc.evex().vinsertf32x4(ymmA, ymmB, xmmC, 0);
2644 cc.evex().vinsertf32x4(zmmA, zmmB, xmmC, 0);
2645 cc.evex().vinsertf32x8(zmmA, zmmB, ymmC, 0);
2646 cc.evex().vinsertf64x2(ymmA, ymmB, xmmC, 0);
2647 cc.evex().vinsertf64x2(zmmA, zmmB, xmmC, 0);
2648 cc.evex().vinsertf64x4(zmmA, zmmB, ymmC, 0);
2649 cc.evex().vinserti32x4(ymmA, ymmB, xmmC, 0);
2650 cc.evex().vinserti32x4(zmmA, zmmB, xmmC, 0);
2651 cc.evex().vinserti32x8(zmmA, zmmB, ymmC, 0);
2652 cc.evex().vinserti64x2(ymmA, ymmB, xmmC, 0);
2653 cc.evex().vinserti64x2(zmmA, zmmB, xmmC, 0);
2654 cc.evex().vinserti64x4(zmmA, zmmB, ymmC, 0);
2655 cc.evex().vinsertps(xmmA, xmmB, xmmC, 0);
2656 cc.evex().vmaxpd(xmmA, xmmB, xmmC);
2657 cc.evex().vmaxpd(ymmA, ymmB, ymmC);
2658 cc.evex().vmaxpd(zmmA, zmmB, zmmC);
2659 cc.evex().vmaxps(xmmA, xmmB, xmmC);
2660 cc.evex().vmaxps(ymmA, ymmB, ymmC);
2661 cc.evex().vmaxps(zmmA, zmmB, zmmC);
2662 cc.evex().vmaxsd(xmmA, xmmB, xmmC);
2663 cc.evex().vmaxss(xmmA, xmmB, xmmC);
2664 cc.evex().vminpd(xmmA, xmmB, xmmC);
2665 cc.evex().vminpd(ymmA, ymmB, ymmC);
2666 cc.evex().vminpd(zmmA, zmmB, zmmC);
2667 cc.evex().vminps(xmmA, xmmB, xmmC);
2668 cc.evex().vminps(ymmA, ymmB, ymmC);
2669 cc.evex().vminps(zmmA, zmmB, zmmC);
2670 cc.evex().vminsd(xmmA, xmmB, xmmC);
2671 cc.evex().vminss(xmmA, xmmB, xmmC);
2672 cc.evex().vmovapd(xmmA, xmmB);
2673 cc.evex().vmovapd(xmmA, xmmB);
2674 cc.evex().vmovapd(ymmA, ymmB);
2675 cc.evex().vmovapd(ymmA, ymmB);
2676 cc.evex().vmovapd(zmmA, zmmB);
2677 cc.evex().vmovapd(zmmA, zmmB);
2678 cc.evex().vmovaps(xmmA, xmmB);
2679 cc.evex().vmovaps(xmmA, xmmB);
2680 cc.evex().vmovaps(ymmA, ymmB);
2681 cc.evex().vmovaps(ymmA, ymmB);
2682 cc.evex().vmovaps(zmmA, zmmB);
2683 cc.evex().vmovaps(zmmA, zmmB);
2684 cc.evex().vmovd(gpd, xmmB);
2685 cc.evex().vmovd(xmmA, gpd);
2686 cc.evex().vmovddup(xmmA, xmmB);
2687 cc.evex().vmovddup(ymmA, ymmB);
2688 cc.evex().vmovddup(zmmA, zmmB);
2689 cc.evex().vmovdqa32(xmmA, xmmB);
2690 cc.evex().vmovdqa32(xmmA, xmmB);
2691 cc.evex().vmovdqa32(ymmA, ymmB);
2692 cc.evex().vmovdqa32(ymmA, ymmB);
2693 cc.evex().vmovdqa32(zmmA, zmmB);
2694 cc.evex().vmovdqa32(zmmA, zmmB);
2695 cc.evex().vmovdqa64(xmmA, xmmB);
2696 cc.evex().vmovdqa64(xmmA, xmmB);
2697 cc.evex().vmovdqa64(ymmA, ymmB);
2698 cc.evex().vmovdqa64(ymmA, ymmB);
2699 cc.evex().vmovdqa64(zmmA, zmmB);
2700 cc.evex().vmovdqa64(zmmA, zmmB);
2701 cc.evex().vmovdqu16(xmmA, xmmB);
2702 cc.evex().vmovdqu16(xmmA, xmmB);
2703 cc.evex().vmovdqu16(ymmA, ymmB);
2704 cc.evex().vmovdqu16(ymmA, ymmB);
2705 cc.evex().vmovdqu16(zmmA, zmmB);
2706 cc.evex().vmovdqu16(zmmA, zmmB);
2707 cc.evex().vmovdqu32(xmmA, xmmB);
2708 cc.evex().vmovdqu32(xmmA, xmmB);
2709 cc.evex().vmovdqu32(ymmA, ymmB);
2710 cc.evex().vmovdqu32(ymmA, ymmB);
2711 cc.evex().vmovdqu32(zmmA, zmmB);
2712 cc.evex().vmovdqu32(zmmA, zmmB);
2713 cc.evex().vmovdqu64(xmmA, xmmB);
2714 cc.evex().vmovdqu64(xmmA, xmmB);
2715 cc.evex().vmovdqu64(ymmA, ymmB);
2716 cc.evex().vmovdqu64(ymmA, ymmB);
2717 cc.evex().vmovdqu64(zmmA, zmmB);
2718 cc.evex().vmovdqu64(zmmA, zmmB);
2719 cc.evex().vmovdqu8(xmmA, xmmB);
2720 cc.evex().vmovdqu8(xmmA, xmmB);
2721 cc.evex().vmovdqu8(ymmA, ymmB);
2722 cc.evex().vmovdqu8(ymmA, ymmB);
2723 cc.evex().vmovdqu8(zmmA, zmmB);
2724 cc.evex().vmovdqu8(zmmA, zmmB);
2725 cc.evex().vmovhlps(xmmA, xmmB, xmmC);
2726 if (cc.is64Bit()) cc.evex().vmovq(gpq, xmmB);
2727 if (cc.is64Bit()) cc.evex().vmovq(xmmA, gpq);
2728 cc.evex().vmovq(xmmA, xmmB);
2729 cc.evex().vmovsd(xmmA, xmmB, xmmC);
2730 cc.evex().vmovshdup(xmmA, xmmB);
2731 cc.evex().vmovshdup(ymmA, ymmB);
2732 cc.evex().vmovshdup(zmmA, zmmB);
2733 cc.evex().vmovsldup(xmmA, xmmB);
2734 cc.evex().vmovsldup(ymmA, ymmB);
2735 cc.evex().vmovsldup(zmmA, zmmB);
2736 cc.evex().vmovss(xmmA, xmmB, xmmC);
2737 cc.evex().vmovupd(xmmA, xmmB);
2738 cc.evex().vmovupd(xmmA, xmmB);
2739 cc.evex().vmovupd(ymmA, ymmB);
2740 cc.evex().vmovupd(ymmA, ymmB);
2741 cc.evex().vmovupd(zmmA, zmmB);
2742 cc.evex().vmovupd(zmmA, zmmB);
2743 cc.evex().vmovups(xmmA, xmmB);
2744 cc.evex().vmovups(xmmA, xmmB);
2745 cc.evex().vmovups(ymmA, ymmB);
2746 cc.evex().vmovups(ymmA, ymmB);
2747 cc.evex().vmovups(zmmA, zmmB);
2748 cc.evex().vmovups(zmmA, zmmB);
2749 cc.evex().vmulpd(xmmA, xmmB, xmmC);
2750 cc.evex().vmulpd(ymmA, ymmB, ymmC);
2751 cc.evex().vmulpd(zmmA, zmmB, zmmC);
2752 cc.evex().vmulps(xmmA, xmmB, xmmC);
2753 cc.evex().vmulps(ymmA, ymmB, ymmC);
2754 cc.evex().vmulps(zmmA, zmmB, zmmC);
2755 cc.evex().vmulsd(xmmA, xmmB, xmmC);
2756 cc.evex().vmulss(xmmA, xmmB, xmmC);
2757 cc.evex().vorpd(xmmA, xmmB, xmmC);
2758 cc.evex().vorpd(ymmA, ymmB, ymmC);
2759 cc.evex().vorpd(zmmA, zmmB, zmmC);
2760 cc.evex().vorps(xmmA, xmmB, xmmC);
2761 cc.evex().vorps(ymmA, ymmB, ymmC);
2762 cc.evex().vorps(zmmA, zmmB, zmmC);
2763 cc.evex().vpabsb(xmmA, xmmB);
2764 cc.evex().vpabsb(ymmA, ymmB);
2765 cc.evex().vpabsb(zmmA, zmmB);
2766 cc.evex().vpabsd(xmmA, xmmB);
2767 cc.evex().vpabsd(ymmA, ymmB);
2768 cc.evex().vpabsd(zmmA, zmmB);
2769 cc.evex().vpabsq(xmmA, xmmB);
2770 cc.evex().vpabsq(ymmA, ymmB);
2771 cc.evex().vpabsq(zmmA, zmmB);
2772 cc.evex().vpabsw(xmmA, xmmB);
2773 cc.evex().vpabsw(ymmA, ymmB);
2774 cc.evex().vpabsw(zmmA, zmmB);
2775 cc.evex().vpackssdw(xmmA, xmmB, xmmC);
2776 cc.evex().vpackssdw(ymmA, ymmB, ymmC);
2777 cc.evex().vpackssdw(zmmA, zmmB, zmmC);
2778 cc.evex().vpacksswb(xmmA, xmmB, xmmC);
2779 cc.evex().vpacksswb(ymmA, ymmB, ymmC);
2780 cc.evex().vpacksswb(zmmA, zmmB, zmmC);
2781 cc.evex().vpackusdw(xmmA, xmmB, xmmC);
2782 cc.evex().vpackusdw(ymmA, ymmB, ymmC);
2783 cc.evex().vpackusdw(zmmA, zmmB, zmmC);
2784 cc.evex().vpackuswb(xmmA, xmmB, xmmC);
2785 cc.evex().vpackuswb(ymmA, ymmB, ymmC);
2786 cc.evex().vpackuswb(zmmA, zmmB, zmmC);
2787 cc.evex().vpaddb(xmmA, xmmB, xmmC);
2788 cc.evex().vpaddb(ymmA, ymmB, ymmC);
2789 cc.evex().vpaddb(zmmA, zmmB, zmmC);
2790 cc.evex().vpaddd(xmmA, xmmB, xmmC);
2791 cc.evex().vpaddd(ymmA, ymmB, ymmC);
2792 cc.evex().vpaddd(zmmA, zmmB, zmmC);
2793 cc.evex().vpaddq(xmmA, xmmB, xmmC);
2794 cc.evex().vpaddq(ymmA, ymmB, ymmC);
2795 cc.evex().vpaddq(zmmA, zmmB, zmmC);
2796 cc.evex().vpaddsb(xmmA, xmmB, xmmC);
2797 cc.evex().vpaddsb(ymmA, ymmB, ymmC);
2798 cc.evex().vpaddsb(zmmA, zmmB, zmmC);
2799 cc.evex().vpaddsw(xmmA, xmmB, xmmC);
2800 cc.evex().vpaddsw(ymmA, ymmB, ymmC);
2801 cc.evex().vpaddsw(zmmA, zmmB, zmmC);
2802 cc.evex().vpaddusb(xmmA, xmmB, xmmC);
2803 cc.evex().vpaddusb(ymmA, ymmB, ymmC);
2804 cc.evex().vpaddusb(zmmA, zmmB, zmmC);
2805 cc.evex().vpaddusw(xmmA, xmmB, xmmC);
2806 cc.evex().vpaddusw(ymmA, ymmB, ymmC);
2807 cc.evex().vpaddusw(zmmA, zmmB, zmmC);
2808 cc.evex().vpaddw(xmmA, xmmB, xmmC);
2809 cc.evex().vpaddw(ymmA, ymmB, ymmC);
2810 cc.evex().vpaddw(zmmA, zmmB, zmmC);
2811 cc.evex().vpalignr(xmmA, xmmB, xmmC, 0);
2812 cc.evex().vpalignr(ymmA, ymmB, ymmC, 0);
2813 cc.evex().vpalignr(zmmA, zmmB, zmmC, 0);
2814 cc.evex().vpandd(xmmA, xmmB, xmmC);
2815 cc.evex().vpandd(ymmA, ymmB, ymmC);
2816 cc.evex().vpandd(zmmA, zmmB, zmmC);
2817 cc.evex().vpandnd(xmmA, xmmB, xmmC);
2818 cc.evex().vpandnd(ymmA, ymmB, ymmC);
2819 cc.evex().vpandnd(zmmA, zmmB, zmmC);
2820 cc.evex().vpandnq(xmmA, xmmB, xmmC);
2821 cc.evex().vpandnq(ymmA, ymmB, ymmC);
2822 cc.evex().vpandnq(zmmA, zmmB, zmmC);
2823 cc.evex().vpandq(xmmA, xmmB, xmmC);
2824 cc.evex().vpandq(ymmA, ymmB, ymmC);
2825 cc.evex().vpandq(zmmA, zmmB, zmmC);
2826 cc.evex().vpavgb(xmmA, xmmB, xmmC);
2827 cc.evex().vpavgb(ymmA, ymmB, ymmC);
2828 cc.evex().vpavgb(zmmA, zmmB, zmmC);
2829 cc.evex().vpavgw(xmmA, xmmB, xmmC);
2830 cc.evex().vpavgw(ymmA, ymmB, ymmC);
2831 cc.evex().vpavgw(zmmA, zmmB, zmmC);
2832 cc.evex().vpblendmb(xmmA, xmmB, xmmC);
2833 cc.evex().vpblendmb(ymmA, ymmB, ymmC);
2834 cc.evex().vpblendmb(zmmA, zmmB, zmmC);
2835 cc.evex().vpblendmd(xmmA, xmmB, xmmC);
2836 cc.evex().vpblendmd(ymmA, ymmB, ymmC);
2837 cc.evex().vpblendmd(zmmA, zmmB, zmmC);
2838 cc.evex().vpblendmq(xmmA, xmmB, xmmC);
2839 cc.evex().vpblendmq(ymmA, ymmB, ymmC);
2840 cc.evex().vpblendmq(zmmA, zmmB, zmmC);
2841 cc.evex().vpblendmw(xmmA, xmmB, xmmC);
2842 cc.evex().vpblendmw(ymmA, ymmB, ymmC);
2843 cc.evex().vpblendmw(zmmA, zmmB, zmmC);
2844 cc.evex().vpbroadcastb(xmmA, gpd);
2845 cc.evex().vpbroadcastb(xmmA, xmmB);
2846 cc.evex().vpbroadcastb(ymmA, gpd);
2847 cc.evex().vpbroadcastb(ymmA, xmmB);
2848 cc.evex().vpbroadcastb(zmmA, gpd);
2849 cc.evex().vpbroadcastb(zmmA, xmmB);
2850 cc.evex().vpbroadcastd(xmmA, gpd);
2851 cc.evex().vpbroadcastd(xmmA, xmmB);
2852 cc.evex().vpbroadcastd(ymmA, gpd);
2853 cc.evex().vpbroadcastd(ymmA, xmmB);
2854 cc.evex().vpbroadcastd(zmmA, gpd);
2855 cc.evex().vpbroadcastd(zmmA, xmmB);
2856 cc.evex().vpbroadcastmb2q(xmmA, kB);
2857 cc.evex().vpbroadcastmb2q(ymmA, kB);
2858 cc.evex().vpbroadcastmb2q(zmmA, kB);
2859 cc.evex().vpbroadcastmw2d(xmmA, kB);
2860 cc.evex().vpbroadcastmw2d(ymmA, kB);
2861 cc.evex().vpbroadcastmw2d(zmmA, kB);
2862 if (cc.is64Bit()) cc.evex().vpbroadcastq(xmmA, gpq);
2863 cc.evex().vpbroadcastq(xmmA, xmmB);
2864 if (cc.is64Bit()) cc.evex().vpbroadcastq(ymmA, gpq);
2865 cc.evex().vpbroadcastq(ymmA, xmmB);
2866 if (cc.is64Bit()) cc.evex().vpbroadcastq(zmmA, gpq);
2867 cc.evex().vpbroadcastq(zmmA, xmmB);
2868 cc.evex().vpbroadcastw(xmmA, gpd);
2869 cc.evex().vpbroadcastw(xmmA, xmmB);
2870 cc.evex().vpbroadcastw(ymmA, gpd);
2871 cc.evex().vpbroadcastw(ymmA, xmmB);
2872 cc.evex().vpbroadcastw(zmmA, gpd);
2873 cc.evex().vpbroadcastw(zmmA, xmmB);
2874 cc.evex().vpcmpb(kA, xmmB, xmmC, 0);
2875 cc.evex().vpcmpb(kA, ymmB, ymmC, 0);
2876 cc.evex().vpcmpb(kA, zmmB, zmmC, 0);
2877 cc.evex().vpcmpd(kA, xmmB, xmmC, 0);
2878 cc.evex().vpcmpd(kA, ymmB, ymmC, 0);
2879 cc.evex().vpcmpd(kA, zmmB, zmmC, 0);
2880 cc.evex().vpcmpeqb(kA, xmmB, xmmC);
2881 cc.evex().vpcmpeqb(kA, ymmB, ymmC);
2882 cc.evex().vpcmpeqb(kA, zmmB, zmmC);
2883 cc.evex().vpcmpeqd(kA, xmmB, xmmC);
2884 cc.evex().vpcmpeqd(kA, ymmB, ymmC);
2885 cc.evex().vpcmpeqd(kA, zmmB, zmmC);
2886 cc.evex().vpcmpeqq(kA, xmmB, xmmC);
2887 cc.evex().vpcmpeqq(kA, ymmB, ymmC);
2888 cc.evex().vpcmpeqq(kA, zmmB, zmmC);
2889 cc.evex().vpcmpeqw(kA, xmmB, xmmC);
2890 cc.evex().vpcmpeqw(kA, ymmB, ymmC);
2891 cc.evex().vpcmpeqw(kA, zmmB, zmmC);
2892 cc.evex().vpcmpgtb(kA, xmmB, xmmC);
2893 cc.evex().vpcmpgtb(kA, ymmB, ymmC);
2894 cc.evex().vpcmpgtb(kA, zmmB, zmmC);
2895 cc.evex().vpcmpgtd(kA, xmmB, xmmC);
2896 cc.evex().vpcmpgtd(kA, ymmB, ymmC);
2897 cc.evex().vpcmpgtd(kA, zmmB, zmmC);
2898 cc.evex().vpcmpgtq(kA, xmmB, xmmC);
2899 cc.evex().vpcmpgtq(kA, ymmB, ymmC);
2900 cc.evex().vpcmpgtq(kA, zmmB, zmmC);
2901 cc.evex().vpcmpgtw(kA, xmmB, xmmC);
2902 cc.evex().vpcmpgtw(kA, ymmB, ymmC);
2903 cc.evex().vpcmpgtw(kA, zmmB, zmmC);
2904 cc.evex().vpcmpq(kA, xmmB, xmmC, 0);
2905 cc.evex().vpcmpq(kA, ymmB, ymmC, 0);
2906 cc.evex().vpcmpq(kA, zmmB, zmmC, 0);
2907 cc.evex().vpcmpub(kA, xmmB, xmmC, 0);
2908 cc.evex().vpcmpub(kA, ymmB, ymmC, 0);
2909 cc.evex().vpcmpub(kA, zmmB, zmmC, 0);
2910 cc.evex().vpcmpud(kA, xmmB, xmmC, 0);
2911 cc.evex().vpcmpud(kA, ymmB, ymmC, 0);
2912 cc.evex().vpcmpud(kA, zmmB, zmmC, 0);
2913 cc.evex().vpcmpuq(kA, xmmB, xmmC, 0);
2914 cc.evex().vpcmpuq(kA, ymmB, ymmC, 0);
2915 cc.evex().vpcmpuq(kA, zmmB, zmmC, 0);
2916 cc.evex().vpcmpuw(kA, xmmB, xmmC, 0);
2917 cc.evex().vpcmpuw(kA, ymmB, ymmC, 0);
2918 cc.evex().vpcmpuw(kA, zmmB, zmmC, 0);
2919 cc.evex().vpcmpw(kA, xmmB, xmmC, 0);
2920 cc.evex().vpcmpw(kA, ymmB, ymmC, 0);
2921 cc.evex().vpcmpw(kA, zmmB, zmmC, 0);
2922 cc.evex().vpcompressd(xmmA, xmmB);
2923 cc.evex().vpcompressd(ymmA, ymmB);
2924 cc.evex().vpcompressd(zmmA, zmmB);
2925 cc.evex().vpcompressq(xmmA, xmmB);
2926 cc.evex().vpcompressq(ymmA, ymmB);
2927 cc.evex().vpcompressq(zmmA, zmmB);
2928 cc.evex().vpconflictd(xmmA, xmmB);
2929 cc.evex().vpconflictd(ymmA, ymmB);
2930 cc.evex().vpconflictd(zmmA, zmmB);
2931 cc.evex().vpconflictq(xmmA, xmmB);
2932 cc.evex().vpconflictq(ymmA, ymmB);
2933 cc.evex().vpconflictq(zmmA, zmmB);
2934 cc.evex().vpermb(xmmA, xmmB, xmmC);
2935 cc.evex().vpermb(ymmA, ymmB, ymmC);
2936 cc.evex().vpermb(zmmA, zmmB, zmmC);
2937 cc.evex().vpermd(ymmA, ymmB, ymmC);
2938 cc.evex().vpermd(zmmA, zmmB, zmmC);
2939 cc.evex().vpermi2b(xmmA, xmmB, xmmC);
2940 cc.evex().vpermi2b(ymmA, ymmB, ymmC);
2941 cc.evex().vpermi2b(zmmA, zmmB, zmmC);
2942 cc.evex().vpermi2d(xmmA, xmmB, xmmC);
2943 cc.evex().vpermi2d(ymmA, ymmB, ymmC);
2944 cc.evex().vpermi2d(zmmA, zmmB, zmmC);
2945 cc.evex().vpermi2pd(xmmA, xmmB, xmmC);
2946 cc.evex().vpermi2pd(ymmA, ymmB, ymmC);
2947 cc.evex().vpermi2pd(zmmA, zmmB, zmmC);
2948 cc.evex().vpermi2ps(xmmA, xmmB, xmmC);
2949 cc.evex().vpermi2ps(ymmA, ymmB, ymmC);
2950 cc.evex().vpermi2ps(zmmA, zmmB, zmmC);
2951 cc.evex().vpermi2q(xmmA, xmmB, xmmC);
2952 cc.evex().vpermi2q(ymmA, ymmB, ymmC);
2953 cc.evex().vpermi2q(zmmA, zmmB, zmmC);
2954 cc.evex().vpermi2w(xmmA, xmmB, xmmC);
2955 cc.evex().vpermi2w(ymmA, ymmB, ymmC);
2956 cc.evex().vpermi2w(zmmA, zmmB, zmmC);
2957 cc.evex().vpermilpd(xmmA, xmmB, xmmC);
2958 cc.evex().vpermilpd(ymmA, ymmB, ymmC);
2959 cc.evex().vpermilpd(zmmA, zmmB, zmmC);
2960 cc.evex().vpermilpd(xmmA, xmmB, 0);
2961 cc.evex().vpermilpd(ymmA, ymmB, 0);
2962 cc.evex().vpermilpd(zmmA, zmmB, 0);
2963 cc.evex().vpermilps(xmmA, xmmB, xmmC);
2964 cc.evex().vpermilps(ymmA, ymmB, ymmC);
2965 cc.evex().vpermilps(zmmA, zmmB, zmmC);
2966 cc.evex().vpermilps(xmmA, xmmB, 0);
2967 cc.evex().vpermilps(ymmA, ymmB, 0);
2968 cc.evex().vpermilps(zmmA, zmmB, 0);
2969 cc.evex().vpermq(ymmA, ymmB, ymmC);
2970 cc.evex().vpermq(zmmA, zmmB, zmmC);
2971 cc.evex().vpermq(ymmA, ymmB, 0);
2972 cc.evex().vpermq(zmmA, zmmB, 0);
2973 cc.evex().vpermt2b(xmmA, xmmB, xmmC);
2974 cc.evex().vpermt2b(ymmA, ymmB, ymmC);
2975 cc.evex().vpermt2b(zmmA, zmmB, zmmC);
2976 cc.evex().vpermt2d(xmmA, xmmB, xmmC);
2977 cc.evex().vpermt2d(ymmA, ymmB, ymmC);
2978 cc.evex().vpermt2d(zmmA, zmmB, zmmC);
2979 cc.evex().vpermt2pd(xmmA, xmmB, xmmC);
2980 cc.evex().vpermt2pd(ymmA, ymmB, ymmC);
2981 cc.evex().vpermt2pd(zmmA, zmmB, zmmC);
2982 cc.evex().vpermt2ps(xmmA, xmmB, xmmC);
2983 cc.evex().vpermt2ps(ymmA, ymmB, ymmC);
2984 cc.evex().vpermt2ps(zmmA, zmmB, zmmC);
2985 cc.evex().vpermt2q(xmmA, xmmB, xmmC);
2986 cc.evex().vpermt2q(ymmA, ymmB, ymmC);
2987 cc.evex().vpermt2q(zmmA, zmmB, zmmC);
2988 cc.evex().vpermt2w(xmmA, xmmB, xmmC);
2989 cc.evex().vpermt2w(ymmA, ymmB, ymmC);
2990 cc.evex().vpermt2w(zmmA, zmmB, zmmC);
2991 cc.evex().vpermw(xmmA, xmmB, xmmC);
2992 cc.evex().vpermw(ymmA, ymmB, ymmC);
2993 cc.evex().vpermw(zmmA, zmmB, zmmC);
2994 cc.evex().vpexpandd(xmmA, xmmB);
2995 cc.evex().vpexpandd(ymmA, ymmB);
2996 cc.evex().vpexpandd(zmmA, zmmB);
2997 cc.evex().vpexpandq(xmmA, xmmB);
2998 cc.evex().vpexpandq(ymmA, ymmB);
2999 cc.evex().vpexpandq(zmmA, zmmB);
3000 cc.evex().vpextrb(gpd, xmmB, 0);
3001 cc.evex().vpextrd(gpd, xmmB, 0);
3002 if (cc.is64Bit()) cc.evex().vpextrq(gpq, xmmB, 0);
3003 cc.evex().vpextrw(gpd, xmmB, 0);
3004 cc.evex().vpinsrb(xmmA, xmmB, gpd, 0);
3005 cc.evex().vpinsrd(xmmA, xmmB, gpd, 0);
3006 if (cc.is64Bit()) cc.evex().vpinsrq(xmmA, xmmB, gpq, 0);
3007 cc.evex().vpinsrw(xmmA, xmmB, gpd, 0);
3008 cc.evex().vplzcntd(xmmA, xmmB);
3009 cc.evex().vplzcntd(ymmA, ymmB);
3010 cc.evex().vplzcntd(zmmA, zmmB);
3011 cc.evex().vplzcntq(xmmA, xmmB);
3012 cc.evex().vplzcntq(ymmA, ymmB);
3013 cc.evex().vplzcntq(zmmA, zmmB);
3014 cc.evex().vpmadd52huq(xmmA, xmmB, xmmC);
3015 cc.evex().vpmadd52huq(ymmA, ymmB, ymmC);
3016 cc.evex().vpmadd52huq(zmmA, zmmB, zmmC);
3017 cc.evex().vpmadd52luq(xmmA, xmmB, xmmC);
3018 cc.evex().vpmadd52luq(ymmA, ymmB, ymmC);
3019 cc.evex().vpmadd52luq(zmmA, zmmB, zmmC);
3020 cc.evex().vpmaddubsw(xmmA, xmmB, xmmC);
3021 cc.evex().vpmaddubsw(ymmA, ymmB, ymmC);
3022 cc.evex().vpmaddubsw(zmmA, zmmB, zmmC);
3023 cc.evex().vpmaddwd(xmmA, xmmB, xmmC);
3024 cc.evex().vpmaddwd(ymmA, ymmB, ymmC);
3025 cc.evex().vpmaddwd(zmmA, zmmB, zmmC);
3026 cc.evex().vpmaxsb(xmmA, xmmB, xmmC);
3027 cc.evex().vpmaxsb(ymmA, ymmB, ymmC);
3028 cc.evex().vpmaxsb(zmmA, zmmB, zmmC);
3029 cc.evex().vpmaxsd(xmmA, xmmB, xmmC);
3030 cc.evex().vpmaxsd(ymmA, ymmB, ymmC);
3031 cc.evex().vpmaxsd(zmmA, zmmB, zmmC);
3032 cc.evex().vpmaxsq(xmmA, xmmB, xmmC);
3033 cc.evex().vpmaxsq(ymmA, ymmB, ymmC);
3034 cc.evex().vpmaxsq(zmmA, zmmB, zmmC);
3035 cc.evex().vpmaxsw(xmmA, xmmB, xmmC);
3036 cc.evex().vpmaxsw(ymmA, ymmB, ymmC);
3037 cc.evex().vpmaxsw(zmmA, zmmB, zmmC);
3038 cc.evex().vpmaxub(xmmA, xmmB, xmmC);
3039 cc.evex().vpmaxub(ymmA, ymmB, ymmC);
3040 cc.evex().vpmaxub(zmmA, zmmB, zmmC);
3041 cc.evex().vpmaxud(xmmA, xmmB, xmmC);
3042 cc.evex().vpmaxud(ymmA, ymmB, ymmC);
3043 cc.evex().vpmaxud(zmmA, zmmB, zmmC);
3044 cc.evex().vpmaxuq(xmmA, xmmB, xmmC);
3045 cc.evex().vpmaxuq(ymmA, ymmB, ymmC);
3046 cc.evex().vpmaxuq(zmmA, zmmB, zmmC);
3047 cc.evex().vpmaxuw(xmmA, xmmB, xmmC);
3048 cc.evex().vpmaxuw(ymmA, ymmB, ymmC);
3049 cc.evex().vpmaxuw(zmmA, zmmB, zmmC);
3050 cc.evex().vpminsb(xmmA, xmmB, xmmC);
3051 cc.evex().vpminsb(ymmA, ymmB, ymmC);
3052 cc.evex().vpminsb(zmmA, zmmB, zmmC);
3053 cc.evex().vpminsd(xmmA, xmmB, xmmC);
3054 cc.evex().vpminsd(ymmA, ymmB, ymmC);
3055 cc.evex().vpminsd(zmmA, zmmB, zmmC);
3056 cc.evex().vpminsq(xmmA, xmmB, xmmC);
3057 cc.evex().vpminsq(ymmA, ymmB, ymmC);
3058 cc.evex().vpminsq(zmmA, zmmB, zmmC);
3059 cc.evex().vpminsw(xmmA, xmmB, xmmC);
3060 cc.evex().vpminsw(ymmA, ymmB, ymmC);
3061 cc.evex().vpminsw(zmmA, zmmB, zmmC);
3062 cc.evex().vpminub(xmmA, xmmB, xmmC);
3063 cc.evex().vpminub(ymmA, ymmB, ymmC);
3064 cc.evex().vpminub(zmmA, zmmB, zmmC);
3065 cc.evex().vpminud(xmmA, xmmB, xmmC);
3066 cc.evex().vpminud(ymmA, ymmB, ymmC);
3067 cc.evex().vpminud(zmmA, zmmB, zmmC);
3068 cc.evex().vpminuq(xmmA, xmmB, xmmC);
3069 cc.evex().vpminuq(ymmA, ymmB, ymmC);
3070 cc.evex().vpminuq(zmmA, zmmB, zmmC);
3071 cc.evex().vpminuw(xmmA, xmmB, xmmC);
3072 cc.evex().vpminuw(ymmA, ymmB, ymmC);
3073 cc.evex().vpminuw(zmmA, zmmB, zmmC);
3074 cc.evex().vpmovb2m(kA, xmmB);
3075 cc.evex().vpmovb2m(kA, ymmB);
3076 cc.evex().vpmovb2m(kA, zmmB);
3077 cc.evex().vpmovd2m(kA, xmmB);
3078 cc.evex().vpmovd2m(kA, ymmB);
3079 cc.evex().vpmovd2m(kA, zmmB);
3080 cc.evex().vpmovdb(xmmA, xmmB);
3081 cc.evex().vpmovdb(xmmA, ymmB);
3082 cc.evex().vpmovdb(xmmA, zmmB);
3083 cc.evex().vpmovdw(xmmA, xmmB);
3084 cc.evex().vpmovdw(xmmA, ymmB);
3085 cc.evex().vpmovdw(ymmA, zmmB);
3086 cc.evex().vpmovm2b(xmmA, kB);
3087 cc.evex().vpmovm2b(ymmA, kB);
3088 cc.evex().vpmovm2b(zmmA, kB);
3089 cc.evex().vpmovm2d(xmmA, kB);
3090 cc.evex().vpmovm2d(ymmA, kB);
3091 cc.evex().vpmovm2d(zmmA, kB);
3092 cc.evex().vpmovm2q(xmmA, kB);
3093 cc.evex().vpmovm2q(ymmA, kB);
3094 cc.evex().vpmovm2q(zmmA, kB);
3095 cc.evex().vpmovm2w(xmmA, kB);
3096 cc.evex().vpmovm2w(ymmA, kB);
3097 cc.evex().vpmovm2w(zmmA, kB);
3098 cc.evex().vpmovq2m(kA, xmmB);
3099 cc.evex().vpmovq2m(kA, ymmB);
3100 cc.evex().vpmovq2m(kA, zmmB);
3101 cc.evex().vpmovqb(xmmA, xmmB);
3102 cc.evex().vpmovqb(xmmA, ymmB);
3103 cc.evex().vpmovqb(xmmA, zmmB);
3104 cc.evex().vpmovqd(xmmA, xmmB);
3105 cc.evex().vpmovqd(xmmA, ymmB);
3106 cc.evex().vpmovqd(ymmA, zmmB);
3107 cc.evex().vpmovqw(xmmA, xmmB);
3108 cc.evex().vpmovqw(xmmA, ymmB);
3109 cc.evex().vpmovqw(xmmA, zmmB);
3110 cc.evex().vpmovsdb(xmmA, xmmB);
3111 cc.evex().vpmovsdb(xmmA, ymmB);
3112 cc.evex().vpmovsdb(xmmA, zmmB);
3113 cc.evex().vpmovsdw(xmmA, xmmB);
3114 cc.evex().vpmovsdw(xmmA, ymmB);
3115 cc.evex().vpmovsdw(ymmA, zmmB);
3116 cc.evex().vpmovsqb(xmmA, xmmB);
3117 cc.evex().vpmovsqb(xmmA, ymmB);
3118 cc.evex().vpmovsqb(xmmA, zmmB);
3119 cc.evex().vpmovsqd(xmmA, xmmB);
3120 cc.evex().vpmovsqd(xmmA, ymmB);
3121 cc.evex().vpmovsqd(ymmA, zmmB);
3122 cc.evex().vpmovsqw(xmmA, xmmB);
3123 cc.evex().vpmovsqw(xmmA, ymmB);
3124 cc.evex().vpmovsqw(xmmA, zmmB);
3125 cc.evex().vpmovswb(xmmA, xmmB);
3126 cc.evex().vpmovswb(xmmA, ymmB);
3127 cc.evex().vpmovswb(ymmA, zmmB);
3128 cc.evex().vpmovsxbd(xmmA, xmmB);
3129 cc.evex().vpmovsxbd(ymmA, xmmB);
3130 cc.evex().vpmovsxbd(zmmA, xmmB);
3131 cc.evex().vpmovsxbq(xmmA, xmmB);
3132 cc.evex().vpmovsxbq(ymmA, xmmB);
3133 cc.evex().vpmovsxbq(zmmA, xmmB);
3134 cc.evex().vpmovsxbw(xmmA, xmmB);
3135 cc.evex().vpmovsxbw(ymmA, xmmB);
3136 cc.evex().vpmovsxbw(zmmA, ymmB);
3137 cc.evex().vpmovsxdq(xmmA, xmmB);
3138 cc.evex().vpmovsxdq(ymmA, xmmB);
3139 cc.evex().vpmovsxdq(zmmA, ymmB);
3140 cc.evex().vpmovsxwd(xmmA, xmmB);
3141 cc.evex().vpmovsxwd(ymmA, xmmB);
3142 cc.evex().vpmovsxwd(zmmA, ymmB);
3143 cc.evex().vpmovsxwq(xmmA, xmmB);
3144 cc.evex().vpmovsxwq(ymmA, xmmB);
3145 cc.evex().vpmovsxwq(zmmA, xmmB);
3146 cc.evex().vpmovusdb(xmmA, xmmB);
3147 cc.evex().vpmovusdb(xmmA, ymmB);
3148 cc.evex().vpmovusdb(xmmA, zmmB);
3149 cc.evex().vpmovusdw(xmmA, xmmB);
3150 cc.evex().vpmovusdw(xmmA, ymmB);
3151 cc.evex().vpmovusdw(ymmA, zmmB);
3152 cc.evex().vpmovusqb(xmmA, xmmB);
3153 cc.evex().vpmovusqb(xmmA, ymmB);
3154 cc.evex().vpmovusqb(xmmA, zmmB);
3155 cc.evex().vpmovusqd(xmmA, xmmB);
3156 cc.evex().vpmovusqd(xmmA, ymmB);
3157 cc.evex().vpmovusqd(ymmA, zmmB);
3158 cc.evex().vpmovusqw(xmmA, xmmB);
3159 cc.evex().vpmovusqw(xmmA, ymmB);
3160 cc.evex().vpmovusqw(xmmA, zmmB);
3161 cc.evex().vpmovuswb(xmmA, xmmB);
3162 cc.evex().vpmovuswb(xmmA, ymmB);
3163 cc.evex().vpmovuswb(ymmA, zmmB);
3164 cc.evex().vpmovw2m(kA, xmmB);
3165 cc.evex().vpmovw2m(kA, ymmB);
3166 cc.evex().vpmovw2m(kA, zmmB);
3167 cc.evex().vpmovwb(xmmA, xmmB);
3168 cc.evex().vpmovwb(xmmA, ymmB);
3169 cc.evex().vpmovwb(ymmA, zmmB);
3170 cc.evex().vpmovzxbd(xmmA, xmmB);
3171 cc.evex().vpmovzxbd(ymmA, xmmB);
3172 cc.evex().vpmovzxbd(zmmA, xmmB);
3173 cc.evex().vpmovzxbq(xmmA, xmmB);
3174 cc.evex().vpmovzxbq(ymmA, xmmB);
3175 cc.evex().vpmovzxbq(zmmA, xmmB);
3176 cc.evex().vpmovzxbw(xmmA, xmmB);
3177 cc.evex().vpmovzxbw(ymmA, xmmB);
3178 cc.evex().vpmovzxbw(zmmA, ymmB);
3179 cc.evex().vpmovzxdq(xmmA, xmmB);
3180 cc.evex().vpmovzxdq(ymmA, xmmB);
3181 cc.evex().vpmovzxdq(zmmA, ymmB);
3182 cc.evex().vpmovzxwd(xmmA, xmmB);
3183 cc.evex().vpmovzxwd(ymmA, xmmB);
3184 cc.evex().vpmovzxwd(zmmA, ymmB);
3185 cc.evex().vpmovzxwq(xmmA, xmmB);
3186 cc.evex().vpmovzxwq(ymmA, xmmB);
3187 cc.evex().vpmovzxwq(zmmA, xmmB);
3188 cc.evex().vpmuldq(xmmA, xmmB, xmmC);
3189 cc.evex().vpmuldq(ymmA, ymmB, ymmC);
3190 cc.evex().vpmuldq(zmmA, zmmB, zmmC);
3191 cc.evex().vpmulhrsw(xmmA, xmmB, xmmC);
3192 cc.evex().vpmulhrsw(ymmA, ymmB, ymmC);
3193 cc.evex().vpmulhrsw(zmmA, zmmB, zmmC);
3194 cc.evex().vpmulhuw(xmmA, xmmB, xmmC);
3195 cc.evex().vpmulhuw(ymmA, ymmB, ymmC);
3196 cc.evex().vpmulhuw(zmmA, zmmB, zmmC);
3197 cc.evex().vpmulhw(xmmA, xmmB, xmmC);
3198 cc.evex().vpmulhw(ymmA, ymmB, ymmC);
3199 cc.evex().vpmulhw(zmmA, zmmB, zmmC);
3200 cc.evex().vpmulld(xmmA, xmmB, xmmC);
3201 cc.evex().vpmulld(ymmA, ymmB, ymmC);
3202 cc.evex().vpmulld(zmmA, zmmB, zmmC);
3203 cc.evex().vpmullq(xmmA, xmmB, xmmC);
3204 cc.evex().vpmullq(ymmA, ymmB, ymmC);
3205 cc.evex().vpmullq(zmmA, zmmB, zmmC);
3206 cc.evex().vpmullw(xmmA, xmmB, xmmC);
3207 cc.evex().vpmullw(ymmA, ymmB, ymmC);
3208 cc.evex().vpmullw(zmmA, zmmB, zmmC);
3209 cc.evex().vpmultishiftqb(xmmA, xmmB, xmmC);
3210 cc.evex().vpmultishiftqb(ymmA, ymmB, ymmC);
3211 cc.evex().vpmultishiftqb(zmmA, zmmB, zmmC);
3212 cc.evex().vpmuludq(xmmA, xmmB, xmmC);
3213 cc.evex().vpmuludq(ymmA, ymmB, ymmC);
3214 cc.evex().vpmuludq(zmmA, zmmB, zmmC);
3215 cc.evex().vpopcntd(zmmA, zmmB);
3216 cc.evex().vpopcntq(zmmA, zmmB);
3217 cc.evex().vpord(xmmA, xmmB, xmmC);
3218 cc.evex().vpord(ymmA, ymmB, ymmC);
3219 cc.evex().vpord(zmmA, zmmB, zmmC);
3220 cc.evex().vporq(xmmA, xmmB, xmmC);
3221 cc.evex().vporq(ymmA, ymmB, ymmC);
3222 cc.evex().vporq(zmmA, zmmB, zmmC);
3223 cc.evex().vprold(xmmA, xmmB, 0);
3224 cc.evex().vprold(ymmA, ymmB, 0);
3225 cc.evex().vprold(zmmA, zmmB, 0);
3226 cc.evex().vprolq(xmmA, xmmB, 0);
3227 cc.evex().vprolq(ymmA, ymmB, 0);
3228 cc.evex().vprolq(zmmA, zmmB, 0);
3229 cc.evex().vprolvd(xmmA, xmmB, xmmC);
3230 cc.evex().vprolvd(ymmA, ymmB, ymmC);
3231 cc.evex().vprolvd(zmmA, zmmB, zmmC);
3232 cc.evex().vprolvq(xmmA, xmmB, xmmC);
3233 cc.evex().vprolvq(ymmA, ymmB, ymmC);
3234 cc.evex().vprolvq(zmmA, zmmB, zmmC);
3235 cc.evex().vprord(xmmA, xmmB, 0);
3236 cc.evex().vprord(ymmA, ymmB, 0);
3237 cc.evex().vprord(zmmA, zmmB, 0);
3238 cc.evex().vprorq(xmmA, xmmB, 0);
3239 cc.evex().vprorq(ymmA, ymmB, 0);
3240 cc.evex().vprorq(zmmA, zmmB, 0);
3241 cc.evex().vprorvd(xmmA, xmmB, xmmC);
3242 cc.evex().vprorvd(ymmA, ymmB, ymmC);
3243 cc.evex().vprorvd(zmmA, zmmB, zmmC);
3244 cc.evex().vprorvq(xmmA, xmmB, xmmC);
3245 cc.evex().vprorvq(ymmA, ymmB, ymmC);
3246 cc.evex().vprorvq(zmmA, zmmB, zmmC);
3247 cc.evex().vpsadbw(xmmA, xmmB, xmmC);
3248 cc.evex().vpsadbw(ymmA, ymmB, ymmC);
3249 cc.evex().vpsadbw(zmmA, zmmB, zmmC);
3250 cc.evex().vpshufb(xmmA, xmmB, xmmC);
3251 cc.evex().vpshufb(ymmA, ymmB, ymmC);
3252 cc.evex().vpshufb(zmmA, zmmB, zmmC);
3253 cc.evex().vpshufd(xmmA, xmmB, 0);
3254 cc.evex().vpshufd(ymmA, ymmB, 0);
3255 cc.evex().vpshufd(zmmA, zmmB, 0);
3256 cc.evex().vpshufhw(xmmA, xmmB, 0);
3257 cc.evex().vpshufhw(ymmA, ymmB, 0);
3258 cc.evex().vpshufhw(zmmA, zmmB, 0);
3259 cc.evex().vpshuflw(xmmA, xmmB, 0);
3260 cc.evex().vpshuflw(ymmA, ymmB, 0);
3261 cc.evex().vpshuflw(zmmA, zmmB, 0);
3262 cc.evex().vpslld(xmmA, xmmB, xmmC);
3263 cc.evex().vpslld(xmmA, xmmB, 0);
3264 cc.evex().vpslld(ymmA, ymmB, xmmC);
3265 cc.evex().vpslld(ymmA, ymmB, 0);
3266 cc.evex().vpslld(zmmA, zmmB, xmmC);
3267 cc.evex().vpslld(zmmA, zmmB, 0);
3268 cc.evex().vpslldq(xmmA, xmmB, 0);
3269 cc.evex().vpslldq(ymmA, ymmB, 0);
3270 cc.evex().vpslldq(zmmA, zmmB, 0);
3271 cc.evex().vpsllq(xmmA, xmmB, xmmC);
3272 cc.evex().vpsllq(xmmA, xmmB, 0);
3273 cc.evex().vpsllq(ymmA, ymmB, xmmC);
3274 cc.evex().vpsllq(ymmA, ymmB, 0);
3275 cc.evex().vpsllq(zmmA, zmmB, xmmC);
3276 cc.evex().vpsllq(zmmA, zmmB, 0);
3277 cc.evex().vpsllvd(xmmA, xmmB, xmmC);
3278 cc.evex().vpsllvd(ymmA, ymmB, ymmC);
3279 cc.evex().vpsllvd(zmmA, zmmB, zmmC);
3280 cc.evex().vpsllvq(xmmA, xmmB, xmmC);
3281 cc.evex().vpsllvq(ymmA, ymmB, ymmC);
3282 cc.evex().vpsllvq(zmmA, zmmB, zmmC);
3283 cc.evex().vpsllvw(xmmA, xmmB, xmmC);
3284 cc.evex().vpsllvw(ymmA, ymmB, ymmC);
3285 cc.evex().vpsllvw(zmmA, zmmB, zmmC);
3286 cc.evex().vpsllw(xmmA, xmmB, xmmC);
3287 cc.evex().vpsllw(xmmA, xmmB, 0);
3288 cc.evex().vpsllw(ymmA, ymmB, xmmC);
3289 cc.evex().vpsllw(ymmA, ymmB, 0);
3290 cc.evex().vpsllw(zmmA, zmmB, xmmC);
3291 cc.evex().vpsllw(zmmA, zmmB, 0);
3292 cc.evex().vpsrad(xmmA, xmmB, xmmC);
3293 cc.evex().vpsrad(xmmA, xmmB, 0);
3294 cc.evex().vpsrad(ymmA, ymmB, xmmC);
3295 cc.evex().vpsrad(ymmA, ymmB, 0);
3296 cc.evex().vpsrad(zmmA, zmmB, xmmC);
3297 cc.evex().vpsrad(zmmA, zmmB, 0);
3298 cc.evex().vpsraq(xmmA, xmmB, xmmC);
3299 cc.evex().vpsraq(xmmA, xmmB, 0);
3300 cc.evex().vpsraq(ymmA, ymmB, xmmC);
3301 cc.evex().vpsraq(ymmA, ymmB, 0);
3302 cc.evex().vpsraq(zmmA, zmmB, xmmC);
3303 cc.evex().vpsraq(zmmA, zmmB, 0);
3304 cc.evex().vpsravd(xmmA, xmmB, xmmC);
3305 cc.evex().vpsravd(ymmA, ymmB, ymmC);
3306 cc.evex().vpsravd(zmmA, zmmB, zmmC);
3307 cc.evex().vpsravq(xmmA, xmmB, xmmC);
3308 cc.evex().vpsravq(ymmA, ymmB, ymmC);
3309 cc.evex().vpsravq(zmmA, zmmB, zmmC);
3310 cc.evex().vpsravw(xmmA, xmmB, xmmC);
3311 cc.evex().vpsravw(ymmA, ymmB, ymmC);
3312 cc.evex().vpsravw(zmmA, zmmB, zmmC);
3313 cc.evex().vpsraw(xmmA, xmmB, xmmC);
3314 cc.evex().vpsraw(xmmA, xmmB, 0);
3315 cc.evex().vpsraw(ymmA, ymmB, xmmC);
3316 cc.evex().vpsraw(ymmA, ymmB, 0);
3317 cc.evex().vpsraw(zmmA, zmmB, xmmC);
3318 cc.evex().vpsraw(zmmA, zmmB, 0);
3319 cc.evex().vpsrld(xmmA, xmmB, xmmC);
3320 cc.evex().vpsrld(xmmA, xmmB, 0);
3321 cc.evex().vpsrld(ymmA, ymmB, xmmC);
3322 cc.evex().vpsrld(ymmA, ymmB, 0);
3323 cc.evex().vpsrld(zmmA, zmmB, xmmC);
3324 cc.evex().vpsrld(zmmA, zmmB, 0);
3325 cc.evex().vpsrldq(xmmA, xmmB, 0);
3326 cc.evex().vpsrldq(ymmA, ymmB, 0);
3327 cc.evex().vpsrldq(zmmA, zmmB, 0);
3328 cc.evex().vpsrlq(xmmA, xmmB, xmmC);
3329 cc.evex().vpsrlq(xmmA, xmmB, 0);
3330 cc.evex().vpsrlq(ymmA, ymmB, xmmC);
3331 cc.evex().vpsrlq(ymmA, ymmB, 0);
3332 cc.evex().vpsrlq(zmmA, zmmB, xmmC);
3333 cc.evex().vpsrlq(zmmA, zmmB, 0);
3334 cc.evex().vpsrlvd(xmmA, xmmB, xmmC);
3335 cc.evex().vpsrlvd(ymmA, ymmB, ymmC);
3336 cc.evex().vpsrlvd(zmmA, zmmB, zmmC);
3337 cc.evex().vpsrlvq(xmmA, xmmB, xmmC);
3338 cc.evex().vpsrlvq(ymmA, ymmB, ymmC);
3339 cc.evex().vpsrlvq(zmmA, zmmB, zmmC);
3340 cc.evex().vpsrlvw(xmmA, xmmB, xmmC);
3341 cc.evex().vpsrlvw(ymmA, ymmB, ymmC);
3342 cc.evex().vpsrlvw(zmmA, zmmB, zmmC);
3343 cc.evex().vpsrlw(xmmA, xmmB, xmmC);
3344 cc.evex().vpsrlw(xmmA, xmmB, 0);
3345 cc.evex().vpsrlw(ymmA, ymmB, xmmC);
3346 cc.evex().vpsrlw(ymmA, ymmB, 0);
3347 cc.evex().vpsrlw(zmmA, zmmB, xmmC);
3348 cc.evex().vpsrlw(zmmA, zmmB, 0);
3349 cc.evex().vpsubb(xmmA, xmmB, xmmC);
3350 cc.evex().vpsubb(ymmA, ymmB, ymmC);
3351 cc.evex().vpsubb(zmmA, zmmB, zmmC);
3352 cc.evex().vpsubd(xmmA, xmmB, xmmC);
3353 cc.evex().vpsubd(ymmA, ymmB, ymmC);
3354 cc.evex().vpsubd(zmmA, zmmB, zmmC);
3355 cc.evex().vpsubq(xmmA, xmmB, xmmC);
3356 cc.evex().vpsubq(ymmA, ymmB, ymmC);
3357 cc.evex().vpsubq(zmmA, zmmB, zmmC);
3358 cc.evex().vpsubsb(xmmA, xmmB, xmmC);
3359 cc.evex().vpsubsb(ymmA, ymmB, ymmC);
3360 cc.evex().vpsubsb(zmmA, zmmB, zmmC);
3361 cc.evex().vpsubsw(xmmA, xmmB, xmmC);
3362 cc.evex().vpsubsw(ymmA, ymmB, ymmC);
3363 cc.evex().vpsubsw(zmmA, zmmB, zmmC);
3364 cc.evex().vpsubusb(xmmA, xmmB, xmmC);
3365 cc.evex().vpsubusb(ymmA, ymmB, ymmC);
3366 cc.evex().vpsubusb(zmmA, zmmB, zmmC);
3367 cc.evex().vpsubusw(xmmA, xmmB, xmmC);
3368 cc.evex().vpsubusw(ymmA, ymmB, ymmC);
3369 cc.evex().vpsubusw(zmmA, zmmB, zmmC);
3370 cc.evex().vpsubw(xmmA, xmmB, xmmC);
3371 cc.evex().vpsubw(ymmA, ymmB, ymmC);
3372 cc.evex().vpsubw(zmmA, zmmB, zmmC);
3373 cc.evex().vpternlogd(xmmA, xmmB, xmmC, 0);
3374 cc.evex().vpternlogd(ymmA, ymmB, ymmC, 0);
3375 cc.evex().vpternlogd(zmmA, zmmB, zmmC, 0);
3376 cc.evex().vpternlogq(xmmA, xmmB, xmmC, 0);
3377 cc.evex().vpternlogq(ymmA, ymmB, ymmC, 0);
3378 cc.evex().vpternlogq(zmmA, zmmB, zmmC, 0);
3379 cc.evex().vptestmb(kA, xmmB, xmmC);
3380 cc.evex().vptestmb(kA, ymmB, ymmC);
3381 cc.evex().vptestmb(kA, zmmB, zmmC);
3382 cc.evex().vptestmd(kA, xmmB, xmmC);
3383 cc.evex().vptestmd(kA, ymmB, ymmC);
3384 cc.evex().vptestmd(kA, zmmB, zmmC);
3385 cc.evex().vptestmq(kA, xmmB, xmmC);
3386 cc.evex().vptestmq(kA, ymmB, ymmC);
3387 cc.evex().vptestmq(kA, zmmB, zmmC);
3388 cc.evex().vptestmw(kA, xmmB, xmmC);
3389 cc.evex().vptestmw(kA, ymmB, ymmC);
3390 cc.evex().vptestmw(kA, zmmB, zmmC);
3391 cc.evex().vptestnmb(kA, xmmB, xmmC);
3392 cc.evex().vptestnmb(kA, ymmB, ymmC);
3393 cc.evex().vptestnmb(kA, zmmB, zmmC);
3394 cc.evex().vptestnmd(kA, xmmB, xmmC);
3395 cc.evex().vptestnmd(kA, ymmB, ymmC);
3396 cc.evex().vptestnmd(kA, zmmB, zmmC);
3397 cc.evex().vptestnmq(kA, xmmB, xmmC);
3398 cc.evex().vptestnmq(kA, ymmB, ymmC);
3399 cc.evex().vptestnmq(kA, zmmB, zmmC);
3400 cc.evex().vptestnmw(kA, xmmB, xmmC);
3401 cc.evex().vptestnmw(kA, ymmB, ymmC);
3402 cc.evex().vptestnmw(kA, zmmB, zmmC);
3403 cc.evex().vpunpckhbw(xmmA, xmmB, xmmC);
3404 cc.evex().vpunpckhbw(ymmA, ymmB, ymmC);
3405 cc.evex().vpunpckhbw(zmmA, zmmB, zmmC);
3406 cc.evex().vpunpckhdq(xmmA, xmmB, xmmC);
3407 cc.evex().vpunpckhdq(ymmA, ymmB, ymmC);
3408 cc.evex().vpunpckhdq(zmmA, zmmB, zmmC);
3409 cc.evex().vpunpckhqdq(xmmA, xmmB, xmmC);
3410 cc.evex().vpunpckhqdq(ymmA, ymmB, ymmC);
3411 cc.evex().vpunpckhqdq(zmmA, zmmB, zmmC);
3412 cc.evex().vpunpckhwd(xmmA, xmmB, xmmC);
3413 cc.evex().vpunpckhwd(ymmA, ymmB, ymmC);
3414 cc.evex().vpunpckhwd(zmmA, zmmB, zmmC);
3415 cc.evex().vpunpcklbw(xmmA, xmmB, xmmC);
3416 cc.evex().vpunpcklbw(ymmA, ymmB, ymmC);
3417 cc.evex().vpunpcklbw(zmmA, zmmB, zmmC);
3418 cc.evex().vpunpckldq(xmmA, xmmB, xmmC);
3419 cc.evex().vpunpckldq(ymmA, ymmB, ymmC);
3420 cc.evex().vpunpckldq(zmmA, zmmB, zmmC);
3421 cc.evex().vpunpcklqdq(xmmA, xmmB, xmmC);
3422 cc.evex().vpunpcklqdq(ymmA, ymmB, ymmC);
3423 cc.evex().vpunpcklqdq(zmmA, zmmB, zmmC);
3424 cc.evex().vpunpcklwd(xmmA, xmmB, xmmC);
3425 cc.evex().vpunpcklwd(ymmA, ymmB, ymmC);
3426 cc.evex().vpunpcklwd(zmmA, zmmB, zmmC);
3427 cc.evex().vpxord(xmmA, xmmB, xmmC);
3428 cc.evex().vpxord(ymmA, ymmB, ymmC);
3429 cc.evex().vpxord(zmmA, zmmB, zmmC);
3430 cc.evex().vpxorq(xmmA, xmmB, xmmC);
3431 cc.evex().vpxorq(ymmA, ymmB, ymmC);
3432 cc.evex().vpxorq(zmmA, zmmB, zmmC);
3433 cc.evex().vrangepd(xmmA, xmmB, xmmC, 0);
3434 cc.evex().vrangepd(ymmA, ymmB, ymmC, 0);
3435 cc.evex().vrangepd(zmmA, zmmB, zmmC, 0);
3436 cc.evex().vrangeps(xmmA, xmmB, xmmC, 0);
3437 cc.evex().vrangeps(ymmA, ymmB, ymmC, 0);
3438 cc.evex().vrangeps(zmmA, zmmB, zmmC, 0);
3439 cc.evex().vrangesd(xmmA, xmmB, xmmC, 0);
3440 cc.evex().vrangess(xmmA, xmmB, xmmC, 0);
3441 cc.evex().vrcp14pd(xmmA, xmmB);
3442 cc.evex().vrcp14pd(ymmA, ymmB);
3443 cc.evex().vrcp14pd(zmmA, zmmB);
3444 cc.evex().vrcp14ps(xmmA, xmmB);
3445 cc.evex().vrcp14ps(ymmA, ymmB);
3446 cc.evex().vrcp14ps(zmmA, zmmB);
3447 cc.evex().vrcp14sd(xmmA, xmmB, xmmC);
3448 cc.evex().vrcp14ss(xmmA, xmmB, xmmC);
3449 cc.evex().vrcp28pd(zmmA, zmmB);
3450 cc.evex().vrcp28ps(zmmA, zmmB);
3451 cc.evex().vrcp28sd(xmmA, xmmB, xmmC);
3452 cc.evex().vrcp28ss(xmmA, xmmB, xmmC);
3453 cc.evex().vreducepd(xmmA, xmmB, 0);
3454 cc.evex().vreducepd(ymmA, ymmB, 0);
3455 cc.evex().vreducepd(zmmA, zmmB, 0);
3456 cc.evex().vreduceps(xmmA, xmmB, 0);
3457 cc.evex().vreduceps(ymmA, ymmB, 0);
3458 cc.evex().vreduceps(zmmA, zmmB, 0);
3459 cc.evex().vreducesd(xmmA, xmmB, xmmC, 0);
3460 cc.evex().vreducess(xmmA, xmmB, xmmC, 0);
3461 cc.evex().vrndscalepd(xmmA, xmmB, 0);
3462 cc.evex().vrndscalepd(ymmA, ymmB, 0);
3463 cc.evex().vrndscalepd(zmmA, zmmB, 0);
3464 cc.evex().vrndscaleps(xmmA, xmmB, 0);
3465 cc.evex().vrndscaleps(ymmA, ymmB, 0);
3466 cc.evex().vrndscaleps(zmmA, zmmB, 0);
3467 cc.evex().vrndscalesd(xmmA, xmmB, xmmC, 0);
3468 cc.evex().vrndscaless(xmmA, xmmB, xmmC, 0);
3469 cc.evex().vrsqrt14pd(xmmA, xmmB);
3470 cc.evex().vrsqrt14pd(ymmA, ymmB);
3471 cc.evex().vrsqrt14pd(zmmA, zmmB);
3472 cc.evex().vrsqrt14ps(xmmA, xmmB);
3473 cc.evex().vrsqrt14ps(ymmA, ymmB);
3474 cc.evex().vrsqrt14ps(zmmA, zmmB);
3475 cc.evex().vrsqrt14sd(xmmA, xmmB, xmmC);
3476 cc.evex().vrsqrt14ss(xmmA, xmmB, xmmC);
3477 cc.evex().vrsqrt28pd(zmmA, zmmB);
3478 cc.evex().vrsqrt28ps(zmmA, zmmB);
3479 cc.evex().vrsqrt28sd(xmmA, xmmB, xmmC);
3480 cc.evex().vrsqrt28ss(xmmA, xmmB, xmmC);
3481 cc.evex().vscalefpd(xmmA, xmmB, xmmC);
3482 cc.evex().vscalefpd(ymmA, ymmB, ymmC);
3483 cc.evex().vscalefpd(zmmA, zmmB, zmmC);
3484 cc.evex().vscalefps(xmmA, xmmB, xmmC);
3485 cc.evex().vscalefps(ymmA, ymmB, ymmC);
3486 cc.evex().vscalefps(zmmA, zmmB, zmmC);
3487 cc.evex().vscalefsd(xmmA, xmmB, xmmC);
3488 cc.evex().vscalefss(xmmA, xmmB, xmmC);
3489 cc.evex().vshuff32x4(ymmA, ymmB, ymmC, 0);
3490 cc.evex().vshuff32x4(zmmA, zmmB, zmmC, 0);
3491 cc.evex().vshuff64x2(ymmA, ymmB, ymmC, 0);
3492 cc.evex().vshuff64x2(zmmA, zmmB, zmmC, 0);
3493 cc.evex().vshufi32x4(ymmA, ymmB, ymmC, 0);
3494 cc.evex().vshufi32x4(zmmA, zmmB, zmmC, 0);
3495 cc.evex().vshufi64x2(ymmA, ymmB, ymmC, 0);
3496 cc.evex().vshufi64x2(zmmA, zmmB, zmmC, 0);
3497 cc.evex().vshufpd(xmmA, xmmB, xmmC, 0);
3498 cc.evex().vshufpd(ymmA, ymmB, ymmC, 0);
3499 cc.evex().vshufpd(zmmA, zmmB, zmmC, 0);
3500 cc.evex().vshufps(xmmA, xmmB, xmmC, 0);
3501 cc.evex().vshufps(ymmA, ymmB, ymmC, 0);
3502 cc.evex().vshufps(zmmA, zmmB, zmmC, 0);
3503 cc.evex().vsqrtpd(xmmA, xmmB);
3504 cc.evex().vsqrtpd(ymmA, ymmB);
3505 cc.evex().vsqrtpd(zmmA, zmmB);
3506 cc.evex().vsqrtps(xmmA, xmmB);
3507 cc.evex().vsqrtps(ymmA, ymmB);
3508 cc.evex().vsqrtps(zmmA, zmmB);
3509 cc.evex().vsqrtsd(xmmA, xmmB, xmmC);
3510 cc.evex().vsqrtss(xmmA, xmmB, xmmC);
3511 cc.evex().vsubpd(xmmA, xmmB, xmmC);
3512 cc.evex().vsubpd(ymmA, ymmB, ymmC);
3513 cc.evex().vsubpd(zmmA, zmmB, zmmC);
3514 cc.evex().vsubps(xmmA, xmmB, xmmC);
3515 cc.evex().vsubps(ymmA, ymmB, ymmC);
3516 cc.evex().vsubps(zmmA, zmmB, zmmC);
3517 cc.evex().vsubsd(xmmA, xmmB, xmmC);
3518 cc.evex().vsubss(xmmA, xmmB, xmmC);
3519 cc.evex().vucomisd(xmmA, xmmB);
3520 cc.evex().vucomiss(xmmA, xmmB);
3521 cc.evex().vunpckhpd(xmmA, xmmB, xmmC);
3522 cc.evex().vunpckhpd(ymmA, ymmB, ymmC);
3523 cc.evex().vunpckhpd(zmmA, zmmB, zmmC);
3524 cc.evex().vunpckhps(xmmA, xmmB, xmmC);
3525 cc.evex().vunpckhps(ymmA, ymmB, ymmC);
3526 cc.evex().vunpckhps(zmmA, zmmB, zmmC);
3527 cc.evex().vunpcklpd(xmmA, xmmB, xmmC);
3528 cc.evex().vunpcklpd(ymmA, ymmB, ymmC);
3529 cc.evex().vunpcklpd(zmmA, zmmB, zmmC);
3530 cc.evex().vunpcklps(xmmA, xmmB, xmmC);
3531 cc.evex().vunpcklps(ymmA, ymmB, ymmC);
3532 cc.evex().vunpcklps(zmmA, zmmB, zmmC);
3533 cc.evex().vxorpd(xmmA, xmmB, xmmC);
3534 cc.evex().vxorpd(ymmA, ymmB, ymmC);
3535 cc.evex().vxorpd(zmmA, zmmB, zmmC);
3536 cc.evex().vxorps(xmmA, xmmB, xmmC);
3537 cc.evex().vxorps(ymmA, ymmB, ymmC);
3538 cc.evex().vxorps(zmmA, zmmB, zmmC);
3539 }
3540
3541 template<typename Emitter>
3542 static void generateAvx512SequenceInternalRegMem(
3543 Emitter& cc,
3544 const x86::Gp& gp,
3545 const x86::KReg& kA, const x86::KReg& kB, const x86::KReg& kC,
3546 const x86::Vec& vecA, const x86::Vec& vecB, const x86::Vec& vecC, const x86::Vec& vecD) {
3547
3548 DebugUtils::unused(kC);
3549
3550 x86::Gp gpd = gp.r32();
3551 x86::Gp gpq = gp.r64();
3552 x86::Gp gpz = cc.is32Bit() ? gpd : gpq;
3553
3554 x86::Xmm xmmA = vecA.xmm();
3555 x86::Xmm xmmB = vecB.xmm();
3556 x86::Xmm xmmC = vecC.xmm();
3557 x86::Xmm xmmD = vecD.xmm();
3558
3559 x86::Ymm ymmA = vecA.ymm();
3560 x86::Ymm ymmB = vecB.ymm();
3561 x86::Ymm ymmD = vecD.ymm();
3562
3563 x86::Zmm zmmA = vecA.zmm();
3564 x86::Zmm zmmB = vecB.zmm();
3565 x86::Zmm zmmD = vecD.zmm();
3566
3567 x86::Mem m = x86::ptr(gpz);
3568 x86::Mem m32 = x86::dword_ptr(gpz);
3569 x86::Mem m64 = x86::qword_ptr(gpz);
3570 x86::Mem m128 = x86::xmmword_ptr(gpz);
3571 x86::Mem m256 = x86::ymmword_ptr(gpz);
3572 x86::Mem m512 = x86::zmmword_ptr(gpz);
3573 x86::Mem vx_ptr = x86::ptr(gpz, xmmD);
3574 x86::Mem vy_ptr = x86::ptr(gpz, ymmD);
3575 x86::Mem vz_ptr = x86::ptr(gpz, zmmD);
3576
3577 cc.xor_(gpd, gpd);
3578 cc.vxorps(xmmA, xmmA, xmmA);
3579 cc.vxorps(xmmB, xmmB, xmmB);
3580 cc.vxorps(xmmC, xmmC, xmmC);
3581 cc.vxorps(xmmD, xmmD, xmmD);
3582
3583 cc.kmovb(kA, m);
3584 cc.kmovb(m, kB);
3585 cc.kmovd(kA, m);
3586 cc.kmovd(m, kB);
3587 cc.kmovq(kA, m);
3588 cc.kmovq(m, kB);
3589 cc.kmovw(kA, m);
3590 cc.kmovw(m, kB);
3591
3592 cc.evex().vaddpd(xmmA, xmmB, m);
3593 cc.evex().vaddpd(ymmA, ymmB, m);
3594 cc.evex().vaddpd(zmmA, zmmB, m);
3595 cc.evex().vaddps(xmmA, xmmB, m);
3596 cc.evex().vaddps(ymmA, ymmB, m);
3597 cc.evex().vaddps(zmmA, zmmB, m);
3598 cc.evex().vaddsd(xmmA, xmmB, m);
3599 cc.evex().vaddss(xmmA, xmmB, m);
3600 cc.evex().valignd(xmmA, xmmB, m, 0);
3601 cc.evex().valignd(ymmA, ymmB, m, 0);
3602 cc.evex().valignd(zmmA, zmmB, m, 0);
3603 cc.evex().valignq(xmmA, xmmB, m, 0);
3604 cc.evex().valignq(ymmA, ymmB, m, 0);
3605 cc.evex().valignq(zmmA, zmmB, m, 0);
3606 cc.evex().vandnpd(xmmA, xmmB, m);
3607 cc.evex().vandnpd(ymmA, ymmB, m);
3608 cc.evex().vandnpd(zmmA, zmmB, m);
3609 cc.evex().vandnps(xmmA, xmmB, m);
3610 cc.evex().vandnps(ymmA, ymmB, m);
3611 cc.evex().vandnps(zmmA, zmmB, m);
3612 cc.evex().vandpd(xmmA, xmmB, m);
3613 cc.evex().vandpd(ymmA, ymmB, m);
3614 cc.evex().vandpd(zmmA, zmmB, m);
3615 cc.evex().vandps(xmmA, xmmB, m);
3616 cc.evex().vandps(ymmA, ymmB, m);
3617 cc.evex().vandps(zmmA, zmmB, m);
3618 cc.evex().vblendmpd(xmmA, xmmB, m);
3619 cc.evex().vblendmpd(ymmA, ymmB, m);
3620 cc.evex().vblendmpd(zmmA, zmmB, m);
3621 cc.evex().vblendmps(xmmA, xmmB, m);
3622 cc.evex().vblendmps(ymmA, ymmB, m);
3623 cc.evex().vblendmps(zmmA, zmmB, m);
3624 cc.evex().vbroadcastf32x2(ymmA, m);
3625 cc.evex().vbroadcastf32x2(zmmA, m);
3626 cc.evex().vbroadcastf32x4(ymmA, m);
3627 cc.evex().vbroadcastf32x4(zmmA, m);
3628 cc.evex().vbroadcastf32x8(zmmA, m);
3629 cc.evex().vbroadcastf64x2(ymmA, m);
3630 cc.evex().vbroadcastf64x2(zmmA, m);
3631 cc.evex().vbroadcastf64x4(zmmA, m);
3632 cc.evex().vbroadcasti32x2(xmmA, m);
3633 cc.evex().vbroadcasti32x2(ymmA, m);
3634 cc.evex().vbroadcasti32x2(zmmA, m);
3635 cc.evex().vbroadcasti32x4(ymmA, m);
3636 cc.evex().vbroadcasti32x4(zmmA, m);
3637 cc.evex().vbroadcasti32x8(zmmA, m);
3638 cc.evex().vbroadcasti64x2(ymmA, m);
3639 cc.evex().vbroadcasti64x2(zmmA, m);
3640 cc.evex().vbroadcasti64x4(zmmA, m);
3641 cc.evex().vbroadcastsd(ymmA, m);
3642 cc.evex().vbroadcastsd(zmmA, m);
3643 cc.evex().vbroadcastss(xmmA, m);
3644 cc.evex().vbroadcastss(ymmA, m);
3645 cc.evex().vbroadcastss(zmmA, m);
3646 cc.evex().vcmppd(kA, xmmB, m, 0);
3647 cc.evex().vcmppd(kA, ymmB, m, 0);
3648 cc.evex().vcmppd(kA, zmmB, m, 0);
3649 cc.evex().vcmpps(kA, xmmB, m, 0);
3650 cc.evex().vcmpps(kA, ymmB, m, 0);
3651 cc.evex().vcmpps(kA, zmmB, m, 0);
3652 cc.evex().vcmpsd(kA, xmmB, m, 0);
3653 cc.evex().vcmpss(kA, xmmB, m, 0);
3654 cc.evex().vcomisd(xmmA, m);
3655 cc.evex().vcomiss(xmmA, m);
3656 cc.evex().vcompresspd(m, xmmB);
3657 cc.evex().vcompresspd(m, ymmB);
3658 cc.evex().vcompresspd(m, zmmB);
3659 cc.evex().vcompressps(m, xmmB);
3660 cc.evex().vcompressps(m, ymmB);
3661 cc.evex().vcompressps(m, zmmB);
3662 cc.evex().vcvtdq2pd(xmmA, m);
3663 cc.evex().vcvtdq2pd(ymmA, m);
3664 cc.evex().vcvtdq2pd(zmmA, m);
3665 cc.evex().vcvtdq2ps(xmmA, m);
3666 cc.evex().vcvtdq2ps(ymmA, m);
3667 cc.evex().vcvtdq2ps(zmmA, m);
3668 cc.evex().vcvtpd2dq(xmmA, m128);
3669 cc.evex().vcvtpd2dq(xmmA, m256);
3670 cc.evex().vcvtpd2dq(ymmA, m512);
3671 cc.evex().vcvtpd2qq(xmmA, m);
3672 cc.evex().vcvtpd2qq(ymmA, m);
3673 cc.evex().vcvtpd2qq(zmmA, m);
3674 cc.evex().vcvtpd2udq(xmmA, m128);
3675 cc.evex().vcvtpd2udq(xmmA, m256);
3676 cc.evex().vcvtpd2udq(ymmA, m512);
3677 cc.evex().vcvtpd2uqq(xmmA, m);
3678 cc.evex().vcvtpd2uqq(ymmA, m);
3679 cc.evex().vcvtpd2uqq(zmmA, m);
3680 cc.evex().vcvtph2ps(xmmA, m);
3681 cc.evex().vcvtph2ps(ymmA, m);
3682 cc.evex().vcvtph2ps(zmmA, m);
3683 cc.evex().vcvtps2dq(xmmA, m);
3684 cc.evex().vcvtps2dq(ymmA, m);
3685 cc.evex().vcvtps2dq(zmmA, m);
3686 cc.evex().vcvtps2pd(xmmA, m);
3687 cc.evex().vcvtps2pd(ymmA, m);
3688 cc.evex().vcvtps2pd(zmmA, m);
3689 cc.evex().vcvtps2ph(m, xmmB, 0);
3690 cc.evex().vcvtps2ph(m, ymmB, 0);
3691 cc.evex().vcvtps2ph(m, zmmB, 0);
3692 cc.evex().vcvtps2qq(xmmA, m);
3693 cc.evex().vcvtps2qq(ymmA, m);
3694 cc.evex().vcvtps2qq(zmmA, m);
3695 cc.evex().vcvtps2udq(xmmA, m);
3696 cc.evex().vcvtps2udq(ymmA, m);
3697 cc.evex().vcvtps2udq(zmmA, m);
3698 cc.evex().vcvtps2uqq(xmmA, m);
3699 cc.evex().vcvtps2uqq(ymmA, m);
3700 cc.evex().vcvtps2uqq(zmmA, m);
3701 cc.evex().vcvtqq2pd(xmmA, m);
3702 cc.evex().vcvtqq2pd(ymmA, m);
3703 cc.evex().vcvtqq2pd(zmmA, m);
3704 cc.evex().vcvtqq2ps(xmmA, m128);
3705 cc.evex().vcvtqq2ps(xmmA, m256);
3706 cc.evex().vcvtqq2ps(ymmA, m512);
3707 cc.evex().vcvtsd2si(gpd, m);
3708 cc.evex().vcvtsd2si(gpz, m);
3709 cc.evex().vcvtsd2ss(xmmA, xmmB, m);
3710 cc.evex().vcvtsd2usi(gpd, m);
3711 cc.evex().vcvtsd2usi(gpz, m);
3712 cc.evex().vcvtsi2sd(xmmA, xmmB, m32);
3713 if (cc.is64Bit()) cc.evex().vcvtsi2sd(xmmA, xmmB, m64);
3714 cc.evex().vcvtsi2ss(xmmA, xmmB, m32);
3715 if (cc.is64Bit()) cc.evex().vcvtsi2ss(xmmA, xmmB, m64);
3716 cc.evex().vcvtss2sd(xmmA, xmmB, m);
3717 cc.evex().vcvtss2si(gpd, m);
3718 cc.evex().vcvtss2si(gpz, m);
3719 cc.evex().vcvtss2usi(gpd, m);
3720 cc.evex().vcvtss2usi(gpz, m);
3721 cc.evex().vcvttpd2dq(xmmA, m128);
3722 cc.evex().vcvttpd2dq(xmmA, m256);
3723 cc.evex().vcvttpd2dq(ymmA, m512);
3724 cc.evex().vcvttpd2qq(xmmA, m);
3725 cc.evex().vcvttpd2qq(ymmA, m);
3726 cc.evex().vcvttpd2qq(zmmA, m);
3727 cc.evex().vcvttpd2udq(xmmA, m128);
3728 cc.evex().vcvttpd2udq(xmmA, m256);
3729 cc.evex().vcvttpd2udq(ymmA, m512);
3730 cc.evex().vcvttpd2uqq(xmmA, m);
3731 cc.evex().vcvttpd2uqq(ymmA, m);
3732 cc.evex().vcvttpd2uqq(zmmA, m);
3733 cc.evex().vcvttps2dq(xmmA, m);
3734 cc.evex().vcvttps2dq(ymmA, m);
3735 cc.evex().vcvttps2dq(zmmA, m);
3736 cc.evex().vcvttps2qq(xmmA, m);
3737 cc.evex().vcvttps2qq(ymmA, m);
3738 cc.evex().vcvttps2qq(zmmA, m);
3739 cc.evex().vcvttps2udq(xmmA, m);
3740 cc.evex().vcvttps2udq(ymmA, m);
3741 cc.evex().vcvttps2udq(zmmA, m);
3742 cc.evex().vcvttps2uqq(xmmA, m);
3743 cc.evex().vcvttps2uqq(ymmA, m);
3744 cc.evex().vcvttps2uqq(zmmA, m);
3745 cc.evex().vcvttsd2si(gpd, m);
3746 cc.evex().vcvttsd2si(gpz, m);
3747 cc.evex().vcvttsd2usi(gpd, m);
3748 cc.evex().vcvttsd2usi(gpz, m);
3749 cc.evex().vcvttss2si(gpd, m);
3750 cc.evex().vcvttss2si(gpz, m);
3751 cc.evex().vcvttss2usi(gpd, m);
3752 cc.evex().vcvttss2usi(gpz, m);
3753 cc.evex().vcvtudq2pd(xmmA, m);
3754 cc.evex().vcvtudq2pd(ymmA, m);
3755 cc.evex().vcvtudq2pd(zmmA, m);
3756 cc.evex().vcvtudq2ps(xmmA, m);
3757 cc.evex().vcvtudq2ps(ymmA, m);
3758 cc.evex().vcvtudq2ps(zmmA, m);
3759 cc.evex().vcvtuqq2pd(xmmA, m);
3760 cc.evex().vcvtuqq2pd(ymmA, m);
3761 cc.evex().vcvtuqq2pd(zmmA, m);
3762 cc.evex().vcvtuqq2ps(xmmA, m128);
3763 cc.evex().vcvtuqq2ps(xmmA, m256);
3764 cc.evex().vcvtuqq2ps(ymmA, m512);
3765 cc.evex().vcvtusi2sd(xmmA, xmmB, m32);
3766 if (cc.is64Bit()) cc.evex().vcvtusi2sd(xmmA, xmmB, m64);
3767 cc.evex().vcvtusi2ss(xmmA, xmmB, m32);
3768 if (cc.is64Bit()) cc.evex().vcvtusi2ss(xmmA, xmmB, m64);
3769 cc.evex().vdbpsadbw(xmmA, xmmB, m, 0);
3770 cc.evex().vdbpsadbw(ymmA, ymmB, m, 0);
3771 cc.evex().vdbpsadbw(zmmA, zmmB, m, 0);
3772 cc.evex().vdivpd(xmmA, xmmB, m);
3773 cc.evex().vdivpd(ymmA, ymmB, m);
3774 cc.evex().vdivpd(zmmA, zmmB, m);
3775 cc.evex().vdivps(xmmA, xmmB, m);
3776 cc.evex().vdivps(ymmA, ymmB, m);
3777 cc.evex().vdivps(zmmA, zmmB, m);
3778 cc.evex().vdivsd(xmmA, xmmB, m);
3779 cc.evex().vdivss(xmmA, xmmB, m);
3780 cc.evex().vexp2pd(zmmA, m);
3781 cc.evex().vexp2ps(zmmA, m);
3782 cc.evex().vexpandpd(xmmA, m);
3783 cc.evex().vexpandpd(ymmA, m);
3784 cc.evex().vexpandpd(zmmA, m);
3785 cc.evex().vexpandps(xmmA, m);
3786 cc.evex().vexpandps(ymmA, m);
3787 cc.evex().vexpandps(zmmA, m);
3788 cc.evex().vextractf32x4(m, ymmB, 0);
3789 cc.evex().vextractf32x4(m, zmmB, 0);
3790 cc.evex().vextractf32x8(m, zmmB, 0);
3791 cc.evex().vextractf64x2(m, ymmB, 0);
3792 cc.evex().vextractf64x2(m, zmmB, 0);
3793 cc.evex().vextractf64x4(m, zmmB, 0);
3794 cc.evex().vextracti32x4(m, ymmB, 0);
3795 cc.evex().vextracti32x4(m, zmmB, 0);
3796 cc.evex().vextracti32x8(m, zmmB, 0);
3797 cc.evex().vextracti64x2(m, ymmB, 0);
3798 cc.evex().vextracti64x2(m, zmmB, 0);
3799 cc.evex().vextracti64x4(m, zmmB, 0);
3800 cc.evex().vextractps(m, xmmB, 0);
3801 cc.evex().vfixupimmpd(xmmA, xmmB, m, 0);
3802 cc.evex().vfixupimmpd(ymmA, ymmB, m, 0);
3803 cc.evex().vfixupimmpd(zmmA, zmmB, m, 0);
3804 cc.evex().vfixupimmps(xmmA, xmmB, m, 0);
3805 cc.evex().vfixupimmps(ymmA, ymmB, m, 0);
3806 cc.evex().vfixupimmps(zmmA, zmmB, m, 0);
3807 cc.evex().vfixupimmsd(xmmA, xmmB, m, 0);
3808 cc.evex().vfixupimmss(xmmA, xmmB, m, 0);
3809 cc.evex().vfmadd132pd(xmmA, xmmB, m);
3810 cc.evex().vfmadd132pd(ymmA, ymmB, m);
3811 cc.evex().vfmadd132pd(zmmA, zmmB, m);
3812 cc.evex().vfmadd132ps(xmmA, xmmB, m);
3813 cc.evex().vfmadd132ps(ymmA, ymmB, m);
3814 cc.evex().vfmadd132ps(zmmA, zmmB, m);
3815 cc.evex().vfmadd132sd(xmmA, xmmB, m);
3816 cc.evex().vfmadd132ss(xmmA, xmmB, m);
3817 cc.evex().vfmadd213pd(xmmA, xmmB, m);
3818 cc.evex().vfmadd213pd(ymmA, ymmB, m);
3819 cc.evex().vfmadd213pd(zmmA, zmmB, m);
3820 cc.evex().vfmadd213ps(xmmA, xmmB, m);
3821 cc.evex().vfmadd213ps(ymmA, ymmB, m);
3822 cc.evex().vfmadd213ps(zmmA, zmmB, m);
3823 cc.evex().vfmadd213sd(xmmA, xmmB, m);
3824 cc.evex().vfmadd213ss(xmmA, xmmB, m);
3825 cc.evex().vfmadd231pd(xmmA, xmmB, m);
3826 cc.evex().vfmadd231pd(ymmA, ymmB, m);
3827 cc.evex().vfmadd231pd(zmmA, zmmB, m);
3828 cc.evex().vfmadd231ps(xmmA, xmmB, m);
3829 cc.evex().vfmadd231ps(ymmA, ymmB, m);
3830 cc.evex().vfmadd231ps(zmmA, zmmB, m);
3831 cc.evex().vfmadd231sd(xmmA, xmmB, m);
3832 cc.evex().vfmadd231ss(xmmA, xmmB, m);
3833 cc.evex().vfmaddsub132pd(xmmA, xmmB, m);
3834 cc.evex().vfmaddsub132pd(ymmA, ymmB, m);
3835 cc.evex().vfmaddsub132pd(zmmA, zmmB, m);
3836 cc.evex().vfmaddsub132ps(xmmA, xmmB, m);
3837 cc.evex().vfmaddsub132ps(ymmA, ymmB, m);
3838 cc.evex().vfmaddsub132ps(zmmA, zmmB, m);
3839 cc.evex().vfmaddsub213pd(xmmA, xmmB, m);
3840 cc.evex().vfmaddsub213pd(ymmA, ymmB, m);
3841 cc.evex().vfmaddsub213pd(zmmA, zmmB, m);
3842 cc.evex().vfmaddsub213ps(xmmA, xmmB, m);
3843 cc.evex().vfmaddsub213ps(ymmA, ymmB, m);
3844 cc.evex().vfmaddsub213ps(zmmA, zmmB, m);
3845 cc.evex().vfmaddsub231pd(xmmA, xmmB, m);
3846 cc.evex().vfmaddsub231pd(ymmA, ymmB, m);
3847 cc.evex().vfmaddsub231pd(zmmA, zmmB, m);
3848 cc.evex().vfmaddsub231ps(xmmA, xmmB, m);
3849 cc.evex().vfmaddsub231ps(ymmA, ymmB, m);
3850 cc.evex().vfmaddsub231ps(zmmA, zmmB, m);
3851 cc.evex().vfmsub132pd(xmmA, xmmB, m);
3852 cc.evex().vfmsub132pd(ymmA, ymmB, m);
3853 cc.evex().vfmsub132pd(zmmA, zmmB, m);
3854 cc.evex().vfmsub132ps(xmmA, xmmB, m);
3855 cc.evex().vfmsub132ps(ymmA, ymmB, m);
3856 cc.evex().vfmsub132ps(zmmA, zmmB, m);
3857 cc.evex().vfmsub132sd(xmmA, xmmB, m);
3858 cc.evex().vfmsub132ss(xmmA, xmmB, m);
3859 cc.evex().vfmsub213pd(xmmA, xmmB, m);
3860 cc.evex().vfmsub213pd(ymmA, ymmB, m);
3861 cc.evex().vfmsub213pd(zmmA, zmmB, m);
3862 cc.evex().vfmsub213ps(xmmA, xmmB, m);
3863 cc.evex().vfmsub213ps(ymmA, ymmB, m);
3864 cc.evex().vfmsub213ps(zmmA, zmmB, m);
3865 cc.evex().vfmsub213sd(xmmA, xmmB, m);
3866 cc.evex().vfmsub213ss(xmmA, xmmB, m);
3867 cc.evex().vfmsub231pd(xmmA, xmmB, m);
3868 cc.evex().vfmsub231pd(ymmA, ymmB, m);
3869 cc.evex().vfmsub231pd(zmmA, zmmB, m);
3870 cc.evex().vfmsub231ps(xmmA, xmmB, m);
3871 cc.evex().vfmsub231ps(ymmA, ymmB, m);
3872 cc.evex().vfmsub231ps(zmmA, zmmB, m);
3873 cc.evex().vfmsub231sd(xmmA, xmmB, m);
3874 cc.evex().vfmsub231ss(xmmA, xmmB, m);
3875 cc.evex().vfmsubadd132pd(xmmA, xmmB, m);
3876 cc.evex().vfmsubadd132pd(ymmA, ymmB, m);
3877 cc.evex().vfmsubadd132pd(zmmA, zmmB, m);
3878 cc.evex().vfmsubadd132ps(xmmA, xmmB, m);
3879 cc.evex().vfmsubadd132ps(ymmA, ymmB, m);
3880 cc.evex().vfmsubadd132ps(zmmA, zmmB, m);
3881 cc.evex().vfmsubadd213pd(xmmA, xmmB, m);
3882 cc.evex().vfmsubadd213pd(ymmA, ymmB, m);
3883 cc.evex().vfmsubadd213pd(zmmA, zmmB, m);
3884 cc.evex().vfmsubadd213ps(xmmA, xmmB, m);
3885 cc.evex().vfmsubadd213ps(ymmA, ymmB, m);
3886 cc.evex().vfmsubadd213ps(zmmA, zmmB, m);
3887 cc.evex().vfmsubadd231pd(xmmA, xmmB, m);
3888 cc.evex().vfmsubadd231pd(ymmA, ymmB, m);
3889 cc.evex().vfmsubadd231pd(zmmA, zmmB, m);
3890 cc.evex().vfmsubadd231ps(xmmA, xmmB, m);
3891 cc.evex().vfmsubadd231ps(ymmA, ymmB, m);
3892 cc.evex().vfmsubadd231ps(zmmA, zmmB, m);
3893 cc.evex().vfnmadd132pd(xmmA, xmmB, m);
3894 cc.evex().vfnmadd132pd(ymmA, ymmB, m);
3895 cc.evex().vfnmadd132pd(zmmA, zmmB, m);
3896 cc.evex().vfnmadd132ps(xmmA, xmmB, m);
3897 cc.evex().vfnmadd132ps(ymmA, ymmB, m);
3898 cc.evex().vfnmadd132ps(zmmA, zmmB, m);
3899 cc.evex().vfnmadd132sd(xmmA, xmmB, m);
3900 cc.evex().vfnmadd132ss(xmmA, xmmB, m);
3901 cc.evex().vfnmadd213pd(xmmA, xmmB, m);
3902 cc.evex().vfnmadd213pd(ymmA, ymmB, m);
3903 cc.evex().vfnmadd213pd(zmmA, zmmB, m);
3904 cc.evex().vfnmadd213ps(xmmA, xmmB, m);
3905 cc.evex().vfnmadd213ps(ymmA, ymmB, m);
3906 cc.evex().vfnmadd213ps(zmmA, zmmB, m);
3907 cc.evex().vfnmadd213sd(xmmA, xmmB, m);
3908 cc.evex().vfnmadd213ss(xmmA, xmmB, m);
3909 cc.evex().vfnmadd231pd(xmmA, xmmB, m);
3910 cc.evex().vfnmadd231pd(ymmA, ymmB, m);
3911 cc.evex().vfnmadd231pd(zmmA, zmmB, m);
3912 cc.evex().vfnmadd231ps(xmmA, xmmB, m);
3913 cc.evex().vfnmadd231ps(ymmA, ymmB, m);
3914 cc.evex().vfnmadd231ps(zmmA, zmmB, m);
3915 cc.evex().vfnmadd231sd(xmmA, xmmB, m);
3916 cc.evex().vfnmadd231ss(xmmA, xmmB, m);
3917 cc.evex().vfnmsub132pd(xmmA, xmmB, m);
3918 cc.evex().vfnmsub132pd(ymmA, ymmB, m);
3919 cc.evex().vfnmsub132pd(zmmA, zmmB, m);
3920 cc.evex().vfnmsub132ps(xmmA, xmmB, m);
3921 cc.evex().vfnmsub132ps(ymmA, ymmB, m);
3922 cc.evex().vfnmsub132ps(zmmA, zmmB, m);
3923 cc.evex().vfnmsub132sd(xmmA, xmmB, m);
3924 cc.evex().vfnmsub132ss(xmmA, xmmB, m);
3925 cc.evex().vfnmsub213pd(xmmA, xmmB, m);
3926 cc.evex().vfnmsub213pd(ymmA, ymmB, m);
3927 cc.evex().vfnmsub213pd(zmmA, zmmB, m);
3928 cc.evex().vfnmsub213ps(xmmA, xmmB, m);
3929 cc.evex().vfnmsub213ps(ymmA, ymmB, m);
3930 cc.evex().vfnmsub213ps(zmmA, zmmB, m);
3931 cc.evex().vfnmsub213sd(xmmA, xmmB, m);
3932 cc.evex().vfnmsub213ss(xmmA, xmmB, m);
3933 cc.evex().vfnmsub231pd(xmmA, xmmB, m);
3934 cc.evex().vfnmsub231pd(ymmA, ymmB, m);
3935 cc.evex().vfnmsub231pd(zmmA, zmmB, m);
3936 cc.evex().vfnmsub231ps(xmmA, xmmB, m);
3937 cc.evex().vfnmsub231ps(ymmA, ymmB, m);
3938 cc.evex().vfnmsub231ps(zmmA, zmmB, m);
3939 cc.evex().vfnmsub231sd(xmmA, xmmB, m);
3940 cc.evex().vfnmsub231ss(xmmA, xmmB, m);
3941 cc.evex().vfpclasspd(kA, m128, 0);
3942 cc.evex().vfpclasspd(kA, m256, 0);
3943 cc.evex().vfpclasspd(kA, m512, 0);
3944 cc.evex().vfpclassps(kA, m128, 0);
3945 cc.evex().vfpclassps(kA, m256, 0);
3946 cc.evex().vfpclassps(kA, m512, 0);
3947 cc.evex().vfpclasssd(kA, m, 0);
3948 cc.evex().vfpclassss(kA, m, 0);
3949 cc.evex().k(kA).vgatherdpd(xmmA, vx_ptr);
3950 cc.evex().k(kA).vgatherdpd(ymmA, vx_ptr);
3951 cc.evex().k(kA).vgatherdpd(zmmA, vy_ptr);
3952 cc.evex().k(kA).vgatherdps(xmmA, vx_ptr);
3953 cc.evex().k(kA).vgatherdps(ymmA, vy_ptr);
3954 cc.evex().k(kA).vgatherdps(zmmA, vz_ptr);
3955 cc.evex().k(kA).vgatherpf0dpd(vy_ptr);
3956 cc.evex().k(kA).vgatherpf0dps(vz_ptr);
3957 cc.evex().k(kA).vgatherpf0qpd(vz_ptr);
3958 cc.evex().k(kA).vgatherpf0qps(vz_ptr);
3959 cc.evex().k(kA).vgatherpf1dpd(vy_ptr);
3960 cc.evex().k(kA).vgatherpf1dps(vz_ptr);
3961 cc.evex().k(kA).vgatherpf1qpd(vz_ptr);
3962 cc.evex().k(kA).vgatherpf1qps(vz_ptr);
3963 cc.evex().k(kA).vgatherqpd(xmmA, vx_ptr);
3964 cc.evex().k(kA).vgatherqpd(ymmA, vy_ptr);
3965 cc.evex().k(kA).vgatherqpd(zmmA, vz_ptr);
3966 cc.evex().k(kA).vgatherqps(xmmA, vx_ptr);
3967 cc.evex().k(kA).vgatherqps(xmmA, vy_ptr);
3968 cc.evex().k(kA).vgatherqps(ymmA, vz_ptr);
3969 cc.evex().vgetexppd(xmmA, m);
3970 cc.evex().vgetexppd(ymmA, m);
3971 cc.evex().vgetexppd(zmmA, m);
3972 cc.evex().vgetexpps(xmmA, m);
3973 cc.evex().vgetexpps(ymmA, m);
3974 cc.evex().vgetexpps(zmmA, m);
3975 cc.evex().vgetexpsd(xmmA, xmmB, m);
3976 cc.evex().vgetexpss(xmmA, xmmB, m);
3977 cc.evex().vgetmantpd(xmmA, m, 0);
3978 cc.evex().vgetmantpd(ymmA, m, 0);
3979 cc.evex().vgetmantpd(zmmA, m, 0);
3980 cc.evex().vgetmantps(xmmA, m, 0);
3981 cc.evex().vgetmantps(ymmA, m, 0);
3982 cc.evex().vgetmantps(zmmA, m, 0);
3983 cc.evex().vgetmantsd(xmmA, xmmB, m, 0);
3984 cc.evex().vgetmantss(xmmA, xmmB, m, 0);
3985 cc.evex().vinsertf32x4(ymmA, ymmB, m, 0);
3986 cc.evex().vinsertf32x4(zmmA, zmmB, m, 0);
3987 cc.evex().vinsertf32x8(zmmA, zmmB, m, 0);
3988 cc.evex().vinsertf64x2(ymmA, ymmB, m, 0);
3989 cc.evex().vinsertf64x2(zmmA, zmmB, m, 0);
3990 cc.evex().vinsertf64x4(zmmA, zmmB, m, 0);
3991 cc.evex().vinserti32x4(ymmA, ymmB, m, 0);
3992 cc.evex().vinserti32x4(zmmA, zmmB, m, 0);
3993 cc.evex().vinserti32x8(zmmA, zmmB, m, 0);
3994 cc.evex().vinserti64x2(ymmA, ymmB, m, 0);
3995 cc.evex().vinserti64x2(zmmA, zmmB, m, 0);
3996 cc.evex().vinserti64x4(zmmA, zmmB, m, 0);
3997 cc.evex().vinsertps(xmmA, xmmB, m, 0);
3998 cc.evex().vmaxpd(xmmA, xmmB, m);
3999 cc.evex().vmaxpd(ymmA, ymmB, m);
4000 cc.evex().vmaxpd(zmmA, zmmB, m);
4001 cc.evex().vmaxps(xmmA, xmmB, m);
4002 cc.evex().vmaxps(ymmA, ymmB, m);
4003 cc.evex().vmaxps(zmmA, zmmB, m);
4004 cc.evex().vmaxsd(xmmA, xmmB, m);
4005 cc.evex().vmaxss(xmmA, xmmB, m);
4006 cc.evex().vminpd(xmmA, xmmB, m);
4007 cc.evex().vminpd(ymmA, ymmB, m);
4008 cc.evex().vminpd(zmmA, zmmB, m);
4009 cc.evex().vminps(xmmA, xmmB, m);
4010 cc.evex().vminps(ymmA, ymmB, m);
4011 cc.evex().vminps(zmmA, zmmB, m);
4012 cc.evex().vminsd(xmmA, xmmB, m);
4013 cc.evex().vminss(xmmA, xmmB, m);
4014 cc.evex().vmovapd(xmmA, m);
4015 cc.evex().vmovapd(m, xmmB);
4016 cc.evex().vmovapd(ymmA, m);
4017 cc.evex().vmovapd(m, ymmB);
4018 cc.evex().vmovapd(zmmA, m);
4019 cc.evex().vmovapd(m, zmmB);
4020 cc.evex().vmovaps(xmmA, m);
4021 cc.evex().vmovaps(m, xmmB);
4022 cc.evex().vmovaps(ymmA, m);
4023 cc.evex().vmovaps(m, ymmB);
4024 cc.evex().vmovaps(zmmA, m);
4025 cc.evex().vmovaps(m, zmmB);
4026 cc.evex().vmovd(m, xmmB);
4027 cc.evex().vmovd(xmmA, m);
4028 cc.evex().vmovddup(xmmA, m);
4029 cc.evex().vmovddup(ymmA, m);
4030 cc.evex().vmovddup(zmmA, m);
4031 cc.evex().vmovdqa32(xmmA, m);
4032 cc.evex().vmovdqa32(m, xmmB);
4033 cc.evex().vmovdqa32(ymmA, m);
4034 cc.evex().vmovdqa32(m, ymmB);
4035 cc.evex().vmovdqa32(zmmA, m);
4036 cc.evex().vmovdqa32(m, zmmB);
4037 cc.evex().vmovdqa64(xmmA, m);
4038 cc.evex().vmovdqa64(m, xmmB);
4039 cc.evex().vmovdqa64(ymmA, m);
4040 cc.evex().vmovdqa64(m, ymmB);
4041 cc.evex().vmovdqa64(zmmA, m);
4042 cc.evex().vmovdqa64(m, zmmB);
4043 cc.evex().vmovdqu16(xmmA, m);
4044 cc.evex().vmovdqu16(m, xmmB);
4045 cc.evex().vmovdqu16(ymmA, m);
4046 cc.evex().vmovdqu16(m, ymmB);
4047 cc.evex().vmovdqu16(zmmA, m);
4048 cc.evex().vmovdqu16(m, zmmB);
4049 cc.evex().vmovdqu32(xmmA, m);
4050 cc.evex().vmovdqu32(m, xmmB);
4051 cc.evex().vmovdqu32(ymmA, m);
4052 cc.evex().vmovdqu32(m, ymmB);
4053 cc.evex().vmovdqu32(zmmA, m);
4054 cc.evex().vmovdqu32(m, zmmB);
4055 cc.evex().vmovdqu64(xmmA, m);
4056 cc.evex().vmovdqu64(m, xmmB);
4057 cc.evex().vmovdqu64(ymmA, m);
4058 cc.evex().vmovdqu64(m, ymmB);
4059 cc.evex().vmovdqu64(zmmA, m);
4060 cc.evex().vmovdqu64(m, zmmB);
4061 cc.evex().vmovdqu8(xmmA, m);
4062 cc.evex().vmovdqu8(m, xmmB);
4063 cc.evex().vmovdqu8(ymmA, m);
4064 cc.evex().vmovdqu8(m, ymmB);
4065 cc.evex().vmovdqu8(zmmA, m);
4066 cc.evex().vmovdqu8(m, zmmB);
4067 cc.evex().vmovhpd(m, xmmB);
4068 cc.evex().vmovhpd(xmmA, xmmB, m);
4069 cc.evex().vmovhps(m, xmmB);
4070 cc.evex().vmovhps(xmmA, xmmB, m);
4071 cc.evex().vmovlpd(m, xmmB);
4072 cc.evex().vmovlpd(xmmA, xmmB, m);
4073 cc.evex().vmovlps(m, xmmB);
4074 cc.evex().vmovlps(xmmA, xmmB, m);
4075 cc.evex().vmovntdq(m, xmmB);
4076 cc.evex().vmovntdq(m, ymmB);
4077 cc.evex().vmovntdq(m, zmmB);
4078 cc.evex().vmovntdqa(xmmA, m);
4079 cc.evex().vmovntdqa(ymmA, m);
4080 cc.evex().vmovntdqa(zmmA, m);
4081 cc.evex().vmovntpd(m, xmmB);
4082 cc.evex().vmovntpd(m, ymmB);
4083 cc.evex().vmovntpd(m, zmmB);
4084 cc.evex().vmovntps(m, xmmB);
4085 cc.evex().vmovntps(m, ymmB);
4086 cc.evex().vmovntps(m, zmmB);
4087 cc.evex().vmovq(m, xmmB);
4088 cc.evex().vmovq(xmmA, m);
4089 cc.evex().vmovq(xmmA, m);
4090 cc.evex().vmovq(m, xmmB);
4091 cc.evex().vmovsd(m, xmmB);
4092 cc.evex().vmovsd(xmmA, m);
4093 cc.evex().vmovshdup(xmmA, m);
4094 cc.evex().vmovshdup(ymmA, m);
4095 cc.evex().vmovshdup(zmmA, m);
4096 cc.evex().vmovsldup(xmmA, m);
4097 cc.evex().vmovsldup(ymmA, m);
4098 cc.evex().vmovsldup(zmmA, m);
4099 cc.evex().vmovss(m, xmmB);
4100 cc.evex().vmovss(xmmA, m);
4101 cc.evex().vmovupd(xmmA, m);
4102 cc.evex().vmovupd(m, xmmB);
4103 cc.evex().vmovupd(ymmA, m);
4104 cc.evex().vmovupd(m, ymmB);
4105 cc.evex().vmovupd(zmmA, m);
4106 cc.evex().vmovupd(m, zmmB);
4107 cc.evex().vmovups(xmmA, m);
4108 cc.evex().vmovups(m, xmmB);
4109 cc.evex().vmovups(ymmA, m);
4110 cc.evex().vmovups(m, ymmB);
4111 cc.evex().vmovups(zmmA, m);
4112 cc.evex().vmovups(m, zmmB);
4113 cc.evex().vmulpd(xmmA, xmmB, m);
4114 cc.evex().vmulpd(ymmA, ymmB, m);
4115 cc.evex().vmulpd(zmmA, zmmB, m);
4116 cc.evex().vmulps(xmmA, xmmB, m);
4117 cc.evex().vmulps(ymmA, ymmB, m);
4118 cc.evex().vmulps(zmmA, zmmB, m);
4119 cc.evex().vmulsd(xmmA, xmmB, m);
4120 cc.evex().vmulss(xmmA, xmmB, m);
4121 cc.evex().vorpd(xmmA, xmmB, m);
4122 cc.evex().vorpd(ymmA, ymmB, m);
4123 cc.evex().vorpd(zmmA, zmmB, m);
4124 cc.evex().vorps(xmmA, xmmB, m);
4125 cc.evex().vorps(ymmA, ymmB, m);
4126 cc.evex().vorps(zmmA, zmmB, m);
4127 cc.evex().vpabsb(xmmA, m);
4128 cc.evex().vpabsb(ymmA, m);
4129 cc.evex().vpabsb(zmmA, m);
4130 cc.evex().vpabsd(xmmA, m);
4131 cc.evex().vpabsd(ymmA, m);
4132 cc.evex().vpabsd(zmmA, m);
4133 cc.evex().vpabsq(xmmA, m);
4134 cc.evex().vpabsq(ymmA, m);
4135 cc.evex().vpabsq(zmmA, m);
4136 cc.evex().vpabsw(xmmA, m);
4137 cc.evex().vpabsw(ymmA, m);
4138 cc.evex().vpabsw(zmmA, m);
4139 cc.evex().vpackssdw(xmmA, xmmB, m);
4140 cc.evex().vpackssdw(ymmA, ymmB, m);
4141 cc.evex().vpackssdw(zmmA, zmmB, m);
4142 cc.evex().vpacksswb(xmmA, xmmB, m);
4143 cc.evex().vpacksswb(ymmA, ymmB, m);
4144 cc.evex().vpacksswb(zmmA, zmmB, m);
4145 cc.evex().vpackusdw(xmmA, xmmB, m);
4146 cc.evex().vpackusdw(ymmA, ymmB, m);
4147 cc.evex().vpackusdw(zmmA, zmmB, m);
4148 cc.evex().vpackuswb(xmmA, xmmB, m);
4149 cc.evex().vpackuswb(ymmA, ymmB, m);
4150 cc.evex().vpackuswb(zmmA, zmmB, m);
4151 cc.evex().vpaddb(xmmA, xmmB, m);
4152 cc.evex().vpaddb(ymmA, ymmB, m);
4153 cc.evex().vpaddb(zmmA, zmmB, m);
4154 cc.evex().vpaddd(xmmA, xmmB, m);
4155 cc.evex().vpaddd(ymmA, ymmB, m);
4156 cc.evex().vpaddd(zmmA, zmmB, m);
4157 cc.evex().vpaddq(xmmA, xmmB, m);
4158 cc.evex().vpaddq(ymmA, ymmB, m);
4159 cc.evex().vpaddq(zmmA, zmmB, m);
4160 cc.evex().vpaddsb(xmmA, xmmB, m);
4161 cc.evex().vpaddsb(ymmA, ymmB, m);
4162 cc.evex().vpaddsb(zmmA, zmmB, m);
4163 cc.evex().vpaddsw(xmmA, xmmB, m);
4164 cc.evex().vpaddsw(ymmA, ymmB, m);
4165 cc.evex().vpaddsw(zmmA, zmmB, m);
4166 cc.evex().vpaddusb(xmmA, xmmB, m);
4167 cc.evex().vpaddusb(ymmA, ymmB, m);
4168 cc.evex().vpaddusb(zmmA, zmmB, m);
4169 cc.evex().vpaddusw(xmmA, xmmB, m);
4170 cc.evex().vpaddusw(ymmA, ymmB, m);
4171 cc.evex().vpaddusw(zmmA, zmmB, m);
4172 cc.evex().vpaddw(xmmA, xmmB, m);
4173 cc.evex().vpaddw(ymmA, ymmB, m);
4174 cc.evex().vpaddw(zmmA, zmmB, m);
4175 cc.evex().vpalignr(xmmA, xmmB, m, 0);
4176 cc.evex().vpalignr(ymmA, ymmB, m, 0);
4177 cc.evex().vpalignr(zmmA, zmmB, m, 0);
4178 cc.evex().vpandd(xmmA, xmmB, m);
4179 cc.evex().vpandd(ymmA, ymmB, m);
4180 cc.evex().vpandd(zmmA, zmmB, m);
4181 cc.evex().vpandnd(xmmA, xmmB, m);
4182 cc.evex().vpandnd(ymmA, ymmB, m);
4183 cc.evex().vpandnd(zmmA, zmmB, m);
4184 cc.evex().vpandnq(xmmA, xmmB, m);
4185 cc.evex().vpandnq(ymmA, ymmB, m);
4186 cc.evex().vpandnq(zmmA, zmmB, m);
4187 cc.evex().vpandq(xmmA, xmmB, m);
4188 cc.evex().vpandq(ymmA, ymmB, m);
4189 cc.evex().vpandq(zmmA, zmmB, m);
4190 cc.evex().vpavgb(xmmA, xmmB, m);
4191 cc.evex().vpavgb(ymmA, ymmB, m);
4192 cc.evex().vpavgb(zmmA, zmmB, m);
4193 cc.evex().vpavgw(xmmA, xmmB, m);
4194 cc.evex().vpavgw(ymmA, ymmB, m);
4195 cc.evex().vpavgw(zmmA, zmmB, m);
4196 cc.evex().vpblendmb(xmmA, xmmB, m);
4197 cc.evex().vpblendmb(ymmA, ymmB, m);
4198 cc.evex().vpblendmb(zmmA, zmmB, m);
4199 cc.evex().vpblendmd(xmmA, xmmB, m);
4200 cc.evex().vpblendmd(ymmA, ymmB, m);
4201 cc.evex().vpblendmd(zmmA, zmmB, m);
4202 cc.evex().vpblendmq(xmmA, xmmB, m);
4203 cc.evex().vpblendmq(ymmA, ymmB, m);
4204 cc.evex().vpblendmq(zmmA, zmmB, m);
4205 cc.evex().vpblendmw(xmmA, xmmB, m);
4206 cc.evex().vpblendmw(ymmA, ymmB, m);
4207 cc.evex().vpblendmw(zmmA, zmmB, m);
4208 cc.evex().vpbroadcastb(xmmA, m);
4209 cc.evex().vpbroadcastb(ymmA, m);
4210 cc.evex().vpbroadcastb(zmmA, m);
4211 cc.evex().vpbroadcastd(xmmA, m);
4212 cc.evex().vpbroadcastd(ymmA, m);
4213 cc.evex().vpbroadcastd(zmmA, m);
4214 cc.evex().vpbroadcastq(xmmA, m);
4215 cc.evex().vpbroadcastq(ymmA, m);
4216 cc.evex().vpbroadcastq(zmmA, m);
4217 cc.evex().vpbroadcastw(xmmA, m);
4218 cc.evex().vpbroadcastw(ymmA, m);
4219 cc.evex().vpbroadcastw(zmmA, m);
4220 cc.evex().vpcmpb(kA, xmmB, m, 0);
4221 cc.evex().vpcmpb(kA, ymmB, m, 0);
4222 cc.evex().vpcmpb(kA, zmmB, m, 0);
4223 cc.evex().vpcmpd(kA, xmmB, m, 0);
4224 cc.evex().vpcmpd(kA, ymmB, m, 0);
4225 cc.evex().vpcmpd(kA, zmmB, m, 0);
4226 cc.evex().vpcmpeqb(kA, xmmB, m);
4227 cc.evex().vpcmpeqb(kA, ymmB, m);
4228 cc.evex().vpcmpeqb(kA, zmmB, m);
4229 cc.evex().vpcmpeqd(kA, xmmB, m);
4230 cc.evex().vpcmpeqd(kA, ymmB, m);
4231 cc.evex().vpcmpeqd(kA, zmmB, m);
4232 cc.evex().vpcmpeqq(kA, xmmB, m);
4233 cc.evex().vpcmpeqq(kA, ymmB, m);
4234 cc.evex().vpcmpeqq(kA, zmmB, m);
4235 cc.evex().vpcmpeqw(kA, xmmB, m);
4236 cc.evex().vpcmpeqw(kA, ymmB, m);
4237 cc.evex().vpcmpeqw(kA, zmmB, m);
4238 cc.evex().vpcmpgtb(kA, xmmB, m);
4239 cc.evex().vpcmpgtb(kA, ymmB, m);
4240 cc.evex().vpcmpgtb(kA, zmmB, m);
4241 cc.evex().vpcmpgtd(kA, xmmB, m);
4242 cc.evex().vpcmpgtd(kA, ymmB, m);
4243 cc.evex().vpcmpgtd(kA, zmmB, m);
4244 cc.evex().vpcmpgtq(kA, xmmB, m);
4245 cc.evex().vpcmpgtq(kA, ymmB, m);
4246 cc.evex().vpcmpgtq(kA, zmmB, m);
4247 cc.evex().vpcmpgtw(kA, xmmB, m);
4248 cc.evex().vpcmpgtw(kA, ymmB, m);
4249 cc.evex().vpcmpgtw(kA, zmmB, m);
4250 cc.evex().vpcmpq(kA, xmmB, m, 0);
4251 cc.evex().vpcmpq(kA, ymmB, m, 0);
4252 cc.evex().vpcmpq(kA, zmmB, m, 0);
4253 cc.evex().vpcmpub(kA, xmmB, m, 0);
4254 cc.evex().vpcmpub(kA, ymmB, m, 0);
4255 cc.evex().vpcmpub(kA, zmmB, m, 0);
4256 cc.evex().vpcmpud(kA, xmmB, m, 0);
4257 cc.evex().vpcmpud(kA, ymmB, m, 0);
4258 cc.evex().vpcmpud(kA, zmmB, m, 0);
4259 cc.evex().vpcmpuq(kA, xmmB, m, 0);
4260 cc.evex().vpcmpuq(kA, ymmB, m, 0);
4261 cc.evex().vpcmpuq(kA, zmmB, m, 0);
4262 cc.evex().vpcmpuw(kA, xmmB, m, 0);
4263 cc.evex().vpcmpuw(kA, ymmB, m, 0);
4264 cc.evex().vpcmpuw(kA, zmmB, m, 0);
4265 cc.evex().vpcmpw(kA, xmmB, m, 0);
4266 cc.evex().vpcmpw(kA, ymmB, m, 0);
4267 cc.evex().vpcmpw(kA, zmmB, m, 0);
4268 cc.evex().vpcompressd(m, xmmB);
4269 cc.evex().vpcompressd(m, ymmB);
4270 cc.evex().vpcompressd(m, zmmB);
4271 cc.evex().vpcompressq(m, xmmB);
4272 cc.evex().vpcompressq(m, ymmB);
4273 cc.evex().vpcompressq(m, zmmB);
4274 cc.evex().vpconflictd(xmmA, m);
4275 cc.evex().vpconflictd(ymmA, m);
4276 cc.evex().vpconflictd(zmmA, m);
4277 cc.evex().vpconflictq(xmmA, m);
4278 cc.evex().vpconflictq(ymmA, m);
4279 cc.evex().vpconflictq(zmmA, m);
4280 cc.evex().vpermb(xmmA, xmmB, m);
4281 cc.evex().vpermb(ymmA, ymmB, m);
4282 cc.evex().vpermb(zmmA, zmmB, m);
4283 cc.evex().vpermd(ymmA, ymmB, m);
4284 cc.evex().vpermd(zmmA, zmmB, m);
4285 cc.evex().vpermi2b(xmmA, xmmB, m);
4286 cc.evex().vpermi2b(ymmA, ymmB, m);
4287 cc.evex().vpermi2b(zmmA, zmmB, m);
4288 cc.evex().vpermi2d(xmmA, xmmB, m);
4289 cc.evex().vpermi2d(ymmA, ymmB, m);
4290 cc.evex().vpermi2d(zmmA, zmmB, m);
4291 cc.evex().vpermi2pd(xmmA, xmmB, m);
4292 cc.evex().vpermi2pd(ymmA, ymmB, m);
4293 cc.evex().vpermi2pd(zmmA, zmmB, m);
4294 cc.evex().vpermi2ps(xmmA, xmmB, m);
4295 cc.evex().vpermi2ps(ymmA, ymmB, m);
4296 cc.evex().vpermi2ps(zmmA, zmmB, m);
4297 cc.evex().vpermi2q(xmmA, xmmB, m);
4298 cc.evex().vpermi2q(ymmA, ymmB, m);
4299 cc.evex().vpermi2q(zmmA, zmmB, m);
4300 cc.evex().vpermi2w(xmmA, xmmB, m);
4301 cc.evex().vpermi2w(ymmA, ymmB, m);
4302 cc.evex().vpermi2w(zmmA, zmmB, m);
4303 cc.evex().vpermilpd(xmmA, xmmB, m);
4304 cc.evex().vpermilpd(ymmA, ymmB, m);
4305 cc.evex().vpermilpd(zmmA, zmmB, m);
4306 cc.evex().vpermilpd(xmmA, m, 0);
4307 cc.evex().vpermilpd(ymmA, m, 0);
4308 cc.evex().vpermilpd(zmmA, m, 0);
4309 cc.evex().vpermilps(xmmA, xmmB, m);
4310 cc.evex().vpermilps(ymmA, ymmB, m);
4311 cc.evex().vpermilps(zmmA, zmmB, m);
4312 cc.evex().vpermilps(xmmA, m, 0);
4313 cc.evex().vpermilps(ymmA, m, 0);
4314 cc.evex().vpermilps(zmmA, m, 0);
4315 cc.evex().vpermq(ymmA, ymmB, m);
4316 cc.evex().vpermq(zmmA, zmmB, m);
4317 cc.evex().vpermq(ymmA, m, 0);
4318 cc.evex().vpermq(zmmA, m, 0);
4319 cc.evex().vpermt2b(xmmA, xmmB, m);
4320 cc.evex().vpermt2b(ymmA, ymmB, m);
4321 cc.evex().vpermt2b(zmmA, zmmB, m);
4322 cc.evex().vpermt2d(xmmA, xmmB, m);
4323 cc.evex().vpermt2d(ymmA, ymmB, m);
4324 cc.evex().vpermt2d(zmmA, zmmB, m);
4325 cc.evex().vpermt2pd(xmmA, xmmB, m);
4326 cc.evex().vpermt2pd(ymmA, ymmB, m);
4327 cc.evex().vpermt2pd(zmmA, zmmB, m);
4328 cc.evex().vpermt2ps(xmmA, xmmB, m);
4329 cc.evex().vpermt2ps(ymmA, ymmB, m);
4330 cc.evex().vpermt2ps(zmmA, zmmB, m);
4331 cc.evex().vpermt2q(xmmA, xmmB, m);
4332 cc.evex().vpermt2q(ymmA, ymmB, m);
4333 cc.evex().vpermt2q(zmmA, zmmB, m);
4334 cc.evex().vpermt2w(xmmA, xmmB, m);
4335 cc.evex().vpermt2w(ymmA, ymmB, m);
4336 cc.evex().vpermt2w(zmmA, zmmB, m);
4337 cc.evex().vpermw(xmmA, xmmB, m);
4338 cc.evex().vpermw(ymmA, ymmB, m);
4339 cc.evex().vpermw(zmmA, zmmB, m);
4340 cc.evex().vpexpandd(xmmA, m);
4341 cc.evex().vpexpandd(ymmA, m);
4342 cc.evex().vpexpandd(zmmA, m);
4343 cc.evex().vpexpandq(xmmA, m);
4344 cc.evex().vpexpandq(ymmA, m);
4345 cc.evex().vpexpandq(zmmA, m);
4346 cc.evex().vpextrb(m, xmmB, 0);
4347 cc.evex().vpextrd(m, xmmB, 0);
4348 if (cc.is64Bit()) cc.evex().vpextrq(m, xmmB, 0);
4349 cc.evex().vpextrw(m, xmmB, 0);
4350 cc.evex().k(kA).vpgatherdd(xmmA, vx_ptr);
4351 cc.evex().k(kA).vpgatherdd(ymmA, vy_ptr);
4352 cc.evex().k(kA).vpgatherdd(zmmA, vz_ptr);
4353 cc.evex().k(kA).vpgatherdq(xmmA, vx_ptr);
4354 cc.evex().k(kA).vpgatherdq(ymmA, vx_ptr);
4355 cc.evex().k(kA).vpgatherdq(zmmA, vy_ptr);
4356 cc.evex().k(kA).vpgatherqd(xmmA, vx_ptr);
4357 cc.evex().k(kA).vpgatherqd(xmmA, vy_ptr);
4358 cc.evex().k(kA).vpgatherqd(ymmA, vz_ptr);
4359 cc.evex().k(kA).vpgatherqq(xmmA, vx_ptr);
4360 cc.evex().k(kA).vpgatherqq(ymmA, vy_ptr);
4361 cc.evex().k(kA).vpgatherqq(zmmA, vz_ptr);
4362 cc.evex().vpinsrb(xmmA, xmmB, m, 0);
4363 cc.evex().vpinsrd(xmmA, xmmB, m, 0);
4364 if (cc.is64Bit()) cc.evex().vpinsrq(xmmA, xmmB, m, 0);
4365 cc.evex().vpinsrw(xmmA, xmmB, m, 0);
4366 cc.evex().vplzcntd(xmmA, m);
4367 cc.evex().vplzcntd(ymmA, m);
4368 cc.evex().vplzcntd(zmmA, m);
4369 cc.evex().vplzcntq(xmmA, m);
4370 cc.evex().vplzcntq(ymmA, m);
4371 cc.evex().vplzcntq(zmmA, m);
4372 cc.evex().vpmadd52huq(xmmA, xmmB, m);
4373 cc.evex().vpmadd52huq(ymmA, ymmB, m);
4374 cc.evex().vpmadd52huq(zmmA, zmmB, m);
4375 cc.evex().vpmadd52luq(xmmA, xmmB, m);
4376 cc.evex().vpmadd52luq(ymmA, ymmB, m);
4377 cc.evex().vpmadd52luq(zmmA, zmmB, m);
4378 cc.evex().vpmaddubsw(xmmA, xmmB, m);
4379 cc.evex().vpmaddubsw(ymmA, ymmB, m);
4380 cc.evex().vpmaddubsw(zmmA, zmmB, m);
4381 cc.evex().vpmaddwd(xmmA, xmmB, m);
4382 cc.evex().vpmaddwd(ymmA, ymmB, m);
4383 cc.evex().vpmaddwd(zmmA, zmmB, m);
4384 cc.evex().vpmaxsb(xmmA, xmmB, m);
4385 cc.evex().vpmaxsb(ymmA, ymmB, m);
4386 cc.evex().vpmaxsb(zmmA, zmmB, m);
4387 cc.evex().vpmaxsd(xmmA, xmmB, m);
4388 cc.evex().vpmaxsd(ymmA, ymmB, m);
4389 cc.evex().vpmaxsd(zmmA, zmmB, m);
4390 cc.evex().vpmaxsq(xmmA, xmmB, m);
4391 cc.evex().vpmaxsq(ymmA, ymmB, m);
4392 cc.evex().vpmaxsq(zmmA, zmmB, m);
4393 cc.evex().vpmaxsw(xmmA, xmmB, m);
4394 cc.evex().vpmaxsw(ymmA, ymmB, m);
4395 cc.evex().vpmaxsw(zmmA, zmmB, m);
4396 cc.evex().vpmaxub(xmmA, xmmB, m);
4397 cc.evex().vpmaxub(ymmA, ymmB, m);
4398 cc.evex().vpmaxub(zmmA, zmmB, m);
4399 cc.evex().vpmaxud(xmmA, xmmB, m);
4400 cc.evex().vpmaxud(ymmA, ymmB, m);
4401 cc.evex().vpmaxud(zmmA, zmmB, m);
4402 cc.evex().vpmaxuq(xmmA, xmmB, m);
4403 cc.evex().vpmaxuq(ymmA, ymmB, m);
4404 cc.evex().vpmaxuq(zmmA, zmmB, m);
4405 cc.evex().vpmaxuw(xmmA, xmmB, m);
4406 cc.evex().vpmaxuw(ymmA, ymmB, m);
4407 cc.evex().vpmaxuw(zmmA, zmmB, m);
4408 cc.evex().vpminsb(xmmA, xmmB, m);
4409 cc.evex().vpminsb(ymmA, ymmB, m);
4410 cc.evex().vpminsb(zmmA, zmmB, m);
4411 cc.evex().vpminsd(xmmA, xmmB, m);
4412 cc.evex().vpminsd(ymmA, ymmB, m);
4413 cc.evex().vpminsd(zmmA, zmmB, m);
4414 cc.evex().vpminsq(xmmA, xmmB, m);
4415 cc.evex().vpminsq(ymmA, ymmB, m);
4416 cc.evex().vpminsq(zmmA, zmmB, m);
4417 cc.evex().vpminsw(xmmA, xmmB, m);
4418 cc.evex().vpminsw(ymmA, ymmB, m);
4419 cc.evex().vpminsw(zmmA, zmmB, m);
4420 cc.evex().vpminub(xmmA, xmmB, m);
4421 cc.evex().vpminub(ymmA, ymmB, m);
4422 cc.evex().vpminub(zmmA, zmmB, m);
4423 cc.evex().vpminud(xmmA, xmmB, m);
4424 cc.evex().vpminud(ymmA, ymmB, m);
4425 cc.evex().vpminud(zmmA, zmmB, m);
4426 cc.evex().vpminuq(xmmA, xmmB, m);
4427 cc.evex().vpminuq(ymmA, ymmB, m);
4428 cc.evex().vpminuq(zmmA, zmmB, m);
4429 cc.evex().vpminuw(xmmA, xmmB, m);
4430 cc.evex().vpminuw(ymmA, ymmB, m);
4431 cc.evex().vpminuw(zmmA, zmmB, m);
4432 cc.evex().vpmovdb(m, xmmB);
4433 cc.evex().vpmovdb(m, ymmB);
4434 cc.evex().vpmovdb(m, zmmB);
4435 cc.evex().vpmovdw(m, xmmB);
4436 cc.evex().vpmovdw(m, ymmB);
4437 cc.evex().vpmovdw(m, zmmB);
4438 cc.evex().vpmovqb(m, xmmB);
4439 cc.evex().vpmovqb(m, ymmB);
4440 cc.evex().vpmovqb(m, zmmB);
4441 cc.evex().vpmovqd(m, xmmB);
4442 cc.evex().vpmovqd(m, ymmB);
4443 cc.evex().vpmovqd(m, zmmB);
4444 cc.evex().vpmovqw(m, xmmB);
4445 cc.evex().vpmovqw(m, ymmB);
4446 cc.evex().vpmovqw(m, zmmB);
4447 cc.evex().vpmovsdb(m, xmmB);
4448 cc.evex().vpmovsdb(m, ymmB);
4449 cc.evex().vpmovsdb(m, zmmB);
4450 cc.evex().vpmovsdw(m, xmmB);
4451 cc.evex().vpmovsdw(m, ymmB);
4452 cc.evex().vpmovsdw(m, zmmB);
4453 cc.evex().vpmovsqb(m, xmmB);
4454 cc.evex().vpmovsqb(m, ymmB);
4455 cc.evex().vpmovsqb(m, zmmB);
4456 cc.evex().vpmovsqd(m, xmmB);
4457 cc.evex().vpmovsqd(m, ymmB);
4458 cc.evex().vpmovsqd(m, zmmB);
4459 cc.evex().vpmovsqw(m, xmmB);
4460 cc.evex().vpmovsqw(m, ymmB);
4461 cc.evex().vpmovsqw(m, zmmB);
4462 cc.evex().vpmovswb(m, xmmB);
4463 cc.evex().vpmovswb(m, ymmB);
4464 cc.evex().vpmovswb(m, zmmB);
4465 cc.evex().vpmovsxbd(xmmA, m);
4466 cc.evex().vpmovsxbd(ymmA, m);
4467 cc.evex().vpmovsxbd(zmmA, m);
4468 cc.evex().vpmovsxbq(xmmA, m);
4469 cc.evex().vpmovsxbq(ymmA, m);
4470 cc.evex().vpmovsxbq(zmmA, m);
4471 cc.evex().vpmovsxbw(xmmA, m);
4472 cc.evex().vpmovsxbw(ymmA, m);
4473 cc.evex().vpmovsxbw(zmmA, m);
4474 cc.evex().vpmovsxdq(xmmA, m);
4475 cc.evex().vpmovsxdq(ymmA, m);
4476 cc.evex().vpmovsxdq(zmmA, m);
4477 cc.evex().vpmovsxwd(xmmA, m);
4478 cc.evex().vpmovsxwd(ymmA, m);
4479 cc.evex().vpmovsxwd(zmmA, m);
4480 cc.evex().vpmovsxwq(xmmA, m);
4481 cc.evex().vpmovsxwq(ymmA, m);
4482 cc.evex().vpmovsxwq(zmmA, m);
4483 cc.evex().vpmovusdb(m, xmmB);
4484 cc.evex().vpmovusdb(m, ymmB);
4485 cc.evex().vpmovusdb(m, zmmB);
4486 cc.evex().vpmovusdw(m, xmmB);
4487 cc.evex().vpmovusdw(m, ymmB);
4488 cc.evex().vpmovusdw(m, zmmB);
4489 cc.evex().vpmovusqb(m, xmmB);
4490 cc.evex().vpmovusqb(m, ymmB);
4491 cc.evex().vpmovusqb(m, zmmB);
4492 cc.evex().vpmovusqd(m, xmmB);
4493 cc.evex().vpmovusqd(m, ymmB);
4494 cc.evex().vpmovusqd(m, zmmB);
4495 cc.evex().vpmovusqw(m, xmmB);
4496 cc.evex().vpmovusqw(m, ymmB);
4497 cc.evex().vpmovusqw(m, zmmB);
4498 cc.evex().vpmovuswb(m, xmmB);
4499 cc.evex().vpmovuswb(m, ymmB);
4500 cc.evex().vpmovuswb(m, zmmB);
4501 cc.evex().vpmovwb(m, xmmB);
4502 cc.evex().vpmovwb(m, ymmB);
4503 cc.evex().vpmovwb(m, zmmB);
4504 cc.evex().vpmovzxbd(xmmA, m);
4505 cc.evex().vpmovzxbd(ymmA, m);
4506 cc.evex().vpmovzxbd(zmmA, m);
4507 cc.evex().vpmovzxbq(xmmA, m);
4508 cc.evex().vpmovzxbq(ymmA, m);
4509 cc.evex().vpmovzxbq(zmmA, m);
4510 cc.evex().vpmovzxbw(xmmA, m);
4511 cc.evex().vpmovzxbw(ymmA, m);
4512 cc.evex().vpmovzxbw(zmmA, m);
4513 cc.evex().vpmovzxdq(xmmA, m);
4514 cc.evex().vpmovzxdq(ymmA, m);
4515 cc.evex().vpmovzxdq(zmmA, m);
4516 cc.evex().vpmovzxwd(xmmA, m);
4517 cc.evex().vpmovzxwd(ymmA, m);
4518 cc.evex().vpmovzxwd(zmmA, m);
4519 cc.evex().vpmovzxwq(xmmA, m);
4520 cc.evex().vpmovzxwq(ymmA, m);
4521 cc.evex().vpmovzxwq(zmmA, m);
4522 cc.evex().vpmuldq(xmmA, xmmB, m);
4523 cc.evex().vpmuldq(ymmA, ymmB, m);
4524 cc.evex().vpmuldq(zmmA, zmmB, m);
4525 cc.evex().vpmulhrsw(xmmA, xmmB, m);
4526 cc.evex().vpmulhrsw(ymmA, ymmB, m);
4527 cc.evex().vpmulhrsw(zmmA, zmmB, m);
4528 cc.evex().vpmulhuw(xmmA, xmmB, m);
4529 cc.evex().vpmulhuw(ymmA, ymmB, m);
4530 cc.evex().vpmulhuw(zmmA, zmmB, m);
4531 cc.evex().vpmulhw(xmmA, xmmB, m);
4532 cc.evex().vpmulhw(ymmA, ymmB, m);
4533 cc.evex().vpmulhw(zmmA, zmmB, m);
4534 cc.evex().vpmulld(xmmA, xmmB, m);
4535 cc.evex().vpmulld(ymmA, ymmB, m);
4536 cc.evex().vpmulld(zmmA, zmmB, m);
4537 cc.evex().vpmullq(xmmA, xmmB, m);
4538 cc.evex().vpmullq(ymmA, ymmB, m);
4539 cc.evex().vpmullq(zmmA, zmmB, m);
4540 cc.evex().vpmullw(xmmA, xmmB, m);
4541 cc.evex().vpmullw(ymmA, ymmB, m);
4542 cc.evex().vpmullw(zmmA, zmmB, m);
4543 cc.evex().vpmultishiftqb(xmmA, xmmB, m);
4544 cc.evex().vpmultishiftqb(ymmA, ymmB, m);
4545 cc.evex().vpmultishiftqb(zmmA, zmmB, m);
4546 cc.evex().vpmuludq(xmmA, xmmB, m);
4547 cc.evex().vpmuludq(ymmA, ymmB, m);
4548 cc.evex().vpmuludq(zmmA, zmmB, m);
4549 cc.evex().vpopcntd(zmmA, m);
4550 cc.evex().vpopcntq(zmmA, m);
4551 cc.evex().vpord(xmmA, xmmB, m);
4552 cc.evex().vpord(ymmA, ymmB, m);
4553 cc.evex().vpord(zmmA, zmmB, m);
4554 cc.evex().vporq(xmmA, xmmB, m);
4555 cc.evex().vporq(ymmA, ymmB, m);
4556 cc.evex().vporq(zmmA, zmmB, m);
4557 cc.evex().vprold(xmmA, m, 0);
4558 cc.evex().vprold(ymmA, m, 0);
4559 cc.evex().vprold(zmmA, m, 0);
4560 cc.evex().vprolq(xmmA, m, 0);
4561 cc.evex().vprolq(ymmA, m, 0);
4562 cc.evex().vprolq(zmmA, m, 0);
4563 cc.evex().vprolvd(xmmA, xmmB, m);
4564 cc.evex().vprolvd(ymmA, ymmB, m);
4565 cc.evex().vprolvd(zmmA, zmmB, m);
4566 cc.evex().vprolvq(xmmA, xmmB, m);
4567 cc.evex().vprolvq(ymmA, ymmB, m);
4568 cc.evex().vprolvq(zmmA, zmmB, m);
4569 cc.evex().vprord(xmmA, m, 0);
4570 cc.evex().vprord(ymmA, m, 0);
4571 cc.evex().vprord(zmmA, m, 0);
4572 cc.evex().vprorq(xmmA, m, 0);
4573 cc.evex().vprorq(ymmA, m, 0);
4574 cc.evex().vprorq(zmmA, m, 0);
4575 cc.evex().vprorvd(xmmA, xmmB, m);
4576 cc.evex().vprorvd(ymmA, ymmB, m);
4577 cc.evex().vprorvd(zmmA, zmmB, m);
4578 cc.evex().vprorvq(xmmA, xmmB, m);
4579 cc.evex().vprorvq(ymmA, ymmB, m);
4580 cc.evex().vprorvq(zmmA, zmmB, m);
4581 cc.evex().vpsadbw(xmmA, xmmB, m);
4582 cc.evex().vpsadbw(ymmA, ymmB, m);
4583 cc.evex().vpsadbw(zmmA, zmmB, m);
4584 cc.evex().k(kA).vpscatterdd(vx_ptr, xmmB);
4585 cc.evex().k(kA).vpscatterdd(vy_ptr, ymmB);
4586 cc.evex().k(kA).vpscatterdd(vz_ptr, zmmB);
4587 cc.evex().k(kA).vpscatterdq(vx_ptr, xmmB);
4588 cc.evex().k(kA).vpscatterdq(vx_ptr, ymmB);
4589 cc.evex().k(kA).vpscatterdq(vy_ptr, zmmB);
4590 cc.evex().k(kA).vpscatterqd(vx_ptr, xmmB);
4591 cc.evex().k(kA).vpscatterqd(vy_ptr, xmmB);
4592 cc.evex().k(kA).vpscatterqd(vz_ptr, ymmB);
4593 cc.evex().k(kA).vpscatterqq(vx_ptr, xmmB);
4594 cc.evex().k(kA).vpscatterqq(vy_ptr, ymmB);
4595 cc.evex().k(kA).vpscatterqq(vz_ptr, zmmB);
4596 cc.evex().vpshufb(xmmA, xmmB, m);
4597 cc.evex().vpshufb(ymmA, ymmB, m);
4598 cc.evex().vpshufb(zmmA, zmmB, m);
4599 cc.evex().vpshufd(xmmA, m, 0);
4600 cc.evex().vpshufd(ymmA, m, 0);
4601 cc.evex().vpshufd(zmmA, m, 0);
4602 cc.evex().vpshufhw(xmmA, m, 0);
4603 cc.evex().vpshufhw(ymmA, m, 0);
4604 cc.evex().vpshufhw(zmmA, m, 0);
4605 cc.evex().vpshuflw(xmmA, m, 0);
4606 cc.evex().vpshuflw(ymmA, m, 0);
4607 cc.evex().vpshuflw(zmmA, m, 0);
4608 cc.evex().vpslld(xmmA, xmmB, m);
4609 cc.evex().vpslld(xmmA, m, 0);
4610 cc.evex().vpslld(ymmA, ymmB, m);
4611 cc.evex().vpslld(ymmA, m, 0);
4612 cc.evex().vpslld(zmmA, zmmB, m);
4613 cc.evex().vpslld(zmmA, m, 0);
4614 cc.evex().vpslldq(xmmA, m, 0);
4615 cc.evex().vpslldq(ymmA, m, 0);
4616 cc.evex().vpslldq(zmmA, m, 0);
4617 cc.evex().vpsllq(xmmA, xmmB, m);
4618 cc.evex().vpsllq(xmmA, m, 0);
4619 cc.evex().vpsllq(ymmA, ymmB, m);
4620 cc.evex().vpsllq(ymmA, m, 0);
4621 cc.evex().vpsllq(zmmA, zmmB, m);
4622 cc.evex().vpsllq(zmmA, m, 0);
4623 cc.evex().vpsllvd(xmmA, xmmB, m);
4624 cc.evex().vpsllvd(ymmA, ymmB, m);
4625 cc.evex().vpsllvd(zmmA, zmmB, m);
4626 cc.evex().vpsllvq(xmmA, xmmB, m);
4627 cc.evex().vpsllvq(ymmA, ymmB, m);
4628 cc.evex().vpsllvq(zmmA, zmmB, m);
4629 cc.evex().vpsllvw(xmmA, xmmB, m);
4630 cc.evex().vpsllvw(ymmA, ymmB, m);
4631 cc.evex().vpsllvw(zmmA, zmmB, m);
4632 cc.evex().vpsllw(xmmA, xmmB, m);
4633 cc.evex().vpsllw(xmmA, m, 0);
4634 cc.evex().vpsllw(ymmA, ymmB, m);
4635 cc.evex().vpsllw(ymmA, m, 0);
4636 cc.evex().vpsllw(zmmA, zmmB, m);
4637 cc.evex().vpsllw(zmmA, m, 0);
4638 cc.evex().vpsrad(xmmA, xmmB, m);
4639 cc.evex().vpsrad(xmmA, m, 0);
4640 cc.evex().vpsrad(ymmA, ymmB, m);
4641 cc.evex().vpsrad(ymmA, m, 0);
4642 cc.evex().vpsrad(zmmA, zmmB, m);
4643 cc.evex().vpsrad(zmmA, m, 0);
4644 cc.evex().vpsraq(xmmA, xmmB, m);
4645 cc.evex().vpsraq(xmmA, m, 0);
4646 cc.evex().vpsraq(ymmA, ymmB, m);
4647 cc.evex().vpsraq(ymmA, m, 0);
4648 cc.evex().vpsraq(zmmA, zmmB, m);
4649 cc.evex().vpsraq(zmmA, m, 0);
4650 cc.evex().vpsravd(xmmA, xmmB, m);
4651 cc.evex().vpsravd(ymmA, ymmB, m);
4652 cc.evex().vpsravd(zmmA, zmmB, m);
4653 cc.evex().vpsravq(xmmA, xmmB, m);
4654 cc.evex().vpsravq(ymmA, ymmB, m);
4655 cc.evex().vpsravq(zmmA, zmmB, m);
4656 cc.evex().vpsravw(xmmA, xmmB, m);
4657 cc.evex().vpsravw(ymmA, ymmB, m);
4658 cc.evex().vpsravw(zmmA, zmmB, m);
4659 cc.evex().vpsraw(xmmA, xmmB, m);
4660 cc.evex().vpsraw(xmmA, m, 0);
4661 cc.evex().vpsraw(ymmA, ymmB, m);
4662 cc.evex().vpsraw(ymmA, m, 0);
4663 cc.evex().vpsraw(zmmA, zmmB, m);
4664 cc.evex().vpsraw(zmmA, m, 0);
4665 cc.evex().vpsrld(xmmA, xmmB, m);
4666 cc.evex().vpsrld(xmmA, m, 0);
4667 cc.evex().vpsrld(ymmA, ymmB, m);
4668 cc.evex().vpsrld(ymmA, m, 0);
4669 cc.evex().vpsrld(zmmA, zmmB, m);
4670 cc.evex().vpsrld(zmmA, m, 0);
4671 cc.evex().vpsrldq(xmmA, m, 0);
4672 cc.evex().vpsrldq(ymmA, m, 0);
4673 cc.evex().vpsrldq(zmmA, m, 0);
4674 cc.evex().vpsrlq(xmmA, xmmB, m);
4675 cc.evex().vpsrlq(xmmA, m, 0);
4676 cc.evex().vpsrlq(ymmA, ymmB, m);
4677 cc.evex().vpsrlq(ymmA, m, 0);
4678 cc.evex().vpsrlq(zmmA, zmmB, m);
4679 cc.evex().vpsrlq(zmmA, m, 0);
4680 cc.evex().vpsrlvd(xmmA, xmmB, m);
4681 cc.evex().vpsrlvd(ymmA, ymmB, m);
4682 cc.evex().vpsrlvd(zmmA, zmmB, m);
4683 cc.evex().vpsrlvq(xmmA, xmmB, m);
4684 cc.evex().vpsrlvq(ymmA, ymmB, m);
4685 cc.evex().vpsrlvq(zmmA, zmmB, m);
4686 cc.evex().vpsrlvw(xmmA, xmmB, m);
4687 cc.evex().vpsrlvw(ymmA, ymmB, m);
4688 cc.evex().vpsrlvw(zmmA, zmmB, m);
4689 cc.evex().vpsrlw(xmmA, xmmB, m);
4690 cc.evex().vpsrlw(xmmA, m, 0);
4691 cc.evex().vpsrlw(ymmA, ymmB, m);
4692 cc.evex().vpsrlw(ymmA, m, 0);
4693 cc.evex().vpsrlw(zmmA, zmmB, m);
4694 cc.evex().vpsrlw(zmmA, m, 0);
4695 cc.evex().vpsubb(xmmA, xmmB, m);
4696 cc.evex().vpsubb(ymmA, ymmB, m);
4697 cc.evex().vpsubb(zmmA, zmmB, m);
4698 cc.evex().vpsubd(xmmA, xmmB, m);
4699 cc.evex().vpsubd(ymmA, ymmB, m);
4700 cc.evex().vpsubd(zmmA, zmmB, m);
4701 cc.evex().vpsubq(xmmA, xmmB, m);
4702 cc.evex().vpsubq(ymmA, ymmB, m);
4703 cc.evex().vpsubq(zmmA, zmmB, m);
4704 cc.evex().vpsubsb(xmmA, xmmB, m);
4705 cc.evex().vpsubsb(ymmA, ymmB, m);
4706 cc.evex().vpsubsb(zmmA, zmmB, m);
4707 cc.evex().vpsubsw(xmmA, xmmB, m);
4708 cc.evex().vpsubsw(ymmA, ymmB, m);
4709 cc.evex().vpsubsw(zmmA, zmmB, m);
4710 cc.evex().vpsubusb(xmmA, xmmB, m);
4711 cc.evex().vpsubusb(ymmA, ymmB, m);
4712 cc.evex().vpsubusb(zmmA, zmmB, m);
4713 cc.evex().vpsubusw(xmmA, xmmB, m);
4714 cc.evex().vpsubusw(ymmA, ymmB, m);
4715 cc.evex().vpsubusw(zmmA, zmmB, m);
4716 cc.evex().vpsubw(xmmA, xmmB, m);
4717 cc.evex().vpsubw(ymmA, ymmB, m);
4718 cc.evex().vpsubw(zmmA, zmmB, m);
4719 cc.evex().vpternlogd(xmmA, xmmB, m, 0);
4720 cc.evex().vpternlogd(ymmA, ymmB, m, 0);
4721 cc.evex().vpternlogd(zmmA, zmmB, m, 0);
4722 cc.evex().vpternlogq(xmmA, xmmB, m, 0);
4723 cc.evex().vpternlogq(ymmA, ymmB, m, 0);
4724 cc.evex().vpternlogq(zmmA, zmmB, m, 0);
4725 cc.evex().vptestmb(kA, xmmB, m);
4726 cc.evex().vptestmb(kA, ymmB, m);
4727 cc.evex().vptestmb(kA, zmmB, m);
4728 cc.evex().vptestmd(kA, xmmB, m);
4729 cc.evex().vptestmd(kA, ymmB, m);
4730 cc.evex().vptestmd(kA, zmmB, m);
4731 cc.evex().vptestmq(kA, xmmB, m);
4732 cc.evex().vptestmq(kA, ymmB, m);
4733 cc.evex().vptestmq(kA, zmmB, m);
4734 cc.evex().vptestmw(kA, xmmB, m);
4735 cc.evex().vptestmw(kA, ymmB, m);
4736 cc.evex().vptestmw(kA, zmmB, m);
4737 cc.evex().vptestnmb(kA, xmmB, m);
4738 cc.evex().vptestnmb(kA, ymmB, m);
4739 cc.evex().vptestnmb(kA, zmmB, m);
4740 cc.evex().vptestnmd(kA, xmmB, m);
4741 cc.evex().vptestnmd(kA, ymmB, m);
4742 cc.evex().vptestnmd(kA, zmmB, m);
4743 cc.evex().vptestnmq(kA, xmmB, m);
4744 cc.evex().vptestnmq(kA, ymmB, m);
4745 cc.evex().vptestnmq(kA, zmmB, m);
4746 cc.evex().vptestnmw(kA, xmmB, m);
4747 cc.evex().vptestnmw(kA, ymmB, m);
4748 cc.evex().vptestnmw(kA, zmmB, m);
4749 cc.evex().vpunpckhbw(xmmA, xmmB, m);
4750 cc.evex().vpunpckhbw(ymmA, ymmB, m);
4751 cc.evex().vpunpckhbw(zmmA, zmmB, m);
4752 cc.evex().vpunpckhdq(xmmA, xmmB, m);
4753 cc.evex().vpunpckhdq(ymmA, ymmB, m);
4754 cc.evex().vpunpckhdq(zmmA, zmmB, m);
4755 cc.evex().vpunpckhqdq(xmmA, xmmB, m);
4756 cc.evex().vpunpckhqdq(ymmA, ymmB, m);
4757 cc.evex().vpunpckhqdq(zmmA, zmmB, m);
4758 cc.evex().vpunpckhwd(xmmA, xmmB, m);
4759 cc.evex().vpunpckhwd(ymmA, ymmB, m);
4760 cc.evex().vpunpckhwd(zmmA, zmmB, m);
4761 cc.evex().vpunpcklbw(xmmA, xmmB, m);
4762 cc.evex().vpunpcklbw(ymmA, ymmB, m);
4763 cc.evex().vpunpcklbw(zmmA, zmmB, m);
4764 cc.evex().vpunpckldq(xmmA, xmmB, m);
4765 cc.evex().vpunpckldq(ymmA, ymmB, m);
4766 cc.evex().vpunpckldq(zmmA, zmmB, m);
4767 cc.evex().vpunpcklqdq(xmmA, xmmB, m);
4768 cc.evex().vpunpcklqdq(ymmA, ymmB, m);
4769 cc.evex().vpunpcklqdq(zmmA, zmmB, m);
4770 cc.evex().vpunpcklwd(xmmA, xmmB, m);
4771 cc.evex().vpunpcklwd(ymmA, ymmB, m);
4772 cc.evex().vpunpcklwd(zmmA, zmmB, m);
4773 cc.evex().vpxord(xmmA, xmmB, m);
4774 cc.evex().vpxord(ymmA, ymmB, m);
4775 cc.evex().vpxord(zmmA, zmmB, m);
4776 cc.evex().vpxorq(xmmA, xmmB, m);
4777 cc.evex().vpxorq(ymmA, ymmB, m);
4778 cc.evex().vpxorq(zmmA, zmmB, m);
4779 cc.evex().vrangepd(xmmA, xmmB, m, 0);
4780 cc.evex().vrangepd(ymmA, ymmB, m, 0);
4781 cc.evex().vrangepd(zmmA, zmmB, m, 0);
4782 cc.evex().vrangeps(xmmA, xmmB, m, 0);
4783 cc.evex().vrangeps(ymmA, ymmB, m, 0);
4784 cc.evex().vrangeps(zmmA, zmmB, m, 0);
4785 cc.evex().vrangesd(xmmA, xmmB, m, 0);
4786 cc.evex().vrangess(xmmA, xmmB, m, 0);
4787 cc.evex().vrcp14pd(xmmA, m);
4788 cc.evex().vrcp14pd(ymmA, m);
4789 cc.evex().vrcp14pd(zmmA, m);
4790 cc.evex().vrcp14ps(xmmA, m);
4791 cc.evex().vrcp14ps(ymmA, m);
4792 cc.evex().vrcp14ps(zmmA, m);
4793 cc.evex().vrcp14sd(xmmA, xmmB, m);
4794 cc.evex().vrcp14ss(xmmA, xmmB, m);
4795 cc.evex().vrcp28pd(zmmA, m);
4796 cc.evex().vrcp28ps(zmmA, m);
4797 cc.evex().vrcp28sd(xmmA, xmmB, m);
4798 cc.evex().vrcp28ss(xmmA, xmmB, m);
4799 cc.evex().vreducepd(xmmA, m, 0);
4800 cc.evex().vreducepd(ymmA, m, 0);
4801 cc.evex().vreducepd(zmmA, m, 0);
4802 cc.evex().vreduceps(xmmA, m, 0);
4803 cc.evex().vreduceps(ymmA, m, 0);
4804 cc.evex().vreduceps(zmmA, m, 0);
4805 cc.evex().vreducesd(xmmA, xmmB, m, 0);
4806 cc.evex().vreducess(xmmA, xmmB, m, 0);
4807 cc.evex().vrndscalepd(xmmA, m, 0);
4808 cc.evex().vrndscalepd(ymmA, m, 0);
4809 cc.evex().vrndscalepd(zmmA, m, 0);
4810 cc.evex().vrndscaleps(xmmA, m, 0);
4811 cc.evex().vrndscaleps(ymmA, m, 0);
4812 cc.evex().vrndscaleps(zmmA, m, 0);
4813 cc.evex().vrndscalesd(xmmA, xmmB, m, 0);
4814 cc.evex().vrndscaless(xmmA, xmmB, m, 0);
4815 cc.evex().vrsqrt14pd(xmmA, m);
4816 cc.evex().vrsqrt14pd(ymmA, m);
4817 cc.evex().vrsqrt14pd(zmmA, m);
4818 cc.evex().vrsqrt14ps(xmmA, m);
4819 cc.evex().vrsqrt14ps(ymmA, m);
4820 cc.evex().vrsqrt14ps(zmmA, m);
4821 cc.evex().vrsqrt14sd(xmmA, xmmB, m);
4822 cc.evex().vrsqrt14ss(xmmA, xmmB, m);
4823 cc.evex().vrsqrt28pd(zmmA, m);
4824 cc.evex().vrsqrt28ps(zmmA, m);
4825 cc.evex().vrsqrt28sd(xmmA, xmmB, m);
4826 cc.evex().vrsqrt28ss(xmmA, xmmB, m);
4827 cc.evex().vscalefpd(xmmA, xmmB, m);
4828 cc.evex().vscalefpd(ymmA, ymmB, m);
4829 cc.evex().vscalefpd(zmmA, zmmB, m);
4830 cc.evex().vscalefps(xmmA, xmmB, m);
4831 cc.evex().vscalefps(ymmA, ymmB, m);
4832 cc.evex().vscalefps(zmmA, zmmB, m);
4833 cc.evex().vscalefsd(xmmA, xmmB, m);
4834 cc.evex().vscalefss(xmmA, xmmB, m);
4835 cc.evex().k(kA).vscatterdpd(vx_ptr, xmmB);
4836 cc.evex().k(kA).vscatterdpd(vx_ptr, ymmB);
4837 cc.evex().k(kA).vscatterdpd(vy_ptr, zmmB);
4838 cc.evex().k(kA).vscatterdps(vx_ptr, xmmB);
4839 cc.evex().k(kA).vscatterdps(vy_ptr, ymmB);
4840 cc.evex().k(kA).vscatterdps(vz_ptr, zmmB);
4841 cc.evex().k(kA).vscatterpf0dpd(vy_ptr);
4842 cc.evex().k(kA).vscatterpf0dps(vz_ptr);
4843 cc.evex().k(kA).vscatterpf0qpd(vz_ptr);
4844 cc.evex().k(kA).vscatterpf0qps(vz_ptr);
4845 cc.evex().k(kA).vscatterpf1dpd(vy_ptr);
4846 cc.evex().k(kA).vscatterpf1dps(vz_ptr);
4847 cc.evex().k(kA).vscatterpf1qpd(vz_ptr);
4848 cc.evex().k(kA).vscatterpf1qps(vz_ptr);
4849 cc.evex().k(kA).vscatterqpd(vx_ptr, xmmB);
4850 cc.evex().k(kA).vscatterqpd(vy_ptr, ymmB);
4851 cc.evex().k(kA).vscatterqpd(vz_ptr, zmmB);
4852 cc.evex().k(kA).vscatterqps(vx_ptr, xmmB);
4853 cc.evex().k(kA).vscatterqps(vy_ptr, xmmB);
4854 cc.evex().k(kA).vscatterqps(vz_ptr, ymmB);
4855 cc.evex().vshuff32x4(ymmA, ymmB, m, 0);
4856 cc.evex().vshuff32x4(zmmA, zmmB, m, 0);
4857 cc.evex().vshuff64x2(ymmA, ymmB, m, 0);
4858 cc.evex().vshuff64x2(zmmA, zmmB, m, 0);
4859 cc.evex().vshufi32x4(ymmA, ymmB, m, 0);
4860 cc.evex().vshufi32x4(zmmA, zmmB, m, 0);
4861 cc.evex().vshufi64x2(ymmA, ymmB, m, 0);
4862 cc.evex().vshufi64x2(zmmA, zmmB, m, 0);
4863 cc.evex().vshufpd(xmmA, xmmB, m, 0);
4864 cc.evex().vshufpd(ymmA, ymmB, m, 0);
4865 cc.evex().vshufpd(zmmA, zmmB, m, 0);
4866 cc.evex().vshufps(xmmA, xmmB, m, 0);
4867 cc.evex().vshufps(ymmA, ymmB, m, 0);
4868 cc.evex().vshufps(zmmA, zmmB, m, 0);
4869 cc.evex().vsqrtpd(xmmA, m);
4870 cc.evex().vsqrtpd(ymmA, m);
4871 cc.evex().vsqrtpd(zmmA, m);
4872 cc.evex().vsqrtps(xmmA, m);
4873 cc.evex().vsqrtps(ymmA, m);
4874 cc.evex().vsqrtps(zmmA, m);
4875 cc.evex().vsqrtsd(xmmA, xmmB, m);
4876 cc.evex().vsqrtss(xmmA, xmmB, m);
4877 cc.evex().vsubpd(xmmA, xmmB, m);
4878 cc.evex().vsubpd(ymmA, ymmB, m);
4879 cc.evex().vsubpd(zmmA, zmmB, m);
4880 cc.evex().vsubps(xmmA, xmmB, m);
4881 cc.evex().vsubps(ymmA, ymmB, m);
4882 cc.evex().vsubps(zmmA, zmmB, m);
4883 cc.evex().vsubsd(xmmA, xmmB, m);
4884 cc.evex().vsubss(xmmA, xmmB, m);
4885 cc.evex().vucomisd(xmmA, m);
4886 cc.evex().vucomiss(xmmA, m);
4887 cc.evex().vunpckhpd(xmmA, xmmB, m);
4888 cc.evex().vunpckhpd(ymmA, ymmB, m);
4889 cc.evex().vunpckhpd(zmmA, zmmB, m);
4890 cc.evex().vunpckhps(xmmA, xmmB, m);
4891 cc.evex().vunpckhps(ymmA, ymmB, m);
4892 cc.evex().vunpckhps(zmmA, zmmB, m);
4893 cc.evex().vunpcklpd(xmmA, xmmB, m);
4894 cc.evex().vunpcklpd(ymmA, ymmB, m);
4895 cc.evex().vunpcklpd(zmmA, zmmB, m);
4896 cc.evex().vunpcklps(xmmA, xmmB, m);
4897 cc.evex().vunpcklps(ymmA, ymmB, m);
4898 cc.evex().vunpcklps(zmmA, zmmB, m);
4899 cc.evex().vxorpd(xmmA, xmmB, m);
4900 cc.evex().vxorpd(ymmA, ymmB, m);
4901 cc.evex().vxorpd(zmmA, zmmB, m);
4902 cc.evex().vxorps(xmmA, xmmB, m);
4903 cc.evex().vxorps(ymmA, ymmB, m);
4904 cc.evex().vxorps(zmmA, zmmB, m);
4905 }
4906
4907 // Generates a long sequence of AVX512 instructions.
4908 template<typename Emitter>
21554909 static void generateAvx512SequenceInternal(
21564910 Emitter& cc,
21574911 InstForm form,
21594913 const x86::KReg& kA, const x86::KReg& kB, const x86::KReg& kC,
21604914 const x86::Vec& vecA, const x86::Vec& vecB, const x86::Vec& vecC, const x86::Vec& vecD) {
21614915
2162 x86::Gp gpd = gp.r32();
2163 x86::Gp gpq = gp.r64();
2164 x86::Gp gpz = cc.is32Bit() ? gpd : gpq;
2165
2166 x86::Xmm xmmA = vecA.xmm();
2167 x86::Xmm xmmB = vecB.xmm();
2168 x86::Xmm xmmC = vecC.xmm();
2169 x86::Xmm xmmD = vecD.xmm();
2170
2171 x86::Ymm ymmA = vecA.ymm();
2172 x86::Ymm ymmB = vecB.ymm();
2173 x86::Ymm ymmC = vecC.ymm();
2174 x86::Ymm ymmD = vecD.ymm();
2175
2176 x86::Zmm zmmA = vecA.zmm();
2177 x86::Zmm zmmB = vecB.zmm();
2178 x86::Zmm zmmC = vecC.zmm();
2179 x86::Zmm zmmD = vecD.zmm();
2180
2181 cc.xor_(gpd, gpd);
2182 cc.vxorps(xmmA, xmmA, xmmA);
2183 cc.vxorps(xmmB, xmmB, xmmB);
2184 cc.vxorps(xmmC, xmmC, xmmC);
2185 cc.vxorps(xmmD, xmmD, xmmD);
2186
2187 if (form == InstForm::kReg) {
2188 cc.kaddb(kA, kB, kC);
2189 cc.kaddd(kA, kB, kC);
2190 cc.kaddq(kA, kB, kC);
2191 cc.kaddw(kA, kB, kC);
2192 cc.kandb(kA, kB, kC);
2193 cc.kandd(kA, kB, kC);
2194 cc.kandnb(kA, kB, kC);
2195 cc.kandnd(kA, kB, kC);
2196 cc.kandnq(kA, kB, kC);
2197 cc.kandnw(kA, kB, kC);
2198 cc.kandq(kA, kB, kC);
2199 cc.kandw(kA, kB, kC);
2200 cc.kmovb(kA, kB);
2201 cc.kmovb(kA, gpd);
2202 cc.kmovb(gpd, kB);
2203 cc.kmovd(kA, kB);
2204 cc.kmovd(kA, gpd);
2205 cc.kmovd(gpd, kB);
2206 cc.kmovq(kA, kB);
2207 if (cc.is64Bit()) cc.kmovq(kA, gpq);
2208 if (cc.is64Bit()) cc.kmovq(gpq, kB);
2209 cc.kmovw(kA, kB);
2210 cc.kmovw(kA, gpd);
2211 cc.kmovw(gpd, kB);
2212 cc.knotb(kA, kB);
2213 cc.knotd(kA, kB);
2214 cc.knotq(kA, kB);
2215 cc.knotw(kA, kB);
2216 cc.korb(kA, kB, kC);
2217 cc.kord(kA, kB, kC);
2218 cc.korq(kA, kB, kC);
2219 cc.kortestb(kA, kB);
2220 cc.kortestd(kA, kB);
2221 cc.kortestq(kA, kB);
2222 cc.kortestw(kA, kB);
2223 cc.korw(kA, kB, kC);
2224 cc.kshiftlb(kA, kB, 0);
2225 cc.kshiftld(kA, kB, 0);
2226 cc.kshiftlq(kA, kB, 0);
2227 cc.kshiftlw(kA, kB, 0);
2228 cc.kshiftrb(kA, kB, 0);
2229 cc.kshiftrd(kA, kB, 0);
2230 cc.kshiftrq(kA, kB, 0);
2231 cc.kshiftrw(kA, kB, 0);
2232 cc.ktestb(kA, kB);
2233 cc.ktestd(kA, kB);
2234 cc.ktestq(kA, kB);
2235 cc.ktestw(kA, kB);
2236 cc.kunpckbw(kA, kB, kC);
2237 cc.kunpckdq(kA, kB, kC);
2238 cc.kunpckwd(kA, kB, kC);
2239 cc.kxnorb(kA, kB, kC);
2240 cc.kxnord(kA, kB, kC);
2241 cc.kxnorq(kA, kB, kC);
2242 cc.kxnorw(kA, kB, kC);
2243 cc.kxorb(kA, kB, kC);
2244 cc.kxord(kA, kB, kC);
2245 cc.kxorq(kA, kB, kC);
2246 cc.kxorw(kA, kB, kC);
2247 cc.nop();
2248
2249 cc.evex().vaddpd(xmmA, xmmB, xmmC);
2250 cc.evex().vaddpd(ymmA, ymmB, ymmC);
2251 cc.evex().vaddpd(zmmA, zmmB, zmmC);
2252 cc.evex().vaddps(xmmA, xmmB, xmmC);
2253 cc.evex().vaddps(ymmA, ymmB, ymmC);
2254 cc.evex().vaddps(zmmA, zmmB, zmmC);
2255 cc.evex().vaddsd(xmmA, xmmB, xmmC);
2256 cc.evex().vaddss(xmmA, xmmB, xmmC);
2257 cc.evex().valignd(xmmA, xmmB, xmmC, 0);
2258 cc.evex().valignd(ymmA, ymmB, ymmC, 0);
2259 cc.evex().valignd(zmmA, zmmB, zmmC, 0);
2260 cc.evex().valignq(xmmA, xmmB, xmmC, 0);
2261 cc.evex().valignq(ymmA, ymmB, ymmC, 0);
2262 cc.evex().valignq(zmmA, zmmB, zmmC, 0);
2263 cc.evex().vandnpd(xmmA, xmmB, xmmC);
2264 cc.evex().vandnpd(ymmA, ymmB, ymmC);
2265 cc.evex().vandnpd(zmmA, zmmB, zmmC);
2266 cc.evex().vandnps(xmmA, xmmB, xmmC);
2267 cc.evex().vandnps(ymmA, ymmB, ymmC);
2268 cc.evex().vandnps(zmmA, zmmB, zmmC);
2269 cc.evex().vandpd(xmmA, xmmB, xmmC);
2270 cc.evex().vandpd(ymmA, ymmB, ymmC);
2271 cc.evex().vandpd(zmmA, zmmB, zmmC);
2272 cc.evex().vandps(xmmA, xmmB, xmmC);
2273 cc.evex().vandps(ymmA, ymmB, ymmC);
2274 cc.evex().vandps(zmmA, zmmB, zmmC);
2275 cc.evex().vblendmpd(xmmA, xmmB, xmmC);
2276 cc.evex().vblendmpd(ymmA, ymmB, ymmC);
2277 cc.evex().vblendmpd(zmmA, zmmB, zmmC);
2278 cc.evex().vblendmps(xmmA, xmmB, xmmC);
2279 cc.evex().vblendmps(ymmA, ymmB, ymmC);
2280 cc.evex().vblendmps(zmmA, zmmB, zmmC);
2281 cc.evex().vbroadcastf32x2(ymmA, xmmB);
2282 cc.evex().vbroadcastf32x2(zmmA, xmmB);
2283 cc.evex().vbroadcasti32x2(xmmA, xmmB);
2284 cc.evex().vbroadcasti32x2(ymmA, xmmB);
2285 cc.evex().vbroadcasti32x2(zmmA, xmmB);
2286 cc.evex().vbroadcastsd(ymmA, xmmB);
2287 cc.evex().vbroadcastsd(zmmA, xmmB);
2288 cc.evex().vbroadcastss(xmmA, xmmB);
2289 cc.evex().vbroadcastss(ymmA, xmmB);
2290 cc.evex().vbroadcastss(zmmA, xmmB);
2291 cc.evex().vcmppd(kA, xmmB, xmmC, 0);
2292 cc.evex().vcmppd(kA, ymmB, ymmC, 0);
2293 cc.evex().vcmppd(kA, zmmB, zmmC, 0);
2294 cc.evex().vcmpps(kA, xmmB, xmmC, 0);
2295 cc.evex().vcmpps(kA, ymmB, ymmC, 0);
2296 cc.evex().vcmpps(kA, zmmB, zmmC, 0);
2297 cc.evex().vcmpsd(kA, xmmB, xmmC, 0);
2298 cc.evex().vcmpss(kA, xmmB, xmmC, 0);
2299 cc.evex().vcomisd(xmmA, xmmB);
2300 cc.evex().vcomiss(xmmA, xmmB);
2301 cc.evex().vcompresspd(xmmA, xmmB);
2302 cc.evex().vcompresspd(ymmA, ymmB);
2303 cc.evex().vcompresspd(zmmA, zmmB);
2304 cc.evex().vcompressps(xmmA, xmmB);
2305 cc.evex().vcompressps(ymmA, ymmB);
2306 cc.evex().vcompressps(zmmA, zmmB);
2307 cc.evex().vcvtdq2pd(xmmA, xmmB);
2308 cc.evex().vcvtdq2pd(ymmA, xmmB);
2309 cc.evex().vcvtdq2pd(zmmA, ymmB);
2310 cc.evex().vcvtdq2ps(xmmA, xmmB);
2311 cc.evex().vcvtdq2ps(ymmA, ymmB);
2312 cc.evex().vcvtdq2ps(zmmA, zmmB);
2313 cc.evex().vcvtpd2dq(xmmA, xmmB);
2314 cc.evex().vcvtpd2dq(xmmA, ymmB);
2315 cc.evex().vcvtpd2dq(ymmA, zmmB);
2316 cc.evex().vcvtpd2qq(xmmA, xmmB);
2317 cc.evex().vcvtpd2qq(ymmA, ymmB);
2318 cc.evex().vcvtpd2qq(zmmA, zmmB);
2319 cc.evex().vcvtpd2udq(xmmA, xmmB);
2320 cc.evex().vcvtpd2udq(xmmA, ymmB);
2321 cc.evex().vcvtpd2udq(ymmA, zmmB);
2322 cc.evex().vcvtpd2uqq(xmmA, xmmB);
2323 cc.evex().vcvtpd2uqq(ymmA, ymmB);
2324 cc.evex().vcvtpd2uqq(zmmA, zmmB);
2325 cc.evex().vcvtph2ps(xmmA, xmmB);
2326 cc.evex().vcvtph2ps(ymmA, xmmB);
2327 cc.evex().vcvtph2ps(zmmA, ymmB);
2328 cc.evex().vcvtps2dq(xmmA, xmmB);
2329 cc.evex().vcvtps2dq(ymmA, ymmB);
2330 cc.evex().vcvtps2dq(zmmA, zmmB);
2331 cc.evex().vcvtps2pd(xmmA, xmmB);
2332 cc.evex().vcvtps2pd(ymmA, xmmB);
2333 cc.evex().vcvtps2pd(zmmA, ymmB);
2334 cc.evex().vcvtps2ph(xmmA, xmmB, 0);
2335 cc.evex().vcvtps2ph(xmmA, ymmB, 0);
2336 cc.evex().vcvtps2ph(ymmA, zmmB, 0);
2337 cc.evex().vcvtps2qq(xmmA, xmmB);
2338 cc.evex().vcvtps2qq(ymmA, xmmB);
2339 cc.evex().vcvtps2qq(zmmA, ymmB);
2340 cc.evex().vcvtps2udq(xmmA, xmmB);
2341 cc.evex().vcvtps2udq(ymmA, ymmB);
2342 cc.evex().vcvtps2udq(zmmA, zmmB);
2343 cc.evex().vcvtps2uqq(xmmA, xmmB);
2344 cc.evex().vcvtps2uqq(ymmA, xmmB);
2345 cc.evex().vcvtps2uqq(zmmA, ymmB);
2346 cc.evex().vcvtqq2pd(xmmA, xmmB);
2347 cc.evex().vcvtqq2pd(ymmA, ymmB);
2348 cc.evex().vcvtqq2pd(zmmA, zmmB);
2349 cc.evex().vcvtqq2ps(xmmA, xmmB);
2350 cc.evex().vcvtqq2ps(xmmA, ymmB);
2351 cc.evex().vcvtqq2ps(ymmA, zmmB);
2352 cc.evex().vcvtsd2si(gpd, xmmB);
2353 if (cc.is64Bit()) cc.evex().vcvtsd2si(gpq, xmmB);
2354 cc.evex().vcvtsd2ss(xmmA, xmmB, xmmC);
2355 cc.evex().vcvtsd2usi(gpd, xmmB);
2356 if (cc.is64Bit()) cc.evex().vcvtsd2usi(gpq, xmmB);
2357 cc.evex().vcvtsi2sd(xmmA, xmmB, gpd);
2358 if (cc.is64Bit()) cc.evex().vcvtsi2sd(xmmA, xmmB, gpq);
2359 cc.evex().vcvtsi2ss(xmmA, xmmB, gpd);
2360 if (cc.is64Bit()) cc.evex().vcvtsi2ss(xmmA, xmmB, gpq);
2361 cc.evex().vcvtss2sd(xmmA, xmmB, xmmC);
2362 cc.evex().vcvtss2si(gpd, xmmB);
2363 if (cc.is64Bit()) cc.evex().vcvtss2si(gpq, xmmB);
2364 cc.evex().vcvtss2usi(gpd, xmmB);
2365 if (cc.is64Bit()) cc.evex().vcvtss2usi(gpq, xmmB);
2366 cc.evex().vcvttpd2dq(xmmA, xmmB);
2367 cc.evex().vcvttpd2dq(xmmA, ymmB);
2368 cc.evex().vcvttpd2dq(ymmA, zmmB);
2369 cc.evex().vcvttpd2qq(xmmA, xmmB);
2370 cc.evex().vcvttpd2qq(ymmA, ymmB);
2371 cc.evex().vcvttpd2qq(zmmA, zmmB);
2372 cc.evex().vcvttpd2udq(xmmA, xmmB);
2373 cc.evex().vcvttpd2udq(xmmA, ymmB);
2374 cc.evex().vcvttpd2udq(ymmA, zmmB);
2375 cc.evex().vcvttpd2uqq(xmmA, xmmB);
2376 cc.evex().vcvttpd2uqq(ymmA, ymmB);
2377 cc.evex().vcvttpd2uqq(zmmA, zmmB);
2378 cc.evex().vcvttps2dq(xmmA, xmmB);
2379 cc.evex().vcvttps2dq(ymmA, ymmB);
2380 cc.evex().vcvttps2dq(zmmA, zmmB);
2381 cc.evex().vcvttps2qq(xmmA, xmmB);
2382 cc.evex().vcvttps2qq(ymmA, xmmB);
2383 cc.evex().vcvttps2qq(zmmA, ymmB);
2384 cc.evex().vcvttps2udq(xmmA, xmmB);
2385 cc.evex().vcvttps2udq(ymmA, ymmB);
2386 cc.evex().vcvttps2udq(zmmA, zmmB);
2387 cc.evex().vcvttps2uqq(xmmA, xmmB);
2388 cc.evex().vcvttps2uqq(ymmA, xmmB);
2389 cc.evex().vcvttps2uqq(zmmA, ymmB);
2390 cc.evex().vcvttsd2si(gpd, xmmB);
2391 if (cc.is64Bit()) cc.evex().vcvttsd2si(gpq, xmmB);
2392 cc.evex().vcvttsd2usi(gpd, xmmB);
2393 if (cc.is64Bit()) cc.evex().vcvttsd2usi(gpq, xmmB);
2394 cc.evex().vcvttss2si(gpd, xmmB);
2395 if (cc.is64Bit()) cc.evex().vcvttss2si(gpq, xmmB);
2396 cc.evex().vcvttss2usi(gpd, xmmB);
2397 if (cc.is64Bit()) cc.evex().vcvttss2usi(gpq, xmmB);
2398 cc.evex().vcvtudq2pd(xmmA, xmmB);
2399 cc.evex().vcvtudq2pd(ymmA, xmmB);
2400 cc.evex().vcvtudq2pd(zmmA, ymmB);
2401 cc.evex().vcvtudq2ps(xmmA, xmmB);
2402 cc.evex().vcvtudq2ps(ymmA, ymmB);
2403 cc.evex().vcvtudq2ps(zmmA, zmmB);
2404 cc.evex().vcvtuqq2pd(xmmA, xmmB);
2405 cc.evex().vcvtuqq2pd(ymmA, ymmB);
2406 cc.evex().vcvtuqq2pd(zmmA, zmmB);
2407 cc.evex().vcvtuqq2ps(xmmA, xmmB);
2408 cc.evex().vcvtuqq2ps(xmmA, ymmB);
2409 cc.evex().vcvtuqq2ps(ymmA, zmmB);
2410 cc.evex().vcvtusi2sd(xmmA, xmmB, gpd);
2411 if (cc.is64Bit()) cc.evex().vcvtusi2sd(xmmA, xmmB, gpq);
2412 cc.evex().vcvtusi2ss(xmmA, xmmB, gpd);
2413 if (cc.is64Bit()) cc.evex().vcvtusi2ss(xmmA, xmmB, gpq);
2414 cc.evex().vdbpsadbw(xmmA, xmmB, xmmC, 0);
2415 cc.evex().vdbpsadbw(ymmA, ymmB, ymmC, 0);
2416 cc.evex().vdbpsadbw(zmmA, zmmB, zmmC, 0);
2417 cc.evex().vdivpd(xmmA, xmmB, xmmC);
2418 cc.evex().vdivpd(ymmA, ymmB, ymmC);
2419 cc.evex().vdivpd(zmmA, zmmB, zmmC);
2420 cc.evex().vdivps(xmmA, xmmB, xmmC);
2421 cc.evex().vdivps(ymmA, ymmB, ymmC);
2422 cc.evex().vdivps(zmmA, zmmB, zmmC);
2423 cc.evex().vdivsd(xmmA, xmmB, xmmC);
2424 cc.evex().vdivss(xmmA, xmmB, xmmC);
2425 cc.evex().vexp2pd(zmmA, zmmB);
2426 cc.evex().vexp2ps(zmmA, zmmB);
2427 cc.evex().vexpandpd(xmmA, xmmB);
2428 cc.evex().vexpandpd(ymmA, ymmB);
2429 cc.evex().vexpandpd(zmmA, zmmB);
2430 cc.evex().vexpandps(xmmA, xmmB);
2431 cc.evex().vexpandps(ymmA, ymmB);
2432 cc.evex().vexpandps(zmmA, zmmB);
2433 cc.evex().vextractf32x4(xmmA, ymmB, 0);
2434 cc.evex().vextractf32x4(xmmA, zmmB, 0);
2435 cc.evex().vextractf32x8(ymmA, zmmB, 0);
2436 cc.evex().vextractf64x2(xmmA, ymmB, 0);
2437 cc.evex().vextractf64x2(xmmA, zmmB, 0);
2438 cc.evex().vextractf64x4(ymmA, zmmB, 0);
2439 cc.evex().vextracti32x4(xmmA, ymmB, 0);
2440 cc.evex().vextracti32x4(xmmA, zmmB, 0);
2441 cc.evex().vextracti32x8(ymmA, zmmB, 0);
2442 cc.evex().vextracti64x2(xmmA, ymmB, 0);
2443 cc.evex().vextracti64x2(xmmA, zmmB, 0);
2444 cc.evex().vextracti64x4(ymmA, zmmB, 0);
2445 cc.evex().vextractps(gpd, xmmB, 0);
2446 cc.evex().vfixupimmpd(xmmA, xmmB, xmmC, 0);
2447 cc.evex().vfixupimmpd(ymmA, ymmB, ymmC, 0);
2448 cc.evex().vfixupimmpd(zmmA, zmmB, zmmC, 0);
2449 cc.evex().vfixupimmps(xmmA, xmmB, xmmC, 0);
2450 cc.evex().vfixupimmps(ymmA, ymmB, ymmC, 0);
2451 cc.evex().vfixupimmps(zmmA, zmmB, zmmC, 0);
2452 cc.evex().vfixupimmsd(xmmA, xmmB, xmmC, 0);
2453 cc.evex().vfixupimmss(xmmA, xmmB, xmmC, 0);
2454 cc.evex().vfmadd132pd(xmmA, xmmB, xmmC);
2455 cc.evex().vfmadd132pd(ymmA, ymmB, ymmC);
2456 cc.evex().vfmadd132pd(zmmA, zmmB, zmmC);
2457 cc.evex().vfmadd132ps(xmmA, xmmB, xmmC);
2458 cc.evex().vfmadd132ps(ymmA, ymmB, ymmC);
2459 cc.evex().vfmadd132ps(zmmA, zmmB, zmmC);
2460 cc.evex().vfmadd132sd(xmmA, xmmB, xmmC);
2461 cc.evex().vfmadd132ss(xmmA, xmmB, xmmC);
2462 cc.evex().vfmadd213pd(xmmA, xmmB, xmmC);
2463 cc.evex().vfmadd213pd(ymmA, ymmB, ymmC);
2464 cc.evex().vfmadd213pd(zmmA, zmmB, zmmC);
2465 cc.evex().vfmadd213ps(xmmA, xmmB, xmmC);
2466 cc.evex().vfmadd213ps(ymmA, ymmB, ymmC);
2467 cc.evex().vfmadd213ps(zmmA, zmmB, zmmC);
2468 cc.evex().vfmadd213sd(xmmA, xmmB, xmmC);
2469 cc.evex().vfmadd213ss(xmmA, xmmB, xmmC);
2470 cc.evex().vfmadd231pd(xmmA, xmmB, xmmC);
2471 cc.evex().vfmadd231pd(ymmA, ymmB, ymmC);
2472 cc.evex().vfmadd231pd(zmmA, zmmB, zmmC);
2473 cc.evex().vfmadd231ps(xmmA, xmmB, xmmC);
2474 cc.evex().vfmadd231ps(ymmA, ymmB, ymmC);
2475 cc.evex().vfmadd231ps(zmmA, zmmB, zmmC);
2476 cc.evex().vfmadd231sd(xmmA, xmmB, xmmC);
2477 cc.evex().vfmadd231ss(xmmA, xmmB, xmmC);
2478 cc.evex().vfmaddsub132pd(xmmA, xmmB, xmmC);
2479 cc.evex().vfmaddsub132pd(ymmA, ymmB, ymmC);
2480 cc.evex().vfmaddsub132pd(zmmA, zmmB, zmmC);
2481 cc.evex().vfmaddsub132ps(xmmA, xmmB, xmmC);
2482 cc.evex().vfmaddsub132ps(ymmA, ymmB, ymmC);
2483 cc.evex().vfmaddsub132ps(zmmA, zmmB, zmmC);
2484 cc.evex().vfmaddsub213pd(xmmA, xmmB, xmmC);
2485 cc.evex().vfmaddsub213pd(ymmA, ymmB, ymmC);
2486 cc.evex().vfmaddsub213pd(zmmA, zmmB, zmmC);
2487 cc.evex().vfmaddsub213ps(xmmA, xmmB, xmmC);
2488 cc.evex().vfmaddsub213ps(ymmA, ymmB, ymmC);
2489 cc.evex().vfmaddsub213ps(zmmA, zmmB, zmmC);
2490 cc.evex().vfmaddsub231pd(xmmA, xmmB, xmmC);
2491 cc.evex().vfmaddsub231pd(ymmA, ymmB, ymmC);
2492 cc.evex().vfmaddsub231pd(zmmA, zmmB, zmmC);
2493 cc.evex().vfmaddsub231ps(xmmA, xmmB, xmmC);
2494 cc.evex().vfmaddsub231ps(ymmA, ymmB, ymmC);
2495 cc.evex().vfmaddsub231ps(zmmA, zmmB, zmmC);
2496 cc.evex().vfmsub132pd(xmmA, xmmB, xmmC);
2497 cc.evex().vfmsub132pd(ymmA, ymmB, ymmC);
2498 cc.evex().vfmsub132pd(zmmA, zmmB, zmmC);
2499 cc.evex().vfmsub132ps(xmmA, xmmB, xmmC);
2500 cc.evex().vfmsub132ps(ymmA, ymmB, ymmC);
2501 cc.evex().vfmsub132ps(zmmA, zmmB, zmmC);
2502 cc.evex().vfmsub132sd(xmmA, xmmB, xmmC);
2503 cc.evex().vfmsub132ss(xmmA, xmmB, xmmC);
2504 cc.evex().vfmsub213pd(xmmA, xmmB, xmmC);
2505 cc.evex().vfmsub213pd(ymmA, ymmB, ymmC);
2506 cc.evex().vfmsub213pd(zmmA, zmmB, zmmC);
2507 cc.evex().vfmsub213ps(xmmA, xmmB, xmmC);
2508 cc.evex().vfmsub213ps(ymmA, ymmB, ymmC);
2509 cc.evex().vfmsub213ps(zmmA, zmmB, zmmC);
2510 cc.evex().vfmsub213sd(xmmA, xmmB, xmmC);
2511 cc.evex().vfmsub213ss(xmmA, xmmB, xmmC);
2512 cc.evex().vfmsub231pd(xmmA, xmmB, xmmC);
2513 cc.evex().vfmsub231pd(ymmA, ymmB, ymmC);
2514 cc.evex().vfmsub231pd(zmmA, zmmB, zmmC);
2515 cc.evex().vfmsub231ps(xmmA, xmmB, xmmC);
2516 cc.evex().vfmsub231ps(ymmA, ymmB, ymmC);
2517 cc.evex().vfmsub231ps(zmmA, zmmB, zmmC);
2518 cc.evex().vfmsub231sd(xmmA, xmmB, xmmC);
2519 cc.evex().vfmsub231ss(xmmA, xmmB, xmmC);
2520 cc.evex().vfmsubadd132pd(xmmA, xmmB, xmmC);
2521 cc.evex().vfmsubadd132pd(ymmA, ymmB, ymmC);
2522 cc.evex().vfmsubadd132pd(zmmA, zmmB, zmmC);
2523 cc.evex().vfmsubadd132ps(xmmA, xmmB, xmmC);
2524 cc.evex().vfmsubadd132ps(ymmA, ymmB, ymmC);
2525 cc.evex().vfmsubadd132ps(zmmA, zmmB, zmmC);
2526 cc.evex().vfmsubadd213pd(xmmA, xmmB, xmmC);
2527 cc.evex().vfmsubadd213pd(ymmA, ymmB, ymmC);
2528 cc.evex().vfmsubadd213pd(zmmA, zmmB, zmmC);
2529 cc.evex().vfmsubadd213ps(xmmA, xmmB, xmmC);
2530 cc.evex().vfmsubadd213ps(ymmA, ymmB, ymmC);
2531 cc.evex().vfmsubadd213ps(zmmA, zmmB, zmmC);
2532 cc.evex().vfmsubadd231pd(xmmA, xmmB, xmmC);
2533 cc.evex().vfmsubadd231pd(ymmA, ymmB, ymmC);
2534 cc.evex().vfmsubadd231pd(zmmA, zmmB, zmmC);
2535 cc.evex().vfmsubadd231ps(xmmA, xmmB, xmmC);
2536 cc.evex().vfmsubadd231ps(ymmA, ymmB, ymmC);
2537 cc.evex().vfmsubadd231ps(zmmA, zmmB, zmmC);
2538 cc.evex().vfnmadd132pd(xmmA, xmmB, xmmC);
2539 cc.evex().vfnmadd132pd(ymmA, ymmB, ymmC);
2540 cc.evex().vfnmadd132pd(zmmA, zmmB, zmmC);
2541 cc.evex().vfnmadd132ps(xmmA, xmmB, xmmC);
2542 cc.evex().vfnmadd132ps(ymmA, ymmB, ymmC);
2543 cc.evex().vfnmadd132ps(zmmA, zmmB, zmmC);
2544 cc.evex().vfnmadd132sd(xmmA, xmmB, xmmC);
2545 cc.evex().vfnmadd132ss(xmmA, xmmB, xmmC);
2546 cc.evex().vfnmadd213pd(xmmA, xmmB, xmmC);
2547 cc.evex().vfnmadd213pd(ymmA, ymmB, ymmC);
2548 cc.evex().vfnmadd213pd(zmmA, zmmB, zmmC);
2549 cc.evex().vfnmadd213ps(xmmA, xmmB, xmmC);
2550 cc.evex().vfnmadd213ps(ymmA, ymmB, ymmC);
2551 cc.evex().vfnmadd213ps(zmmA, zmmB, zmmC);
2552 cc.evex().vfnmadd213sd(xmmA, xmmB, xmmC);
2553 cc.evex().vfnmadd213ss(xmmA, xmmB, xmmC);
2554 cc.evex().vfnmadd231pd(xmmA, xmmB, xmmC);
2555 cc.evex().vfnmadd231pd(ymmA, ymmB, ymmC);
2556 cc.evex().vfnmadd231pd(zmmA, zmmB, zmmC);
2557 cc.evex().vfnmadd231ps(xmmA, xmmB, xmmC);
2558 cc.evex().vfnmadd231ps(ymmA, ymmB, ymmC);
2559 cc.evex().vfnmadd231ps(zmmA, zmmB, zmmC);
2560 cc.evex().vfnmadd231sd(xmmA, xmmB, xmmC);
2561 cc.evex().vfnmadd231ss(xmmA, xmmB, xmmC);
2562 cc.evex().vfnmsub132pd(xmmA, xmmB, xmmC);
2563 cc.evex().vfnmsub132pd(ymmA, ymmB, ymmC);
2564 cc.evex().vfnmsub132pd(zmmA, zmmB, zmmC);
2565 cc.evex().vfnmsub132ps(xmmA, xmmB, xmmC);
2566 cc.evex().vfnmsub132ps(ymmA, ymmB, ymmC);
2567 cc.evex().vfnmsub132ps(zmmA, zmmB, zmmC);
2568 cc.evex().vfnmsub132sd(xmmA, xmmB, xmmC);
2569 cc.evex().vfnmsub132ss(xmmA, xmmB, xmmC);
2570 cc.evex().vfnmsub213pd(xmmA, xmmB, xmmC);
2571 cc.evex().vfnmsub213pd(ymmA, ymmB, ymmC);
2572 cc.evex().vfnmsub213pd(zmmA, zmmB, zmmC);
2573 cc.evex().vfnmsub213ps(xmmA, xmmB, xmmC);
2574 cc.evex().vfnmsub213ps(ymmA, ymmB, ymmC);
2575 cc.evex().vfnmsub213ps(zmmA, zmmB, zmmC);
2576 cc.evex().vfnmsub213sd(xmmA, xmmB, xmmC);
2577 cc.evex().vfnmsub213ss(xmmA, xmmB, xmmC);
2578 cc.evex().vfnmsub231pd(xmmA, xmmB, xmmC);
2579 cc.evex().vfnmsub231pd(ymmA, ymmB, ymmC);
2580 cc.evex().vfnmsub231pd(zmmA, zmmB, zmmC);
2581 cc.evex().vfnmsub231ps(xmmA, xmmB, xmmC);
2582 cc.evex().vfnmsub231ps(ymmA, ymmB, ymmC);
2583 cc.evex().vfnmsub231ps(zmmA, zmmB, zmmC);
2584 cc.evex().vfnmsub231sd(xmmA, xmmB, xmmC);
2585 cc.evex().vfnmsub231ss(xmmA, xmmB, xmmC);
2586 cc.evex().vfpclasspd(kA, xmmB, 0);
2587 cc.evex().vfpclasspd(kA, ymmB, 0);
2588 cc.evex().vfpclasspd(kA, zmmB, 0);
2589 cc.evex().vfpclassps(kA, xmmB, 0);
2590 cc.evex().vfpclassps(kA, ymmB, 0);
2591 cc.evex().vfpclassps(kA, zmmB, 0);
2592 cc.evex().vfpclasssd(kA, xmmB, 0);
2593 cc.evex().vfpclassss(kA, xmmB, 0);
2594 cc.evex().vgetexppd(xmmA, xmmB);
2595 cc.evex().vgetexppd(ymmA, ymmB);
2596 cc.evex().vgetexppd(zmmA, zmmB);
2597 cc.evex().vgetexpps(xmmA, xmmB);
2598 cc.evex().vgetexpps(ymmA, ymmB);
2599 cc.evex().vgetexpps(zmmA, zmmB);
2600 cc.evex().vgetexpsd(xmmA, xmmB, xmmC);
2601 cc.evex().vgetexpss(xmmA, xmmB, xmmC);
2602 cc.evex().vgetmantpd(xmmA, xmmB, 0);
2603 cc.evex().vgetmantpd(ymmA, ymmB, 0);
2604 cc.evex().vgetmantpd(zmmA, zmmB, 0);
2605 cc.evex().vgetmantps(xmmA, xmmB, 0);
2606 cc.evex().vgetmantps(ymmA, ymmB, 0);
2607 cc.evex().vgetmantps(zmmA, zmmB, 0);
2608 cc.evex().vgetmantsd(xmmA, xmmB, xmmC, 0);
2609 cc.evex().vgetmantss(xmmA, xmmB, xmmC, 0);
2610 cc.evex().vinsertf32x4(ymmA, ymmB, xmmC, 0);
2611 cc.evex().vinsertf32x4(zmmA, zmmB, xmmC, 0);
2612 cc.evex().vinsertf32x8(zmmA, zmmB, ymmC, 0);
2613 cc.evex().vinsertf64x2(ymmA, ymmB, xmmC, 0);
2614 cc.evex().vinsertf64x2(zmmA, zmmB, xmmC, 0);
2615 cc.evex().vinsertf64x4(zmmA, zmmB, ymmC, 0);
2616 cc.evex().vinserti32x4(ymmA, ymmB, xmmC, 0);
2617 cc.evex().vinserti32x4(zmmA, zmmB, xmmC, 0);
2618 cc.evex().vinserti32x8(zmmA, zmmB, ymmC, 0);
2619 cc.evex().vinserti64x2(ymmA, ymmB, xmmC, 0);
2620 cc.evex().vinserti64x2(zmmA, zmmB, xmmC, 0);
2621 cc.evex().vinserti64x4(zmmA, zmmB, ymmC, 0);
2622 cc.evex().vinsertps(xmmA, xmmB, xmmC, 0);
2623 cc.evex().vmaxpd(xmmA, xmmB, xmmC);
2624 cc.evex().vmaxpd(ymmA, ymmB, ymmC);
2625 cc.evex().vmaxpd(zmmA, zmmB, zmmC);
2626 cc.evex().vmaxps(xmmA, xmmB, xmmC);
2627 cc.evex().vmaxps(ymmA, ymmB, ymmC);
2628 cc.evex().vmaxps(zmmA, zmmB, zmmC);
2629 cc.evex().vmaxsd(xmmA, xmmB, xmmC);
2630 cc.evex().vmaxss(xmmA, xmmB, xmmC);
2631 cc.evex().vminpd(xmmA, xmmB, xmmC);
2632 cc.evex().vminpd(ymmA, ymmB, ymmC);
2633 cc.evex().vminpd(zmmA, zmmB, zmmC);
2634 cc.evex().vminps(xmmA, xmmB, xmmC);
2635 cc.evex().vminps(ymmA, ymmB, ymmC);
2636 cc.evex().vminps(zmmA, zmmB, zmmC);
2637 cc.evex().vminsd(xmmA, xmmB, xmmC);
2638 cc.evex().vminss(xmmA, xmmB, xmmC);
2639 cc.evex().vmovapd(xmmA, xmmB);
2640 cc.evex().vmovapd(xmmA, xmmB);
2641 cc.evex().vmovapd(ymmA, ymmB);
2642 cc.evex().vmovapd(ymmA, ymmB);
2643 cc.evex().vmovapd(zmmA, zmmB);
2644 cc.evex().vmovapd(zmmA, zmmB);
2645 cc.evex().vmovaps(xmmA, xmmB);
2646 cc.evex().vmovaps(xmmA, xmmB);
2647 cc.evex().vmovaps(ymmA, ymmB);
2648 cc.evex().vmovaps(ymmA, ymmB);
2649 cc.evex().vmovaps(zmmA, zmmB);
2650 cc.evex().vmovaps(zmmA, zmmB);
2651 cc.evex().vmovd(gpd, xmmB);
2652 cc.evex().vmovd(xmmA, gpd);
2653 cc.evex().vmovddup(xmmA, xmmB);
2654 cc.evex().vmovddup(ymmA, ymmB);
2655 cc.evex().vmovddup(zmmA, zmmB);
2656 cc.evex().vmovdqa32(xmmA, xmmB);
2657 cc.evex().vmovdqa32(xmmA, xmmB);
2658 cc.evex().vmovdqa32(ymmA, ymmB);
2659 cc.evex().vmovdqa32(ymmA, ymmB);
2660 cc.evex().vmovdqa32(zmmA, zmmB);
2661 cc.evex().vmovdqa32(zmmA, zmmB);
2662 cc.evex().vmovdqa64(xmmA, xmmB);
2663 cc.evex().vmovdqa64(xmmA, xmmB);
2664 cc.evex().vmovdqa64(ymmA, ymmB);
2665 cc.evex().vmovdqa64(ymmA, ymmB);
2666 cc.evex().vmovdqa64(zmmA, zmmB);
2667 cc.evex().vmovdqa64(zmmA, zmmB);
2668 cc.evex().vmovdqu16(xmmA, xmmB);
2669 cc.evex().vmovdqu16(xmmA, xmmB);
2670 cc.evex().vmovdqu16(ymmA, ymmB);
2671 cc.evex().vmovdqu16(ymmA, ymmB);
2672 cc.evex().vmovdqu16(zmmA, zmmB);
2673 cc.evex().vmovdqu16(zmmA, zmmB);
2674 cc.evex().vmovdqu32(xmmA, xmmB);
2675 cc.evex().vmovdqu32(xmmA, xmmB);
2676 cc.evex().vmovdqu32(ymmA, ymmB);
2677 cc.evex().vmovdqu32(ymmA, ymmB);
2678 cc.evex().vmovdqu32(zmmA, zmmB);
2679 cc.evex().vmovdqu32(zmmA, zmmB);
2680 cc.evex().vmovdqu64(xmmA, xmmB);
2681 cc.evex().vmovdqu64(xmmA, xmmB);
2682 cc.evex().vmovdqu64(ymmA, ymmB);
2683 cc.evex().vmovdqu64(ymmA, ymmB);
2684 cc.evex().vmovdqu64(zmmA, zmmB);
2685 cc.evex().vmovdqu64(zmmA, zmmB);
2686 cc.evex().vmovdqu8(xmmA, xmmB);
2687 cc.evex().vmovdqu8(xmmA, xmmB);
2688 cc.evex().vmovdqu8(ymmA, ymmB);
2689 cc.evex().vmovdqu8(ymmA, ymmB);
2690 cc.evex().vmovdqu8(zmmA, zmmB);
2691 cc.evex().vmovdqu8(zmmA, zmmB);
2692 cc.evex().vmovhlps(xmmA, xmmB, xmmC);
2693 if (cc.is64Bit()) cc.evex().vmovq(gpq, xmmB);
2694 if (cc.is64Bit()) cc.evex().vmovq(xmmA, gpq);
2695 cc.evex().vmovq(xmmA, xmmB);
2696 cc.evex().vmovsd(xmmA, xmmB, xmmC);
2697 cc.evex().vmovshdup(xmmA, xmmB);
2698 cc.evex().vmovshdup(ymmA, ymmB);
2699 cc.evex().vmovshdup(zmmA, zmmB);
2700 cc.evex().vmovsldup(xmmA, xmmB);
2701 cc.evex().vmovsldup(ymmA, ymmB);
2702 cc.evex().vmovsldup(zmmA, zmmB);
2703 cc.evex().vmovss(xmmA, xmmB, xmmC);
2704 cc.evex().vmovupd(xmmA, xmmB);
2705 cc.evex().vmovupd(xmmA, xmmB);
2706 cc.evex().vmovupd(ymmA, ymmB);
2707 cc.evex().vmovupd(ymmA, ymmB);
2708 cc.evex().vmovupd(zmmA, zmmB);
2709 cc.evex().vmovupd(zmmA, zmmB);
2710 cc.evex().vmovups(xmmA, xmmB);
2711 cc.evex().vmovups(xmmA, xmmB);
2712 cc.evex().vmovups(ymmA, ymmB);
2713 cc.evex().vmovups(ymmA, ymmB);
2714 cc.evex().vmovups(zmmA, zmmB);
2715 cc.evex().vmovups(zmmA, zmmB);
2716 cc.evex().vmulpd(xmmA, xmmB, xmmC);
2717 cc.evex().vmulpd(ymmA, ymmB, ymmC);
2718 cc.evex().vmulpd(zmmA, zmmB, zmmC);
2719 cc.evex().vmulps(xmmA, xmmB, xmmC);
2720 cc.evex().vmulps(ymmA, ymmB, ymmC);
2721 cc.evex().vmulps(zmmA, zmmB, zmmC);
2722 cc.evex().vmulsd(xmmA, xmmB, xmmC);
2723 cc.evex().vmulss(xmmA, xmmB, xmmC);
2724 cc.evex().vorpd(xmmA, xmmB, xmmC);
2725 cc.evex().vorpd(ymmA, ymmB, ymmC);
2726 cc.evex().vorpd(zmmA, zmmB, zmmC);
2727 cc.evex().vorps(xmmA, xmmB, xmmC);
2728 cc.evex().vorps(ymmA, ymmB, ymmC);
2729 cc.evex().vorps(zmmA, zmmB, zmmC);
2730 cc.evex().vpabsb(xmmA, xmmB);
2731 cc.evex().vpabsb(ymmA, ymmB);
2732 cc.evex().vpabsb(zmmA, zmmB);
2733 cc.evex().vpabsd(xmmA, xmmB);
2734 cc.evex().vpabsd(ymmA, ymmB);
2735 cc.evex().vpabsd(zmmA, zmmB);
2736 cc.evex().vpabsq(xmmA, xmmB);
2737 cc.evex().vpabsq(ymmA, ymmB);
2738 cc.evex().vpabsq(zmmA, zmmB);
2739 cc.evex().vpabsw(xmmA, xmmB);
2740 cc.evex().vpabsw(ymmA, ymmB);
2741 cc.evex().vpabsw(zmmA, zmmB);
2742 cc.evex().vpackssdw(xmmA, xmmB, xmmC);
2743 cc.evex().vpackssdw(ymmA, ymmB, ymmC);
2744 cc.evex().vpackssdw(zmmA, zmmB, zmmC);
2745 cc.evex().vpacksswb(xmmA, xmmB, xmmC);
2746 cc.evex().vpacksswb(ymmA, ymmB, ymmC);
2747 cc.evex().vpacksswb(zmmA, zmmB, zmmC);
2748 cc.evex().vpackusdw(xmmA, xmmB, xmmC);
2749 cc.evex().vpackusdw(ymmA, ymmB, ymmC);
2750 cc.evex().vpackusdw(zmmA, zmmB, zmmC);
2751 cc.evex().vpackuswb(xmmA, xmmB, xmmC);
2752 cc.evex().vpackuswb(ymmA, ymmB, ymmC);
2753 cc.evex().vpackuswb(zmmA, zmmB, zmmC);
2754 cc.evex().vpaddb(xmmA, xmmB, xmmC);
2755 cc.evex().vpaddb(ymmA, ymmB, ymmC);
2756 cc.evex().vpaddb(zmmA, zmmB, zmmC);
2757 cc.evex().vpaddd(xmmA, xmmB, xmmC);
2758 cc.evex().vpaddd(ymmA, ymmB, ymmC);
2759 cc.evex().vpaddd(zmmA, zmmB, zmmC);
2760 cc.evex().vpaddq(xmmA, xmmB, xmmC);
2761 cc.evex().vpaddq(ymmA, ymmB, ymmC);
2762 cc.evex().vpaddq(zmmA, zmmB, zmmC);
2763 cc.evex().vpaddsb(xmmA, xmmB, xmmC);
2764 cc.evex().vpaddsb(ymmA, ymmB, ymmC);
2765 cc.evex().vpaddsb(zmmA, zmmB, zmmC);
2766 cc.evex().vpaddsw(xmmA, xmmB, xmmC);
2767 cc.evex().vpaddsw(ymmA, ymmB, ymmC);
2768 cc.evex().vpaddsw(zmmA, zmmB, zmmC);
2769 cc.evex().vpaddusb(xmmA, xmmB, xmmC);
2770 cc.evex().vpaddusb(ymmA, ymmB, ymmC);
2771 cc.evex().vpaddusb(zmmA, zmmB, zmmC);
2772 cc.evex().vpaddusw(xmmA, xmmB, xmmC);
2773 cc.evex().vpaddusw(ymmA, ymmB, ymmC);
2774 cc.evex().vpaddusw(zmmA, zmmB, zmmC);
2775 cc.evex().vpaddw(xmmA, xmmB, xmmC);
2776 cc.evex().vpaddw(ymmA, ymmB, ymmC);
2777 cc.evex().vpaddw(zmmA, zmmB, zmmC);
2778 cc.evex().vpalignr(xmmA, xmmB, xmmC, 0);
2779 cc.evex().vpalignr(ymmA, ymmB, ymmC, 0);
2780 cc.evex().vpalignr(zmmA, zmmB, zmmC, 0);
2781 cc.evex().vpandd(xmmA, xmmB, xmmC);
2782 cc.evex().vpandd(ymmA, ymmB, ymmC);
2783 cc.evex().vpandd(zmmA, zmmB, zmmC);
2784 cc.evex().vpandnd(xmmA, xmmB, xmmC);
2785 cc.evex().vpandnd(ymmA, ymmB, ymmC);
2786 cc.evex().vpandnd(zmmA, zmmB, zmmC);
2787 cc.evex().vpandnq(xmmA, xmmB, xmmC);
2788 cc.evex().vpandnq(ymmA, ymmB, ymmC);
2789 cc.evex().vpandnq(zmmA, zmmB, zmmC);
2790 cc.evex().vpandq(xmmA, xmmB, xmmC);
2791 cc.evex().vpandq(ymmA, ymmB, ymmC);
2792 cc.evex().vpandq(zmmA, zmmB, zmmC);
2793 cc.evex().vpavgb(xmmA, xmmB, xmmC);
2794 cc.evex().vpavgb(ymmA, ymmB, ymmC);
2795 cc.evex().vpavgb(zmmA, zmmB, zmmC);
2796 cc.evex().vpavgw(xmmA, xmmB, xmmC);
2797 cc.evex().vpavgw(ymmA, ymmB, ymmC);
2798 cc.evex().vpavgw(zmmA, zmmB, zmmC);
2799 cc.evex().vpblendmb(xmmA, xmmB, xmmC);
2800 cc.evex().vpblendmb(ymmA, ymmB, ymmC);
2801 cc.evex().vpblendmb(zmmA, zmmB, zmmC);
2802 cc.evex().vpblendmd(xmmA, xmmB, xmmC);
2803 cc.evex().vpblendmd(ymmA, ymmB, ymmC);
2804 cc.evex().vpblendmd(zmmA, zmmB, zmmC);
2805 cc.evex().vpblendmq(xmmA, xmmB, xmmC);
2806 cc.evex().vpblendmq(ymmA, ymmB, ymmC);
2807 cc.evex().vpblendmq(zmmA, zmmB, zmmC);
2808 cc.evex().vpblendmw(xmmA, xmmB, xmmC);
2809 cc.evex().vpblendmw(ymmA, ymmB, ymmC);
2810 cc.evex().vpblendmw(zmmA, zmmB, zmmC);
2811 cc.evex().vpbroadcastb(xmmA, gpd);
2812 cc.evex().vpbroadcastb(xmmA, xmmB);
2813 cc.evex().vpbroadcastb(ymmA, gpd);
2814 cc.evex().vpbroadcastb(ymmA, xmmB);
2815 cc.evex().vpbroadcastb(zmmA, gpd);
2816 cc.evex().vpbroadcastb(zmmA, xmmB);
2817 cc.evex().vpbroadcastd(xmmA, gpd);
2818 cc.evex().vpbroadcastd(xmmA, xmmB);
2819 cc.evex().vpbroadcastd(ymmA, gpd);
2820 cc.evex().vpbroadcastd(ymmA, xmmB);
2821 cc.evex().vpbroadcastd(zmmA, gpd);
2822 cc.evex().vpbroadcastd(zmmA, xmmB);
2823 cc.evex().vpbroadcastmb2q(xmmA, kB);
2824 cc.evex().vpbroadcastmb2q(ymmA, kB);
2825 cc.evex().vpbroadcastmb2q(zmmA, kB);
2826 cc.evex().vpbroadcastmw2d(xmmA, kB);
2827 cc.evex().vpbroadcastmw2d(ymmA, kB);
2828 cc.evex().vpbroadcastmw2d(zmmA, kB);
2829 if (cc.is64Bit()) cc.evex().vpbroadcastq(xmmA, gpq);
2830 cc.evex().vpbroadcastq(xmmA, xmmB);
2831 if (cc.is64Bit()) cc.evex().vpbroadcastq(ymmA, gpq);
2832 cc.evex().vpbroadcastq(ymmA, xmmB);
2833 if (cc.is64Bit()) cc.evex().vpbroadcastq(zmmA, gpq);
2834 cc.evex().vpbroadcastq(zmmA, xmmB);
2835 cc.evex().vpbroadcastw(xmmA, gpd);
2836 cc.evex().vpbroadcastw(xmmA, xmmB);
2837 cc.evex().vpbroadcastw(ymmA, gpd);
2838 cc.evex().vpbroadcastw(ymmA, xmmB);
2839 cc.evex().vpbroadcastw(zmmA, gpd);
2840 cc.evex().vpbroadcastw(zmmA, xmmB);
2841 cc.evex().vpcmpb(kA, xmmB, xmmC, 0);
2842 cc.evex().vpcmpb(kA, ymmB, ymmC, 0);
2843 cc.evex().vpcmpb(kA, zmmB, zmmC, 0);
2844 cc.evex().vpcmpd(kA, xmmB, xmmC, 0);
2845 cc.evex().vpcmpd(kA, ymmB, ymmC, 0);
2846 cc.evex().vpcmpd(kA, zmmB, zmmC, 0);
2847 cc.evex().vpcmpeqb(kA, xmmB, xmmC);
2848 cc.evex().vpcmpeqb(kA, ymmB, ymmC);
2849 cc.evex().vpcmpeqb(kA, zmmB, zmmC);
2850 cc.evex().vpcmpeqd(kA, xmmB, xmmC);
2851 cc.evex().vpcmpeqd(kA, ymmB, ymmC);
2852 cc.evex().vpcmpeqd(kA, zmmB, zmmC);
2853 cc.evex().vpcmpeqq(kA, xmmB, xmmC);
2854 cc.evex().vpcmpeqq(kA, ymmB, ymmC);
2855 cc.evex().vpcmpeqq(kA, zmmB, zmmC);
2856 cc.evex().vpcmpeqw(kA, xmmB, xmmC);
2857 cc.evex().vpcmpeqw(kA, ymmB, ymmC);
2858 cc.evex().vpcmpeqw(kA, zmmB, zmmC);
2859 cc.evex().vpcmpgtb(kA, xmmB, xmmC);
2860 cc.evex().vpcmpgtb(kA, ymmB, ymmC);
2861 cc.evex().vpcmpgtb(kA, zmmB, zmmC);
2862 cc.evex().vpcmpgtd(kA, xmmB, xmmC);
2863 cc.evex().vpcmpgtd(kA, ymmB, ymmC);
2864 cc.evex().vpcmpgtd(kA, zmmB, zmmC);
2865 cc.evex().vpcmpgtq(kA, xmmB, xmmC);
2866 cc.evex().vpcmpgtq(kA, ymmB, ymmC);
2867 cc.evex().vpcmpgtq(kA, zmmB, zmmC);
2868 cc.evex().vpcmpgtw(kA, xmmB, xmmC);
2869 cc.evex().vpcmpgtw(kA, ymmB, ymmC);
2870 cc.evex().vpcmpgtw(kA, zmmB, zmmC);
2871 cc.evex().vpcmpq(kA, xmmB, xmmC, 0);
2872 cc.evex().vpcmpq(kA, ymmB, ymmC, 0);
2873 cc.evex().vpcmpq(kA, zmmB, zmmC, 0);
2874 cc.evex().vpcmpub(kA, xmmB, xmmC, 0);
2875 cc.evex().vpcmpub(kA, ymmB, ymmC, 0);
2876 cc.evex().vpcmpub(kA, zmmB, zmmC, 0);
2877 cc.evex().vpcmpud(kA, xmmB, xmmC, 0);
2878 cc.evex().vpcmpud(kA, ymmB, ymmC, 0);
2879 cc.evex().vpcmpud(kA, zmmB, zmmC, 0);
2880 cc.evex().vpcmpuq(kA, xmmB, xmmC, 0);
2881 cc.evex().vpcmpuq(kA, ymmB, ymmC, 0);
2882 cc.evex().vpcmpuq(kA, zmmB, zmmC, 0);
2883 cc.evex().vpcmpuw(kA, xmmB, xmmC, 0);
2884 cc.evex().vpcmpuw(kA, ymmB, ymmC, 0);
2885 cc.evex().vpcmpuw(kA, zmmB, zmmC, 0);
2886 cc.evex().vpcmpw(kA, xmmB, xmmC, 0);
2887 cc.evex().vpcmpw(kA, ymmB, ymmC, 0);
2888 cc.evex().vpcmpw(kA, zmmB, zmmC, 0);
2889 cc.evex().vpcompressd(xmmA, xmmB);
2890 cc.evex().vpcompressd(ymmA, ymmB);
2891 cc.evex().vpcompressd(zmmA, zmmB);
2892 cc.evex().vpcompressq(xmmA, xmmB);
2893 cc.evex().vpcompressq(ymmA, ymmB);
2894 cc.evex().vpcompressq(zmmA, zmmB);
2895 cc.evex().vpconflictd(xmmA, xmmB);
2896 cc.evex().vpconflictd(ymmA, ymmB);
2897 cc.evex().vpconflictd(zmmA, zmmB);
2898 cc.evex().vpconflictq(xmmA, xmmB);
2899 cc.evex().vpconflictq(ymmA, ymmB);
2900 cc.evex().vpconflictq(zmmA, zmmB);
2901 cc.evex().vpermb(xmmA, xmmB, xmmC);
2902 cc.evex().vpermb(ymmA, ymmB, ymmC);
2903 cc.evex().vpermb(zmmA, zmmB, zmmC);
2904 cc.evex().vpermd(ymmA, ymmB, ymmC);
2905 cc.evex().vpermd(zmmA, zmmB, zmmC);
2906 cc.evex().vpermi2b(xmmA, xmmB, xmmC);
2907 cc.evex().vpermi2b(ymmA, ymmB, ymmC);
2908 cc.evex().vpermi2b(zmmA, zmmB, zmmC);
2909 cc.evex().vpermi2d(xmmA, xmmB, xmmC);
2910 cc.evex().vpermi2d(ymmA, ymmB, ymmC);
2911 cc.evex().vpermi2d(zmmA, zmmB, zmmC);
2912 cc.evex().vpermi2pd(xmmA, xmmB, xmmC);
2913 cc.evex().vpermi2pd(ymmA, ymmB, ymmC);
2914 cc.evex().vpermi2pd(zmmA, zmmB, zmmC);
2915 cc.evex().vpermi2ps(xmmA, xmmB, xmmC);
2916 cc.evex().vpermi2ps(ymmA, ymmB, ymmC);
2917 cc.evex().vpermi2ps(zmmA, zmmB, zmmC);
2918 cc.evex().vpermi2q(xmmA, xmmB, xmmC);
2919 cc.evex().vpermi2q(ymmA, ymmB, ymmC);
2920 cc.evex().vpermi2q(zmmA, zmmB, zmmC);
2921 cc.evex().vpermi2w(xmmA, xmmB, xmmC);
2922 cc.evex().vpermi2w(ymmA, ymmB, ymmC);
2923 cc.evex().vpermi2w(zmmA, zmmB, zmmC);
2924 cc.evex().vpermilpd(xmmA, xmmB, xmmC);
2925 cc.evex().vpermilpd(ymmA, ymmB, ymmC);
2926 cc.evex().vpermilpd(zmmA, zmmB, zmmC);
2927 cc.evex().vpermilpd(xmmA, xmmB, 0);
2928 cc.evex().vpermilpd(ymmA, ymmB, 0);
2929 cc.evex().vpermilpd(zmmA, zmmB, 0);
2930 cc.evex().vpermilps(xmmA, xmmB, xmmC);
2931 cc.evex().vpermilps(ymmA, ymmB, ymmC);
2932 cc.evex().vpermilps(zmmA, zmmB, zmmC);
2933 cc.evex().vpermilps(xmmA, xmmB, 0);
2934 cc.evex().vpermilps(ymmA, ymmB, 0);
2935 cc.evex().vpermilps(zmmA, zmmB, 0);
2936 cc.evex().vpermq(ymmA, ymmB, ymmC);
2937 cc.evex().vpermq(zmmA, zmmB, zmmC);
2938 cc.evex().vpermq(ymmA, ymmB, 0);
2939 cc.evex().vpermq(zmmA, zmmB, 0);
2940 cc.evex().vpermt2b(xmmA, xmmB, xmmC);
2941 cc.evex().vpermt2b(ymmA, ymmB, ymmC);
2942 cc.evex().vpermt2b(zmmA, zmmB, zmmC);
2943 cc.evex().vpermt2d(xmmA, xmmB, xmmC);
2944 cc.evex().vpermt2d(ymmA, ymmB, ymmC);
2945 cc.evex().vpermt2d(zmmA, zmmB, zmmC);
2946 cc.evex().vpermt2pd(xmmA, xmmB, xmmC);
2947 cc.evex().vpermt2pd(ymmA, ymmB, ymmC);
2948 cc.evex().vpermt2pd(zmmA, zmmB, zmmC);
2949 cc.evex().vpermt2ps(xmmA, xmmB, xmmC);
2950 cc.evex().vpermt2ps(ymmA, ymmB, ymmC);
2951 cc.evex().vpermt2ps(zmmA, zmmB, zmmC);
2952 cc.evex().vpermt2q(xmmA, xmmB, xmmC);
2953 cc.evex().vpermt2q(ymmA, ymmB, ymmC);
2954 cc.evex().vpermt2q(zmmA, zmmB, zmmC);
2955 cc.evex().vpermt2w(xmmA, xmmB, xmmC);
2956 cc.evex().vpermt2w(ymmA, ymmB, ymmC);
2957 cc.evex().vpermt2w(zmmA, zmmB, zmmC);
2958 cc.evex().vpermw(xmmA, xmmB, xmmC);
2959 cc.evex().vpermw(ymmA, ymmB, ymmC);
2960 cc.evex().vpermw(zmmA, zmmB, zmmC);
2961 cc.evex().vpexpandd(xmmA, xmmB);
2962 cc.evex().vpexpandd(ymmA, ymmB);
2963 cc.evex().vpexpandd(zmmA, zmmB);
2964 cc.evex().vpexpandq(xmmA, xmmB);
2965 cc.evex().vpexpandq(ymmA, ymmB);
2966 cc.evex().vpexpandq(zmmA, zmmB);
2967 cc.evex().vpextrb(gpd, xmmB, 0);
2968 cc.evex().vpextrd(gpd, xmmB, 0);
2969 if (cc.is64Bit()) cc.evex().vpextrq(gpq, xmmB, 0);
2970 cc.evex().vpextrw(gpd, xmmB, 0);
2971 cc.evex().vpinsrb(xmmA, xmmB, gpd, 0);
2972 cc.evex().vpinsrd(xmmA, xmmB, gpd, 0);
2973 if (cc.is64Bit()) cc.evex().vpinsrq(xmmA, xmmB, gpq, 0);
2974 cc.evex().vpinsrw(xmmA, xmmB, gpd, 0);
2975 cc.evex().vplzcntd(xmmA, xmmB);
2976 cc.evex().vplzcntd(ymmA, ymmB);
2977 cc.evex().vplzcntd(zmmA, zmmB);
2978 cc.evex().vplzcntq(xmmA, xmmB);
2979 cc.evex().vplzcntq(ymmA, ymmB);
2980 cc.evex().vplzcntq(zmmA, zmmB);
2981 cc.evex().vpmadd52huq(xmmA, xmmB, xmmC);
2982 cc.evex().vpmadd52huq(ymmA, ymmB, ymmC);
2983 cc.evex().vpmadd52huq(zmmA, zmmB, zmmC);
2984 cc.evex().vpmadd52luq(xmmA, xmmB, xmmC);
2985 cc.evex().vpmadd52luq(ymmA, ymmB, ymmC);
2986 cc.evex().vpmadd52luq(zmmA, zmmB, zmmC);
2987 cc.evex().vpmaddubsw(xmmA, xmmB, xmmC);
2988 cc.evex().vpmaddubsw(ymmA, ymmB, ymmC);
2989 cc.evex().vpmaddubsw(zmmA, zmmB, zmmC);
2990 cc.evex().vpmaddwd(xmmA, xmmB, xmmC);
2991 cc.evex().vpmaddwd(ymmA, ymmB, ymmC);
2992 cc.evex().vpmaddwd(zmmA, zmmB, zmmC);
2993 cc.evex().vpmaxsb(xmmA, xmmB, xmmC);
2994 cc.evex().vpmaxsb(ymmA, ymmB, ymmC);
2995 cc.evex().vpmaxsb(zmmA, zmmB, zmmC);
2996 cc.evex().vpmaxsd(xmmA, xmmB, xmmC);
2997 cc.evex().vpmaxsd(ymmA, ymmB, ymmC);
2998 cc.evex().vpmaxsd(zmmA, zmmB, zmmC);
2999 cc.evex().vpmaxsq(xmmA, xmmB, xmmC);
3000 cc.evex().vpmaxsq(ymmA, ymmB, ymmC);
3001 cc.evex().vpmaxsq(zmmA, zmmB, zmmC);
3002 cc.evex().vpmaxsw(xmmA, xmmB, xmmC);
3003 cc.evex().vpmaxsw(ymmA, ymmB, ymmC);
3004 cc.evex().vpmaxsw(zmmA, zmmB, zmmC);
3005 cc.evex().vpmaxub(xmmA, xmmB, xmmC);
3006 cc.evex().vpmaxub(ymmA, ymmB, ymmC);
3007 cc.evex().vpmaxub(zmmA, zmmB, zmmC);
3008 cc.evex().vpmaxud(xmmA, xmmB, xmmC);
3009 cc.evex().vpmaxud(ymmA, ymmB, ymmC);
3010 cc.evex().vpmaxud(zmmA, zmmB, zmmC);
3011 cc.evex().vpmaxuq(xmmA, xmmB, xmmC);
3012 cc.evex().vpmaxuq(ymmA, ymmB, ymmC);
3013 cc.evex().vpmaxuq(zmmA, zmmB, zmmC);
3014 cc.evex().vpmaxuw(xmmA, xmmB, xmmC);
3015 cc.evex().vpmaxuw(ymmA, ymmB, ymmC);
3016 cc.evex().vpmaxuw(zmmA, zmmB, zmmC);
3017 cc.evex().vpminsb(xmmA, xmmB, xmmC);
3018 cc.evex().vpminsb(ymmA, ymmB, ymmC);
3019 cc.evex().vpminsb(zmmA, zmmB, zmmC);
3020 cc.evex().vpminsd(xmmA, xmmB, xmmC);
3021 cc.evex().vpminsd(ymmA, ymmB, ymmC);
3022 cc.evex().vpminsd(zmmA, zmmB, zmmC);
3023 cc.evex().vpminsq(xmmA, xmmB, xmmC);
3024 cc.evex().vpminsq(ymmA, ymmB, ymmC);
3025 cc.evex().vpminsq(zmmA, zmmB, zmmC);
3026 cc.evex().vpminsw(xmmA, xmmB, xmmC);
3027 cc.evex().vpminsw(ymmA, ymmB, ymmC);
3028 cc.evex().vpminsw(zmmA, zmmB, zmmC);
3029 cc.evex().vpminub(xmmA, xmmB, xmmC);
3030 cc.evex().vpminub(ymmA, ymmB, ymmC);
3031 cc.evex().vpminub(zmmA, zmmB, zmmC);
3032 cc.evex().vpminud(xmmA, xmmB, xmmC);
3033 cc.evex().vpminud(ymmA, ymmB, ymmC);
3034 cc.evex().vpminud(zmmA, zmmB, zmmC);
3035 cc.evex().vpminuq(xmmA, xmmB, xmmC);
3036 cc.evex().vpminuq(ymmA, ymmB, ymmC);
3037 cc.evex().vpminuq(zmmA, zmmB, zmmC);
3038 cc.evex().vpminuw(xmmA, xmmB, xmmC);
3039 cc.evex().vpminuw(ymmA, ymmB, ymmC);
3040 cc.evex().vpminuw(zmmA, zmmB, zmmC);
3041 cc.evex().vpmovb2m(kA, xmmB);
3042 cc.evex().vpmovb2m(kA, ymmB);
3043 cc.evex().vpmovb2m(kA, zmmB);
3044 cc.evex().vpmovd2m(kA, xmmB);
3045 cc.evex().vpmovd2m(kA, ymmB);
3046 cc.evex().vpmovd2m(kA, zmmB);
3047 cc.evex().vpmovdb(xmmA, xmmB);
3048 cc.evex().vpmovdb(xmmA, ymmB);
3049 cc.evex().vpmovdb(xmmA, zmmB);
3050 cc.evex().vpmovdw(xmmA, xmmB);
3051 cc.evex().vpmovdw(xmmA, ymmB);
3052 cc.evex().vpmovdw(ymmA, zmmB);
3053 cc.evex().vpmovm2b(xmmA, kB);
3054 cc.evex().vpmovm2b(ymmA, kB);
3055 cc.evex().vpmovm2b(zmmA, kB);
3056 cc.evex().vpmovm2d(xmmA, kB);
3057 cc.evex().vpmovm2d(ymmA, kB);
3058 cc.evex().vpmovm2d(zmmA, kB);
3059 cc.evex().vpmovm2q(xmmA, kB);
3060 cc.evex().vpmovm2q(ymmA, kB);
3061 cc.evex().vpmovm2q(zmmA, kB);
3062 cc.evex().vpmovm2w(xmmA, kB);
3063 cc.evex().vpmovm2w(ymmA, kB);
3064 cc.evex().vpmovm2w(zmmA, kB);
3065 cc.evex().vpmovq2m(kA, xmmB);
3066 cc.evex().vpmovq2m(kA, ymmB);
3067 cc.evex().vpmovq2m(kA, zmmB);
3068 cc.evex().vpmovqb(xmmA, xmmB);
3069 cc.evex().vpmovqb(xmmA, ymmB);
3070 cc.evex().vpmovqb(xmmA, zmmB);
3071 cc.evex().vpmovqd(xmmA, xmmB);
3072 cc.evex().vpmovqd(xmmA, ymmB);
3073 cc.evex().vpmovqd(ymmA, zmmB);
3074 cc.evex().vpmovqw(xmmA, xmmB);
3075 cc.evex().vpmovqw(xmmA, ymmB);
3076 cc.evex().vpmovqw(xmmA, zmmB);
3077 cc.evex().vpmovsdb(xmmA, xmmB);
3078 cc.evex().vpmovsdb(xmmA, ymmB);
3079 cc.evex().vpmovsdb(xmmA, zmmB);
3080 cc.evex().vpmovsdw(xmmA, xmmB);
3081 cc.evex().vpmovsdw(xmmA, ymmB);
3082 cc.evex().vpmovsdw(ymmA, zmmB);
3083 cc.evex().vpmovsqb(xmmA, xmmB);
3084 cc.evex().vpmovsqb(xmmA, ymmB);
3085 cc.evex().vpmovsqb(xmmA, zmmB);
3086 cc.evex().vpmovsqd(xmmA, xmmB);
3087 cc.evex().vpmovsqd(xmmA, ymmB);
3088 cc.evex().vpmovsqd(ymmA, zmmB);
3089 cc.evex().vpmovsqw(xmmA, xmmB);
3090 cc.evex().vpmovsqw(xmmA, ymmB);
3091 cc.evex().vpmovsqw(xmmA, zmmB);
3092 cc.evex().vpmovswb(xmmA, xmmB);
3093 cc.evex().vpmovswb(xmmA, ymmB);
3094 cc.evex().vpmovswb(ymmA, zmmB);
3095 cc.evex().vpmovsxbd(xmmA, xmmB);
3096 cc.evex().vpmovsxbd(ymmA, xmmB);
3097 cc.evex().vpmovsxbd(zmmA, xmmB);
3098 cc.evex().vpmovsxbq(xmmA, xmmB);
3099 cc.evex().vpmovsxbq(ymmA, xmmB);
3100 cc.evex().vpmovsxbq(zmmA, xmmB);
3101 cc.evex().vpmovsxbw(xmmA, xmmB);
3102 cc.evex().vpmovsxbw(ymmA, xmmB);
3103 cc.evex().vpmovsxbw(zmmA, ymmB);
3104 cc.evex().vpmovsxdq(xmmA, xmmB);
3105 cc.evex().vpmovsxdq(ymmA, xmmB);
3106 cc.evex().vpmovsxdq(zmmA, ymmB);
3107 cc.evex().vpmovsxwd(xmmA, xmmB);
3108 cc.evex().vpmovsxwd(ymmA, xmmB);
3109 cc.evex().vpmovsxwd(zmmA, ymmB);
3110 cc.evex().vpmovsxwq(xmmA, xmmB);
3111 cc.evex().vpmovsxwq(ymmA, xmmB);
3112 cc.evex().vpmovsxwq(zmmA, xmmB);
3113 cc.evex().vpmovusdb(xmmA, xmmB);
3114 cc.evex().vpmovusdb(xmmA, ymmB);
3115 cc.evex().vpmovusdb(xmmA, zmmB);
3116 cc.evex().vpmovusdw(xmmA, xmmB);
3117 cc.evex().vpmovusdw(xmmA, ymmB);
3118 cc.evex().vpmovusdw(ymmA, zmmB);
3119 cc.evex().vpmovusqb(xmmA, xmmB);
3120 cc.evex().vpmovusqb(xmmA, ymmB);
3121 cc.evex().vpmovusqb(xmmA, zmmB);
3122 cc.evex().vpmovusqd(xmmA, xmmB);
3123 cc.evex().vpmovusqd(xmmA, ymmB);
3124 cc.evex().vpmovusqd(ymmA, zmmB);
3125 cc.evex().vpmovusqw(xmmA, xmmB);
3126 cc.evex().vpmovusqw(xmmA, ymmB);
3127 cc.evex().vpmovusqw(xmmA, zmmB);
3128 cc.evex().vpmovuswb(xmmA, xmmB);
3129 cc.evex().vpmovuswb(xmmA, ymmB);
3130 cc.evex().vpmovuswb(ymmA, zmmB);
3131 cc.evex().vpmovw2m(kA, xmmB);
3132 cc.evex().vpmovw2m(kA, ymmB);
3133 cc.evex().vpmovw2m(kA, zmmB);
3134 cc.evex().vpmovwb(xmmA, xmmB);
3135 cc.evex().vpmovwb(xmmA, ymmB);
3136 cc.evex().vpmovwb(ymmA, zmmB);
3137 cc.evex().vpmovzxbd(xmmA, xmmB);
3138 cc.evex().vpmovzxbd(ymmA, xmmB);
3139 cc.evex().vpmovzxbd(zmmA, xmmB);
3140 cc.evex().vpmovzxbq(xmmA, xmmB);
3141 cc.evex().vpmovzxbq(ymmA, xmmB);
3142 cc.evex().vpmovzxbq(zmmA, xmmB);
3143 cc.evex().vpmovzxbw(xmmA, xmmB);
3144 cc.evex().vpmovzxbw(ymmA, xmmB);
3145 cc.evex().vpmovzxbw(zmmA, ymmB);
3146 cc.evex().vpmovzxdq(xmmA, xmmB);
3147 cc.evex().vpmovzxdq(ymmA, xmmB);
3148 cc.evex().vpmovzxdq(zmmA, ymmB);
3149 cc.evex().vpmovzxwd(xmmA, xmmB);
3150 cc.evex().vpmovzxwd(ymmA, xmmB);
3151 cc.evex().vpmovzxwd(zmmA, ymmB);
3152 cc.evex().vpmovzxwq(xmmA, xmmB);
3153 cc.evex().vpmovzxwq(ymmA, xmmB);
3154 cc.evex().vpmovzxwq(zmmA, xmmB);
3155 cc.evex().vpmuldq(xmmA, xmmB, xmmC);
3156 cc.evex().vpmuldq(ymmA, ymmB, ymmC);
3157 cc.evex().vpmuldq(zmmA, zmmB, zmmC);
3158 cc.evex().vpmulhrsw(xmmA, xmmB, xmmC);
3159 cc.evex().vpmulhrsw(ymmA, ymmB, ymmC);
3160 cc.evex().vpmulhrsw(zmmA, zmmB, zmmC);
3161 cc.evex().vpmulhuw(xmmA, xmmB, xmmC);
3162 cc.evex().vpmulhuw(ymmA, ymmB, ymmC);
3163 cc.evex().vpmulhuw(zmmA, zmmB, zmmC);
3164 cc.evex().vpmulhw(xmmA, xmmB, xmmC);
3165 cc.evex().vpmulhw(ymmA, ymmB, ymmC);
3166 cc.evex().vpmulhw(zmmA, zmmB, zmmC);
3167 cc.evex().vpmulld(xmmA, xmmB, xmmC);
3168 cc.evex().vpmulld(ymmA, ymmB, ymmC);
3169 cc.evex().vpmulld(zmmA, zmmB, zmmC);
3170 cc.evex().vpmullq(xmmA, xmmB, xmmC);
3171 cc.evex().vpmullq(ymmA, ymmB, ymmC);
3172 cc.evex().vpmullq(zmmA, zmmB, zmmC);
3173 cc.evex().vpmullw(xmmA, xmmB, xmmC);
3174 cc.evex().vpmullw(ymmA, ymmB, ymmC);
3175 cc.evex().vpmullw(zmmA, zmmB, zmmC);
3176 cc.evex().vpmultishiftqb(xmmA, xmmB, xmmC);
3177 cc.evex().vpmultishiftqb(ymmA, ymmB, ymmC);
3178 cc.evex().vpmultishiftqb(zmmA, zmmB, zmmC);
3179 cc.evex().vpmuludq(xmmA, xmmB, xmmC);
3180 cc.evex().vpmuludq(ymmA, ymmB, ymmC);
3181 cc.evex().vpmuludq(zmmA, zmmB, zmmC);
3182 cc.evex().vpopcntd(zmmA, zmmB);
3183 cc.evex().vpopcntq(zmmA, zmmB);
3184 cc.evex().vpord(xmmA, xmmB, xmmC);
3185 cc.evex().vpord(ymmA, ymmB, ymmC);
3186 cc.evex().vpord(zmmA, zmmB, zmmC);
3187 cc.evex().vporq(xmmA, xmmB, xmmC);
3188 cc.evex().vporq(ymmA, ymmB, ymmC);
3189 cc.evex().vporq(zmmA, zmmB, zmmC);
3190 cc.evex().vprold(xmmA, xmmB, 0);
3191 cc.evex().vprold(ymmA, ymmB, 0);
3192 cc.evex().vprold(zmmA, zmmB, 0);
3193 cc.evex().vprolq(xmmA, xmmB, 0);
3194 cc.evex().vprolq(ymmA, ymmB, 0);
3195 cc.evex().vprolq(zmmA, zmmB, 0);
3196 cc.evex().vprolvd(xmmA, xmmB, xmmC);
3197 cc.evex().vprolvd(ymmA, ymmB, ymmC);
3198 cc.evex().vprolvd(zmmA, zmmB, zmmC);
3199 cc.evex().vprolvq(xmmA, xmmB, xmmC);
3200 cc.evex().vprolvq(ymmA, ymmB, ymmC);
3201 cc.evex().vprolvq(zmmA, zmmB, zmmC);
3202 cc.evex().vprord(xmmA, xmmB, 0);
3203 cc.evex().vprord(ymmA, ymmB, 0);
3204 cc.evex().vprord(zmmA, zmmB, 0);
3205 cc.evex().vprorq(xmmA, xmmB, 0);
3206 cc.evex().vprorq(ymmA, ymmB, 0);
3207 cc.evex().vprorq(zmmA, zmmB, 0);
3208 cc.evex().vprorvd(xmmA, xmmB, xmmC);
3209 cc.evex().vprorvd(ymmA, ymmB, ymmC);
3210 cc.evex().vprorvd(zmmA, zmmB, zmmC);
3211 cc.evex().vprorvq(xmmA, xmmB, xmmC);
3212 cc.evex().vprorvq(ymmA, ymmB, ymmC);
3213 cc.evex().vprorvq(zmmA, zmmB, zmmC);
3214 cc.evex().vpsadbw(xmmA, xmmB, xmmC);
3215 cc.evex().vpsadbw(ymmA, ymmB, ymmC);
3216 cc.evex().vpsadbw(zmmA, zmmB, zmmC);
3217 cc.evex().vpshufb(xmmA, xmmB, xmmC);
3218 cc.evex().vpshufb(ymmA, ymmB, ymmC);
3219 cc.evex().vpshufb(zmmA, zmmB, zmmC);
3220 cc.evex().vpshufd(xmmA, xmmB, 0);
3221 cc.evex().vpshufd(ymmA, ymmB, 0);
3222 cc.evex().vpshufd(zmmA, zmmB, 0);
3223 cc.evex().vpshufhw(xmmA, xmmB, 0);
3224 cc.evex().vpshufhw(ymmA, ymmB, 0);
3225 cc.evex().vpshufhw(zmmA, zmmB, 0);
3226 cc.evex().vpshuflw(xmmA, xmmB, 0);
3227 cc.evex().vpshuflw(ymmA, ymmB, 0);
3228 cc.evex().vpshuflw(zmmA, zmmB, 0);
3229 cc.evex().vpslld(xmmA, xmmB, xmmC);
3230 cc.evex().vpslld(xmmA, xmmB, 0);
3231 cc.evex().vpslld(ymmA, ymmB, xmmC);
3232 cc.evex().vpslld(ymmA, ymmB, 0);
3233 cc.evex().vpslld(zmmA, zmmB, xmmC);
3234 cc.evex().vpslld(zmmA, zmmB, 0);
3235 cc.evex().vpslldq(xmmA, xmmB, 0);
3236 cc.evex().vpslldq(ymmA, ymmB, 0);
3237 cc.evex().vpslldq(zmmA, zmmB, 0);
3238 cc.evex().vpsllq(xmmA, xmmB, xmmC);
3239 cc.evex().vpsllq(xmmA, xmmB, 0);
3240 cc.evex().vpsllq(ymmA, ymmB, xmmC);
3241 cc.evex().vpsllq(ymmA, ymmB, 0);
3242 cc.evex().vpsllq(zmmA, zmmB, xmmC);
3243 cc.evex().vpsllq(zmmA, zmmB, 0);
3244 cc.evex().vpsllvd(xmmA, xmmB, xmmC);
3245 cc.evex().vpsllvd(ymmA, ymmB, ymmC);
3246 cc.evex().vpsllvd(zmmA, zmmB, zmmC);
3247 cc.evex().vpsllvq(xmmA, xmmB, xmmC);
3248 cc.evex().vpsllvq(ymmA, ymmB, ymmC);
3249 cc.evex().vpsllvq(zmmA, zmmB, zmmC);
3250 cc.evex().vpsllvw(xmmA, xmmB, xmmC);
3251 cc.evex().vpsllvw(ymmA, ymmB, ymmC);
3252 cc.evex().vpsllvw(zmmA, zmmB, zmmC);
3253 cc.evex().vpsllw(xmmA, xmmB, xmmC);
3254 cc.evex().vpsllw(xmmA, xmmB, 0);
3255 cc.evex().vpsllw(ymmA, ymmB, xmmC);
3256 cc.evex().vpsllw(ymmA, ymmB, 0);
3257 cc.evex().vpsllw(zmmA, zmmB, xmmC);
3258 cc.evex().vpsllw(zmmA, zmmB, 0);
3259 cc.evex().vpsrad(xmmA, xmmB, xmmC);
3260 cc.evex().vpsrad(xmmA, xmmB, 0);
3261 cc.evex().vpsrad(ymmA, ymmB, xmmC);
3262 cc.evex().vpsrad(ymmA, ymmB, 0);
3263 cc.evex().vpsrad(zmmA, zmmB, xmmC);
3264 cc.evex().vpsrad(zmmA, zmmB, 0);
3265 cc.evex().vpsraq(xmmA, xmmB, xmmC);
3266 cc.evex().vpsraq(xmmA, xmmB, 0);
3267 cc.evex().vpsraq(ymmA, ymmB, xmmC);
3268 cc.evex().vpsraq(ymmA, ymmB, 0);
3269 cc.evex().vpsraq(zmmA, zmmB, xmmC);
3270 cc.evex().vpsraq(zmmA, zmmB, 0);
3271 cc.evex().vpsravd(xmmA, xmmB, xmmC);
3272 cc.evex().vpsravd(ymmA, ymmB, ymmC);
3273 cc.evex().vpsravd(zmmA, zmmB, zmmC);
3274 cc.evex().vpsravq(xmmA, xmmB, xmmC);
3275 cc.evex().vpsravq(ymmA, ymmB, ymmC);
3276 cc.evex().vpsravq(zmmA, zmmB, zmmC);
3277 cc.evex().vpsravw(xmmA, xmmB, xmmC);
3278 cc.evex().vpsravw(ymmA, ymmB, ymmC);
3279 cc.evex().vpsravw(zmmA, zmmB, zmmC);
3280 cc.evex().vpsraw(xmmA, xmmB, xmmC);
3281 cc.evex().vpsraw(xmmA, xmmB, 0);
3282 cc.evex().vpsraw(ymmA, ymmB, xmmC);
3283 cc.evex().vpsraw(ymmA, ymmB, 0);
3284 cc.evex().vpsraw(zmmA, zmmB, xmmC);
3285 cc.evex().vpsraw(zmmA, zmmB, 0);
3286 cc.evex().vpsrld(xmmA, xmmB, xmmC);
3287 cc.evex().vpsrld(xmmA, xmmB, 0);
3288 cc.evex().vpsrld(ymmA, ymmB, xmmC);
3289 cc.evex().vpsrld(ymmA, ymmB, 0);
3290 cc.evex().vpsrld(zmmA, zmmB, xmmC);
3291 cc.evex().vpsrld(zmmA, zmmB, 0);
3292 cc.evex().vpsrldq(xmmA, xmmB, 0);
3293 cc.evex().vpsrldq(ymmA, ymmB, 0);
3294 cc.evex().vpsrldq(zmmA, zmmB, 0);
3295 cc.evex().vpsrlq(xmmA, xmmB, xmmC);
3296 cc.evex().vpsrlq(xmmA, xmmB, 0);
3297 cc.evex().vpsrlq(ymmA, ymmB, xmmC);
3298 cc.evex().vpsrlq(ymmA, ymmB, 0);
3299 cc.evex().vpsrlq(zmmA, zmmB, xmmC);
3300 cc.evex().vpsrlq(zmmA, zmmB, 0);
3301 cc.evex().vpsrlvd(xmmA, xmmB, xmmC);
3302 cc.evex().vpsrlvd(ymmA, ymmB, ymmC);
3303 cc.evex().vpsrlvd(zmmA, zmmB, zmmC);
3304 cc.evex().vpsrlvq(xmmA, xmmB, xmmC);
3305 cc.evex().vpsrlvq(ymmA, ymmB, ymmC);
3306 cc.evex().vpsrlvq(zmmA, zmmB, zmmC);
3307 cc.evex().vpsrlvw(xmmA, xmmB, xmmC);
3308 cc.evex().vpsrlvw(ymmA, ymmB, ymmC);
3309 cc.evex().vpsrlvw(zmmA, zmmB, zmmC);
3310 cc.evex().vpsrlw(xmmA, xmmB, xmmC);
3311 cc.evex().vpsrlw(xmmA, xmmB, 0);
3312 cc.evex().vpsrlw(ymmA, ymmB, xmmC);
3313 cc.evex().vpsrlw(ymmA, ymmB, 0);
3314 cc.evex().vpsrlw(zmmA, zmmB, xmmC);
3315 cc.evex().vpsrlw(zmmA, zmmB, 0);
3316 cc.evex().vpsubb(xmmA, xmmB, xmmC);
3317 cc.evex().vpsubb(ymmA, ymmB, ymmC);
3318 cc.evex().vpsubb(zmmA, zmmB, zmmC);
3319 cc.evex().vpsubd(xmmA, xmmB, xmmC);
3320 cc.evex().vpsubd(ymmA, ymmB, ymmC);
3321 cc.evex().vpsubd(zmmA, zmmB, zmmC);
3322 cc.evex().vpsubq(xmmA, xmmB, xmmC);
3323 cc.evex().vpsubq(ymmA, ymmB, ymmC);
3324 cc.evex().vpsubq(zmmA, zmmB, zmmC);
3325 cc.evex().vpsubsb(xmmA, xmmB, xmmC);
3326 cc.evex().vpsubsb(ymmA, ymmB, ymmC);
3327 cc.evex().vpsubsb(zmmA, zmmB, zmmC);
3328 cc.evex().vpsubsw(xmmA, xmmB, xmmC);
3329 cc.evex().vpsubsw(ymmA, ymmB, ymmC);
3330 cc.evex().vpsubsw(zmmA, zmmB, zmmC);
3331 cc.evex().vpsubusb(xmmA, xmmB, xmmC);
3332 cc.evex().vpsubusb(ymmA, ymmB, ymmC);
3333 cc.evex().vpsubusb(zmmA, zmmB, zmmC);
3334 cc.evex().vpsubusw(xmmA, xmmB, xmmC);
3335 cc.evex().vpsubusw(ymmA, ymmB, ymmC);
3336 cc.evex().vpsubusw(zmmA, zmmB, zmmC);
3337 cc.evex().vpsubw(xmmA, xmmB, xmmC);
3338 cc.evex().vpsubw(ymmA, ymmB, ymmC);
3339 cc.evex().vpsubw(zmmA, zmmB, zmmC);
3340 cc.evex().vpternlogd(xmmA, xmmB, xmmC, 0);
3341 cc.evex().vpternlogd(ymmA, ymmB, ymmC, 0);
3342 cc.evex().vpternlogd(zmmA, zmmB, zmmC, 0);
3343 cc.evex().vpternlogq(xmmA, xmmB, xmmC, 0);
3344 cc.evex().vpternlogq(ymmA, ymmB, ymmC, 0);
3345 cc.evex().vpternlogq(zmmA, zmmB, zmmC, 0);
3346 cc.evex().vptestmb(kA, xmmB, xmmC);
3347 cc.evex().vptestmb(kA, ymmB, ymmC);
3348 cc.evex().vptestmb(kA, zmmB, zmmC);
3349 cc.evex().vptestmd(kA, xmmB, xmmC);
3350 cc.evex().vptestmd(kA, ymmB, ymmC);
3351 cc.evex().vptestmd(kA, zmmB, zmmC);
3352 cc.evex().vptestmq(kA, xmmB, xmmC);
3353 cc.evex().vptestmq(kA, ymmB, ymmC);
3354 cc.evex().vptestmq(kA, zmmB, zmmC);
3355 cc.evex().vptestmw(kA, xmmB, xmmC);
3356 cc.evex().vptestmw(kA, ymmB, ymmC);
3357 cc.evex().vptestmw(kA, zmmB, zmmC);
3358 cc.evex().vptestnmb(kA, xmmB, xmmC);
3359 cc.evex().vptestnmb(kA, ymmB, ymmC);
3360 cc.evex().vptestnmb(kA, zmmB, zmmC);
3361 cc.evex().vptestnmd(kA, xmmB, xmmC);
3362 cc.evex().vptestnmd(kA, ymmB, ymmC);
3363 cc.evex().vptestnmd(kA, zmmB, zmmC);
3364 cc.evex().vptestnmq(kA, xmmB, xmmC);
3365 cc.evex().vptestnmq(kA, ymmB, ymmC);
3366 cc.evex().vptestnmq(kA, zmmB, zmmC);
3367 cc.evex().vptestnmw(kA, xmmB, xmmC);
3368 cc.evex().vptestnmw(kA, ymmB, ymmC);
3369 cc.evex().vptestnmw(kA, zmmB, zmmC);
3370 cc.evex().vpunpckhbw(xmmA, xmmB, xmmC);
3371 cc.evex().vpunpckhbw(ymmA, ymmB, ymmC);
3372 cc.evex().vpunpckhbw(zmmA, zmmB, zmmC);
3373 cc.evex().vpunpckhdq(xmmA, xmmB, xmmC);
3374 cc.evex().vpunpckhdq(ymmA, ymmB, ymmC);
3375 cc.evex().vpunpckhdq(zmmA, zmmB, zmmC);
3376 cc.evex().vpunpckhqdq(xmmA, xmmB, xmmC);
3377 cc.evex().vpunpckhqdq(ymmA, ymmB, ymmC);
3378 cc.evex().vpunpckhqdq(zmmA, zmmB, zmmC);
3379 cc.evex().vpunpckhwd(xmmA, xmmB, xmmC);
3380 cc.evex().vpunpckhwd(ymmA, ymmB, ymmC);
3381 cc.evex().vpunpckhwd(zmmA, zmmB, zmmC);
3382 cc.evex().vpunpcklbw(xmmA, xmmB, xmmC);
3383 cc.evex().vpunpcklbw(ymmA, ymmB, ymmC);
3384 cc.evex().vpunpcklbw(zmmA, zmmB, zmmC);
3385 cc.evex().vpunpckldq(xmmA, xmmB, xmmC);
3386 cc.evex().vpunpckldq(ymmA, ymmB, ymmC);
3387 cc.evex().vpunpckldq(zmmA, zmmB, zmmC);
3388 cc.evex().vpunpcklqdq(xmmA, xmmB, xmmC);
3389 cc.evex().vpunpcklqdq(ymmA, ymmB, ymmC);
3390 cc.evex().vpunpcklqdq(zmmA, zmmB, zmmC);
3391 cc.evex().vpunpcklwd(xmmA, xmmB, xmmC);
3392 cc.evex().vpunpcklwd(ymmA, ymmB, ymmC);
3393 cc.evex().vpunpcklwd(zmmA, zmmB, zmmC);
3394 cc.evex().vpxord(xmmA, xmmB, xmmC);
3395 cc.evex().vpxord(ymmA, ymmB, ymmC);
3396 cc.evex().vpxord(zmmA, zmmB, zmmC);
3397 cc.evex().vpxorq(xmmA, xmmB, xmmC);
3398 cc.evex().vpxorq(ymmA, ymmB, ymmC);
3399 cc.evex().vpxorq(zmmA, zmmB, zmmC);
3400 cc.evex().vrangepd(xmmA, xmmB, xmmC, 0);
3401 cc.evex().vrangepd(ymmA, ymmB, ymmC, 0);
3402 cc.evex().vrangepd(zmmA, zmmB, zmmC, 0);
3403 cc.evex().vrangeps(xmmA, xmmB, xmmC, 0);
3404 cc.evex().vrangeps(ymmA, ymmB, ymmC, 0);
3405 cc.evex().vrangeps(zmmA, zmmB, zmmC, 0);
3406 cc.evex().vrangesd(xmmA, xmmB, xmmC, 0);
3407 cc.evex().vrangess(xmmA, xmmB, xmmC, 0);
3408 cc.evex().vrcp14pd(xmmA, xmmB);
3409 cc.evex().vrcp14pd(ymmA, ymmB);
3410 cc.evex().vrcp14pd(zmmA, zmmB);
3411 cc.evex().vrcp14ps(xmmA, xmmB);
3412 cc.evex().vrcp14ps(ymmA, ymmB);
3413 cc.evex().vrcp14ps(zmmA, zmmB);
3414 cc.evex().vrcp14sd(xmmA, xmmB, xmmC);
3415 cc.evex().vrcp14ss(xmmA, xmmB, xmmC);
3416 cc.evex().vrcp28pd(zmmA, zmmB);
3417 cc.evex().vrcp28ps(zmmA, zmmB);
3418 cc.evex().vrcp28sd(xmmA, xmmB, xmmC);
3419 cc.evex().vrcp28ss(xmmA, xmmB, xmmC);
3420 cc.evex().vreducepd(xmmA, xmmB, 0);
3421 cc.evex().vreducepd(ymmA, ymmB, 0);
3422 cc.evex().vreducepd(zmmA, zmmB, 0);
3423 cc.evex().vreduceps(xmmA, xmmB, 0);
3424 cc.evex().vreduceps(ymmA, ymmB, 0);
3425 cc.evex().vreduceps(zmmA, zmmB, 0);
3426 cc.evex().vreducesd(xmmA, xmmB, xmmC, 0);
3427 cc.evex().vreducess(xmmA, xmmB, xmmC, 0);
3428 cc.evex().vrndscalepd(xmmA, xmmB, 0);
3429 cc.evex().vrndscalepd(ymmA, ymmB, 0);
3430 cc.evex().vrndscalepd(zmmA, zmmB, 0);
3431 cc.evex().vrndscaleps(xmmA, xmmB, 0);
3432 cc.evex().vrndscaleps(ymmA, ymmB, 0);
3433 cc.evex().vrndscaleps(zmmA, zmmB, 0);
3434 cc.evex().vrndscalesd(xmmA, xmmB, xmmC, 0);
3435 cc.evex().vrndscaless(xmmA, xmmB, xmmC, 0);
3436 cc.evex().vrsqrt14pd(xmmA, xmmB);
3437 cc.evex().vrsqrt14pd(ymmA, ymmB);
3438 cc.evex().vrsqrt14pd(zmmA, zmmB);
3439 cc.evex().vrsqrt14ps(xmmA, xmmB);
3440 cc.evex().vrsqrt14ps(ymmA, ymmB);
3441 cc.evex().vrsqrt14ps(zmmA, zmmB);
3442 cc.evex().vrsqrt14sd(xmmA, xmmB, xmmC);
3443 cc.evex().vrsqrt14ss(xmmA, xmmB, xmmC);
3444 cc.evex().vrsqrt28pd(zmmA, zmmB);
3445 cc.evex().vrsqrt28ps(zmmA, zmmB);
3446 cc.evex().vrsqrt28sd(xmmA, xmmB, xmmC);
3447 cc.evex().vrsqrt28ss(xmmA, xmmB, xmmC);
3448 cc.evex().vscalefpd(xmmA, xmmB, xmmC);
3449 cc.evex().vscalefpd(ymmA, ymmB, ymmC);
3450 cc.evex().vscalefpd(zmmA, zmmB, zmmC);
3451 cc.evex().vscalefps(xmmA, xmmB, xmmC);
3452 cc.evex().vscalefps(ymmA, ymmB, ymmC);
3453 cc.evex().vscalefps(zmmA, zmmB, zmmC);
3454 cc.evex().vscalefsd(xmmA, xmmB, xmmC);
3455 cc.evex().vscalefss(xmmA, xmmB, xmmC);
3456 cc.evex().vshuff32x4(ymmA, ymmB, ymmC, 0);
3457 cc.evex().vshuff32x4(zmmA, zmmB, zmmC, 0);
3458 cc.evex().vshuff64x2(ymmA, ymmB, ymmC, 0);
3459 cc.evex().vshuff64x2(zmmA, zmmB, zmmC, 0);
3460 cc.evex().vshufi32x4(ymmA, ymmB, ymmC, 0);
3461 cc.evex().vshufi32x4(zmmA, zmmB, zmmC, 0);
3462 cc.evex().vshufi64x2(ymmA, ymmB, ymmC, 0);
3463 cc.evex().vshufi64x2(zmmA, zmmB, zmmC, 0);
3464 cc.evex().vshufpd(xmmA, xmmB, xmmC, 0);
3465 cc.evex().vshufpd(ymmA, ymmB, ymmC, 0);
3466 cc.evex().vshufpd(zmmA, zmmB, zmmC, 0);
3467 cc.evex().vshufps(xmmA, xmmB, xmmC, 0);
3468 cc.evex().vshufps(ymmA, ymmB, ymmC, 0);
3469 cc.evex().vshufps(zmmA, zmmB, zmmC, 0);
3470 cc.evex().vsqrtpd(xmmA, xmmB);
3471 cc.evex().vsqrtpd(ymmA, ymmB);
3472 cc.evex().vsqrtpd(zmmA, zmmB);
3473 cc.evex().vsqrtps(xmmA, xmmB);
3474 cc.evex().vsqrtps(ymmA, ymmB);
3475 cc.evex().vsqrtps(zmmA, zmmB);
3476 cc.evex().vsqrtsd(xmmA, xmmB, xmmC);
3477 cc.evex().vsqrtss(xmmA, xmmB, xmmC);
3478 cc.evex().vsubpd(xmmA, xmmB, xmmC);
3479 cc.evex().vsubpd(ymmA, ymmB, ymmC);
3480 cc.evex().vsubpd(zmmA, zmmB, zmmC);
3481 cc.evex().vsubps(xmmA, xmmB, xmmC);
3482 cc.evex().vsubps(ymmA, ymmB, ymmC);
3483 cc.evex().vsubps(zmmA, zmmB, zmmC);
3484 cc.evex().vsubsd(xmmA, xmmB, xmmC);
3485 cc.evex().vsubss(xmmA, xmmB, xmmC);
3486 cc.evex().vucomisd(xmmA, xmmB);
3487 cc.evex().vucomiss(xmmA, xmmB);
3488 cc.evex().vunpckhpd(xmmA, xmmB, xmmC);
3489 cc.evex().vunpckhpd(ymmA, ymmB, ymmC);
3490 cc.evex().vunpckhpd(zmmA, zmmB, zmmC);
3491 cc.evex().vunpckhps(xmmA, xmmB, xmmC);
3492 cc.evex().vunpckhps(ymmA, ymmB, ymmC);
3493 cc.evex().vunpckhps(zmmA, zmmB, zmmC);
3494 cc.evex().vunpcklpd(xmmA, xmmB, xmmC);
3495 cc.evex().vunpcklpd(ymmA, ymmB, ymmC);
3496 cc.evex().vunpcklpd(zmmA, zmmB, zmmC);
3497 cc.evex().vunpcklps(xmmA, xmmB, xmmC);
3498 cc.evex().vunpcklps(ymmA, ymmB, ymmC);
3499 cc.evex().vunpcklps(zmmA, zmmB, zmmC);
3500 cc.evex().vxorpd(xmmA, xmmB, xmmC);
3501 cc.evex().vxorpd(ymmA, ymmB, ymmC);
3502 cc.evex().vxorpd(zmmA, zmmB, zmmC);
3503 cc.evex().vxorps(xmmA, xmmB, xmmC);
3504 cc.evex().vxorps(ymmA, ymmB, ymmC);
3505 cc.evex().vxorps(zmmA, zmmB, zmmC);
3506 }
3507 else {
3508 x86::Mem m = x86::ptr(gpz);
3509 x86::Mem m32 = x86::dword_ptr(gpz);
3510 x86::Mem m64 = x86::qword_ptr(gpz);
3511 x86::Mem m128 = x86::xmmword_ptr(gpz);
3512 x86::Mem m256 = x86::ymmword_ptr(gpz);
3513 x86::Mem m512 = x86::zmmword_ptr(gpz);
3514 x86::Mem vx_ptr = x86::ptr(gpz, xmmD);
3515 x86::Mem vy_ptr = x86::ptr(gpz, ymmD);
3516 x86::Mem vz_ptr = x86::ptr(gpz, zmmD);
3517
3518 cc.kmovb(kA, m);
3519 cc.kmovb(m, kB);
3520 cc.kmovd(kA, m);
3521 cc.kmovd(m, kB);
3522 cc.kmovq(kA, m);
3523 cc.kmovq(m, kB);
3524 cc.kmovw(kA, m);
3525 cc.kmovw(m, kB);
3526
3527 cc.evex().vaddpd(xmmA, xmmB, m);
3528 cc.evex().vaddpd(ymmA, ymmB, m);
3529 cc.evex().vaddpd(zmmA, zmmB, m);
3530 cc.evex().vaddps(xmmA, xmmB, m);
3531 cc.evex().vaddps(ymmA, ymmB, m);
3532 cc.evex().vaddps(zmmA, zmmB, m);
3533 cc.evex().vaddsd(xmmA, xmmB, m);
3534 cc.evex().vaddss(xmmA, xmmB, m);
3535 cc.evex().valignd(xmmA, xmmB, m, 0);
3536 cc.evex().valignd(ymmA, ymmB, m, 0);
3537 cc.evex().valignd(zmmA, zmmB, m, 0);
3538 cc.evex().valignq(xmmA, xmmB, m, 0);
3539 cc.evex().valignq(ymmA, ymmB, m, 0);
3540 cc.evex().valignq(zmmA, zmmB, m, 0);
3541 cc.evex().vandnpd(xmmA, xmmB, m);
3542 cc.evex().vandnpd(ymmA, ymmB, m);
3543 cc.evex().vandnpd(zmmA, zmmB, m);
3544 cc.evex().vandnps(xmmA, xmmB, m);
3545 cc.evex().vandnps(ymmA, ymmB, m);
3546 cc.evex().vandnps(zmmA, zmmB, m);
3547 cc.evex().vandpd(xmmA, xmmB, m);
3548 cc.evex().vandpd(ymmA, ymmB, m);
3549 cc.evex().vandpd(zmmA, zmmB, m);
3550 cc.evex().vandps(xmmA, xmmB, m);
3551 cc.evex().vandps(ymmA, ymmB, m);
3552 cc.evex().vandps(zmmA, zmmB, m);
3553 cc.evex().vblendmpd(xmmA, xmmB, m);
3554 cc.evex().vblendmpd(ymmA, ymmB, m);
3555 cc.evex().vblendmpd(zmmA, zmmB, m);
3556 cc.evex().vblendmps(xmmA, xmmB, m);
3557 cc.evex().vblendmps(ymmA, ymmB, m);
3558 cc.evex().vblendmps(zmmA, zmmB, m);
3559 cc.evex().vbroadcastf32x2(ymmA, m);
3560 cc.evex().vbroadcastf32x2(zmmA, m);
3561 cc.evex().vbroadcastf32x4(ymmA, m);
3562 cc.evex().vbroadcastf32x4(zmmA, m);
3563 cc.evex().vbroadcastf32x8(zmmA, m);
3564 cc.evex().vbroadcastf64x2(ymmA, m);
3565 cc.evex().vbroadcastf64x2(zmmA, m);
3566 cc.evex().vbroadcastf64x4(zmmA, m);
3567 cc.evex().vbroadcasti32x2(xmmA, m);
3568 cc.evex().vbroadcasti32x2(ymmA, m);
3569 cc.evex().vbroadcasti32x2(zmmA, m);
3570 cc.evex().vbroadcasti32x4(ymmA, m);
3571 cc.evex().vbroadcasti32x4(zmmA, m);
3572 cc.evex().vbroadcasti32x8(zmmA, m);
3573 cc.evex().vbroadcasti64x2(ymmA, m);
3574 cc.evex().vbroadcasti64x2(zmmA, m);
3575 cc.evex().vbroadcasti64x4(zmmA, m);
3576 cc.evex().vbroadcastsd(ymmA, m);
3577 cc.evex().vbroadcastsd(zmmA, m);
3578 cc.evex().vbroadcastss(xmmA, m);
3579 cc.evex().vbroadcastss(ymmA, m);
3580 cc.evex().vbroadcastss(zmmA, m);
3581 cc.evex().vcmppd(kA, xmmB, m, 0);
3582 cc.evex().vcmppd(kA, ymmB, m, 0);
3583 cc.evex().vcmppd(kA, zmmB, m, 0);
3584 cc.evex().vcmpps(kA, xmmB, m, 0);
3585 cc.evex().vcmpps(kA, ymmB, m, 0);
3586 cc.evex().vcmpps(kA, zmmB, m, 0);
3587 cc.evex().vcmpsd(kA, xmmB, m, 0);
3588 cc.evex().vcmpss(kA, xmmB, m, 0);
3589 cc.evex().vcomisd(xmmA, m);
3590 cc.evex().vcomiss(xmmA, m);
3591 cc.evex().vcompresspd(m, xmmB);
3592 cc.evex().vcompresspd(m, ymmB);
3593 cc.evex().vcompresspd(m, zmmB);
3594 cc.evex().vcompressps(m, xmmB);
3595 cc.evex().vcompressps(m, ymmB);
3596 cc.evex().vcompressps(m, zmmB);
3597 cc.evex().vcvtdq2pd(xmmA, m);
3598 cc.evex().vcvtdq2pd(ymmA, m);
3599 cc.evex().vcvtdq2pd(zmmA, m);
3600 cc.evex().vcvtdq2ps(xmmA, m);
3601 cc.evex().vcvtdq2ps(ymmA, m);
3602 cc.evex().vcvtdq2ps(zmmA, m);
3603 cc.evex().vcvtpd2dq(xmmA, m128);
3604 cc.evex().vcvtpd2dq(xmmA, m256);
3605 cc.evex().vcvtpd2dq(ymmA, m512);
3606 cc.evex().vcvtpd2qq(xmmA, m);
3607 cc.evex().vcvtpd2qq(ymmA, m);
3608 cc.evex().vcvtpd2qq(zmmA, m);
3609 cc.evex().vcvtpd2udq(xmmA, m128);
3610 cc.evex().vcvtpd2udq(xmmA, m256);
3611 cc.evex().vcvtpd2udq(ymmA, m512);
3612 cc.evex().vcvtpd2uqq(xmmA, m);
3613 cc.evex().vcvtpd2uqq(ymmA, m);
3614 cc.evex().vcvtpd2uqq(zmmA, m);
3615 cc.evex().vcvtph2ps(xmmA, m);
3616 cc.evex().vcvtph2ps(ymmA, m);
3617 cc.evex().vcvtph2ps(zmmA, m);
3618 cc.evex().vcvtps2dq(xmmA, m);
3619 cc.evex().vcvtps2dq(ymmA, m);
3620 cc.evex().vcvtps2dq(zmmA, m);
3621 cc.evex().vcvtps2pd(xmmA, m);
3622 cc.evex().vcvtps2pd(ymmA, m);
3623 cc.evex().vcvtps2pd(zmmA, m);
3624 cc.evex().vcvtps2ph(m, xmmB, 0);
3625 cc.evex().vcvtps2ph(m, ymmB, 0);
3626 cc.evex().vcvtps2ph(m, zmmB, 0);
3627 cc.evex().vcvtps2qq(xmmA, m);
3628 cc.evex().vcvtps2qq(ymmA, m);
3629 cc.evex().vcvtps2qq(zmmA, m);
3630 cc.evex().vcvtps2udq(xmmA, m);
3631 cc.evex().vcvtps2udq(ymmA, m);
3632 cc.evex().vcvtps2udq(zmmA, m);
3633 cc.evex().vcvtps2uqq(xmmA, m);
3634 cc.evex().vcvtps2uqq(ymmA, m);
3635 cc.evex().vcvtps2uqq(zmmA, m);
3636 cc.evex().vcvtqq2pd(xmmA, m);
3637 cc.evex().vcvtqq2pd(ymmA, m);
3638 cc.evex().vcvtqq2pd(zmmA, m);
3639 cc.evex().vcvtqq2ps(xmmA, m128);
3640 cc.evex().vcvtqq2ps(xmmA, m256);
3641 cc.evex().vcvtqq2ps(ymmA, m512);
3642 cc.evex().vcvtsd2si(gpd, m);
3643 if (cc.is64Bit()) cc.evex().vcvtsd2si(gpq, m);
3644 cc.evex().vcvtsd2ss(xmmA, xmmB, m);
3645 cc.evex().vcvtsd2usi(gpd, m);
3646 if (cc.is64Bit()) cc.evex().vcvtsd2usi(gpq, m);
3647 cc.evex().vcvtsi2sd(xmmA, xmmB, m32);
3648 if (cc.is64Bit()) cc.evex().vcvtsi2sd(xmmA, xmmB, m64);
3649 cc.evex().vcvtsi2ss(xmmA, xmmB, m32);
3650 if (cc.is64Bit()) cc.evex().vcvtsi2ss(xmmA, xmmB, m64);
3651 cc.evex().vcvtss2sd(xmmA, xmmB, m);
3652 cc.evex().vcvtss2si(gpd, m);
3653 if (cc.is64Bit()) cc.evex().vcvtss2si(gpq, m);
3654 cc.evex().vcvtss2usi(gpd, m);
3655 if (cc.is64Bit()) cc.evex().vcvtss2usi(gpq, m);
3656 cc.evex().vcvttpd2dq(xmmA, m128);
3657 cc.evex().vcvttpd2dq(xmmA, m256);
3658 cc.evex().vcvttpd2dq(ymmA, m512);
3659 cc.evex().vcvttpd2qq(xmmA, m);
3660 cc.evex().vcvttpd2qq(ymmA, m);
3661 cc.evex().vcvttpd2qq(zmmA, m);
3662 cc.evex().vcvttpd2udq(xmmA, m128);
3663 cc.evex().vcvttpd2udq(xmmA, m256);
3664 cc.evex().vcvttpd2udq(ymmA, m512);
3665 cc.evex().vcvttpd2uqq(xmmA, m);
3666 cc.evex().vcvttpd2uqq(ymmA, m);
3667 cc.evex().vcvttpd2uqq(zmmA, m);
3668 cc.evex().vcvttps2dq(xmmA, m);
3669 cc.evex().vcvttps2dq(ymmA, m);
3670 cc.evex().vcvttps2dq(zmmA, m);
3671 cc.evex().vcvttps2qq(xmmA, m);
3672 cc.evex().vcvttps2qq(ymmA, m);
3673 cc.evex().vcvttps2qq(zmmA, m);
3674 cc.evex().vcvttps2udq(xmmA, m);
3675 cc.evex().vcvttps2udq(ymmA, m);
3676 cc.evex().vcvttps2udq(zmmA, m);
3677 cc.evex().vcvttps2uqq(xmmA, m);
3678 cc.evex().vcvttps2uqq(ymmA, m);
3679 cc.evex().vcvttps2uqq(zmmA, m);
3680 cc.evex().vcvttsd2si(gpd, m);
3681 if (cc.is64Bit()) cc.evex().vcvttsd2si(gpq, m);
3682 cc.evex().vcvttsd2usi(gpd, m);
3683 if (cc.is64Bit()) cc.evex().vcvttsd2usi(gpq, m);
3684 cc.evex().vcvttss2si(gpd, m);
3685 if (cc.is64Bit()) cc.evex().vcvttss2si(gpq, m);
3686 cc.evex().vcvttss2usi(gpd, m);
3687 if (cc.is64Bit()) cc.evex().vcvttss2usi(gpq, m);
3688 cc.evex().vcvtudq2pd(xmmA, m);
3689 cc.evex().vcvtudq2pd(ymmA, m);
3690 cc.evex().vcvtudq2pd(zmmA, m);
3691 cc.evex().vcvtudq2ps(xmmA, m);
3692 cc.evex().vcvtudq2ps(ymmA, m);
3693 cc.evex().vcvtudq2ps(zmmA, m);
3694 cc.evex().vcvtuqq2pd(xmmA, m);
3695 cc.evex().vcvtuqq2pd(ymmA, m);
3696 cc.evex().vcvtuqq2pd(zmmA, m);
3697 cc.evex().vcvtuqq2ps(xmmA, m128);
3698 cc.evex().vcvtuqq2ps(xmmA, m256);
3699 cc.evex().vcvtuqq2ps(ymmA, m512);
3700 cc.evex().vcvtusi2sd(xmmA, xmmB, m32);
3701 if (cc.is64Bit()) cc.evex().vcvtusi2sd(xmmA, xmmB, m64);
3702 cc.evex().vcvtusi2ss(xmmA, xmmB, m32);
3703 if (cc.is64Bit()) cc.evex().vcvtusi2ss(xmmA, xmmB, m64);
3704 cc.evex().vdbpsadbw(xmmA, xmmB, m, 0);
3705 cc.evex().vdbpsadbw(ymmA, ymmB, m, 0);
3706 cc.evex().vdbpsadbw(zmmA, zmmB, m, 0);
3707 cc.evex().vdivpd(xmmA, xmmB, m);
3708 cc.evex().vdivpd(ymmA, ymmB, m);
3709 cc.evex().vdivpd(zmmA, zmmB, m);
3710 cc.evex().vdivps(xmmA, xmmB, m);
3711 cc.evex().vdivps(ymmA, ymmB, m);
3712 cc.evex().vdivps(zmmA, zmmB, m);
3713 cc.evex().vdivsd(xmmA, xmmB, m);
3714 cc.evex().vdivss(xmmA, xmmB, m);
3715 cc.evex().vexp2pd(zmmA, m);
3716 cc.evex().vexp2ps(zmmA, m);
3717 cc.evex().vexpandpd(xmmA, m);
3718 cc.evex().vexpandpd(ymmA, m);
3719 cc.evex().vexpandpd(zmmA, m);
3720 cc.evex().vexpandps(xmmA, m);
3721 cc.evex().vexpandps(ymmA, m);
3722 cc.evex().vexpandps(zmmA, m);
3723 cc.evex().vextractf32x4(m, ymmB, 0);
3724 cc.evex().vextractf32x4(m, zmmB, 0);
3725 cc.evex().vextractf32x8(m, zmmB, 0);
3726 cc.evex().vextractf64x2(m, ymmB, 0);
3727 cc.evex().vextractf64x2(m, zmmB, 0);
3728 cc.evex().vextractf64x4(m, zmmB, 0);
3729 cc.evex().vextracti32x4(m, ymmB, 0);
3730 cc.evex().vextracti32x4(m, zmmB, 0);
3731 cc.evex().vextracti32x8(m, zmmB, 0);
3732 cc.evex().vextracti64x2(m, ymmB, 0);
3733 cc.evex().vextracti64x2(m, zmmB, 0);
3734 cc.evex().vextracti64x4(m, zmmB, 0);
3735 cc.evex().vextractps(m, xmmB, 0);
3736 cc.evex().vfixupimmpd(xmmA, xmmB, m, 0);
3737 cc.evex().vfixupimmpd(ymmA, ymmB, m, 0);
3738 cc.evex().vfixupimmpd(zmmA, zmmB, m, 0);
3739 cc.evex().vfixupimmps(xmmA, xmmB, m, 0);
3740 cc.evex().vfixupimmps(ymmA, ymmB, m, 0);
3741 cc.evex().vfixupimmps(zmmA, zmmB, m, 0);
3742 cc.evex().vfixupimmsd(xmmA, xmmB, m, 0);
3743 cc.evex().vfixupimmss(xmmA, xmmB, m, 0);
3744 cc.evex().vfmadd132pd(xmmA, xmmB, m);
3745 cc.evex().vfmadd132pd(ymmA, ymmB, m);
3746 cc.evex().vfmadd132pd(zmmA, zmmB, m);
3747 cc.evex().vfmadd132ps(xmmA, xmmB, m);
3748 cc.evex().vfmadd132ps(ymmA, ymmB, m);
3749 cc.evex().vfmadd132ps(zmmA, zmmB, m);
3750 cc.evex().vfmadd132sd(xmmA, xmmB, m);
3751 cc.evex().vfmadd132ss(xmmA, xmmB, m);
3752 cc.evex().vfmadd213pd(xmmA, xmmB, m);
3753 cc.evex().vfmadd213pd(ymmA, ymmB, m);
3754 cc.evex().vfmadd213pd(zmmA, zmmB, m);
3755 cc.evex().vfmadd213ps(xmmA, xmmB, m);
3756 cc.evex().vfmadd213ps(ymmA, ymmB, m);
3757 cc.evex().vfmadd213ps(zmmA, zmmB, m);
3758 cc.evex().vfmadd213sd(xmmA, xmmB, m);
3759 cc.evex().vfmadd213ss(xmmA, xmmB, m);
3760 cc.evex().vfmadd231pd(xmmA, xmmB, m);
3761 cc.evex().vfmadd231pd(ymmA, ymmB, m);
3762 cc.evex().vfmadd231pd(zmmA, zmmB, m);
3763 cc.evex().vfmadd231ps(xmmA, xmmB, m);
3764 cc.evex().vfmadd231ps(ymmA, ymmB, m);
3765 cc.evex().vfmadd231ps(zmmA, zmmB, m);
3766 cc.evex().vfmadd231sd(xmmA, xmmB, m);
3767 cc.evex().vfmadd231ss(xmmA, xmmB, m);
3768 cc.evex().vfmaddsub132pd(xmmA, xmmB, m);
3769 cc.evex().vfmaddsub132pd(ymmA, ymmB, m);
3770 cc.evex().vfmaddsub132pd(zmmA, zmmB, m);
3771 cc.evex().vfmaddsub132ps(xmmA, xmmB, m);
3772 cc.evex().vfmaddsub132ps(ymmA, ymmB, m);
3773 cc.evex().vfmaddsub132ps(zmmA, zmmB, m);
3774 cc.evex().vfmaddsub213pd(xmmA, xmmB, m);
3775 cc.evex().vfmaddsub213pd(ymmA, ymmB, m);
3776 cc.evex().vfmaddsub213pd(zmmA, zmmB, m);
3777 cc.evex().vfmaddsub213ps(xmmA, xmmB, m);
3778 cc.evex().vfmaddsub213ps(ymmA, ymmB, m);
3779 cc.evex().vfmaddsub213ps(zmmA, zmmB, m);
3780 cc.evex().vfmaddsub231pd(xmmA, xmmB, m);
3781 cc.evex().vfmaddsub231pd(ymmA, ymmB, m);
3782 cc.evex().vfmaddsub231pd(zmmA, zmmB, m);
3783 cc.evex().vfmaddsub231ps(xmmA, xmmB, m);
3784 cc.evex().vfmaddsub231ps(ymmA, ymmB, m);
3785 cc.evex().vfmaddsub231ps(zmmA, zmmB, m);
3786 cc.evex().vfmsub132pd(xmmA, xmmB, m);
3787 cc.evex().vfmsub132pd(ymmA, ymmB, m);
3788 cc.evex().vfmsub132pd(zmmA, zmmB, m);
3789 cc.evex().vfmsub132ps(xmmA, xmmB, m);
3790 cc.evex().vfmsub132ps(ymmA, ymmB, m);
3791 cc.evex().vfmsub132ps(zmmA, zmmB, m);
3792 cc.evex().vfmsub132sd(xmmA, xmmB, m);
3793 cc.evex().vfmsub132ss(xmmA, xmmB, m);
3794 cc.evex().vfmsub213pd(xmmA, xmmB, m);
3795 cc.evex().vfmsub213pd(ymmA, ymmB, m);
3796 cc.evex().vfmsub213pd(zmmA, zmmB, m);
3797 cc.evex().vfmsub213ps(xmmA, xmmB, m);
3798 cc.evex().vfmsub213ps(ymmA, ymmB, m);
3799 cc.evex().vfmsub213ps(zmmA, zmmB, m);
3800 cc.evex().vfmsub213sd(xmmA, xmmB, m);
3801 cc.evex().vfmsub213ss(xmmA, xmmB, m);
3802 cc.evex().vfmsub231pd(xmmA, xmmB, m);
3803 cc.evex().vfmsub231pd(ymmA, ymmB, m);
3804 cc.evex().vfmsub231pd(zmmA, zmmB, m);
3805 cc.evex().vfmsub231ps(xmmA, xmmB, m);
3806 cc.evex().vfmsub231ps(ymmA, ymmB, m);
3807 cc.evex().vfmsub231ps(zmmA, zmmB, m);
3808 cc.evex().vfmsub231sd(xmmA, xmmB, m);
3809 cc.evex().vfmsub231ss(xmmA, xmmB, m);
3810 cc.evex().vfmsubadd132pd(xmmA, xmmB, m);
3811 cc.evex().vfmsubadd132pd(ymmA, ymmB, m);
3812 cc.evex().vfmsubadd132pd(zmmA, zmmB, m);
3813 cc.evex().vfmsubadd132ps(xmmA, xmmB, m);
3814 cc.evex().vfmsubadd132ps(ymmA, ymmB, m);
3815 cc.evex().vfmsubadd132ps(zmmA, zmmB, m);
3816 cc.evex().vfmsubadd213pd(xmmA, xmmB, m);
3817 cc.evex().vfmsubadd213pd(ymmA, ymmB, m);
3818 cc.evex().vfmsubadd213pd(zmmA, zmmB, m);
3819 cc.evex().vfmsubadd213ps(xmmA, xmmB, m);
3820 cc.evex().vfmsubadd213ps(ymmA, ymmB, m);
3821 cc.evex().vfmsubadd213ps(zmmA, zmmB, m);
3822 cc.evex().vfmsubadd231pd(xmmA, xmmB, m);
3823 cc.evex().vfmsubadd231pd(ymmA, ymmB, m);
3824 cc.evex().vfmsubadd231pd(zmmA, zmmB, m);
3825 cc.evex().vfmsubadd231ps(xmmA, xmmB, m);
3826 cc.evex().vfmsubadd231ps(ymmA, ymmB, m);
3827 cc.evex().vfmsubadd231ps(zmmA, zmmB, m);
3828 cc.evex().vfnmadd132pd(xmmA, xmmB, m);
3829 cc.evex().vfnmadd132pd(ymmA, ymmB, m);
3830 cc.evex().vfnmadd132pd(zmmA, zmmB, m);
3831 cc.evex().vfnmadd132ps(xmmA, xmmB, m);
3832 cc.evex().vfnmadd132ps(ymmA, ymmB, m);
3833 cc.evex().vfnmadd132ps(zmmA, zmmB, m);
3834 cc.evex().vfnmadd132sd(xmmA, xmmB, m);
3835 cc.evex().vfnmadd132ss(xmmA, xmmB, m);
3836 cc.evex().vfnmadd213pd(xmmA, xmmB, m);
3837 cc.evex().vfnmadd213pd(ymmA, ymmB, m);
3838 cc.evex().vfnmadd213pd(zmmA, zmmB, m);
3839 cc.evex().vfnmadd213ps(xmmA, xmmB, m);
3840 cc.evex().vfnmadd213ps(ymmA, ymmB, m);
3841 cc.evex().vfnmadd213ps(zmmA, zmmB, m);
3842 cc.evex().vfnmadd213sd(xmmA, xmmB, m);
3843 cc.evex().vfnmadd213ss(xmmA, xmmB, m);
3844 cc.evex().vfnmadd231pd(xmmA, xmmB, m);
3845 cc.evex().vfnmadd231pd(ymmA, ymmB, m);
3846 cc.evex().vfnmadd231pd(zmmA, zmmB, m);
3847 cc.evex().vfnmadd231ps(xmmA, xmmB, m);
3848 cc.evex().vfnmadd231ps(ymmA, ymmB, m);
3849 cc.evex().vfnmadd231ps(zmmA, zmmB, m);
3850 cc.evex().vfnmadd231sd(xmmA, xmmB, m);
3851 cc.evex().vfnmadd231ss(xmmA, xmmB, m);
3852 cc.evex().vfnmsub132pd(xmmA, xmmB, m);
3853 cc.evex().vfnmsub132pd(ymmA, ymmB, m);
3854 cc.evex().vfnmsub132pd(zmmA, zmmB, m);
3855 cc.evex().vfnmsub132ps(xmmA, xmmB, m);
3856 cc.evex().vfnmsub132ps(ymmA, ymmB, m);
3857 cc.evex().vfnmsub132ps(zmmA, zmmB, m);
3858 cc.evex().vfnmsub132sd(xmmA, xmmB, m);
3859 cc.evex().vfnmsub132ss(xmmA, xmmB, m);
3860 cc.evex().vfnmsub213pd(xmmA, xmmB, m);
3861 cc.evex().vfnmsub213pd(ymmA, ymmB, m);
3862 cc.evex().vfnmsub213pd(zmmA, zmmB, m);
3863 cc.evex().vfnmsub213ps(xmmA, xmmB, m);
3864 cc.evex().vfnmsub213ps(ymmA, ymmB, m);
3865 cc.evex().vfnmsub213ps(zmmA, zmmB, m);
3866 cc.evex().vfnmsub213sd(xmmA, xmmB, m);
3867 cc.evex().vfnmsub213ss(xmmA, xmmB, m);
3868 cc.evex().vfnmsub231pd(xmmA, xmmB, m);
3869 cc.evex().vfnmsub231pd(ymmA, ymmB, m);
3870 cc.evex().vfnmsub231pd(zmmA, zmmB, m);
3871 cc.evex().vfnmsub231ps(xmmA, xmmB, m);
3872 cc.evex().vfnmsub231ps(ymmA, ymmB, m);
3873 cc.evex().vfnmsub231ps(zmmA, zmmB, m);
3874 cc.evex().vfnmsub231sd(xmmA, xmmB, m);
3875 cc.evex().vfnmsub231ss(xmmA, xmmB, m);
3876 cc.evex().vfpclasspd(kA, m128, 0);
3877 cc.evex().vfpclasspd(kA, m256, 0);
3878 cc.evex().vfpclasspd(kA, m512, 0);
3879 cc.evex().vfpclassps(kA, m128, 0);
3880 cc.evex().vfpclassps(kA, m256, 0);
3881 cc.evex().vfpclassps(kA, m512, 0);
3882 cc.evex().vfpclasssd(kA, m, 0);
3883 cc.evex().vfpclassss(kA, m, 0);
3884 cc.evex().k(kA).vgatherdpd(xmmA, vx_ptr);
3885 cc.evex().k(kA).vgatherdpd(ymmA, vx_ptr);
3886 cc.evex().k(kA).vgatherdpd(zmmA, vy_ptr);
3887 cc.evex().k(kA).vgatherdps(xmmA, vx_ptr);
3888 cc.evex().k(kA).vgatherdps(ymmA, vy_ptr);
3889 cc.evex().k(kA).vgatherdps(zmmA, vz_ptr);
3890 cc.evex().k(kA).vgatherpf0dpd(vy_ptr);
3891 cc.evex().k(kA).vgatherpf0dps(vz_ptr);
3892 cc.evex().k(kA).vgatherpf0qpd(vz_ptr);
3893 cc.evex().k(kA).vgatherpf0qps(vz_ptr);
3894 cc.evex().k(kA).vgatherpf1dpd(vy_ptr);
3895 cc.evex().k(kA).vgatherpf1dps(vz_ptr);
3896 cc.evex().k(kA).vgatherpf1qpd(vz_ptr);
3897 cc.evex().k(kA).vgatherpf1qps(vz_ptr);
3898 cc.evex().k(kA).vgatherqpd(xmmA, vx_ptr);
3899 cc.evex().k(kA).vgatherqpd(ymmA, vy_ptr);
3900 cc.evex().k(kA).vgatherqpd(zmmA, vz_ptr);
3901 cc.evex().k(kA).vgatherqps(xmmA, vx_ptr);
3902 cc.evex().k(kA).vgatherqps(xmmA, vy_ptr);
3903 cc.evex().k(kA).vgatherqps(ymmA, vz_ptr);
3904 cc.evex().vgetexppd(xmmA, m);
3905 cc.evex().vgetexppd(ymmA, m);
3906 cc.evex().vgetexppd(zmmA, m);
3907 cc.evex().vgetexpps(xmmA, m);
3908 cc.evex().vgetexpps(ymmA, m);
3909 cc.evex().vgetexpps(zmmA, m);
3910 cc.evex().vgetexpsd(xmmA, xmmB, m);
3911 cc.evex().vgetexpss(xmmA, xmmB, m);
3912 cc.evex().vgetmantpd(xmmA, m, 0);
3913 cc.evex().vgetmantpd(ymmA, m, 0);
3914 cc.evex().vgetmantpd(zmmA, m, 0);
3915 cc.evex().vgetmantps(xmmA, m, 0);
3916 cc.evex().vgetmantps(ymmA, m, 0);
3917 cc.evex().vgetmantps(zmmA, m, 0);
3918 cc.evex().vgetmantsd(xmmA, xmmB, m, 0);
3919 cc.evex().vgetmantss(xmmA, xmmB, m, 0);
3920 cc.evex().vinsertf32x4(ymmA, ymmB, m, 0);
3921 cc.evex().vinsertf32x4(zmmA, zmmB, m, 0);
3922 cc.evex().vinsertf32x8(zmmA, zmmB, m, 0);
3923 cc.evex().vinsertf64x2(ymmA, ymmB, m, 0);
3924 cc.evex().vinsertf64x2(zmmA, zmmB, m, 0);
3925 cc.evex().vinsertf64x4(zmmA, zmmB, m, 0);
3926 cc.evex().vinserti32x4(ymmA, ymmB, m, 0);
3927 cc.evex().vinserti32x4(zmmA, zmmB, m, 0);
3928 cc.evex().vinserti32x8(zmmA, zmmB, m, 0);
3929 cc.evex().vinserti64x2(ymmA, ymmB, m, 0);
3930 cc.evex().vinserti64x2(zmmA, zmmB, m, 0);
3931 cc.evex().vinserti64x4(zmmA, zmmB, m, 0);
3932 cc.evex().vinsertps(xmmA, xmmB, m, 0);
3933 cc.evex().vmaxpd(xmmA, xmmB, m);
3934 cc.evex().vmaxpd(ymmA, ymmB, m);
3935 cc.evex().vmaxpd(zmmA, zmmB, m);
3936 cc.evex().vmaxps(xmmA, xmmB, m);
3937 cc.evex().vmaxps(ymmA, ymmB, m);
3938 cc.evex().vmaxps(zmmA, zmmB, m);
3939 cc.evex().vmaxsd(xmmA, xmmB, m);
3940 cc.evex().vmaxss(xmmA, xmmB, m);
3941 cc.evex().vminpd(xmmA, xmmB, m);
3942 cc.evex().vminpd(ymmA, ymmB, m);
3943 cc.evex().vminpd(zmmA, zmmB, m);
3944 cc.evex().vminps(xmmA, xmmB, m);
3945 cc.evex().vminps(ymmA, ymmB, m);
3946 cc.evex().vminps(zmmA, zmmB, m);
3947 cc.evex().vminsd(xmmA, xmmB, m);
3948 cc.evex().vminss(xmmA, xmmB, m);
3949 cc.evex().vmovapd(xmmA, m);
3950 cc.evex().vmovapd(m, xmmB);
3951 cc.evex().vmovapd(ymmA, m);
3952 cc.evex().vmovapd(m, ymmB);
3953 cc.evex().vmovapd(zmmA, m);
3954 cc.evex().vmovapd(m, zmmB);
3955 cc.evex().vmovaps(xmmA, m);
3956 cc.evex().vmovaps(m, xmmB);
3957 cc.evex().vmovaps(ymmA, m);
3958 cc.evex().vmovaps(m, ymmB);
3959 cc.evex().vmovaps(zmmA, m);
3960 cc.evex().vmovaps(m, zmmB);
3961 cc.evex().vmovd(m, xmmB);
3962 cc.evex().vmovd(xmmA, m);
3963 cc.evex().vmovddup(xmmA, m);
3964 cc.evex().vmovddup(ymmA, m);
3965 cc.evex().vmovddup(zmmA, m);
3966 cc.evex().vmovdqa32(xmmA, m);
3967 cc.evex().vmovdqa32(m, xmmB);
3968 cc.evex().vmovdqa32(ymmA, m);
3969 cc.evex().vmovdqa32(m, ymmB);
3970 cc.evex().vmovdqa32(zmmA, m);
3971 cc.evex().vmovdqa32(m, zmmB);
3972 cc.evex().vmovdqa64(xmmA, m);
3973 cc.evex().vmovdqa64(m, xmmB);
3974 cc.evex().vmovdqa64(ymmA, m);
3975 cc.evex().vmovdqa64(m, ymmB);
3976 cc.evex().vmovdqa64(zmmA, m);
3977 cc.evex().vmovdqa64(m, zmmB);
3978 cc.evex().vmovdqu16(xmmA, m);
3979 cc.evex().vmovdqu16(m, xmmB);
3980 cc.evex().vmovdqu16(ymmA, m);
3981 cc.evex().vmovdqu16(m, ymmB);
3982 cc.evex().vmovdqu16(zmmA, m);
3983 cc.evex().vmovdqu16(m, zmmB);
3984 cc.evex().vmovdqu32(xmmA, m);
3985 cc.evex().vmovdqu32(m, xmmB);
3986 cc.evex().vmovdqu32(ymmA, m);
3987 cc.evex().vmovdqu32(m, ymmB);
3988 cc.evex().vmovdqu32(zmmA, m);
3989 cc.evex().vmovdqu32(m, zmmB);
3990 cc.evex().vmovdqu64(xmmA, m);
3991 cc.evex().vmovdqu64(m, xmmB);
3992 cc.evex().vmovdqu64(ymmA, m);
3993 cc.evex().vmovdqu64(m, ymmB);
3994 cc.evex().vmovdqu64(zmmA, m);
3995 cc.evex().vmovdqu64(m, zmmB);
3996 cc.evex().vmovdqu8(xmmA, m);
3997 cc.evex().vmovdqu8(m, xmmB);
3998 cc.evex().vmovdqu8(ymmA, m);
3999 cc.evex().vmovdqu8(m, ymmB);
4000 cc.evex().vmovdqu8(zmmA, m);
4001 cc.evex().vmovdqu8(m, zmmB);
4002 cc.evex().vmovhpd(m, xmmB);
4003 cc.evex().vmovhpd(xmmA, xmmB, m);
4004 cc.evex().vmovhps(m, xmmB);
4005 cc.evex().vmovhps(xmmA, xmmB, m);
4006 cc.evex().vmovlpd(m, xmmB);
4007 cc.evex().vmovlpd(xmmA, xmmB, m);
4008 cc.evex().vmovlps(m, xmmB);
4009 cc.evex().vmovlps(xmmA, xmmB, m);
4010 cc.evex().vmovntdq(m, xmmB);
4011 cc.evex().vmovntdq(m, ymmB);
4012 cc.evex().vmovntdq(m, zmmB);
4013 cc.evex().vmovntdqa(xmmA, m);
4014 cc.evex().vmovntdqa(ymmA, m);
4015 cc.evex().vmovntdqa(zmmA, m);
4016 cc.evex().vmovntpd(m, xmmB);
4017 cc.evex().vmovntpd(m, ymmB);
4018 cc.evex().vmovntpd(m, zmmB);
4019 cc.evex().vmovntps(m, xmmB);
4020 cc.evex().vmovntps(m, ymmB);
4021 cc.evex().vmovntps(m, zmmB);
4022 cc.evex().vmovq(m, xmmB);
4023 cc.evex().vmovq(xmmA, m);
4024 cc.evex().vmovq(xmmA, m);
4025 cc.evex().vmovq(m, xmmB);
4026 cc.evex().vmovsd(m, xmmB);
4027 cc.evex().vmovsd(xmmA, m);
4028 cc.evex().vmovshdup(xmmA, m);
4029 cc.evex().vmovshdup(ymmA, m);
4030 cc.evex().vmovshdup(zmmA, m);
4031 cc.evex().vmovsldup(xmmA, m);
4032 cc.evex().vmovsldup(ymmA, m);
4033 cc.evex().vmovsldup(zmmA, m);
4034 cc.evex().vmovss(m, xmmB);
4035 cc.evex().vmovss(xmmA, m);
4036 cc.evex().vmovupd(xmmA, m);
4037 cc.evex().vmovupd(m, xmmB);
4038 cc.evex().vmovupd(ymmA, m);
4039 cc.evex().vmovupd(m, ymmB);
4040 cc.evex().vmovupd(zmmA, m);
4041 cc.evex().vmovupd(m, zmmB);
4042 cc.evex().vmovups(xmmA, m);
4043 cc.evex().vmovups(m, xmmB);
4044 cc.evex().vmovups(ymmA, m);
4045 cc.evex().vmovups(m, ymmB);
4046 cc.evex().vmovups(zmmA, m);
4047 cc.evex().vmovups(m, zmmB);
4048 cc.evex().vmulpd(xmmA, xmmB, m);
4049 cc.evex().vmulpd(ymmA, ymmB, m);
4050 cc.evex().vmulpd(zmmA, zmmB, m);
4051 cc.evex().vmulps(xmmA, xmmB, m);
4052 cc.evex().vmulps(ymmA, ymmB, m);
4053 cc.evex().vmulps(zmmA, zmmB, m);
4054 cc.evex().vmulsd(xmmA, xmmB, m);
4055 cc.evex().vmulss(xmmA, xmmB, m);
4056 cc.evex().vorpd(xmmA, xmmB, m);
4057 cc.evex().vorpd(ymmA, ymmB, m);
4058 cc.evex().vorpd(zmmA, zmmB, m);
4059 cc.evex().vorps(xmmA, xmmB, m);
4060 cc.evex().vorps(ymmA, ymmB, m);
4061 cc.evex().vorps(zmmA, zmmB, m);
4062 cc.evex().vpabsb(xmmA, m);
4063 cc.evex().vpabsb(ymmA, m);
4064 cc.evex().vpabsb(zmmA, m);
4065 cc.evex().vpabsd(xmmA, m);
4066 cc.evex().vpabsd(ymmA, m);
4067 cc.evex().vpabsd(zmmA, m);
4068 cc.evex().vpabsq(xmmA, m);
4069 cc.evex().vpabsq(ymmA, m);
4070 cc.evex().vpabsq(zmmA, m);
4071 cc.evex().vpabsw(xmmA, m);
4072 cc.evex().vpabsw(ymmA, m);
4073 cc.evex().vpabsw(zmmA, m);
4074 cc.evex().vpackssdw(xmmA, xmmB, m);
4075 cc.evex().vpackssdw(ymmA, ymmB, m);
4076 cc.evex().vpackssdw(zmmA, zmmB, m);
4077 cc.evex().vpacksswb(xmmA, xmmB, m);
4078 cc.evex().vpacksswb(ymmA, ymmB, m);
4079 cc.evex().vpacksswb(zmmA, zmmB, m);
4080 cc.evex().vpackusdw(xmmA, xmmB, m);
4081 cc.evex().vpackusdw(ymmA, ymmB, m);
4082 cc.evex().vpackusdw(zmmA, zmmB, m);
4083 cc.evex().vpackuswb(xmmA, xmmB, m);
4084 cc.evex().vpackuswb(ymmA, ymmB, m);
4085 cc.evex().vpackuswb(zmmA, zmmB, m);
4086 cc.evex().vpaddb(xmmA, xmmB, m);
4087 cc.evex().vpaddb(ymmA, ymmB, m);
4088 cc.evex().vpaddb(zmmA, zmmB, m);
4089 cc.evex().vpaddd(xmmA, xmmB, m);
4090 cc.evex().vpaddd(ymmA, ymmB, m);
4091 cc.evex().vpaddd(zmmA, zmmB, m);
4092 cc.evex().vpaddq(xmmA, xmmB, m);
4093 cc.evex().vpaddq(ymmA, ymmB, m);
4094 cc.evex().vpaddq(zmmA, zmmB, m);
4095 cc.evex().vpaddsb(xmmA, xmmB, m);
4096 cc.evex().vpaddsb(ymmA, ymmB, m);
4097 cc.evex().vpaddsb(zmmA, zmmB, m);
4098 cc.evex().vpaddsw(xmmA, xmmB, m);
4099 cc.evex().vpaddsw(ymmA, ymmB, m);
4100 cc.evex().vpaddsw(zmmA, zmmB, m);
4101 cc.evex().vpaddusb(xmmA, xmmB, m);
4102 cc.evex().vpaddusb(ymmA, ymmB, m);
4103 cc.evex().vpaddusb(zmmA, zmmB, m);
4104 cc.evex().vpaddusw(xmmA, xmmB, m);
4105 cc.evex().vpaddusw(ymmA, ymmB, m);
4106 cc.evex().vpaddusw(zmmA, zmmB, m);
4107 cc.evex().vpaddw(xmmA, xmmB, m);
4108 cc.evex().vpaddw(ymmA, ymmB, m);
4109 cc.evex().vpaddw(zmmA, zmmB, m);
4110 cc.evex().vpalignr(xmmA, xmmB, m, 0);
4111 cc.evex().vpalignr(ymmA, ymmB, m, 0);
4112 cc.evex().vpalignr(zmmA, zmmB, m, 0);
4113 cc.evex().vpandd(xmmA, xmmB, m);
4114 cc.evex().vpandd(ymmA, ymmB, m);
4115 cc.evex().vpandd(zmmA, zmmB, m);
4116 cc.evex().vpandnd(xmmA, xmmB, m);
4117 cc.evex().vpandnd(ymmA, ymmB, m);
4118 cc.evex().vpandnd(zmmA, zmmB, m);
4119 cc.evex().vpandnq(xmmA, xmmB, m);
4120 cc.evex().vpandnq(ymmA, ymmB, m);
4121 cc.evex().vpandnq(zmmA, zmmB, m);
4122 cc.evex().vpandq(xmmA, xmmB, m);
4123 cc.evex().vpandq(ymmA, ymmB, m);
4124 cc.evex().vpandq(zmmA, zmmB, m);
4125 cc.evex().vpavgb(xmmA, xmmB, m);
4126 cc.evex().vpavgb(ymmA, ymmB, m);
4127 cc.evex().vpavgb(zmmA, zmmB, m);
4128 cc.evex().vpavgw(xmmA, xmmB, m);
4129 cc.evex().vpavgw(ymmA, ymmB, m);
4130 cc.evex().vpavgw(zmmA, zmmB, m);
4131 cc.evex().vpblendmb(xmmA, xmmB, m);
4132 cc.evex().vpblendmb(ymmA, ymmB, m);
4133 cc.evex().vpblendmb(zmmA, zmmB, m);
4134 cc.evex().vpblendmd(xmmA, xmmB, m);
4135 cc.evex().vpblendmd(ymmA, ymmB, m);
4136 cc.evex().vpblendmd(zmmA, zmmB, m);
4137 cc.evex().vpblendmq(xmmA, xmmB, m);
4138 cc.evex().vpblendmq(ymmA, ymmB, m);
4139 cc.evex().vpblendmq(zmmA, zmmB, m);
4140 cc.evex().vpblendmw(xmmA, xmmB, m);
4141 cc.evex().vpblendmw(ymmA, ymmB, m);
4142 cc.evex().vpblendmw(zmmA, zmmB, m);
4143 cc.evex().vpbroadcastb(xmmA, m);
4144 cc.evex().vpbroadcastb(ymmA, m);
4145 cc.evex().vpbroadcastb(zmmA, m);
4146 cc.evex().vpbroadcastd(xmmA, m);
4147 cc.evex().vpbroadcastd(ymmA, m);
4148 cc.evex().vpbroadcastd(zmmA, m);
4149 cc.evex().vpbroadcastq(xmmA, m);
4150 cc.evex().vpbroadcastq(ymmA, m);
4151 cc.evex().vpbroadcastq(zmmA, m);
4152 cc.evex().vpbroadcastw(xmmA, m);
4153 cc.evex().vpbroadcastw(ymmA, m);
4154 cc.evex().vpbroadcastw(zmmA, m);
4155 cc.evex().vpcmpb(kA, xmmB, m, 0);
4156 cc.evex().vpcmpb(kA, ymmB, m, 0);
4157 cc.evex().vpcmpb(kA, zmmB, m, 0);
4158 cc.evex().vpcmpd(kA, xmmB, m, 0);
4159 cc.evex().vpcmpd(kA, ymmB, m, 0);
4160 cc.evex().vpcmpd(kA, zmmB, m, 0);
4161 cc.evex().vpcmpeqb(kA, xmmB, m);
4162 cc.evex().vpcmpeqb(kA, ymmB, m);
4163 cc.evex().vpcmpeqb(kA, zmmB, m);
4164 cc.evex().vpcmpeqd(kA, xmmB, m);
4165 cc.evex().vpcmpeqd(kA, ymmB, m);
4166 cc.evex().vpcmpeqd(kA, zmmB, m);
4167 cc.evex().vpcmpeqq(kA, xmmB, m);
4168 cc.evex().vpcmpeqq(kA, ymmB, m);
4169 cc.evex().vpcmpeqq(kA, zmmB, m);
4170 cc.evex().vpcmpeqw(kA, xmmB, m);
4171 cc.evex().vpcmpeqw(kA, ymmB, m);
4172 cc.evex().vpcmpeqw(kA, zmmB, m);
4173 cc.evex().vpcmpgtb(kA, xmmB, m);
4174 cc.evex().vpcmpgtb(kA, ymmB, m);
4175 cc.evex().vpcmpgtb(kA, zmmB, m);
4176 cc.evex().vpcmpgtd(kA, xmmB, m);
4177 cc.evex().vpcmpgtd(kA, ymmB, m);
4178 cc.evex().vpcmpgtd(kA, zmmB, m);
4179 cc.evex().vpcmpgtq(kA, xmmB, m);
4180 cc.evex().vpcmpgtq(kA, ymmB, m);
4181 cc.evex().vpcmpgtq(kA, zmmB, m);
4182 cc.evex().vpcmpgtw(kA, xmmB, m);
4183 cc.evex().vpcmpgtw(kA, ymmB, m);
4184 cc.evex().vpcmpgtw(kA, zmmB, m);
4185 cc.evex().vpcmpq(kA, xmmB, m, 0);
4186 cc.evex().vpcmpq(kA, ymmB, m, 0);
4187 cc.evex().vpcmpq(kA, zmmB, m, 0);
4188 cc.evex().vpcmpub(kA, xmmB, m, 0);
4189 cc.evex().vpcmpub(kA, ymmB, m, 0);
4190 cc.evex().vpcmpub(kA, zmmB, m, 0);
4191 cc.evex().vpcmpud(kA, xmmB, m, 0);
4192 cc.evex().vpcmpud(kA, ymmB, m, 0);
4193 cc.evex().vpcmpud(kA, zmmB, m, 0);
4194 cc.evex().vpcmpuq(kA, xmmB, m, 0);
4195 cc.evex().vpcmpuq(kA, ymmB, m, 0);
4196 cc.evex().vpcmpuq(kA, zmmB, m, 0);
4197 cc.evex().vpcmpuw(kA, xmmB, m, 0);
4198 cc.evex().vpcmpuw(kA, ymmB, m, 0);
4199 cc.evex().vpcmpuw(kA, zmmB, m, 0);
4200 cc.evex().vpcmpw(kA, xmmB, m, 0);
4201 cc.evex().vpcmpw(kA, ymmB, m, 0);
4202 cc.evex().vpcmpw(kA, zmmB, m, 0);
4203 cc.evex().vpcompressd(m, xmmB);
4204 cc.evex().vpcompressd(m, ymmB);
4205 cc.evex().vpcompressd(m, zmmB);
4206 cc.evex().vpcompressq(m, xmmB);
4207 cc.evex().vpcompressq(m, ymmB);
4208 cc.evex().vpcompressq(m, zmmB);
4209 cc.evex().vpconflictd(xmmA, m);
4210 cc.evex().vpconflictd(ymmA, m);
4211 cc.evex().vpconflictd(zmmA, m);
4212 cc.evex().vpconflictq(xmmA, m);
4213 cc.evex().vpconflictq(ymmA, m);
4214 cc.evex().vpconflictq(zmmA, m);
4215 cc.evex().vpermb(xmmA, xmmB, m);
4216 cc.evex().vpermb(ymmA, ymmB, m);
4217 cc.evex().vpermb(zmmA, zmmB, m);
4218 cc.evex().vpermd(ymmA, ymmB, m);
4219 cc.evex().vpermd(zmmA, zmmB, m);
4220 cc.evex().vpermi2b(xmmA, xmmB, m);
4221 cc.evex().vpermi2b(ymmA, ymmB, m);
4222 cc.evex().vpermi2b(zmmA, zmmB, m);
4223 cc.evex().vpermi2d(xmmA, xmmB, m);
4224 cc.evex().vpermi2d(ymmA, ymmB, m);
4225 cc.evex().vpermi2d(zmmA, zmmB, m);
4226 cc.evex().vpermi2pd(xmmA, xmmB, m);
4227 cc.evex().vpermi2pd(ymmA, ymmB, m);
4228 cc.evex().vpermi2pd(zmmA, zmmB, m);
4229 cc.evex().vpermi2ps(xmmA, xmmB, m);
4230 cc.evex().vpermi2ps(ymmA, ymmB, m);
4231 cc.evex().vpermi2ps(zmmA, zmmB, m);
4232 cc.evex().vpermi2q(xmmA, xmmB, m);
4233 cc.evex().vpermi2q(ymmA, ymmB, m);
4234 cc.evex().vpermi2q(zmmA, zmmB, m);
4235 cc.evex().vpermi2w(xmmA, xmmB, m);
4236 cc.evex().vpermi2w(ymmA, ymmB, m);
4237 cc.evex().vpermi2w(zmmA, zmmB, m);
4238 cc.evex().vpermilpd(xmmA, xmmB, m);
4239 cc.evex().vpermilpd(ymmA, ymmB, m);
4240 cc.evex().vpermilpd(zmmA, zmmB, m);
4241 cc.evex().vpermilpd(xmmA, m, 0);
4242 cc.evex().vpermilpd(ymmA, m, 0);
4243 cc.evex().vpermilpd(zmmA, m, 0);
4244 cc.evex().vpermilps(xmmA, xmmB, m);
4245 cc.evex().vpermilps(ymmA, ymmB, m);
4246 cc.evex().vpermilps(zmmA, zmmB, m);
4247 cc.evex().vpermilps(xmmA, m, 0);
4248 cc.evex().vpermilps(ymmA, m, 0);
4249 cc.evex().vpermilps(zmmA, m, 0);
4250 cc.evex().vpermq(ymmA, ymmB, m);
4251 cc.evex().vpermq(zmmA, zmmB, m);
4252 cc.evex().vpermq(ymmA, m, 0);
4253 cc.evex().vpermq(zmmA, m, 0);
4254 cc.evex().vpermt2b(xmmA, xmmB, m);
4255 cc.evex().vpermt2b(ymmA, ymmB, m);
4256 cc.evex().vpermt2b(zmmA, zmmB, m);
4257 cc.evex().vpermt2d(xmmA, xmmB, m);
4258 cc.evex().vpermt2d(ymmA, ymmB, m);
4259 cc.evex().vpermt2d(zmmA, zmmB, m);
4260 cc.evex().vpermt2pd(xmmA, xmmB, m);
4261 cc.evex().vpermt2pd(ymmA, ymmB, m);
4262 cc.evex().vpermt2pd(zmmA, zmmB, m);
4263 cc.evex().vpermt2ps(xmmA, xmmB, m);
4264 cc.evex().vpermt2ps(ymmA, ymmB, m);
4265 cc.evex().vpermt2ps(zmmA, zmmB, m);
4266 cc.evex().vpermt2q(xmmA, xmmB, m);
4267 cc.evex().vpermt2q(ymmA, ymmB, m);
4268 cc.evex().vpermt2q(zmmA, zmmB, m);
4269 cc.evex().vpermt2w(xmmA, xmmB, m);
4270 cc.evex().vpermt2w(ymmA, ymmB, m);
4271 cc.evex().vpermt2w(zmmA, zmmB, m);
4272 cc.evex().vpermw(xmmA, xmmB, m);
4273 cc.evex().vpermw(ymmA, ymmB, m);
4274 cc.evex().vpermw(zmmA, zmmB, m);
4275 cc.evex().vpexpandd(xmmA, m);
4276 cc.evex().vpexpandd(ymmA, m);
4277 cc.evex().vpexpandd(zmmA, m);
4278 cc.evex().vpexpandq(xmmA, m);
4279 cc.evex().vpexpandq(ymmA, m);
4280 cc.evex().vpexpandq(zmmA, m);
4281 cc.evex().vpextrb(m, xmmB, 0);
4282 cc.evex().vpextrd(m, xmmB, 0);
4283 if (cc.is64Bit()) cc.evex().vpextrq(m, xmmB, 0);
4284 cc.evex().vpextrw(m, xmmB, 0);
4285 cc.evex().k(kA).vpgatherdd(xmmA, vx_ptr);
4286 cc.evex().k(kA).vpgatherdd(ymmA, vy_ptr);
4287 cc.evex().k(kA).vpgatherdd(zmmA, vz_ptr);
4288 cc.evex().k(kA).vpgatherdq(xmmA, vx_ptr);
4289 cc.evex().k(kA).vpgatherdq(ymmA, vx_ptr);
4290 cc.evex().k(kA).vpgatherdq(zmmA, vy_ptr);
4291 cc.evex().k(kA).vpgatherqd(xmmA, vx_ptr);
4292 cc.evex().k(kA).vpgatherqd(xmmA, vy_ptr);
4293 cc.evex().k(kA).vpgatherqd(ymmA, vz_ptr);
4294 cc.evex().k(kA).vpgatherqq(xmmA, vx_ptr);
4295 cc.evex().k(kA).vpgatherqq(ymmA, vy_ptr);
4296 cc.evex().k(kA).vpgatherqq(zmmA, vz_ptr);
4297 cc.evex().vpinsrb(xmmA, xmmB, m, 0);
4298 cc.evex().vpinsrd(xmmA, xmmB, m, 0);
4299 if (cc.is64Bit()) cc.evex().vpinsrq(xmmA, xmmB, m, 0);
4300 cc.evex().vpinsrw(xmmA, xmmB, m, 0);
4301 cc.evex().vplzcntd(xmmA, m);
4302 cc.evex().vplzcntd(ymmA, m);
4303 cc.evex().vplzcntd(zmmA, m);
4304 cc.evex().vplzcntq(xmmA, m);
4305 cc.evex().vplzcntq(ymmA, m);
4306 cc.evex().vplzcntq(zmmA, m);
4307 cc.evex().vpmadd52huq(xmmA, xmmB, m);
4308 cc.evex().vpmadd52huq(ymmA, ymmB, m);
4309 cc.evex().vpmadd52huq(zmmA, zmmB, m);
4310 cc.evex().vpmadd52luq(xmmA, xmmB, m);
4311 cc.evex().vpmadd52luq(ymmA, ymmB, m);
4312 cc.evex().vpmadd52luq(zmmA, zmmB, m);
4313 cc.evex().vpmaddubsw(xmmA, xmmB, m);
4314 cc.evex().vpmaddubsw(ymmA, ymmB, m);
4315 cc.evex().vpmaddubsw(zmmA, zmmB, m);
4316 cc.evex().vpmaddwd(xmmA, xmmB, m);
4317 cc.evex().vpmaddwd(ymmA, ymmB, m);
4318 cc.evex().vpmaddwd(zmmA, zmmB, m);
4319 cc.evex().vpmaxsb(xmmA, xmmB, m);
4320 cc.evex().vpmaxsb(ymmA, ymmB, m);
4321 cc.evex().vpmaxsb(zmmA, zmmB, m);
4322 cc.evex().vpmaxsd(xmmA, xmmB, m);
4323 cc.evex().vpmaxsd(ymmA, ymmB, m);
4324 cc.evex().vpmaxsd(zmmA, zmmB, m);
4325 cc.evex().vpmaxsq(xmmA, xmmB, m);
4326 cc.evex().vpmaxsq(ymmA, ymmB, m);
4327 cc.evex().vpmaxsq(zmmA, zmmB, m);
4328 cc.evex().vpmaxsw(xmmA, xmmB, m);
4329 cc.evex().vpmaxsw(ymmA, ymmB, m);
4330 cc.evex().vpmaxsw(zmmA, zmmB, m);
4331 cc.evex().vpmaxub(xmmA, xmmB, m);
4332 cc.evex().vpmaxub(ymmA, ymmB, m);
4333 cc.evex().vpmaxub(zmmA, zmmB, m);
4334 cc.evex().vpmaxud(xmmA, xmmB, m);
4335 cc.evex().vpmaxud(ymmA, ymmB, m);
4336 cc.evex().vpmaxud(zmmA, zmmB, m);
4337 cc.evex().vpmaxuq(xmmA, xmmB, m);
4338 cc.evex().vpmaxuq(ymmA, ymmB, m);
4339 cc.evex().vpmaxuq(zmmA, zmmB, m);
4340 cc.evex().vpmaxuw(xmmA, xmmB, m);
4341 cc.evex().vpmaxuw(ymmA, ymmB, m);
4342 cc.evex().vpmaxuw(zmmA, zmmB, m);
4343 cc.evex().vpminsb(xmmA, xmmB, m);
4344 cc.evex().vpminsb(ymmA, ymmB, m);
4345 cc.evex().vpminsb(zmmA, zmmB, m);
4346 cc.evex().vpminsd(xmmA, xmmB, m);
4347 cc.evex().vpminsd(ymmA, ymmB, m);
4348 cc.evex().vpminsd(zmmA, zmmB, m);
4349 cc.evex().vpminsq(xmmA, xmmB, m);
4350 cc.evex().vpminsq(ymmA, ymmB, m);
4351 cc.evex().vpminsq(zmmA, zmmB, m);
4352 cc.evex().vpminsw(xmmA, xmmB, m);
4353 cc.evex().vpminsw(ymmA, ymmB, m);
4354 cc.evex().vpminsw(zmmA, zmmB, m);
4355 cc.evex().vpminub(xmmA, xmmB, m);
4356 cc.evex().vpminub(ymmA, ymmB, m);
4357 cc.evex().vpminub(zmmA, zmmB, m);
4358 cc.evex().vpminud(xmmA, xmmB, m);
4359 cc.evex().vpminud(ymmA, ymmB, m);
4360 cc.evex().vpminud(zmmA, zmmB, m);
4361 cc.evex().vpminuq(xmmA, xmmB, m);
4362 cc.evex().vpminuq(ymmA, ymmB, m);
4363 cc.evex().vpminuq(zmmA, zmmB, m);
4364 cc.evex().vpminuw(xmmA, xmmB, m);
4365 cc.evex().vpminuw(ymmA, ymmB, m);
4366 cc.evex().vpminuw(zmmA, zmmB, m);
4367 cc.evex().vpmovdb(m, xmmB);
4368 cc.evex().vpmovdb(m, ymmB);
4369 cc.evex().vpmovdb(m, zmmB);
4370 cc.evex().vpmovdw(m, xmmB);
4371 cc.evex().vpmovdw(m, ymmB);
4372 cc.evex().vpmovdw(m, zmmB);
4373 cc.evex().vpmovqb(m, xmmB);
4374 cc.evex().vpmovqb(m, ymmB);
4375 cc.evex().vpmovqb(m, zmmB);
4376 cc.evex().vpmovqd(m, xmmB);
4377 cc.evex().vpmovqd(m, ymmB);
4378 cc.evex().vpmovqd(m, zmmB);
4379 cc.evex().vpmovqw(m, xmmB);
4380 cc.evex().vpmovqw(m, ymmB);
4381 cc.evex().vpmovqw(m, zmmB);
4382 cc.evex().vpmovsdb(m, xmmB);
4383 cc.evex().vpmovsdb(m, ymmB);
4384 cc.evex().vpmovsdb(m, zmmB);
4385 cc.evex().vpmovsdw(m, xmmB);
4386 cc.evex().vpmovsdw(m, ymmB);
4387 cc.evex().vpmovsdw(m, zmmB);
4388 cc.evex().vpmovsqb(m, xmmB);
4389 cc.evex().vpmovsqb(m, ymmB);
4390 cc.evex().vpmovsqb(m, zmmB);
4391 cc.evex().vpmovsqd(m, xmmB);
4392 cc.evex().vpmovsqd(m, ymmB);
4393 cc.evex().vpmovsqd(m, zmmB);
4394 cc.evex().vpmovsqw(m, xmmB);
4395 cc.evex().vpmovsqw(m, ymmB);
4396 cc.evex().vpmovsqw(m, zmmB);
4397 cc.evex().vpmovswb(m, xmmB);
4398 cc.evex().vpmovswb(m, ymmB);
4399 cc.evex().vpmovswb(m, zmmB);
4400 cc.evex().vpmovsxbd(xmmA, m);
4401 cc.evex().vpmovsxbd(ymmA, m);
4402 cc.evex().vpmovsxbd(zmmA, m);
4403 cc.evex().vpmovsxbq(xmmA, m);
4404 cc.evex().vpmovsxbq(ymmA, m);
4405 cc.evex().vpmovsxbq(zmmA, m);
4406 cc.evex().vpmovsxbw(xmmA, m);
4407 cc.evex().vpmovsxbw(ymmA, m);
4408 cc.evex().vpmovsxbw(zmmA, m);
4409 cc.evex().vpmovsxdq(xmmA, m);
4410 cc.evex().vpmovsxdq(ymmA, m);
4411 cc.evex().vpmovsxdq(zmmA, m);
4412 cc.evex().vpmovsxwd(xmmA, m);
4413 cc.evex().vpmovsxwd(ymmA, m);
4414 cc.evex().vpmovsxwd(zmmA, m);
4415 cc.evex().vpmovsxwq(xmmA, m);
4416 cc.evex().vpmovsxwq(ymmA, m);
4417 cc.evex().vpmovsxwq(zmmA, m);
4418 cc.evex().vpmovusdb(m, xmmB);
4419 cc.evex().vpmovusdb(m, ymmB);
4420 cc.evex().vpmovusdb(m, zmmB);
4421 cc.evex().vpmovusdw(m, xmmB);
4422 cc.evex().vpmovusdw(m, ymmB);
4423 cc.evex().vpmovusdw(m, zmmB);
4424 cc.evex().vpmovusqb(m, xmmB);
4425 cc.evex().vpmovusqb(m, ymmB);
4426 cc.evex().vpmovusqb(m, zmmB);
4427 cc.evex().vpmovusqd(m, xmmB);
4428 cc.evex().vpmovusqd(m, ymmB);
4429 cc.evex().vpmovusqd(m, zmmB);
4430 cc.evex().vpmovusqw(m, xmmB);
4431 cc.evex().vpmovusqw(m, ymmB);
4432 cc.evex().vpmovusqw(m, zmmB);
4433 cc.evex().vpmovuswb(m, xmmB);
4434 cc.evex().vpmovuswb(m, ymmB);
4435 cc.evex().vpmovuswb(m, zmmB);
4436 cc.evex().vpmovwb(m, xmmB);
4437 cc.evex().vpmovwb(m, ymmB);
4438 cc.evex().vpmovwb(m, zmmB);
4439 cc.evex().vpmovzxbd(xmmA, m);
4440 cc.evex().vpmovzxbd(ymmA, m);
4441 cc.evex().vpmovzxbd(zmmA, m);
4442 cc.evex().vpmovzxbq(xmmA, m);
4443 cc.evex().vpmovzxbq(ymmA, m);
4444 cc.evex().vpmovzxbq(zmmA, m);
4445 cc.evex().vpmovzxbw(xmmA, m);
4446 cc.evex().vpmovzxbw(ymmA, m);
4447 cc.evex().vpmovzxbw(zmmA, m);
4448 cc.evex().vpmovzxdq(xmmA, m);
4449 cc.evex().vpmovzxdq(ymmA, m);
4450 cc.evex().vpmovzxdq(zmmA, m);
4451 cc.evex().vpmovzxwd(xmmA, m);
4452 cc.evex().vpmovzxwd(ymmA, m);
4453 cc.evex().vpmovzxwd(zmmA, m);
4454 cc.evex().vpmovzxwq(xmmA, m);
4455 cc.evex().vpmovzxwq(ymmA, m);
4456 cc.evex().vpmovzxwq(zmmA, m);
4457 cc.evex().vpmuldq(xmmA, xmmB, m);
4458 cc.evex().vpmuldq(ymmA, ymmB, m);
4459 cc.evex().vpmuldq(zmmA, zmmB, m);
4460 cc.evex().vpmulhrsw(xmmA, xmmB, m);
4461 cc.evex().vpmulhrsw(ymmA, ymmB, m);
4462 cc.evex().vpmulhrsw(zmmA, zmmB, m);
4463 cc.evex().vpmulhuw(xmmA, xmmB, m);
4464 cc.evex().vpmulhuw(ymmA, ymmB, m);
4465 cc.evex().vpmulhuw(zmmA, zmmB, m);
4466 cc.evex().vpmulhw(xmmA, xmmB, m);
4467 cc.evex().vpmulhw(ymmA, ymmB, m);
4468 cc.evex().vpmulhw(zmmA, zmmB, m);
4469 cc.evex().vpmulld(xmmA, xmmB, m);
4470 cc.evex().vpmulld(ymmA, ymmB, m);
4471 cc.evex().vpmulld(zmmA, zmmB, m);
4472 cc.evex().vpmullq(xmmA, xmmB, m);
4473 cc.evex().vpmullq(ymmA, ymmB, m);
4474 cc.evex().vpmullq(zmmA, zmmB, m);
4475 cc.evex().vpmullw(xmmA, xmmB, m);
4476 cc.evex().vpmullw(ymmA, ymmB, m);
4477 cc.evex().vpmullw(zmmA, zmmB, m);
4478 cc.evex().vpmultishiftqb(xmmA, xmmB, m);
4479 cc.evex().vpmultishiftqb(ymmA, ymmB, m);
4480 cc.evex().vpmultishiftqb(zmmA, zmmB, m);
4481 cc.evex().vpmuludq(xmmA, xmmB, m);
4482 cc.evex().vpmuludq(ymmA, ymmB, m);
4483 cc.evex().vpmuludq(zmmA, zmmB, m);
4484 cc.evex().vpopcntd(zmmA, m);
4485 cc.evex().vpopcntq(zmmA, m);
4486 cc.evex().vpord(xmmA, xmmB, m);
4487 cc.evex().vpord(ymmA, ymmB, m);
4488 cc.evex().vpord(zmmA, zmmB, m);
4489 cc.evex().vporq(xmmA, xmmB, m);
4490 cc.evex().vporq(ymmA, ymmB, m);
4491 cc.evex().vporq(zmmA, zmmB, m);
4492 cc.evex().vprold(xmmA, m, 0);
4493 cc.evex().vprold(ymmA, m, 0);
4494 cc.evex().vprold(zmmA, m, 0);
4495 cc.evex().vprolq(xmmA, m, 0);
4496 cc.evex().vprolq(ymmA, m, 0);
4497 cc.evex().vprolq(zmmA, m, 0);
4498 cc.evex().vprolvd(xmmA, xmmB, m);
4499 cc.evex().vprolvd(ymmA, ymmB, m);
4500 cc.evex().vprolvd(zmmA, zmmB, m);
4501 cc.evex().vprolvq(xmmA, xmmB, m);
4502 cc.evex().vprolvq(ymmA, ymmB, m);
4503 cc.evex().vprolvq(zmmA, zmmB, m);
4504 cc.evex().vprord(xmmA, m, 0);
4505 cc.evex().vprord(ymmA, m, 0);
4506 cc.evex().vprord(zmmA, m, 0);
4507 cc.evex().vprorq(xmmA, m, 0);
4508 cc.evex().vprorq(ymmA, m, 0);
4509 cc.evex().vprorq(zmmA, m, 0);
4510 cc.evex().vprorvd(xmmA, xmmB, m);
4511 cc.evex().vprorvd(ymmA, ymmB, m);
4512 cc.evex().vprorvd(zmmA, zmmB, m);
4513 cc.evex().vprorvq(xmmA, xmmB, m);
4514 cc.evex().vprorvq(ymmA, ymmB, m);
4515 cc.evex().vprorvq(zmmA, zmmB, m);
4516 cc.evex().vpsadbw(xmmA, xmmB, m);
4517 cc.evex().vpsadbw(ymmA, ymmB, m);
4518 cc.evex().vpsadbw(zmmA, zmmB, m);
4519 cc.evex().k(kA).vpscatterdd(vx_ptr, xmmB);
4520 cc.evex().k(kA).vpscatterdd(vy_ptr, ymmB);
4521 cc.evex().k(kA).vpscatterdd(vz_ptr, zmmB);
4522 cc.evex().k(kA).vpscatterdq(vx_ptr, xmmB);
4523 cc.evex().k(kA).vpscatterdq(vx_ptr, ymmB);
4524 cc.evex().k(kA).vpscatterdq(vy_ptr, zmmB);
4525 cc.evex().k(kA).vpscatterqd(vx_ptr, xmmB);
4526 cc.evex().k(kA).vpscatterqd(vy_ptr, xmmB);
4527 cc.evex().k(kA).vpscatterqd(vz_ptr, ymmB);
4528 cc.evex().k(kA).vpscatterqq(vx_ptr, xmmB);
4529 cc.evex().k(kA).vpscatterqq(vy_ptr, ymmB);
4530 cc.evex().k(kA).vpscatterqq(vz_ptr, zmmB);
4531 cc.evex().vpshufb(xmmA, xmmB, m);
4532 cc.evex().vpshufb(ymmA, ymmB, m);
4533 cc.evex().vpshufb(zmmA, zmmB, m);
4534 cc.evex().vpshufd(xmmA, m, 0);
4535 cc.evex().vpshufd(ymmA, m, 0);
4536 cc.evex().vpshufd(zmmA, m, 0);
4537 cc.evex().vpshufhw(xmmA, m, 0);
4538 cc.evex().vpshufhw(ymmA, m, 0);
4539 cc.evex().vpshufhw(zmmA, m, 0);
4540 cc.evex().vpshuflw(xmmA, m, 0);
4541 cc.evex().vpshuflw(ymmA, m, 0);
4542 cc.evex().vpshuflw(zmmA, m, 0);
4543 cc.evex().vpslld(xmmA, xmmB, m);
4544 cc.evex().vpslld(xmmA, m, 0);
4545 cc.evex().vpslld(ymmA, ymmB, m);
4546 cc.evex().vpslld(ymmA, m, 0);
4547 cc.evex().vpslld(zmmA, zmmB, m);
4548 cc.evex().vpslld(zmmA, m, 0);
4549 cc.evex().vpslldq(xmmA, m, 0);
4550 cc.evex().vpslldq(ymmA, m, 0);
4551 cc.evex().vpslldq(zmmA, m, 0);
4552 cc.evex().vpsllq(xmmA, xmmB, m);
4553 cc.evex().vpsllq(xmmA, m, 0);
4554 cc.evex().vpsllq(ymmA, ymmB, m);
4555 cc.evex().vpsllq(ymmA, m, 0);
4556 cc.evex().vpsllq(zmmA, zmmB, m);
4557 cc.evex().vpsllq(zmmA, m, 0);
4558 cc.evex().vpsllvd(xmmA, xmmB, m);
4559 cc.evex().vpsllvd(ymmA, ymmB, m);
4560 cc.evex().vpsllvd(zmmA, zmmB, m);
4561 cc.evex().vpsllvq(xmmA, xmmB, m);
4562 cc.evex().vpsllvq(ymmA, ymmB, m);
4563 cc.evex().vpsllvq(zmmA, zmmB, m);
4564 cc.evex().vpsllvw(xmmA, xmmB, m);
4565 cc.evex().vpsllvw(ymmA, ymmB, m);
4566 cc.evex().vpsllvw(zmmA, zmmB, m);
4567 cc.evex().vpsllw(xmmA, xmmB, m);
4568 cc.evex().vpsllw(xmmA, m, 0);
4569 cc.evex().vpsllw(ymmA, ymmB, m);
4570 cc.evex().vpsllw(ymmA, m, 0);
4571 cc.evex().vpsllw(zmmA, zmmB, m);
4572 cc.evex().vpsllw(zmmA, m, 0);
4573 cc.evex().vpsrad(xmmA, xmmB, m);
4574 cc.evex().vpsrad(xmmA, m, 0);
4575 cc.evex().vpsrad(ymmA, ymmB, m);
4576 cc.evex().vpsrad(ymmA, m, 0);
4577 cc.evex().vpsrad(zmmA, zmmB, m);
4578 cc.evex().vpsrad(zmmA, m, 0);
4579 cc.evex().vpsraq(xmmA, xmmB, m);
4580 cc.evex().vpsraq(xmmA, m, 0);
4581 cc.evex().vpsraq(ymmA, ymmB, m);
4582 cc.evex().vpsraq(ymmA, m, 0);
4583 cc.evex().vpsraq(zmmA, zmmB, m);
4584 cc.evex().vpsraq(zmmA, m, 0);
4585 cc.evex().vpsravd(xmmA, xmmB, m);
4586 cc.evex().vpsravd(ymmA, ymmB, m);
4587 cc.evex().vpsravd(zmmA, zmmB, m);
4588 cc.evex().vpsravq(xmmA, xmmB, m);
4589 cc.evex().vpsravq(ymmA, ymmB, m);
4590 cc.evex().vpsravq(zmmA, zmmB, m);
4591 cc.evex().vpsravw(xmmA, xmmB, m);
4592 cc.evex().vpsravw(ymmA, ymmB, m);
4593 cc.evex().vpsravw(zmmA, zmmB, m);
4594 cc.evex().vpsraw(xmmA, xmmB, m);
4595 cc.evex().vpsraw(xmmA, m, 0);
4596 cc.evex().vpsraw(ymmA, ymmB, m);
4597 cc.evex().vpsraw(ymmA, m, 0);
4598 cc.evex().vpsraw(zmmA, zmmB, m);
4599 cc.evex().vpsraw(zmmA, m, 0);
4600 cc.evex().vpsrld(xmmA, xmmB, m);
4601 cc.evex().vpsrld(xmmA, m, 0);
4602 cc.evex().vpsrld(ymmA, ymmB, m);
4603 cc.evex().vpsrld(ymmA, m, 0);
4604 cc.evex().vpsrld(zmmA, zmmB, m);
4605 cc.evex().vpsrld(zmmA, m, 0);
4606 cc.evex().vpsrldq(xmmA, m, 0);
4607 cc.evex().vpsrldq(ymmA, m, 0);
4608 cc.evex().vpsrldq(zmmA, m, 0);
4609 cc.evex().vpsrlq(xmmA, xmmB, m);
4610 cc.evex().vpsrlq(xmmA, m, 0);
4611 cc.evex().vpsrlq(ymmA, ymmB, m);
4612 cc.evex().vpsrlq(ymmA, m, 0);
4613 cc.evex().vpsrlq(zmmA, zmmB, m);
4614 cc.evex().vpsrlq(zmmA, m, 0);
4615 cc.evex().vpsrlvd(xmmA, xmmB, m);
4616 cc.evex().vpsrlvd(ymmA, ymmB, m);
4617 cc.evex().vpsrlvd(zmmA, zmmB, m);
4618 cc.evex().vpsrlvq(xmmA, xmmB, m);
4619 cc.evex().vpsrlvq(ymmA, ymmB, m);
4620 cc.evex().vpsrlvq(zmmA, zmmB, m);
4621 cc.evex().vpsrlvw(xmmA, xmmB, m);
4622 cc.evex().vpsrlvw(ymmA, ymmB, m);
4623 cc.evex().vpsrlvw(zmmA, zmmB, m);
4624 cc.evex().vpsrlw(xmmA, xmmB, m);
4625 cc.evex().vpsrlw(xmmA, m, 0);
4626 cc.evex().vpsrlw(ymmA, ymmB, m);
4627 cc.evex().vpsrlw(ymmA, m, 0);
4628 cc.evex().vpsrlw(zmmA, zmmB, m);
4629 cc.evex().vpsrlw(zmmA, m, 0);
4630 cc.evex().vpsubb(xmmA, xmmB, m);
4631 cc.evex().vpsubb(ymmA, ymmB, m);
4632 cc.evex().vpsubb(zmmA, zmmB, m);
4633 cc.evex().vpsubd(xmmA, xmmB, m);
4634 cc.evex().vpsubd(ymmA, ymmB, m);
4635 cc.evex().vpsubd(zmmA, zmmB, m);
4636 cc.evex().vpsubq(xmmA, xmmB, m);
4637 cc.evex().vpsubq(ymmA, ymmB, m);
4638 cc.evex().vpsubq(zmmA, zmmB, m);
4639 cc.evex().vpsubsb(xmmA, xmmB, m);
4640 cc.evex().vpsubsb(ymmA, ymmB, m);
4641 cc.evex().vpsubsb(zmmA, zmmB, m);
4642 cc.evex().vpsubsw(xmmA, xmmB, m);
4643 cc.evex().vpsubsw(ymmA, ymmB, m);
4644 cc.evex().vpsubsw(zmmA, zmmB, m);
4645 cc.evex().vpsubusb(xmmA, xmmB, m);
4646 cc.evex().vpsubusb(ymmA, ymmB, m);
4647 cc.evex().vpsubusb(zmmA, zmmB, m);
4648 cc.evex().vpsubusw(xmmA, xmmB, m);
4649 cc.evex().vpsubusw(ymmA, ymmB, m);
4650 cc.evex().vpsubusw(zmmA, zmmB, m);
4651 cc.evex().vpsubw(xmmA, xmmB, m);
4652 cc.evex().vpsubw(ymmA, ymmB, m);
4653 cc.evex().vpsubw(zmmA, zmmB, m);
4654 cc.evex().vpternlogd(xmmA, xmmB, m, 0);
4655 cc.evex().vpternlogd(ymmA, ymmB, m, 0);
4656 cc.evex().vpternlogd(zmmA, zmmB, m, 0);
4657 cc.evex().vpternlogq(xmmA, xmmB, m, 0);
4658 cc.evex().vpternlogq(ymmA, ymmB, m, 0);
4659 cc.evex().vpternlogq(zmmA, zmmB, m, 0);
4660 cc.evex().vptestmb(kA, xmmB, m);
4661 cc.evex().vptestmb(kA, ymmB, m);
4662 cc.evex().vptestmb(kA, zmmB, m);
4663 cc.evex().vptestmd(kA, xmmB, m);
4664 cc.evex().vptestmd(kA, ymmB, m);
4665 cc.evex().vptestmd(kA, zmmB, m);
4666 cc.evex().vptestmq(kA, xmmB, m);
4667 cc.evex().vptestmq(kA, ymmB, m);
4668 cc.evex().vptestmq(kA, zmmB, m);
4669 cc.evex().vptestmw(kA, xmmB, m);
4670 cc.evex().vptestmw(kA, ymmB, m);
4671 cc.evex().vptestmw(kA, zmmB, m);
4672 cc.evex().vptestnmb(kA, xmmB, m);
4673 cc.evex().vptestnmb(kA, ymmB, m);
4674 cc.evex().vptestnmb(kA, zmmB, m);
4675 cc.evex().vptestnmd(kA, xmmB, m);
4676 cc.evex().vptestnmd(kA, ymmB, m);
4677 cc.evex().vptestnmd(kA, zmmB, m);
4678 cc.evex().vptestnmq(kA, xmmB, m);
4679 cc.evex().vptestnmq(kA, ymmB, m);
4680 cc.evex().vptestnmq(kA, zmmB, m);
4681 cc.evex().vptestnmw(kA, xmmB, m);
4682 cc.evex().vptestnmw(kA, ymmB, m);
4683 cc.evex().vptestnmw(kA, zmmB, m);
4684 cc.evex().vpunpckhbw(xmmA, xmmB, m);
4685 cc.evex().vpunpckhbw(ymmA, ymmB, m);
4686 cc.evex().vpunpckhbw(zmmA, zmmB, m);
4687 cc.evex().vpunpckhdq(xmmA, xmmB, m);
4688 cc.evex().vpunpckhdq(ymmA, ymmB, m);
4689 cc.evex().vpunpckhdq(zmmA, zmmB, m);
4690 cc.evex().vpunpckhqdq(xmmA, xmmB, m);
4691 cc.evex().vpunpckhqdq(ymmA, ymmB, m);
4692 cc.evex().vpunpckhqdq(zmmA, zmmB, m);
4693 cc.evex().vpunpckhwd(xmmA, xmmB, m);
4694 cc.evex().vpunpckhwd(ymmA, ymmB, m);
4695 cc.evex().vpunpckhwd(zmmA, zmmB, m);
4696 cc.evex().vpunpcklbw(xmmA, xmmB, m);
4697 cc.evex().vpunpcklbw(ymmA, ymmB, m);
4698 cc.evex().vpunpcklbw(zmmA, zmmB, m);
4699 cc.evex().vpunpckldq(xmmA, xmmB, m);
4700 cc.evex().vpunpckldq(ymmA, ymmB, m);
4701 cc.evex().vpunpckldq(zmmA, zmmB, m);
4702 cc.evex().vpunpcklqdq(xmmA, xmmB, m);
4703 cc.evex().vpunpcklqdq(ymmA, ymmB, m);
4704 cc.evex().vpunpcklqdq(zmmA, zmmB, m);
4705 cc.evex().vpunpcklwd(xmmA, xmmB, m);
4706 cc.evex().vpunpcklwd(ymmA, ymmB, m);
4707 cc.evex().vpunpcklwd(zmmA, zmmB, m);
4708 cc.evex().vpxord(xmmA, xmmB, m);
4709 cc.evex().vpxord(ymmA, ymmB, m);
4710 cc.evex().vpxord(zmmA, zmmB, m);
4711 cc.evex().vpxorq(xmmA, xmmB, m);
4712 cc.evex().vpxorq(ymmA, ymmB, m);
4713 cc.evex().vpxorq(zmmA, zmmB, m);
4714 cc.evex().vrangepd(xmmA, xmmB, m, 0);
4715 cc.evex().vrangepd(ymmA, ymmB, m, 0);
4716 cc.evex().vrangepd(zmmA, zmmB, m, 0);
4717 cc.evex().vrangeps(xmmA, xmmB, m, 0);
4718 cc.evex().vrangeps(ymmA, ymmB, m, 0);
4719 cc.evex().vrangeps(zmmA, zmmB, m, 0);
4720 cc.evex().vrangesd(xmmA, xmmB, m, 0);
4721 cc.evex().vrangess(xmmA, xmmB, m, 0);
4722 cc.evex().vrcp14pd(xmmA, m);
4723 cc.evex().vrcp14pd(ymmA, m);
4724 cc.evex().vrcp14pd(zmmA, m);
4725 cc.evex().vrcp14ps(xmmA, m);
4726 cc.evex().vrcp14ps(ymmA, m);
4727 cc.evex().vrcp14ps(zmmA, m);
4728 cc.evex().vrcp14sd(xmmA, xmmB, m);
4729 cc.evex().vrcp14ss(xmmA, xmmB, m);
4730 cc.evex().vrcp28pd(zmmA, m);
4731 cc.evex().vrcp28ps(zmmA, m);
4732 cc.evex().vrcp28sd(xmmA, xmmB, m);
4733 cc.evex().vrcp28ss(xmmA, xmmB, m);
4734 cc.evex().vreducepd(xmmA, m, 0);
4735 cc.evex().vreducepd(ymmA, m, 0);
4736 cc.evex().vreducepd(zmmA, m, 0);
4737 cc.evex().vreduceps(xmmA, m, 0);
4738 cc.evex().vreduceps(ymmA, m, 0);
4739 cc.evex().vreduceps(zmmA, m, 0);
4740 cc.evex().vreducesd(xmmA, xmmB, m, 0);
4741 cc.evex().vreducess(xmmA, xmmB, m, 0);
4742 cc.evex().vrndscalepd(xmmA, m, 0);
4743 cc.evex().vrndscalepd(ymmA, m, 0);
4744 cc.evex().vrndscalepd(zmmA, m, 0);
4745 cc.evex().vrndscaleps(xmmA, m, 0);
4746 cc.evex().vrndscaleps(ymmA, m, 0);
4747 cc.evex().vrndscaleps(zmmA, m, 0);
4748 cc.evex().vrndscalesd(xmmA, xmmB, m, 0);
4749 cc.evex().vrndscaless(xmmA, xmmB, m, 0);
4750 cc.evex().vrsqrt14pd(xmmA, m);
4751 cc.evex().vrsqrt14pd(ymmA, m);
4752 cc.evex().vrsqrt14pd(zmmA, m);
4753 cc.evex().vrsqrt14ps(xmmA, m);
4754 cc.evex().vrsqrt14ps(ymmA, m);
4755 cc.evex().vrsqrt14ps(zmmA, m);
4756 cc.evex().vrsqrt14sd(xmmA, xmmB, m);
4757 cc.evex().vrsqrt14ss(xmmA, xmmB, m);
4758 cc.evex().vrsqrt28pd(zmmA, m);
4759 cc.evex().vrsqrt28ps(zmmA, m);
4760 cc.evex().vrsqrt28sd(xmmA, xmmB, m);
4761 cc.evex().vrsqrt28ss(xmmA, xmmB, m);
4762 cc.evex().vscalefpd(xmmA, xmmB, m);
4763 cc.evex().vscalefpd(ymmA, ymmB, m);
4764 cc.evex().vscalefpd(zmmA, zmmB, m);
4765 cc.evex().vscalefps(xmmA, xmmB, m);
4766 cc.evex().vscalefps(ymmA, ymmB, m);
4767 cc.evex().vscalefps(zmmA, zmmB, m);
4768 cc.evex().vscalefsd(xmmA, xmmB, m);
4769 cc.evex().vscalefss(xmmA, xmmB, m);
4770 cc.evex().k(kA).vscatterdpd(vx_ptr, xmmB);
4771 cc.evex().k(kA).vscatterdpd(vx_ptr, ymmB);
4772 cc.evex().k(kA).vscatterdpd(vy_ptr, zmmB);
4773 cc.evex().k(kA).vscatterdps(vx_ptr, xmmB);
4774 cc.evex().k(kA).vscatterdps(vy_ptr, ymmB);
4775 cc.evex().k(kA).vscatterdps(vz_ptr, zmmB);
4776 cc.evex().k(kA).vscatterpf0dpd(vy_ptr);
4777 cc.evex().k(kA).vscatterpf0dps(vz_ptr);
4778 cc.evex().k(kA).vscatterpf0qpd(vz_ptr);
4779 cc.evex().k(kA).vscatterpf0qps(vz_ptr);
4780 cc.evex().k(kA).vscatterpf1dpd(vy_ptr);
4781 cc.evex().k(kA).vscatterpf1dps(vz_ptr);
4782 cc.evex().k(kA).vscatterpf1qpd(vz_ptr);
4783 cc.evex().k(kA).vscatterpf1qps(vz_ptr);
4784 cc.evex().k(kA).vscatterqpd(vx_ptr, xmmB);
4785 cc.evex().k(kA).vscatterqpd(vy_ptr, ymmB);
4786 cc.evex().k(kA).vscatterqpd(vz_ptr, zmmB);
4787 cc.evex().k(kA).vscatterqps(vx_ptr, xmmB);
4788 cc.evex().k(kA).vscatterqps(vy_ptr, xmmB);
4789 cc.evex().k(kA).vscatterqps(vz_ptr, ymmB);
4790 cc.evex().vshuff32x4(ymmA, ymmB, m, 0);
4791 cc.evex().vshuff32x4(zmmA, zmmB, m, 0);
4792 cc.evex().vshuff64x2(ymmA, ymmB, m, 0);
4793 cc.evex().vshuff64x2(zmmA, zmmB, m, 0);
4794 cc.evex().vshufi32x4(ymmA, ymmB, m, 0);
4795 cc.evex().vshufi32x4(zmmA, zmmB, m, 0);
4796 cc.evex().vshufi64x2(ymmA, ymmB, m, 0);
4797 cc.evex().vshufi64x2(zmmA, zmmB, m, 0);
4798 cc.evex().vshufpd(xmmA, xmmB, m, 0);
4799 cc.evex().vshufpd(ymmA, ymmB, m, 0);
4800 cc.evex().vshufpd(zmmA, zmmB, m, 0);
4801 cc.evex().vshufps(xmmA, xmmB, m, 0);
4802 cc.evex().vshufps(ymmA, ymmB, m, 0);
4803 cc.evex().vshufps(zmmA, zmmB, m, 0);
4804 cc.evex().vsqrtpd(xmmA, m);
4805 cc.evex().vsqrtpd(ymmA, m);
4806 cc.evex().vsqrtpd(zmmA, m);
4807 cc.evex().vsqrtps(xmmA, m);
4808 cc.evex().vsqrtps(ymmA, m);
4809 cc.evex().vsqrtps(zmmA, m);
4810 cc.evex().vsqrtsd(xmmA, xmmB, m);
4811 cc.evex().vsqrtss(xmmA, xmmB, m);
4812 cc.evex().vsubpd(xmmA, xmmB, m);
4813 cc.evex().vsubpd(ymmA, ymmB, m);
4814 cc.evex().vsubpd(zmmA, zmmB, m);
4815 cc.evex().vsubps(xmmA, xmmB, m);
4816 cc.evex().vsubps(ymmA, ymmB, m);
4817 cc.evex().vsubps(zmmA, zmmB, m);
4818 cc.evex().vsubsd(xmmA, xmmB, m);
4819 cc.evex().vsubss(xmmA, xmmB, m);
4820 cc.evex().vucomisd(xmmA, m);
4821 cc.evex().vucomiss(xmmA, m);
4822 cc.evex().vunpckhpd(xmmA, xmmB, m);
4823 cc.evex().vunpckhpd(ymmA, ymmB, m);
4824 cc.evex().vunpckhpd(zmmA, zmmB, m);
4825 cc.evex().vunpckhps(xmmA, xmmB, m);
4826 cc.evex().vunpckhps(ymmA, ymmB, m);
4827 cc.evex().vunpckhps(zmmA, zmmB, m);
4828 cc.evex().vunpcklpd(xmmA, xmmB, m);
4829 cc.evex().vunpcklpd(ymmA, ymmB, m);
4830 cc.evex().vunpcklpd(zmmA, zmmB, m);
4831 cc.evex().vunpcklps(xmmA, xmmB, m);
4832 cc.evex().vunpcklps(ymmA, ymmB, m);
4833 cc.evex().vunpcklps(zmmA, zmmB, m);
4834 cc.evex().vxorpd(xmmA, xmmB, m);
4835 cc.evex().vxorpd(ymmA, ymmB, m);
4836 cc.evex().vxorpd(zmmA, zmmB, m);
4837 cc.evex().vxorps(xmmA, xmmB, m);
4838 cc.evex().vxorps(ymmA, ymmB, m);
4839 cc.evex().vxorps(zmmA, zmmB, m);
4840 }
4916 if (form == InstForm::kReg)
4917 generateAvx512SequenceInternalRegOnly(cc, gp, kA, kB, kC, vecA, vecB, vecC, vecD);
4918 else
4919 generateAvx512SequenceInternalRegMem(cc, gp, kA, kB, kC, vecA, vecB, vecC, vecD);
48414920 }
48424921
48434922 static void generateAvx512Sequence(BaseEmitter& emitter, InstForm form, bool emitPrologEpilog) {
49114990 CodeHolder code;
49124991 printf("%s:\n", description);
49134992
4914 bench<x86::Assembler>(code, arch, numIterations, "[raw]", [&](x86::Assembler& cc) {
4993 uint32_t instCount = 0;
4994
4995 #ifndef ASMJIT_NO_BUILDER
4996 instCount = asmjit_perf_utils::calculateInstructionCount<x86::Builder>(code, arch, [&](x86::Builder& cc) {
49154997 emitterFn(cc, false);
49164998 });
4917
4918 bench<x86::Assembler>(code, arch, numIterations, "[validated]", [&](x86::Assembler& cc) {
4999 #endif
5000
5001 asmjit_perf_utils::bench<x86::Assembler>(code, arch, numIterations, "[raw]", instCount, [&](x86::Assembler& cc) {
5002 emitterFn(cc, false);
5003 });
5004
5005 asmjit_perf_utils::bench<x86::Assembler>(code, arch, numIterations, "[validated]", instCount, [&](x86::Assembler& cc) {
49195006 cc.addDiagnosticOptions(DiagnosticOptions::kValidateAssembler);
49205007 emitterFn(cc, false);
49215008 });
49225009
4923 bench<x86::Assembler>(code, arch, numIterations, "[prolog/epilog]", [&](x86::Assembler& cc) {
4924 cc.addDiagnosticOptions(DiagnosticOptions::kValidateAssembler);
5010 asmjit_perf_utils::bench<x86::Assembler>(code, arch, numIterations, "[prolog/epilog]", instCount, [&](x86::Assembler& cc) {
49255011 emitterFn(cc, true);
49265012 });
49275013
49285014 #ifndef ASMJIT_NO_BUILDER
4929 bench<x86::Builder>(code, arch, numIterations, "[no-asm]", [&](x86::Builder& cc) {
5015 asmjit_perf_utils::bench<x86::Builder>(code, arch, numIterations, "[no-asm]", instCount, [&](x86::Builder& cc) {
49305016 emitterFn(cc, false);
49315017 });
49325018
4933 bench<x86::Builder>(code, arch, numIterations, "[finalized]", [&](x86::Builder& cc) {
5019 asmjit_perf_utils::bench<x86::Builder>(code, arch, numIterations, "[finalized]", instCount, [&](x86::Builder& cc) {
49345020 emitterFn(cc, false);
49355021 cc.finalize();
49365022 });
49375023
4938 bench<x86::Builder>(code, arch, numIterations, "[prolog/epilog]", [&](x86::Builder& cc) {
5024 asmjit_perf_utils::bench<x86::Builder>(code, arch, numIterations, "[prolog/epilog]", instCount, [&](x86::Builder& cc) {
49395025 emitterFn(cc, true);
49405026 cc.finalize();
49415027 });
49425028 #endif
49435029
49445030 #ifndef ASMJIT_NO_COMPILER
4945 bench<x86::Compiler>(code, arch, numIterations, "[no-asm]", [&](x86::Compiler& cc) {
5031 asmjit_perf_utils::bench<x86::Compiler>(code, arch, numIterations, "[no-asm]", instCount, [&](x86::Compiler& cc) {
49465032 emitterFn(cc, true);
49475033 });
49485034
4949 bench<x86::Compiler>(code, arch, numIterations, "[finalized]", [&](x86::Compiler& cc) {
5035 asmjit_perf_utils::bench<x86::Compiler>(code, arch, numIterations, "[finalized]", instCount, [&](x86::Compiler& cc) {
49505036 emitterFn(cc, true);
49515037 cc.finalize();
49525038 });
1616 // ----------------------------------------------------------------------------
1717
1818 #include <asmjit/core.h>
19 #if !defined(ASMJIT_NO_X86) && ASMJIT_ARCH_X86
19 #if ASMJIT_ARCH_X86 && !defined(ASMJIT_NO_X86) && !defined(ASMJIT_NO_JIT)
2020
2121 #include <asmjit/x86.h>
2222 #include <stdio.h>
135135 // Relocate to the base-address of the allocated memory.
136136 code.relocateToBase(uint64_t(uintptr_t(rxPtr)));
137137
138 VirtMem::protectJitMemory(VirtMem::ProtectJitAccess::kReadWrite);
138 {
139 VirtMem::ProtectJitReadWriteScope scope(rxPtr, code.codeSize());
139140
140 // Copy the flattened code into `mem.rw`. There are two ways. You can either copy
141 // everything manually by iterating over all sections or use `copyFlattenedData`.
142 // This code is similar to what `copyFlattenedData(p, codeSize, 0)` would do:
143 for (Section* section : code.sectionsByOrder())
144 memcpy(static_cast<uint8_t*>(rwPtr) + size_t(section->offset()), section->data(), section->bufferSize());
145
146 VirtMem::protectJitMemory(VirtMem::ProtectJitAccess::kReadExecute);
147 VirtMem::flushInstructionCache(rwPtr, code.codeSize());
141 // Copy the flattened code into `mem.rw`. There are two ways. You can either copy
142 // everything manually by iterating over all sections or use `copyFlattenedData`.
143 // This code is similar to what `copyFlattenedData(p, codeSize, 0)` would do:
144 for (Section* section : code.sectionsByOrder())
145 memcpy(static_cast<uint8_t*>(rwPtr) + size_t(section->offset()), section->data(), section->bufferSize());
146 }
148147
149148 // Execute the function and test whether it works.
150149 typedef size_t (*Func)(size_t idx);
165164
166165 #else
167166 int main() {
168 printf("AsmJit X86 Sections Test is disabled on non-x86 host\n\n");
167 printf("AsmJit X86 Sections Test is disabled on non-x86 host or when compiled with ASMJIT_NO_JIT\n\n");
169168 return 0;
170169 }
171 #endif // !ASMJIT_NO_X86 && ASMJIT_ARCH_X86
170 #endif // ASMJIT_ARCH_X86 && !ASMJIT_NO_X86 && !ASMJIT_NO_JIT
77
88 #include <asmjit/core.h>
99
10 ASMJIT_MAYBE_UNUSED
1011 static const char* asmjitArchAsString(asmjit::Arch arch) noexcept {
1112 switch (arch) {
1213 case asmjit::Arch::kX86 : return "X86";
3435 }
3536 }
3637
38 ASMJIT_MAYBE_UNUSED
39 static void printIndented(const char* str, size_t indent) noexcept {
40 const char* start = str;
41 while (*str) {
42 if (*str == '\n') {
43 size_t size = (size_t)(str - start);
44 printf("%*s%.*s\n", size ? int(indent) : 0, "", int(size), start);
45 start = str + 1;
46 }
47 str++;
48 }
49
50 size_t size = (size_t)(str - start);
51 if (size)
52 printf("%*s%.*s\n", int(indent), "", int(size), start);
53 }
54
3755 #endif // ASMJITUTILS_H_INCLUDED
2424 //
2525 // For more information, please refer to <http://unlicense.org>
2626
27 #include "./broken.h"
27 #include "broken.h"
2828 #include <stdarg.h>
2929
30 // ============================================================================
31 // [Broken - Global]
32 // ============================================================================
30 // Broken - Globals
31 // ================
3332
3433 // Zero initialized globals.
3534 struct BrokenGlobal {
5554 };
5655 static BrokenGlobal _brokenGlobal;
5756
58 // ============================================================================
59 // [Broken - API]
60 // ============================================================================
57 // Broken - API
58 // ============
6159
6260 // Get whether the string `a` starts with string `b`.
6361 static bool BrokenAPI_startsWith(const char* a, const char* b) noexcept {
184182 return _brokenGlobal.hasArg(name);
185183 }
186184
187 void BrokenAPI::add(Unit* unit) noexcept {
185 void BrokenAPI::addUnit(Unit* unit) noexcept {
188186 Unit** pPrev = &_brokenGlobal._unitList;
189187 Unit* current = *pPrev;
190188
307305 fprintf(dst, " SOURCE: %s (Line: %d)\n", file, line);
308306 fflush(dst);
309307
310 exit(1);
311 }
308 abort();
309 }
3737
3838 //! \cond
3939
40 // ============================================================================
41 // [Broken - API]
42 // ============================================================================
43
44 struct BrokenAPI {
45 //! Entry point of a unit test defined by `UNIT` macro.
46 typedef void (*Entry)(void);
47
48 enum Flags : unsigned {
49 kFlagFinished = 0x1
50 };
51
52 //! Test defined by `UNIT` macro.
53 struct Unit {
54 Entry entry;
55 const char* name;
56 int priority;
57 unsigned flags;
58 Unit* next;
59 };
60
61 //! Automatic unit registration by using static initialization.
62 struct AutoUnit : Unit {
63 inline AutoUnit(Entry entry_, const char* name_, int priority_ = 0, int dummy_ = 0) noexcept {
64 // Not used, only to trick `UNIT()` macro.
65 (void)dummy_;
66
67 this->entry = entry_;
68 this->name = name_;
69 this->priority = priority_;
70 this->flags = 0;
71 this->next = nullptr;
72 BrokenAPI::add(this);
73 }
74 };
75
76 static bool hasArg(const char* name) noexcept;
77
78 //! Register a new unit test (called automatically by `AutoUnit` and `UNIT`).
79 static void add(Unit* unit) noexcept;
80
81 //! Set output file to a `file`.
82 static void setOutputFile(FILE* file) noexcept;
83
84 //! Initialize `Broken` framework.
85 //!
86 //! Returns `true` if `run()` should be called.
87 static int run(int argc, const char* argv[], Entry onBeforeRun = nullptr, Entry onAfterRun = nullptr);
88
89 //! Log message, adds automatically new line if not present.
90 static void info(const char* fmt, ...) noexcept;
91
92 //! Called on `EXPECT()` failure.
93 static void fail(const char* file, int line, const char* expression, const char* fmt, ...) noexcept;
94
95 //! Used internally by `EXPECT` macro.
96 template<typename T>
97 static inline void expect(const char* file, int line, const char* expression, const T& result) noexcept {
98 if (!result)
99 fail(file, line, expression, nullptr);
40 // Broken - API
41 // ============
42
43 namespace BrokenAPI {
44
45 //! Entry point of a unit test defined by `UNIT` macro.
46 typedef void (*Entry)(void);
47
48 enum Flags : unsigned {
49 kFlagFinished = 0x1
50 };
51
52 struct Unit;
53
54 bool hasArg(const char* name) noexcept;
55
56 //! Register a new unit test (called automatically by `AutoUnit` and `UNIT`).
57 void addUnit(Unit* unit) noexcept;
58
59 //! Set output file to a `file`.
60 void setOutputFile(FILE* file) noexcept;
61
62 //! Initialize `Broken` framework.
63 //!
64 //! Returns `true` if `run()` should be called.
65 int run(int argc, const char* argv[], Entry onBeforeRun = nullptr, Entry onAfterRun = nullptr);
66
67 //! Log message, adds automatically new line if not present.
68 void info(const char* fmt, ...) noexcept;
69
70 //! Called on `EXPECT()` failure.
71 void fail(const char* file, int line, const char* expression, const char* fmt, ...) noexcept;
72
73 //! Test defined by `UNIT` macro.
74 struct Unit {
75 Entry entry;
76 const char* name;
77 int priority;
78 unsigned flags;
79 Unit* next;
80 };
81
82 //! Automatic unit registration by using static initialization.
83 class AutoUnit : public Unit {
84 public:
85 inline AutoUnit(Entry entry_, const char* name_, int priority_ = 0, int dummy_ = 0) noexcept {
86 // Not used, only to trick `UNIT()` macro.
87 (void)dummy_;
88
89 this->entry = entry_;
90 this->name = name_;
91 this->priority = priority_;
92 this->flags = 0;
93 this->next = nullptr;
94 addUnit(this);
10095 }
101
102 //! Used internally by `EXPECT` macro.
103 template<typename T, typename... Args>
104 static inline void expect(const char* file, int line, const char* expression, const T& result, const char* fmt, Args&&... args) noexcept {
105 if (!result)
106 fail(file, line, expression, fmt, std::forward<Args>(args)...);
96 };
97
98 class Failure {
99 public:
100 const char* _file = nullptr;
101 const char* _expression = nullptr;
102 int _line = 0;
103 bool _handled = false;
104
105 inline Failure(const char* file, int line, const char* expression) noexcept
106 : _file(file),
107 _expression(expression),
108 _line(line) {}
109
110 inline ~Failure() noexcept {
111 if (!_handled)
112 fail(_file, _line, _expression, nullptr);
107113 }
108 };
109
110 // ============================================================================
111 // [Broken - Macros]
112 // ============================================================================
114
115 template<typename... Args>
116 inline void message(const char* fmt, Args&&... args) noexcept {
117 fail(_file, _line, _expression, fmt, std::forward<Args>(args)...);
118 _handled = true;
119 }
120 };
121
122 template<typename Result>
123 static inline bool check(Result&& result) noexcept { return !!result; }
124
125 template<typename LHS, typename RHS>
126 static inline bool checkEq(LHS&& lhs, RHS&& rhs) noexcept { return lhs == rhs; }
127
128 template<typename LHS, typename RHS>
129 static inline bool checkNe(LHS&& lhs, RHS&& rhs) noexcept { return lhs != rhs; }
130
131 template<typename LHS, typename RHS>
132 static inline bool checkGt(LHS&& lhs, RHS&& rhs) noexcept { return lhs > rhs; }
133
134 template<typename LHS, typename RHS>
135 static inline bool checkGe(LHS&& lhs, RHS&& rhs) noexcept { return lhs >= rhs; }
136
137 template<typename LHS, typename RHS>
138 static inline bool checkLt(LHS&& lhs, RHS&& rhs) noexcept { return lhs < rhs; }
139
140 template<typename LHS, typename RHS>
141 static inline bool checkLe(LHS&& lhs, RHS&& rhs) noexcept { return lhs <= rhs; }
142
143 template<typename Result>
144 static inline bool checkTrue(Result&& result) noexcept { return !!result; }
145
146 template<typename Result>
147 static inline bool checkFalse(Result&& result) noexcept { return !result; }
148
149 template<typename Result>
150 static inline bool checkNull(Result&& result) noexcept { return result == nullptr; }
151
152 template<typename Result>
153 static inline bool checkNotNull(Result&& result) noexcept { return result != nullptr; }
154
155 } // {BrokenAPI}
156
157 // Broken - Macros
158 // ===============
113159
114160 //! Internal macro used by `UNIT()`.
115161 #define BROKEN_UNIT_INTERNAL(NAME, PRIORITY) \
117163 static ::BrokenAPI::AutoUnit unit_##NAME##_autoinit(unit_##NAME##_entry, #NAME, PRIORITY); \
118164 static void unit_##NAME##_entry(void)
119165
120 //! Stringifies the expression used by EXPECT().
121 #define BROKEN_STRINFIGY_EXPRESSION_INTERNAL(EXP, ...) #EXP
122
123166 //! \def UNIT(NAME [, PRIORITY])
124167 //!
125168 //! Define a unit test with an optional priority.
126169 //!
127 //! `NAME` can only contain ASCII characters, numbers and underscore. It has
128 //! the same rules as identifiers in C and C++.
129 //!
130 //! `PRIORITY` specifies the order in which unit tests are run. Lesses value
131 //! increases the priority. At the moment all units are first sorted by
132 //! priority and then by name - this makes the run always deterministic.
170 //! `NAME` can only contain ASCII characters, numbers and underscore. It has the same rules as identifiers in C and C++.
171 //!
172 //! `PRIORITY` specifies the order in which unit tests are run. Lesses value increases the priority. At the moment all
173 //!units are first sorted by priority and then by name - this makes the run always deterministic.
133174 #define UNIT(NAME, ...) BROKEN_UNIT_INTERNAL(NAME, __VA_ARGS__ + 0)
134175
135176 //! #define INFO(FORMAT [, ...])
137178 //! Informative message printed to `stdout`.
138179 #define INFO(...) ::BrokenAPI::info(__VA_ARGS__)
139180
140 //! #define INFO(EXP [, FORMAT [, ...]])
141 //!
142 //! Expect `EXP` to be true or evaluates to true, fail otherwise.
143 #define EXPECT(...) ::BrokenAPI::expect(__FILE__, __LINE__, BROKEN_STRINFIGY_EXPRESSION_INTERNAL(__VA_ARGS__), __VA_ARGS__)
181 #define BROKEN_EXPECT_INTERNAL(file, line, expression, result) \
182 for (bool _testInternalResult = (result); !_testInternalResult; _testInternalResult = true) \
183 ::BrokenAPI::Failure(file, line, expression)
184
185 #define EXPECT(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT(" #__VA_ARGS__ ")", !!(__VA_ARGS__))
186 #define EXPECT_EQ(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_EQ(" #__VA_ARGS__ ")", ::BrokenAPI::checkEq(__VA_ARGS__))
187 #define EXPECT_NE(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_NE(" #__VA_ARGS__ ")", ::BrokenAPI::checkNe(__VA_ARGS__))
188 #define EXPECT_GT(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_GT(" #__VA_ARGS__ ")", ::BrokenAPI::checkGt(__VA_ARGS__))
189 #define EXPECT_GE(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_GE(" #__VA_ARGS__ ")", ::BrokenAPI::checkGe(__VA_ARGS__))
190 #define EXPECT_LT(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_LT(" #__VA_ARGS__ ")", ::BrokenAPI::checkLt(__VA_ARGS__))
191 #define EXPECT_LE(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_LE(" #__VA_ARGS__ ")", ::BrokenAPI::checkLe(__VA_ARGS__))
192 #define EXPECT_TRUE(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_TRUE(" #__VA_ARGS__ ")", ::BrokenAPI::checkTrue(__VA_ARGS__))
193 #define EXPECT_FALSE(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_FALSE(" #__VA_ARGS__ ")", ::BrokenAPI::checkFalse(__VA_ARGS__))
194 #define EXPECT_NULL(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_NULL(" #__VA_ARGS__ ")", ::BrokenAPI::checkNull(__VA_ARGS__))
195 #define EXPECT_NOT_NULL(...) BROKEN_EXPECT_INTERNAL(__FILE__, __LINE__, "EXPECT_NOT_NULL(" #__VA_ARGS__ ")", ::BrokenAPI::checkNotNull(__VA_ARGS__))
144196
145197 //! \endcond
146198
2929 }
3030 };
3131
32 static inline double mbps(double duration, uint64_t outputSize) noexcept {
33 if (duration == 0)
34 return 0.0;
35
36 double bytesTotal = double(outputSize);
37 return (bytesTotal * 1000) / (duration * 1024 * 1024);
38 }
39
4032 #endif // PERFORMANCETIMER_H_INCLUDED
132132
133133 // [06] OpcodeDataIndex.
134134 "([^\\)]+)" +
135 "\\s*,\\s*" +
136
137 // [07] NameDataIndex.
138 "([^\\)]+)" +
139135 "\\s*\\)"
136
140137 , "g");
141138
142139 var m;
167164 opcodeData : opcodeData, // Opcode data.
168165 opcodeDataIndex : -1, // Opcode data index.
169166 rwInfo : rwInfo, // RW info.
170 flags : instFlags, // Instruction flags.
171
172 nameIndex : -1 // Index to InstDB::_nameData.
167 flags : instFlags // Instruction flags.
173168 });
174169 }
175170
187182 String(inst.opcodeData ).padEnd(86) + ", " +
188183 String(inst.rwInfo ).padEnd(10) + ", " +
189184 String(inst.flags ).padEnd(26) + ", " +
190 String(inst.opcodeDataIndex ).padEnd( 3) + ", " +
191 String(inst.nameIndex ).padEnd( 4) + ")";
185 String(inst.opcodeDataIndex ).padEnd( 3) + ")" ;
192186 }) + "\n";
193187 return this.inject("InstInfo", s, this.insts.length * 4);
194188 }
4848 ["imul", "r16, ib" , "RMI" , "66 6B /r ib" , "ANY OF=W SF=W ZF=U AF=U PF=U CF=W"],
4949 ["imul", "r32, ib" , "RMI" , "6B /r ib" , "ANY OF=W SF=W ZF=U AF=U PF=U CF=W"],
5050 ["imul", "r64, ib" , "RMI" , "REX.W 6B /r ib", "X64 OF=W SF=W ZF=U AF=U PF=U CF=W"],
51 ["imul", "r16, iw" , "RMI" , "66 69 /r iw" , "ANY OF=W SF=W ZF=U AF=U PF=U CF=W"],
52 ["imul", "r32, id" , "RMI" , "69 /r id" , "ANY OF=W SF=W ZF=U AF=U PF=U CF=W"],
51 ["imul", "r16, iw/uw" , "RMI" , "66 69 /r iw" , "ANY OF=W SF=W ZF=U AF=U PF=U CF=W"],
52 ["imul", "r32, id/ud" , "RMI" , "69 /r id" , "ANY OF=W SF=W ZF=U AF=U PF=U CF=W"],
5353 ["imul", "r64, id" , "RMI" , "REX.W 69 /r id", "X64 OF=W SF=W ZF=U AF=U PF=U CF=W"],
5454
5555 // Movabs (X64 only).
499499 // --- autogenerated fields ---
500500 "([^\\)]+)" + "," + // [05] MainOpcodeIndex.
501501 "([^\\)]+)" + "," + // [06] AltOpcodeIndex.
502 "([^\\)]+)" + "," + // [07] NameIndex.
503 "([^\\)]+)" + "," + // [08] CommonDataIndex.
504 "([^\\)]+)" + "\\)", // [09] OperationDataIndex.
502 "([^\\)]+)" + "," + // [07] CommonDataIndex.
503 "([^\\)]+)" + "\\)", // [08] OperationDataIndex.
505504 "g");
506505
507506 var m;
561560 String(inst.opcode1 ).padEnd(26) + ", " +
562561 String(inst.mainOpcodeIndex ).padEnd( 3) + ", " +
563562 String(inst.altOpcodeIndex ).padEnd( 3) + ", " +
564 String(inst.nameIndex ).padEnd( 5) + ", " +
565563 String(inst.commonInfoIndex ).padEnd( 3) + ", " +
566564 String(inst.additionalInfoIndex).padEnd( 3) + ")";
567565 }) + "\n";
21942192 if (op.consecutiveLeadCount)
21952193 d.clc = op.consecutiveLeadCount;
21962194
2197 if (op.isReg())
2198 d.fixed = GenUtils.fixedRegOf(op.reg);
2199 else
2200 d.fixed = GenUtils.fixedRegOf(op.mem);
2195 const instName = dbInst.name;
2196 // NOTE: Avoid push/pop here as PUSH/POP has many variations for segment registers,
2197 // which would set 'd.fixed' field even for GP variation of the instuction.
2198 if (instName !== "push" && instName !== "pop") {
2199 if (op.isReg())
2200 d.fixed = GenUtils.fixedRegOf(op.reg);
2201 else
2202 d.fixed = GenUtils.fixedRegOf(op.mem);
2203 }
2204
2205 switch (instName) {
2206 case "vfcmaddcph":
2207 case "vfmaddcph":
2208 case "vfcmaddcsh":
2209 case "vfmaddcsh":
2210 case "vfcmulcsh":
2211 case "vfmulcsh":
2212 case "vfcmulcph":
2213 case "vfmulcph":
2214 if (j === 0)
2215 d.flags.Unique = true;
2216 break;
2217 }
22012218
22022219 if (op.zext)
22032220 d.flags.ZExt = true;
22332250 }
22342251 }
22352252 }
2236 return { category: "Generic", rwOps };
2253
2254 const name = dbInsts.length ? dbInsts[0].name : "";
2255
2256 switch (name) {
2257 case "vpternlogd":
2258 case "vpternlogq":
2259 return { category: "GenericEx", rwOps };
2260
2261 default:
2262 return { category: "Generic", rwOps };
2263 }
22372264 }
22382265
22392266 function queryRwByData(dbInsts, rwOpsArray) {
22422269 const operands = dbInst.operands;
22432270 const rwOps = nullOps();
22442271
2245 for (var j = 0; j < operands.length; j++)
2272 for (var j = 0; j < operands.length; j++) {
22462273 rwOps[j] = makeRwFromOp(operands[j])
2274 }
22472275
22482276 var match = 0;
22492277 for (var j = 0; j < rwOpsArray.length; j++)
579579 }
580580 exports.IndexedString = IndexedString;
581581
582
583 // ============================================================================
584 // [InstructionNameData]
585 // ============================================================================
586
587 function decimalToHexString(number, pad) {
588 if (number < 0)
589 number = 0xFFFFFFFF + number + 1;
590
591 let s = number.toString(16).toUpperCase();
592 if (pad)
593 s = s.padStart(pad, "0")
594 return s;
595 }
596
597 function charTo5Bit(c) {
598 if (c >= 'a' && c <= 'z')
599 return 1 + (c.charCodeAt(0) - 'a'.charCodeAt(0));
600 else if (c >= '0' && c <= '4')
601 return 1 + 26 + (c.charCodeAt(0) - '0'.charCodeAt(0));
602 else
603 FAIL(`Character '${c}' cannot be encoded into a 5-bit string`);
604 }
605
606 class InstructionNameData {
607 constructor() {
608 this.names = [];
609 this.primaryTable = [];
610 this.stringTable = "";
611 this.size = 0;
612 this.indexComment = [];
613 this.maxNameLength = 0;
614 }
615
616 add(s) {
617 // First try to encode the string with 5-bit characters that fit into a 32-bit int.
618 if (/^[a-z0-4]{0,6}$/.test(s)) {
619 let index = 0;
620 for (let i = 0; i < s.length; i++)
621 index |= charTo5Bit(s[i]) << (i * 5);
622
623 this.names.push(s);
624 this.primaryTable.push(index | (1 << 31));
625 this.indexComment.push(`Small '${s}'.`);
626 }
627 else {
628 // Put the string into a string table.
629 this.names.push(s);
630 this.primaryTable.push(-1);
631 this.indexComment.push(``);
632 }
633
634 if (this.maxNameLength < s.length)
635 this.maxNameLength = s.length;
636 }
637
638 index() {
639 const kMaxPrefixSize = 15;
640 const kMaxSuffixSize = 7;
641 const names = [];
642
643 for (let idx = 0; idx < this.primaryTable.length; idx++) {
644 if (this.primaryTable[idx] === -1) {
645 names.push({ name: this.names[idx], index: idx });
646 }
647 }
648
649 names.sort(function(a, b) {
650 if (a.name.length > b.name.length)
651 return -1;
652 if (a.name.length < b.name.length)
653 return 1;
654 return (a > b) ? 1 : (a < b) ? -1 : 0;
655 });
656
657 for (let z = 0; z < names.length; z++) {
658 const idx = names[z].index;
659 const name = names[z].name;
660
661 let done = false;
662 let longestPrefix = 0;
663 let longestSuffix = 0;
664
665 let prefix = "";
666 let suffix = "";
667
668 for (let i = Math.min(name.length, kMaxPrefixSize); i > 0; i--) {
669 prefix = name.substring(0, i);
670 suffix = name.substring(i);
671
672 const prefixIndex = this.stringTable.indexOf(prefix);
673 const suffixIndex = this.stringTable.indexOf(suffix);
674
675 // Matched both parts?
676 if (prefixIndex !== -1 && suffix === "") {
677 done = true;
678 break;
679 }
680
681 if (prefixIndex !== -1 && suffixIndex !== -1) {
682 done = true;
683 break;
684 }
685
686 if (prefixIndex !== -1 && longestPrefix === 0)
687 longestPrefix = prefix.length;
688
689 if (suffixIndex !== -1 && suffix.length > longestSuffix)
690 longestSuffix = suffix.length;
691
692 if (suffix.length === kMaxSuffixSize)
693 break;
694 }
695
696 if (!done) {
697 let minPrefixSize = name.length >= 8 ? name.length / 2 + 1 : name.length - 2;
698
699 prefix = "";
700 suffix = "";
701
702 if (longestPrefix >= minPrefixSize) {
703 prefix = name.substring(0, longestPrefix);
704 suffix = name.substring(longestPrefix);
705 }
706 else if (longestSuffix) {
707 const splitAt = Math.min(name.length - longestSuffix, kMaxPrefixSize);;
708 prefix = name.substring(0, splitAt);
709 suffix = name.substring(splitAt);
710 }
711 else if (name.length > kMaxPrefixSize) {
712 prefix = name.substring(0, kMaxPrefixSize);
713 suffix = name.substring(kMaxPrefixSize);
714 }
715 else {
716 prefix = name;
717 suffix = "";
718 }
719 }
720
721 if (suffix) {
722 const prefixIndex = this.addOrReferenceString(prefix);
723 const suffixIndex = this.addOrReferenceString(suffix);
724
725 this.primaryTable[idx] = prefixIndex | (prefix.length << 12) | (suffixIndex << 16) | (suffix.length << 28);
726 this.indexComment[idx] = `Large '${prefix}|${suffix}'.`;
727 }
728 else {
729 const prefixIndex = this.addOrReferenceString(prefix);
730
731 this.primaryTable[idx] = prefixIndex | (prefix.length << 12);
732 this.indexComment[idx] = `Large '${prefix}'.`;
733 }
734 }
735 }
736
737 addOrReferenceString(s) {
738 let index = this.stringTable.indexOf(s);
739 if (index === -1) {
740 index = this.stringTable.length;
741 this.stringTable += s;
742 }
743 return index;
744 }
745
746 formatIndexTable(tableName) {
747 if (this.size === -1)
748 FAIL(`IndexedString.formatIndexTable(): Not indexed yet, call index()`);
749
750 let s = "";
751 for (let i = 0; i < this.primaryTable.length; i++) {
752 s += "0x" + decimalToHexString(this.primaryTable[i], 8);
753 s += i !== this.primaryTable.length - 1 ? "," : " ";
754 s += " // " + this.indexComment[i] + "\n";
755 }
756
757 return `const uint32_t ${tableName}[] = {\n${StringUtils.indent(s, " ")}};\n`;
758 }
759
760 formatStringTable(tableName) {
761 if (this.size === -1)
762 FAIL(`IndexedString.formatStringTable(): Not indexed yet, call index()`);
763
764 let s = "";
765 for (let i = 0; i < this.stringTable.length; i += 80) {
766 if (s)
767 s += "\n"
768 s += '"' + this.stringTable.substring(i, i + 80) + '"';
769 }
770 s += ";\n";
771
772 return `const char ${tableName}[] =\n${StringUtils.indent(s, " ")}\n`;
773 }
774
775 getSize() {
776 if (this.size === -1)
777 FAIL(`IndexedString.getSize(): Not indexed yet, call index()`);
778
779 return this.primaryTable.length * 4 + this.stringTable.length;
780 }
781
782 getIndex(k) {
783 if (this.size === -1)
784 FAIL(`IndexedString.getIndex(): Not indexed yet, call index()`);
785
786 if (!hasOwn.call(this.map, k))
787 FAIL(`IndexedString.getIndex(): Key '${k}' not found.`);
788
789 return this.map[k];
790 }
791 }
792 exports.InstructionNameData = InstructionNameData;
793
582794 // ============================================================================
583795 // [IndexedArray]
584796 // ============================================================================
8901102 }
8911103
8921104 run() {
893 const arch = this.ctx.arch;
8941105 const none = "Inst::kIdNone";
895
8961106 const insts = this.ctx.insts;
897 const instNames = new IndexedString();
8981107
8991108 const instFirst = new Array(26);
9001109 const instLast = new Array(26);
9011110
902 var maxLength = 0;
903 for (var i = 0; i < insts.length; i++) {
904 const inst = insts[i];
905 instNames.add(inst.displayName);
906 maxLength = Math.max(maxLength, inst.displayName.length);
907 }
908 instNames.index();
909
910 for (var i = 0; i < insts.length; i++) {
1111 const instNameData = new InstructionNameData();
1112
1113 for (let i = 0; i < insts.length; i++)
1114 instNameData.add(insts[i].displayName);
1115 instNameData.index();
1116
1117 for (let i = 0; i < insts.length; i++) {
9111118 const inst = insts[i];
9121119 const name = inst.displayName;
913 const nameIndex = instNames.getIndex(name);
914
9151120 const index = name.charCodeAt(0) - 'a'.charCodeAt(0);
1121
9161122 if (index < 0 || index >= 26)
9171123 FAIL(`TableGen.generateNameData(): Invalid lookup character '${name[0]}' of '${name}'`);
9181124
919 inst.nameIndex = nameIndex;
9201125 if (instFirst[index] === undefined)
9211126 instFirst[index] = `Inst::kId${inst.enum}`;
9221127 instLast[index] = `Inst::kId${inst.enum}`;
9231128 }
9241129
9251130 var s = "";
926 s += `const char InstDB::_nameData[] =\n${instNames.format(kIndent, kJustify)}\n`;
1131 s += instNameData.formatIndexTable("InstDB::_instNameIndexTable");
9271132 s += `\n`;
1133 s += instNameData.formatStringTable("InstDB::_instNameStringTable");
1134 s += `\n`;
1135
9281136 s += `const InstDB::InstNameIndex InstDB::instNameIndex[26] = {\n`;
9291137 for (var i = 0; i < instFirst.length; i++) {
9301138 const firstId = instFirst[i] || none;
9381146 s += `};\n`;
9391147
9401148 this.ctx.inject("NameLimits",
941 StringUtils.disclaimer(`enum : uint32_t { kMaxNameSize = ${maxLength} };\n`));
942
943 return this.ctx.inject("NameData", StringUtils.disclaimer(s), instNames.getSize() + 26 * 4);
1149 StringUtils.disclaimer(`enum : uint32_t { kMaxNameSize = ${instNameData.maxNameLength} };\n`));
1150
1151 return this.ctx.inject("NameData", StringUtils.disclaimer(s), instNameData.getSize() + 26 * 4);
9441152 }
9451153 }
9461154 exports.NameTable = NameTable;