authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-02-02 17:05:06+00:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-02-25 22:32:00+00:00
loge0a955afb3c8768fb52b56c342f171bc1d0d6066
tree78661df6f9b7cf2729a0e8a2ee3302f67cc9c0c4
parentde8a1211c1320605f840f16fa17bd67d4e824608

x86_64: use ZON for encodings


4 files changed, 2620 insertions(+), 2629 deletions(-)

CMakeLists.txt+1-1
......@@ -559,7 +559,7 @@ set(ZIG_STAGE2_SOURCES
559559 src/arch/x86_64/abi.zig
560560 src/arch/x86_64/bits.zig
561561 src/arch/x86_64/encoder.zig
562 src/arch/x86_64/encodings.zig
562 src/arch/x86_64/encodings.zon
563563 src/clang.zig
564564 src/clang_options.zig
565565 src/clang_options_data.zig
src/arch/x86_64/Encoding.zig+7-4
......@@ -1015,11 +1015,14 @@ fn estimateInstructionLength(prefix: Prefix, encoding: Encoding, ops: []const Op
10151015
10161016const mnemonic_to_encodings_map = init: {
10171017 @setEvalBranchQuota(5_800);
1018 const ModrmExt = u3;
1019 const Entry = struct { Mnemonic, OpEn, []const Op, []const u8, ModrmExt, Mode, Feature };
1020 const encodings: []const Entry = @import("encodings.zon");
1021
10181022 const mnemonic_count = @typeInfo(Mnemonic).@"enum".fields.len;
10191023 var mnemonic_map: [mnemonic_count][]Data = @splat(&.{});
1020 const encodings = @import("encodings.zig");
1021 for (encodings.table) |entry| mnemonic_map[@intFromEnum(entry[0])].len += 1;
1022 var data_storage: [encodings.table.len]Data = undefined;
1024 for (encodings) |entry| mnemonic_map[@intFromEnum(entry[0])].len += 1;
1025 var data_storage: [encodings.len]Data = undefined;
10231026 var storage_i: usize = 0;
10241027 for (&mnemonic_map) |*value| {
10251028 value.ptr = data_storage[storage_i..].ptr;
......@@ -1028,7 +1031,7 @@ const mnemonic_to_encodings_map = init: {
10281031 var mnemonic_i: [mnemonic_count]usize = @splat(0);
10291032 const ops_len = @typeInfo(std.meta.FieldType(Data, .ops)).array.len;
10301033 const opc_len = @typeInfo(std.meta.FieldType(Data, .opc)).array.len;
1031 for (encodings.table) |entry| {
1034 for (encodings) |entry| {
10321035 const i = &mnemonic_i[@intFromEnum(entry[0])];
10331036 mnemonic_map[@intFromEnum(entry[0])][i.*] = .{
10341037 .op_en = entry[1],
src/arch/x86_64/encodings.zig deleted-2624
......@@ -1,2624 +0,0 @@
1const Encoding = @import("Encoding.zig");
2const Mnemonic = Encoding.Mnemonic;
3const OpEn = Encoding.OpEn;
4const Op = Encoding.Op;
5const Mode = Encoding.Mode;
6const Feature = Encoding.Feature;
7
8const modrm_ext = u3;
9
10pub const Entry = struct { Mnemonic, OpEn, []const Op, []const u8, modrm_ext, Mode, Feature };
11
12// TODO move this into a .zon file when Zig is capable of importing .zon files
13// zig fmt: off
14pub const table = [_]Entry{
15 // General-purpose
16 .{ .aaa, .z, &.{}, &.{ 0x37 }, 0, .none, .@"32bit" },
17
18 .{ .aad, .z, &.{ }, &.{ 0xd5, 0x0a }, 0, .none, .@"32bit" },
19 .{ .aad, .zi, &.{ .imm8 }, &.{ 0xd5 }, 0, .none, .@"32bit" },
20
21 .{ .aam, .z, &.{ }, &.{ 0xd4, 0x0a }, 0, .none, .@"32bit" },
22 .{ .aam, .zi, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },
23
24 .{ .aas, .z, &.{}, &.{ 0x3f }, 0, .none, .@"32bit" },
25
26 .{ .adc, .zi, &.{ .al, .imm8 }, &.{ 0x14 }, 0, .none, .none },
27 .{ .adc, .zi, &.{ .ax, .imm16 }, &.{ 0x15 }, 0, .short, .none },
28 .{ .adc, .zi, &.{ .eax, .imm32 }, &.{ 0x15 }, 0, .none, .none },
29 .{ .adc, .zi, &.{ .rax, .imm32s }, &.{ 0x15 }, 0, .long, .none },
30 .{ .adc, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 2, .none, .none },
31 .{ .adc, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 2, .rex, .none },
32 .{ .adc, .mi, &.{ .rm16, .imm16 }, &.{ 0x81 }, 2, .short, .none },
33 .{ .adc, .mi, &.{ .rm32, .imm32 }, &.{ 0x81 }, 2, .none, .none },
34 .{ .adc, .mi, &.{ .rm64, .imm32s }, &.{ 0x81 }, 2, .long, .none },
35 .{ .adc, .mi, &.{ .rm16, .imm8s }, &.{ 0x83 }, 2, .short, .none },
36 .{ .adc, .mi, &.{ .rm32, .imm8s }, &.{ 0x83 }, 2, .none, .none },
37 .{ .adc, .mi, &.{ .rm64, .imm8s }, &.{ 0x83 }, 2, .long, .none },
38 .{ .adc, .mr, &.{ .rm8, .r8 }, &.{ 0x10 }, 0, .none, .none },
39 .{ .adc, .mr, &.{ .rm8, .r8 }, &.{ 0x10 }, 0, .rex, .none },
40 .{ .adc, .mr, &.{ .rm16, .r16 }, &.{ 0x11 }, 0, .short, .none },
41 .{ .adc, .mr, &.{ .rm32, .r32 }, &.{ 0x11 }, 0, .none, .none },
42 .{ .adc, .mr, &.{ .rm64, .r64 }, &.{ 0x11 }, 0, .long, .none },
43 .{ .adc, .rm, &.{ .r8, .rm8 }, &.{ 0x12 }, 0, .none, .none },
44 .{ .adc, .rm, &.{ .r8, .rm8 }, &.{ 0x12 }, 0, .rex, .none },
45 .{ .adc, .rm, &.{ .r16, .rm16 }, &.{ 0x13 }, 0, .short, .none },
46 .{ .adc, .rm, &.{ .r32, .rm32 }, &.{ 0x13 }, 0, .none, .none },
47 .{ .adc, .rm, &.{ .r64, .rm64 }, &.{ 0x13 }, 0, .long, .none },
48
49 .{ .add, .zi, &.{ .al, .imm8 }, &.{ 0x04 }, 0, .none, .none },
50 .{ .add, .zi, &.{ .ax, .imm16 }, &.{ 0x05 }, 0, .short, .none },
51 .{ .add, .zi, &.{ .eax, .imm32 }, &.{ 0x05 }, 0, .none, .none },
52 .{ .add, .zi, &.{ .rax, .imm32s }, &.{ 0x05 }, 0, .long, .none },
53 .{ .add, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 0, .none, .none },
54 .{ .add, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 0, .rex, .none },
55 .{ .add, .mi, &.{ .rm16, .imm16 }, &.{ 0x81 }, 0, .short, .none },
56 .{ .add, .mi, &.{ .rm32, .imm32 }, &.{ 0x81 }, 0, .none, .none },
57 .{ .add, .mi, &.{ .rm64, .imm32s }, &.{ 0x81 }, 0, .long, .none },
58 .{ .add, .mi, &.{ .rm16, .imm8s }, &.{ 0x83 }, 0, .short, .none },
59 .{ .add, .mi, &.{ .rm32, .imm8s }, &.{ 0x83 }, 0, .none, .none },
60 .{ .add, .mi, &.{ .rm64, .imm8s }, &.{ 0x83 }, 0, .long, .none },
61 .{ .add, .mr, &.{ .rm8, .r8 }, &.{ 0x00 }, 0, .none, .none },
62 .{ .add, .mr, &.{ .rm8, .r8 }, &.{ 0x00 }, 0, .rex, .none },
63 .{ .add, .mr, &.{ .rm16, .r16 }, &.{ 0x01 }, 0, .short, .none },
64 .{ .add, .mr, &.{ .rm32, .r32 }, &.{ 0x01 }, 0, .none, .none },
65 .{ .add, .mr, &.{ .rm64, .r64 }, &.{ 0x01 }, 0, .long, .none },
66 .{ .add, .rm, &.{ .r8, .rm8 }, &.{ 0x02 }, 0, .none, .none },
67 .{ .add, .rm, &.{ .r8, .rm8 }, &.{ 0x02 }, 0, .rex, .none },
68 .{ .add, .rm, &.{ .r16, .rm16 }, &.{ 0x03 }, 0, .short, .none },
69 .{ .add, .rm, &.{ .r32, .rm32 }, &.{ 0x03 }, 0, .none, .none },
70 .{ .add, .rm, &.{ .r64, .rm64 }, &.{ 0x03 }, 0, .long, .none },
71
72 .{ .@"and", .zi, &.{ .al, .imm8 }, &.{ 0x24 }, 0, .none, .none },
73 .{ .@"and", .zi, &.{ .ax, .imm16 }, &.{ 0x25 }, 0, .short, .none },
74 .{ .@"and", .zi, &.{ .eax, .imm32 }, &.{ 0x25 }, 0, .none, .none },
75 .{ .@"and", .zi, &.{ .rax, .imm32s }, &.{ 0x25 }, 0, .long, .none },
76 .{ .@"and", .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 4, .none, .none },
77 .{ .@"and", .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 4, .rex, .none },
78 .{ .@"and", .mi, &.{ .rm16, .imm16 }, &.{ 0x81 }, 4, .short, .none },
79 .{ .@"and", .mi, &.{ .rm32, .imm32 }, &.{ 0x81 }, 4, .none, .none },
80 .{ .@"and", .mi, &.{ .rm64, .imm32s }, &.{ 0x81 }, 4, .long, .none },
81 .{ .@"and", .mi, &.{ .rm16, .imm8s }, &.{ 0x83 }, 4, .short, .none },
82 .{ .@"and", .mi, &.{ .rm32, .imm8s }, &.{ 0x83 }, 4, .none, .none },
83 .{ .@"and", .mi, &.{ .rm64, .imm8s }, &.{ 0x83 }, 4, .long, .none },
84 .{ .@"and", .mr, &.{ .rm8, .r8 }, &.{ 0x20 }, 0, .none, .none },
85 .{ .@"and", .mr, &.{ .rm8, .r8 }, &.{ 0x20 }, 0, .rex, .none },
86 .{ .@"and", .mr, &.{ .rm16, .r16 }, &.{ 0x21 }, 0, .short, .none },
87 .{ .@"and", .mr, &.{ .rm32, .r32 }, &.{ 0x21 }, 0, .none, .none },
88 .{ .@"and", .mr, &.{ .rm64, .r64 }, &.{ 0x21 }, 0, .long, .none },
89 .{ .@"and", .rm, &.{ .r8, .rm8 }, &.{ 0x22 }, 0, .none, .none },
90 .{ .@"and", .rm, &.{ .r8, .rm8 }, &.{ 0x22 }, 0, .rex, .none },
91 .{ .@"and", .rm, &.{ .r16, .rm16 }, &.{ 0x23 }, 0, .short, .none },
92 .{ .@"and", .rm, &.{ .r32, .rm32 }, &.{ 0x23 }, 0, .none, .none },
93 .{ .@"and", .rm, &.{ .r64, .rm64 }, &.{ 0x23 }, 0, .long, .none },
94
95 .{ .arpl, .mr, &.{ .rm16, .r16 }, &.{ 0x63 }, 0, .none, .@"32bit" },
96
97 .{ .bound, .rm, &.{ .r16, .m }, &.{ 0x62 }, 0, .short, .@"32bit" },
98 .{ .bound, .rm, &.{ .r32, .m }, &.{ 0x62 }, 0, .short, .@"32bit" },
99
100 .{ .bsf, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0xbc }, 0, .short, .none },
101 .{ .bsf, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0xbc }, 0, .none, .none },
102 .{ .bsf, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0xbc }, 0, .long, .none },
103
104 .{ .bsr, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0xbd }, 0, .short, .none },
105 .{ .bsr, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0xbd }, 0, .none, .none },
106 .{ .bsr, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0xbd }, 0, .long, .none },
107
108 .{ .bswap, .o, &.{ .r32 }, &.{ 0x0f, 0xc8 }, 0, .none, .none },
109 .{ .bswap, .o, &.{ .r64 }, &.{ 0x0f, 0xc8 }, 0, .long, .none },
110
111 .{ .bt, .mr, &.{ .rm16, .r16 }, &.{ 0x0f, 0xa3 }, 0, .short, .none },
112 .{ .bt, .mr, &.{ .rm32, .r32 }, &.{ 0x0f, 0xa3 }, 0, .none, .none },
113 .{ .bt, .mr, &.{ .rm64, .r64 }, &.{ 0x0f, 0xa3 }, 0, .long, .none },
114 .{ .bt, .mi, &.{ .rm16, .imm8 }, &.{ 0x0f, 0xba }, 4, .short, .none },
115 .{ .bt, .mi, &.{ .rm32, .imm8 }, &.{ 0x0f, 0xba }, 4, .none, .none },
116 .{ .bt, .mi, &.{ .rm64, .imm8 }, &.{ 0x0f, 0xba }, 4, .long, .none },
117
118 .{ .btc, .mr, &.{ .rm16, .r16 }, &.{ 0x0f, 0xbb }, 0, .short, .none },
119 .{ .btc, .mr, &.{ .rm32, .r32 }, &.{ 0x0f, 0xbb }, 0, .none, .none },
120 .{ .btc, .mr, &.{ .rm64, .r64 }, &.{ 0x0f, 0xbb }, 0, .long, .none },
121 .{ .btc, .mi, &.{ .rm16, .imm8 }, &.{ 0x0f, 0xba }, 7, .short, .none },
122 .{ .btc, .mi, &.{ .rm32, .imm8 }, &.{ 0x0f, 0xba }, 7, .none, .none },
123 .{ .btc, .mi, &.{ .rm64, .imm8 }, &.{ 0x0f, 0xba }, 7, .long, .none },
124
125 .{ .btr, .mr, &.{ .rm16, .r16 }, &.{ 0x0f, 0xb3 }, 0, .short, .none },
126 .{ .btr, .mr, &.{ .rm32, .r32 }, &.{ 0x0f, 0xb3 }, 0, .none, .none },
127 .{ .btr, .mr, &.{ .rm64, .r64 }, &.{ 0x0f, 0xb3 }, 0, .long, .none },
128 .{ .btr, .mi, &.{ .rm16, .imm8 }, &.{ 0x0f, 0xba }, 6, .short, .none },
129 .{ .btr, .mi, &.{ .rm32, .imm8 }, &.{ 0x0f, 0xba }, 6, .none, .none },
130 .{ .btr, .mi, &.{ .rm64, .imm8 }, &.{ 0x0f, 0xba }, 6, .long, .none },
131
132 .{ .bts, .mr, &.{ .rm16, .r16 }, &.{ 0x0f, 0xab }, 0, .short, .none },
133 .{ .bts, .mr, &.{ .rm32, .r32 }, &.{ 0x0f, 0xab }, 0, .none, .none },
134 .{ .bts, .mr, &.{ .rm64, .r64 }, &.{ 0x0f, 0xab }, 0, .long, .none },
135 .{ .bts, .mi, &.{ .rm16, .imm8 }, &.{ 0x0f, 0xba }, 5, .short, .none },
136 .{ .bts, .mi, &.{ .rm32, .imm8 }, &.{ 0x0f, 0xba }, 5, .none, .none },
137 .{ .bts, .mi, &.{ .rm64, .imm8 }, &.{ 0x0f, 0xba }, 5, .long, .none },
138
139 .{ .call, .d, &.{ .rel32 }, &.{ 0xe8 }, 0, .none, .none },
140 .{ .call, .m, &.{ .rm32 }, &.{ 0xff }, 2, .none, .@"32bit" },
141 .{ .call, .m, &.{ .rm64 }, &.{ 0xff }, 2, .none, .@"64bit" },
142
143 .{ .cbw, .z, &.{}, &.{ 0x98 }, 0, .short, .none },
144 .{ .cwde, .z, &.{}, &.{ 0x98 }, 0, .none, .none },
145 .{ .cdqe, .z, &.{}, &.{ 0x98 }, 0, .long, .none },
146
147 .{ .clac, .z, &.{}, &.{ 0x0f, 0x01, 0xca }, 0, .none, .smap },
148
149 .{ .clc, .z, &.{}, &.{ 0xf8 }, 0, .none, .none },
150
151 .{ .cld, .z, &.{}, &.{ 0xfc }, 0, .none, .none },
152
153 .{ .cldemote, .m, &.{ .m8 }, &.{ 0x0f, 0x1c }, 0, .none, .cldemote },
154
155 .{ .clflush, .m, &.{ .m8 }, &.{ 0x0f, 0xae }, 7, .none, .none },
156
157 .{ .clflushopt, .m, &.{ .m8 }, &.{ 0x66, 0x0f, 0xae }, 7, .none, .clflushopt },
158
159 .{ .cli, .z, &.{}, &.{ 0xfa }, 0, .none, .none },
160
161 .{ .clrssbsy, .m, &.{ .m64 }, &.{ 0xf3, 0x0f, 0xae }, 6, .none, .shstk },
162
163 .{ .clts, .z, &.{}, &.{ 0x0f, 0x06 }, 0, .none, .none },
164
165 .{ .clui, .z, &.{}, &.{ 0xf3, 0x0f, 0x01, 0xee }, 0, .none, .uintr },
166
167 .{ .clwb, .m, &.{ .m8 }, &.{ 0x66, 0x0f, 0xae }, 6, .none, .clwb },
168
169 .{ .cmc, .z, &.{}, &.{ 0xf5 }, 0, .none, .none },
170
171 .{ .cmova, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x47 }, 0, .short, .cmov },
172 .{ .cmova, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x47 }, 0, .none, .cmov },
173 .{ .cmova, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x47 }, 0, .long, .cmov },
174 .{ .cmovae, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x43 }, 0, .short, .cmov },
175 .{ .cmovae, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x43 }, 0, .none, .cmov },
176 .{ .cmovae, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x43 }, 0, .long, .cmov },
177 .{ .cmovb, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x42 }, 0, .short, .cmov },
178 .{ .cmovb, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x42 }, 0, .none, .cmov },
179 .{ .cmovb, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x42 }, 0, .long, .cmov },
180 .{ .cmovbe, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x46 }, 0, .short, .cmov },
181 .{ .cmovbe, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x46 }, 0, .none, .cmov },
182 .{ .cmovbe, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x46 }, 0, .long, .cmov },
183 .{ .cmovc, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x42 }, 0, .short, .cmov },
184 .{ .cmovc, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x42 }, 0, .none, .cmov },
185 .{ .cmovc, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x42 }, 0, .long, .cmov },
186 .{ .cmove, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x44 }, 0, .short, .cmov },
187 .{ .cmove, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x44 }, 0, .none, .cmov },
188 .{ .cmove, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x44 }, 0, .long, .cmov },
189 .{ .cmovg, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4f }, 0, .short, .cmov },
190 .{ .cmovg, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4f }, 0, .none, .cmov },
191 .{ .cmovg, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4f }, 0, .long, .cmov },
192 .{ .cmovge, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4d }, 0, .short, .cmov },
193 .{ .cmovge, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4d }, 0, .none, .cmov },
194 .{ .cmovge, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4d }, 0, .long, .cmov },
195 .{ .cmovl, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4c }, 0, .short, .cmov },
196 .{ .cmovl, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4c }, 0, .none, .cmov },
197 .{ .cmovl, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4c }, 0, .long, .cmov },
198 .{ .cmovle, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4e }, 0, .short, .cmov },
199 .{ .cmovle, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4e }, 0, .none, .cmov },
200 .{ .cmovle, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4e }, 0, .long, .cmov },
201 .{ .cmovna, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x46 }, 0, .short, .cmov },
202 .{ .cmovna, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x46 }, 0, .none, .cmov },
203 .{ .cmovna, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x46 }, 0, .long, .cmov },
204 .{ .cmovnae, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x42 }, 0, .short, .cmov },
205 .{ .cmovnae, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x42 }, 0, .none, .cmov },
206 .{ .cmovnae, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x42 }, 0, .long, .cmov },
207 .{ .cmovnb, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x43 }, 0, .short, .cmov },
208 .{ .cmovnb, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x43 }, 0, .none, .cmov },
209 .{ .cmovnb, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x43 }, 0, .long, .cmov },
210 .{ .cmovnbe, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x47 }, 0, .short, .cmov },
211 .{ .cmovnbe, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x47 }, 0, .none, .cmov },
212 .{ .cmovnbe, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x47 }, 0, .long, .cmov },
213 .{ .cmovnc, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x43 }, 0, .short, .cmov },
214 .{ .cmovnc, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x43 }, 0, .none, .cmov },
215 .{ .cmovnc, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x43 }, 0, .long, .cmov },
216 .{ .cmovne, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x45 }, 0, .short, .cmov },
217 .{ .cmovne, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x45 }, 0, .none, .cmov },
218 .{ .cmovne, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x45 }, 0, .long, .cmov },
219 .{ .cmovng, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4e }, 0, .short, .cmov },
220 .{ .cmovng, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4e }, 0, .none, .cmov },
221 .{ .cmovng, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4e }, 0, .long, .cmov },
222 .{ .cmovnge, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4c }, 0, .short, .cmov },
223 .{ .cmovnge, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4c }, 0, .none, .cmov },
224 .{ .cmovnge, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4c }, 0, .long, .cmov },
225 .{ .cmovnl, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4d }, 0, .short, .cmov },
226 .{ .cmovnl, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4d }, 0, .none, .cmov },
227 .{ .cmovnl, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4d }, 0, .long, .cmov },
228 .{ .cmovnle, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4f }, 0, .short, .cmov },
229 .{ .cmovnle, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4f }, 0, .none, .cmov },
230 .{ .cmovnle, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4f }, 0, .long, .cmov },
231 .{ .cmovno, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x41 }, 0, .short, .cmov },
232 .{ .cmovno, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x41 }, 0, .none, .cmov },
233 .{ .cmovno, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x41 }, 0, .long, .cmov },
234 .{ .cmovnp, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4b }, 0, .short, .cmov },
235 .{ .cmovnp, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4b }, 0, .none, .cmov },
236 .{ .cmovnp, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4b }, 0, .long, .cmov },
237 .{ .cmovns, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x49 }, 0, .short, .cmov },
238 .{ .cmovns, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x49 }, 0, .none, .cmov },
239 .{ .cmovns, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x49 }, 0, .long, .cmov },
240 .{ .cmovnz, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x45 }, 0, .short, .cmov },
241 .{ .cmovnz, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x45 }, 0, .none, .cmov },
242 .{ .cmovnz, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x45 }, 0, .long, .cmov },
243 .{ .cmovo, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x40 }, 0, .short, .cmov },
244 .{ .cmovo, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x40 }, 0, .none, .cmov },
245 .{ .cmovo, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x40 }, 0, .long, .cmov },
246 .{ .cmovp, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4a }, 0, .short, .cmov },
247 .{ .cmovp, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4a }, 0, .none, .cmov },
248 .{ .cmovp, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4a }, 0, .long, .cmov },
249 .{ .cmovpe, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4a }, 0, .short, .cmov },
250 .{ .cmovpe, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4a }, 0, .none, .cmov },
251 .{ .cmovpe, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4a }, 0, .long, .cmov },
252 .{ .cmovpo, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x4b }, 0, .short, .cmov },
253 .{ .cmovpo, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x4b }, 0, .none, .cmov },
254 .{ .cmovpo, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x4b }, 0, .long, .cmov },
255 .{ .cmovs, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x48 }, 0, .short, .cmov },
256 .{ .cmovs, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x48 }, 0, .none, .cmov },
257 .{ .cmovs, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x48 }, 0, .long, .cmov },
258 .{ .cmovz, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x44 }, 0, .short, .cmov },
259 .{ .cmovz, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x44 }, 0, .none, .cmov },
260 .{ .cmovz, .rm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x44 }, 0, .long, .cmov },
261
262 .{ .cmp, .zi, &.{ .al, .imm8 }, &.{ 0x3c }, 0, .none, .none },
263 .{ .cmp, .zi, &.{ .ax, .imm16 }, &.{ 0x3d }, 0, .short, .none },
264 .{ .cmp, .zi, &.{ .eax, .imm32 }, &.{ 0x3d }, 0, .none, .none },
265 .{ .cmp, .zi, &.{ .rax, .imm32s }, &.{ 0x3d }, 0, .long, .none },
266 .{ .cmp, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 7, .none, .none },
267 .{ .cmp, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 7, .rex, .none },
268 .{ .cmp, .mi, &.{ .rm16, .imm16 }, &.{ 0x81 }, 7, .short, .none },
269 .{ .cmp, .mi, &.{ .rm32, .imm32 }, &.{ 0x81 }, 7, .none, .none },
270 .{ .cmp, .mi, &.{ .rm64, .imm32s }, &.{ 0x81 }, 7, .long, .none },
271 .{ .cmp, .mi, &.{ .rm16, .imm8s }, &.{ 0x83 }, 7, .short, .none },
272 .{ .cmp, .mi, &.{ .rm32, .imm8s }, &.{ 0x83 }, 7, .none, .none },
273 .{ .cmp, .mi, &.{ .rm64, .imm8s }, &.{ 0x83 }, 7, .long, .none },
274 .{ .cmp, .mr, &.{ .rm8, .r8 }, &.{ 0x38 }, 0, .none, .none },
275 .{ .cmp, .mr, &.{ .rm8, .r8 }, &.{ 0x38 }, 0, .rex, .none },
276 .{ .cmp, .mr, &.{ .rm16, .r16 }, &.{ 0x39 }, 0, .short, .none },
277 .{ .cmp, .mr, &.{ .rm32, .r32 }, &.{ 0x39 }, 0, .none, .none },
278 .{ .cmp, .mr, &.{ .rm64, .r64 }, &.{ 0x39 }, 0, .long, .none },
279 .{ .cmp, .rm, &.{ .r8, .rm8 }, &.{ 0x3a }, 0, .none, .none },
280 .{ .cmp, .rm, &.{ .r8, .rm8 }, &.{ 0x3a }, 0, .rex, .none },
281 .{ .cmp, .rm, &.{ .r16, .rm16 }, &.{ 0x3b }, 0, .short, .none },
282 .{ .cmp, .rm, &.{ .r32, .rm32 }, &.{ 0x3b }, 0, .none, .none },
283 .{ .cmp, .rm, &.{ .r64, .rm64 }, &.{ 0x3b }, 0, .long, .none },
284
285 .{ .cmps, .z, &.{ .m8, .m8 }, &.{ 0xa6 }, 0, .none, .none },
286 .{ .cmps, .z, &.{ .m16, .m16 }, &.{ 0xa7 }, 0, .short, .none },
287 .{ .cmps, .z, &.{ .m32, .m32 }, &.{ 0xa7 }, 0, .none, .none },
288 .{ .cmps, .z, &.{ .m64, .m64 }, &.{ 0xa7 }, 0, .long, .none },
289 .{ .cmpsb, .z, &.{ }, &.{ 0xa6 }, 0, .none, .none },
290 .{ .cmpsw, .z, &.{ }, &.{ 0xa7 }, 0, .short, .none },
291 .{ .cmpsd, .z, &.{ }, &.{ 0xa7 }, 0, .none, .none },
292 .{ .cmpsq, .z, &.{ }, &.{ 0xa7 }, 0, .long, .none },
293
294 .{ .cmpxchg, .mr, &.{ .rm8, .r8 }, &.{ 0x0f, 0xb0 }, 0, .none, .none },
295 .{ .cmpxchg, .mr, &.{ .rm8, .r8 }, &.{ 0x0f, 0xb0 }, 0, .rex, .none },
296 .{ .cmpxchg, .mr, &.{ .rm16, .r16 }, &.{ 0x0f, 0xb1 }, 0, .short, .none },
297 .{ .cmpxchg, .mr, &.{ .rm32, .r32 }, &.{ 0x0f, 0xb1 }, 0, .none, .none },
298 .{ .cmpxchg, .mr, &.{ .rm64, .r64 }, &.{ 0x0f, 0xb1 }, 0, .long, .none },
299
300 .{ .cmpxchg8b, .m, &.{ .m64 }, &.{ 0x0f, 0xc7 }, 1, .none, .none },
301 .{ .cmpxchg16b, .m, &.{ .m128 }, &.{ 0x0f, 0xc7 }, 1, .long, .none },
302
303 .{ .cpuid, .z, &.{}, &.{ 0x0f, 0xa2 }, 0, .none, .none },
304
305 .{ .cwd, .z, &.{}, &.{ 0x99 }, 0, .short, .none },
306 .{ .cdq, .z, &.{}, &.{ 0x99 }, 0, .none, .none },
307 .{ .cqo, .z, &.{}, &.{ 0x99 }, 0, .long, .none },
308
309 .{ .daa, .z, &.{}, &.{ 0x27 }, 0, .none, .@"32bit" },
310
311 .{ .das, .z, &.{}, &.{ 0x27 }, 0, .none, .@"32bit" },
312
313 .{ .dec, .m, &.{ .rm8 }, &.{ 0xfe }, 1, .none, .none },
314 .{ .dec, .m, &.{ .rm8 }, &.{ 0xfe }, 1, .rex, .none },
315 .{ .dec, .m, &.{ .rm16 }, &.{ 0xff }, 1, .short, .none },
316 .{ .dec, .m, &.{ .rm32 }, &.{ 0xff }, 1, .none, .none },
317 .{ .dec, .m, &.{ .rm64 }, &.{ 0xff }, 1, .long, .none },
318
319 .{ .div, .m, &.{ .rm8 }, &.{ 0xf6 }, 6, .none, .none },
320 .{ .div, .m, &.{ .rm8 }, &.{ 0xf6 }, 6, .rex, .none },
321 .{ .div, .m, &.{ .rm16 }, &.{ 0xf7 }, 6, .short, .none },
322 .{ .div, .m, &.{ .rm32 }, &.{ 0xf7 }, 6, .none, .none },
323 .{ .div, .m, &.{ .rm64 }, &.{ 0xf7 }, 6, .long, .none },
324
325 .{ .endbr32, .z, &.{}, &.{ 0xf3, 0x0f, 0x1e, 0xfb }, 0, .none, .none },
326
327 .{ .endbr64, .z, &.{}, &.{ 0xf3, 0x0f, 0x1e, 0xfa }, 0, .none, .none },
328
329 .{ .enqcmd, .rm, &.{ .r32, .m }, &.{ 0xf2, 0x0f, 0x38, 0xf8 }, 0, .none, .enqcmd },
330 .{ .enqcmd, .rm, &.{ .r64, .m }, &.{ 0xf2, 0x0f, 0x38, 0xf8 }, 0, .none, .enqcmd },
331
332 .{ .enqcmds, .rm, &.{ .r32, .m }, &.{ 0xf3, 0x0f, 0x38, 0xf8 }, 0, .none, .enqcmd },
333 .{ .enqcmds, .rm, &.{ .r64, .m }, &.{ 0xf3, 0x0f, 0x38, 0xf8 }, 0, .none, .enqcmd },
334
335 .{ .enter, .ii, &.{ .imm16, .imm8 }, &.{ 0xc8 }, 0, .none, .none },
336
337 .{ .hlt, .z, &.{}, &.{ 0xf4 }, 0, .none, .none },
338
339 .{ .hreset, .ia, &.{ .imm8 }, &.{ 0xf3, 0x0f, 0x3a, 0xf0 }, 0, .none, .hreset },
340 .{ .hreset, .ia, &.{ .imm8, .eax }, &.{ 0xf3, 0x0f, 0x3a, 0xf0 }, 0, .none, .hreset },
341
342 .{ .idiv, .m, &.{ .rm8 }, &.{ 0xf6 }, 7, .none, .none },
343 .{ .idiv, .m, &.{ .rm8 }, &.{ 0xf6 }, 7, .rex, .none },
344 .{ .idiv, .m, &.{ .rm16 }, &.{ 0xf7 }, 7, .short, .none },
345 .{ .idiv, .m, &.{ .rm32 }, &.{ 0xf7 }, 7, .none, .none },
346 .{ .idiv, .m, &.{ .rm64 }, &.{ 0xf7 }, 7, .long, .none },
347
348 .{ .imul, .m, &.{ .rm8 }, &.{ 0xf6 }, 5, .none, .none },
349 .{ .imul, .m, &.{ .rm8 }, &.{ 0xf6 }, 5, .rex, .none },
350 .{ .imul, .m, &.{ .rm16, }, &.{ 0xf7 }, 5, .short, .none },
351 .{ .imul, .m, &.{ .rm32, }, &.{ 0xf7 }, 5, .none, .none },
352 .{ .imul, .m, &.{ .rm64, }, &.{ 0xf7 }, 5, .long, .none },
353 .{ .imul, .rm, &.{ .r16, .rm16, }, &.{ 0x0f, 0xaf }, 0, .short, .none },
354 .{ .imul, .rm, &.{ .r32, .rm32, }, &.{ 0x0f, 0xaf }, 0, .none, .none },
355 .{ .imul, .rm, &.{ .r64, .rm64, }, &.{ 0x0f, 0xaf }, 0, .long, .none },
356 .{ .imul, .rmi, &.{ .r16, .rm16, .imm8s }, &.{ 0x6b }, 0, .short, .none },
357 .{ .imul, .rmi, &.{ .r32, .rm32, .imm8s }, &.{ 0x6b }, 0, .none, .none },
358 .{ .imul, .rmi, &.{ .r64, .rm64, .imm8s }, &.{ 0x6b }, 0, .long, .none },
359 .{ .imul, .rmi, &.{ .r16, .rm16, .imm16 }, &.{ 0x69 }, 0, .short, .none },
360 .{ .imul, .rmi, &.{ .r32, .rm32, .imm32 }, &.{ 0x69 }, 0, .none, .none },
361 .{ .imul, .rmi, &.{ .r64, .rm64, .imm32 }, &.{ 0x69 }, 0, .long, .none },
362
363 .{ .in, .zi, &.{ .al, .imm8 }, &.{ 0xe4 }, 0, .none, .none },
364 .{ .in, .zi, &.{ .ax, .imm8 }, &.{ 0xe5 }, 0, .short, .none },
365 .{ .in, .zi, &.{ .eax, .imm8 }, &.{ 0xe5 }, 0, .none, .none },
366 .{ .in, .z, &.{ .al, .dx }, &.{ 0xec }, 0, .none, .none },
367 .{ .in, .z, &.{ .ax, .dx }, &.{ 0xed }, 0, .short, .none },
368 .{ .in, .z, &.{ .eax, .dx }, &.{ 0xed }, 0, .none, .none },
369
370 .{ .inc, .m, &.{ .rm8 }, &.{ 0xfe }, 0, .none, .none },
371 .{ .inc, .m, &.{ .rm8 }, &.{ 0xfe }, 0, .rex, .none },
372 .{ .inc, .m, &.{ .rm16 }, &.{ 0xff }, 0, .short, .none },
373 .{ .inc, .m, &.{ .rm32 }, &.{ 0xff }, 0, .none, .none },
374 .{ .inc, .m, &.{ .rm64 }, &.{ 0xff }, 0, .long, .none },
375
376 .{ .incsspd, .m, &.{ .r32 }, &.{ 0xf3, 0x0f, 0xae }, 5, .none, .shstk },
377 .{ .incsspq, .m, &.{ .r64 }, &.{ 0xf3, 0x0f, 0xae }, 5, .long, .shstk },
378
379 .{ .ins, .z, &.{ .m8, .dx }, &.{ 0x6c }, 0, .none, .none },
380 .{ .ins, .z, &.{ .m16, .dx }, &.{ 0x6d }, 0, .short, .none },
381 .{ .ins, .z, &.{ .m32, .dx }, &.{ 0x6d }, 0, .none, .none },
382 .{ .insb, .z, &.{ }, &.{ 0x6c }, 0, .none, .none },
383 .{ .insw, .z, &.{ }, &.{ 0x6d }, 0, .short, .none },
384 .{ .insd, .z, &.{ }, &.{ 0x6d }, 0, .none, .none },
385
386 .{ .int3, .z, &.{ }, &.{ 0xcc }, 0, .none, .none },
387 .{ .int, .i, &.{ .imm8 }, &.{ 0xcd }, 0, .none, .none },
388 .{ .into, .z, &.{ }, &.{ 0xce }, 0, .none, .@"32bit" },
389 .{ .int1, .z, &.{ }, &.{ 0xf1 }, 0, .none, .none },
390
391 .{ .invd, .z, &.{}, &.{ 0x0f, 0x08 }, 0, .none, .none },
392
393 .{ .invlpg, .m, &.{ .m }, &.{ 0x0f, 0x01 }, 7, .none, .none },
394
395 .{ .invpcid, .rm, &.{ .r32, .m128 }, &.{ 0x66, 0x0f, 0x38, 0x82 }, 0, .none, .@"invpcid 32bit" },
396 .{ .invpcid, .rm, &.{ .r64, .m128 }, &.{ 0x66, 0x0f, 0x38, 0x82 }, 0, .none, .@"invpcid 64bit" },
397
398 .{ .iretw, .z, &.{}, &.{ 0xcf }, 0, .short, .none },
399 .{ .iretd, .z, &.{}, &.{ 0xcf }, 0, .none, .none },
400 .{ .iret, .z, &.{}, &.{ 0xcf }, 0, .none, .none },
401 .{ .iretq, .z, &.{}, &.{ 0xcf }, 0, .long, .none },
402
403 .{ .ja, .d, &.{ .rel32 }, &.{ 0x0f, 0x87 }, 0, .none, .none },
404 .{ .jae, .d, &.{ .rel32 }, &.{ 0x0f, 0x83 }, 0, .none, .none },
405 .{ .jb, .d, &.{ .rel32 }, &.{ 0x0f, 0x82 }, 0, .none, .none },
406 .{ .jbe, .d, &.{ .rel32 }, &.{ 0x0f, 0x86 }, 0, .none, .none },
407 .{ .jc, .d, &.{ .rel32 }, &.{ 0x0f, 0x82 }, 0, .none, .none },
408 .{ .jcxz, .d, &.{ .rel8 }, &.{ 0xe3 }, 0, .short, .@"32bit" },
409 .{ .jecxz, .d, &.{ .rel8 }, &.{ 0xe3 }, 0, .none, .@"32bit" },
410 .{ .jrcxz, .d, &.{ .rel8 }, &.{ 0xe3 }, 0, .none, .@"64bit" },
411 .{ .je, .d, &.{ .rel32 }, &.{ 0x0f, 0x84 }, 0, .none, .none },
412 .{ .jg, .d, &.{ .rel32 }, &.{ 0x0f, 0x8f }, 0, .none, .none },
413 .{ .jge, .d, &.{ .rel32 }, &.{ 0x0f, 0x8d }, 0, .none, .none },
414 .{ .jl, .d, &.{ .rel32 }, &.{ 0x0f, 0x8c }, 0, .none, .none },
415 .{ .jle, .d, &.{ .rel32 }, &.{ 0x0f, 0x8e }, 0, .none, .none },
416 .{ .jna, .d, &.{ .rel32 }, &.{ 0x0f, 0x86 }, 0, .none, .none },
417 .{ .jnae, .d, &.{ .rel32 }, &.{ 0x0f, 0x82 }, 0, .none, .none },
418 .{ .jnb, .d, &.{ .rel32 }, &.{ 0x0f, 0x83 }, 0, .none, .none },
419 .{ .jnbe, .d, &.{ .rel32 }, &.{ 0x0f, 0x87 }, 0, .none, .none },
420 .{ .jnc, .d, &.{ .rel32 }, &.{ 0x0f, 0x83 }, 0, .none, .none },
421 .{ .jne, .d, &.{ .rel32 }, &.{ 0x0f, 0x85 }, 0, .none, .none },
422 .{ .jng, .d, &.{ .rel32 }, &.{ 0x0f, 0x8e }, 0, .none, .none },
423 .{ .jnge, .d, &.{ .rel32 }, &.{ 0x0f, 0x8c }, 0, .none, .none },
424 .{ .jnl, .d, &.{ .rel32 }, &.{ 0x0f, 0x8d }, 0, .none, .none },
425 .{ .jnle, .d, &.{ .rel32 }, &.{ 0x0f, 0x8f }, 0, .none, .none },
426 .{ .jno, .d, &.{ .rel32 }, &.{ 0x0f, 0x81 }, 0, .none, .none },
427 .{ .jnp, .d, &.{ .rel32 }, &.{ 0x0f, 0x8b }, 0, .none, .none },
428 .{ .jns, .d, &.{ .rel32 }, &.{ 0x0f, 0x89 }, 0, .none, .none },
429 .{ .jnz, .d, &.{ .rel32 }, &.{ 0x0f, 0x85 }, 0, .none, .none },
430 .{ .jo, .d, &.{ .rel32 }, &.{ 0x0f, 0x80 }, 0, .none, .none },
431 .{ .jp, .d, &.{ .rel32 }, &.{ 0x0f, 0x8a }, 0, .none, .none },
432 .{ .jpe, .d, &.{ .rel32 }, &.{ 0x0f, 0x8a }, 0, .none, .none },
433 .{ .jpo, .d, &.{ .rel32 }, &.{ 0x0f, 0x8b }, 0, .none, .none },
434 .{ .js, .d, &.{ .rel32 }, &.{ 0x0f, 0x88 }, 0, .none, .none },
435 .{ .jz, .d, &.{ .rel32 }, &.{ 0x0f, 0x84 }, 0, .none, .none },
436
437 .{ .jmp, .d, &.{ .rel32 }, &.{ 0xe9 }, 0, .none, .none },
438 .{ .jmp, .m, &.{ .rm64 }, &.{ 0xff }, 4, .none, .none },
439
440 .{ .lahf, .z, &.{}, &.{ 0x9f }, 0, .none, .@"32bit" },
441 .{ .lahf, .z, &.{}, &.{ 0x9f }, 0, .none, .sahf },
442
443 .{ .lar, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x02 }, 0, .none, .none },
444 .{ .lar, .rm, &.{ .r32, .r32_m16 }, &.{ 0x0f, 0x02 }, 0, .none, .none },
445
446 .{ .lea, .rm, &.{ .r16, .m }, &.{ 0x8d }, 0, .short, .none },
447 .{ .lea, .rm, &.{ .r32, .m }, &.{ 0x8d }, 0, .none, .none },
448 .{ .lea, .rm, &.{ .r64, .m }, &.{ 0x8d }, 0, .long, .none },
449
450 .{ .leave, .z, &.{}, &.{ 0xc9 }, 0, .none, .none },
451
452 .{ .lfence, .z, &.{}, &.{ 0x0f, 0xae, 0xe8 }, 0, .none, .none },
453
454 .{ .lgdt, .m, &.{ .m }, &.{ 0x0f, 0x01 }, 2, .none, .none },
455 .{ .lidt, .m, &.{ .m }, &.{ 0x0f, 0x01 }, 3, .none, .none },
456
457 .{ .lldt, .m, &.{ .rm16 }, &.{ 0x0f, 0x00 }, 2, .none, .none },
458
459 .{ .lmsw, .m, &.{ .rm16 }, &.{ 0x0f, 0x01 }, 6, .none, .none },
460
461 .{ .lods, .z, &.{ .m8 }, &.{ 0xac }, 0, .none, .none },
462 .{ .lods, .z, &.{ .m16 }, &.{ 0xad }, 0, .short, .none },
463 .{ .lods, .z, &.{ .m32 }, &.{ 0xad }, 0, .none, .none },
464 .{ .lods, .z, &.{ .m64 }, &.{ 0xad }, 0, .long, .none },
465 .{ .lodsb, .z, &.{ }, &.{ 0xac }, 0, .none, .none },
466 .{ .lodsw, .z, &.{ }, &.{ 0xad }, 0, .short, .none },
467 .{ .lodsd, .z, &.{ }, &.{ 0xad }, 0, .none, .none },
468 .{ .lodsq, .z, &.{ }, &.{ 0xad }, 0, .long, .none },
469
470 .{ .loop, .d, &.{ .rel8 }, &.{ 0xe2 }, 0, .none, .none },
471 .{ .loope, .d, &.{ .rel8 }, &.{ 0xe1 }, 0, .none, .none },
472 .{ .loopne, .d, &.{ .rel8 }, &.{ 0xe0 }, 0, .none, .none },
473
474 .{ .lsl, .rm, &.{ .r16, .rm16 }, &.{ 0x0f, 0x03 }, 0, .none, .none },
475 .{ .lsl, .rm, &.{ .r32, .r32_m16 }, &.{ 0x0f, 0x03 }, 0, .none, .none },
476 .{ .lsl, .rm, &.{ .r64, .r32_m16 }, &.{ 0x0f, 0x03 }, 0, .none, .none },
477
478 .{ .ltr, .m, &.{ .rm16 }, &.{ 0x0f, 0x00 }, 3, .none, .none },
479
480 .{ .mfence, .z, &.{}, &.{ 0x0f, 0xae, 0xf0 }, 0, .none, .none },
481
482 .{ .mov, .mr, &.{ .rm8, .r8 }, &.{ 0x88 }, 0, .none, .none },
483 .{ .mov, .mr, &.{ .rm8, .r8 }, &.{ 0x88 }, 0, .rex, .none },
484 .{ .mov, .mr, &.{ .rm16, .r16 }, &.{ 0x89 }, 0, .short, .none },
485 .{ .mov, .mr, &.{ .rm32, .r32 }, &.{ 0x89 }, 0, .none, .none },
486 .{ .mov, .mr, &.{ .rm64, .r64 }, &.{ 0x89 }, 0, .long, .none },
487 .{ .mov, .rm, &.{ .r8, .rm8 }, &.{ 0x8a }, 0, .none, .none },
488 .{ .mov, .rm, &.{ .r8, .rm8 }, &.{ 0x8a }, 0, .rex, .none },
489 .{ .mov, .rm, &.{ .r16, .rm16 }, &.{ 0x8b }, 0, .short, .none },
490 .{ .mov, .rm, &.{ .r32, .rm32 }, &.{ 0x8b }, 0, .none, .none },
491 .{ .mov, .rm, &.{ .r64, .rm64 }, &.{ 0x8b }, 0, .long, .none },
492 .{ .mov, .mr, &.{ .rm16, .sreg }, &.{ 0x8c }, 0, .short, .none },
493 .{ .mov, .mr, &.{ .r32_m16, .sreg }, &.{ 0x8c }, 0, .none, .none },
494 .{ .mov, .mr, &.{ .r64_m16, .sreg }, &.{ 0x8c }, 0, .long, .none },
495 .{ .mov, .rm, &.{ .sreg, .rm16 }, &.{ 0x8e }, 0, .short, .none },
496 .{ .mov, .rm, &.{ .sreg, .r32_m16 }, &.{ 0x8e }, 0, .none, .none },
497 .{ .mov, .rm, &.{ .sreg, .r64_m16 }, &.{ 0x8e }, 0, .long, .none },
498 .{ .mov, .fd, &.{ .al, .moffs }, &.{ 0xa0 }, 0, .none, .none },
499 .{ .mov, .fd, &.{ .ax, .moffs }, &.{ 0xa1 }, 0, .short, .none },
500 .{ .mov, .fd, &.{ .eax, .moffs }, &.{ 0xa1 }, 0, .none, .none },
501 .{ .mov, .fd, &.{ .rax, .moffs }, &.{ 0xa1 }, 0, .long, .none },
502 .{ .mov, .td, &.{ .moffs, .al }, &.{ 0xa2 }, 0, .none, .none },
503 .{ .mov, .td, &.{ .moffs, .ax }, &.{ 0xa3 }, 0, .short, .none },
504 .{ .mov, .td, &.{ .moffs, .eax }, &.{ 0xa3 }, 0, .none, .none },
505 .{ .mov, .td, &.{ .moffs, .rax }, &.{ 0xa3 }, 0, .long, .none },
506 .{ .mov, .oi, &.{ .r8, .imm8 }, &.{ 0xb0 }, 0, .none, .none },
507 .{ .mov, .oi, &.{ .r8, .imm8 }, &.{ 0xb0 }, 0, .rex, .none },
508 .{ .mov, .oi, &.{ .r16, .imm16 }, &.{ 0xb8 }, 0, .short, .none },
509 .{ .mov, .oi, &.{ .r32, .imm32 }, &.{ 0xb8 }, 0, .none, .none },
510 .{ .mov, .oi, &.{ .r64, .imm64 }, &.{ 0xb8 }, 0, .long, .none },
511 .{ .mov, .mi, &.{ .rm8, .imm8 }, &.{ 0xc6 }, 0, .none, .none },
512 .{ .mov, .mi, &.{ .rm8, .imm8 }, &.{ 0xc6 }, 0, .rex, .none },
513 .{ .mov, .mi, &.{ .rm16, .imm16 }, &.{ 0xc7 }, 0, .short, .none },
514 .{ .mov, .mi, &.{ .rm32, .imm32 }, &.{ 0xc7 }, 0, .none, .none },
515 .{ .mov, .mi, &.{ .rm64, .imm32s }, &.{ 0xc7 }, 0, .long, .none },
516
517 .{ .mov, .mr, &.{ .r32, .cr }, &.{ 0x0f, 0x20 }, 0, .none, .@"32bit" },
518 .{ .mov, .mr, &.{ .r64, .cr }, &.{ 0x0f, 0x20 }, 0, .none, .@"64bit" },
519 .{ .mov, .rm, &.{ .cr, .r32 }, &.{ 0x0f, 0x22 }, 0, .none, .@"32bit" },
520 .{ .mov, .rm, &.{ .cr, .r64 }, &.{ 0x0f, 0x22 }, 0, .none, .@"64bit" },
521
522 .{ .mov, .mr, &.{ .r32, .dr }, &.{ 0x0f, 0x21 }, 0, .none, .@"32bit" },
523 .{ .mov, .mr, &.{ .r64, .dr }, &.{ 0x0f, 0x21 }, 0, .none, .@"64bit" },
524 .{ .mov, .rm, &.{ .dr, .r32 }, &.{ 0x0f, 0x23 }, 0, .none, .@"32bit" },
525 .{ .mov, .rm, &.{ .dr, .r64 }, &.{ 0x0f, 0x23 }, 0, .none, .@"64bit" },
526
527 .{ .movbe, .rm, &.{ .r16, .m16 }, &.{ 0x0f, 0x38, 0xf0 }, 0, .short, .movbe },
528 .{ .movbe, .rm, &.{ .r32, .m32 }, &.{ 0x0f, 0x38, 0xf0 }, 0, .none, .movbe },
529 .{ .movbe, .rm, &.{ .r64, .m64 }, &.{ 0x0f, 0x38, 0xf0 }, 0, .long, .movbe },
530 .{ .movbe, .mr, &.{ .m16, .r16 }, &.{ 0x0f, 0x38, 0xf1 }, 0, .short, .movbe },
531 .{ .movbe, .mr, &.{ .m32, .r32 }, &.{ 0x0f, 0x38, 0xf1 }, 0, .none, .movbe },
532 .{ .movbe, .mr, &.{ .m64, .r64 }, &.{ 0x0f, 0x38, 0xf1 }, 0, .long, .movbe },
533
534 .{ .movs, .z, &.{ .m8, .m8 }, &.{ 0xa4 }, 0, .none, .none },
535 .{ .movs, .z, &.{ .m16, .m16 }, &.{ 0xa5 }, 0, .short, .none },
536 .{ .movs, .z, &.{ .m32, .m32 }, &.{ 0xa5 }, 0, .none, .none },
537 .{ .movs, .z, &.{ .m64, .m64 }, &.{ 0xa5 }, 0, .long, .none },
538 .{ .movsb, .z, &.{ }, &.{ 0xa4 }, 0, .none, .none },
539 .{ .movsw, .z, &.{ }, &.{ 0xa5 }, 0, .short, .none },
540 .{ .movsd, .z, &.{ }, &.{ 0xa5 }, 0, .none, .none },
541 .{ .movsq, .z, &.{ }, &.{ 0xa5 }, 0, .long, .none },
542
543 .{ .movsx, .rm, &.{ .r16, .rm8 }, &.{ 0x0f, 0xbe }, 0, .short, .none },
544 .{ .movsx, .rm, &.{ .r16, .rm8 }, &.{ 0x0f, 0xbe }, 0, .rex_short, .none },
545 .{ .movsx, .rm, &.{ .r32, .rm8 }, &.{ 0x0f, 0xbe }, 0, .none, .none },
546 .{ .movsx, .rm, &.{ .r32, .rm8 }, &.{ 0x0f, 0xbe }, 0, .rex, .none },
547 .{ .movsx, .rm, &.{ .r64, .rm8 }, &.{ 0x0f, 0xbe }, 0, .long, .none },
548 .{ .movsx, .rm, &.{ .r32, .rm16 }, &.{ 0x0f, 0xbf }, 0, .none, .none },
549 .{ .movsx, .rm, &.{ .r32, .rm16 }, &.{ 0x0f, 0xbf }, 0, .rex, .none },
550 .{ .movsx, .rm, &.{ .r64, .rm16 }, &.{ 0x0f, 0xbf }, 0, .long, .none },
551
552 // This instruction is discouraged.
553 .{ .movsxd, .rm, &.{ .r32, .rm32 }, &.{ 0x63 }, 0, .none, .@"64bit" },
554 .{ .movsxd, .rm, &.{ .r64, .rm32 }, &.{ 0x63 }, 0, .long, .@"64bit" },
555
556 .{ .movzx, .rm, &.{ .r16, .rm8 }, &.{ 0x0f, 0xb6 }, 0, .short, .none },
557 .{ .movzx, .rm, &.{ .r16, .rm8 }, &.{ 0x0f, 0xb6 }, 0, .rex_short, .none },
558 .{ .movzx, .rm, &.{ .r32, .rm8 }, &.{ 0x0f, 0xb6 }, 0, .none, .none },
559 .{ .movzx, .rm, &.{ .r32, .rm8 }, &.{ 0x0f, 0xb6 }, 0, .rex, .none },
560 .{ .movzx, .rm, &.{ .r64, .rm8 }, &.{ 0x0f, 0xb6 }, 0, .long, .none },
561 .{ .movzx, .rm, &.{ .r32, .rm16 }, &.{ 0x0f, 0xb7 }, 0, .none, .none },
562 .{ .movzx, .rm, &.{ .r32, .rm16 }, &.{ 0x0f, 0xb7 }, 0, .rex, .none },
563 .{ .movzx, .rm, &.{ .r64, .rm16 }, &.{ 0x0f, 0xb7 }, 0, .long, .none },
564
565 .{ .mul, .m, &.{ .rm8 }, &.{ 0xf6 }, 4, .none, .none },
566 .{ .mul, .m, &.{ .rm8 }, &.{ 0xf6 }, 4, .rex, .none },
567 .{ .mul, .m, &.{ .rm16 }, &.{ 0xf7 }, 4, .short, .none },
568 .{ .mul, .m, &.{ .rm32 }, &.{ 0xf7 }, 4, .none, .none },
569 .{ .mul, .m, &.{ .rm64 }, &.{ 0xf7 }, 4, .long, .none },
570
571 .{ .neg, .m, &.{ .rm8 }, &.{ 0xf6 }, 3, .none, .none },
572 .{ .neg, .m, &.{ .rm8 }, &.{ 0xf6 }, 3, .rex, .none },
573 .{ .neg, .m, &.{ .rm16 }, &.{ 0xf7 }, 3, .short, .none },
574 .{ .neg, .m, &.{ .rm32 }, &.{ 0xf7 }, 3, .none, .none },
575 .{ .neg, .m, &.{ .rm64 }, &.{ 0xf7 }, 3, .long, .none },
576
577 .{ .nop, .z, &.{}, &.{ 0x90 }, 0, .none, .none },
578
579 .{ .not, .m, &.{ .rm8 }, &.{ 0xf6 }, 2, .none, .none },
580 .{ .not, .m, &.{ .rm8 }, &.{ 0xf6 }, 2, .rex, .none },
581 .{ .not, .m, &.{ .rm16 }, &.{ 0xf7 }, 2, .short, .none },
582 .{ .not, .m, &.{ .rm32 }, &.{ 0xf7 }, 2, .none, .none },
583 .{ .not, .m, &.{ .rm64 }, &.{ 0xf7 }, 2, .long, .none },
584
585 .{ .@"or", .zi, &.{ .al, .imm8 }, &.{ 0x0c }, 0, .none, .none },
586 .{ .@"or", .zi, &.{ .ax, .imm16 }, &.{ 0x0d }, 0, .short, .none },
587 .{ .@"or", .zi, &.{ .eax, .imm32 }, &.{ 0x0d }, 0, .none, .none },
588 .{ .@"or", .zi, &.{ .rax, .imm32s }, &.{ 0x0d }, 0, .long, .none },
589 .{ .@"or", .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 1, .none, .none },
590 .{ .@"or", .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 1, .rex, .none },
591 .{ .@"or", .mi, &.{ .rm16, .imm16 }, &.{ 0x81 }, 1, .short, .none },
592 .{ .@"or", .mi, &.{ .rm32, .imm32 }, &.{ 0x81 }, 1, .none, .none },
593 .{ .@"or", .mi, &.{ .rm64, .imm32s }, &.{ 0x81 }, 1, .long, .none },
594 .{ .@"or", .mi, &.{ .rm16, .imm8s }, &.{ 0x83 }, 1, .short, .none },
595 .{ .@"or", .mi, &.{ .rm32, .imm8s }, &.{ 0x83 }, 1, .none, .none },
596 .{ .@"or", .mi, &.{ .rm64, .imm8s }, &.{ 0x83 }, 1, .long, .none },
597 .{ .@"or", .mr, &.{ .rm8, .r8 }, &.{ 0x08 }, 0, .none, .none },
598 .{ .@"or", .mr, &.{ .rm8, .r8 }, &.{ 0x08 }, 0, .rex, .none },
599 .{ .@"or", .mr, &.{ .rm16, .r16 }, &.{ 0x09 }, 0, .short, .none },
600 .{ .@"or", .mr, &.{ .rm32, .r32 }, &.{ 0x09 }, 0, .none, .none },
601 .{ .@"or", .mr, &.{ .rm64, .r64 }, &.{ 0x09 }, 0, .long, .none },
602 .{ .@"or", .rm, &.{ .r8, .rm8 }, &.{ 0x0a }, 0, .none, .none },
603 .{ .@"or", .rm, &.{ .r8, .rm8 }, &.{ 0x0a }, 0, .rex, .none },
604 .{ .@"or", .rm, &.{ .r16, .rm16 }, &.{ 0x0b }, 0, .short, .none },
605 .{ .@"or", .rm, &.{ .r32, .rm32 }, &.{ 0x0b }, 0, .none, .none },
606 .{ .@"or", .rm, &.{ .r64, .rm64 }, &.{ 0x0b }, 0, .long, .none },
607
608 .{ .out, .zi, &.{ .imm8, .al }, &.{ 0xe6 }, 0, .none, .none },
609 .{ .out, .zi, &.{ .imm8, .ax }, &.{ 0xe7 }, 0, .short, .none },
610 .{ .out, .zi, &.{ .imm8, .eax }, &.{ 0xe7 }, 0, .none, .none },
611 .{ .out, .z, &.{ .dx, .al }, &.{ 0xee }, 0, .none, .none },
612 .{ .out, .z, &.{ .dx, .ax }, &.{ 0xef }, 0, .short, .none },
613 .{ .out, .z, &.{ .dx, .eax }, &.{ 0xef }, 0, .none, .none },
614
615 .{ .outs, .z, &.{ .dx, .m8 }, &.{ 0x6e }, 0, .none, .none },
616 .{ .outs, .z, &.{ .dx, .m16 }, &.{ 0x6f }, 0, .short, .none },
617 .{ .outs, .z, &.{ .dx, .m32 }, &.{ 0x6f }, 0, .none, .none },
618 .{ .outsb, .z, &.{ }, &.{ 0x6e }, 0, .none, .none },
619 .{ .outsw, .z, &.{ }, &.{ 0x6f }, 0, .short, .none },
620 .{ .outsd, .z, &.{ }, &.{ 0x6f }, 0, .none, .none },
621
622 .{ .pause, .z, &.{}, &.{ 0xf3, 0x90 }, 0, .none, .none },
623
624 .{ .pop, .o, &.{ .r16 }, &.{ 0x58 }, 0, .short, .none },
625 .{ .pop, .o, &.{ .r64 }, &.{ 0x58 }, 0, .none, .none },
626 .{ .pop, .m, &.{ .rm16 }, &.{ 0x8f }, 0, .short, .none },
627 .{ .pop, .m, &.{ .rm64 }, &.{ 0x8f }, 0, .none, .none },
628
629 .{ .popf, .z, &.{}, &.{ 0x9d }, 0, .short, .none },
630 .{ .popfd, .z, &.{}, &.{ 0x9d }, 0, .none, .@"32bit" },
631 .{ .popfq, .z, &.{}, &.{ 0x9d }, 0, .none, .@"64bit" },
632
633 .{ .push, .o, &.{ .r16 }, &.{ 0x50 }, 0, .short, .none },
634 .{ .push, .o, &.{ .r64 }, &.{ 0x50 }, 0, .none, .none },
635 .{ .push, .m, &.{ .rm16 }, &.{ 0xff }, 6, .short, .none },
636 .{ .push, .m, &.{ .rm64 }, &.{ 0xff }, 6, .none, .none },
637 .{ .push, .i, &.{ .imm8 }, &.{ 0x6a }, 0, .none, .none },
638 .{ .push, .i, &.{ .imm16 }, &.{ 0x68 }, 0, .short, .none },
639 .{ .push, .i, &.{ .imm32 }, &.{ 0x68 }, 0, .none, .none },
640
641 .{ .pushfq, .z, &.{}, &.{ 0x9c }, 0, .none, .none },
642
643 .{ .ret, .z, &.{}, &.{ 0xc3 }, 0, .none, .none },
644
645 .{ .rcl, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 2, .none, .none },
646 .{ .rcl, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 2, .rex, .none },
647 .{ .rcl, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 2, .none, .none },
648 .{ .rcl, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 2, .rex, .none },
649 .{ .rcl, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 2, .none, .none },
650 .{ .rcl, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 2, .rex, .none },
651 .{ .rcl, .m1, &.{ .rm16, .unity }, &.{ 0xd1 }, 2, .short, .none },
652 .{ .rcl, .mc, &.{ .rm16, .cl }, &.{ 0xd3 }, 2, .short, .none },
653 .{ .rcl, .mi, &.{ .rm16, .imm8 }, &.{ 0xc1 }, 2, .short, .none },
654 .{ .rcl, .m1, &.{ .rm32, .unity }, &.{ 0xd1 }, 2, .none, .none },
655 .{ .rcl, .m1, &.{ .rm64, .unity }, &.{ 0xd1 }, 2, .long, .none },
656 .{ .rcl, .mc, &.{ .rm32, .cl }, &.{ 0xd3 }, 2, .none, .none },
657 .{ .rcl, .mc, &.{ .rm64, .cl }, &.{ 0xd3 }, 2, .long, .none },
658 .{ .rcl, .mi, &.{ .rm32, .imm8 }, &.{ 0xc1 }, 2, .none, .none },
659 .{ .rcl, .mi, &.{ .rm64, .imm8 }, &.{ 0xc1 }, 2, .long, .none },
660
661 .{ .rcr, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 3, .none, .none },
662 .{ .rcr, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 3, .rex, .none },
663 .{ .rcr, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 3, .none, .none },
664 .{ .rcr, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 3, .rex, .none },
665 .{ .rcr, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 3, .none, .none },
666 .{ .rcr, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 3, .rex, .none },
667 .{ .rcr, .m1, &.{ .rm16, .unity }, &.{ 0xd1 }, 3, .short, .none },
668 .{ .rcr, .mc, &.{ .rm16, .cl }, &.{ 0xd3 }, 3, .short, .none },
669 .{ .rcr, .mi, &.{ .rm16, .imm8 }, &.{ 0xc1 }, 3, .short, .none },
670 .{ .rcr, .m1, &.{ .rm32, .unity }, &.{ 0xd1 }, 3, .none, .none },
671 .{ .rcr, .m1, &.{ .rm64, .unity }, &.{ 0xd1 }, 3, .long, .none },
672 .{ .rcr, .mc, &.{ .rm32, .cl }, &.{ 0xd3 }, 3, .none, .none },
673 .{ .rcr, .mc, &.{ .rm64, .cl }, &.{ 0xd3 }, 3, .long, .none },
674 .{ .rcr, .mi, &.{ .rm32, .imm8 }, &.{ 0xc1 }, 3, .none, .none },
675 .{ .rcr, .mi, &.{ .rm64, .imm8 }, &.{ 0xc1 }, 3, .long, .none },
676
677 .{ .rdfsbase, .m, &.{ .r32 }, &.{ 0xf3 ,0x0f, 0xae }, 0, .none, .fsgsbase },
678 .{ .rdfsbase, .m, &.{ .r64 }, &.{ 0xf3 ,0x0f, 0xae }, 0, .long, .fsgsbase },
679 .{ .rdgsbase, .m, &.{ .r32 }, &.{ 0xf3 ,0x0f, 0xae }, 1, .none, .fsgsbase },
680 .{ .rdgsbase, .m, &.{ .r64 }, &.{ 0xf3 ,0x0f, 0xae }, 1, .long, .fsgsbase },
681
682 .{ .rdmsr, .z, &.{}, &.{ 0x0f, 0x32 }, 0, .none, .none },
683
684 .{ .rdpid, .m, &.{ .r32 }, &.{ 0xf3, 0x0f, 0xc7 }, 7, .none, .@"rdpid 32bit" },
685 .{ .rdpid, .m, &.{ .r64 }, &.{ 0xf3, 0x0f, 0xc7 }, 7, .none, .@"rdpid 64bit" },
686
687 .{ .rdpkru, .z, &.{}, &.{ 0x0f, 0x01, 0xee }, 0, .none, .pku },
688
689 .{ .rdpmc, .z, &.{}, &.{ 0x0f, 0x33 }, 0, .none, .none },
690
691 .{ .rdrand, .m, &.{ .r16 }, &.{ 0x0f, 0xc7 }, 6, .short, .rdrnd },
692 .{ .rdrand, .m, &.{ .r32 }, &.{ 0x0f, 0xc7 }, 6, .none, .rdrnd },
693 .{ .rdrand, .m, &.{ .r64 }, &.{ 0x0f, 0xc7 }, 6, .long, .rdrnd },
694
695 .{ .rdseed, .m, &.{ .r16 }, &.{ 0x0f, 0xc7 }, 7, .short, .rdseed },
696 .{ .rdseed, .m, &.{ .r32 }, &.{ 0x0f, 0xc7 }, 7, .none, .rdseed },
697 .{ .rdseed, .m, &.{ .r64 }, &.{ 0x0f, 0xc7 }, 7, .long, .rdseed },
698
699 .{ .rdssd, .m, &.{ .r32 }, &.{ 0xf3, 0x0f, 0x1e }, 1, .none, .shstk },
700 .{ .rdssq, .m, &.{ .r64 }, &.{ 0xf3, 0x0f, 0x1e }, 1, .long, .shstk },
701
702 .{ .rdtsc, .z, &.{}, &.{ 0x0f, 0x31 }, 0, .none, .none },
703
704 .{ .rdtscp, .z, &.{}, &.{ 0x0f, 0x01, 0xf9 }, 0, .none, .none },
705
706 .{ .rol, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 0, .none, .none },
707 .{ .rol, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 0, .rex, .none },
708 .{ .rol, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 0, .none, .none },
709 .{ .rol, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 0, .rex, .none },
710 .{ .rol, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 0, .none, .none },
711 .{ .rol, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 0, .rex, .none },
712 .{ .rol, .m1, &.{ .rm16, .unity }, &.{ 0xd1 }, 0, .short, .none },
713 .{ .rol, .mc, &.{ .rm16, .cl }, &.{ 0xd3 }, 0, .short, .none },
714 .{ .rol, .mi, &.{ .rm16, .imm8 }, &.{ 0xc1 }, 0, .short, .none },
715 .{ .rol, .m1, &.{ .rm32, .unity }, &.{ 0xd1 }, 0, .none, .none },
716 .{ .rol, .m1, &.{ .rm64, .unity }, &.{ 0xd1 }, 0, .long, .none },
717 .{ .rol, .mc, &.{ .rm32, .cl }, &.{ 0xd3 }, 0, .none, .none },
718 .{ .rol, .mc, &.{ .rm64, .cl }, &.{ 0xd3 }, 0, .long, .none },
719 .{ .rol, .mi, &.{ .rm32, .imm8 }, &.{ 0xc1 }, 0, .none, .none },
720 .{ .rol, .mi, &.{ .rm64, .imm8 }, &.{ 0xc1 }, 0, .long, .none },
721
722 .{ .ror, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 1, .none, .none },
723 .{ .ror, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 1, .rex, .none },
724 .{ .ror, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 1, .none, .none },
725 .{ .ror, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 1, .rex, .none },
726 .{ .ror, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 1, .none, .none },
727 .{ .ror, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 1, .rex, .none },
728 .{ .ror, .m1, &.{ .rm16, .unity }, &.{ 0xd1 }, 1, .short, .none },
729 .{ .ror, .mc, &.{ .rm16, .cl }, &.{ 0xd3 }, 1, .short, .none },
730 .{ .ror, .mi, &.{ .rm16, .imm8 }, &.{ 0xc1 }, 1, .short, .none },
731 .{ .ror, .m1, &.{ .rm32, .unity }, &.{ 0xd1 }, 1, .none, .none },
732 .{ .ror, .m1, &.{ .rm64, .unity }, &.{ 0xd1 }, 1, .long, .none },
733 .{ .ror, .mc, &.{ .rm32, .cl }, &.{ 0xd3 }, 1, .none, .none },
734 .{ .ror, .mc, &.{ .rm64, .cl }, &.{ 0xd3 }, 1, .long, .none },
735 .{ .ror, .mi, &.{ .rm32, .imm8 }, &.{ 0xc1 }, 1, .none, .none },
736 .{ .ror, .mi, &.{ .rm64, .imm8 }, &.{ 0xc1 }, 1, .long, .none },
737
738 .{ .rsm, .z, &.{}, &.{ 0x0f, 0xaa }, 0, .none, .none },
739
740 .{ .sahf, .z, &.{}, &.{ 0x9e }, 0, .none, .@"32bit" },
741 .{ .sahf, .z, &.{}, &.{ 0x9e }, 0, .none, .sahf },
742
743 .{ .sal, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 4, .none, .none },
744 .{ .sal, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 4, .rex, .none },
745 .{ .sal, .m1, &.{ .rm16, .unity }, &.{ 0xd1 }, 4, .short, .none },
746 .{ .sal, .m1, &.{ .rm32, .unity }, &.{ 0xd1 }, 4, .none, .none },
747 .{ .sal, .m1, &.{ .rm64, .unity }, &.{ 0xd1 }, 4, .long, .none },
748 .{ .sal, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 4, .none, .none },
749 .{ .sal, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 4, .rex, .none },
750 .{ .sal, .mc, &.{ .rm16, .cl }, &.{ 0xd3 }, 4, .short, .none },
751 .{ .sal, .mc, &.{ .rm32, .cl }, &.{ 0xd3 }, 4, .none, .none },
752 .{ .sal, .mc, &.{ .rm64, .cl }, &.{ 0xd3 }, 4, .long, .none },
753 .{ .sal, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 4, .none, .none },
754 .{ .sal, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 4, .rex, .none },
755 .{ .sal, .mi, &.{ .rm16, .imm8 }, &.{ 0xc1 }, 4, .short, .none },
756 .{ .sal, .mi, &.{ .rm32, .imm8 }, &.{ 0xc1 }, 4, .none, .none },
757 .{ .sal, .mi, &.{ .rm64, .imm8 }, &.{ 0xc1 }, 4, .long, .none },
758
759 .{ .sar, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 7, .none, .none },
760 .{ .sar, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 7, .rex, .none },
761 .{ .sar, .m1, &.{ .rm16, .unity }, &.{ 0xd1 }, 7, .short, .none },
762 .{ .sar, .m1, &.{ .rm32, .unity }, &.{ 0xd1 }, 7, .none, .none },
763 .{ .sar, .m1, &.{ .rm64, .unity }, &.{ 0xd1 }, 7, .long, .none },
764 .{ .sar, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 7, .none, .none },
765 .{ .sar, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 7, .rex, .none },
766 .{ .sar, .mc, &.{ .rm16, .cl }, &.{ 0xd3 }, 7, .short, .none },
767 .{ .sar, .mc, &.{ .rm32, .cl }, &.{ 0xd3 }, 7, .none, .none },
768 .{ .sar, .mc, &.{ .rm64, .cl }, &.{ 0xd3 }, 7, .long, .none },
769 .{ .sar, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 7, .none, .none },
770 .{ .sar, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 7, .rex, .none },
771 .{ .sar, .mi, &.{ .rm16, .imm8 }, &.{ 0xc1 }, 7, .short, .none },
772 .{ .sar, .mi, &.{ .rm32, .imm8 }, &.{ 0xc1 }, 7, .none, .none },
773 .{ .sar, .mi, &.{ .rm64, .imm8 }, &.{ 0xc1 }, 7, .long, .none },
774
775 .{ .sbb, .zi, &.{ .al, .imm8 }, &.{ 0x1c }, 0, .none, .none },
776 .{ .sbb, .zi, &.{ .ax, .imm16 }, &.{ 0x1d }, 0, .short, .none },
777 .{ .sbb, .zi, &.{ .eax, .imm32 }, &.{ 0x1d }, 0, .none, .none },
778 .{ .sbb, .zi, &.{ .rax, .imm32s }, &.{ 0x1d }, 0, .long, .none },
779 .{ .sbb, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 3, .none, .none },
780 .{ .sbb, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 3, .rex, .none },
781 .{ .sbb, .mi, &.{ .rm16, .imm16 }, &.{ 0x81 }, 3, .short, .none },
782 .{ .sbb, .mi, &.{ .rm32, .imm32 }, &.{ 0x81 }, 3, .none, .none },
783 .{ .sbb, .mi, &.{ .rm64, .imm32s }, &.{ 0x81 }, 3, .long, .none },
784 .{ .sbb, .mi, &.{ .rm16, .imm8s }, &.{ 0x83 }, 3, .short, .none },
785 .{ .sbb, .mi, &.{ .rm32, .imm8s }, &.{ 0x83 }, 3, .none, .none },
786 .{ .sbb, .mi, &.{ .rm64, .imm8s }, &.{ 0x83 }, 3, .long, .none },
787 .{ .sbb, .mr, &.{ .rm8, .r8 }, &.{ 0x18 }, 0, .none, .none },
788 .{ .sbb, .mr, &.{ .rm8, .r8 }, &.{ 0x18 }, 0, .rex, .none },
789 .{ .sbb, .mr, &.{ .rm16, .r16 }, &.{ 0x19 }, 0, .short, .none },
790 .{ .sbb, .mr, &.{ .rm32, .r32 }, &.{ 0x19 }, 0, .none, .none },
791 .{ .sbb, .mr, &.{ .rm64, .r64 }, &.{ 0x19 }, 0, .long, .none },
792 .{ .sbb, .rm, &.{ .r8, .rm8 }, &.{ 0x1a }, 0, .none, .none },
793 .{ .sbb, .rm, &.{ .r8, .rm8 }, &.{ 0x1a }, 0, .rex, .none },
794 .{ .sbb, .rm, &.{ .r16, .rm16 }, &.{ 0x1b }, 0, .short, .none },
795 .{ .sbb, .rm, &.{ .r32, .rm32 }, &.{ 0x1b }, 0, .none, .none },
796 .{ .sbb, .rm, &.{ .r64, .rm64 }, &.{ 0x1b }, 0, .long, .none },
797
798 .{ .scas, .z, &.{ .m8 }, &.{ 0xae }, 0, .none, .none },
799 .{ .scas, .z, &.{ .m16 }, &.{ 0xaf }, 0, .short, .none },
800 .{ .scas, .z, &.{ .m32 }, &.{ 0xaf }, 0, .none, .none },
801 .{ .scas, .z, &.{ .m64 }, &.{ 0xaf }, 0, .long, .none },
802 .{ .scasb, .z, &.{ }, &.{ 0xae }, 0, .none, .none },
803 .{ .scasw, .z, &.{ }, &.{ 0xaf }, 0, .short, .none },
804 .{ .scasd, .z, &.{ }, &.{ 0xaf }, 0, .none, .none },
805 .{ .scasq, .z, &.{ }, &.{ 0xaf }, 0, .long, .none },
806
807 .{ .senduipi, .m, &.{ .r64 }, &.{ 0xf3, 0x0f, 0xc7 }, 6, .none, .uintr },
808
809 .{ .serialize, .z, &.{}, &.{ 0x0f, 0x01, 0xe8 }, 0, .none, .serialize },
810
811 .{ .seta, .m, &.{ .rm8 }, &.{ 0x0f, 0x97 }, 0, .none, .none },
812 .{ .seta, .m, &.{ .rm8 }, &.{ 0x0f, 0x97 }, 0, .rex, .none },
813 .{ .setae, .m, &.{ .rm8 }, &.{ 0x0f, 0x93 }, 0, .none, .none },
814 .{ .setae, .m, &.{ .rm8 }, &.{ 0x0f, 0x93 }, 0, .rex, .none },
815 .{ .setb, .m, &.{ .rm8 }, &.{ 0x0f, 0x92 }, 0, .none, .none },
816 .{ .setb, .m, &.{ .rm8 }, &.{ 0x0f, 0x92 }, 0, .rex, .none },
817 .{ .setbe, .m, &.{ .rm8 }, &.{ 0x0f, 0x96 }, 0, .none, .none },
818 .{ .setbe, .m, &.{ .rm8 }, &.{ 0x0f, 0x96 }, 0, .rex, .none },
819 .{ .setc, .m, &.{ .rm8 }, &.{ 0x0f, 0x92 }, 0, .none, .none },
820 .{ .setc, .m, &.{ .rm8 }, &.{ 0x0f, 0x92 }, 0, .rex, .none },
821 .{ .sete, .m, &.{ .rm8 }, &.{ 0x0f, 0x94 }, 0, .none, .none },
822 .{ .sete, .m, &.{ .rm8 }, &.{ 0x0f, 0x94 }, 0, .rex, .none },
823 .{ .setg, .m, &.{ .rm8 }, &.{ 0x0f, 0x9f }, 0, .none, .none },
824 .{ .setg, .m, &.{ .rm8 }, &.{ 0x0f, 0x9f }, 0, .rex, .none },
825 .{ .setge, .m, &.{ .rm8 }, &.{ 0x0f, 0x9d }, 0, .none, .none },
826 .{ .setge, .m, &.{ .rm8 }, &.{ 0x0f, 0x9d }, 0, .rex, .none },
827 .{ .setl, .m, &.{ .rm8 }, &.{ 0x0f, 0x9c }, 0, .none, .none },
828 .{ .setl, .m, &.{ .rm8 }, &.{ 0x0f, 0x9c }, 0, .rex, .none },
829 .{ .setle, .m, &.{ .rm8 }, &.{ 0x0f, 0x9e }, 0, .none, .none },
830 .{ .setle, .m, &.{ .rm8 }, &.{ 0x0f, 0x9e }, 0, .rex, .none },
831 .{ .setna, .m, &.{ .rm8 }, &.{ 0x0f, 0x96 }, 0, .none, .none },
832 .{ .setna, .m, &.{ .rm8 }, &.{ 0x0f, 0x96 }, 0, .rex, .none },
833 .{ .setnae, .m, &.{ .rm8 }, &.{ 0x0f, 0x92 }, 0, .none, .none },
834 .{ .setnae, .m, &.{ .rm8 }, &.{ 0x0f, 0x92 }, 0, .rex, .none },
835 .{ .setnb, .m, &.{ .rm8 }, &.{ 0x0f, 0x93 }, 0, .none, .none },
836 .{ .setnb, .m, &.{ .rm8 }, &.{ 0x0f, 0x93 }, 0, .rex, .none },
837 .{ .setnbe, .m, &.{ .rm8 }, &.{ 0x0f, 0x97 }, 0, .none, .none },
838 .{ .setnbe, .m, &.{ .rm8 }, &.{ 0x0f, 0x97 }, 0, .rex, .none },
839 .{ .setnc, .m, &.{ .rm8 }, &.{ 0x0f, 0x93 }, 0, .none, .none },
840 .{ .setnc, .m, &.{ .rm8 }, &.{ 0x0f, 0x93 }, 0, .rex, .none },
841 .{ .setne, .m, &.{ .rm8 }, &.{ 0x0f, 0x95 }, 0, .none, .none },
842 .{ .setne, .m, &.{ .rm8 }, &.{ 0x0f, 0x95 }, 0, .rex, .none },
843 .{ .setng, .m, &.{ .rm8 }, &.{ 0x0f, 0x9e }, 0, .none, .none },
844 .{ .setng, .m, &.{ .rm8 }, &.{ 0x0f, 0x9e }, 0, .rex, .none },
845 .{ .setnge, .m, &.{ .rm8 }, &.{ 0x0f, 0x9c }, 0, .none, .none },
846 .{ .setnge, .m, &.{ .rm8 }, &.{ 0x0f, 0x9c }, 0, .rex, .none },
847 .{ .setnl, .m, &.{ .rm8 }, &.{ 0x0f, 0x9d }, 0, .none, .none },
848 .{ .setnl, .m, &.{ .rm8 }, &.{ 0x0f, 0x9d }, 0, .rex, .none },
849 .{ .setnle, .m, &.{ .rm8 }, &.{ 0x0f, 0x9f }, 0, .none, .none },
850 .{ .setnle, .m, &.{ .rm8 }, &.{ 0x0f, 0x9f }, 0, .rex, .none },
851 .{ .setno, .m, &.{ .rm8 }, &.{ 0x0f, 0x91 }, 0, .none, .none },
852 .{ .setno, .m, &.{ .rm8 }, &.{ 0x0f, 0x91 }, 0, .rex, .none },
853 .{ .setnp, .m, &.{ .rm8 }, &.{ 0x0f, 0x9b }, 0, .none, .none },
854 .{ .setnp, .m, &.{ .rm8 }, &.{ 0x0f, 0x9b }, 0, .rex, .none },
855 .{ .setns, .m, &.{ .rm8 }, &.{ 0x0f, 0x99 }, 0, .none, .none },
856 .{ .setns, .m, &.{ .rm8 }, &.{ 0x0f, 0x99 }, 0, .rex, .none },
857 .{ .setnz, .m, &.{ .rm8 }, &.{ 0x0f, 0x95 }, 0, .none, .none },
858 .{ .setnz, .m, &.{ .rm8 }, &.{ 0x0f, 0x95 }, 0, .rex, .none },
859 .{ .seto, .m, &.{ .rm8 }, &.{ 0x0f, 0x90 }, 0, .none, .none },
860 .{ .seto, .m, &.{ .rm8 }, &.{ 0x0f, 0x90 }, 0, .rex, .none },
861 .{ .setp, .m, &.{ .rm8 }, &.{ 0x0f, 0x9a }, 0, .none, .none },
862 .{ .setp, .m, &.{ .rm8 }, &.{ 0x0f, 0x9a }, 0, .rex, .none },
863 .{ .setpe, .m, &.{ .rm8 }, &.{ 0x0f, 0x9a }, 0, .none, .none },
864 .{ .setpe, .m, &.{ .rm8 }, &.{ 0x0f, 0x9a }, 0, .rex, .none },
865 .{ .setpo, .m, &.{ .rm8 }, &.{ 0x0f, 0x9b }, 0, .none, .none },
866 .{ .setpo, .m, &.{ .rm8 }, &.{ 0x0f, 0x9b }, 0, .rex, .none },
867 .{ .sets, .m, &.{ .rm8 }, &.{ 0x0f, 0x98 }, 0, .none, .none },
868 .{ .sets, .m, &.{ .rm8 }, &.{ 0x0f, 0x98 }, 0, .rex, .none },
869 .{ .setz, .m, &.{ .rm8 }, &.{ 0x0f, 0x94 }, 0, .none, .none },
870 .{ .setz, .m, &.{ .rm8 }, &.{ 0x0f, 0x94 }, 0, .rex, .none },
871
872 .{ .sfence, .z, &.{}, &.{ 0x0f, 0xae, 0xf8 }, 0, .none, .none },
873
874 .{ .sidt, .m, &.{ .m }, &.{ 0x0f, 0x01 }, 1, .none, .none },
875
876 .{ .sldt, .m, &.{ .rm16 }, &.{ 0x0f, 0x00 }, 0, .none, .none },
877
878 .{ .smsw, .m, &.{ .rm16 }, &.{ 0x0f, 0x01 }, 4, .short, .none },
879 .{ .smsw, .m, &.{ .r32_m16 }, &.{ 0x0f, 0x01 }, 4, .none, .none },
880 .{ .smsw, .m, &.{ .r64_m16 }, &.{ 0x0f, 0x01 }, 4, .long, .none },
881
882 .{ .shl, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 4, .none, .none },
883 .{ .shl, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 4, .rex, .none },
884 .{ .shl, .m1, &.{ .rm16, .unity }, &.{ 0xd1 }, 4, .short, .none },
885 .{ .shl, .m1, &.{ .rm32, .unity }, &.{ 0xd1 }, 4, .none, .none },
886 .{ .shl, .m1, &.{ .rm64, .unity }, &.{ 0xd1 }, 4, .long, .none },
887 .{ .shl, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 4, .none, .none },
888 .{ .shl, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 4, .rex, .none },
889 .{ .shl, .mc, &.{ .rm16, .cl }, &.{ 0xd3 }, 4, .short, .none },
890 .{ .shl, .mc, &.{ .rm32, .cl }, &.{ 0xd3 }, 4, .none, .none },
891 .{ .shl, .mc, &.{ .rm64, .cl }, &.{ 0xd3 }, 4, .long, .none },
892 .{ .shl, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 4, .none, .none },
893 .{ .shl, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 4, .rex, .none },
894 .{ .shl, .mi, &.{ .rm16, .imm8 }, &.{ 0xc1 }, 4, .short, .none },
895 .{ .shl, .mi, &.{ .rm32, .imm8 }, &.{ 0xc1 }, 4, .none, .none },
896 .{ .shl, .mi, &.{ .rm64, .imm8 }, &.{ 0xc1 }, 4, .long, .none },
897
898 .{ .shld, .mri, &.{ .rm16, .r16, .imm8 }, &.{ 0x0f, 0xa4 }, 0, .short, .none },
899 .{ .shld, .mrc, &.{ .rm16, .r16, .cl }, &.{ 0x0f, 0xa5 }, 0, .short, .none },
900 .{ .shld, .mri, &.{ .rm32, .r32, .imm8 }, &.{ 0x0f, 0xa4 }, 0, .none, .none },
901 .{ .shld, .mri, &.{ .rm64, .r64, .imm8 }, &.{ 0x0f, 0xa4 }, 0, .long, .none },
902 .{ .shld, .mrc, &.{ .rm32, .r32, .cl }, &.{ 0x0f, 0xa5 }, 0, .none, .none },
903 .{ .shld, .mrc, &.{ .rm64, .r64, .cl }, &.{ 0x0f, 0xa5 }, 0, .long, .none },
904
905 .{ .shr, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 5, .none, .none },
906 .{ .shr, .m1, &.{ .rm8, .unity }, &.{ 0xd0 }, 5, .rex, .none },
907 .{ .shr, .m1, &.{ .rm16, .unity }, &.{ 0xd1 }, 5, .short, .none },
908 .{ .shr, .m1, &.{ .rm32, .unity }, &.{ 0xd1 }, 5, .none, .none },
909 .{ .shr, .m1, &.{ .rm64, .unity }, &.{ 0xd1 }, 5, .long, .none },
910 .{ .shr, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 5, .none, .none },
911 .{ .shr, .mc, &.{ .rm8, .cl }, &.{ 0xd2 }, 5, .rex, .none },
912 .{ .shr, .mc, &.{ .rm16, .cl }, &.{ 0xd3 }, 5, .short, .none },
913 .{ .shr, .mc, &.{ .rm32, .cl }, &.{ 0xd3 }, 5, .none, .none },
914 .{ .shr, .mc, &.{ .rm64, .cl }, &.{ 0xd3 }, 5, .long, .none },
915 .{ .shr, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 5, .none, .none },
916 .{ .shr, .mi, &.{ .rm8, .imm8 }, &.{ 0xc0 }, 5, .rex, .none },
917 .{ .shr, .mi, &.{ .rm16, .imm8 }, &.{ 0xc1 }, 5, .short, .none },
918 .{ .shr, .mi, &.{ .rm32, .imm8 }, &.{ 0xc1 }, 5, .none, .none },
919 .{ .shr, .mi, &.{ .rm64, .imm8 }, &.{ 0xc1 }, 5, .long, .none },
920
921 .{ .shrd, .mri, &.{ .rm16, .r16, .imm8 }, &.{ 0x0f, 0xac }, 0, .short, .none },
922 .{ .shrd, .mrc, &.{ .rm16, .r16, .cl }, &.{ 0x0f, 0xad }, 0, .short, .none },
923 .{ .shrd, .mri, &.{ .rm32, .r32, .imm8 }, &.{ 0x0f, 0xac }, 0, .none, .none },
924 .{ .shrd, .mri, &.{ .rm64, .r64, .imm8 }, &.{ 0x0f, 0xac }, 0, .long, .none },
925 .{ .shrd, .mrc, &.{ .rm32, .r32, .cl }, &.{ 0x0f, 0xad }, 0, .none, .none },
926 .{ .shrd, .mrc, &.{ .rm64, .r64, .cl }, &.{ 0x0f, 0xad }, 0, .long, .none },
927
928 .{ .stac, .z, &.{}, &.{ 0x0f, 0x01, 0xcb }, 0, .none, .smap },
929
930 .{ .stc, .z, &.{}, &.{ 0xf9 }, 0, .none, .none },
931
932 .{ .std, .z, &.{}, &.{ 0xfd }, 0, .none, .none },
933
934 .{ .sti, .z, &.{}, &.{ 0xfb }, 0, .none, .none },
935
936 .{ .str, .m, &.{ .rm16 }, &.{ 0x0f, 0x00 }, 1, .none, .none },
937
938 .{ .stui, .z, &.{}, &.{ 0xf3, 0x0f, 0x01, 0xef }, 0, .none, .uintr },
939
940 .{ .stos, .z, &.{ .m8 }, &.{ 0xaa }, 0, .none, .none },
941 .{ .stos, .z, &.{ .m16 }, &.{ 0xab }, 0, .short, .none },
942 .{ .stos, .z, &.{ .m32 }, &.{ 0xab }, 0, .none, .none },
943 .{ .stos, .z, &.{ .m64 }, &.{ 0xab }, 0, .long, .none },
944 .{ .stosb, .z, &.{ }, &.{ 0xaa }, 0, .none, .none },
945 .{ .stosw, .z, &.{ }, &.{ 0xab }, 0, .short, .none },
946 .{ .stosd, .z, &.{ }, &.{ 0xab }, 0, .none, .none },
947 .{ .stosq, .z, &.{ }, &.{ 0xab }, 0, .long, .none },
948
949 .{ .sub, .zi, &.{ .al, .imm8 }, &.{ 0x2c }, 0, .none, .none },
950 .{ .sub, .zi, &.{ .ax, .imm16 }, &.{ 0x2d }, 0, .short, .none },
951 .{ .sub, .zi, &.{ .eax, .imm32 }, &.{ 0x2d }, 0, .none, .none },
952 .{ .sub, .zi, &.{ .rax, .imm32s }, &.{ 0x2d }, 0, .long, .none },
953 .{ .sub, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 5, .none, .none },
954 .{ .sub, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 5, .rex, .none },
955 .{ .sub, .mi, &.{ .rm16, .imm16 }, &.{ 0x81 }, 5, .short, .none },
956 .{ .sub, .mi, &.{ .rm32, .imm32 }, &.{ 0x81 }, 5, .none, .none },
957 .{ .sub, .mi, &.{ .rm64, .imm32s }, &.{ 0x81 }, 5, .long, .none },
958 .{ .sub, .mi, &.{ .rm16, .imm8s }, &.{ 0x83 }, 5, .short, .none },
959 .{ .sub, .mi, &.{ .rm32, .imm8s }, &.{ 0x83 }, 5, .none, .none },
960 .{ .sub, .mi, &.{ .rm64, .imm8s }, &.{ 0x83 }, 5, .long, .none },
961 .{ .sub, .mr, &.{ .rm8, .r8 }, &.{ 0x28 }, 0, .none, .none },
962 .{ .sub, .mr, &.{ .rm8, .r8 }, &.{ 0x28 }, 0, .rex, .none },
963 .{ .sub, .mr, &.{ .rm16, .r16 }, &.{ 0x29 }, 0, .short, .none },
964 .{ .sub, .mr, &.{ .rm32, .r32 }, &.{ 0x29 }, 0, .none, .none },
965 .{ .sub, .mr, &.{ .rm64, .r64 }, &.{ 0x29 }, 0, .long, .none },
966 .{ .sub, .rm, &.{ .r8, .rm8 }, &.{ 0x2a }, 0, .none, .none },
967 .{ .sub, .rm, &.{ .r8, .rm8 }, &.{ 0x2a }, 0, .rex, .none },
968 .{ .sub, .rm, &.{ .r16, .rm16 }, &.{ 0x2b }, 0, .short, .none },
969 .{ .sub, .rm, &.{ .r32, .rm32 }, &.{ 0x2b }, 0, .none, .none },
970 .{ .sub, .rm, &.{ .r64, .rm64 }, &.{ 0x2b }, 0, .long, .none },
971
972 .{ .swapgs, .z, &.{}, &.{ 0x0f, 0x01, 0xf8 }, 0, .none, .@"64bit" },
973
974 .{ .syscall, .z, &.{}, &.{ 0x0f, 0x05 }, 0, .none, .@"64bit" },
975
976 .{ .sysenter, .z, &.{}, &.{ 0x0f, 0x34 }, 0, .none, .none },
977
978 .{ .sysexit, .z, &.{}, &.{ 0x0f, 0x35 }, 0, .none, .none },
979 .{ .sysexit, .z, &.{}, &.{ 0x0f, 0x35 }, 0, .long, .none },
980
981 .{ .sysret, .z, &.{}, &.{ 0x0f, 0x37 }, 0, .none, .none },
982 .{ .sysret, .z, &.{}, &.{ 0x0f, 0x37 }, 0, .long, .none },
983
984 .{ .@"test", .zi, &.{ .al, .imm8 }, &.{ 0xa8 }, 0, .none, .none },
985 .{ .@"test", .zi, &.{ .ax, .imm16 }, &.{ 0xa9 }, 0, .short, .none },
986 .{ .@"test", .zi, &.{ .eax, .imm32 }, &.{ 0xa9 }, 0, .none, .none },
987 .{ .@"test", .zi, &.{ .rax, .imm32s }, &.{ 0xa9 }, 0, .long, .none },
988 .{ .@"test", .mi, &.{ .rm8, .imm8 }, &.{ 0xf6 }, 0, .none, .none },
989 .{ .@"test", .mi, &.{ .rm8, .imm8 }, &.{ 0xf6 }, 0, .rex, .none },
990 .{ .@"test", .mi, &.{ .rm16, .imm16 }, &.{ 0xf7 }, 0, .short, .none },
991 .{ .@"test", .mi, &.{ .rm32, .imm32 }, &.{ 0xf7 }, 0, .none, .none },
992 .{ .@"test", .mi, &.{ .rm64, .imm32s }, &.{ 0xf7 }, 0, .long, .none },
993 .{ .@"test", .mr, &.{ .rm8, .r8 }, &.{ 0x84 }, 0, .none, .none },
994 .{ .@"test", .mr, &.{ .rm8, .r8 }, &.{ 0x84 }, 0, .rex, .none },
995 .{ .@"test", .mr, &.{ .rm16, .r16 }, &.{ 0x85 }, 0, .short, .none },
996 .{ .@"test", .mr, &.{ .rm32, .r32 }, &.{ 0x85 }, 0, .none, .none },
997 .{ .@"test", .mr, &.{ .rm64, .r64 }, &.{ 0x85 }, 0, .long, .none },
998
999 .{ .testui, .z, &.{}, &.{ 0xf3, 0x0f, 0x01, 0xed }, 0, .none, .uintr },
1000
1001 .{ .tpause, .m, &.{ .r32 }, &.{ 0x66, 0x0f, 0xae }, 6, .none, .waitpkg },
1002
1003 .{ .ud0, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0xff }, 0, .none, .none },
1004 .{ .ud1, .rm, &.{ .r32, .rm32 }, &.{ 0x0f, 0xb9 }, 0, .none, .none },
1005 .{ .ud2, .z, &.{}, &.{ 0x0f, 0x0b }, 0, .none, .none },
1006
1007 .{ .uiret, .z, &.{}, &.{ 0xf3, 0x0f, 0x01, 0xec }, 0, .none, .uintr },
1008
1009 .{ .umonitor, .m, &.{ .r64 }, &.{ 0xf3, 0x0f, 0xae }, 6, .none, .waitpkg },
1010
1011 .{ .umwait, .m, &.{ .r32 }, &.{ 0xf2, 0x0f, 0xae }, 6, .none, .waitpkg },
1012
1013 .{ .verr, .m, &.{ .rm16 }, &.{ 0x0f, 0x00 }, 4, .none, .none },
1014 .{ .verw, .m, &.{ .rm16 }, &.{ 0x0f, 0x00 }, 5, .none, .none },
1015
1016 .{ .wrfsbase, .m, &.{ .r32 }, &.{ 0xf3 ,0x0f, 0xae }, 2, .none, .fsgsbase },
1017 .{ .wrfsbase, .m, &.{ .r64 }, &.{ 0xf3 ,0x0f, 0xae }, 2, .long, .fsgsbase },
1018 .{ .wrgsbase, .m, &.{ .r32 }, &.{ 0xf3 ,0x0f, 0xae }, 3, .none, .fsgsbase },
1019 .{ .wrgsbase, .m, &.{ .r64 }, &.{ 0xf3 ,0x0f, 0xae }, 3, .long, .fsgsbase },
1020
1021 .{ .wrmsr, .z, &.{}, &.{ 0x0f, 0x30 }, 0, .none, .none },
1022
1023 .{ .wrpkru, .z, &.{}, &.{ 0x0f, 0x01, 0xef }, 0, .none, .pku },
1024
1025 .{ .wrssd, .mr, &.{ .m32, .r32 }, &.{ 0x0f, 0x38, 0xf6 }, 0, .none, .shstk },
1026 .{ .wrssq, .mr, &.{ .m64, .r64 }, &.{ 0x0f, 0x38, 0xf6 }, 0, .long, .shstk },
1027
1028 .{ .wrussd, .mr, &.{ .m32, .r32 }, &.{ 0x66, 0x0f, 0x38, 0xf5 }, 0, .none, .shstk },
1029 .{ .wrussq, .mr, &.{ .m64, .r64 }, &.{ 0x66, 0x0f, 0x38, 0xf5 }, 0, .long, .shstk },
1030
1031 .{ .xadd, .mr, &.{ .rm8, .r8 }, &.{ 0x0f, 0xc0 }, 0, .none, .none },
1032 .{ .xadd, .mr, &.{ .rm8, .r8 }, &.{ 0x0f, 0xc0 }, 0, .rex, .none },
1033 .{ .xadd, .mr, &.{ .rm16, .r16 }, &.{ 0x0f, 0xc1 }, 0, .short, .none },
1034 .{ .xadd, .mr, &.{ .rm32, .r32 }, &.{ 0x0f, 0xc1 }, 0, .none, .none },
1035 .{ .xadd, .mr, &.{ .rm64, .r64 }, &.{ 0x0f, 0xc1 }, 0, .long, .none },
1036
1037 .{ .xchg, .zo, &.{ .ax, .r16 }, &.{ 0x90 }, 0, .short, .none },
1038 .{ .xchg, .oz, &.{ .r16, .ax }, &.{ 0x90 }, 0, .short, .none },
1039 .{ .xchg, .zo, &.{ .eax, .r32 }, &.{ 0x90 }, 0, .none, .none },
1040 .{ .xchg, .zo, &.{ .rax, .r64 }, &.{ 0x90 }, 0, .long, .none },
1041 .{ .xchg, .oz, &.{ .r32, .eax }, &.{ 0x90 }, 0, .none, .none },
1042 .{ .xchg, .oz, &.{ .r64, .rax }, &.{ 0x90 }, 0, .long, .none },
1043 .{ .xchg, .mr, &.{ .rm8, .r8 }, &.{ 0x86 }, 0, .none, .none },
1044 .{ .xchg, .mr, &.{ .rm8, .r8 }, &.{ 0x86 }, 0, .rex, .none },
1045 .{ .xchg, .rm, &.{ .r8, .rm8 }, &.{ 0x86 }, 0, .none, .none },
1046 .{ .xchg, .rm, &.{ .r8, .rm8 }, &.{ 0x86 }, 0, .rex, .none },
1047 .{ .xchg, .mr, &.{ .rm16, .r16 }, &.{ 0x87 }, 0, .short, .none },
1048 .{ .xchg, .rm, &.{ .r16, .rm16 }, &.{ 0x87 }, 0, .short, .none },
1049 .{ .xchg, .mr, &.{ .rm32, .r32 }, &.{ 0x87 }, 0, .none, .none },
1050 .{ .xchg, .mr, &.{ .rm64, .r64 }, &.{ 0x87 }, 0, .long, .none },
1051 .{ .xchg, .rm, &.{ .r32, .rm32 }, &.{ 0x87 }, 0, .none, .none },
1052 .{ .xchg, .rm, &.{ .r64, .rm64 }, &.{ 0x87 }, 0, .long, .none },
1053
1054 .{ .xgetbv, .z, &.{}, &.{ 0x0f, 0x01, 0xd0 }, 0, .none, .none },
1055
1056 .{ .xlat, .z, &.{ .m8 }, &.{ 0xd7 }, 0, .none, .@"32bit" },
1057 .{ .xlat, .z, &.{ .m8 }, &.{ 0xd7 }, 0, .long, .@"64bit" },
1058 .{ .xlatb, .z, &.{ }, &.{ 0xd7 }, 0, .none, .@"32bit" },
1059 .{ .xlatb, .z, &.{ }, &.{ 0xd7 }, 0, .long, .@"64bit" },
1060
1061 .{ .xor, .zi, &.{ .al, .imm8 }, &.{ 0x34 }, 0, .none, .none },
1062 .{ .xor, .zi, &.{ .ax, .imm16 }, &.{ 0x35 }, 0, .short, .none },
1063 .{ .xor, .zi, &.{ .eax, .imm32 }, &.{ 0x35 }, 0, .none, .none },
1064 .{ .xor, .zi, &.{ .rax, .imm32s }, &.{ 0x35 }, 0, .long, .none },
1065 .{ .xor, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 6, .none, .none },
1066 .{ .xor, .mi, &.{ .rm8, .imm8 }, &.{ 0x80 }, 6, .rex, .none },
1067 .{ .xor, .mi, &.{ .rm16, .imm16 }, &.{ 0x81 }, 6, .short, .none },
1068 .{ .xor, .mi, &.{ .rm32, .imm32 }, &.{ 0x81 }, 6, .none, .none },
1069 .{ .xor, .mi, &.{ .rm64, .imm32s }, &.{ 0x81 }, 6, .long, .none },
1070 .{ .xor, .mi, &.{ .rm16, .imm8s }, &.{ 0x83 }, 6, .short, .none },
1071 .{ .xor, .mi, &.{ .rm32, .imm8s }, &.{ 0x83 }, 6, .none, .none },
1072 .{ .xor, .mi, &.{ .rm64, .imm8s }, &.{ 0x83 }, 6, .long, .none },
1073 .{ .xor, .mr, &.{ .rm8, .r8 }, &.{ 0x30 }, 0, .none, .none },
1074 .{ .xor, .mr, &.{ .rm8, .r8 }, &.{ 0x30 }, 0, .rex, .none },
1075 .{ .xor, .mr, &.{ .rm16, .r16 }, &.{ 0x31 }, 0, .short, .none },
1076 .{ .xor, .mr, &.{ .rm32, .r32 }, &.{ 0x31 }, 0, .none, .none },
1077 .{ .xor, .mr, &.{ .rm64, .r64 }, &.{ 0x31 }, 0, .long, .none },
1078 .{ .xor, .rm, &.{ .r8, .rm8 }, &.{ 0x32 }, 0, .none, .none },
1079 .{ .xor, .rm, &.{ .r8, .rm8 }, &.{ 0x32 }, 0, .rex, .none },
1080 .{ .xor, .rm, &.{ .r16, .rm16 }, &.{ 0x33 }, 0, .short, .none },
1081 .{ .xor, .rm, &.{ .r32, .rm32 }, &.{ 0x33 }, 0, .none, .none },
1082 .{ .xor, .rm, &.{ .r64, .rm64 }, &.{ 0x33 }, 0, .long, .none },
1083
1084 // X87
1085 .{ .f2xm1, .z, &.{}, &.{ 0xd9, 0xf0 }, 0, .none, .x87 },
1086
1087 .{ .fabs, .z, &.{}, &.{ 0xd9, 0xe1 }, 0, .none, .x87 },
1088
1089 .{ .fadd, .m, &.{ .m32 }, &.{ 0xd8 }, 0, .none, .x87 },
1090 .{ .fadd, .m, &.{ .m64 }, &.{ 0xdc }, 0, .none, .x87 },
1091 .{ .fadd, .zo, &.{ .st0, .st }, &.{ 0xd8, 0xc0 }, 0, .none, .x87 },
1092 .{ .fadd, .oz, &.{ .st, .st0 }, &.{ 0xdc, 0xc0 }, 0, .none, .x87 },
1093 .{ .faddp, .oz, &.{ .st, .st0 }, &.{ 0xde, 0xc0 }, 0, .none, .x87 },
1094 .{ .faddp, .z, &.{ }, &.{ 0xde, 0xc1 }, 0, .none, .x87 },
1095 .{ .fiadd, .m, &.{ .m32 }, &.{ 0xda }, 0, .none, .x87 },
1096 .{ .fiadd, .m, &.{ .m16 }, &.{ 0xde }, 0, .none, .x87 },
1097
1098 .{ .fbld, .m, &.{ .m80 }, &.{ 0xdf }, 4, .none, .x87 },
1099
1100 .{ .fbstp, .m, &.{ .m80 }, &.{ 0xdf }, 6, .none, .x87 },
1101
1102 .{ .fchs, .z, &.{}, &.{ 0xd9, 0xe0 }, 0, .none, .x87 },
1103
1104 .{ .fclex, .z, &.{}, &.{ 0xdb, 0xe2 }, 0, .wait, .x87 },
1105 .{ .fnclex, .z, &.{}, &.{ 0xdb, 0xe2 }, 0, .none, .x87 },
1106
1107 .{ .fcmovb, .zo, &.{ .st0, .st }, &.{ 0xda, 0xc0 }, 0, .none, .@"cmov x87" },
1108 .{ .fcmove, .zo, &.{ .st0, .st }, &.{ 0xda, 0xc8 }, 0, .none, .@"cmov x87" },
1109 .{ .fcmovbe, .zo, &.{ .st0, .st }, &.{ 0xda, 0xd0 }, 0, .none, .@"cmov x87" },
1110 .{ .fcmovu, .zo, &.{ .st0, .st }, &.{ 0xda, 0xd8 }, 0, .none, .@"cmov x87" },
1111 .{ .fcmovnb, .zo, &.{ .st0, .st }, &.{ 0xdb, 0xc0 }, 0, .none, .@"cmov x87" },
1112 .{ .fcmovne, .zo, &.{ .st0, .st }, &.{ 0xdb, 0xc8 }, 0, .none, .@"cmov x87" },
1113 .{ .fcmovnbe, .zo, &.{ .st0, .st }, &.{ 0xdb, 0xd0 }, 0, .none, .@"cmov x87" },
1114 .{ .fcmovnu, .zo, &.{ .st0, .st }, &.{ 0xdb, 0xd8 }, 0, .none, .@"cmov x87" },
1115
1116 .{ .fcom, .m, &.{ .m32 }, &.{ 0xd8 }, 2, .none, .x87 },
1117 .{ .fcom, .m, &.{ .m64 }, &.{ 0xdc }, 2, .none, .x87 },
1118 .{ .fcom, .o, &.{ .st }, &.{ 0xd8, 0xd0 }, 0, .none, .x87 },
1119 .{ .fcom, .z, &.{ }, &.{ 0xd8, 0xd1 }, 0, .none, .x87 },
1120 .{ .fcomp, .m, &.{ .m32 }, &.{ 0xd8 }, 3, .none, .x87 },
1121 .{ .fcomp, .m, &.{ .m64 }, &.{ 0xdc }, 3, .none, .x87 },
1122 .{ .fcomp, .o, &.{ .st }, &.{ 0xd8, 0xd8 }, 0, .none, .x87 },
1123 .{ .fcomp, .z, &.{ }, &.{ 0xd8, 0xd9 }, 0, .none, .x87 },
1124 .{ .fcompp, .z, &.{ }, &.{ 0xde, 0xd9 }, 0, .none, .x87 },
1125
1126 .{ .fcomi, .zo, &.{ .st0, .st }, &.{ 0xdb, 0xf0 }, 0, .none, .x87 },
1127 .{ .fcomip, .zo, &.{ .st0, .st }, &.{ 0xdf, 0xf0 }, 0, .none, .x87 },
1128 .{ .fucomi, .zo, &.{ .st0, .st }, &.{ 0xdb, 0xe8 }, 0, .none, .x87 },
1129 .{ .fucomip, .zo, &.{ .st0, .st }, &.{ 0xdf, 0xe8 }, 0, .none, .x87 },
1130
1131 .{ .fcos, .z, &.{}, &.{ 0xd9, 0xff }, 0, .none, .x87 },
1132
1133 .{ .fdecstp, .z, &.{}, &.{ 0xd9, 0xf6 }, 0, .none, .x87 },
1134
1135 .{ .fdiv, .m, &.{ .m32 }, &.{ 0xd8 }, 6, .none, .x87 },
1136 .{ .fdiv, .m, &.{ .m64 }, &.{ 0xdc }, 6, .none, .x87 },
1137 .{ .fdiv, .zo, &.{ .st0, .st }, &.{ 0xd8, 0xf0 }, 0, .none, .x87 },
1138 .{ .fdiv, .oz, &.{ .st, .st0 }, &.{ 0xdc, 0xf8 }, 0, .none, .x87 },
1139 .{ .fdivp, .oz, &.{ .st, .st0 }, &.{ 0xde, 0xf8 }, 0, .none, .x87 },
1140 .{ .fdivp, .z, &.{ }, &.{ 0xde, 0xf9 }, 0, .none, .x87 },
1141 .{ .fidiv, .m, &.{ .m32 }, &.{ 0xda }, 6, .none, .x87 },
1142 .{ .fidiv, .m, &.{ .m16 }, &.{ 0xde }, 6, .none, .x87 },
1143
1144 .{ .fdivr, .m, &.{ .m32 }, &.{ 0xd8 }, 7, .none, .x87 },
1145 .{ .fdivr, .m, &.{ .m64 }, &.{ 0xdc }, 7, .none, .x87 },
1146 .{ .fdivr, .zo, &.{ .st0, .st }, &.{ 0xd8, 0xf8 }, 0, .none, .x87 },
1147 .{ .fdivr, .oz, &.{ .st, .st0 }, &.{ 0xdc, 0xf0 }, 0, .none, .x87 },
1148 .{ .fdivrp, .oz, &.{ .st, .st0 }, &.{ 0xde, 0xf0 }, 0, .none, .x87 },
1149 .{ .fdivrp, .z, &.{ }, &.{ 0xde, 0xf1 }, 0, .none, .x87 },
1150 .{ .fidivr, .m, &.{ .m32 }, &.{ 0xda }, 7, .none, .x87 },
1151 .{ .fidivr, .m, &.{ .m16 }, &.{ 0xde }, 7, .none, .x87 },
1152
1153 .{ .ffree, .o, &.{ .st }, &.{ 0xdd, 0xc0 }, 0, .none, .x87 },
1154
1155 .{ .ficom, .m, &.{ .m16 }, &.{ 0xde }, 2, .none, .x87 },
1156 .{ .ficom, .m, &.{ .m32 }, &.{ 0xda }, 2, .none, .x87 },
1157 .{ .ficomp, .m, &.{ .m16 }, &.{ 0xde }, 3, .none, .x87 },
1158 .{ .ficomp, .m, &.{ .m32 }, &.{ 0xda }, 3, .none, .x87 },
1159
1160 .{ .fild, .m, &.{ .m16 }, &.{ 0xdf }, 0, .none, .x87 },
1161 .{ .fild, .m, &.{ .m32 }, &.{ 0xdb }, 0, .none, .x87 },
1162 .{ .fild, .m, &.{ .m64 }, &.{ 0xdf }, 5, .none, .x87 },
1163
1164 .{ .fincstp, .z, &.{}, &.{ 0xd9, 0xf7 }, 0, .none, .x87 },
1165
1166 .{ .finit, .z, &.{}, &.{ 0xdb, 0xe3 }, 0, .wait, .x87 },
1167 .{ .fninit, .z, &.{}, &.{ 0xdb, 0xe3 }, 0, .none, .x87 },
1168
1169 .{ .fist, .m, &.{ .m16 }, &.{ 0xdf }, 2, .none, .x87 },
1170 .{ .fist, .m, &.{ .m32 }, &.{ 0xdb }, 2, .none, .x87 },
1171 .{ .fistp, .m, &.{ .m16 }, &.{ 0xdf }, 3, .none, .x87 },
1172 .{ .fistp, .m, &.{ .m32 }, &.{ 0xdb }, 3, .none, .x87 },
1173 .{ .fistp, .m, &.{ .m64 }, &.{ 0xdf }, 7, .none, .x87 },
1174
1175 .{ .fisttp, .m, &.{ .m16 }, &.{ 0xdf }, 1, .none, .x87 },
1176 .{ .fisttp, .m, &.{ .m32 }, &.{ 0xdb }, 1, .none, .x87 },
1177 .{ .fisttp, .m, &.{ .m64 }, &.{ 0xdd }, 1, .none, .x87 },
1178
1179 .{ .fld, .m, &.{ .m32 }, &.{ 0xd9 }, 0, .none, .x87 },
1180 .{ .fld, .m, &.{ .m64 }, &.{ 0xdd }, 0, .none, .x87 },
1181 .{ .fld, .m, &.{ .m80 }, &.{ 0xdb }, 5, .none, .x87 },
1182 .{ .fld, .o, &.{ .st }, &.{ 0xd9, 0xc0 }, 0, .none, .x87 },
1183
1184 .{ .fld1, .z, &.{}, &.{ 0xd9, 0xe8 }, 0, .none, .x87 },
1185 .{ .fldl2t, .z, &.{}, &.{ 0xd9, 0xe9 }, 0, .none, .x87 },
1186 .{ .fldl2e, .z, &.{}, &.{ 0xd9, 0xea }, 0, .none, .x87 },
1187 .{ .fldpi, .z, &.{}, &.{ 0xd9, 0xeb }, 0, .none, .x87 },
1188 .{ .fldlg2, .z, &.{}, &.{ 0xd9, 0xec }, 0, .none, .x87 },
1189 .{ .fldln2, .z, &.{}, &.{ 0xd9, 0xed }, 0, .none, .x87 },
1190 .{ .fldz, .z, &.{}, &.{ 0xd9, 0xee }, 0, .none, .x87 },
1191
1192 .{ .fldcw, .m, &.{ .m16 }, &.{ 0xd9 }, 5, .none, .x87 },
1193
1194 .{ .fldenv, .m, &.{ .m }, &.{ 0xd9 }, 4, .none, .x87 },
1195
1196 .{ .fmul, .m, &.{ .m32 }, &.{ 0xd8 }, 1, .none, .x87 },
1197 .{ .fmul, .m, &.{ .m64 }, &.{ 0xdc }, 1, .none, .x87 },
1198 .{ .fmul, .zo, &.{ .st0, .st }, &.{ 0xd8, 0xc8 }, 0, .none, .x87 },
1199 .{ .fmul, .oz, &.{ .st, .st0 }, &.{ 0xdc, 0xc8 }, 0, .none, .x87 },
1200 .{ .fmulp, .oz, &.{ .st, .st0 }, &.{ 0xde, 0xc8 }, 0, .none, .x87 },
1201 .{ .fmulp, .z, &.{ }, &.{ 0xde, 0xc9 }, 0, .none, .x87 },
1202 .{ .fimul, .m, &.{ .m32 }, &.{ 0xda }, 1, .none, .x87 },
1203 .{ .fimul, .m, &.{ .m16 }, &.{ 0xde }, 1, .none, .x87 },
1204
1205 .{ .fnop, .z, &.{}, &.{ 0xd9, 0xd0 }, 0, .none, .x87 },
1206
1207 .{ .fpatan, .z, &.{}, &.{ 0xd9, 0xf3 }, 0, .none, .x87 },
1208
1209 .{ .fprem, .z, &.{}, &.{ 0xd9, 0xf8 }, 0, .none, .x87 },
1210
1211 .{ .fprem1, .z, &.{}, &.{ 0xd9, 0xf5 }, 0, .none, .x87 },
1212
1213 .{ .fptan, .z, &.{}, &.{ 0xd9, 0xf2 }, 0, .none, .x87 },
1214
1215 .{ .frndint, .z, &.{}, &.{ 0xd9, 0xfc }, 0, .none, .x87 },
1216
1217 .{ .frstor, .m, &.{ .m }, &.{ 0xdd }, 4, .none, .x87 },
1218
1219 .{ .fsave, .m, &.{ .m }, &.{ 0xdd }, 6, .wait, .x87 },
1220 .{ .fnsave, .m, &.{ .m }, &.{ 0xdd }, 6, .none, .x87 },
1221
1222 .{ .fscale, .z, &.{}, &.{ 0xd9, 0xfd }, 0, .none, .x87 },
1223
1224 .{ .fsin, .z, &.{}, &.{ 0xd9, 0xfe }, 0, .none, .x87 },
1225
1226 .{ .fsincos, .z, &.{}, &.{ 0xd9, 0xfb }, 0, .none, .x87 },
1227
1228 .{ .fsqrt, .z, &.{}, &.{ 0xd9, 0xfa }, 0, .none, .x87 },
1229
1230 .{ .fst, .m, &.{ .m32 }, &.{ 0xd9 }, 2, .none, .x87 },
1231 .{ .fst, .m, &.{ .m64 }, &.{ 0xdd }, 2, .none, .x87 },
1232 .{ .fst, .o, &.{ .st }, &.{ 0xdd, 0xd0 }, 0, .none, .x87 },
1233 .{ .fstp, .m, &.{ .m32 }, &.{ 0xd9 }, 3, .none, .x87 },
1234 .{ .fstp, .m, &.{ .m64 }, &.{ 0xdd }, 3, .none, .x87 },
1235 .{ .fstp, .m, &.{ .m80 }, &.{ 0xdb }, 7, .none, .x87 },
1236 .{ .fstp, .o, &.{ .st }, &.{ 0xdd, 0xd8 }, 0, .none, .x87 },
1237
1238 .{ .fstcw, .m, &.{ .m16 }, &.{ 0xd9 }, 7, .wait, .x87 },
1239 .{ .fnstcw, .m, &.{ .m16 }, &.{ 0xd9 }, 7, .none, .x87 },
1240
1241 .{ .fstenv, .m, &.{ .m }, &.{ 0xd9 }, 6, .wait, .x87 },
1242 .{ .fnstenv, .m, &.{ .m }, &.{ 0xd9 }, 6, .none, .x87 },
1243
1244 .{ .fstsw, .m, &.{ .m16 }, &.{ 0xdd }, 7, .wait, .x87 },
1245 .{ .fstsw, .m, &.{ .ax }, &.{ 0xdf }, 4, .wait, .x87 },
1246 .{ .fnstsw, .m, &.{ .m16 }, &.{ 0xdd }, 7, .none, .x87 },
1247 .{ .fnstsw, .m, &.{ .ax }, &.{ 0xdf }, 4, .none, .x87 },
1248
1249 .{ .fsub, .m, &.{ .m32 }, &.{ 0xd8 }, 4, .none, .x87 },
1250 .{ .fsub, .m, &.{ .m64 }, &.{ 0xdc }, 4, .none, .x87 },
1251 .{ .fsub, .zo, &.{ .st0, .st }, &.{ 0xd8, 0xe0 }, 0, .none, .x87 },
1252 .{ .fsub, .oz, &.{ .st, .st0 }, &.{ 0xdc, 0xe8 }, 0, .none, .x87 },
1253 .{ .fsubp, .oz, &.{ .st, .st0 }, &.{ 0xde, 0xe8 }, 0, .none, .x87 },
1254 .{ .fsubp, .z, &.{ }, &.{ 0xde, 0xe9 }, 0, .none, .x87 },
1255 .{ .fisub, .m, &.{ .m32 }, &.{ 0xda }, 4, .none, .x87 },
1256 .{ .fisub, .m, &.{ .m16 }, &.{ 0xde }, 4, .none, .x87 },
1257
1258 .{ .fsubr, .m, &.{ .m32 }, &.{ 0xd8 }, 5, .none, .x87 },
1259 .{ .fsubr, .m, &.{ .m64 }, &.{ 0xdc }, 5, .none, .x87 },
1260 .{ .fsubr, .zo, &.{ .st0, .st }, &.{ 0xd8, 0xe8 }, 0, .none, .x87 },
1261 .{ .fsubr, .oz, &.{ .st, .st0 }, &.{ 0xdc, 0xe0 }, 0, .none, .x87 },
1262 .{ .fsubrp, .oz, &.{ .st, .st0 }, &.{ 0xde, 0xe0 }, 0, .none, .x87 },
1263 .{ .fsubrp, .z, &.{ }, &.{ 0xde, 0xe1 }, 0, .none, .x87 },
1264 .{ .fisubr, .m, &.{ .m32 }, &.{ 0xda }, 5, .none, .x87 },
1265 .{ .fisubr, .m, &.{ .m16 }, &.{ 0xde }, 5, .none, .x87 },
1266
1267 .{ .ftst, .z, &.{}, &.{ 0xd9, 0xe4 }, 0, .none, .x87 },
1268
1269 .{ .fucom, .o, &.{ .st }, &.{ 0xdd, 0xe0 }, 0, .none, .x87 },
1270 .{ .fucom, .z, &.{ }, &.{ 0xdd, 0xe1 }, 0, .none, .x87 },
1271 .{ .fucomp, .o, &.{ .st }, &.{ 0xdd, 0xe8 }, 0, .none, .x87 },
1272 .{ .fucomp, .z, &.{ }, &.{ 0xdd, 0xe9 }, 0, .none, .x87 },
1273 .{ .fucompp, .z, &.{ }, &.{ 0xda, 0xe9 }, 0, .none, .x87 },
1274
1275 .{ .fxam, .z, &.{}, &.{ 0xd9, 0xe5 }, 0, .none, .x87 },
1276
1277 .{ .fxch, .o, &.{ .st }, &.{ 0xd9, 0xc8 }, 0, .none, .x87 },
1278 .{ .fxch, .z, &.{ }, &.{ 0xd9, 0xc9 }, 0, .none, .x87 },
1279
1280 .{ .fxtract, .z, &.{}, &.{ 0xd9, 0xf4 }, 0, .none, .x87 },
1281
1282 .{ .fyl2x, .z, &.{}, &.{ 0xd9, 0xf1 }, 0, .none, .x87 },
1283
1284 .{ .fyl2xp1, .z, &.{}, &.{ 0xd9, 0xf9 }, 0, .none, .x87 },
1285
1286 .{ .wait, .z, &.{}, &.{ 0x9b }, 0, .none, .x87 },
1287 .{ .fwait, .z, &.{}, &.{ 0x9b }, 0, .none, .x87 },
1288
1289 // MMX
1290 .{ .emms, .z, &.{}, &.{ 0x0f, 0x77 }, 0, .none, .mmx },
1291
1292 // SSE
1293 .{ .addps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x58 }, 0, .none, .sse },
1294
1295 .{ .addss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x58 }, 0, .none, .sse },
1296
1297 .{ .andnps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x55 }, 0, .none, .sse },
1298
1299 .{ .andps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x54 }, 0, .none, .sse },
1300
1301 .{ .cmpps, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x0f, 0xc2 }, 0, .none, .sse },
1302
1303 .{ .cmpss, .rmi, &.{ .xmm, .xmm_m32, .imm8 }, &.{ 0xf3, 0x0f, 0xc2 }, 0, .none, .sse },
1304
1305 .{ .comiss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x0f, 0x2f }, 0, .none, .sse },
1306
1307 .{ .cvtpi2ps, .rm, &.{ .xmm, .mm_m64 }, &.{ 0x0f, 0x2a }, 0, .none, .sse },
1308
1309 .{ .cvtps2pi, .rm, &.{ .mm, .xmm_m64 }, &.{ 0x0f, 0x2d }, 0, .none, .sse },
1310
1311 .{ .cvtsi2ss, .rm, &.{ .xmm, .rm32 }, &.{ 0xf3, 0x0f, 0x2a }, 0, .none, .sse },
1312 .{ .cvtsi2ss, .rm, &.{ .xmm, .rm64 }, &.{ 0xf3, 0x0f, 0x2a }, 0, .long, .sse },
1313
1314 .{ .cvtss2si, .rm, &.{ .r32, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x2d }, 0, .none, .sse },
1315 .{ .cvtss2si, .rm, &.{ .r64, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x2d }, 0, .long, .sse },
1316
1317 .{ .cvttps2pi, .rm, &.{ .mm, .xmm_m64 }, &.{ 0x0f, 0x2c }, 0, .none, .sse },
1318
1319 .{ .cvttss2si, .rm, &.{ .r32, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x2c }, 0, .none, .sse },
1320 .{ .cvttss2si, .rm, &.{ .r64, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x2c }, 0, .long, .sse },
1321
1322 .{ .divps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x5e }, 0, .none, .sse },
1323
1324 .{ .divss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5e }, 0, .none, .sse },
1325
1326 .{ .fxrstor, .m, &.{ .m }, &.{ 0x0f, 0xae }, 1, .none, .fxsr },
1327 .{ .fxrstor64, .m, &.{ .m }, &.{ 0x0f, 0xae }, 1, .long, .fxsr },
1328
1329 .{ .fxsave, .m, &.{ .m }, &.{ 0x0f, 0xae }, 0, .none, .fxsr },
1330 .{ .fxsave64, .m, &.{ .m }, &.{ 0x0f, 0xae }, 0, .long, .fxsr },
1331
1332 .{ .ldmxcsr, .m, &.{ .m32 }, &.{ 0x0f, 0xae }, 2, .none, .sse },
1333
1334 .{ .maxps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x5f }, 0, .none, .sse },
1335
1336 .{ .maxss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5f }, 0, .none, .sse },
1337
1338 .{ .minps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x5d }, 0, .none, .sse },
1339
1340 .{ .minss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5d }, 0, .none, .sse },
1341
1342 .{ .movaps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x28 }, 0, .none, .sse },
1343 .{ .movaps, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x0f, 0x29 }, 0, .none, .sse },
1344
1345 .{ .movhlps, .rm, &.{ .xmm, .xmm }, &.{ 0x0f, 0x12 }, 0, .none, .sse },
1346
1347 .{ .movhps, .rm, &.{ .xmm, .m64 }, &.{ 0x0f, 0x16 }, 0, .none, .sse },
1348 .{ .movhps, .mr, &.{ .m64, .xmm }, &.{ 0x0f, 0x17 }, 0, .none, .sse },
1349
1350 .{ .movlhps, .rm, &.{ .xmm, .xmm }, &.{ 0x0f, 0x16 }, 0, .none, .sse },
1351
1352 .{ .movlps, .rm, &.{ .xmm, .m64 }, &.{ 0x0f, 0x12 }, 0, .none, .sse },
1353 .{ .movlps, .mr, &.{ .m64, .xmm }, &.{ 0x0f, 0x13 }, 0, .none, .sse },
1354
1355 .{ .movmskps, .rm, &.{ .r32, .xmm }, &.{ 0x0f, 0x50 }, 0, .none, .sse },
1356 .{ .movmskps, .rm, &.{ .r64, .xmm }, &.{ 0x0f, 0x50 }, 0, .none, .sse },
1357
1358 .{ .movss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x10 }, 0, .none, .sse },
1359 .{ .movss, .mr, &.{ .xmm_m32, .xmm }, &.{ 0xf3, 0x0f, 0x11 }, 0, .none, .sse },
1360
1361 .{ .movups, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x10 }, 0, .none, .sse },
1362 .{ .movups, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x0f, 0x11 }, 0, .none, .sse },
1363
1364 .{ .mulps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x59 }, 0, .none, .sse },
1365
1366 .{ .mulss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x59 }, 0, .none, .sse },
1367
1368 .{ .orps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x56 }, 0, .none, .sse },
1369
1370 .{ .pmovmskb, .rm, &.{ .r32, .xmm }, &.{ 0x66, 0x0f, 0xd7 }, 0, .none, .sse },
1371 .{ .pmovmskb, .rm, &.{ .r64, .xmm }, &.{ 0x66, 0x0f, 0xd7 }, 0, .none, .sse },
1372
1373 .{ .prefetchit0, .m, &.{ .mrip8 }, &.{ 0x0f, 0x18 }, 7, .none, .@"prefetchi 64bit" },
1374 .{ .prefetchit1, .m, &.{ .mrip8 }, &.{ 0x0f, 0x18 }, 6, .none, .@"prefetchi 64bit" },
1375
1376 .{ .prefetchnta, .m, &.{ .m8 }, &.{ 0x0f, 0x18 }, 0, .none, .prefetch },
1377 .{ .prefetcht0, .m, &.{ .m8 }, &.{ 0x0f, 0x18 }, 1, .none, .prefetch },
1378 .{ .prefetcht1, .m, &.{ .m8 }, &.{ 0x0f, 0x18 }, 2, .none, .prefetch },
1379 .{ .prefetcht2, .m, &.{ .m8 }, &.{ 0x0f, 0x18 }, 3, .none, .prefetch },
1380
1381 .{ .prefetchw, .m, &.{ .m8 }, &.{ 0x0f, 0x0d }, 1, .none, .prfchw },
1382
1383 .{ .prefetchwt1, .m, &.{ .m8 }, &.{ 0x0f, 0x0d }, 2, .none, .prefetchwt1 },
1384
1385 .{ .shufps, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x0f, 0xc6 }, 0, .none, .sse },
1386
1387 .{ .sqrtps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x51 }, 0, .none, .sse },
1388
1389 .{ .sqrtss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x51 }, 0, .none, .sse },
1390
1391 .{ .stmxcsr, .m, &.{ .m32 }, &.{ 0x0f, 0xae }, 3, .none, .sse },
1392
1393 .{ .subps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x5c }, 0, .none, .sse },
1394
1395 .{ .subss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5c }, 0, .none, .sse },
1396
1397 .{ .ucomiss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x0f, 0x2e }, 0, .none, .sse },
1398
1399 .{ .unpckhps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x15 }, 0, .none, .sse },
1400
1401 .{ .unpcklps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x14 }, 0, .none, .sse },
1402
1403 .{ .xorps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x57 }, 0, .none, .sse },
1404
1405 // SSE2
1406 .{ .addpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x58 }, 0, .none, .sse2 },
1407
1408 .{ .addsd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x58 }, 0, .none, .sse2 },
1409
1410 .{ .andnpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x55 }, 0, .none, .sse2 },
1411
1412 .{ .andpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x54 }, 0, .none, .sse2 },
1413
1414 .{ .cmppd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0xc2 }, 0, .none, .sse2 },
1415
1416 .{ .cmpsd, .rmi, &.{ .xmm, .xmm_m64, .imm8 }, &.{ 0xf2, 0x0f, 0xc2 }, 0, .none, .sse2 },
1417
1418 .{ .comisd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x2f }, 0, .none, .sse2 },
1419
1420 .{ .cvtdq2pd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf3, 0x0f, 0xe6 }, 0, .none, .sse2 },
1421
1422 .{ .cvtdq2ps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x5b }, 0, .none, .sse2 },
1423
1424 .{ .cvtpd2dq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf2, 0x0f, 0xe6 }, 0, .none, .sse2 },
1425
1426 .{ .cvtpd2pi, .rm, &.{ .mm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x2d }, 0, .none, .sse2 },
1427
1428 .{ .cvtpd2ps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5a }, 0, .none, .sse2 },
1429
1430 .{ .cvtpi2pd, .rm, &.{ .xmm, .mm_m64 }, &.{ 0x66, 0x0f, 0x2a }, 0, .none, .sse2 },
1431
1432 .{ .cvtps2dq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5b }, 0, .none, .sse2 },
1433
1434 .{ .cvtps2pd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x0f, 0x5a }, 0, .none, .sse2 },
1435
1436 .{ .cvtsd2si, .rm, &.{ .r32, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x2d }, 0, .none, .sse2 },
1437 .{ .cvtsd2si, .rm, &.{ .r64, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x2d }, 0, .long, .sse2 },
1438
1439 .{ .cvtsd2ss, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5a }, 0, .none, .sse2 },
1440
1441 .{ .cvtsi2sd, .rm, &.{ .xmm, .rm32 }, &.{ 0xf2, 0x0f, 0x2a }, 0, .none, .sse2 },
1442 .{ .cvtsi2sd, .rm, &.{ .xmm, .rm64 }, &.{ 0xf2, 0x0f, 0x2a }, 0, .long, .sse2 },
1443
1444 .{ .cvtss2sd, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5a }, 0, .none, .sse2 },
1445
1446 .{ .cvttpd2dq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe6 }, 0, .none, .sse2 },
1447
1448 .{ .cvttpd2pi, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x2c }, 0, .none, .sse2 },
1449
1450 .{ .cvttps2dq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0x5b }, 0, .none, .sse2 },
1451
1452 .{ .cvttsd2si, .rm, &.{ .r32, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x2c }, 0, .none, .sse2 },
1453 .{ .cvttsd2si, .rm, &.{ .r64, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x2c }, 0, .long, .sse2 },
1454
1455 .{ .divpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5e }, 0, .none, .sse2 },
1456
1457 .{ .divsd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5e }, 0, .none, .sse2 },
1458
1459 .{ .gf2p8affineinvqb, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0xcf }, 0, .none, .gfni },
1460
1461 .{ .gf2p8affineqb, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0xce }, 0, .none, .gfni },
1462
1463 .{ .gf2p8mulb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xcf }, 0, .none, .gfni },
1464
1465 .{ .maxpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5f }, 0, .none, .sse2 },
1466
1467 .{ .maxsd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5f }, 0, .none, .sse2 },
1468
1469 .{ .minpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5d }, 0, .none, .sse2 },
1470
1471 .{ .minsd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5d }, 0, .none, .sse2 },
1472
1473 .{ .movapd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x28 }, 0, .none, .sse2 },
1474 .{ .movapd, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x29 }, 0, .none, .sse2 },
1475
1476 .{ .movd, .rm, &.{ .xmm, .rm32 }, &.{ 0x66, 0x0f, 0x6e }, 0, .none, .sse2 },
1477 .{ .movq, .rm, &.{ .xmm, .rm64 }, &.{ 0x66, 0x0f, 0x6e }, 0, .long, .sse2 },
1478 .{ .movd, .mr, &.{ .rm32, .xmm }, &.{ 0x66, 0x0f, 0x7e }, 0, .none, .sse2 },
1479 .{ .movq, .mr, &.{ .rm64, .xmm }, &.{ 0x66, 0x0f, 0x7e }, 0, .long, .sse2 },
1480
1481 .{ .movdqa, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6f }, 0, .none, .sse2 },
1482 .{ .movdqa, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x7f }, 0, .none, .sse2 },
1483
1484 .{ .movdqu, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0x6f }, 0, .none, .sse2 },
1485 .{ .movdqu, .mr, &.{ .xmm_m128, .xmm }, &.{ 0xf3, 0x0f, 0x7f }, 0, .none, .sse2 },
1486
1487 .{ .movhpd, .rm, &.{ .xmm, .m64 }, &.{ 0x66, 0x0f, 0x16 }, 0, .none, .sse2 },
1488 .{ .movhpd, .mr, &.{ .m64, .xmm }, &.{ 0x66, 0x0f, 0x17 }, 0, .none, .sse2 },
1489
1490 .{ .movlpd, .rm, &.{ .xmm, .m64 }, &.{ 0x66, 0x0f, 0x12 }, 0, .none, .sse2 },
1491 .{ .movlpd, .mr, &.{ .m64, .xmm }, &.{ 0x66, 0x0f, 0x13 }, 0, .none, .sse2 },
1492
1493 .{ .movmskpd, .rm, &.{ .r32, .xmm }, &.{ 0x66, 0x0f, 0x50 }, 0, .none, .sse2 },
1494 .{ .movmskpd, .rm, &.{ .r64, .xmm }, &.{ 0x66, 0x0f, 0x50 }, 0, .none, .sse2 },
1495
1496 .{ .movsd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x10 }, 0, .none, .sse2 },
1497 .{ .movsd, .mr, &.{ .xmm_m64, .xmm }, &.{ 0xf2, 0x0f, 0x11 }, 0, .none, .sse2 },
1498
1499 .{ .movq, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf3, 0x0f, 0x7e }, 0, .none, .sse2 },
1500 .{ .movq, .mr, &.{ .xmm_m64, .xmm }, &.{ 0x66, 0x0f, 0xd6 }, 0, .none, .sse2 },
1501
1502 .{ .movupd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x10 }, 0, .none, .sse2 },
1503 .{ .movupd, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x11 }, 0, .none, .sse2 },
1504
1505 .{ .mulpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x59 }, 0, .none, .sse2 },
1506
1507 .{ .mulsd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x59 }, 0, .none, .sse2 },
1508
1509 .{ .orpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x56 }, 0, .none, .sse2 },
1510
1511 .{ .packsswb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x63 }, 0, .none, .sse2 },
1512 .{ .packssdw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6b }, 0, .none, .sse2 },
1513
1514 .{ .packuswb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x67 }, 0, .none, .sse2 },
1515
1516 .{ .paddb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfc }, 0, .none, .sse2 },
1517 .{ .paddw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfd }, 0, .none, .sse2 },
1518 .{ .paddd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfe }, 0, .none, .sse2 },
1519 .{ .paddq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd4 }, 0, .none, .sse2 },
1520
1521 .{ .paddsb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xec }, 0, .none, .sse2 },
1522 .{ .paddsw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xed }, 0, .none, .sse2 },
1523
1524 .{ .paddusb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xdc }, 0, .none, .sse2 },
1525 .{ .paddusw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xdd }, 0, .none, .sse2 },
1526
1527 .{ .pand, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xdb }, 0, .none, .sse2 },
1528
1529 .{ .pandn, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xdf }, 0, .none, .sse2 },
1530
1531 .{ .pcmpeqb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x74 }, 0, .none, .sse2 },
1532 .{ .pcmpeqw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x75 }, 0, .none, .sse2 },
1533 .{ .pcmpeqd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x76 }, 0, .none, .sse2 },
1534
1535 .{ .pcmpgtb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x64 }, 0, .none, .sse2 },
1536 .{ .pcmpgtw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x65 }, 0, .none, .sse2 },
1537 .{ .pcmpgtd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x66 }, 0, .none, .sse2 },
1538
1539 .{ .pextrw, .rmi, &.{ .r32, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0xc5 }, 0, .none, .sse2 },
1540
1541 .{ .pinsrw, .rmi, &.{ .xmm, .r32_m16, .imm8 }, &.{ 0x66, 0x0f, 0xc4 }, 0, .none, .sse2 },
1542
1543 .{ .pmaxsw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xee }, 0, .none, .sse2 },
1544
1545 .{ .pmaxub, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xde }, 0, .none, .sse2 },
1546
1547 .{ .pminsw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xea }, 0, .none, .sse2 },
1548
1549 .{ .pminub, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xda }, 0, .none, .sse2 },
1550
1551 .{ .pmulhw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe5 }, 0, .none, .sse2 },
1552
1553 .{ .pmullw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd5 }, 0, .none, .sse2 },
1554
1555 .{ .por, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xeb }, 0, .none, .sse2 },
1556
1557 .{ .pshufd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x70 }, 0, .none, .sse2 },
1558
1559 .{ .pshufhw, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0xf3, 0x0f, 0x70 }, 0, .none, .sse2 },
1560
1561 .{ .pshuflw, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0xf2, 0x0f, 0x70 }, 0, .none, .sse2 },
1562
1563 .{ .psllw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf1 }, 0, .none, .sse2 },
1564 .{ .psllw, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 6, .none, .sse2 },
1565 .{ .pslld, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf2 }, 0, .none, .sse2 },
1566 .{ .pslld, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 6, .none, .sse2 },
1567 .{ .psllq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf3 }, 0, .none, .sse2 },
1568 .{ .psllq, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 6, .none, .sse2 },
1569
1570 .{ .pslldq, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 7, .none, .sse2 },
1571
1572 .{ .psraw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe1 }, 0, .none, .sse2 },
1573 .{ .psraw, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 4, .none, .sse2 },
1574 .{ .psrad, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe2 }, 0, .none, .sse2 },
1575 .{ .psrad, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 4, .none, .sse2 },
1576
1577 .{ .psrlw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd1 }, 0, .none, .sse2 },
1578 .{ .psrlw, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 2, .none, .sse2 },
1579 .{ .psrld, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd2 }, 0, .none, .sse2 },
1580 .{ .psrld, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 2, .none, .sse2 },
1581 .{ .psrlq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd3 }, 0, .none, .sse2 },
1582 .{ .psrlq, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 2, .none, .sse2 },
1583
1584 .{ .psrldq, .mi, &.{ .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 3, .none, .sse2 },
1585
1586 .{ .psubb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf8 }, 0, .none, .sse2 },
1587 .{ .psubw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf9 }, 0, .none, .sse2 },
1588 .{ .psubd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfa }, 0, .none, .sse2 },
1589
1590 .{ .psubsb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe8 }, 0, .none, .sse2 },
1591 .{ .psubsw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe9 }, 0, .none, .sse2 },
1592
1593 .{ .psubq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfb }, 0, .none, .sse2 },
1594
1595 .{ .psubusb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd8 }, 0, .none, .sse2 },
1596 .{ .psubusw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd9 }, 0, .none, .sse2 },
1597
1598 .{ .punpckhbw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x68 }, 0, .none, .sse2 },
1599 .{ .punpckhwd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x69 }, 0, .none, .sse2 },
1600 .{ .punpckhdq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6a }, 0, .none, .sse2 },
1601 .{ .punpckhqdq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6d }, 0, .none, .sse2 },
1602
1603 .{ .punpcklbw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x60 }, 0, .none, .sse2 },
1604 .{ .punpcklwd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x61 }, 0, .none, .sse2 },
1605 .{ .punpckldq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x62 }, 0, .none, .sse2 },
1606 .{ .punpcklqdq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6c }, 0, .none, .sse2 },
1607
1608 .{ .pxor, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xef }, 0, .none, .sse2 },
1609
1610 .{ .shufpd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0xc6 }, 0, .none, .sse2 },
1611
1612 .{ .sqrtpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x51 }, 0, .none, .sse2 },
1613
1614 .{ .sqrtsd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x51 }, 0, .none, .sse2 },
1615
1616 .{ .subpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5c }, 0, .none, .sse2 },
1617
1618 .{ .subsd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5c }, 0, .none, .sse2 },
1619
1620 .{ .ucomisd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x2e }, 0, .none, .sse2 },
1621
1622 .{ .unpckhpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x15 }, 0, .none, .sse2 },
1623
1624 .{ .unpcklpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x14 }, 0, .none, .sse2 },
1625
1626 .{ .xorpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x57 }, 0, .none, .sse2 },
1627
1628 // SSE3
1629 .{ .addsubpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd0 }, 0, .none, .sse3 },
1630
1631 .{ .addsubps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf2, 0x0f, 0xd0 }, 0, .none, .sse3 },
1632
1633 .{ .haddpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x7c }, 0, .none, .sse3 },
1634
1635 .{ .haddps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf2, 0x0f, 0x7c }, 0, .none, .sse3 },
1636
1637 .{ .lddqu, .rm, &.{ .xmm, .m128 }, &.{ 0xf2, 0x0f, 0xf0 }, 0, .none, .sse3 },
1638
1639 .{ .movddup, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x12 }, 0, .none, .sse3 },
1640
1641 .{ .movshdup, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0x16 }, 0, .none, .sse3 },
1642
1643 .{ .movsldup, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0x12 }, 0, .none, .sse3 },
1644
1645 // SSSE3
1646 .{ .pabsb, .rm, &.{ .mm, .mm_m64 }, &.{ 0x0f, 0x38, 0x1c }, 0, .none, .ssse3 },
1647 .{ .pabsb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x1c }, 0, .none, .ssse3 },
1648 .{ .pabsd, .rm, &.{ .mm, .mm_m64 }, &.{ 0x0f, 0x38, 0x1e }, 0, .none, .ssse3 },
1649 .{ .pabsd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x1e }, 0, .none, .ssse3 },
1650 .{ .pabsw, .rm, &.{ .mm, .mm_m64 }, &.{ 0x0f, 0x38, 0x1d }, 0, .none, .ssse3 },
1651 .{ .pabsw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x1d }, 0, .none, .ssse3 },
1652
1653 .{ .palignr, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0f }, 0, .none, .ssse3 },
1654
1655 .{ .pshufb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x00 }, 0, .none, .ssse3 },
1656
1657 // SSE4.1
1658 .{ .blendpd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .none, .sse4_1 },
1659
1660 .{ .blendps, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0c }, 0, .none, .sse4_1 },
1661
1662 .{ .blendvpd, .rm0, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x15 }, 0, .none, .sse4_1 },
1663 .{ .blendvpd, .rm0, &.{ .xmm, .xmm_m128, .xmm0 }, &.{ 0x66, 0x0f, 0x38, 0x15 }, 0, .none, .sse4_1 },
1664
1665 .{ .blendvps, .rm0, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x14 }, 0, .none, .sse4_1 },
1666 .{ .blendvps, .rm0, &.{ .xmm, .xmm_m128, .xmm0 }, &.{ 0x66, 0x0f, 0x38, 0x14 }, 0, .none, .sse4_1 },
1667
1668 .{ .dppd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x41 }, 0, .none, .sse4_1 },
1669
1670 .{ .dpps, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x40 }, 0, .none, .sse4_1 },
1671
1672 .{ .extractps, .mri, &.{ .rm32, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x17 }, 0, .none, .sse4_1 },
1673
1674 .{ .insertps, .rmi, &.{ .xmm, .xmm_m32, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x21 }, 0, .none, .sse4_1 },
1675
1676 .{ .packusdw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x2b }, 0, .none, .sse4_1 },
1677
1678 .{ .pblendvb, .rm0, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x10 }, 0, .none, .sse4_1 },
1679 .{ .pblendvb, .rm0, &.{ .xmm, .xmm_m128, .xmm0 }, &.{ 0x66, 0x0f, 0x38, 0x10 }, 0, .none, .sse4_1 },
1680
1681 .{ .pblendw, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0e }, 0, .none, .sse4_1 },
1682
1683 .{ .pcmpeqq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x29 }, 0, .none, .sse4_1 },
1684
1685 .{ .pextrb, .mri, &.{ .r32_m8, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x14 }, 0, .none, .sse4_1 },
1686 .{ .pextrd, .mri, &.{ .rm32, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x16 }, 0, .none, .sse4_1 },
1687 .{ .pextrq, .mri, &.{ .rm64, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x16 }, 0, .long, .sse4_1 },
1688
1689 .{ .pextrw, .mri, &.{ .r32_m16, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x15 }, 0, .none, .sse4_1 },
1690
1691 .{ .pinsrb, .rmi, &.{ .xmm, .r32_m8, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .none, .sse4_1 },
1692 .{ .pinsrd, .rmi, &.{ .xmm, .rm32, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .none, .sse4_1 },
1693 .{ .pinsrq, .rmi, &.{ .xmm, .rm64, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .long, .sse4_1 },
1694
1695 .{ .pmaxsb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3c }, 0, .none, .sse4_1 },
1696 .{ .pmaxsd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3d }, 0, .none, .sse4_1 },
1697
1698 .{ .pmaxuw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3e }, 0, .none, .sse4_1 },
1699
1700 .{ .pmaxud, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3f }, 0, .none, .sse4_1 },
1701
1702 .{ .pminsb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x38 }, 0, .none, .sse4_1 },
1703 .{ .pminsd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x39 }, 0, .none, .sse4_1 },
1704
1705 .{ .pminuw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3a }, 0, .none, .sse4_1 },
1706
1707 .{ .pminud, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3b }, 0, .none, .sse4_1 },
1708
1709 .{ .pmovsxbw, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x20 }, 0, .none, .sse4_1 },
1710 .{ .pmovsxbd, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x21 }, 0, .none, .sse4_1 },
1711 .{ .pmovsxbq, .rm, &.{ .xmm, .xmm_m16 }, &.{ 0x66, 0x0f, 0x38, 0x22 }, 0, .none, .sse4_1 },
1712 .{ .pmovsxwd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x23 }, 0, .none, .sse4_1 },
1713 .{ .pmovsxwq, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x24 }, 0, .none, .sse4_1 },
1714 .{ .pmovsxdq, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x25 }, 0, .none, .sse4_1 },
1715
1716 .{ .pmovzxbw, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x30 }, 0, .none, .sse4_1 },
1717 .{ .pmovzxbd, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x31 }, 0, .none, .sse4_1 },
1718 .{ .pmovzxbq, .rm, &.{ .xmm, .xmm_m16 }, &.{ 0x66, 0x0f, 0x38, 0x32 }, 0, .none, .sse4_1 },
1719 .{ .pmovzxwd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x33 }, 0, .none, .sse4_1 },
1720 .{ .pmovzxwq, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x34 }, 0, .none, .sse4_1 },
1721 .{ .pmovzxdq, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x35 }, 0, .none, .sse4_1 },
1722
1723 .{ .pmulld, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x40 }, 0, .none, .sse4_1 },
1724
1725 .{ .ptest, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x17 }, 0, .none, .sse4_1 },
1726
1727 .{ .roundpd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x09 }, 0, .none, .sse4_1 },
1728
1729 .{ .roundps, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x08 }, 0, .none, .sse4_1 },
1730
1731 .{ .roundsd, .rmi, &.{ .xmm, .xmm_m64, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0b }, 0, .none, .sse4_1 },
1732
1733 .{ .roundss, .rmi, &.{ .xmm, .xmm_m32, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0a }, 0, .none, .sse4_1 },
1734
1735 // SSE4.2
1736 .{ .crc32, .rm, &.{ .r32, .rm8 }, &.{ 0xf2, 0x0f, 0x38, 0xf0 }, 0, .none, .crc32 },
1737 .{ .crc32, .rm, &.{ .r32, .rm8 }, &.{ 0xf2, 0x0f, 0x38, 0xf0 }, 0, .rex, .crc32 },
1738 .{ .crc32, .rm, &.{ .r32, .rm16 }, &.{ 0xf2, 0x0f, 0x38, 0xf1 }, 0, .short, .crc32 },
1739 .{ .crc32, .rm, &.{ .r32, .rm32 }, &.{ 0xf2, 0x0f, 0x38, 0xf1 }, 0, .none, .crc32 },
1740 .{ .crc32, .rm, &.{ .r64, .rm8 }, &.{ 0xf2, 0x0f, 0x38, 0xf0 }, 0, .long, .crc32 },
1741 .{ .crc32, .rm, &.{ .r64, .rm64 }, &.{ 0xf2, 0x0f, 0x38, 0xf1 }, 0, .long, .crc32 },
1742
1743 .{ .pcmpgtq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x37 }, 0, .none, .sse4_2 },
1744
1745 // ABM
1746 .{ .lzcnt, .rm, &.{ .r16, .rm16 }, &.{ 0xf3, 0x0f, 0xbd }, 0, .short, .lzcnt },
1747 .{ .lzcnt, .rm, &.{ .r32, .rm32 }, &.{ 0xf3, 0x0f, 0xbd }, 0, .none, .lzcnt },
1748 .{ .lzcnt, .rm, &.{ .r64, .rm64 }, &.{ 0xf3, 0x0f, 0xbd }, 0, .long, .lzcnt },
1749
1750 .{ .popcnt, .rm, &.{ .r16, .rm16 }, &.{ 0xf3, 0x0f, 0xb8 }, 0, .short, .popcnt },
1751 .{ .popcnt, .rm, &.{ .r32, .rm32 }, &.{ 0xf3, 0x0f, 0xb8 }, 0, .none, .popcnt },
1752 .{ .popcnt, .rm, &.{ .r64, .rm64 }, &.{ 0xf3, 0x0f, 0xb8 }, 0, .long, .popcnt },
1753
1754 // PCLMUL
1755 .{ .pclmulqdq, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x44 }, 0, .none, .pclmul },
1756
1757 // AES
1758 .{ .aesdec, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xde }, 0, .none, .aes },
1759
1760 .{ .aesdeclast, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xdf }, 0, .none, .aes },
1761
1762 .{ .aesenc, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xdc }, 0, .none, .aes },
1763
1764 .{ .aesenclast, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xdd }, 0, .none, .aes },
1765
1766 .{ .aesimc, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xdb }, 0, .none, .aes },
1767
1768 .{ .aeskeygenassist, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0xdf }, 0, .none, .aes },
1769
1770 // SHA
1771 .{ .sha1rnds4, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x0f, 0x3a, 0xcc }, 0, .none, .sha },
1772
1773 .{ .sha1nexte, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x38, 0xc8 }, 0, .none, .sha },
1774
1775 .{ .sha1msg1, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x38, 0xc9 }, 0, .none, .sha },
1776
1777 .{ .sha1msg2, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x38, 0xca }, 0, .none, .sha },
1778
1779 .{ .sha256rnds2, .rm0, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x38, 0xcb }, 0, .none, .sha },
1780 .{ .sha256rnds2, .rm0, &.{ .xmm, .xmm_m128, .xmm0 }, &.{ 0x0f, 0x38, 0xcb }, 0, .none, .sha },
1781
1782 .{ .sha256msg1, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x38, 0xcc }, 0, .none, .sha },
1783
1784 .{ .sha256msg2, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x38, 0xcd }, 0, .none, .sha },
1785
1786 // AVX
1787 .{ .vaddpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x58 }, 0, .vex_128_wig, .avx },
1788 .{ .vaddpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x58 }, 0, .vex_256_wig, .avx },
1789
1790 .{ .vaddps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x58 }, 0, .vex_128_wig, .avx },
1791 .{ .vaddps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x58 }, 0, .vex_256_wig, .avx },
1792
1793 .{ .vaddsd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x58 }, 0, .vex_lig_wig, .avx },
1794
1795 .{ .vaddss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x58 }, 0, .vex_lig_wig, .avx },
1796
1797 .{ .vaddsubpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd0 }, 0, .vex_128_wig, .avx },
1798 .{ .vaddsubpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xd0 }, 0, .vex_256_wig, .avx },
1799
1800 .{ .vaddsubps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0xf2, 0x0f, 0xd0 }, 0, .vex_128_wig, .avx },
1801 .{ .vaddsubps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0xf2, 0x0f, 0xd0 }, 0, .vex_256_wig, .avx },
1802
1803 .{ .vaesdec, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xde }, 0, .vex_128_wig, .@"aes avx" },
1804
1805 .{ .vaesdeclast, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xdf }, 0, .vex_128_wig, .@"aes avx" },
1806
1807 .{ .vaesenc, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xdc }, 0, .vex_128_wig, .@"aes avx" },
1808
1809 .{ .vaesenclast, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xdd }, 0, .vex_128_wig, .@"aes avx" },
1810
1811 .{ .vaesimc, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xdb }, 0, .vex_128_wig, .@"aes avx" },
1812
1813 .{ .vaeskeygenassist, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0xdf }, 0, .vex_128_wig, .@"aes avx" },
1814
1815 .{ .vandnpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x55 }, 0, .vex_128_wig, .avx },
1816 .{ .vandnpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x55 }, 0, .vex_256_wig, .avx },
1817
1818 .{ .vandnps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x55 }, 0, .vex_128_wig, .avx },
1819 .{ .vandnps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x55 }, 0, .vex_256_wig, .avx },
1820
1821 .{ .vandpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x54 }, 0, .vex_128_wig, .avx },
1822 .{ .vandpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x54 }, 0, .vex_256_wig, .avx },
1823
1824 .{ .vandps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x54 }, 0, .vex_128_wig, .avx },
1825 .{ .vandps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x54 }, 0, .vex_256_wig, .avx },
1826
1827 .{ .vblendpd, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .vex_128_wig, .avx },
1828 .{ .vblendpd, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .vex_256_wig, .avx },
1829
1830 .{ .vblendps, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0c }, 0, .vex_128_wig, .avx },
1831 .{ .vblendps, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0c }, 0, .vex_256_wig, .avx },
1832
1833 .{ .vblendvpd, .rvmr, &.{ .xmm, .xmm, .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x3a, 0x4b }, 0, .vex_128_w0, .avx },
1834 .{ .vblendvpd, .rvmr, &.{ .ymm, .ymm, .ymm_m256, .ymm }, &.{ 0x66, 0x0f, 0x3a, 0x4b }, 0, .vex_256_w0, .avx },
1835
1836 .{ .vblendvps, .rvmr, &.{ .xmm, .xmm, .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x3a, 0x4a }, 0, .vex_128_w0, .avx },
1837 .{ .vblendvps, .rvmr, &.{ .ymm, .ymm, .ymm_m256, .ymm }, &.{ 0x66, 0x0f, 0x3a, 0x4a }, 0, .vex_256_w0, .avx },
1838
1839 .{ .vbroadcastss, .rm, &.{ .xmm, .m32 }, &.{ 0x66, 0x0f, 0x38, 0x18 }, 0, .vex_128_w0, .avx },
1840 .{ .vbroadcastss, .rm, &.{ .ymm, .m32 }, &.{ 0x66, 0x0f, 0x38, 0x18 }, 0, .vex_256_w0, .avx },
1841 .{ .vbroadcastsd, .rm, &.{ .ymm, .m64 }, &.{ 0x66, 0x0f, 0x38, 0x19 }, 0, .vex_256_w0, .avx },
1842 .{ .vbroadcastf128, .rm, &.{ .ymm, .m128 }, &.{ 0x66, 0x0f, 0x38, 0x1a }, 0, .vex_256_w0, .avx },
1843
1844 .{ .vcmppd, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0xc2 }, 0, .vex_128_wig, .avx },
1845 .{ .vcmppd, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0xc2 }, 0, .vex_256_wig, .avx },
1846
1847 .{ .vcmpps, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x0f, 0xc2 }, 0, .vex_128_wig, .avx },
1848 .{ .vcmpps, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x0f, 0xc2 }, 0, .vex_256_wig, .avx },
1849
1850 .{ .vcmpsd, .rvmi, &.{ .xmm, .xmm, .xmm_m64, .imm8 }, &.{ 0xf2, 0x0f, 0xc2 }, 0, .vex_lig_wig, .avx },
1851
1852 .{ .vcmpss, .rvmi, &.{ .xmm, .xmm, .xmm_m32, .imm8 }, &.{ 0xf3, 0x0f, 0xc2 }, 0, .vex_lig_wig, .avx },
1853
1854 .{ .vcomisd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x2f }, 0, .vex_lig_wig, .avx },
1855
1856 .{ .vcomiss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x0f, 0x2f }, 0, .vex_lig_wig, .avx },
1857
1858 .{ .vcvtdq2pd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf3, 0x0f, 0xe6 }, 0, .vex_128_wig, .avx },
1859 .{ .vcvtdq2pd, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0xe6 }, 0, .vex_256_wig, .avx },
1860
1861 .{ .vcvtdq2ps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x5b }, 0, .vex_128_wig, .avx },
1862 .{ .vcvtdq2ps, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x0f, 0x5b }, 0, .vex_256_wig, .avx },
1863
1864 .{ .vcvtpd2dq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf2, 0x0f, 0xe6 }, 0, .vex_128_wig, .avx },
1865 .{ .vcvtpd2dq, .rm, &.{ .xmm, .ymm_m256 }, &.{ 0xf2, 0x0f, 0xe6 }, 0, .vex_256_wig, .avx },
1866
1867 .{ .vcvtpd2ps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5a }, 0, .vex_128_wig, .avx },
1868 .{ .vcvtpd2ps, .rm, &.{ .xmm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x5a }, 0, .vex_256_wig, .avx },
1869
1870 .{ .vcvtps2dq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5b }, 0, .vex_128_wig, .avx },
1871 .{ .vcvtps2dq, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x5b }, 0, .vex_256_wig, .avx },
1872
1873 .{ .vcvtps2pd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x0f, 0x5a }, 0, .vex_128_wig, .avx },
1874 .{ .vcvtps2pd, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0x0f, 0x5a }, 0, .vex_256_wig, .avx },
1875
1876 .{ .vcvtsd2si, .rm, &.{ .r32, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x2d }, 0, .vex_lig_w0, .sse2 },
1877 .{ .vcvtsd2si, .rm, &.{ .r64, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x2d }, 0, .vex_lig_w1, .sse2 },
1878
1879 .{ .vcvtsd2ss, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5a }, 0, .vex_lig_wig, .avx },
1880
1881 .{ .vcvtsi2sd, .rvm, &.{ .xmm, .xmm, .rm32 }, &.{ 0xf2, 0x0f, 0x2a }, 0, .vex_lig_w0, .avx },
1882 .{ .vcvtsi2sd, .rvm, &.{ .xmm, .xmm, .rm64 }, &.{ 0xf2, 0x0f, 0x2a }, 0, .vex_lig_w1, .avx },
1883
1884 .{ .vcvtsi2ss, .rvm, &.{ .xmm, .xmm, .rm32 }, &.{ 0xf3, 0x0f, 0x2a }, 0, .vex_lig_w0, .avx },
1885 .{ .vcvtsi2ss, .rvm, &.{ .xmm, .xmm, .rm64 }, &.{ 0xf3, 0x0f, 0x2a }, 0, .vex_lig_w1, .avx },
1886
1887 .{ .vcvtss2sd, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5a }, 0, .vex_lig_wig, .avx },
1888
1889 .{ .vcvtss2si, .rm, &.{ .r32, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x2d }, 0, .vex_lig_w0, .avx },
1890 .{ .vcvtss2si, .rm, &.{ .r64, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x2d }, 0, .vex_lig_w1, .avx },
1891
1892 .{ .vcvttpd2dq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe6 }, 0, .vex_128_wig, .avx },
1893 .{ .vcvttpd2dq, .rm, &.{ .xmm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xe6 }, 0, .vex_256_wig, .avx },
1894
1895 .{ .vcvttps2dq, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0x5b }, 0, .vex_128_wig, .avx },
1896 .{ .vcvttps2dq, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0xf3, 0x0f, 0x5b }, 0, .vex_256_wig, .avx },
1897
1898 .{ .vcvttsd2si, .rm, &.{ .r32, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x2c }, 0, .vex_lig_w0, .sse2 },
1899 .{ .vcvttsd2si, .rm, &.{ .r64, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x2c }, 0, .vex_lig_w1, .sse2 },
1900
1901 .{ .vcvttss2si, .rm, &.{ .r32, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x2c }, 0, .vex_lig_w0, .avx },
1902 .{ .vcvttss2si, .rm, &.{ .r64, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x2c }, 0, .vex_lig_w1, .avx },
1903
1904 .{ .vdppd, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x41 }, 0, .vex_128_wig, .avx },
1905
1906 .{ .vdpps, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x40 }, 0, .vex_128_wig, .avx },
1907 .{ .vdpps, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x40 }, 0, .vex_256_wig, .avx },
1908
1909 .{ .vdivpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5e }, 0, .vex_128_wig, .avx },
1910 .{ .vdivpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x5e }, 0, .vex_256_wig, .avx },
1911
1912 .{ .vdivps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x5e }, 0, .vex_128_wig, .avx },
1913 .{ .vdivps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x5e }, 0, .vex_256_wig, .avx },
1914
1915 .{ .vdivsd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5e }, 0, .vex_lig_wig, .avx },
1916
1917 .{ .vdivss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5e }, 0, .vex_lig_wig, .avx },
1918
1919 .{ .vextractf128, .mri, &.{ .xmm_m128, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x19 }, 0, .vex_256_w0, .avx },
1920
1921 .{ .vextractps, .mri, &.{ .rm32, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x17 }, 0, .vex_128_wig, .avx },
1922
1923 .{ .vgf2p8affineinvqb, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0xcf }, 0, .vex_128_w1, .@"gfni avx" },
1924 .{ .vgf2p8affineinvqb, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0xcf }, 0, .vex_256_w1, .@"gfni avx" },
1925
1926 .{ .vgf2p8affineqb, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0xce }, 0, .vex_128_w1, .@"gfni avx" },
1927 .{ .vgf2p8affineqb, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0xce }, 0, .vex_256_w1, .@"gfni avx" },
1928
1929 .{ .vgf2p8mulb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xcf }, 0, .vex_128_w0, .@"gfni avx" },
1930 .{ .vgf2p8mulb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xcf }, 0, .vex_256_w0, .@"gfni avx" },
1931
1932 .{ .vhaddpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x7c }, 0, .vex_128_wig, .avx },
1933 .{ .vhaddpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x7c }, 0, .vex_256_wig, .avx },
1934
1935 .{ .vhaddps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0xf2, 0x0f, 0x7c }, 0, .vex_128_wig, .avx },
1936 .{ .vhaddps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0xf2, 0x0f, 0x7c }, 0, .vex_256_wig, .avx },
1937
1938 .{ .vinsertf128, .rvmi, &.{ .ymm, .ymm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x18 }, 0, .vex_256_w0, .avx },
1939
1940 .{ .vinsertps, .rvmi, &.{ .xmm, .xmm, .xmm_m32, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x21 }, 0, .vex_128_wig, .avx },
1941
1942 .{ .vlddqu, .rm, &.{ .xmm, .m128 }, &.{ 0xf2, 0x0f, 0xf0 }, 0, .vex_128_wig, .avx },
1943 .{ .vlddqu, .rm, &.{ .ymm, .m256 }, &.{ 0xf2, 0x0f, 0xf0 }, 0, .vex_256_wig, .avx },
1944
1945 .{ .vldmxcsr, .m, &.{ .m32 }, &.{ 0x0f, 0xae }, 2, .vex_lz_wig, .avx },
1946
1947 .{ .vmaskmovps, .rvm, &.{ .xmm, .xmm, .m128 }, &.{ 0x66, 0x0f, 0x38, 0x2c }, 0, .vex_128_w0, .avx },
1948 .{ .vmaskmovps, .rvm, &.{ .ymm, .ymm, .m256 }, &.{ 0x66, 0x0f, 0x38, 0x2c }, 0, .vex_256_w0, .avx },
1949 .{ .vmaskmovpd, .rvm, &.{ .xmm, .xmm, .m128 }, &.{ 0x66, 0x0f, 0x38, 0x2d }, 0, .vex_128_w0, .avx },
1950 .{ .vmaskmovpd, .rvm, &.{ .ymm, .ymm, .m256 }, &.{ 0x66, 0x0f, 0x38, 0x2d }, 0, .vex_256_w0, .avx },
1951 .{ .vmaskmovps, .mvr, &.{ .m128, .xmm, .xmm }, &.{ 0x66, 0x0f, 0x38, 0x2e }, 0, .vex_128_w0, .avx },
1952 .{ .vmaskmovps, .mvr, &.{ .m256, .ymm, .ymm }, &.{ 0x66, 0x0f, 0x38, 0x2e }, 0, .vex_256_w0, .avx },
1953 .{ .vmaskmovpd, .mvr, &.{ .m128, .xmm, .xmm }, &.{ 0x66, 0x0f, 0x38, 0x2f }, 0, .vex_128_w0, .avx },
1954 .{ .vmaskmovpd, .mvr, &.{ .m256, .ymm, .ymm }, &.{ 0x66, 0x0f, 0x38, 0x2f }, 0, .vex_256_w0, .avx },
1955
1956 .{ .vmaxpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5f }, 0, .vex_128_wig, .avx },
1957 .{ .vmaxpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x5f }, 0, .vex_256_wig, .avx },
1958
1959 .{ .vmaxps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x5f }, 0, .vex_128_wig, .avx },
1960 .{ .vmaxps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x5f }, 0, .vex_256_wig, .avx },
1961
1962 .{ .vmaxsd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5f }, 0, .vex_lig_wig, .avx },
1963
1964 .{ .vmaxss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5f }, 0, .vex_lig_wig, .avx },
1965
1966 .{ .vmovmskps, .rm, &.{ .r32, .xmm }, &.{ 0x0f, 0x50 }, 0, .vex_128_wig, .avx },
1967 .{ .vmovmskps, .rm, &.{ .r64, .xmm }, &.{ 0x0f, 0x50 }, 0, .vex_128_wig, .avx },
1968 .{ .vmovmskps, .rm, &.{ .r32, .ymm }, &.{ 0x0f, 0x50 }, 0, .vex_256_wig, .avx },
1969 .{ .vmovmskps, .rm, &.{ .r64, .ymm }, &.{ 0x0f, 0x50 }, 0, .vex_256_wig, .avx },
1970
1971 .{ .vmovmskpd, .rm, &.{ .r32, .xmm }, &.{ 0x66, 0x0f, 0x50 }, 0, .vex_128_wig, .avx },
1972 .{ .vmovmskpd, .rm, &.{ .r64, .xmm }, &.{ 0x66, 0x0f, 0x50 }, 0, .vex_128_wig, .avx },
1973 .{ .vmovmskpd, .rm, &.{ .r32, .ymm }, &.{ 0x66, 0x0f, 0x50 }, 0, .vex_256_wig, .avx },
1974 .{ .vmovmskpd, .rm, &.{ .r64, .ymm }, &.{ 0x66, 0x0f, 0x50 }, 0, .vex_256_wig, .avx },
1975
1976 .{ .vminpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5d }, 0, .vex_128_wig, .avx },
1977 .{ .vminpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x5d }, 0, .vex_256_wig, .avx },
1978
1979 .{ .vminps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x5d }, 0, .vex_128_wig, .avx },
1980 .{ .vminps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x5d }, 0, .vex_256_wig, .avx },
1981
1982 .{ .vminsd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5d }, 0, .vex_lig_wig, .avx },
1983
1984 .{ .vminss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5d }, 0, .vex_lig_wig, .avx },
1985
1986 .{ .vmovapd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x28 }, 0, .vex_128_wig, .avx },
1987 .{ .vmovapd, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x29 }, 0, .vex_128_wig, .avx },
1988 .{ .vmovapd, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x28 }, 0, .vex_256_wig, .avx },
1989 .{ .vmovapd, .mr, &.{ .ymm_m256, .ymm }, &.{ 0x66, 0x0f, 0x29 }, 0, .vex_256_wig, .avx },
1990
1991 .{ .vmovaps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x28 }, 0, .vex_128_wig, .avx },
1992 .{ .vmovaps, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x0f, 0x29 }, 0, .vex_128_wig, .avx },
1993 .{ .vmovaps, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x0f, 0x28 }, 0, .vex_256_wig, .avx },
1994 .{ .vmovaps, .mr, &.{ .ymm_m256, .ymm }, &.{ 0x0f, 0x29 }, 0, .vex_256_wig, .avx },
1995
1996 .{ .vmovd, .rm, &.{ .xmm, .rm32 }, &.{ 0x66, 0x0f, 0x6e }, 0, .vex_128_w0, .avx },
1997 .{ .vmovq, .rm, &.{ .xmm, .rm64 }, &.{ 0x66, 0x0f, 0x6e }, 0, .vex_128_w1, .avx },
1998 .{ .vmovd, .mr, &.{ .rm32, .xmm }, &.{ 0x66, 0x0f, 0x7e }, 0, .vex_128_w0, .avx },
1999 .{ .vmovq, .mr, &.{ .rm64, .xmm }, &.{ 0x66, 0x0f, 0x7e }, 0, .vex_128_w1, .avx },
2000
2001 .{ .vmovddup, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2002 .{ .vmovddup, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0xf2, 0x0f, 0x12 }, 0, .vex_256_wig, .avx },
2003
2004 .{ .vmovdqa, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6f }, 0, .vex_128_wig, .avx },
2005 .{ .vmovdqa, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x7f }, 0, .vex_128_wig, .avx },
2006 .{ .vmovdqa, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x6f }, 0, .vex_256_wig, .avx },
2007 .{ .vmovdqa, .mr, &.{ .ymm_m256, .ymm }, &.{ 0x66, 0x0f, 0x7f }, 0, .vex_256_wig, .avx },
2008
2009 .{ .vmovdqu, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0x6f }, 0, .vex_128_wig, .avx },
2010 .{ .vmovdqu, .mr, &.{ .xmm_m128, .xmm }, &.{ 0xf3, 0x0f, 0x7f }, 0, .vex_128_wig, .avx },
2011 .{ .vmovdqu, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0xf3, 0x0f, 0x6f }, 0, .vex_256_wig, .avx },
2012 .{ .vmovdqu, .mr, &.{ .ymm_m256, .ymm }, &.{ 0xf3, 0x0f, 0x7f }, 0, .vex_256_wig, .avx },
2013
2014 .{ .vmovhlps, .rvm, &.{ .xmm, .xmm, .xmm }, &.{ 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2015
2016 .{ .vmovhpd, .rvm, &.{ .xmm, .xmm, .m64 }, &.{ 0x66, 0x0f, 0x16 }, 0, .vex_128_wig, .avx },
2017 .{ .vmovhpd, .mr, &.{ .m64, .xmm }, &.{ 0x66, 0x0f, 0x17 }, 0, .vex_128_wig, .avx },
2018
2019 .{ .vmovhps, .rvm, &.{ .xmm, .xmm, .m64 }, &.{ 0x0f, 0x16 }, 0, .vex_128_wig, .avx },
2020 .{ .vmovhps, .mr, &.{ .m64, .xmm }, &.{ 0x0f, 0x17 }, 0, .vex_128_wig, .avx },
2021
2022 .{ .vmovlhps, .rvm, &.{ .xmm, .xmm, .xmm }, &.{ 0x0f, 0x16 }, 0, .vex_128_wig, .avx },
2023
2024 .{ .vmovlpd, .rvm, &.{ .xmm, .xmm, .m64 }, &.{ 0x66, 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2025 .{ .vmovlpd, .mr, &.{ .m64, .xmm }, &.{ 0x66, 0x0f, 0x13 }, 0, .vex_128_wig, .avx },
2026
2027 .{ .vmovlps, .rvm, &.{ .xmm, .xmm, .m64 }, &.{ 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2028 .{ .vmovlps, .mr, &.{ .m64, .xmm }, &.{ 0x0f, 0x13 }, 0, .vex_128_wig, .avx },
2029
2030 .{ .vmovq, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0xf3, 0x0f, 0x7e }, 0, .vex_128_wig, .avx },
2031 .{ .vmovq, .mr, &.{ .xmm_m64, .xmm }, &.{ 0x66, 0x0f, 0xd6 }, 0, .vex_128_wig, .avx },
2032
2033 .{ .vmovsd, .rvm, &.{ .xmm, .xmm, .xmm }, &.{ 0xf2, 0x0f, 0x10 }, 0, .vex_lig_wig, .avx },
2034 .{ .vmovsd, .rm, &.{ .xmm, .m64 }, &.{ 0xf2, 0x0f, 0x10 }, 0, .vex_lig_wig, .avx },
2035 .{ .vmovsd, .mvr, &.{ .xmm, .xmm, .xmm }, &.{ 0xf2, 0x0f, 0x11 }, 0, .vex_lig_wig, .avx },
2036 .{ .vmovsd, .mr, &.{ .m64, .xmm }, &.{ 0xf2, 0x0f, 0x11 }, 0, .vex_lig_wig, .avx },
2037
2038 .{ .vmovshdup, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0x16 }, 0, .vex_128_wig, .avx },
2039 .{ .vmovshdup, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0xf3, 0x0f, 0x16 }, 0, .vex_256_wig, .avx },
2040
2041 .{ .vmovsldup, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0xf3, 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2042 .{ .vmovsldup, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0xf3, 0x0f, 0x12 }, 0, .vex_256_wig, .avx },
2043
2044 .{ .vmovss, .rvm, &.{ .xmm, .xmm, .xmm }, &.{ 0xf3, 0x0f, 0x10 }, 0, .vex_lig_wig, .avx },
2045 .{ .vmovss, .rm, &.{ .xmm, .m32 }, &.{ 0xf3, 0x0f, 0x10 }, 0, .vex_lig_wig, .avx },
2046 .{ .vmovss, .mvr, &.{ .xmm, .xmm, .xmm }, &.{ 0xf3, 0x0f, 0x11 }, 0, .vex_lig_wig, .avx },
2047 .{ .vmovss, .mr, &.{ .m32, .xmm }, &.{ 0xf3, 0x0f, 0x11 }, 0, .vex_lig_wig, .avx },
2048
2049 .{ .vmovupd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x10 }, 0, .vex_128_wig, .avx },
2050 .{ .vmovupd, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x11 }, 0, .vex_128_wig, .avx },
2051 .{ .vmovupd, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x10 }, 0, .vex_256_wig, .avx },
2052 .{ .vmovupd, .mr, &.{ .ymm_m256, .ymm }, &.{ 0x66, 0x0f, 0x11 }, 0, .vex_256_wig, .avx },
2053
2054 .{ .vmovups, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x10 }, 0, .vex_128_wig, .avx },
2055 .{ .vmovups, .mr, &.{ .xmm_m128, .xmm }, &.{ 0x0f, 0x11 }, 0, .vex_128_wig, .avx },
2056 .{ .vmovups, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x0f, 0x10 }, 0, .vex_256_wig, .avx },
2057 .{ .vmovups, .mr, &.{ .ymm_m256, .ymm }, &.{ 0x0f, 0x11 }, 0, .vex_256_wig, .avx },
2058
2059 .{ .vmulpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x59 }, 0, .vex_128_wig, .avx },
2060 .{ .vmulpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x59 }, 0, .vex_256_wig, .avx },
2061
2062 .{ .vmulps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x59 }, 0, .vex_128_wig, .avx },
2063 .{ .vmulps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x59 }, 0, .vex_256_wig, .avx },
2064
2065 .{ .vmulsd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x59 }, 0, .vex_lig_wig, .avx },
2066
2067 .{ .vmulss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x59 }, 0, .vex_lig_wig, .avx },
2068
2069 .{ .vorpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x56 }, 0, .vex_128_wig, .avx },
2070 .{ .vorpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x56 }, 0, .vex_256_wig, .avx },
2071
2072 .{ .vorps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x56 }, 0, .vex_128_wig, .avx },
2073 .{ .vorps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x56 }, 0, .vex_256_wig, .avx },
2074
2075 .{ .vpabsb, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x1c }, 0, .vex_128_wig, .avx },
2076 .{ .vpabsd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x1e }, 0, .vex_128_wig, .avx },
2077 .{ .vpabsw, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x1d }, 0, .vex_128_wig, .avx },
2078
2079 .{ .vpacksswb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x63 }, 0, .vex_128_wig, .avx },
2080 .{ .vpackssdw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6b }, 0, .vex_128_wig, .avx },
2081
2082 .{ .vpackusdw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x2b }, 0, .vex_128_wig, .avx },
2083
2084 .{ .vpackuswb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x67 }, 0, .vex_128_wig, .avx },
2085
2086 .{ .vpaddb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfc }, 0, .vex_128_wig, .avx },
2087 .{ .vpaddw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfd }, 0, .vex_128_wig, .avx },
2088 .{ .vpaddd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfe }, 0, .vex_128_wig, .avx },
2089 .{ .vpaddq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd4 }, 0, .vex_128_wig, .avx },
2090
2091 .{ .vpaddsb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xec }, 0, .vex_128_wig, .avx },
2092 .{ .vpaddsw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xed }, 0, .vex_128_wig, .avx },
2093
2094 .{ .vpaddusb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xdc }, 0, .vex_128_wig, .avx },
2095 .{ .vpaddusw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xdd }, 0, .vex_128_wig, .avx },
2096
2097 .{ .vpalignr, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0f }, 0, .vex_128_wig, .avx },
2098
2099 .{ .vpand, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xdb }, 0, .vex_128_wig, .avx },
2100
2101 .{ .vpandn, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xdf }, 0, .vex_128_wig, .avx },
2102
2103 .{ .vpblendvb, .rvmr, &.{ .xmm, .xmm, .xmm_m128, .xmm }, &.{ 0x66, 0x0f, 0x3a, 0x4c }, 0, .vex_128_w0, .avx },
2104
2105 .{ .vpblendw, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0e }, 0, .vex_128_wig, .avx },
2106
2107 .{ .vpclmulqdq, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x44 }, 0, .vex_128_wig, .@"pclmul avx" },
2108
2109 .{ .vpcmpeqb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x74 }, 0, .vex_128_wig, .avx },
2110 .{ .vpcmpeqw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x75 }, 0, .vex_128_wig, .avx },
2111 .{ .vpcmpeqd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x76 }, 0, .vex_128_wig, .avx },
2112
2113 .{ .vpcmpeqq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x29 }, 0, .vex_128_wig, .avx },
2114
2115 .{ .vpcmpgtb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x64 }, 0, .vex_128_wig, .avx },
2116 .{ .vpcmpgtw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x65 }, 0, .vex_128_wig, .avx },
2117 .{ .vpcmpgtd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x66 }, 0, .vex_128_wig, .avx },
2118
2119 .{ .vpcmpgtq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x37 }, 0, .vex_128_wig, .avx },
2120
2121 .{ .vperm2f128, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x06 }, 0, .vex_256_w0, .avx },
2122
2123 .{ .vpermilpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x0d }, 0, .vex_128_w0, .avx },
2124 .{ .vpermilpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x0d }, 0, .vex_256_w0, .avx },
2125 .{ .vpermilpd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x05 }, 0, .vex_128_w0, .avx },
2126 .{ .vpermilpd, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x05 }, 0, .vex_256_w0, .avx },
2127
2128 .{ .vpermilpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x0c }, 0, .vex_128_w0, .avx },
2129 .{ .vpermilps, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x04 }, 0, .vex_128_w0, .avx },
2130 .{ .vpermilps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x0c }, 0, .vex_256_w0, .avx },
2131 .{ .vpermilps, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x04 }, 0, .vex_256_w0, .avx },
2132
2133 .{ .vpextrb, .mri, &.{ .r32_m8, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x14 }, 0, .vex_128_w0, .avx },
2134 .{ .vpextrd, .mri, &.{ .rm32, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x16 }, 0, .vex_128_w0, .avx },
2135 .{ .vpextrq, .mri, &.{ .rm64, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x16 }, 0, .vex_128_w1, .avx },
2136
2137 .{ .vpextrw, .rmi, &.{ .r32, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0xc5 }, 0, .vex_128_w0, .avx },
2138 .{ .vpextrw, .mri, &.{ .r32_m16, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x15 }, 0, .vex_128_w0, .avx },
2139
2140 .{ .vpinsrb, .rvmi, &.{ .xmm, .xmm, .r32_m8, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .vex_128_w0, .avx },
2141 .{ .vpinsrd, .rvmi, &.{ .xmm, .xmm, .rm32, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w0, .avx },
2142 .{ .vpinsrq, .rvmi, &.{ .xmm, .xmm, .rm64, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w1, .avx },
2143
2144 .{ .vpinsrw, .rvmi, &.{ .xmm, .xmm, .r32_m16, .imm8 }, &.{ 0x66, 0x0f, 0xc4 }, 0, .vex_128_w0, .avx },
2145
2146 .{ .vpmaxsb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3c }, 0, .vex_128_wig, .avx },
2147 .{ .vpmaxsw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xee }, 0, .vex_128_wig, .avx },
2148 .{ .vpmaxsd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3d }, 0, .vex_128_wig, .avx },
2149
2150 .{ .vpmaxub, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xde }, 0, .vex_128_wig, .avx },
2151 .{ .vpmaxuw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3e }, 0, .vex_128_wig, .avx },
2152
2153 .{ .vpmaxud, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3f }, 0, .vex_128_wig, .avx },
2154
2155 .{ .vpminsb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x38 }, 0, .vex_128_wig, .avx },
2156 .{ .vpminsw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xea }, 0, .vex_128_wig, .avx },
2157 .{ .vpminsd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x39 }, 0, .vex_128_wig, .avx },
2158
2159 .{ .vpminub, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xda }, 0, .vex_128_wig, .avx },
2160 .{ .vpminuw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3a }, 0, .vex_128_wig, .avx },
2161
2162 .{ .vpminud, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x3b }, 0, .vex_128_wig, .avx },
2163
2164 .{ .vpmovmskb, .rm, &.{ .r32, .xmm }, &.{ 0x66, 0x0f, 0xd7 }, 0, .vex_128_wig, .avx },
2165 .{ .vpmovmskb, .rm, &.{ .r64, .xmm }, &.{ 0x66, 0x0f, 0xd7 }, 0, .vex_128_wig, .avx },
2166
2167 .{ .vpmovsxbw, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x20 }, 0, .vex_128_wig, .avx },
2168 .{ .vpmovsxbd, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x21 }, 0, .vex_128_wig, .avx },
2169 .{ .vpmovsxbq, .rm, &.{ .xmm, .xmm_m16 }, &.{ 0x66, 0x0f, 0x38, 0x22 }, 0, .vex_128_wig, .avx },
2170 .{ .vpmovsxwd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x23 }, 0, .vex_128_wig, .avx },
2171 .{ .vpmovsxwq, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x24 }, 0, .vex_128_wig, .avx },
2172 .{ .vpmovsxdq, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x25 }, 0, .vex_128_wig, .avx },
2173
2174 .{ .vpmovzxbw, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x30 }, 0, .vex_128_wig, .avx },
2175 .{ .vpmovzxbd, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x31 }, 0, .vex_128_wig, .avx },
2176 .{ .vpmovzxbq, .rm, &.{ .xmm, .xmm_m16 }, &.{ 0x66, 0x0f, 0x38, 0x32 }, 0, .vex_128_wig, .avx },
2177 .{ .vpmovzxwd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x33 }, 0, .vex_128_wig, .avx },
2178 .{ .vpmovzxwq, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x34 }, 0, .vex_128_wig, .avx },
2179 .{ .vpmovzxdq, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x35 }, 0, .vex_128_wig, .avx },
2180
2181 .{ .vpmulhw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe5 }, 0, .vex_128_wig, .avx },
2182
2183 .{ .vpmulld, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_128_wig, .avx },
2184
2185 .{ .vpmullw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd5 }, 0, .vex_128_wig, .avx },
2186
2187 .{ .vpor, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xeb }, 0, .vex_128_wig, .avx },
2188
2189 .{ .vpshufb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_128_wig, .avx },
2190
2191 .{ .vpshufd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
2192
2193 .{ .vpshufhw, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0xf3, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
2194
2195 .{ .vpshuflw, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0xf2, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
2196
2197 .{ .vpsllw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf1 }, 0, .vex_128_wig, .avx },
2198 .{ .vpsllw, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 6, .vex_128_wig, .avx },
2199 .{ .vpslld, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf2 }, 0, .vex_128_wig, .avx },
2200 .{ .vpslld, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 6, .vex_128_wig, .avx },
2201 .{ .vpsllq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf3 }, 0, .vex_128_wig, .avx },
2202 .{ .vpsllq, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 6, .vex_128_wig, .avx },
2203
2204 .{ .vpslldq, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 7, .vex_128_wig, .avx },
2205
2206 .{ .vpsraw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe1 }, 0, .vex_128_wig, .avx },
2207 .{ .vpsraw, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 4, .vex_128_wig, .avx },
2208 .{ .vpsrad, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe2 }, 0, .vex_128_wig, .avx },
2209 .{ .vpsrad, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 4, .vex_128_wig, .avx },
2210
2211 .{ .vpsrlw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd1 }, 0, .vex_128_wig, .avx },
2212 .{ .vpsrlw, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 2, .vex_128_wig, .avx },
2213 .{ .vpsrld, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd2 }, 0, .vex_128_wig, .avx },
2214 .{ .vpsrld, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 2, .vex_128_wig, .avx },
2215 .{ .vpsrlq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd3 }, 0, .vex_128_wig, .avx },
2216 .{ .vpsrlq, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 2, .vex_128_wig, .avx },
2217
2218 .{ .vpsrldq, .vmi, &.{ .xmm, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 3, .vex_128_wig, .avx },
2219
2220 .{ .vpsubb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf8 }, 0, .vex_128_wig, .avx },
2221 .{ .vpsubw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf9 }, 0, .vex_128_wig, .avx },
2222 .{ .vpsubd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfa }, 0, .vex_128_wig, .avx },
2223
2224 .{ .vpsubsb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe8 }, 0, .vex_128_wig, .avx },
2225 .{ .vpsubsw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe9 }, 0, .vex_128_wig, .avx },
2226
2227 .{ .vpsubq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xfb }, 0, .vex_128_wig, .avx },
2228
2229 .{ .vpsubusb, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd8 }, 0, .vex_128_wig, .avx },
2230 .{ .vpsubusw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd9 }, 0, .vex_128_wig, .avx },
2231
2232 .{ .vptest, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x17 }, 0, .vex_128_wig, .avx },
2233 .{ .vptest, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x17 }, 0, .vex_256_wig, .avx },
2234
2235 .{ .vpunpckhbw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x68 }, 0, .vex_128_wig, .avx },
2236 .{ .vpunpckhwd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x69 }, 0, .vex_128_wig, .avx },
2237 .{ .vpunpckhdq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6a }, 0, .vex_128_wig, .avx },
2238 .{ .vpunpckhqdq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6d }, 0, .vex_128_wig, .avx },
2239
2240 .{ .vpunpcklbw, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x60 }, 0, .vex_128_wig, .avx },
2241 .{ .vpunpcklwd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x61 }, 0, .vex_128_wig, .avx },
2242 .{ .vpunpckldq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x62 }, 0, .vex_128_wig, .avx },
2243 .{ .vpunpcklqdq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x6c }, 0, .vex_128_wig, .avx },
2244
2245 .{ .vpxor, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xef }, 0, .vex_128_wig, .avx },
2246
2247 .{ .vroundpd, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x09 }, 0, .vex_128_wig, .avx },
2248 .{ .vroundpd, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x09 }, 0, .vex_256_wig, .avx },
2249
2250 .{ .vroundps, .rmi, &.{ .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x08 }, 0, .vex_128_wig, .avx },
2251 .{ .vroundps, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x08 }, 0, .vex_256_wig, .avx },
2252
2253 .{ .vroundsd, .rvmi, &.{ .xmm, .xmm, .xmm_m64, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0b }, 0, .vex_lig_wig, .avx },
2254
2255 .{ .vroundss, .rvmi, &.{ .xmm, .xmm, .xmm_m32, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0a }, 0, .vex_lig_wig, .avx },
2256
2257 .{ .vshufpd, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0xc6 }, 0, .vex_128_wig, .avx },
2258 .{ .vshufpd, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0xc6 }, 0, .vex_256_wig, .avx },
2259
2260 .{ .vshufps, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x0f, 0xc6 }, 0, .vex_128_wig, .avx },
2261 .{ .vshufps, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x0f, 0xc6 }, 0, .vex_256_wig, .avx },
2262
2263 .{ .vsqrtpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x51 }, 0, .vex_128_wig, .avx },
2264 .{ .vsqrtpd, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x51 }, 0, .vex_256_wig, .avx },
2265
2266 .{ .vsqrtps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x0f, 0x51 }, 0, .vex_128_wig, .avx },
2267 .{ .vsqrtps, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x0f, 0x51 }, 0, .vex_256_wig, .avx },
2268
2269 .{ .vsqrtsd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x51 }, 0, .vex_lig_wig, .avx },
2270
2271 .{ .vsqrtss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x51 }, 0, .vex_lig_wig, .avx },
2272
2273 .{ .vstmxcsr, .m, &.{ .m32 }, &.{ 0x0f, 0xae }, 3, .vex_lz_wig, .avx },
2274
2275 .{ .vsubpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x5c }, 0, .vex_128_wig, .avx },
2276 .{ .vsubpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x5c }, 0, .vex_256_wig, .avx },
2277
2278 .{ .vsubps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x5c }, 0, .vex_128_wig, .avx },
2279 .{ .vsubps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x5c }, 0, .vex_256_wig, .avx },
2280
2281 .{ .vsubsd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0xf2, 0x0f, 0x5c }, 0, .vex_lig_wig, .avx },
2282
2283 .{ .vsubss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0xf3, 0x0f, 0x5c }, 0, .vex_lig_wig, .avx },
2284
2285 .{ .vtestps, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x0e }, 0, .vex_128_w0, .avx },
2286 .{ .vtestps, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x0e }, 0, .vex_256_w0, .avx },
2287 .{ .vtestpd, .rm, &.{ .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x0f }, 0, .vex_128_w0, .avx },
2288 .{ .vtestpd, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x0f }, 0, .vex_256_w0, .avx },
2289
2290 .{ .vucomisd, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x2e }, 0, .vex_lig_wig, .avx },
2291
2292 .{ .vucomiss, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x0f, 0x2e }, 0, .vex_lig_wig, .avx },
2293
2294 .{ .vunpckhpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x15 }, 0, .vex_128_wig, .avx },
2295 .{ .vunpckhpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x15 }, 0, .vex_256_wig, .avx },
2296
2297 .{ .vunpckhps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x15 }, 0, .vex_128_wig, .avx },
2298 .{ .vunpckhps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x15 }, 0, .vex_256_wig, .avx },
2299
2300 .{ .vunpcklpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x14 }, 0, .vex_128_wig, .avx },
2301 .{ .vunpcklpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x14 }, 0, .vex_256_wig, .avx },
2302
2303 .{ .vunpcklps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x14 }, 0, .vex_128_wig, .avx },
2304 .{ .vunpcklps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x14 }, 0, .vex_256_wig, .avx },
2305
2306 .{ .vxorpd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x57 }, 0, .vex_128_wig, .avx },
2307 .{ .vxorpd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x57 }, 0, .vex_256_wig, .avx },
2308
2309 .{ .vxorps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x0f, 0x57 }, 0, .vex_128_wig, .avx },
2310 .{ .vxorps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x0f, 0x57 }, 0, .vex_256_wig, .avx },
2311
2312 // BMI
2313 .{ .andn, .rvm, &.{ .r32, .r32, .rm32 }, &.{ 0x0f, 0x38, 0xf2 }, 0, .vex_lz_w0, .bmi },
2314 .{ .andn, .rvm, &.{ .r64, .r64, .rm64 }, &.{ 0x0f, 0x38, 0xf2 }, 0, .vex_lz_w1, .bmi },
2315
2316 .{ .bextr, .rmv, &.{ .r32, .rm32, .r32 }, &.{ 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w0, .bmi },
2317 .{ .bextr, .rmv, &.{ .r64, .rm64, .r64 }, &.{ 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w1, .bmi },
2318
2319 .{ .blsi, .vm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x38, 0xf3 }, 3, .vex_lz_w0, .bmi },
2320 .{ .blsi, .vm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x38, 0xf3 }, 3, .vex_lz_w1, .bmi },
2321
2322 .{ .blsmsk, .vm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x38, 0xf3 }, 2, .vex_lz_w0, .bmi },
2323 .{ .blsmsk, .vm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x38, 0xf3 }, 2, .vex_lz_w1, .bmi },
2324
2325 .{ .blsr, .vm, &.{ .r32, .rm32 }, &.{ 0x0f, 0x38, 0xf3 }, 1, .vex_lz_w0, .bmi },
2326 .{ .blsr, .vm, &.{ .r64, .rm64 }, &.{ 0x0f, 0x38, 0xf3 }, 1, .vex_lz_w1, .bmi },
2327
2328 .{ .tzcnt, .rm, &.{ .r16, .rm16 }, &.{ 0xf3, 0x0f, 0xbc }, 0, .short, .bmi },
2329 .{ .tzcnt, .rm, &.{ .r32, .rm32 }, &.{ 0xf3, 0x0f, 0xbc }, 0, .none, .bmi },
2330 .{ .tzcnt, .rm, &.{ .r64, .rm64 }, &.{ 0xf3, 0x0f, 0xbc }, 0, .long, .bmi },
2331
2332 // BMI2
2333 .{ .bzhi, .rmv, &.{ .r32, .rm32, .r32 }, &.{ 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w0, .bmi2 },
2334 .{ .bzhi, .rmv, &.{ .r64, .rm64, .r64 }, &.{ 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w1, .bmi2 },
2335
2336 .{ .mulx, .rvm, &.{ .r32, .r32, .rm32 }, &.{ 0xf2, 0x0f, 0x38, 0xf6 }, 0, .vex_lz_w0, .bmi2 },
2337 .{ .mulx, .rvm, &.{ .r64, .r64, .rm64 }, &.{ 0xf2, 0x0f, 0x38, 0xf6 }, 0, .vex_lz_w1, .bmi2 },
2338
2339 .{ .pdep, .rvm, &.{ .r32, .r32, .rm32 }, &.{ 0xf2, 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w0, .bmi2 },
2340 .{ .pdep, .rvm, &.{ .r64, .r64, .rm64 }, &.{ 0xf2, 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w1, .bmi2 },
2341
2342 .{ .pext, .rvm, &.{ .r32, .r32, .rm32 }, &.{ 0xf3, 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w0, .bmi2 },
2343 .{ .pext, .rvm, &.{ .r64, .r64, .rm64 }, &.{ 0xf3, 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w1, .bmi2 },
2344
2345 .{ .rorx, .rmi, &.{ .r32, .rm32, .imm8 }, &.{ 0xf2, 0x0f, 0x3a }, 0, .vex_lz_w0, .bmi2 },
2346 .{ .rorx, .rmi, &.{ .r64, .rm64, .imm8 }, &.{ 0xf2, 0x0f, 0x3a }, 0, .vex_lz_w1, .bmi2 },
2347
2348 .{ .sarx, .rmv, &.{ .r32, .rm32, .r32 }, &.{ 0xf3, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w0, .bmi2 },
2349 .{ .shlx, .rmv, &.{ .r32, .rm32, .r32 }, &.{ 0x66, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w0, .bmi2 },
2350 .{ .shrx, .rmv, &.{ .r32, .rm32, .r32 }, &.{ 0xf2, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w0, .bmi2 },
2351 .{ .sarx, .rmv, &.{ .r64, .rm64, .r64 }, &.{ 0xf3, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w1, .bmi2 },
2352 .{ .shlx, .rmv, &.{ .r64, .rm64, .r64 }, &.{ 0x66, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w1, .bmi2 },
2353 .{ .shrx, .rmv, &.{ .r64, .rm64, .r64 }, &.{ 0xf2, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w1, .bmi2 },
2354
2355 // F16C
2356 .{ .vcvtph2ps, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x13 }, 0, .vex_128_w0, .f16c },
2357 .{ .vcvtph2ps, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x13 }, 0, .vex_256_w0, .f16c },
2358
2359 .{ .vcvtps2ph, .mri, &.{ .xmm_m64, .xmm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x1d }, 0, .vex_128_w0, .f16c },
2360 .{ .vcvtps2ph, .mri, &.{ .xmm_m128, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x1d }, 0, .vex_256_w0, .f16c },
2361
2362 // FMA
2363 .{ .vfmadd132pd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x98 }, 0, .vex_128_w1, .fma },
2364 .{ .vfmadd213pd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xa8 }, 0, .vex_128_w1, .fma },
2365 .{ .vfmadd231pd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xb8 }, 0, .vex_128_w1, .fma },
2366 .{ .vfmadd132pd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x98 }, 0, .vex_256_w1, .fma },
2367 .{ .vfmadd213pd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xa8 }, 0, .vex_256_w1, .fma },
2368 .{ .vfmadd231pd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xb8 }, 0, .vex_256_w1, .fma },
2369
2370 .{ .vfmadd132ps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x98 }, 0, .vex_128_w0, .fma },
2371 .{ .vfmadd213ps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xa8 }, 0, .vex_128_w0, .fma },
2372 .{ .vfmadd231ps, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0xb8 }, 0, .vex_128_w0, .fma },
2373 .{ .vfmadd132ps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x98 }, 0, .vex_256_w0, .fma },
2374 .{ .vfmadd213ps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xa8 }, 0, .vex_256_w0, .fma },
2375 .{ .vfmadd231ps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xb8 }, 0, .vex_256_w0, .fma },
2376
2377 .{ .vfmadd132sd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x99 }, 0, .vex_lig_w1, .fma },
2378 .{ .vfmadd213sd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0xa9 }, 0, .vex_lig_w1, .fma },
2379 .{ .vfmadd231sd, .rvm, &.{ .xmm, .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0xb9 }, 0, .vex_lig_w1, .fma },
2380
2381 .{ .vfmadd132ss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x99 }, 0, .vex_lig_w0, .fma },
2382 .{ .vfmadd213ss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0xa9 }, 0, .vex_lig_w0, .fma },
2383 .{ .vfmadd231ss, .rvm, &.{ .xmm, .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0xb9 }, 0, .vex_lig_w0, .fma },
2384
2385 // VPCLMULQDQ
2386 .{ .vpclmulqdq, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x44 }, 0, .vex_256_wig, .vpclmulqdq },
2387
2388 // AVX2
2389 .{ .vbroadcastss, .rm, &.{ .xmm, .xmm }, &.{ 0x66, 0x0f, 0x38, 0x18 }, 0, .vex_128_w0, .avx2 },
2390 .{ .vbroadcastss, .rm, &.{ .ymm, .xmm }, &.{ 0x66, 0x0f, 0x38, 0x18 }, 0, .vex_256_w0, .avx2 },
2391 .{ .vbroadcastsd, .rm, &.{ .ymm, .xmm }, &.{ 0x66, 0x0f, 0x38, 0x19 }, 0, .vex_256_w0, .avx2 },
2392
2393 .{ .vextracti128, .mri, &.{ .xmm_m128, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x39 }, 0, .vex_256_w0, .avx2 },
2394
2395 .{ .vinserti128, .rvmi, &.{ .ymm, .ymm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x38 }, 0, .vex_256_w0, .avx2 },
2396
2397 .{ .vpabsb, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x1c }, 0, .vex_256_wig, .avx2 },
2398 .{ .vpabsd, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x1e }, 0, .vex_256_wig, .avx2 },
2399 .{ .vpabsw, .rm, &.{ .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x1d }, 0, .vex_256_wig, .avx2 },
2400
2401 .{ .vpacksswb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x63 }, 0, .vex_256_wig, .avx2 },
2402 .{ .vpackssdw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x6b }, 0, .vex_256_wig, .avx2 },
2403
2404 .{ .vpackusdw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x2b }, 0, .vex_256_wig, .avx2 },
2405
2406 .{ .vpackuswb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x67 }, 0, .vex_256_wig, .avx2 },
2407
2408 .{ .vpaddb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xfc }, 0, .vex_256_wig, .avx2 },
2409 .{ .vpaddw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xfd }, 0, .vex_256_wig, .avx2 },
2410 .{ .vpaddd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xfe }, 0, .vex_256_wig, .avx2 },
2411 .{ .vpaddq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xd4 }, 0, .vex_256_wig, .avx2 },
2412
2413 .{ .vpaddsb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xec }, 0, .vex_256_wig, .avx2 },
2414 .{ .vpaddsw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xed }, 0, .vex_256_wig, .avx2 },
2415
2416 .{ .vpaddusb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xdc }, 0, .vex_256_wig, .avx2 },
2417 .{ .vpaddusw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xdd }, 0, .vex_256_wig, .avx2 },
2418
2419 .{ .vpalignr, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0f }, 0, .vex_256_wig, .avx2 },
2420
2421 .{ .vpand, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xdb }, 0, .vex_256_wig, .avx2 },
2422
2423 .{ .vpandn, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xdf }, 0, .vex_256_wig, .avx2 },
2424
2425 .{ .vpblendd, .rvmi, &.{ .xmm, .xmm, .xmm_m128, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x02 }, 0, .vex_128_w0, .avx2 },
2426 .{ .vpblendd, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x02 }, 0, .vex_256_w0, .avx2 },
2427
2428 .{ .vpblendvb, .rvmr, &.{ .ymm, .ymm, .ymm_m256, .ymm }, &.{ 0x66, 0x0f, 0x3a, 0x4c }, 0, .vex_256_w0, .avx2 },
2429
2430 .{ .vpblendw, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x0e }, 0, .vex_256_wig, .avx2 },
2431
2432 .{ .vpbroadcastb, .rm, &.{ .xmm, .xmm_m8 }, &.{ 0x66, 0x0f, 0x38, 0x78 }, 0, .vex_128_w0, .avx2 },
2433 .{ .vpbroadcastb, .rm, &.{ .ymm, .xmm_m8 }, &.{ 0x66, 0x0f, 0x38, 0x78 }, 0, .vex_256_w0, .avx2 },
2434 .{ .vpbroadcastw, .rm, &.{ .xmm, .xmm_m16 }, &.{ 0x66, 0x0f, 0x38, 0x79 }, 0, .vex_128_w0, .avx2 },
2435 .{ .vpbroadcastw, .rm, &.{ .ymm, .xmm_m16 }, &.{ 0x66, 0x0f, 0x38, 0x79 }, 0, .vex_256_w0, .avx2 },
2436 .{ .vpbroadcastd, .rm, &.{ .xmm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x58 }, 0, .vex_128_w0, .avx2 },
2437 .{ .vpbroadcastd, .rm, &.{ .ymm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x58 }, 0, .vex_256_w0, .avx2 },
2438 .{ .vpbroadcastq, .rm, &.{ .xmm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x59 }, 0, .vex_128_w0, .avx2 },
2439 .{ .vpbroadcastq, .rm, &.{ .ymm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x59 }, 0, .vex_256_w0, .avx2 },
2440 .{ .vbroadcasti128, .rm, &.{ .ymm, .m128 }, &.{ 0x66, 0x0f, 0x38, 0x5a }, 0, .vex_256_w0, .avx2 },
2441
2442 .{ .vpcmpeqb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x74 }, 0, .vex_256_wig, .avx2 },
2443 .{ .vpcmpeqw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x75 }, 0, .vex_256_wig, .avx2 },
2444 .{ .vpcmpeqd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x76 }, 0, .vex_256_wig, .avx2 },
2445
2446 .{ .vpcmpeqq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x29 }, 0, .vex_256_wig, .avx2 },
2447
2448 .{ .vpcmpgtb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x64 }, 0, .vex_256_wig, .avx2 },
2449 .{ .vpcmpgtw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x65 }, 0, .vex_256_wig, .avx2 },
2450 .{ .vpcmpgtd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x66 }, 0, .vex_256_wig, .avx2 },
2451
2452 .{ .vpcmpgtq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x37 }, 0, .vex_256_wig, .avx2 },
2453
2454 .{ .vperm2i128, .rvmi, &.{ .ymm, .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x46 }, 0, .vex_256_w0, .avx2 },
2455
2456 .{ .vpermd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x36 }, 0, .vex_256_w0, .avx2 },
2457
2458 .{ .vpermpd, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x01 }, 0, .vex_256_w1, .avx2 },
2459
2460 .{ .vpermps, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x16 }, 0, .vex_256_w0, .avx2 },
2461
2462 .{ .vpermq, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x3a, 0x00 }, 0, .vex_256_w1, .avx2 },
2463
2464 .{ .vpmaskmovd, .rvm, &.{ .xmm, .xmm, .m128 }, &.{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w0, .avx2 },
2465 .{ .vpmaskmovd, .rvm, &.{ .ymm, .ymm, .m256 }, &.{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_256_w0, .avx2 },
2466 .{ .vpmaskmovq, .rvm, &.{ .xmm, .xmm, .m128 }, &.{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w1, .avx2 },
2467 .{ .vpmaskmovq, .rvm, &.{ .ymm, .ymm, .m256 }, &.{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_256_w1, .avx2 },
2468 .{ .vpmaskmovd, .mvr, &.{ .m128, .xmm, .xmm }, &.{ 0x66, 0x0f, 0x38, 0x8e }, 0, .vex_128_w0, .avx2 },
2469 .{ .vpmaskmovd, .mvr, &.{ .m256, .ymm, .ymm }, &.{ 0x66, 0x0f, 0x38, 0x8e }, 0, .vex_256_w0, .avx2 },
2470 .{ .vpmaskmovq, .mvr, &.{ .m128, .xmm, .xmm }, &.{ 0x66, 0x0f, 0x38, 0x8e }, 0, .vex_128_w1, .avx2 },
2471 .{ .vpmaskmovq, .mvr, &.{ .m256, .ymm, .ymm }, &.{ 0x66, 0x0f, 0x38, 0x8e }, 0, .vex_256_w1, .avx2 },
2472
2473 .{ .vpmaxsb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x3c }, 0, .vex_256_wig, .avx2 },
2474 .{ .vpmaxsw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xee }, 0, .vex_256_wig, .avx2 },
2475 .{ .vpmaxsd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x3d }, 0, .vex_256_wig, .avx2 },
2476
2477 .{ .vpmaxub, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xde }, 0, .vex_256_wig, .avx2 },
2478 .{ .vpmaxuw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x3e }, 0, .vex_256_wig, .avx2 },
2479
2480 .{ .vpmaxud, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x3f }, 0, .vex_256_wig, .avx2 },
2481
2482 .{ .vpminsb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x38 }, 0, .vex_256_wig, .avx2 },
2483 .{ .vpminsw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xea }, 0, .vex_256_wig, .avx2 },
2484 .{ .vpminsd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x39 }, 0, .vex_256_wig, .avx2 },
2485
2486 .{ .vpminub, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xda }, 0, .vex_256_wig, .avx2 },
2487 .{ .vpminuw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x3a }, 0, .vex_256_wig, .avx2 },
2488
2489 .{ .vpminud, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x3b }, 0, .vex_256_wig, .avx2 },
2490
2491 .{ .vpmovmskb, .rm, &.{ .r32, .ymm }, &.{ 0x66, 0x0f, 0xd7 }, 0, .vex_256_wig, .avx2 },
2492 .{ .vpmovmskb, .rm, &.{ .r64, .ymm }, &.{ 0x66, 0x0f, 0xd7 }, 0, .vex_256_wig, .avx2 },
2493
2494 .{ .vpmovsxbw, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x20 }, 0, .vex_256_wig, .avx2 },
2495 .{ .vpmovsxbd, .rm, &.{ .ymm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x21 }, 0, .vex_256_wig, .avx2 },
2496 .{ .vpmovsxbq, .rm, &.{ .ymm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x22 }, 0, .vex_256_wig, .avx2 },
2497 .{ .vpmovsxwd, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x23 }, 0, .vex_256_wig, .avx2 },
2498 .{ .vpmovsxwq, .rm, &.{ .ymm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x24 }, 0, .vex_256_wig, .avx2 },
2499 .{ .vpmovsxdq, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x25 }, 0, .vex_256_wig, .avx2 },
2500
2501 .{ .vpmovzxbw, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x30 }, 0, .vex_256_wig, .avx2 },
2502 .{ .vpmovzxbd, .rm, &.{ .ymm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x31 }, 0, .vex_256_wig, .avx2 },
2503 .{ .vpmovzxbq, .rm, &.{ .ymm, .xmm_m32 }, &.{ 0x66, 0x0f, 0x38, 0x32 }, 0, .vex_256_wig, .avx2 },
2504 .{ .vpmovzxwd, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x33 }, 0, .vex_256_wig, .avx2 },
2505 .{ .vpmovzxwq, .rm, &.{ .ymm, .xmm_m64 }, &.{ 0x66, 0x0f, 0x38, 0x34 }, 0, .vex_256_wig, .avx2 },
2506 .{ .vpmovzxdq, .rm, &.{ .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x35 }, 0, .vex_256_wig, .avx2 },
2507
2508 .{ .vpmulhw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xe5 }, 0, .vex_256_wig, .avx2 },
2509
2510 .{ .vpmulld, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_256_wig, .avx2 },
2511
2512 .{ .vpmullw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xd5 }, 0, .vex_256_wig, .avx2 },
2513
2514 .{ .vpor, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xeb }, 0, .vex_256_wig, .avx2 },
2515
2516 .{ .vpshufb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_256_wig, .avx2 },
2517 .{ .vpshufd, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0x66, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
2518
2519 .{ .vpshufhw, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0xf3, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
2520
2521 .{ .vpshuflw, .rmi, &.{ .ymm, .ymm_m256, .imm8 }, &.{ 0xf2, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
2522
2523 .{ .vpsllw, .rvm, &.{ .ymm, .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf1 }, 0, .vex_256_wig, .avx2 },
2524 .{ .vpsllw, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 6, .vex_256_wig, .avx2 },
2525 .{ .vpslld, .rvm, &.{ .ymm, .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf2 }, 0, .vex_256_wig, .avx2 },
2526 .{ .vpslld, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 6, .vex_256_wig, .avx2 },
2527 .{ .vpsllq, .rvm, &.{ .ymm, .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xf3 }, 0, .vex_256_wig, .avx2 },
2528 .{ .vpsllq, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 6, .vex_256_wig, .avx2 },
2529
2530 .{ .vpslldq, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 7, .vex_256_wig, .avx2 },
2531
2532 .{ .vpsllvd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x47 }, 0, .vex_128_w0, .avx2 },
2533 .{ .vpsllvq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x47 }, 0, .vex_128_w1, .avx2 },
2534 .{ .vpsllvd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x47 }, 0, .vex_256_w0, .avx2 },
2535 .{ .vpsllvq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x47 }, 0, .vex_256_w1, .avx2 },
2536
2537 .{ .vpsraw, .rvm, &.{ .ymm, .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe1 }, 0, .vex_256_wig, .avx2 },
2538 .{ .vpsraw, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 4, .vex_256_wig, .avx2 },
2539 .{ .vpsrad, .rvm, &.{ .ymm, .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xe2 }, 0, .vex_256_wig, .avx2 },
2540 .{ .vpsrad, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 4, .vex_256_wig, .avx2 },
2541
2542 .{ .vpsravd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x46 }, 0, .vex_128_w0, .avx2 },
2543 .{ .vpsravd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x46 }, 0, .vex_256_w0, .avx2 },
2544
2545 .{ .vpsrlw, .rvm, &.{ .ymm, .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd1 }, 0, .vex_256_wig, .avx2 },
2546 .{ .vpsrlw, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x71 }, 2, .vex_256_wig, .avx2 },
2547 .{ .vpsrld, .rvm, &.{ .ymm, .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd2 }, 0, .vex_256_wig, .avx2 },
2548 .{ .vpsrld, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x72 }, 2, .vex_256_wig, .avx2 },
2549 .{ .vpsrlq, .rvm, &.{ .ymm, .ymm, .xmm_m128 }, &.{ 0x66, 0x0f, 0xd3 }, 0, .vex_256_wig, .avx2 },
2550 .{ .vpsrlq, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 2, .vex_256_wig, .avx2 },
2551
2552 .{ .vpsrldq, .vmi, &.{ .ymm, .ymm, .imm8 }, &.{ 0x66, 0x0f, 0x73 }, 3, .vex_256_wig, .avx2 },
2553
2554 .{ .vpsrlvd, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x45 }, 0, .vex_128_w0, .avx2 },
2555 .{ .vpsrlvq, .rvm, &.{ .xmm, .xmm, .xmm_m128 }, &.{ 0x66, 0x0f, 0x38, 0x45 }, 0, .vex_128_w1, .avx2 },
2556 .{ .vpsrlvd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x45 }, 0, .vex_256_w0, .avx2 },
2557 .{ .vpsrlvq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0x45 }, 0, .vex_256_w1, .avx2 },
2558
2559 .{ .vpsubb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xf8 }, 0, .vex_256_wig, .avx2 },
2560 .{ .vpsubw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xf9 }, 0, .vex_256_wig, .avx2 },
2561 .{ .vpsubd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xfa }, 0, .vex_256_wig, .avx2 },
2562
2563 .{ .vpsubsb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xe8 }, 0, .vex_256_wig, .avx2 },
2564 .{ .vpsubsw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xe9 }, 0, .vex_256_wig, .avx2 },
2565
2566 .{ .vpsubq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xfb }, 0, .vex_256_wig, .avx2 },
2567
2568 .{ .vpsubusb, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xd8 }, 0, .vex_256_wig, .avx2 },
2569 .{ .vpsubusw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xd9 }, 0, .vex_256_wig, .avx2 },
2570
2571 .{ .vpunpckhbw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x68 }, 0, .vex_256_wig, .avx2 },
2572 .{ .vpunpckhwd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x69 }, 0, .vex_256_wig, .avx2 },
2573 .{ .vpunpckhdq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x6a }, 0, .vex_256_wig, .avx2 },
2574 .{ .vpunpckhqdq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x6d }, 0, .vex_256_wig, .avx2 },
2575
2576 .{ .vpunpcklbw, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x60 }, 0, .vex_256_wig, .avx2 },
2577 .{ .vpunpcklwd, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x61 }, 0, .vex_256_wig, .avx2 },
2578 .{ .vpunpckldq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x62 }, 0, .vex_256_wig, .avx2 },
2579 .{ .vpunpcklqdq, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x6c }, 0, .vex_256_wig, .avx2 },
2580
2581 .{ .vpxor, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0xef }, 0, .vex_256_wig, .avx2 },
2582
2583 // ADX
2584 .{ .adcx, .rm, &.{ .r32, .rm32 }, &.{ 0x66, 0x0f, 0x38, 0xf6 }, 0, .none, .adx },
2585 .{ .adcx, .rm, &.{ .r64, .rm64 }, &.{ 0x66, 0x0f, 0x38, 0xf6 }, 0, .long, .adx },
2586
2587 .{ .adox, .rm, &.{ .r32, .rm32 }, &.{ 0xf3, 0x0f, 0x38, 0xf6 }, 0, .none, .adx },
2588 .{ .adox, .rm, &.{ .r64, .rm64 }, &.{ 0xf3, 0x0f, 0x38, 0xf6 }, 0, .long, .adx },
2589
2590 // VAES
2591 .{ .vaesdec, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xde }, 0, .vex_256_wig, .vaes },
2592
2593 .{ .vaesdeclast, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xdf }, 0, .vex_256_wig, .vaes },
2594
2595 .{ .vaesenc, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xdc }, 0, .vex_256_wig, .vaes },
2596
2597 .{ .vaesenclast, .rvm, &.{ .ymm, .ymm, .ymm_m256 }, &.{ 0x66, 0x0f, 0x38, 0xdd }, 0, .vex_256_wig, .vaes },
2598
2599 // AESKLE
2600 .{ .aesdec128kl, .rm, &.{ .xmm, .m }, &.{ 0xf3, 0x0f, 0x38, 0xdd }, 0, .none, .kl },
2601
2602 .{ .aesdec256kl, .rm, &.{ .xmm, .m }, &.{ 0xf3, 0x0f, 0x38, 0xdf }, 0, .none, .kl },
2603
2604 .{ .aesenc128kl, .rm, &.{ .xmm, .m }, &.{ 0xf3, 0x0f, 0x38, 0xdc }, 0, .none, .kl },
2605
2606 .{ .aesenc256kl, .rm, &.{ .xmm, .m }, &.{ 0xf3, 0x0f, 0x38, 0xde }, 0, .none, .kl },
2607
2608 .{ .encodekey128, .rm, &.{ .r32, .r32 }, &.{ 0xf3, 0x0f, 0x38, 0xfa }, 0, .none, .kl },
2609
2610 .{ .encodekey256, .rm, &.{ .r32, .r32 }, &.{ 0xf3, 0x0f, 0x38, 0xfb }, 0, .none, .kl },
2611
2612 .{ .loadiwkey, .rm, &.{ .xmm, .xmm }, &.{ 0xf3, 0x0f, 0x38, 0xdc }, 0, .none, .kl },
2613 .{ .loadiwkey, .rm, &.{ .xmm, .xmm, .eax, .xmm0 }, &.{ 0xf3, 0x0f, 0x38, 0xdc }, 0, .none, .kl },
2614
2615 // AESKLEWIDE_KL
2616 .{ .aesdecwide128kl, .m, &.{ .m }, &.{ 0xf3, 0x0f, 0x38, 0xd8 }, 1, .none, .widekl },
2617
2618 .{ .aesdecwide256kl, .m, &.{ .m }, &.{ 0xf3, 0x0f, 0x38, 0xd8 }, 3, .none, .widekl },
2619
2620 .{ .aesencwide128kl, .m, &.{ .m }, &.{ 0xf3, 0x0f, 0x38, 0xd8 }, 0, .none, .widekl },
2621
2622 .{ .aesencwide256kl, .m, &.{ .m }, &.{ 0xf3, 0x0f, 0x38, 0xd8 }, 2, .none, .widekl },
2623};
2624// zig fmt: on
src/arch/x86_64/encodings.zon created+2612
......@@ -0,0 +1,2612 @@
1// zig fmt: off
2.{
3 // General-purpose
4 .{ .aaa, .z, .{}, .{ 0x37 }, 0, .none, .@"32bit" },
5
6 .{ .aad, .z, .{ }, .{ 0xd5, 0x0a }, 0, .none, .@"32bit" },
7 .{ .aad, .zi, .{ .imm8 }, .{ 0xd5 }, 0, .none, .@"32bit" },
8
9 .{ .aam, .z, .{ }, .{ 0xd4, 0x0a }, 0, .none, .@"32bit" },
10 .{ .aam, .zi, .{ .imm8 }, .{ 0xd4 }, 0, .none, .@"32bit" },
11
12 .{ .aas, .z, .{}, .{ 0x3f }, 0, .none, .@"32bit" },
13
14 .{ .adc, .zi, .{ .al, .imm8 }, .{ 0x14 }, 0, .none, .none },
15 .{ .adc, .zi, .{ .ax, .imm16 }, .{ 0x15 }, 0, .short, .none },
16 .{ .adc, .zi, .{ .eax, .imm32 }, .{ 0x15 }, 0, .none, .none },
17 .{ .adc, .zi, .{ .rax, .imm32s }, .{ 0x15 }, 0, .long, .none },
18 .{ .adc, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 2, .none, .none },
19 .{ .adc, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 2, .rex, .none },
20 .{ .adc, .mi, .{ .rm16, .imm16 }, .{ 0x81 }, 2, .short, .none },
21 .{ .adc, .mi, .{ .rm32, .imm32 }, .{ 0x81 }, 2, .none, .none },
22 .{ .adc, .mi, .{ .rm64, .imm32s }, .{ 0x81 }, 2, .long, .none },
23 .{ .adc, .mi, .{ .rm16, .imm8s }, .{ 0x83 }, 2, .short, .none },
24 .{ .adc, .mi, .{ .rm32, .imm8s }, .{ 0x83 }, 2, .none, .none },
25 .{ .adc, .mi, .{ .rm64, .imm8s }, .{ 0x83 }, 2, .long, .none },
26 .{ .adc, .mr, .{ .rm8, .r8 }, .{ 0x10 }, 0, .none, .none },
27 .{ .adc, .mr, .{ .rm8, .r8 }, .{ 0x10 }, 0, .rex, .none },
28 .{ .adc, .mr, .{ .rm16, .r16 }, .{ 0x11 }, 0, .short, .none },
29 .{ .adc, .mr, .{ .rm32, .r32 }, .{ 0x11 }, 0, .none, .none },
30 .{ .adc, .mr, .{ .rm64, .r64 }, .{ 0x11 }, 0, .long, .none },
31 .{ .adc, .rm, .{ .r8, .rm8 }, .{ 0x12 }, 0, .none, .none },
32 .{ .adc, .rm, .{ .r8, .rm8 }, .{ 0x12 }, 0, .rex, .none },
33 .{ .adc, .rm, .{ .r16, .rm16 }, .{ 0x13 }, 0, .short, .none },
34 .{ .adc, .rm, .{ .r32, .rm32 }, .{ 0x13 }, 0, .none, .none },
35 .{ .adc, .rm, .{ .r64, .rm64 }, .{ 0x13 }, 0, .long, .none },
36
37 .{ .add, .zi, .{ .al, .imm8 }, .{ 0x04 }, 0, .none, .none },
38 .{ .add, .zi, .{ .ax, .imm16 }, .{ 0x05 }, 0, .short, .none },
39 .{ .add, .zi, .{ .eax, .imm32 }, .{ 0x05 }, 0, .none, .none },
40 .{ .add, .zi, .{ .rax, .imm32s }, .{ 0x05 }, 0, .long, .none },
41 .{ .add, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 0, .none, .none },
42 .{ .add, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 0, .rex, .none },
43 .{ .add, .mi, .{ .rm16, .imm16 }, .{ 0x81 }, 0, .short, .none },
44 .{ .add, .mi, .{ .rm32, .imm32 }, .{ 0x81 }, 0, .none, .none },
45 .{ .add, .mi, .{ .rm64, .imm32s }, .{ 0x81 }, 0, .long, .none },
46 .{ .add, .mi, .{ .rm16, .imm8s }, .{ 0x83 }, 0, .short, .none },
47 .{ .add, .mi, .{ .rm32, .imm8s }, .{ 0x83 }, 0, .none, .none },
48 .{ .add, .mi, .{ .rm64, .imm8s }, .{ 0x83 }, 0, .long, .none },
49 .{ .add, .mr, .{ .rm8, .r8 }, .{ 0x00 }, 0, .none, .none },
50 .{ .add, .mr, .{ .rm8, .r8 }, .{ 0x00 }, 0, .rex, .none },
51 .{ .add, .mr, .{ .rm16, .r16 }, .{ 0x01 }, 0, .short, .none },
52 .{ .add, .mr, .{ .rm32, .r32 }, .{ 0x01 }, 0, .none, .none },
53 .{ .add, .mr, .{ .rm64, .r64 }, .{ 0x01 }, 0, .long, .none },
54 .{ .add, .rm, .{ .r8, .rm8 }, .{ 0x02 }, 0, .none, .none },
55 .{ .add, .rm, .{ .r8, .rm8 }, .{ 0x02 }, 0, .rex, .none },
56 .{ .add, .rm, .{ .r16, .rm16 }, .{ 0x03 }, 0, .short, .none },
57 .{ .add, .rm, .{ .r32, .rm32 }, .{ 0x03 }, 0, .none, .none },
58 .{ .add, .rm, .{ .r64, .rm64 }, .{ 0x03 }, 0, .long, .none },
59
60 .{ .@"and", .zi, .{ .al, .imm8 }, .{ 0x24 }, 0, .none, .none },
61 .{ .@"and", .zi, .{ .ax, .imm16 }, .{ 0x25 }, 0, .short, .none },
62 .{ .@"and", .zi, .{ .eax, .imm32 }, .{ 0x25 }, 0, .none, .none },
63 .{ .@"and", .zi, .{ .rax, .imm32s }, .{ 0x25 }, 0, .long, .none },
64 .{ .@"and", .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 4, .none, .none },
65 .{ .@"and", .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 4, .rex, .none },
66 .{ .@"and", .mi, .{ .rm16, .imm16 }, .{ 0x81 }, 4, .short, .none },
67 .{ .@"and", .mi, .{ .rm32, .imm32 }, .{ 0x81 }, 4, .none, .none },
68 .{ .@"and", .mi, .{ .rm64, .imm32s }, .{ 0x81 }, 4, .long, .none },
69 .{ .@"and", .mi, .{ .rm16, .imm8s }, .{ 0x83 }, 4, .short, .none },
70 .{ .@"and", .mi, .{ .rm32, .imm8s }, .{ 0x83 }, 4, .none, .none },
71 .{ .@"and", .mi, .{ .rm64, .imm8s }, .{ 0x83 }, 4, .long, .none },
72 .{ .@"and", .mr, .{ .rm8, .r8 }, .{ 0x20 }, 0, .none, .none },
73 .{ .@"and", .mr, .{ .rm8, .r8 }, .{ 0x20 }, 0, .rex, .none },
74 .{ .@"and", .mr, .{ .rm16, .r16 }, .{ 0x21 }, 0, .short, .none },
75 .{ .@"and", .mr, .{ .rm32, .r32 }, .{ 0x21 }, 0, .none, .none },
76 .{ .@"and", .mr, .{ .rm64, .r64 }, .{ 0x21 }, 0, .long, .none },
77 .{ .@"and", .rm, .{ .r8, .rm8 }, .{ 0x22 }, 0, .none, .none },
78 .{ .@"and", .rm, .{ .r8, .rm8 }, .{ 0x22 }, 0, .rex, .none },
79 .{ .@"and", .rm, .{ .r16, .rm16 }, .{ 0x23 }, 0, .short, .none },
80 .{ .@"and", .rm, .{ .r32, .rm32 }, .{ 0x23 }, 0, .none, .none },
81 .{ .@"and", .rm, .{ .r64, .rm64 }, .{ 0x23 }, 0, .long, .none },
82
83 .{ .arpl, .mr, .{ .rm16, .r16 }, .{ 0x63 }, 0, .none, .@"32bit" },
84
85 .{ .bound, .rm, .{ .r16, .m }, .{ 0x62 }, 0, .short, .@"32bit" },
86 .{ .bound, .rm, .{ .r32, .m }, .{ 0x62 }, 0, .short, .@"32bit" },
87
88 .{ .bsf, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0xbc }, 0, .short, .none },
89 .{ .bsf, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0xbc }, 0, .none, .none },
90 .{ .bsf, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0xbc }, 0, .long, .none },
91
92 .{ .bsr, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0xbd }, 0, .short, .none },
93 .{ .bsr, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0xbd }, 0, .none, .none },
94 .{ .bsr, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0xbd }, 0, .long, .none },
95
96 .{ .bswap, .o, .{ .r32 }, .{ 0x0f, 0xc8 }, 0, .none, .none },
97 .{ .bswap, .o, .{ .r64 }, .{ 0x0f, 0xc8 }, 0, .long, .none },
98
99 .{ .bt, .mr, .{ .rm16, .r16 }, .{ 0x0f, 0xa3 }, 0, .short, .none },
100 .{ .bt, .mr, .{ .rm32, .r32 }, .{ 0x0f, 0xa3 }, 0, .none, .none },
101 .{ .bt, .mr, .{ .rm64, .r64 }, .{ 0x0f, 0xa3 }, 0, .long, .none },
102 .{ .bt, .mi, .{ .rm16, .imm8 }, .{ 0x0f, 0xba }, 4, .short, .none },
103 .{ .bt, .mi, .{ .rm32, .imm8 }, .{ 0x0f, 0xba }, 4, .none, .none },
104 .{ .bt, .mi, .{ .rm64, .imm8 }, .{ 0x0f, 0xba }, 4, .long, .none },
105
106 .{ .btc, .mr, .{ .rm16, .r16 }, .{ 0x0f, 0xbb }, 0, .short, .none },
107 .{ .btc, .mr, .{ .rm32, .r32 }, .{ 0x0f, 0xbb }, 0, .none, .none },
108 .{ .btc, .mr, .{ .rm64, .r64 }, .{ 0x0f, 0xbb }, 0, .long, .none },
109 .{ .btc, .mi, .{ .rm16, .imm8 }, .{ 0x0f, 0xba }, 7, .short, .none },
110 .{ .btc, .mi, .{ .rm32, .imm8 }, .{ 0x0f, 0xba }, 7, .none, .none },
111 .{ .btc, .mi, .{ .rm64, .imm8 }, .{ 0x0f, 0xba }, 7, .long, .none },
112
113 .{ .btr, .mr, .{ .rm16, .r16 }, .{ 0x0f, 0xb3 }, 0, .short, .none },
114 .{ .btr, .mr, .{ .rm32, .r32 }, .{ 0x0f, 0xb3 }, 0, .none, .none },
115 .{ .btr, .mr, .{ .rm64, .r64 }, .{ 0x0f, 0xb3 }, 0, .long, .none },
116 .{ .btr, .mi, .{ .rm16, .imm8 }, .{ 0x0f, 0xba }, 6, .short, .none },
117 .{ .btr, .mi, .{ .rm32, .imm8 }, .{ 0x0f, 0xba }, 6, .none, .none },
118 .{ .btr, .mi, .{ .rm64, .imm8 }, .{ 0x0f, 0xba }, 6, .long, .none },
119
120 .{ .bts, .mr, .{ .rm16, .r16 }, .{ 0x0f, 0xab }, 0, .short, .none },
121 .{ .bts, .mr, .{ .rm32, .r32 }, .{ 0x0f, 0xab }, 0, .none, .none },
122 .{ .bts, .mr, .{ .rm64, .r64 }, .{ 0x0f, 0xab }, 0, .long, .none },
123 .{ .bts, .mi, .{ .rm16, .imm8 }, .{ 0x0f, 0xba }, 5, .short, .none },
124 .{ .bts, .mi, .{ .rm32, .imm8 }, .{ 0x0f, 0xba }, 5, .none, .none },
125 .{ .bts, .mi, .{ .rm64, .imm8 }, .{ 0x0f, 0xba }, 5, .long, .none },
126
127 .{ .call, .d, .{ .rel32 }, .{ 0xe8 }, 0, .none, .none },
128 .{ .call, .m, .{ .rm32 }, .{ 0xff }, 2, .none, .@"32bit" },
129 .{ .call, .m, .{ .rm64 }, .{ 0xff }, 2, .none, .@"64bit" },
130
131 .{ .cbw, .z, .{}, .{ 0x98 }, 0, .short, .none },
132 .{ .cwde, .z, .{}, .{ 0x98 }, 0, .none, .none },
133 .{ .cdqe, .z, .{}, .{ 0x98 }, 0, .long, .none },
134
135 .{ .clac, .z, .{}, .{ 0x0f, 0x01, 0xca }, 0, .none, .smap },
136
137 .{ .clc, .z, .{}, .{ 0xf8 }, 0, .none, .none },
138
139 .{ .cld, .z, .{}, .{ 0xfc }, 0, .none, .none },
140
141 .{ .cldemote, .m, .{ .m8 }, .{ 0x0f, 0x1c }, 0, .none, .cldemote },
142
143 .{ .clflush, .m, .{ .m8 }, .{ 0x0f, 0xae }, 7, .none, .none },
144
145 .{ .clflushopt, .m, .{ .m8 }, .{ 0x66, 0x0f, 0xae }, 7, .none, .clflushopt },
146
147 .{ .cli, .z, .{}, .{ 0xfa }, 0, .none, .none },
148
149 .{ .clrssbsy, .m, .{ .m64 }, .{ 0xf3, 0x0f, 0xae }, 6, .none, .shstk },
150
151 .{ .clts, .z, .{}, .{ 0x0f, 0x06 }, 0, .none, .none },
152
153 .{ .clui, .z, .{}, .{ 0xf3, 0x0f, 0x01, 0xee }, 0, .none, .uintr },
154
155 .{ .clwb, .m, .{ .m8 }, .{ 0x66, 0x0f, 0xae }, 6, .none, .clwb },
156
157 .{ .cmc, .z, .{}, .{ 0xf5 }, 0, .none, .none },
158
159 .{ .cmova, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x47 }, 0, .short, .cmov },
160 .{ .cmova, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x47 }, 0, .none, .cmov },
161 .{ .cmova, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x47 }, 0, .long, .cmov },
162 .{ .cmovae, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x43 }, 0, .short, .cmov },
163 .{ .cmovae, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x43 }, 0, .none, .cmov },
164 .{ .cmovae, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x43 }, 0, .long, .cmov },
165 .{ .cmovb, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x42 }, 0, .short, .cmov },
166 .{ .cmovb, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x42 }, 0, .none, .cmov },
167 .{ .cmovb, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x42 }, 0, .long, .cmov },
168 .{ .cmovbe, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x46 }, 0, .short, .cmov },
169 .{ .cmovbe, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x46 }, 0, .none, .cmov },
170 .{ .cmovbe, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x46 }, 0, .long, .cmov },
171 .{ .cmovc, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x42 }, 0, .short, .cmov },
172 .{ .cmovc, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x42 }, 0, .none, .cmov },
173 .{ .cmovc, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x42 }, 0, .long, .cmov },
174 .{ .cmove, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x44 }, 0, .short, .cmov },
175 .{ .cmove, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x44 }, 0, .none, .cmov },
176 .{ .cmove, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x44 }, 0, .long, .cmov },
177 .{ .cmovg, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4f }, 0, .short, .cmov },
178 .{ .cmovg, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4f }, 0, .none, .cmov },
179 .{ .cmovg, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4f }, 0, .long, .cmov },
180 .{ .cmovge, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4d }, 0, .short, .cmov },
181 .{ .cmovge, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4d }, 0, .none, .cmov },
182 .{ .cmovge, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4d }, 0, .long, .cmov },
183 .{ .cmovl, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4c }, 0, .short, .cmov },
184 .{ .cmovl, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4c }, 0, .none, .cmov },
185 .{ .cmovl, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4c }, 0, .long, .cmov },
186 .{ .cmovle, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4e }, 0, .short, .cmov },
187 .{ .cmovle, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4e }, 0, .none, .cmov },
188 .{ .cmovle, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4e }, 0, .long, .cmov },
189 .{ .cmovna, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x46 }, 0, .short, .cmov },
190 .{ .cmovna, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x46 }, 0, .none, .cmov },
191 .{ .cmovna, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x46 }, 0, .long, .cmov },
192 .{ .cmovnae, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x42 }, 0, .short, .cmov },
193 .{ .cmovnae, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x42 }, 0, .none, .cmov },
194 .{ .cmovnae, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x42 }, 0, .long, .cmov },
195 .{ .cmovnb, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x43 }, 0, .short, .cmov },
196 .{ .cmovnb, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x43 }, 0, .none, .cmov },
197 .{ .cmovnb, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x43 }, 0, .long, .cmov },
198 .{ .cmovnbe, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x47 }, 0, .short, .cmov },
199 .{ .cmovnbe, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x47 }, 0, .none, .cmov },
200 .{ .cmovnbe, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x47 }, 0, .long, .cmov },
201 .{ .cmovnc, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x43 }, 0, .short, .cmov },
202 .{ .cmovnc, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x43 }, 0, .none, .cmov },
203 .{ .cmovnc, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x43 }, 0, .long, .cmov },
204 .{ .cmovne, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x45 }, 0, .short, .cmov },
205 .{ .cmovne, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x45 }, 0, .none, .cmov },
206 .{ .cmovne, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x45 }, 0, .long, .cmov },
207 .{ .cmovng, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4e }, 0, .short, .cmov },
208 .{ .cmovng, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4e }, 0, .none, .cmov },
209 .{ .cmovng, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4e }, 0, .long, .cmov },
210 .{ .cmovnge, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4c }, 0, .short, .cmov },
211 .{ .cmovnge, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4c }, 0, .none, .cmov },
212 .{ .cmovnge, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4c }, 0, .long, .cmov },
213 .{ .cmovnl, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4d }, 0, .short, .cmov },
214 .{ .cmovnl, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4d }, 0, .none, .cmov },
215 .{ .cmovnl, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4d }, 0, .long, .cmov },
216 .{ .cmovnle, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4f }, 0, .short, .cmov },
217 .{ .cmovnle, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4f }, 0, .none, .cmov },
218 .{ .cmovnle, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4f }, 0, .long, .cmov },
219 .{ .cmovno, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x41 }, 0, .short, .cmov },
220 .{ .cmovno, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x41 }, 0, .none, .cmov },
221 .{ .cmovno, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x41 }, 0, .long, .cmov },
222 .{ .cmovnp, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4b }, 0, .short, .cmov },
223 .{ .cmovnp, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4b }, 0, .none, .cmov },
224 .{ .cmovnp, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4b }, 0, .long, .cmov },
225 .{ .cmovns, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x49 }, 0, .short, .cmov },
226 .{ .cmovns, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x49 }, 0, .none, .cmov },
227 .{ .cmovns, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x49 }, 0, .long, .cmov },
228 .{ .cmovnz, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x45 }, 0, .short, .cmov },
229 .{ .cmovnz, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x45 }, 0, .none, .cmov },
230 .{ .cmovnz, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x45 }, 0, .long, .cmov },
231 .{ .cmovo, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x40 }, 0, .short, .cmov },
232 .{ .cmovo, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x40 }, 0, .none, .cmov },
233 .{ .cmovo, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x40 }, 0, .long, .cmov },
234 .{ .cmovp, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4a }, 0, .short, .cmov },
235 .{ .cmovp, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4a }, 0, .none, .cmov },
236 .{ .cmovp, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4a }, 0, .long, .cmov },
237 .{ .cmovpe, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4a }, 0, .short, .cmov },
238 .{ .cmovpe, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4a }, 0, .none, .cmov },
239 .{ .cmovpe, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4a }, 0, .long, .cmov },
240 .{ .cmovpo, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x4b }, 0, .short, .cmov },
241 .{ .cmovpo, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x4b }, 0, .none, .cmov },
242 .{ .cmovpo, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x4b }, 0, .long, .cmov },
243 .{ .cmovs, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x48 }, 0, .short, .cmov },
244 .{ .cmovs, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x48 }, 0, .none, .cmov },
245 .{ .cmovs, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x48 }, 0, .long, .cmov },
246 .{ .cmovz, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x44 }, 0, .short, .cmov },
247 .{ .cmovz, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0x44 }, 0, .none, .cmov },
248 .{ .cmovz, .rm, .{ .r64, .rm64 }, .{ 0x0f, 0x44 }, 0, .long, .cmov },
249
250 .{ .cmp, .zi, .{ .al, .imm8 }, .{ 0x3c }, 0, .none, .none },
251 .{ .cmp, .zi, .{ .ax, .imm16 }, .{ 0x3d }, 0, .short, .none },
252 .{ .cmp, .zi, .{ .eax, .imm32 }, .{ 0x3d }, 0, .none, .none },
253 .{ .cmp, .zi, .{ .rax, .imm32s }, .{ 0x3d }, 0, .long, .none },
254 .{ .cmp, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 7, .none, .none },
255 .{ .cmp, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 7, .rex, .none },
256 .{ .cmp, .mi, .{ .rm16, .imm16 }, .{ 0x81 }, 7, .short, .none },
257 .{ .cmp, .mi, .{ .rm32, .imm32 }, .{ 0x81 }, 7, .none, .none },
258 .{ .cmp, .mi, .{ .rm64, .imm32s }, .{ 0x81 }, 7, .long, .none },
259 .{ .cmp, .mi, .{ .rm16, .imm8s }, .{ 0x83 }, 7, .short, .none },
260 .{ .cmp, .mi, .{ .rm32, .imm8s }, .{ 0x83 }, 7, .none, .none },
261 .{ .cmp, .mi, .{ .rm64, .imm8s }, .{ 0x83 }, 7, .long, .none },
262 .{ .cmp, .mr, .{ .rm8, .r8 }, .{ 0x38 }, 0, .none, .none },
263 .{ .cmp, .mr, .{ .rm8, .r8 }, .{ 0x38 }, 0, .rex, .none },
264 .{ .cmp, .mr, .{ .rm16, .r16 }, .{ 0x39 }, 0, .short, .none },
265 .{ .cmp, .mr, .{ .rm32, .r32 }, .{ 0x39 }, 0, .none, .none },
266 .{ .cmp, .mr, .{ .rm64, .r64 }, .{ 0x39 }, 0, .long, .none },
267 .{ .cmp, .rm, .{ .r8, .rm8 }, .{ 0x3a }, 0, .none, .none },
268 .{ .cmp, .rm, .{ .r8, .rm8 }, .{ 0x3a }, 0, .rex, .none },
269 .{ .cmp, .rm, .{ .r16, .rm16 }, .{ 0x3b }, 0, .short, .none },
270 .{ .cmp, .rm, .{ .r32, .rm32 }, .{ 0x3b }, 0, .none, .none },
271 .{ .cmp, .rm, .{ .r64, .rm64 }, .{ 0x3b }, 0, .long, .none },
272
273 .{ .cmps, .z, .{ .m8, .m8 }, .{ 0xa6 }, 0, .none, .none },
274 .{ .cmps, .z, .{ .m16, .m16 }, .{ 0xa7 }, 0, .short, .none },
275 .{ .cmps, .z, .{ .m32, .m32 }, .{ 0xa7 }, 0, .none, .none },
276 .{ .cmps, .z, .{ .m64, .m64 }, .{ 0xa7 }, 0, .long, .none },
277 .{ .cmpsb, .z, .{ }, .{ 0xa6 }, 0, .none, .none },
278 .{ .cmpsw, .z, .{ }, .{ 0xa7 }, 0, .short, .none },
279 .{ .cmpsd, .z, .{ }, .{ 0xa7 }, 0, .none, .none },
280 .{ .cmpsq, .z, .{ }, .{ 0xa7 }, 0, .long, .none },
281
282 .{ .cmpxchg, .mr, .{ .rm8, .r8 }, .{ 0x0f, 0xb0 }, 0, .none, .none },
283 .{ .cmpxchg, .mr, .{ .rm8, .r8 }, .{ 0x0f, 0xb0 }, 0, .rex, .none },
284 .{ .cmpxchg, .mr, .{ .rm16, .r16 }, .{ 0x0f, 0xb1 }, 0, .short, .none },
285 .{ .cmpxchg, .mr, .{ .rm32, .r32 }, .{ 0x0f, 0xb1 }, 0, .none, .none },
286 .{ .cmpxchg, .mr, .{ .rm64, .r64 }, .{ 0x0f, 0xb1 }, 0, .long, .none },
287
288 .{ .cmpxchg8b, .m, .{ .m64 }, .{ 0x0f, 0xc7 }, 1, .none, .none },
289 .{ .cmpxchg16b, .m, .{ .m128 }, .{ 0x0f, 0xc7 }, 1, .long, .none },
290
291 .{ .cpuid, .z, .{}, .{ 0x0f, 0xa2 }, 0, .none, .none },
292
293 .{ .cwd, .z, .{}, .{ 0x99 }, 0, .short, .none },
294 .{ .cdq, .z, .{}, .{ 0x99 }, 0, .none, .none },
295 .{ .cqo, .z, .{}, .{ 0x99 }, 0, .long, .none },
296
297 .{ .daa, .z, .{}, .{ 0x27 }, 0, .none, .@"32bit" },
298
299 .{ .das, .z, .{}, .{ 0x27 }, 0, .none, .@"32bit" },
300
301 .{ .dec, .m, .{ .rm8 }, .{ 0xfe }, 1, .none, .none },
302 .{ .dec, .m, .{ .rm8 }, .{ 0xfe }, 1, .rex, .none },
303 .{ .dec, .m, .{ .rm16 }, .{ 0xff }, 1, .short, .none },
304 .{ .dec, .m, .{ .rm32 }, .{ 0xff }, 1, .none, .none },
305 .{ .dec, .m, .{ .rm64 }, .{ 0xff }, 1, .long, .none },
306
307 .{ .div, .m, .{ .rm8 }, .{ 0xf6 }, 6, .none, .none },
308 .{ .div, .m, .{ .rm8 }, .{ 0xf6 }, 6, .rex, .none },
309 .{ .div, .m, .{ .rm16 }, .{ 0xf7 }, 6, .short, .none },
310 .{ .div, .m, .{ .rm32 }, .{ 0xf7 }, 6, .none, .none },
311 .{ .div, .m, .{ .rm64 }, .{ 0xf7 }, 6, .long, .none },
312
313 .{ .endbr32, .z, .{}, .{ 0xf3, 0x0f, 0x1e, 0xfb }, 0, .none, .none },
314
315 .{ .endbr64, .z, .{}, .{ 0xf3, 0x0f, 0x1e, 0xfa }, 0, .none, .none },
316
317 .{ .enqcmd, .rm, .{ .r32, .m }, .{ 0xf2, 0x0f, 0x38, 0xf8 }, 0, .none, .enqcmd },
318 .{ .enqcmd, .rm, .{ .r64, .m }, .{ 0xf2, 0x0f, 0x38, 0xf8 }, 0, .none, .enqcmd },
319
320 .{ .enqcmds, .rm, .{ .r32, .m }, .{ 0xf3, 0x0f, 0x38, 0xf8 }, 0, .none, .enqcmd },
321 .{ .enqcmds, .rm, .{ .r64, .m }, .{ 0xf3, 0x0f, 0x38, 0xf8 }, 0, .none, .enqcmd },
322
323 .{ .enter, .ii, .{ .imm16, .imm8 }, .{ 0xc8 }, 0, .none, .none },
324
325 .{ .hlt, .z, .{}, .{ 0xf4 }, 0, .none, .none },
326
327 .{ .hreset, .ia, .{ .imm8 }, .{ 0xf3, 0x0f, 0x3a, 0xf0 }, 0, .none, .hreset },
328 .{ .hreset, .ia, .{ .imm8, .eax }, .{ 0xf3, 0x0f, 0x3a, 0xf0 }, 0, .none, .hreset },
329
330 .{ .idiv, .m, .{ .rm8 }, .{ 0xf6 }, 7, .none, .none },
331 .{ .idiv, .m, .{ .rm8 }, .{ 0xf6 }, 7, .rex, .none },
332 .{ .idiv, .m, .{ .rm16 }, .{ 0xf7 }, 7, .short, .none },
333 .{ .idiv, .m, .{ .rm32 }, .{ 0xf7 }, 7, .none, .none },
334 .{ .idiv, .m, .{ .rm64 }, .{ 0xf7 }, 7, .long, .none },
335
336 .{ .imul, .m, .{ .rm8 }, .{ 0xf6 }, 5, .none, .none },
337 .{ .imul, .m, .{ .rm8 }, .{ 0xf6 }, 5, .rex, .none },
338 .{ .imul, .m, .{ .rm16, }, .{ 0xf7 }, 5, .short, .none },
339 .{ .imul, .m, .{ .rm32, }, .{ 0xf7 }, 5, .none, .none },
340 .{ .imul, .m, .{ .rm64, }, .{ 0xf7 }, 5, .long, .none },
341 .{ .imul, .rm, .{ .r16, .rm16, }, .{ 0x0f, 0xaf }, 0, .short, .none },
342 .{ .imul, .rm, .{ .r32, .rm32, }, .{ 0x0f, 0xaf }, 0, .none, .none },
343 .{ .imul, .rm, .{ .r64, .rm64, }, .{ 0x0f, 0xaf }, 0, .long, .none },
344 .{ .imul, .rmi, .{ .r16, .rm16, .imm8s }, .{ 0x6b }, 0, .short, .none },
345 .{ .imul, .rmi, .{ .r32, .rm32, .imm8s }, .{ 0x6b }, 0, .none, .none },
346 .{ .imul, .rmi, .{ .r64, .rm64, .imm8s }, .{ 0x6b }, 0, .long, .none },
347 .{ .imul, .rmi, .{ .r16, .rm16, .imm16 }, .{ 0x69 }, 0, .short, .none },
348 .{ .imul, .rmi, .{ .r32, .rm32, .imm32 }, .{ 0x69 }, 0, .none, .none },
349 .{ .imul, .rmi, .{ .r64, .rm64, .imm32 }, .{ 0x69 }, 0, .long, .none },
350
351 .{ .in, .zi, .{ .al, .imm8 }, .{ 0xe4 }, 0, .none, .none },
352 .{ .in, .zi, .{ .ax, .imm8 }, .{ 0xe5 }, 0, .short, .none },
353 .{ .in, .zi, .{ .eax, .imm8 }, .{ 0xe5 }, 0, .none, .none },
354 .{ .in, .z, .{ .al, .dx }, .{ 0xec }, 0, .none, .none },
355 .{ .in, .z, .{ .ax, .dx }, .{ 0xed }, 0, .short, .none },
356 .{ .in, .z, .{ .eax, .dx }, .{ 0xed }, 0, .none, .none },
357
358 .{ .inc, .m, .{ .rm8 }, .{ 0xfe }, 0, .none, .none },
359 .{ .inc, .m, .{ .rm8 }, .{ 0xfe }, 0, .rex, .none },
360 .{ .inc, .m, .{ .rm16 }, .{ 0xff }, 0, .short, .none },
361 .{ .inc, .m, .{ .rm32 }, .{ 0xff }, 0, .none, .none },
362 .{ .inc, .m, .{ .rm64 }, .{ 0xff }, 0, .long, .none },
363
364 .{ .incsspd, .m, .{ .r32 }, .{ 0xf3, 0x0f, 0xae }, 5, .none, .shstk },
365 .{ .incsspq, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0xae }, 5, .long, .shstk },
366
367 .{ .ins, .z, .{ .m8, .dx }, .{ 0x6c }, 0, .none, .none },
368 .{ .ins, .z, .{ .m16, .dx }, .{ 0x6d }, 0, .short, .none },
369 .{ .ins, .z, .{ .m32, .dx }, .{ 0x6d }, 0, .none, .none },
370 .{ .insb, .z, .{ }, .{ 0x6c }, 0, .none, .none },
371 .{ .insw, .z, .{ }, .{ 0x6d }, 0, .short, .none },
372 .{ .insd, .z, .{ }, .{ 0x6d }, 0, .none, .none },
373
374 .{ .int3, .z, .{ }, .{ 0xcc }, 0, .none, .none },
375 .{ .int, .i, .{ .imm8 }, .{ 0xcd }, 0, .none, .none },
376 .{ .into, .z, .{ }, .{ 0xce }, 0, .none, .@"32bit" },
377 .{ .int1, .z, .{ }, .{ 0xf1 }, 0, .none, .none },
378
379 .{ .invd, .z, .{}, .{ 0x0f, 0x08 }, 0, .none, .none },
380
381 .{ .invlpg, .m, .{ .m }, .{ 0x0f, 0x01 }, 7, .none, .none },
382
383 .{ .invpcid, .rm, .{ .r32, .m128 }, .{ 0x66, 0x0f, 0x38, 0x82 }, 0, .none, .@"invpcid 32bit" },
384 .{ .invpcid, .rm, .{ .r64, .m128 }, .{ 0x66, 0x0f, 0x38, 0x82 }, 0, .none, .@"invpcid 64bit" },
385
386 .{ .iretw, .z, .{}, .{ 0xcf }, 0, .short, .none },
387 .{ .iretd, .z, .{}, .{ 0xcf }, 0, .none, .none },
388 .{ .iret, .z, .{}, .{ 0xcf }, 0, .none, .none },
389 .{ .iretq, .z, .{}, .{ 0xcf }, 0, .long, .none },
390
391 .{ .ja, .d, .{ .rel32 }, .{ 0x0f, 0x87 }, 0, .none, .none },
392 .{ .jae, .d, .{ .rel32 }, .{ 0x0f, 0x83 }, 0, .none, .none },
393 .{ .jb, .d, .{ .rel32 }, .{ 0x0f, 0x82 }, 0, .none, .none },
394 .{ .jbe, .d, .{ .rel32 }, .{ 0x0f, 0x86 }, 0, .none, .none },
395 .{ .jc, .d, .{ .rel32 }, .{ 0x0f, 0x82 }, 0, .none, .none },
396 .{ .jcxz, .d, .{ .rel8 }, .{ 0xe3 }, 0, .short, .@"32bit" },
397 .{ .jecxz, .d, .{ .rel8 }, .{ 0xe3 }, 0, .none, .@"32bit" },
398 .{ .jrcxz, .d, .{ .rel8 }, .{ 0xe3 }, 0, .none, .@"64bit" },
399 .{ .je, .d, .{ .rel32 }, .{ 0x0f, 0x84 }, 0, .none, .none },
400 .{ .jg, .d, .{ .rel32 }, .{ 0x0f, 0x8f }, 0, .none, .none },
401 .{ .jge, .d, .{ .rel32 }, .{ 0x0f, 0x8d }, 0, .none, .none },
402 .{ .jl, .d, .{ .rel32 }, .{ 0x0f, 0x8c }, 0, .none, .none },
403 .{ .jle, .d, .{ .rel32 }, .{ 0x0f, 0x8e }, 0, .none, .none },
404 .{ .jna, .d, .{ .rel32 }, .{ 0x0f, 0x86 }, 0, .none, .none },
405 .{ .jnae, .d, .{ .rel32 }, .{ 0x0f, 0x82 }, 0, .none, .none },
406 .{ .jnb, .d, .{ .rel32 }, .{ 0x0f, 0x83 }, 0, .none, .none },
407 .{ .jnbe, .d, .{ .rel32 }, .{ 0x0f, 0x87 }, 0, .none, .none },
408 .{ .jnc, .d, .{ .rel32 }, .{ 0x0f, 0x83 }, 0, .none, .none },
409 .{ .jne, .d, .{ .rel32 }, .{ 0x0f, 0x85 }, 0, .none, .none },
410 .{ .jng, .d, .{ .rel32 }, .{ 0x0f, 0x8e }, 0, .none, .none },
411 .{ .jnge, .d, .{ .rel32 }, .{ 0x0f, 0x8c }, 0, .none, .none },
412 .{ .jnl, .d, .{ .rel32 }, .{ 0x0f, 0x8d }, 0, .none, .none },
413 .{ .jnle, .d, .{ .rel32 }, .{ 0x0f, 0x8f }, 0, .none, .none },
414 .{ .jno, .d, .{ .rel32 }, .{ 0x0f, 0x81 }, 0, .none, .none },
415 .{ .jnp, .d, .{ .rel32 }, .{ 0x0f, 0x8b }, 0, .none, .none },
416 .{ .jns, .d, .{ .rel32 }, .{ 0x0f, 0x89 }, 0, .none, .none },
417 .{ .jnz, .d, .{ .rel32 }, .{ 0x0f, 0x85 }, 0, .none, .none },
418 .{ .jo, .d, .{ .rel32 }, .{ 0x0f, 0x80 }, 0, .none, .none },
419 .{ .jp, .d, .{ .rel32 }, .{ 0x0f, 0x8a }, 0, .none, .none },
420 .{ .jpe, .d, .{ .rel32 }, .{ 0x0f, 0x8a }, 0, .none, .none },
421 .{ .jpo, .d, .{ .rel32 }, .{ 0x0f, 0x8b }, 0, .none, .none },
422 .{ .js, .d, .{ .rel32 }, .{ 0x0f, 0x88 }, 0, .none, .none },
423 .{ .jz, .d, .{ .rel32 }, .{ 0x0f, 0x84 }, 0, .none, .none },
424
425 .{ .jmp, .d, .{ .rel32 }, .{ 0xe9 }, 0, .none, .none },
426 .{ .jmp, .m, .{ .rm64 }, .{ 0xff }, 4, .none, .none },
427
428 .{ .lahf, .z, .{}, .{ 0x9f }, 0, .none, .@"32bit" },
429 .{ .lahf, .z, .{}, .{ 0x9f }, 0, .none, .sahf },
430
431 .{ .lar, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x02 }, 0, .none, .none },
432 .{ .lar, .rm, .{ .r32, .r32_m16 }, .{ 0x0f, 0x02 }, 0, .none, .none },
433
434 .{ .lea, .rm, .{ .r16, .m }, .{ 0x8d }, 0, .short, .none },
435 .{ .lea, .rm, .{ .r32, .m }, .{ 0x8d }, 0, .none, .none },
436 .{ .lea, .rm, .{ .r64, .m }, .{ 0x8d }, 0, .long, .none },
437
438 .{ .leave, .z, .{}, .{ 0xc9 }, 0, .none, .none },
439
440 .{ .lfence, .z, .{}, .{ 0x0f, 0xae, 0xe8 }, 0, .none, .none },
441
442 .{ .lgdt, .m, .{ .m }, .{ 0x0f, 0x01 }, 2, .none, .none },
443 .{ .lidt, .m, .{ .m }, .{ 0x0f, 0x01 }, 3, .none, .none },
444
445 .{ .lldt, .m, .{ .rm16 }, .{ 0x0f, 0x00 }, 2, .none, .none },
446
447 .{ .lmsw, .m, .{ .rm16 }, .{ 0x0f, 0x01 }, 6, .none, .none },
448
449 .{ .lods, .z, .{ .m8 }, .{ 0xac }, 0, .none, .none },
450 .{ .lods, .z, .{ .m16 }, .{ 0xad }, 0, .short, .none },
451 .{ .lods, .z, .{ .m32 }, .{ 0xad }, 0, .none, .none },
452 .{ .lods, .z, .{ .m64 }, .{ 0xad }, 0, .long, .none },
453 .{ .lodsb, .z, .{ }, .{ 0xac }, 0, .none, .none },
454 .{ .lodsw, .z, .{ }, .{ 0xad }, 0, .short, .none },
455 .{ .lodsd, .z, .{ }, .{ 0xad }, 0, .none, .none },
456 .{ .lodsq, .z, .{ }, .{ 0xad }, 0, .long, .none },
457
458 .{ .loop, .d, .{ .rel8 }, .{ 0xe2 }, 0, .none, .none },
459 .{ .loope, .d, .{ .rel8 }, .{ 0xe1 }, 0, .none, .none },
460 .{ .loopne, .d, .{ .rel8 }, .{ 0xe0 }, 0, .none, .none },
461
462 .{ .lsl, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x03 }, 0, .none, .none },
463 .{ .lsl, .rm, .{ .r32, .r32_m16 }, .{ 0x0f, 0x03 }, 0, .none, .none },
464 .{ .lsl, .rm, .{ .r64, .r32_m16 }, .{ 0x0f, 0x03 }, 0, .none, .none },
465
466 .{ .ltr, .m, .{ .rm16 }, .{ 0x0f, 0x00 }, 3, .none, .none },
467
468 .{ .mfence, .z, .{}, .{ 0x0f, 0xae, 0xf0 }, 0, .none, .none },
469
470 .{ .mov, .mr, .{ .rm8, .r8 }, .{ 0x88 }, 0, .none, .none },
471 .{ .mov, .mr, .{ .rm8, .r8 }, .{ 0x88 }, 0, .rex, .none },
472 .{ .mov, .mr, .{ .rm16, .r16 }, .{ 0x89 }, 0, .short, .none },
473 .{ .mov, .mr, .{ .rm32, .r32 }, .{ 0x89 }, 0, .none, .none },
474 .{ .mov, .mr, .{ .rm64, .r64 }, .{ 0x89 }, 0, .long, .none },
475 .{ .mov, .rm, .{ .r8, .rm8 }, .{ 0x8a }, 0, .none, .none },
476 .{ .mov, .rm, .{ .r8, .rm8 }, .{ 0x8a }, 0, .rex, .none },
477 .{ .mov, .rm, .{ .r16, .rm16 }, .{ 0x8b }, 0, .short, .none },
478 .{ .mov, .rm, .{ .r32, .rm32 }, .{ 0x8b }, 0, .none, .none },
479 .{ .mov, .rm, .{ .r64, .rm64 }, .{ 0x8b }, 0, .long, .none },
480 .{ .mov, .mr, .{ .rm16, .sreg }, .{ 0x8c }, 0, .short, .none },
481 .{ .mov, .mr, .{ .r32_m16, .sreg }, .{ 0x8c }, 0, .none, .none },
482 .{ .mov, .mr, .{ .r64_m16, .sreg }, .{ 0x8c }, 0, .long, .none },
483 .{ .mov, .rm, .{ .sreg, .rm16 }, .{ 0x8e }, 0, .short, .none },
484 .{ .mov, .rm, .{ .sreg, .r32_m16 }, .{ 0x8e }, 0, .none, .none },
485 .{ .mov, .rm, .{ .sreg, .r64_m16 }, .{ 0x8e }, 0, .long, .none },
486 .{ .mov, .fd, .{ .al, .moffs }, .{ 0xa0 }, 0, .none, .none },
487 .{ .mov, .fd, .{ .ax, .moffs }, .{ 0xa1 }, 0, .short, .none },
488 .{ .mov, .fd, .{ .eax, .moffs }, .{ 0xa1 }, 0, .none, .none },
489 .{ .mov, .fd, .{ .rax, .moffs }, .{ 0xa1 }, 0, .long, .none },
490 .{ .mov, .td, .{ .moffs, .al }, .{ 0xa2 }, 0, .none, .none },
491 .{ .mov, .td, .{ .moffs, .ax }, .{ 0xa3 }, 0, .short, .none },
492 .{ .mov, .td, .{ .moffs, .eax }, .{ 0xa3 }, 0, .none, .none },
493 .{ .mov, .td, .{ .moffs, .rax }, .{ 0xa3 }, 0, .long, .none },
494 .{ .mov, .oi, .{ .r8, .imm8 }, .{ 0xb0 }, 0, .none, .none },
495 .{ .mov, .oi, .{ .r8, .imm8 }, .{ 0xb0 }, 0, .rex, .none },
496 .{ .mov, .oi, .{ .r16, .imm16 }, .{ 0xb8 }, 0, .short, .none },
497 .{ .mov, .oi, .{ .r32, .imm32 }, .{ 0xb8 }, 0, .none, .none },
498 .{ .mov, .oi, .{ .r64, .imm64 }, .{ 0xb8 }, 0, .long, .none },
499 .{ .mov, .mi, .{ .rm8, .imm8 }, .{ 0xc6 }, 0, .none, .none },
500 .{ .mov, .mi, .{ .rm8, .imm8 }, .{ 0xc6 }, 0, .rex, .none },
501 .{ .mov, .mi, .{ .rm16, .imm16 }, .{ 0xc7 }, 0, .short, .none },
502 .{ .mov, .mi, .{ .rm32, .imm32 }, .{ 0xc7 }, 0, .none, .none },
503 .{ .mov, .mi, .{ .rm64, .imm32s }, .{ 0xc7 }, 0, .long, .none },
504
505 .{ .mov, .mr, .{ .r32, .cr }, .{ 0x0f, 0x20 }, 0, .none, .@"32bit" },
506 .{ .mov, .mr, .{ .r64, .cr }, .{ 0x0f, 0x20 }, 0, .none, .@"64bit" },
507 .{ .mov, .rm, .{ .cr, .r32 }, .{ 0x0f, 0x22 }, 0, .none, .@"32bit" },
508 .{ .mov, .rm, .{ .cr, .r64 }, .{ 0x0f, 0x22 }, 0, .none, .@"64bit" },
509
510 .{ .mov, .mr, .{ .r32, .dr }, .{ 0x0f, 0x21 }, 0, .none, .@"32bit" },
511 .{ .mov, .mr, .{ .r64, .dr }, .{ 0x0f, 0x21 }, 0, .none, .@"64bit" },
512 .{ .mov, .rm, .{ .dr, .r32 }, .{ 0x0f, 0x23 }, 0, .none, .@"32bit" },
513 .{ .mov, .rm, .{ .dr, .r64 }, .{ 0x0f, 0x23 }, 0, .none, .@"64bit" },
514
515 .{ .movbe, .rm, .{ .r16, .m16 }, .{ 0x0f, 0x38, 0xf0 }, 0, .short, .movbe },
516 .{ .movbe, .rm, .{ .r32, .m32 }, .{ 0x0f, 0x38, 0xf0 }, 0, .none, .movbe },
517 .{ .movbe, .rm, .{ .r64, .m64 }, .{ 0x0f, 0x38, 0xf0 }, 0, .long, .movbe },
518 .{ .movbe, .mr, .{ .m16, .r16 }, .{ 0x0f, 0x38, 0xf1 }, 0, .short, .movbe },
519 .{ .movbe, .mr, .{ .m32, .r32 }, .{ 0x0f, 0x38, 0xf1 }, 0, .none, .movbe },
520 .{ .movbe, .mr, .{ .m64, .r64 }, .{ 0x0f, 0x38, 0xf1 }, 0, .long, .movbe },
521
522 .{ .movs, .z, .{ .m8, .m8 }, .{ 0xa4 }, 0, .none, .none },
523 .{ .movs, .z, .{ .m16, .m16 }, .{ 0xa5 }, 0, .short, .none },
524 .{ .movs, .z, .{ .m32, .m32 }, .{ 0xa5 }, 0, .none, .none },
525 .{ .movs, .z, .{ .m64, .m64 }, .{ 0xa5 }, 0, .long, .none },
526 .{ .movsb, .z, .{ }, .{ 0xa4 }, 0, .none, .none },
527 .{ .movsw, .z, .{ }, .{ 0xa5 }, 0, .short, .none },
528 .{ .movsd, .z, .{ }, .{ 0xa5 }, 0, .none, .none },
529 .{ .movsq, .z, .{ }, .{ 0xa5 }, 0, .long, .none },
530
531 .{ .movsx, .rm, .{ .r16, .rm8 }, .{ 0x0f, 0xbe }, 0, .short, .none },
532 .{ .movsx, .rm, .{ .r16, .rm8 }, .{ 0x0f, 0xbe }, 0, .rex_short, .none },
533 .{ .movsx, .rm, .{ .r32, .rm8 }, .{ 0x0f, 0xbe }, 0, .none, .none },
534 .{ .movsx, .rm, .{ .r32, .rm8 }, .{ 0x0f, 0xbe }, 0, .rex, .none },
535 .{ .movsx, .rm, .{ .r64, .rm8 }, .{ 0x0f, 0xbe }, 0, .long, .none },
536 .{ .movsx, .rm, .{ .r32, .rm16 }, .{ 0x0f, 0xbf }, 0, .none, .none },
537 .{ .movsx, .rm, .{ .r32, .rm16 }, .{ 0x0f, 0xbf }, 0, .rex, .none },
538 .{ .movsx, .rm, .{ .r64, .rm16 }, .{ 0x0f, 0xbf }, 0, .long, .none },
539
540 // This instruction is discouraged.
541 .{ .movsxd, .rm, .{ .r32, .rm32 }, .{ 0x63 }, 0, .none, .@"64bit" },
542 .{ .movsxd, .rm, .{ .r64, .rm32 }, .{ 0x63 }, 0, .long, .@"64bit" },
543
544 .{ .movzx, .rm, .{ .r16, .rm8 }, .{ 0x0f, 0xb6 }, 0, .short, .none },
545 .{ .movzx, .rm, .{ .r16, .rm8 }, .{ 0x0f, 0xb6 }, 0, .rex_short, .none },
546 .{ .movzx, .rm, .{ .r32, .rm8 }, .{ 0x0f, 0xb6 }, 0, .none, .none },
547 .{ .movzx, .rm, .{ .r32, .rm8 }, .{ 0x0f, 0xb6 }, 0, .rex, .none },
548 .{ .movzx, .rm, .{ .r64, .rm8 }, .{ 0x0f, 0xb6 }, 0, .long, .none },
549 .{ .movzx, .rm, .{ .r32, .rm16 }, .{ 0x0f, 0xb7 }, 0, .none, .none },
550 .{ .movzx, .rm, .{ .r32, .rm16 }, .{ 0x0f, 0xb7 }, 0, .rex, .none },
551 .{ .movzx, .rm, .{ .r64, .rm16 }, .{ 0x0f, 0xb7 }, 0, .long, .none },
552
553 .{ .mul, .m, .{ .rm8 }, .{ 0xf6 }, 4, .none, .none },
554 .{ .mul, .m, .{ .rm8 }, .{ 0xf6 }, 4, .rex, .none },
555 .{ .mul, .m, .{ .rm16 }, .{ 0xf7 }, 4, .short, .none },
556 .{ .mul, .m, .{ .rm32 }, .{ 0xf7 }, 4, .none, .none },
557 .{ .mul, .m, .{ .rm64 }, .{ 0xf7 }, 4, .long, .none },
558
559 .{ .neg, .m, .{ .rm8 }, .{ 0xf6 }, 3, .none, .none },
560 .{ .neg, .m, .{ .rm8 }, .{ 0xf6 }, 3, .rex, .none },
561 .{ .neg, .m, .{ .rm16 }, .{ 0xf7 }, 3, .short, .none },
562 .{ .neg, .m, .{ .rm32 }, .{ 0xf7 }, 3, .none, .none },
563 .{ .neg, .m, .{ .rm64 }, .{ 0xf7 }, 3, .long, .none },
564
565 .{ .nop, .z, .{}, .{ 0x90 }, 0, .none, .none },
566
567 .{ .not, .m, .{ .rm8 }, .{ 0xf6 }, 2, .none, .none },
568 .{ .not, .m, .{ .rm8 }, .{ 0xf6 }, 2, .rex, .none },
569 .{ .not, .m, .{ .rm16 }, .{ 0xf7 }, 2, .short, .none },
570 .{ .not, .m, .{ .rm32 }, .{ 0xf7 }, 2, .none, .none },
571 .{ .not, .m, .{ .rm64 }, .{ 0xf7 }, 2, .long, .none },
572
573 .{ .@"or", .zi, .{ .al, .imm8 }, .{ 0x0c }, 0, .none, .none },
574 .{ .@"or", .zi, .{ .ax, .imm16 }, .{ 0x0d }, 0, .short, .none },
575 .{ .@"or", .zi, .{ .eax, .imm32 }, .{ 0x0d }, 0, .none, .none },
576 .{ .@"or", .zi, .{ .rax, .imm32s }, .{ 0x0d }, 0, .long, .none },
577 .{ .@"or", .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 1, .none, .none },
578 .{ .@"or", .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 1, .rex, .none },
579 .{ .@"or", .mi, .{ .rm16, .imm16 }, .{ 0x81 }, 1, .short, .none },
580 .{ .@"or", .mi, .{ .rm32, .imm32 }, .{ 0x81 }, 1, .none, .none },
581 .{ .@"or", .mi, .{ .rm64, .imm32s }, .{ 0x81 }, 1, .long, .none },
582 .{ .@"or", .mi, .{ .rm16, .imm8s }, .{ 0x83 }, 1, .short, .none },
583 .{ .@"or", .mi, .{ .rm32, .imm8s }, .{ 0x83 }, 1, .none, .none },
584 .{ .@"or", .mi, .{ .rm64, .imm8s }, .{ 0x83 }, 1, .long, .none },
585 .{ .@"or", .mr, .{ .rm8, .r8 }, .{ 0x08 }, 0, .none, .none },
586 .{ .@"or", .mr, .{ .rm8, .r8 }, .{ 0x08 }, 0, .rex, .none },
587 .{ .@"or", .mr, .{ .rm16, .r16 }, .{ 0x09 }, 0, .short, .none },
588 .{ .@"or", .mr, .{ .rm32, .r32 }, .{ 0x09 }, 0, .none, .none },
589 .{ .@"or", .mr, .{ .rm64, .r64 }, .{ 0x09 }, 0, .long, .none },
590 .{ .@"or", .rm, .{ .r8, .rm8 }, .{ 0x0a }, 0, .none, .none },
591 .{ .@"or", .rm, .{ .r8, .rm8 }, .{ 0x0a }, 0, .rex, .none },
592 .{ .@"or", .rm, .{ .r16, .rm16 }, .{ 0x0b }, 0, .short, .none },
593 .{ .@"or", .rm, .{ .r32, .rm32 }, .{ 0x0b }, 0, .none, .none },
594 .{ .@"or", .rm, .{ .r64, .rm64 }, .{ 0x0b }, 0, .long, .none },
595
596 .{ .out, .zi, .{ .imm8, .al }, .{ 0xe6 }, 0, .none, .none },
597 .{ .out, .zi, .{ .imm8, .ax }, .{ 0xe7 }, 0, .short, .none },
598 .{ .out, .zi, .{ .imm8, .eax }, .{ 0xe7 }, 0, .none, .none },
599 .{ .out, .z, .{ .dx, .al }, .{ 0xee }, 0, .none, .none },
600 .{ .out, .z, .{ .dx, .ax }, .{ 0xef }, 0, .short, .none },
601 .{ .out, .z, .{ .dx, .eax }, .{ 0xef }, 0, .none, .none },
602
603 .{ .outs, .z, .{ .dx, .m8 }, .{ 0x6e }, 0, .none, .none },
604 .{ .outs, .z, .{ .dx, .m16 }, .{ 0x6f }, 0, .short, .none },
605 .{ .outs, .z, .{ .dx, .m32 }, .{ 0x6f }, 0, .none, .none },
606 .{ .outsb, .z, .{ }, .{ 0x6e }, 0, .none, .none },
607 .{ .outsw, .z, .{ }, .{ 0x6f }, 0, .short, .none },
608 .{ .outsd, .z, .{ }, .{ 0x6f }, 0, .none, .none },
609
610 .{ .pause, .z, .{}, .{ 0xf3, 0x90 }, 0, .none, .none },
611
612 .{ .pop, .o, .{ .r16 }, .{ 0x58 }, 0, .short, .none },
613 .{ .pop, .o, .{ .r64 }, .{ 0x58 }, 0, .none, .none },
614 .{ .pop, .m, .{ .rm16 }, .{ 0x8f }, 0, .short, .none },
615 .{ .pop, .m, .{ .rm64 }, .{ 0x8f }, 0, .none, .none },
616
617 .{ .popf, .z, .{}, .{ 0x9d }, 0, .short, .none },
618 .{ .popfd, .z, .{}, .{ 0x9d }, 0, .none, .@"32bit" },
619 .{ .popfq, .z, .{}, .{ 0x9d }, 0, .none, .@"64bit" },
620
621 .{ .push, .o, .{ .r16 }, .{ 0x50 }, 0, .short, .none },
622 .{ .push, .o, .{ .r64 }, .{ 0x50 }, 0, .none, .none },
623 .{ .push, .m, .{ .rm16 }, .{ 0xff }, 6, .short, .none },
624 .{ .push, .m, .{ .rm64 }, .{ 0xff }, 6, .none, .none },
625 .{ .push, .i, .{ .imm8 }, .{ 0x6a }, 0, .none, .none },
626 .{ .push, .i, .{ .imm16 }, .{ 0x68 }, 0, .short, .none },
627 .{ .push, .i, .{ .imm32 }, .{ 0x68 }, 0, .none, .none },
628
629 .{ .pushfq, .z, .{}, .{ 0x9c }, 0, .none, .none },
630
631 .{ .ret, .z, .{}, .{ 0xc3 }, 0, .none, .none },
632
633 .{ .rcl, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 2, .none, .none },
634 .{ .rcl, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 2, .rex, .none },
635 .{ .rcl, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 2, .none, .none },
636 .{ .rcl, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 2, .rex, .none },
637 .{ .rcl, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 2, .none, .none },
638 .{ .rcl, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 2, .rex, .none },
639 .{ .rcl, .m1, .{ .rm16, .unity }, .{ 0xd1 }, 2, .short, .none },
640 .{ .rcl, .mc, .{ .rm16, .cl }, .{ 0xd3 }, 2, .short, .none },
641 .{ .rcl, .mi, .{ .rm16, .imm8 }, .{ 0xc1 }, 2, .short, .none },
642 .{ .rcl, .m1, .{ .rm32, .unity }, .{ 0xd1 }, 2, .none, .none },
643 .{ .rcl, .m1, .{ .rm64, .unity }, .{ 0xd1 }, 2, .long, .none },
644 .{ .rcl, .mc, .{ .rm32, .cl }, .{ 0xd3 }, 2, .none, .none },
645 .{ .rcl, .mc, .{ .rm64, .cl }, .{ 0xd3 }, 2, .long, .none },
646 .{ .rcl, .mi, .{ .rm32, .imm8 }, .{ 0xc1 }, 2, .none, .none },
647 .{ .rcl, .mi, .{ .rm64, .imm8 }, .{ 0xc1 }, 2, .long, .none },
648
649 .{ .rcr, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 3, .none, .none },
650 .{ .rcr, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 3, .rex, .none },
651 .{ .rcr, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 3, .none, .none },
652 .{ .rcr, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 3, .rex, .none },
653 .{ .rcr, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 3, .none, .none },
654 .{ .rcr, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 3, .rex, .none },
655 .{ .rcr, .m1, .{ .rm16, .unity }, .{ 0xd1 }, 3, .short, .none },
656 .{ .rcr, .mc, .{ .rm16, .cl }, .{ 0xd3 }, 3, .short, .none },
657 .{ .rcr, .mi, .{ .rm16, .imm8 }, .{ 0xc1 }, 3, .short, .none },
658 .{ .rcr, .m1, .{ .rm32, .unity }, .{ 0xd1 }, 3, .none, .none },
659 .{ .rcr, .m1, .{ .rm64, .unity }, .{ 0xd1 }, 3, .long, .none },
660 .{ .rcr, .mc, .{ .rm32, .cl }, .{ 0xd3 }, 3, .none, .none },
661 .{ .rcr, .mc, .{ .rm64, .cl }, .{ 0xd3 }, 3, .long, .none },
662 .{ .rcr, .mi, .{ .rm32, .imm8 }, .{ 0xc1 }, 3, .none, .none },
663 .{ .rcr, .mi, .{ .rm64, .imm8 }, .{ 0xc1 }, 3, .long, .none },
664
665 .{ .rdfsbase, .m, .{ .r32 }, .{ 0xf3 ,0x0f, 0xae }, 0, .none, .fsgsbase },
666 .{ .rdfsbase, .m, .{ .r64 }, .{ 0xf3 ,0x0f, 0xae }, 0, .long, .fsgsbase },
667 .{ .rdgsbase, .m, .{ .r32 }, .{ 0xf3 ,0x0f, 0xae }, 1, .none, .fsgsbase },
668 .{ .rdgsbase, .m, .{ .r64 }, .{ 0xf3 ,0x0f, 0xae }, 1, .long, .fsgsbase },
669
670 .{ .rdmsr, .z, .{}, .{ 0x0f, 0x32 }, 0, .none, .none },
671
672 .{ .rdpid, .m, .{ .r32 }, .{ 0xf3, 0x0f, 0xc7 }, 7, .none, .@"rdpid 32bit" },
673 .{ .rdpid, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0xc7 }, 7, .none, .@"rdpid 64bit" },
674
675 .{ .rdpkru, .z, .{}, .{ 0x0f, 0x01, 0xee }, 0, .none, .pku },
676
677 .{ .rdpmc, .z, .{}, .{ 0x0f, 0x33 }, 0, .none, .none },
678
679 .{ .rdrand, .m, .{ .r16 }, .{ 0x0f, 0xc7 }, 6, .short, .rdrnd },
680 .{ .rdrand, .m, .{ .r32 }, .{ 0x0f, 0xc7 }, 6, .none, .rdrnd },
681 .{ .rdrand, .m, .{ .r64 }, .{ 0x0f, 0xc7 }, 6, .long, .rdrnd },
682
683 .{ .rdseed, .m, .{ .r16 }, .{ 0x0f, 0xc7 }, 7, .short, .rdseed },
684 .{ .rdseed, .m, .{ .r32 }, .{ 0x0f, 0xc7 }, 7, .none, .rdseed },
685 .{ .rdseed, .m, .{ .r64 }, .{ 0x0f, 0xc7 }, 7, .long, .rdseed },
686
687 .{ .rdssd, .m, .{ .r32 }, .{ 0xf3, 0x0f, 0x1e }, 1, .none, .shstk },
688 .{ .rdssq, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0x1e }, 1, .long, .shstk },
689
690 .{ .rdtsc, .z, .{}, .{ 0x0f, 0x31 }, 0, .none, .none },
691
692 .{ .rdtscp, .z, .{}, .{ 0x0f, 0x01, 0xf9 }, 0, .none, .none },
693
694 .{ .rol, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 0, .none, .none },
695 .{ .rol, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 0, .rex, .none },
696 .{ .rol, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 0, .none, .none },
697 .{ .rol, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 0, .rex, .none },
698 .{ .rol, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 0, .none, .none },
699 .{ .rol, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 0, .rex, .none },
700 .{ .rol, .m1, .{ .rm16, .unity }, .{ 0xd1 }, 0, .short, .none },
701 .{ .rol, .mc, .{ .rm16, .cl }, .{ 0xd3 }, 0, .short, .none },
702 .{ .rol, .mi, .{ .rm16, .imm8 }, .{ 0xc1 }, 0, .short, .none },
703 .{ .rol, .m1, .{ .rm32, .unity }, .{ 0xd1 }, 0, .none, .none },
704 .{ .rol, .m1, .{ .rm64, .unity }, .{ 0xd1 }, 0, .long, .none },
705 .{ .rol, .mc, .{ .rm32, .cl }, .{ 0xd3 }, 0, .none, .none },
706 .{ .rol, .mc, .{ .rm64, .cl }, .{ 0xd3 }, 0, .long, .none },
707 .{ .rol, .mi, .{ .rm32, .imm8 }, .{ 0xc1 }, 0, .none, .none },
708 .{ .rol, .mi, .{ .rm64, .imm8 }, .{ 0xc1 }, 0, .long, .none },
709
710 .{ .ror, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 1, .none, .none },
711 .{ .ror, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 1, .rex, .none },
712 .{ .ror, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 1, .none, .none },
713 .{ .ror, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 1, .rex, .none },
714 .{ .ror, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 1, .none, .none },
715 .{ .ror, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 1, .rex, .none },
716 .{ .ror, .m1, .{ .rm16, .unity }, .{ 0xd1 }, 1, .short, .none },
717 .{ .ror, .mc, .{ .rm16, .cl }, .{ 0xd3 }, 1, .short, .none },
718 .{ .ror, .mi, .{ .rm16, .imm8 }, .{ 0xc1 }, 1, .short, .none },
719 .{ .ror, .m1, .{ .rm32, .unity }, .{ 0xd1 }, 1, .none, .none },
720 .{ .ror, .m1, .{ .rm64, .unity }, .{ 0xd1 }, 1, .long, .none },
721 .{ .ror, .mc, .{ .rm32, .cl }, .{ 0xd3 }, 1, .none, .none },
722 .{ .ror, .mc, .{ .rm64, .cl }, .{ 0xd3 }, 1, .long, .none },
723 .{ .ror, .mi, .{ .rm32, .imm8 }, .{ 0xc1 }, 1, .none, .none },
724 .{ .ror, .mi, .{ .rm64, .imm8 }, .{ 0xc1 }, 1, .long, .none },
725
726 .{ .rsm, .z, .{}, .{ 0x0f, 0xaa }, 0, .none, .none },
727
728 .{ .sahf, .z, .{}, .{ 0x9e }, 0, .none, .@"32bit" },
729 .{ .sahf, .z, .{}, .{ 0x9e }, 0, .none, .sahf },
730
731 .{ .sal, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 4, .none, .none },
732 .{ .sal, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 4, .rex, .none },
733 .{ .sal, .m1, .{ .rm16, .unity }, .{ 0xd1 }, 4, .short, .none },
734 .{ .sal, .m1, .{ .rm32, .unity }, .{ 0xd1 }, 4, .none, .none },
735 .{ .sal, .m1, .{ .rm64, .unity }, .{ 0xd1 }, 4, .long, .none },
736 .{ .sal, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 4, .none, .none },
737 .{ .sal, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 4, .rex, .none },
738 .{ .sal, .mc, .{ .rm16, .cl }, .{ 0xd3 }, 4, .short, .none },
739 .{ .sal, .mc, .{ .rm32, .cl }, .{ 0xd3 }, 4, .none, .none },
740 .{ .sal, .mc, .{ .rm64, .cl }, .{ 0xd3 }, 4, .long, .none },
741 .{ .sal, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 4, .none, .none },
742 .{ .sal, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 4, .rex, .none },
743 .{ .sal, .mi, .{ .rm16, .imm8 }, .{ 0xc1 }, 4, .short, .none },
744 .{ .sal, .mi, .{ .rm32, .imm8 }, .{ 0xc1 }, 4, .none, .none },
745 .{ .sal, .mi, .{ .rm64, .imm8 }, .{ 0xc1 }, 4, .long, .none },
746
747 .{ .sar, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 7, .none, .none },
748 .{ .sar, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 7, .rex, .none },
749 .{ .sar, .m1, .{ .rm16, .unity }, .{ 0xd1 }, 7, .short, .none },
750 .{ .sar, .m1, .{ .rm32, .unity }, .{ 0xd1 }, 7, .none, .none },
751 .{ .sar, .m1, .{ .rm64, .unity }, .{ 0xd1 }, 7, .long, .none },
752 .{ .sar, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 7, .none, .none },
753 .{ .sar, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 7, .rex, .none },
754 .{ .sar, .mc, .{ .rm16, .cl }, .{ 0xd3 }, 7, .short, .none },
755 .{ .sar, .mc, .{ .rm32, .cl }, .{ 0xd3 }, 7, .none, .none },
756 .{ .sar, .mc, .{ .rm64, .cl }, .{ 0xd3 }, 7, .long, .none },
757 .{ .sar, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 7, .none, .none },
758 .{ .sar, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 7, .rex, .none },
759 .{ .sar, .mi, .{ .rm16, .imm8 }, .{ 0xc1 }, 7, .short, .none },
760 .{ .sar, .mi, .{ .rm32, .imm8 }, .{ 0xc1 }, 7, .none, .none },
761 .{ .sar, .mi, .{ .rm64, .imm8 }, .{ 0xc1 }, 7, .long, .none },
762
763 .{ .sbb, .zi, .{ .al, .imm8 }, .{ 0x1c }, 0, .none, .none },
764 .{ .sbb, .zi, .{ .ax, .imm16 }, .{ 0x1d }, 0, .short, .none },
765 .{ .sbb, .zi, .{ .eax, .imm32 }, .{ 0x1d }, 0, .none, .none },
766 .{ .sbb, .zi, .{ .rax, .imm32s }, .{ 0x1d }, 0, .long, .none },
767 .{ .sbb, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 3, .none, .none },
768 .{ .sbb, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 3, .rex, .none },
769 .{ .sbb, .mi, .{ .rm16, .imm16 }, .{ 0x81 }, 3, .short, .none },
770 .{ .sbb, .mi, .{ .rm32, .imm32 }, .{ 0x81 }, 3, .none, .none },
771 .{ .sbb, .mi, .{ .rm64, .imm32s }, .{ 0x81 }, 3, .long, .none },
772 .{ .sbb, .mi, .{ .rm16, .imm8s }, .{ 0x83 }, 3, .short, .none },
773 .{ .sbb, .mi, .{ .rm32, .imm8s }, .{ 0x83 }, 3, .none, .none },
774 .{ .sbb, .mi, .{ .rm64, .imm8s }, .{ 0x83 }, 3, .long, .none },
775 .{ .sbb, .mr, .{ .rm8, .r8 }, .{ 0x18 }, 0, .none, .none },
776 .{ .sbb, .mr, .{ .rm8, .r8 }, .{ 0x18 }, 0, .rex, .none },
777 .{ .sbb, .mr, .{ .rm16, .r16 }, .{ 0x19 }, 0, .short, .none },
778 .{ .sbb, .mr, .{ .rm32, .r32 }, .{ 0x19 }, 0, .none, .none },
779 .{ .sbb, .mr, .{ .rm64, .r64 }, .{ 0x19 }, 0, .long, .none },
780 .{ .sbb, .rm, .{ .r8, .rm8 }, .{ 0x1a }, 0, .none, .none },
781 .{ .sbb, .rm, .{ .r8, .rm8 }, .{ 0x1a }, 0, .rex, .none },
782 .{ .sbb, .rm, .{ .r16, .rm16 }, .{ 0x1b }, 0, .short, .none },
783 .{ .sbb, .rm, .{ .r32, .rm32 }, .{ 0x1b }, 0, .none, .none },
784 .{ .sbb, .rm, .{ .r64, .rm64 }, .{ 0x1b }, 0, .long, .none },
785
786 .{ .scas, .z, .{ .m8 }, .{ 0xae }, 0, .none, .none },
787 .{ .scas, .z, .{ .m16 }, .{ 0xaf }, 0, .short, .none },
788 .{ .scas, .z, .{ .m32 }, .{ 0xaf }, 0, .none, .none },
789 .{ .scas, .z, .{ .m64 }, .{ 0xaf }, 0, .long, .none },
790 .{ .scasb, .z, .{ }, .{ 0xae }, 0, .none, .none },
791 .{ .scasw, .z, .{ }, .{ 0xaf }, 0, .short, .none },
792 .{ .scasd, .z, .{ }, .{ 0xaf }, 0, .none, .none },
793 .{ .scasq, .z, .{ }, .{ 0xaf }, 0, .long, .none },
794
795 .{ .senduipi, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0xc7 }, 6, .none, .uintr },
796
797 .{ .serialize, .z, .{}, .{ 0x0f, 0x01, 0xe8 }, 0, .none, .serialize },
798
799 .{ .seta, .m, .{ .rm8 }, .{ 0x0f, 0x97 }, 0, .none, .none },
800 .{ .seta, .m, .{ .rm8 }, .{ 0x0f, 0x97 }, 0, .rex, .none },
801 .{ .setae, .m, .{ .rm8 }, .{ 0x0f, 0x93 }, 0, .none, .none },
802 .{ .setae, .m, .{ .rm8 }, .{ 0x0f, 0x93 }, 0, .rex, .none },
803 .{ .setb, .m, .{ .rm8 }, .{ 0x0f, 0x92 }, 0, .none, .none },
804 .{ .setb, .m, .{ .rm8 }, .{ 0x0f, 0x92 }, 0, .rex, .none },
805 .{ .setbe, .m, .{ .rm8 }, .{ 0x0f, 0x96 }, 0, .none, .none },
806 .{ .setbe, .m, .{ .rm8 }, .{ 0x0f, 0x96 }, 0, .rex, .none },
807 .{ .setc, .m, .{ .rm8 }, .{ 0x0f, 0x92 }, 0, .none, .none },
808 .{ .setc, .m, .{ .rm8 }, .{ 0x0f, 0x92 }, 0, .rex, .none },
809 .{ .sete, .m, .{ .rm8 }, .{ 0x0f, 0x94 }, 0, .none, .none },
810 .{ .sete, .m, .{ .rm8 }, .{ 0x0f, 0x94 }, 0, .rex, .none },
811 .{ .setg, .m, .{ .rm8 }, .{ 0x0f, 0x9f }, 0, .none, .none },
812 .{ .setg, .m, .{ .rm8 }, .{ 0x0f, 0x9f }, 0, .rex, .none },
813 .{ .setge, .m, .{ .rm8 }, .{ 0x0f, 0x9d }, 0, .none, .none },
814 .{ .setge, .m, .{ .rm8 }, .{ 0x0f, 0x9d }, 0, .rex, .none },
815 .{ .setl, .m, .{ .rm8 }, .{ 0x0f, 0x9c }, 0, .none, .none },
816 .{ .setl, .m, .{ .rm8 }, .{ 0x0f, 0x9c }, 0, .rex, .none },
817 .{ .setle, .m, .{ .rm8 }, .{ 0x0f, 0x9e }, 0, .none, .none },
818 .{ .setle, .m, .{ .rm8 }, .{ 0x0f, 0x9e }, 0, .rex, .none },
819 .{ .setna, .m, .{ .rm8 }, .{ 0x0f, 0x96 }, 0, .none, .none },
820 .{ .setna, .m, .{ .rm8 }, .{ 0x0f, 0x96 }, 0, .rex, .none },
821 .{ .setnae, .m, .{ .rm8 }, .{ 0x0f, 0x92 }, 0, .none, .none },
822 .{ .setnae, .m, .{ .rm8 }, .{ 0x0f, 0x92 }, 0, .rex, .none },
823 .{ .setnb, .m, .{ .rm8 }, .{ 0x0f, 0x93 }, 0, .none, .none },
824 .{ .setnb, .m, .{ .rm8 }, .{ 0x0f, 0x93 }, 0, .rex, .none },
825 .{ .setnbe, .m, .{ .rm8 }, .{ 0x0f, 0x97 }, 0, .none, .none },
826 .{ .setnbe, .m, .{ .rm8 }, .{ 0x0f, 0x97 }, 0, .rex, .none },
827 .{ .setnc, .m, .{ .rm8 }, .{ 0x0f, 0x93 }, 0, .none, .none },
828 .{ .setnc, .m, .{ .rm8 }, .{ 0x0f, 0x93 }, 0, .rex, .none },
829 .{ .setne, .m, .{ .rm8 }, .{ 0x0f, 0x95 }, 0, .none, .none },
830 .{ .setne, .m, .{ .rm8 }, .{ 0x0f, 0x95 }, 0, .rex, .none },
831 .{ .setng, .m, .{ .rm8 }, .{ 0x0f, 0x9e }, 0, .none, .none },
832 .{ .setng, .m, .{ .rm8 }, .{ 0x0f, 0x9e }, 0, .rex, .none },
833 .{ .setnge, .m, .{ .rm8 }, .{ 0x0f, 0x9c }, 0, .none, .none },
834 .{ .setnge, .m, .{ .rm8 }, .{ 0x0f, 0x9c }, 0, .rex, .none },
835 .{ .setnl, .m, .{ .rm8 }, .{ 0x0f, 0x9d }, 0, .none, .none },
836 .{ .setnl, .m, .{ .rm8 }, .{ 0x0f, 0x9d }, 0, .rex, .none },
837 .{ .setnle, .m, .{ .rm8 }, .{ 0x0f, 0x9f }, 0, .none, .none },
838 .{ .setnle, .m, .{ .rm8 }, .{ 0x0f, 0x9f }, 0, .rex, .none },
839 .{ .setno, .m, .{ .rm8 }, .{ 0x0f, 0x91 }, 0, .none, .none },
840 .{ .setno, .m, .{ .rm8 }, .{ 0x0f, 0x91 }, 0, .rex, .none },
841 .{ .setnp, .m, .{ .rm8 }, .{ 0x0f, 0x9b }, 0, .none, .none },
842 .{ .setnp, .m, .{ .rm8 }, .{ 0x0f, 0x9b }, 0, .rex, .none },
843 .{ .setns, .m, .{ .rm8 }, .{ 0x0f, 0x99 }, 0, .none, .none },
844 .{ .setns, .m, .{ .rm8 }, .{ 0x0f, 0x99 }, 0, .rex, .none },
845 .{ .setnz, .m, .{ .rm8 }, .{ 0x0f, 0x95 }, 0, .none, .none },
846 .{ .setnz, .m, .{ .rm8 }, .{ 0x0f, 0x95 }, 0, .rex, .none },
847 .{ .seto, .m, .{ .rm8 }, .{ 0x0f, 0x90 }, 0, .none, .none },
848 .{ .seto, .m, .{ .rm8 }, .{ 0x0f, 0x90 }, 0, .rex, .none },
849 .{ .setp, .m, .{ .rm8 }, .{ 0x0f, 0x9a }, 0, .none, .none },
850 .{ .setp, .m, .{ .rm8 }, .{ 0x0f, 0x9a }, 0, .rex, .none },
851 .{ .setpe, .m, .{ .rm8 }, .{ 0x0f, 0x9a }, 0, .none, .none },
852 .{ .setpe, .m, .{ .rm8 }, .{ 0x0f, 0x9a }, 0, .rex, .none },
853 .{ .setpo, .m, .{ .rm8 }, .{ 0x0f, 0x9b }, 0, .none, .none },
854 .{ .setpo, .m, .{ .rm8 }, .{ 0x0f, 0x9b }, 0, .rex, .none },
855 .{ .sets, .m, .{ .rm8 }, .{ 0x0f, 0x98 }, 0, .none, .none },
856 .{ .sets, .m, .{ .rm8 }, .{ 0x0f, 0x98 }, 0, .rex, .none },
857 .{ .setz, .m, .{ .rm8 }, .{ 0x0f, 0x94 }, 0, .none, .none },
858 .{ .setz, .m, .{ .rm8 }, .{ 0x0f, 0x94 }, 0, .rex, .none },
859
860 .{ .sfence, .z, .{}, .{ 0x0f, 0xae, 0xf8 }, 0, .none, .none },
861
862 .{ .sidt, .m, .{ .m }, .{ 0x0f, 0x01 }, 1, .none, .none },
863
864 .{ .sldt, .m, .{ .rm16 }, .{ 0x0f, 0x00 }, 0, .none, .none },
865
866 .{ .smsw, .m, .{ .rm16 }, .{ 0x0f, 0x01 }, 4, .short, .none },
867 .{ .smsw, .m, .{ .r32_m16 }, .{ 0x0f, 0x01 }, 4, .none, .none },
868 .{ .smsw, .m, .{ .r64_m16 }, .{ 0x0f, 0x01 }, 4, .long, .none },
869
870 .{ .shl, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 4, .none, .none },
871 .{ .shl, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 4, .rex, .none },
872 .{ .shl, .m1, .{ .rm16, .unity }, .{ 0xd1 }, 4, .short, .none },
873 .{ .shl, .m1, .{ .rm32, .unity }, .{ 0xd1 }, 4, .none, .none },
874 .{ .shl, .m1, .{ .rm64, .unity }, .{ 0xd1 }, 4, .long, .none },
875 .{ .shl, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 4, .none, .none },
876 .{ .shl, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 4, .rex, .none },
877 .{ .shl, .mc, .{ .rm16, .cl }, .{ 0xd3 }, 4, .short, .none },
878 .{ .shl, .mc, .{ .rm32, .cl }, .{ 0xd3 }, 4, .none, .none },
879 .{ .shl, .mc, .{ .rm64, .cl }, .{ 0xd3 }, 4, .long, .none },
880 .{ .shl, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 4, .none, .none },
881 .{ .shl, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 4, .rex, .none },
882 .{ .shl, .mi, .{ .rm16, .imm8 }, .{ 0xc1 }, 4, .short, .none },
883 .{ .shl, .mi, .{ .rm32, .imm8 }, .{ 0xc1 }, 4, .none, .none },
884 .{ .shl, .mi, .{ .rm64, .imm8 }, .{ 0xc1 }, 4, .long, .none },
885
886 .{ .shld, .mri, .{ .rm16, .r16, .imm8 }, .{ 0x0f, 0xa4 }, 0, .short, .none },
887 .{ .shld, .mrc, .{ .rm16, .r16, .cl }, .{ 0x0f, 0xa5 }, 0, .short, .none },
888 .{ .shld, .mri, .{ .rm32, .r32, .imm8 }, .{ 0x0f, 0xa4 }, 0, .none, .none },
889 .{ .shld, .mri, .{ .rm64, .r64, .imm8 }, .{ 0x0f, 0xa4 }, 0, .long, .none },
890 .{ .shld, .mrc, .{ .rm32, .r32, .cl }, .{ 0x0f, 0xa5 }, 0, .none, .none },
891 .{ .shld, .mrc, .{ .rm64, .r64, .cl }, .{ 0x0f, 0xa5 }, 0, .long, .none },
892
893 .{ .shr, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 5, .none, .none },
894 .{ .shr, .m1, .{ .rm8, .unity }, .{ 0xd0 }, 5, .rex, .none },
895 .{ .shr, .m1, .{ .rm16, .unity }, .{ 0xd1 }, 5, .short, .none },
896 .{ .shr, .m1, .{ .rm32, .unity }, .{ 0xd1 }, 5, .none, .none },
897 .{ .shr, .m1, .{ .rm64, .unity }, .{ 0xd1 }, 5, .long, .none },
898 .{ .shr, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 5, .none, .none },
899 .{ .shr, .mc, .{ .rm8, .cl }, .{ 0xd2 }, 5, .rex, .none },
900 .{ .shr, .mc, .{ .rm16, .cl }, .{ 0xd3 }, 5, .short, .none },
901 .{ .shr, .mc, .{ .rm32, .cl }, .{ 0xd3 }, 5, .none, .none },
902 .{ .shr, .mc, .{ .rm64, .cl }, .{ 0xd3 }, 5, .long, .none },
903 .{ .shr, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 5, .none, .none },
904 .{ .shr, .mi, .{ .rm8, .imm8 }, .{ 0xc0 }, 5, .rex, .none },
905 .{ .shr, .mi, .{ .rm16, .imm8 }, .{ 0xc1 }, 5, .short, .none },
906 .{ .shr, .mi, .{ .rm32, .imm8 }, .{ 0xc1 }, 5, .none, .none },
907 .{ .shr, .mi, .{ .rm64, .imm8 }, .{ 0xc1 }, 5, .long, .none },
908
909 .{ .shrd, .mri, .{ .rm16, .r16, .imm8 }, .{ 0x0f, 0xac }, 0, .short, .none },
910 .{ .shrd, .mrc, .{ .rm16, .r16, .cl }, .{ 0x0f, 0xad }, 0, .short, .none },
911 .{ .shrd, .mri, .{ .rm32, .r32, .imm8 }, .{ 0x0f, 0xac }, 0, .none, .none },
912 .{ .shrd, .mri, .{ .rm64, .r64, .imm8 }, .{ 0x0f, 0xac }, 0, .long, .none },
913 .{ .shrd, .mrc, .{ .rm32, .r32, .cl }, .{ 0x0f, 0xad }, 0, .none, .none },
914 .{ .shrd, .mrc, .{ .rm64, .r64, .cl }, .{ 0x0f, 0xad }, 0, .long, .none },
915
916 .{ .stac, .z, .{}, .{ 0x0f, 0x01, 0xcb }, 0, .none, .smap },
917
918 .{ .stc, .z, .{}, .{ 0xf9 }, 0, .none, .none },
919
920 .{ .std, .z, .{}, .{ 0xfd }, 0, .none, .none },
921
922 .{ .sti, .z, .{}, .{ 0xfb }, 0, .none, .none },
923
924 .{ .str, .m, .{ .rm16 }, .{ 0x0f, 0x00 }, 1, .none, .none },
925
926 .{ .stui, .z, .{}, .{ 0xf3, 0x0f, 0x01, 0xef }, 0, .none, .uintr },
927
928 .{ .stos, .z, .{ .m8 }, .{ 0xaa }, 0, .none, .none },
929 .{ .stos, .z, .{ .m16 }, .{ 0xab }, 0, .short, .none },
930 .{ .stos, .z, .{ .m32 }, .{ 0xab }, 0, .none, .none },
931 .{ .stos, .z, .{ .m64 }, .{ 0xab }, 0, .long, .none },
932 .{ .stosb, .z, .{ }, .{ 0xaa }, 0, .none, .none },
933 .{ .stosw, .z, .{ }, .{ 0xab }, 0, .short, .none },
934 .{ .stosd, .z, .{ }, .{ 0xab }, 0, .none, .none },
935 .{ .stosq, .z, .{ }, .{ 0xab }, 0, .long, .none },
936
937 .{ .sub, .zi, .{ .al, .imm8 }, .{ 0x2c }, 0, .none, .none },
938 .{ .sub, .zi, .{ .ax, .imm16 }, .{ 0x2d }, 0, .short, .none },
939 .{ .sub, .zi, .{ .eax, .imm32 }, .{ 0x2d }, 0, .none, .none },
940 .{ .sub, .zi, .{ .rax, .imm32s }, .{ 0x2d }, 0, .long, .none },
941 .{ .sub, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 5, .none, .none },
942 .{ .sub, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 5, .rex, .none },
943 .{ .sub, .mi, .{ .rm16, .imm16 }, .{ 0x81 }, 5, .short, .none },
944 .{ .sub, .mi, .{ .rm32, .imm32 }, .{ 0x81 }, 5, .none, .none },
945 .{ .sub, .mi, .{ .rm64, .imm32s }, .{ 0x81 }, 5, .long, .none },
946 .{ .sub, .mi, .{ .rm16, .imm8s }, .{ 0x83 }, 5, .short, .none },
947 .{ .sub, .mi, .{ .rm32, .imm8s }, .{ 0x83 }, 5, .none, .none },
948 .{ .sub, .mi, .{ .rm64, .imm8s }, .{ 0x83 }, 5, .long, .none },
949 .{ .sub, .mr, .{ .rm8, .r8 }, .{ 0x28 }, 0, .none, .none },
950 .{ .sub, .mr, .{ .rm8, .r8 }, .{ 0x28 }, 0, .rex, .none },
951 .{ .sub, .mr, .{ .rm16, .r16 }, .{ 0x29 }, 0, .short, .none },
952 .{ .sub, .mr, .{ .rm32, .r32 }, .{ 0x29 }, 0, .none, .none },
953 .{ .sub, .mr, .{ .rm64, .r64 }, .{ 0x29 }, 0, .long, .none },
954 .{ .sub, .rm, .{ .r8, .rm8 }, .{ 0x2a }, 0, .none, .none },
955 .{ .sub, .rm, .{ .r8, .rm8 }, .{ 0x2a }, 0, .rex, .none },
956 .{ .sub, .rm, .{ .r16, .rm16 }, .{ 0x2b }, 0, .short, .none },
957 .{ .sub, .rm, .{ .r32, .rm32 }, .{ 0x2b }, 0, .none, .none },
958 .{ .sub, .rm, .{ .r64, .rm64 }, .{ 0x2b }, 0, .long, .none },
959
960 .{ .swapgs, .z, .{}, .{ 0x0f, 0x01, 0xf8 }, 0, .none, .@"64bit" },
961
962 .{ .syscall, .z, .{}, .{ 0x0f, 0x05 }, 0, .none, .@"64bit" },
963
964 .{ .sysenter, .z, .{}, .{ 0x0f, 0x34 }, 0, .none, .none },
965
966 .{ .sysexit, .z, .{}, .{ 0x0f, 0x35 }, 0, .none, .none },
967 .{ .sysexit, .z, .{}, .{ 0x0f, 0x35 }, 0, .long, .none },
968
969 .{ .sysret, .z, .{}, .{ 0x0f, 0x37 }, 0, .none, .none },
970 .{ .sysret, .z, .{}, .{ 0x0f, 0x37 }, 0, .long, .none },
971
972 .{ .@"test", .zi, .{ .al, .imm8 }, .{ 0xa8 }, 0, .none, .none },
973 .{ .@"test", .zi, .{ .ax, .imm16 }, .{ 0xa9 }, 0, .short, .none },
974 .{ .@"test", .zi, .{ .eax, .imm32 }, .{ 0xa9 }, 0, .none, .none },
975 .{ .@"test", .zi, .{ .rax, .imm32s }, .{ 0xa9 }, 0, .long, .none },
976 .{ .@"test", .mi, .{ .rm8, .imm8 }, .{ 0xf6 }, 0, .none, .none },
977 .{ .@"test", .mi, .{ .rm8, .imm8 }, .{ 0xf6 }, 0, .rex, .none },
978 .{ .@"test", .mi, .{ .rm16, .imm16 }, .{ 0xf7 }, 0, .short, .none },
979 .{ .@"test", .mi, .{ .rm32, .imm32 }, .{ 0xf7 }, 0, .none, .none },
980 .{ .@"test", .mi, .{ .rm64, .imm32s }, .{ 0xf7 }, 0, .long, .none },
981 .{ .@"test", .mr, .{ .rm8, .r8 }, .{ 0x84 }, 0, .none, .none },
982 .{ .@"test", .mr, .{ .rm8, .r8 }, .{ 0x84 }, 0, .rex, .none },
983 .{ .@"test", .mr, .{ .rm16, .r16 }, .{ 0x85 }, 0, .short, .none },
984 .{ .@"test", .mr, .{ .rm32, .r32 }, .{ 0x85 }, 0, .none, .none },
985 .{ .@"test", .mr, .{ .rm64, .r64 }, .{ 0x85 }, 0, .long, .none },
986
987 .{ .testui, .z, .{}, .{ 0xf3, 0x0f, 0x01, 0xed }, 0, .none, .uintr },
988
989 .{ .tpause, .m, .{ .r32 }, .{ 0x66, 0x0f, 0xae }, 6, .none, .waitpkg },
990
991 .{ .ud0, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0xff }, 0, .none, .none },
992 .{ .ud1, .rm, .{ .r32, .rm32 }, .{ 0x0f, 0xb9 }, 0, .none, .none },
993 .{ .ud2, .z, .{}, .{ 0x0f, 0x0b }, 0, .none, .none },
994
995 .{ .uiret, .z, .{}, .{ 0xf3, 0x0f, 0x01, 0xec }, 0, .none, .uintr },
996
997 .{ .umonitor, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0xae }, 6, .none, .waitpkg },
998
999 .{ .umwait, .m, .{ .r32 }, .{ 0xf2, 0x0f, 0xae }, 6, .none, .waitpkg },
1000
1001 .{ .verr, .m, .{ .rm16 }, .{ 0x0f, 0x00 }, 4, .none, .none },
1002 .{ .verw, .m, .{ .rm16 }, .{ 0x0f, 0x00 }, 5, .none, .none },
1003
1004 .{ .wrfsbase, .m, .{ .r32 }, .{ 0xf3 ,0x0f, 0xae }, 2, .none, .fsgsbase },
1005 .{ .wrfsbase, .m, .{ .r64 }, .{ 0xf3 ,0x0f, 0xae }, 2, .long, .fsgsbase },
1006 .{ .wrgsbase, .m, .{ .r32 }, .{ 0xf3 ,0x0f, 0xae }, 3, .none, .fsgsbase },
1007 .{ .wrgsbase, .m, .{ .r64 }, .{ 0xf3 ,0x0f, 0xae }, 3, .long, .fsgsbase },
1008
1009 .{ .wrmsr, .z, .{}, .{ 0x0f, 0x30 }, 0, .none, .none },
1010
1011 .{ .wrpkru, .z, .{}, .{ 0x0f, 0x01, 0xef }, 0, .none, .pku },
1012
1013 .{ .wrssd, .mr, .{ .m32, .r32 }, .{ 0x0f, 0x38, 0xf6 }, 0, .none, .shstk },
1014 .{ .wrssq, .mr, .{ .m64, .r64 }, .{ 0x0f, 0x38, 0xf6 }, 0, .long, .shstk },
1015
1016 .{ .wrussd, .mr, .{ .m32, .r32 }, .{ 0x66, 0x0f, 0x38, 0xf5 }, 0, .none, .shstk },
1017 .{ .wrussq, .mr, .{ .m64, .r64 }, .{ 0x66, 0x0f, 0x38, 0xf5 }, 0, .long, .shstk },
1018
1019 .{ .xadd, .mr, .{ .rm8, .r8 }, .{ 0x0f, 0xc0 }, 0, .none, .none },
1020 .{ .xadd, .mr, .{ .rm8, .r8 }, .{ 0x0f, 0xc0 }, 0, .rex, .none },
1021 .{ .xadd, .mr, .{ .rm16, .r16 }, .{ 0x0f, 0xc1 }, 0, .short, .none },
1022 .{ .xadd, .mr, .{ .rm32, .r32 }, .{ 0x0f, 0xc1 }, 0, .none, .none },
1023 .{ .xadd, .mr, .{ .rm64, .r64 }, .{ 0x0f, 0xc1 }, 0, .long, .none },
1024
1025 .{ .xchg, .zo, .{ .ax, .r16 }, .{ 0x90 }, 0, .short, .none },
1026 .{ .xchg, .oz, .{ .r16, .ax }, .{ 0x90 }, 0, .short, .none },
1027 .{ .xchg, .zo, .{ .eax, .r32 }, .{ 0x90 }, 0, .none, .none },
1028 .{ .xchg, .zo, .{ .rax, .r64 }, .{ 0x90 }, 0, .long, .none },
1029 .{ .xchg, .oz, .{ .r32, .eax }, .{ 0x90 }, 0, .none, .none },
1030 .{ .xchg, .oz, .{ .r64, .rax }, .{ 0x90 }, 0, .long, .none },
1031 .{ .xchg, .mr, .{ .rm8, .r8 }, .{ 0x86 }, 0, .none, .none },
1032 .{ .xchg, .mr, .{ .rm8, .r8 }, .{ 0x86 }, 0, .rex, .none },
1033 .{ .xchg, .rm, .{ .r8, .rm8 }, .{ 0x86 }, 0, .none, .none },
1034 .{ .xchg, .rm, .{ .r8, .rm8 }, .{ 0x86 }, 0, .rex, .none },
1035 .{ .xchg, .mr, .{ .rm16, .r16 }, .{ 0x87 }, 0, .short, .none },
1036 .{ .xchg, .rm, .{ .r16, .rm16 }, .{ 0x87 }, 0, .short, .none },
1037 .{ .xchg, .mr, .{ .rm32, .r32 }, .{ 0x87 }, 0, .none, .none },
1038 .{ .xchg, .mr, .{ .rm64, .r64 }, .{ 0x87 }, 0, .long, .none },
1039 .{ .xchg, .rm, .{ .r32, .rm32 }, .{ 0x87 }, 0, .none, .none },
1040 .{ .xchg, .rm, .{ .r64, .rm64 }, .{ 0x87 }, 0, .long, .none },
1041
1042 .{ .xgetbv, .z, .{}, .{ 0x0f, 0x01, 0xd0 }, 0, .none, .none },
1043
1044 .{ .xlat, .z, .{ .m8 }, .{ 0xd7 }, 0, .none, .@"32bit" },
1045 .{ .xlat, .z, .{ .m8 }, .{ 0xd7 }, 0, .long, .@"64bit" },
1046 .{ .xlatb, .z, .{ }, .{ 0xd7 }, 0, .none, .@"32bit" },
1047 .{ .xlatb, .z, .{ }, .{ 0xd7 }, 0, .long, .@"64bit" },
1048
1049 .{ .xor, .zi, .{ .al, .imm8 }, .{ 0x34 }, 0, .none, .none },
1050 .{ .xor, .zi, .{ .ax, .imm16 }, .{ 0x35 }, 0, .short, .none },
1051 .{ .xor, .zi, .{ .eax, .imm32 }, .{ 0x35 }, 0, .none, .none },
1052 .{ .xor, .zi, .{ .rax, .imm32s }, .{ 0x35 }, 0, .long, .none },
1053 .{ .xor, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 6, .none, .none },
1054 .{ .xor, .mi, .{ .rm8, .imm8 }, .{ 0x80 }, 6, .rex, .none },
1055 .{ .xor, .mi, .{ .rm16, .imm16 }, .{ 0x81 }, 6, .short, .none },
1056 .{ .xor, .mi, .{ .rm32, .imm32 }, .{ 0x81 }, 6, .none, .none },
1057 .{ .xor, .mi, .{ .rm64, .imm32s }, .{ 0x81 }, 6, .long, .none },
1058 .{ .xor, .mi, .{ .rm16, .imm8s }, .{ 0x83 }, 6, .short, .none },
1059 .{ .xor, .mi, .{ .rm32, .imm8s }, .{ 0x83 }, 6, .none, .none },
1060 .{ .xor, .mi, .{ .rm64, .imm8s }, .{ 0x83 }, 6, .long, .none },
1061 .{ .xor, .mr, .{ .rm8, .r8 }, .{ 0x30 }, 0, .none, .none },
1062 .{ .xor, .mr, .{ .rm8, .r8 }, .{ 0x30 }, 0, .rex, .none },
1063 .{ .xor, .mr, .{ .rm16, .r16 }, .{ 0x31 }, 0, .short, .none },
1064 .{ .xor, .mr, .{ .rm32, .r32 }, .{ 0x31 }, 0, .none, .none },
1065 .{ .xor, .mr, .{ .rm64, .r64 }, .{ 0x31 }, 0, .long, .none },
1066 .{ .xor, .rm, .{ .r8, .rm8 }, .{ 0x32 }, 0, .none, .none },
1067 .{ .xor, .rm, .{ .r8, .rm8 }, .{ 0x32 }, 0, .rex, .none },
1068 .{ .xor, .rm, .{ .r16, .rm16 }, .{ 0x33 }, 0, .short, .none },
1069 .{ .xor, .rm, .{ .r32, .rm32 }, .{ 0x33 }, 0, .none, .none },
1070 .{ .xor, .rm, .{ .r64, .rm64 }, .{ 0x33 }, 0, .long, .none },
1071
1072 // X87
1073 .{ .f2xm1, .z, .{}, .{ 0xd9, 0xf0 }, 0, .none, .x87 },
1074
1075 .{ .fabs, .z, .{}, .{ 0xd9, 0xe1 }, 0, .none, .x87 },
1076
1077 .{ .fadd, .m, .{ .m32 }, .{ 0xd8 }, 0, .none, .x87 },
1078 .{ .fadd, .m, .{ .m64 }, .{ 0xdc }, 0, .none, .x87 },
1079 .{ .fadd, .zo, .{ .st0, .st }, .{ 0xd8, 0xc0 }, 0, .none, .x87 },
1080 .{ .fadd, .oz, .{ .st, .st0 }, .{ 0xdc, 0xc0 }, 0, .none, .x87 },
1081 .{ .faddp, .oz, .{ .st, .st0 }, .{ 0xde, 0xc0 }, 0, .none, .x87 },
1082 .{ .faddp, .z, .{ }, .{ 0xde, 0xc1 }, 0, .none, .x87 },
1083 .{ .fiadd, .m, .{ .m32 }, .{ 0xda }, 0, .none, .x87 },
1084 .{ .fiadd, .m, .{ .m16 }, .{ 0xde }, 0, .none, .x87 },
1085
1086 .{ .fbld, .m, .{ .m80 }, .{ 0xdf }, 4, .none, .x87 },
1087
1088 .{ .fbstp, .m, .{ .m80 }, .{ 0xdf }, 6, .none, .x87 },
1089
1090 .{ .fchs, .z, .{}, .{ 0xd9, 0xe0 }, 0, .none, .x87 },
1091
1092 .{ .fclex, .z, .{}, .{ 0xdb, 0xe2 }, 0, .wait, .x87 },
1093 .{ .fnclex, .z, .{}, .{ 0xdb, 0xe2 }, 0, .none, .x87 },
1094
1095 .{ .fcmovb, .zo, .{ .st0, .st }, .{ 0xda, 0xc0 }, 0, .none, .@"cmov x87" },
1096 .{ .fcmove, .zo, .{ .st0, .st }, .{ 0xda, 0xc8 }, 0, .none, .@"cmov x87" },
1097 .{ .fcmovbe, .zo, .{ .st0, .st }, .{ 0xda, 0xd0 }, 0, .none, .@"cmov x87" },
1098 .{ .fcmovu, .zo, .{ .st0, .st }, .{ 0xda, 0xd8 }, 0, .none, .@"cmov x87" },
1099 .{ .fcmovnb, .zo, .{ .st0, .st }, .{ 0xdb, 0xc0 }, 0, .none, .@"cmov x87" },
1100 .{ .fcmovne, .zo, .{ .st0, .st }, .{ 0xdb, 0xc8 }, 0, .none, .@"cmov x87" },
1101 .{ .fcmovnbe, .zo, .{ .st0, .st }, .{ 0xdb, 0xd0 }, 0, .none, .@"cmov x87" },
1102 .{ .fcmovnu, .zo, .{ .st0, .st }, .{ 0xdb, 0xd8 }, 0, .none, .@"cmov x87" },
1103
1104 .{ .fcom, .m, .{ .m32 }, .{ 0xd8 }, 2, .none, .x87 },
1105 .{ .fcom, .m, .{ .m64 }, .{ 0xdc }, 2, .none, .x87 },
1106 .{ .fcom, .o, .{ .st }, .{ 0xd8, 0xd0 }, 0, .none, .x87 },
1107 .{ .fcom, .z, .{ }, .{ 0xd8, 0xd1 }, 0, .none, .x87 },
1108 .{ .fcomp, .m, .{ .m32 }, .{ 0xd8 }, 3, .none, .x87 },
1109 .{ .fcomp, .m, .{ .m64 }, .{ 0xdc }, 3, .none, .x87 },
1110 .{ .fcomp, .o, .{ .st }, .{ 0xd8, 0xd8 }, 0, .none, .x87 },
1111 .{ .fcomp, .z, .{ }, .{ 0xd8, 0xd9 }, 0, .none, .x87 },
1112 .{ .fcompp, .z, .{ }, .{ 0xde, 0xd9 }, 0, .none, .x87 },
1113
1114 .{ .fcomi, .zo, .{ .st0, .st }, .{ 0xdb, 0xf0 }, 0, .none, .x87 },
1115 .{ .fcomip, .zo, .{ .st0, .st }, .{ 0xdf, 0xf0 }, 0, .none, .x87 },
1116 .{ .fucomi, .zo, .{ .st0, .st }, .{ 0xdb, 0xe8 }, 0, .none, .x87 },
1117 .{ .fucomip, .zo, .{ .st0, .st }, .{ 0xdf, 0xe8 }, 0, .none, .x87 },
1118
1119 .{ .fcos, .z, .{}, .{ 0xd9, 0xff }, 0, .none, .x87 },
1120
1121 .{ .fdecstp, .z, .{}, .{ 0xd9, 0xf6 }, 0, .none, .x87 },
1122
1123 .{ .fdiv, .m, .{ .m32 }, .{ 0xd8 }, 6, .none, .x87 },
1124 .{ .fdiv, .m, .{ .m64 }, .{ 0xdc }, 6, .none, .x87 },
1125 .{ .fdiv, .zo, .{ .st0, .st }, .{ 0xd8, 0xf0 }, 0, .none, .x87 },
1126 .{ .fdiv, .oz, .{ .st, .st0 }, .{ 0xdc, 0xf8 }, 0, .none, .x87 },
1127 .{ .fdivp, .oz, .{ .st, .st0 }, .{ 0xde, 0xf8 }, 0, .none, .x87 },
1128 .{ .fdivp, .z, .{ }, .{ 0xde, 0xf9 }, 0, .none, .x87 },
1129 .{ .fidiv, .m, .{ .m32 }, .{ 0xda }, 6, .none, .x87 },
1130 .{ .fidiv, .m, .{ .m16 }, .{ 0xde }, 6, .none, .x87 },
1131
1132 .{ .fdivr, .m, .{ .m32 }, .{ 0xd8 }, 7, .none, .x87 },
1133 .{ .fdivr, .m, .{ .m64 }, .{ 0xdc }, 7, .none, .x87 },
1134 .{ .fdivr, .zo, .{ .st0, .st }, .{ 0xd8, 0xf8 }, 0, .none, .x87 },
1135 .{ .fdivr, .oz, .{ .st, .st0 }, .{ 0xdc, 0xf0 }, 0, .none, .x87 },
1136 .{ .fdivrp, .oz, .{ .st, .st0 }, .{ 0xde, 0xf0 }, 0, .none, .x87 },
1137 .{ .fdivrp, .z, .{ }, .{ 0xde, 0xf1 }, 0, .none, .x87 },
1138 .{ .fidivr, .m, .{ .m32 }, .{ 0xda }, 7, .none, .x87 },
1139 .{ .fidivr, .m, .{ .m16 }, .{ 0xde }, 7, .none, .x87 },
1140
1141 .{ .ffree, .o, .{ .st }, .{ 0xdd, 0xc0 }, 0, .none, .x87 },
1142
1143 .{ .ficom, .m, .{ .m16 }, .{ 0xde }, 2, .none, .x87 },
1144 .{ .ficom, .m, .{ .m32 }, .{ 0xda }, 2, .none, .x87 },
1145 .{ .ficomp, .m, .{ .m16 }, .{ 0xde }, 3, .none, .x87 },
1146 .{ .ficomp, .m, .{ .m32 }, .{ 0xda }, 3, .none, .x87 },
1147
1148 .{ .fild, .m, .{ .m16 }, .{ 0xdf }, 0, .none, .x87 },
1149 .{ .fild, .m, .{ .m32 }, .{ 0xdb }, 0, .none, .x87 },
1150 .{ .fild, .m, .{ .m64 }, .{ 0xdf }, 5, .none, .x87 },
1151
1152 .{ .fincstp, .z, .{}, .{ 0xd9, 0xf7 }, 0, .none, .x87 },
1153
1154 .{ .finit, .z, .{}, .{ 0xdb, 0xe3 }, 0, .wait, .x87 },
1155 .{ .fninit, .z, .{}, .{ 0xdb, 0xe3 }, 0, .none, .x87 },
1156
1157 .{ .fist, .m, .{ .m16 }, .{ 0xdf }, 2, .none, .x87 },
1158 .{ .fist, .m, .{ .m32 }, .{ 0xdb }, 2, .none, .x87 },
1159 .{ .fistp, .m, .{ .m16 }, .{ 0xdf }, 3, .none, .x87 },
1160 .{ .fistp, .m, .{ .m32 }, .{ 0xdb }, 3, .none, .x87 },
1161 .{ .fistp, .m, .{ .m64 }, .{ 0xdf }, 7, .none, .x87 },
1162
1163 .{ .fisttp, .m, .{ .m16 }, .{ 0xdf }, 1, .none, .x87 },
1164 .{ .fisttp, .m, .{ .m32 }, .{ 0xdb }, 1, .none, .x87 },
1165 .{ .fisttp, .m, .{ .m64 }, .{ 0xdd }, 1, .none, .x87 },
1166
1167 .{ .fld, .m, .{ .m32 }, .{ 0xd9 }, 0, .none, .x87 },
1168 .{ .fld, .m, .{ .m64 }, .{ 0xdd }, 0, .none, .x87 },
1169 .{ .fld, .m, .{ .m80 }, .{ 0xdb }, 5, .none, .x87 },
1170 .{ .fld, .o, .{ .st }, .{ 0xd9, 0xc0 }, 0, .none, .x87 },
1171
1172 .{ .fld1, .z, .{}, .{ 0xd9, 0xe8 }, 0, .none, .x87 },
1173 .{ .fldl2t, .z, .{}, .{ 0xd9, 0xe9 }, 0, .none, .x87 },
1174 .{ .fldl2e, .z, .{}, .{ 0xd9, 0xea }, 0, .none, .x87 },
1175 .{ .fldpi, .z, .{}, .{ 0xd9, 0xeb }, 0, .none, .x87 },
1176 .{ .fldlg2, .z, .{}, .{ 0xd9, 0xec }, 0, .none, .x87 },
1177 .{ .fldln2, .z, .{}, .{ 0xd9, 0xed }, 0, .none, .x87 },
1178 .{ .fldz, .z, .{}, .{ 0xd9, 0xee }, 0, .none, .x87 },
1179
1180 .{ .fldcw, .m, .{ .m16 }, .{ 0xd9 }, 5, .none, .x87 },
1181
1182 .{ .fldenv, .m, .{ .m }, .{ 0xd9 }, 4, .none, .x87 },
1183
1184 .{ .fmul, .m, .{ .m32 }, .{ 0xd8 }, 1, .none, .x87 },
1185 .{ .fmul, .m, .{ .m64 }, .{ 0xdc }, 1, .none, .x87 },
1186 .{ .fmul, .zo, .{ .st0, .st }, .{ 0xd8, 0xc8 }, 0, .none, .x87 },
1187 .{ .fmul, .oz, .{ .st, .st0 }, .{ 0xdc, 0xc8 }, 0, .none, .x87 },
1188 .{ .fmulp, .oz, .{ .st, .st0 }, .{ 0xde, 0xc8 }, 0, .none, .x87 },
1189 .{ .fmulp, .z, .{ }, .{ 0xde, 0xc9 }, 0, .none, .x87 },
1190 .{ .fimul, .m, .{ .m32 }, .{ 0xda }, 1, .none, .x87 },
1191 .{ .fimul, .m, .{ .m16 }, .{ 0xde }, 1, .none, .x87 },
1192
1193 .{ .fnop, .z, .{}, .{ 0xd9, 0xd0 }, 0, .none, .x87 },
1194
1195 .{ .fpatan, .z, .{}, .{ 0xd9, 0xf3 }, 0, .none, .x87 },
1196
1197 .{ .fprem, .z, .{}, .{ 0xd9, 0xf8 }, 0, .none, .x87 },
1198
1199 .{ .fprem1, .z, .{}, .{ 0xd9, 0xf5 }, 0, .none, .x87 },
1200
1201 .{ .fptan, .z, .{}, .{ 0xd9, 0xf2 }, 0, .none, .x87 },
1202
1203 .{ .frndint, .z, .{}, .{ 0xd9, 0xfc }, 0, .none, .x87 },
1204
1205 .{ .frstor, .m, .{ .m }, .{ 0xdd }, 4, .none, .x87 },
1206
1207 .{ .fsave, .m, .{ .m }, .{ 0xdd }, 6, .wait, .x87 },
1208 .{ .fnsave, .m, .{ .m }, .{ 0xdd }, 6, .none, .x87 },
1209
1210 .{ .fscale, .z, .{}, .{ 0xd9, 0xfd }, 0, .none, .x87 },
1211
1212 .{ .fsin, .z, .{}, .{ 0xd9, 0xfe }, 0, .none, .x87 },
1213
1214 .{ .fsincos, .z, .{}, .{ 0xd9, 0xfb }, 0, .none, .x87 },
1215
1216 .{ .fsqrt, .z, .{}, .{ 0xd9, 0xfa }, 0, .none, .x87 },
1217
1218 .{ .fst, .m, .{ .m32 }, .{ 0xd9 }, 2, .none, .x87 },
1219 .{ .fst, .m, .{ .m64 }, .{ 0xdd }, 2, .none, .x87 },
1220 .{ .fst, .o, .{ .st }, .{ 0xdd, 0xd0 }, 0, .none, .x87 },
1221 .{ .fstp, .m, .{ .m32 }, .{ 0xd9 }, 3, .none, .x87 },
1222 .{ .fstp, .m, .{ .m64 }, .{ 0xdd }, 3, .none, .x87 },
1223 .{ .fstp, .m, .{ .m80 }, .{ 0xdb }, 7, .none, .x87 },
1224 .{ .fstp, .o, .{ .st }, .{ 0xdd, 0xd8 }, 0, .none, .x87 },
1225
1226 .{ .fstcw, .m, .{ .m16 }, .{ 0xd9 }, 7, .wait, .x87 },
1227 .{ .fnstcw, .m, .{ .m16 }, .{ 0xd9 }, 7, .none, .x87 },
1228
1229 .{ .fstenv, .m, .{ .m }, .{ 0xd9 }, 6, .wait, .x87 },
1230 .{ .fnstenv, .m, .{ .m }, .{ 0xd9 }, 6, .none, .x87 },
1231
1232 .{ .fstsw, .m, .{ .m16 }, .{ 0xdd }, 7, .wait, .x87 },
1233 .{ .fstsw, .m, .{ .ax }, .{ 0xdf }, 4, .wait, .x87 },
1234 .{ .fnstsw, .m, .{ .m16 }, .{ 0xdd }, 7, .none, .x87 },
1235 .{ .fnstsw, .m, .{ .ax }, .{ 0xdf }, 4, .none, .x87 },
1236
1237 .{ .fsub, .m, .{ .m32 }, .{ 0xd8 }, 4, .none, .x87 },
1238 .{ .fsub, .m, .{ .m64 }, .{ 0xdc }, 4, .none, .x87 },
1239 .{ .fsub, .zo, .{ .st0, .st }, .{ 0xd8, 0xe0 }, 0, .none, .x87 },
1240 .{ .fsub, .oz, .{ .st, .st0 }, .{ 0xdc, 0xe8 }, 0, .none, .x87 },
1241 .{ .fsubp, .oz, .{ .st, .st0 }, .{ 0xde, 0xe8 }, 0, .none, .x87 },
1242 .{ .fsubp, .z, .{ }, .{ 0xde, 0xe9 }, 0, .none, .x87 },
1243 .{ .fisub, .m, .{ .m32 }, .{ 0xda }, 4, .none, .x87 },
1244 .{ .fisub, .m, .{ .m16 }, .{ 0xde }, 4, .none, .x87 },
1245
1246 .{ .fsubr, .m, .{ .m32 }, .{ 0xd8 }, 5, .none, .x87 },
1247 .{ .fsubr, .m, .{ .m64 }, .{ 0xdc }, 5, .none, .x87 },
1248 .{ .fsubr, .zo, .{ .st0, .st }, .{ 0xd8, 0xe8 }, 0, .none, .x87 },
1249 .{ .fsubr, .oz, .{ .st, .st0 }, .{ 0xdc, 0xe0 }, 0, .none, .x87 },
1250 .{ .fsubrp, .oz, .{ .st, .st0 }, .{ 0xde, 0xe0 }, 0, .none, .x87 },
1251 .{ .fsubrp, .z, .{ }, .{ 0xde, 0xe1 }, 0, .none, .x87 },
1252 .{ .fisubr, .m, .{ .m32 }, .{ 0xda }, 5, .none, .x87 },
1253 .{ .fisubr, .m, .{ .m16 }, .{ 0xde }, 5, .none, .x87 },
1254
1255 .{ .ftst, .z, .{}, .{ 0xd9, 0xe4 }, 0, .none, .x87 },
1256
1257 .{ .fucom, .o, .{ .st }, .{ 0xdd, 0xe0 }, 0, .none, .x87 },
1258 .{ .fucom, .z, .{ }, .{ 0xdd, 0xe1 }, 0, .none, .x87 },
1259 .{ .fucomp, .o, .{ .st }, .{ 0xdd, 0xe8 }, 0, .none, .x87 },
1260 .{ .fucomp, .z, .{ }, .{ 0xdd, 0xe9 }, 0, .none, .x87 },
1261 .{ .fucompp, .z, .{ }, .{ 0xda, 0xe9 }, 0, .none, .x87 },
1262
1263 .{ .fxam, .z, .{}, .{ 0xd9, 0xe5 }, 0, .none, .x87 },
1264
1265 .{ .fxch, .o, .{ .st }, .{ 0xd9, 0xc8 }, 0, .none, .x87 },
1266 .{ .fxch, .z, .{ }, .{ 0xd9, 0xc9 }, 0, .none, .x87 },
1267
1268 .{ .fxtract, .z, .{}, .{ 0xd9, 0xf4 }, 0, .none, .x87 },
1269
1270 .{ .fyl2x, .z, .{}, .{ 0xd9, 0xf1 }, 0, .none, .x87 },
1271
1272 .{ .fyl2xp1, .z, .{}, .{ 0xd9, 0xf9 }, 0, .none, .x87 },
1273
1274 .{ .wait, .z, .{}, .{ 0x9b }, 0, .none, .x87 },
1275 .{ .fwait, .z, .{}, .{ 0x9b }, 0, .none, .x87 },
1276
1277 // MMX
1278 .{ .emms, .z, .{}, .{ 0x0f, 0x77 }, 0, .none, .mmx },
1279
1280 // SSE
1281 .{ .addps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x58 }, 0, .none, .sse },
1282
1283 .{ .addss, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x58 }, 0, .none, .sse },
1284
1285 .{ .andnps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x55 }, 0, .none, .sse },
1286
1287 .{ .andps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x54 }, 0, .none, .sse },
1288
1289 .{ .cmpps, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x0f, 0xc2 }, 0, .none, .sse },
1290
1291 .{ .cmpss, .rmi, .{ .xmm, .xmm_m32, .imm8 }, .{ 0xf3, 0x0f, 0xc2 }, 0, .none, .sse },
1292
1293 .{ .comiss, .rm, .{ .xmm, .xmm_m32 }, .{ 0x0f, 0x2f }, 0, .none, .sse },
1294
1295 .{ .cvtpi2ps, .rm, .{ .xmm, .mm_m64 }, .{ 0x0f, 0x2a }, 0, .none, .sse },
1296
1297 .{ .cvtps2pi, .rm, .{ .mm, .xmm_m64 }, .{ 0x0f, 0x2d }, 0, .none, .sse },
1298
1299 .{ .cvtsi2ss, .rm, .{ .xmm, .rm32 }, .{ 0xf3, 0x0f, 0x2a }, 0, .none, .sse },
1300 .{ .cvtsi2ss, .rm, .{ .xmm, .rm64 }, .{ 0xf3, 0x0f, 0x2a }, 0, .long, .sse },
1301
1302 .{ .cvtss2si, .rm, .{ .r32, .xmm_m32 }, .{ 0xf3, 0x0f, 0x2d }, 0, .none, .sse },
1303 .{ .cvtss2si, .rm, .{ .r64, .xmm_m32 }, .{ 0xf3, 0x0f, 0x2d }, 0, .long, .sse },
1304
1305 .{ .cvttps2pi, .rm, .{ .mm, .xmm_m64 }, .{ 0x0f, 0x2c }, 0, .none, .sse },
1306
1307 .{ .cvttss2si, .rm, .{ .r32, .xmm_m32 }, .{ 0xf3, 0x0f, 0x2c }, 0, .none, .sse },
1308 .{ .cvttss2si, .rm, .{ .r64, .xmm_m32 }, .{ 0xf3, 0x0f, 0x2c }, 0, .long, .sse },
1309
1310 .{ .divps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x5e }, 0, .none, .sse },
1311
1312 .{ .divss, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5e }, 0, .none, .sse },
1313
1314 .{ .fxrstor, .m, .{ .m }, .{ 0x0f, 0xae }, 1, .none, .fxsr },
1315 .{ .fxrstor64, .m, .{ .m }, .{ 0x0f, 0xae }, 1, .long, .fxsr },
1316
1317 .{ .fxsave, .m, .{ .m }, .{ 0x0f, 0xae }, 0, .none, .fxsr },
1318 .{ .fxsave64, .m, .{ .m }, .{ 0x0f, 0xae }, 0, .long, .fxsr },
1319
1320 .{ .ldmxcsr, .m, .{ .m32 }, .{ 0x0f, 0xae }, 2, .none, .sse },
1321
1322 .{ .maxps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x5f }, 0, .none, .sse },
1323
1324 .{ .maxss, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5f }, 0, .none, .sse },
1325
1326 .{ .minps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x5d }, 0, .none, .sse },
1327
1328 .{ .minss, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5d }, 0, .none, .sse },
1329
1330 .{ .movaps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x28 }, 0, .none, .sse },
1331 .{ .movaps, .mr, .{ .xmm_m128, .xmm }, .{ 0x0f, 0x29 }, 0, .none, .sse },
1332
1333 .{ .movhlps, .rm, .{ .xmm, .xmm }, .{ 0x0f, 0x12 }, 0, .none, .sse },
1334
1335 .{ .movhps, .rm, .{ .xmm, .m64 }, .{ 0x0f, 0x16 }, 0, .none, .sse },
1336 .{ .movhps, .mr, .{ .m64, .xmm }, .{ 0x0f, 0x17 }, 0, .none, .sse },
1337
1338 .{ .movlhps, .rm, .{ .xmm, .xmm }, .{ 0x0f, 0x16 }, 0, .none, .sse },
1339
1340 .{ .movlps, .rm, .{ .xmm, .m64 }, .{ 0x0f, 0x12 }, 0, .none, .sse },
1341 .{ .movlps, .mr, .{ .m64, .xmm }, .{ 0x0f, 0x13 }, 0, .none, .sse },
1342
1343 .{ .movmskps, .rm, .{ .r32, .xmm }, .{ 0x0f, 0x50 }, 0, .none, .sse },
1344 .{ .movmskps, .rm, .{ .r64, .xmm }, .{ 0x0f, 0x50 }, 0, .none, .sse },
1345
1346 .{ .movss, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x10 }, 0, .none, .sse },
1347 .{ .movss, .mr, .{ .xmm_m32, .xmm }, .{ 0xf3, 0x0f, 0x11 }, 0, .none, .sse },
1348
1349 .{ .movups, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x10 }, 0, .none, .sse },
1350 .{ .movups, .mr, .{ .xmm_m128, .xmm }, .{ 0x0f, 0x11 }, 0, .none, .sse },
1351
1352 .{ .mulps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x59 }, 0, .none, .sse },
1353
1354 .{ .mulss, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x59 }, 0, .none, .sse },
1355
1356 .{ .orps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x56 }, 0, .none, .sse },
1357
1358 .{ .pmovmskb, .rm, .{ .r32, .xmm }, .{ 0x66, 0x0f, 0xd7 }, 0, .none, .sse },
1359 .{ .pmovmskb, .rm, .{ .r64, .xmm }, .{ 0x66, 0x0f, 0xd7 }, 0, .none, .sse },
1360
1361 .{ .prefetchit0, .m, .{ .mrip8 }, .{ 0x0f, 0x18 }, 7, .none, .@"prefetchi 64bit" },
1362 .{ .prefetchit1, .m, .{ .mrip8 }, .{ 0x0f, 0x18 }, 6, .none, .@"prefetchi 64bit" },
1363
1364 .{ .prefetchnta, .m, .{ .m8 }, .{ 0x0f, 0x18 }, 0, .none, .prefetch },
1365 .{ .prefetcht0, .m, .{ .m8 }, .{ 0x0f, 0x18 }, 1, .none, .prefetch },
1366 .{ .prefetcht1, .m, .{ .m8 }, .{ 0x0f, 0x18 }, 2, .none, .prefetch },
1367 .{ .prefetcht2, .m, .{ .m8 }, .{ 0x0f, 0x18 }, 3, .none, .prefetch },
1368
1369 .{ .prefetchw, .m, .{ .m8 }, .{ 0x0f, 0x0d }, 1, .none, .prfchw },
1370
1371 .{ .prefetchwt1, .m, .{ .m8 }, .{ 0x0f, 0x0d }, 2, .none, .prefetchwt1 },
1372
1373 .{ .shufps, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x0f, 0xc6 }, 0, .none, .sse },
1374
1375 .{ .sqrtps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x51 }, 0, .none, .sse },
1376
1377 .{ .sqrtss, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x51 }, 0, .none, .sse },
1378
1379 .{ .stmxcsr, .m, .{ .m32 }, .{ 0x0f, 0xae }, 3, .none, .sse },
1380
1381 .{ .subps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x5c }, 0, .none, .sse },
1382
1383 .{ .subss, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5c }, 0, .none, .sse },
1384
1385 .{ .ucomiss, .rm, .{ .xmm, .xmm_m32 }, .{ 0x0f, 0x2e }, 0, .none, .sse },
1386
1387 .{ .unpckhps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x15 }, 0, .none, .sse },
1388
1389 .{ .unpcklps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x14 }, 0, .none, .sse },
1390
1391 .{ .xorps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x57 }, 0, .none, .sse },
1392
1393 // SSE2
1394 .{ .addpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x58 }, 0, .none, .sse2 },
1395
1396 .{ .addsd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x58 }, 0, .none, .sse2 },
1397
1398 .{ .andnpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x55 }, 0, .none, .sse2 },
1399
1400 .{ .andpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x54 }, 0, .none, .sse2 },
1401
1402 .{ .cmppd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0xc2 }, 0, .none, .sse2 },
1403
1404 .{ .cmpsd, .rmi, .{ .xmm, .xmm_m64, .imm8 }, .{ 0xf2, 0x0f, 0xc2 }, 0, .none, .sse2 },
1405
1406 .{ .comisd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x2f }, 0, .none, .sse2 },
1407
1408 .{ .cvtdq2pd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf3, 0x0f, 0xe6 }, 0, .none, .sse2 },
1409
1410 .{ .cvtdq2ps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x5b }, 0, .none, .sse2 },
1411
1412 .{ .cvtpd2dq, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf2, 0x0f, 0xe6 }, 0, .none, .sse2 },
1413
1414 .{ .cvtpd2pi, .rm, .{ .mm, .xmm_m128 }, .{ 0x66, 0x0f, 0x2d }, 0, .none, .sse2 },
1415
1416 .{ .cvtpd2ps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5a }, 0, .none, .sse2 },
1417
1418 .{ .cvtpi2pd, .rm, .{ .xmm, .mm_m64 }, .{ 0x66, 0x0f, 0x2a }, 0, .none, .sse2 },
1419
1420 .{ .cvtps2dq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5b }, 0, .none, .sse2 },
1421
1422 .{ .cvtps2pd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x0f, 0x5a }, 0, .none, .sse2 },
1423
1424 .{ .cvtsd2si, .rm, .{ .r32, .xmm_m64 }, .{ 0xf2, 0x0f, 0x2d }, 0, .none, .sse2 },
1425 .{ .cvtsd2si, .rm, .{ .r64, .xmm_m64 }, .{ 0xf2, 0x0f, 0x2d }, 0, .long, .sse2 },
1426
1427 .{ .cvtsd2ss, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5a }, 0, .none, .sse2 },
1428
1429 .{ .cvtsi2sd, .rm, .{ .xmm, .rm32 }, .{ 0xf2, 0x0f, 0x2a }, 0, .none, .sse2 },
1430 .{ .cvtsi2sd, .rm, .{ .xmm, .rm64 }, .{ 0xf2, 0x0f, 0x2a }, 0, .long, .sse2 },
1431
1432 .{ .cvtss2sd, .rm, .{ .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5a }, 0, .none, .sse2 },
1433
1434 .{ .cvttpd2dq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe6 }, 0, .none, .sse2 },
1435
1436 .{ .cvttpd2pi, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x2c }, 0, .none, .sse2 },
1437
1438 .{ .cvttps2dq, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf3, 0x0f, 0x5b }, 0, .none, .sse2 },
1439
1440 .{ .cvttsd2si, .rm, .{ .r32, .xmm_m64 }, .{ 0xf2, 0x0f, 0x2c }, 0, .none, .sse2 },
1441 .{ .cvttsd2si, .rm, .{ .r64, .xmm_m64 }, .{ 0xf2, 0x0f, 0x2c }, 0, .long, .sse2 },
1442
1443 .{ .divpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5e }, 0, .none, .sse2 },
1444
1445 .{ .divsd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5e }, 0, .none, .sse2 },
1446
1447 .{ .gf2p8affineinvqb, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0xcf }, 0, .none, .gfni },
1448
1449 .{ .gf2p8affineqb, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0xce }, 0, .none, .gfni },
1450
1451 .{ .gf2p8mulb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xcf }, 0, .none, .gfni },
1452
1453 .{ .maxpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5f }, 0, .none, .sse2 },
1454
1455 .{ .maxsd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5f }, 0, .none, .sse2 },
1456
1457 .{ .minpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5d }, 0, .none, .sse2 },
1458
1459 .{ .minsd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5d }, 0, .none, .sse2 },
1460
1461 .{ .movapd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x28 }, 0, .none, .sse2 },
1462 .{ .movapd, .mr, .{ .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x29 }, 0, .none, .sse2 },
1463
1464 .{ .movd, .rm, .{ .xmm, .rm32 }, .{ 0x66, 0x0f, 0x6e }, 0, .none, .sse2 },
1465 .{ .movq, .rm, .{ .xmm, .rm64 }, .{ 0x66, 0x0f, 0x6e }, 0, .long, .sse2 },
1466 .{ .movd, .mr, .{ .rm32, .xmm }, .{ 0x66, 0x0f, 0x7e }, 0, .none, .sse2 },
1467 .{ .movq, .mr, .{ .rm64, .xmm }, .{ 0x66, 0x0f, 0x7e }, 0, .long, .sse2 },
1468
1469 .{ .movdqa, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6f }, 0, .none, .sse2 },
1470 .{ .movdqa, .mr, .{ .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x7f }, 0, .none, .sse2 },
1471
1472 .{ .movdqu, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf3, 0x0f, 0x6f }, 0, .none, .sse2 },
1473 .{ .movdqu, .mr, .{ .xmm_m128, .xmm }, .{ 0xf3, 0x0f, 0x7f }, 0, .none, .sse2 },
1474
1475 .{ .movhpd, .rm, .{ .xmm, .m64 }, .{ 0x66, 0x0f, 0x16 }, 0, .none, .sse2 },
1476 .{ .movhpd, .mr, .{ .m64, .xmm }, .{ 0x66, 0x0f, 0x17 }, 0, .none, .sse2 },
1477
1478 .{ .movlpd, .rm, .{ .xmm, .m64 }, .{ 0x66, 0x0f, 0x12 }, 0, .none, .sse2 },
1479 .{ .movlpd, .mr, .{ .m64, .xmm }, .{ 0x66, 0x0f, 0x13 }, 0, .none, .sse2 },
1480
1481 .{ .movmskpd, .rm, .{ .r32, .xmm }, .{ 0x66, 0x0f, 0x50 }, 0, .none, .sse2 },
1482 .{ .movmskpd, .rm, .{ .r64, .xmm }, .{ 0x66, 0x0f, 0x50 }, 0, .none, .sse2 },
1483
1484 .{ .movsd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x10 }, 0, .none, .sse2 },
1485 .{ .movsd, .mr, .{ .xmm_m64, .xmm }, .{ 0xf2, 0x0f, 0x11 }, 0, .none, .sse2 },
1486
1487 .{ .movq, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf3, 0x0f, 0x7e }, 0, .none, .sse2 },
1488 .{ .movq, .mr, .{ .xmm_m64, .xmm }, .{ 0x66, 0x0f, 0xd6 }, 0, .none, .sse2 },
1489
1490 .{ .movupd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x10 }, 0, .none, .sse2 },
1491 .{ .movupd, .mr, .{ .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x11 }, 0, .none, .sse2 },
1492
1493 .{ .mulpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x59 }, 0, .none, .sse2 },
1494
1495 .{ .mulsd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x59 }, 0, .none, .sse2 },
1496
1497 .{ .orpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x56 }, 0, .none, .sse2 },
1498
1499 .{ .packsswb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x63 }, 0, .none, .sse2 },
1500 .{ .packssdw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6b }, 0, .none, .sse2 },
1501
1502 .{ .packuswb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x67 }, 0, .none, .sse2 },
1503
1504 .{ .paddb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfc }, 0, .none, .sse2 },
1505 .{ .paddw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfd }, 0, .none, .sse2 },
1506 .{ .paddd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfe }, 0, .none, .sse2 },
1507 .{ .paddq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd4 }, 0, .none, .sse2 },
1508
1509 .{ .paddsb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xec }, 0, .none, .sse2 },
1510 .{ .paddsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xed }, 0, .none, .sse2 },
1511
1512 .{ .paddusb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xdc }, 0, .none, .sse2 },
1513 .{ .paddusw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xdd }, 0, .none, .sse2 },
1514
1515 .{ .pand, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xdb }, 0, .none, .sse2 },
1516
1517 .{ .pandn, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xdf }, 0, .none, .sse2 },
1518
1519 .{ .pcmpeqb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x74 }, 0, .none, .sse2 },
1520 .{ .pcmpeqw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x75 }, 0, .none, .sse2 },
1521 .{ .pcmpeqd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x76 }, 0, .none, .sse2 },
1522
1523 .{ .pcmpgtb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x64 }, 0, .none, .sse2 },
1524 .{ .pcmpgtw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x65 }, 0, .none, .sse2 },
1525 .{ .pcmpgtd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x66 }, 0, .none, .sse2 },
1526
1527 .{ .pextrw, .rmi, .{ .r32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0xc5 }, 0, .none, .sse2 },
1528
1529 .{ .pinsrw, .rmi, .{ .xmm, .r32_m16, .imm8 }, .{ 0x66, 0x0f, 0xc4 }, 0, .none, .sse2 },
1530
1531 .{ .pmaxsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xee }, 0, .none, .sse2 },
1532
1533 .{ .pmaxub, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xde }, 0, .none, .sse2 },
1534
1535 .{ .pminsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xea }, 0, .none, .sse2 },
1536
1537 .{ .pminub, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xda }, 0, .none, .sse2 },
1538
1539 .{ .pmulhw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe5 }, 0, .none, .sse2 },
1540
1541 .{ .pmullw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd5 }, 0, .none, .sse2 },
1542
1543 .{ .por, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xeb }, 0, .none, .sse2 },
1544
1545 .{ .pshufd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .none, .sse2 },
1546
1547 .{ .pshufhw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf3, 0x0f, 0x70 }, 0, .none, .sse2 },
1548
1549 .{ .pshuflw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf2, 0x0f, 0x70 }, 0, .none, .sse2 },
1550
1551 .{ .psllw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .none, .sse2 },
1552 .{ .psllw, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .none, .sse2 },
1553 .{ .pslld, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf2 }, 0, .none, .sse2 },
1554 .{ .pslld, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 6, .none, .sse2 },
1555 .{ .psllq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf3 }, 0, .none, .sse2 },
1556 .{ .psllq, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 6, .none, .sse2 },
1557
1558 .{ .pslldq, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 7, .none, .sse2 },
1559
1560 .{ .psraw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe1 }, 0, .none, .sse2 },
1561 .{ .psraw, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 4, .none, .sse2 },
1562 .{ .psrad, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe2 }, 0, .none, .sse2 },
1563 .{ .psrad, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 4, .none, .sse2 },
1564
1565 .{ .psrlw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd1 }, 0, .none, .sse2 },
1566 .{ .psrlw, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 2, .none, .sse2 },
1567 .{ .psrld, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd2 }, 0, .none, .sse2 },
1568 .{ .psrld, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 2, .none, .sse2 },
1569 .{ .psrlq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd3 }, 0, .none, .sse2 },
1570 .{ .psrlq, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 2, .none, .sse2 },
1571
1572 .{ .psrldq, .mi, .{ .xmm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 3, .none, .sse2 },
1573
1574 .{ .psubb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf8 }, 0, .none, .sse2 },
1575 .{ .psubw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf9 }, 0, .none, .sse2 },
1576 .{ .psubd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfa }, 0, .none, .sse2 },
1577
1578 .{ .psubsb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe8 }, 0, .none, .sse2 },
1579 .{ .psubsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe9 }, 0, .none, .sse2 },
1580
1581 .{ .psubq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfb }, 0, .none, .sse2 },
1582
1583 .{ .psubusb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd8 }, 0, .none, .sse2 },
1584 .{ .psubusw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd9 }, 0, .none, .sse2 },
1585
1586 .{ .punpckhbw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x68 }, 0, .none, .sse2 },
1587 .{ .punpckhwd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x69 }, 0, .none, .sse2 },
1588 .{ .punpckhdq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6a }, 0, .none, .sse2 },
1589 .{ .punpckhqdq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6d }, 0, .none, .sse2 },
1590
1591 .{ .punpcklbw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x60 }, 0, .none, .sse2 },
1592 .{ .punpcklwd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x61 }, 0, .none, .sse2 },
1593 .{ .punpckldq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x62 }, 0, .none, .sse2 },
1594 .{ .punpcklqdq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6c }, 0, .none, .sse2 },
1595
1596 .{ .pxor, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xef }, 0, .none, .sse2 },
1597
1598 .{ .shufpd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0xc6 }, 0, .none, .sse2 },
1599
1600 .{ .sqrtpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x51 }, 0, .none, .sse2 },
1601
1602 .{ .sqrtsd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x51 }, 0, .none, .sse2 },
1603
1604 .{ .subpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5c }, 0, .none, .sse2 },
1605
1606 .{ .subsd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5c }, 0, .none, .sse2 },
1607
1608 .{ .ucomisd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x2e }, 0, .none, .sse2 },
1609
1610 .{ .unpckhpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x15 }, 0, .none, .sse2 },
1611
1612 .{ .unpcklpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x14 }, 0, .none, .sse2 },
1613
1614 .{ .xorpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x57 }, 0, .none, .sse2 },
1615
1616 // SSE3
1617 .{ .addsubpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd0 }, 0, .none, .sse3 },
1618
1619 .{ .addsubps, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf2, 0x0f, 0xd0 }, 0, .none, .sse3 },
1620
1621 .{ .haddpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x7c }, 0, .none, .sse3 },
1622
1623 .{ .haddps, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf2, 0x0f, 0x7c }, 0, .none, .sse3 },
1624
1625 .{ .lddqu, .rm, .{ .xmm, .m128 }, .{ 0xf2, 0x0f, 0xf0 }, 0, .none, .sse3 },
1626
1627 .{ .movddup, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x12 }, 0, .none, .sse3 },
1628
1629 .{ .movshdup, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf3, 0x0f, 0x16 }, 0, .none, .sse3 },
1630
1631 .{ .movsldup, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf3, 0x0f, 0x12 }, 0, .none, .sse3 },
1632
1633 // SSSE3
1634 .{ .pabsb, .rm, .{ .mm, .mm_m64 }, .{ 0x0f, 0x38, 0x1c }, 0, .none, .ssse3 },
1635 .{ .pabsb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x1c }, 0, .none, .ssse3 },
1636 .{ .pabsd, .rm, .{ .mm, .mm_m64 }, .{ 0x0f, 0x38, 0x1e }, 0, .none, .ssse3 },
1637 .{ .pabsd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x1e }, 0, .none, .ssse3 },
1638 .{ .pabsw, .rm, .{ .mm, .mm_m64 }, .{ 0x0f, 0x38, 0x1d }, 0, .none, .ssse3 },
1639 .{ .pabsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x1d }, 0, .none, .ssse3 },
1640
1641 .{ .palignr, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0f }, 0, .none, .ssse3 },
1642
1643 .{ .pshufb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .none, .ssse3 },
1644
1645 // SSE4.1
1646 .{ .blendpd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .none, .sse4_1 },
1647
1648 .{ .blendps, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0c }, 0, .none, .sse4_1 },
1649
1650 .{ .blendvpd, .rm0, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x15 }, 0, .none, .sse4_1 },
1651 .{ .blendvpd, .rm0, .{ .xmm, .xmm_m128, .xmm0 }, .{ 0x66, 0x0f, 0x38, 0x15 }, 0, .none, .sse4_1 },
1652
1653 .{ .blendvps, .rm0, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x14 }, 0, .none, .sse4_1 },
1654 .{ .blendvps, .rm0, .{ .xmm, .xmm_m128, .xmm0 }, .{ 0x66, 0x0f, 0x38, 0x14 }, 0, .none, .sse4_1 },
1655
1656 .{ .dppd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x41 }, 0, .none, .sse4_1 },
1657
1658 .{ .dpps, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x40 }, 0, .none, .sse4_1 },
1659
1660 .{ .extractps, .mri, .{ .rm32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x17 }, 0, .none, .sse4_1 },
1661
1662 .{ .insertps, .rmi, .{ .xmm, .xmm_m32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x21 }, 0, .none, .sse4_1 },
1663
1664 .{ .packusdw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x2b }, 0, .none, .sse4_1 },
1665
1666 .{ .pblendvb, .rm0, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x10 }, 0, .none, .sse4_1 },
1667 .{ .pblendvb, .rm0, .{ .xmm, .xmm_m128, .xmm0 }, .{ 0x66, 0x0f, 0x38, 0x10 }, 0, .none, .sse4_1 },
1668
1669 .{ .pblendw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0e }, 0, .none, .sse4_1 },
1670
1671 .{ .pcmpeqq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x29 }, 0, .none, .sse4_1 },
1672
1673 .{ .pextrb, .mri, .{ .r32_m8, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x14 }, 0, .none, .sse4_1 },
1674 .{ .pextrd, .mri, .{ .rm32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x16 }, 0, .none, .sse4_1 },
1675 .{ .pextrq, .mri, .{ .rm64, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x16 }, 0, .long, .sse4_1 },
1676
1677 .{ .pextrw, .mri, .{ .r32_m16, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x15 }, 0, .none, .sse4_1 },
1678
1679 .{ .pinsrb, .rmi, .{ .xmm, .r32_m8, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .none, .sse4_1 },
1680 .{ .pinsrd, .rmi, .{ .xmm, .rm32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .none, .sse4_1 },
1681 .{ .pinsrq, .rmi, .{ .xmm, .rm64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .long, .sse4_1 },
1682
1683 .{ .pmaxsb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3c }, 0, .none, .sse4_1 },
1684 .{ .pmaxsd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3d }, 0, .none, .sse4_1 },
1685
1686 .{ .pmaxuw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3e }, 0, .none, .sse4_1 },
1687
1688 .{ .pmaxud, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3f }, 0, .none, .sse4_1 },
1689
1690 .{ .pminsb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x38 }, 0, .none, .sse4_1 },
1691 .{ .pminsd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x39 }, 0, .none, .sse4_1 },
1692
1693 .{ .pminuw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3a }, 0, .none, .sse4_1 },
1694
1695 .{ .pminud, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3b }, 0, .none, .sse4_1 },
1696
1697 .{ .pmovsxbw, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x20 }, 0, .none, .sse4_1 },
1698 .{ .pmovsxbd, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x21 }, 0, .none, .sse4_1 },
1699 .{ .pmovsxbq, .rm, .{ .xmm, .xmm_m16 }, .{ 0x66, 0x0f, 0x38, 0x22 }, 0, .none, .sse4_1 },
1700 .{ .pmovsxwd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x23 }, 0, .none, .sse4_1 },
1701 .{ .pmovsxwq, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x24 }, 0, .none, .sse4_1 },
1702 .{ .pmovsxdq, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x25 }, 0, .none, .sse4_1 },
1703
1704 .{ .pmovzxbw, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x30 }, 0, .none, .sse4_1 },
1705 .{ .pmovzxbd, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x31 }, 0, .none, .sse4_1 },
1706 .{ .pmovzxbq, .rm, .{ .xmm, .xmm_m16 }, .{ 0x66, 0x0f, 0x38, 0x32 }, 0, .none, .sse4_1 },
1707 .{ .pmovzxwd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x33 }, 0, .none, .sse4_1 },
1708 .{ .pmovzxwq, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x34 }, 0, .none, .sse4_1 },
1709 .{ .pmovzxdq, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x35 }, 0, .none, .sse4_1 },
1710
1711 .{ .pmulld, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .none, .sse4_1 },
1712
1713 .{ .ptest, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x17 }, 0, .none, .sse4_1 },
1714
1715 .{ .roundpd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x09 }, 0, .none, .sse4_1 },
1716
1717 .{ .roundps, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x08 }, 0, .none, .sse4_1 },
1718
1719 .{ .roundsd, .rmi, .{ .xmm, .xmm_m64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0b }, 0, .none, .sse4_1 },
1720
1721 .{ .roundss, .rmi, .{ .xmm, .xmm_m32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0a }, 0, .none, .sse4_1 },
1722
1723 // SSE4.2
1724 .{ .crc32, .rm, .{ .r32, .rm8 }, .{ 0xf2, 0x0f, 0x38, 0xf0 }, 0, .none, .crc32 },
1725 .{ .crc32, .rm, .{ .r32, .rm8 }, .{ 0xf2, 0x0f, 0x38, 0xf0 }, 0, .rex, .crc32 },
1726 .{ .crc32, .rm, .{ .r32, .rm16 }, .{ 0xf2, 0x0f, 0x38, 0xf1 }, 0, .short, .crc32 },
1727 .{ .crc32, .rm, .{ .r32, .rm32 }, .{ 0xf2, 0x0f, 0x38, 0xf1 }, 0, .none, .crc32 },
1728 .{ .crc32, .rm, .{ .r64, .rm8 }, .{ 0xf2, 0x0f, 0x38, 0xf0 }, 0, .long, .crc32 },
1729 .{ .crc32, .rm, .{ .r64, .rm64 }, .{ 0xf2, 0x0f, 0x38, 0xf1 }, 0, .long, .crc32 },
1730
1731 .{ .pcmpgtq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x37 }, 0, .none, .sse4_2 },
1732
1733 // ABM
1734 .{ .lzcnt, .rm, .{ .r16, .rm16 }, .{ 0xf3, 0x0f, 0xbd }, 0, .short, .lzcnt },
1735 .{ .lzcnt, .rm, .{ .r32, .rm32 }, .{ 0xf3, 0x0f, 0xbd }, 0, .none, .lzcnt },
1736 .{ .lzcnt, .rm, .{ .r64, .rm64 }, .{ 0xf3, 0x0f, 0xbd }, 0, .long, .lzcnt },
1737
1738 .{ .popcnt, .rm, .{ .r16, .rm16 }, .{ 0xf3, 0x0f, 0xb8 }, 0, .short, .popcnt },
1739 .{ .popcnt, .rm, .{ .r32, .rm32 }, .{ 0xf3, 0x0f, 0xb8 }, 0, .none, .popcnt },
1740 .{ .popcnt, .rm, .{ .r64, .rm64 }, .{ 0xf3, 0x0f, 0xb8 }, 0, .long, .popcnt },
1741
1742 // PCLMUL
1743 .{ .pclmulqdq, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x44 }, 0, .none, .pclmul },
1744
1745 // AES
1746 .{ .aesdec, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xde }, 0, .none, .aes },
1747
1748 .{ .aesdeclast, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xdf }, 0, .none, .aes },
1749
1750 .{ .aesenc, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xdc }, 0, .none, .aes },
1751
1752 .{ .aesenclast, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xdd }, 0, .none, .aes },
1753
1754 .{ .aesimc, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xdb }, 0, .none, .aes },
1755
1756 .{ .aeskeygenassist, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0xdf }, 0, .none, .aes },
1757
1758 // SHA
1759 .{ .sha1rnds4, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x0f, 0x3a, 0xcc }, 0, .none, .sha },
1760
1761 .{ .sha1nexte, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x38, 0xc8 }, 0, .none, .sha },
1762
1763 .{ .sha1msg1, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x38, 0xc9 }, 0, .none, .sha },
1764
1765 .{ .sha1msg2, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x38, 0xca }, 0, .none, .sha },
1766
1767 .{ .sha256rnds2, .rm0, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x38, 0xcb }, 0, .none, .sha },
1768 .{ .sha256rnds2, .rm0, .{ .xmm, .xmm_m128, .xmm0 }, .{ 0x0f, 0x38, 0xcb }, 0, .none, .sha },
1769
1770 .{ .sha256msg1, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x38, 0xcc }, 0, .none, .sha },
1771
1772 .{ .sha256msg2, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x38, 0xcd }, 0, .none, .sha },
1773
1774 // AVX
1775 .{ .vaddpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x58 }, 0, .vex_128_wig, .avx },
1776 .{ .vaddpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x58 }, 0, .vex_256_wig, .avx },
1777
1778 .{ .vaddps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x58 }, 0, .vex_128_wig, .avx },
1779 .{ .vaddps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x58 }, 0, .vex_256_wig, .avx },
1780
1781 .{ .vaddsd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x58 }, 0, .vex_lig_wig, .avx },
1782
1783 .{ .vaddss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x58 }, 0, .vex_lig_wig, .avx },
1784
1785 .{ .vaddsubpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd0 }, 0, .vex_128_wig, .avx },
1786 .{ .vaddsubpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xd0 }, 0, .vex_256_wig, .avx },
1787
1788 .{ .vaddsubps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0xf2, 0x0f, 0xd0 }, 0, .vex_128_wig, .avx },
1789 .{ .vaddsubps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0xf2, 0x0f, 0xd0 }, 0, .vex_256_wig, .avx },
1790
1791 .{ .vaesdec, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xde }, 0, .vex_128_wig, .@"aes avx" },
1792
1793 .{ .vaesdeclast, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xdf }, 0, .vex_128_wig, .@"aes avx" },
1794
1795 .{ .vaesenc, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xdc }, 0, .vex_128_wig, .@"aes avx" },
1796
1797 .{ .vaesenclast, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xdd }, 0, .vex_128_wig, .@"aes avx" },
1798
1799 .{ .vaesimc, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xdb }, 0, .vex_128_wig, .@"aes avx" },
1800
1801 .{ .vaeskeygenassist, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0xdf }, 0, .vex_128_wig, .@"aes avx" },
1802
1803 .{ .vandnpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x55 }, 0, .vex_128_wig, .avx },
1804 .{ .vandnpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x55 }, 0, .vex_256_wig, .avx },
1805
1806 .{ .vandnps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x55 }, 0, .vex_128_wig, .avx },
1807 .{ .vandnps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x55 }, 0, .vex_256_wig, .avx },
1808
1809 .{ .vandpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x54 }, 0, .vex_128_wig, .avx },
1810 .{ .vandpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x54 }, 0, .vex_256_wig, .avx },
1811
1812 .{ .vandps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x54 }, 0, .vex_128_wig, .avx },
1813 .{ .vandps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x54 }, 0, .vex_256_wig, .avx },
1814
1815 .{ .vblendpd, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .vex_128_wig, .avx },
1816 .{ .vblendpd, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .vex_256_wig, .avx },
1817
1818 .{ .vblendps, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0c }, 0, .vex_128_wig, .avx },
1819 .{ .vblendps, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0c }, 0, .vex_256_wig, .avx },
1820
1821 .{ .vblendvpd, .rvmr, .{ .xmm, .xmm, .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x3a, 0x4b }, 0, .vex_128_w0, .avx },
1822 .{ .vblendvpd, .rvmr, .{ .ymm, .ymm, .ymm_m256, .ymm }, .{ 0x66, 0x0f, 0x3a, 0x4b }, 0, .vex_256_w0, .avx },
1823
1824 .{ .vblendvps, .rvmr, .{ .xmm, .xmm, .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x3a, 0x4a }, 0, .vex_128_w0, .avx },
1825 .{ .vblendvps, .rvmr, .{ .ymm, .ymm, .ymm_m256, .ymm }, .{ 0x66, 0x0f, 0x3a, 0x4a }, 0, .vex_256_w0, .avx },
1826
1827 .{ .vbroadcastss, .rm, .{ .xmm, .m32 }, .{ 0x66, 0x0f, 0x38, 0x18 }, 0, .vex_128_w0, .avx },
1828 .{ .vbroadcastss, .rm, .{ .ymm, .m32 }, .{ 0x66, 0x0f, 0x38, 0x18 }, 0, .vex_256_w0, .avx },
1829 .{ .vbroadcastsd, .rm, .{ .ymm, .m64 }, .{ 0x66, 0x0f, 0x38, 0x19 }, 0, .vex_256_w0, .avx },
1830 .{ .vbroadcastf128, .rm, .{ .ymm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x1a }, 0, .vex_256_w0, .avx },
1831
1832 .{ .vcmppd, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0xc2 }, 0, .vex_128_wig, .avx },
1833 .{ .vcmppd, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0xc2 }, 0, .vex_256_wig, .avx },
1834
1835 .{ .vcmpps, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x0f, 0xc2 }, 0, .vex_128_wig, .avx },
1836 .{ .vcmpps, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x0f, 0xc2 }, 0, .vex_256_wig, .avx },
1837
1838 .{ .vcmpsd, .rvmi, .{ .xmm, .xmm, .xmm_m64, .imm8 }, .{ 0xf2, 0x0f, 0xc2 }, 0, .vex_lig_wig, .avx },
1839
1840 .{ .vcmpss, .rvmi, .{ .xmm, .xmm, .xmm_m32, .imm8 }, .{ 0xf3, 0x0f, 0xc2 }, 0, .vex_lig_wig, .avx },
1841
1842 .{ .vcomisd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x2f }, 0, .vex_lig_wig, .avx },
1843
1844 .{ .vcomiss, .rm, .{ .xmm, .xmm_m32 }, .{ 0x0f, 0x2f }, 0, .vex_lig_wig, .avx },
1845
1846 .{ .vcvtdq2pd, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf3, 0x0f, 0xe6 }, 0, .vex_128_wig, .avx },
1847 .{ .vcvtdq2pd, .rm, .{ .ymm, .xmm_m128 }, .{ 0xf3, 0x0f, 0xe6 }, 0, .vex_256_wig, .avx },
1848
1849 .{ .vcvtdq2ps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x5b }, 0, .vex_128_wig, .avx },
1850 .{ .vcvtdq2ps, .rm, .{ .ymm, .ymm_m256 }, .{ 0x0f, 0x5b }, 0, .vex_256_wig, .avx },
1851
1852 .{ .vcvtpd2dq, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf2, 0x0f, 0xe6 }, 0, .vex_128_wig, .avx },
1853 .{ .vcvtpd2dq, .rm, .{ .xmm, .ymm_m256 }, .{ 0xf2, 0x0f, 0xe6 }, 0, .vex_256_wig, .avx },
1854
1855 .{ .vcvtpd2ps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5a }, 0, .vex_128_wig, .avx },
1856 .{ .vcvtpd2ps, .rm, .{ .xmm, .ymm_m256 }, .{ 0x66, 0x0f, 0x5a }, 0, .vex_256_wig, .avx },
1857
1858 .{ .vcvtps2dq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5b }, 0, .vex_128_wig, .avx },
1859 .{ .vcvtps2dq, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x5b }, 0, .vex_256_wig, .avx },
1860
1861 .{ .vcvtps2pd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x0f, 0x5a }, 0, .vex_128_wig, .avx },
1862 .{ .vcvtps2pd, .rm, .{ .ymm, .xmm_m128 }, .{ 0x0f, 0x5a }, 0, .vex_256_wig, .avx },
1863
1864 .{ .vcvtsd2si, .rm, .{ .r32, .xmm_m64 }, .{ 0xf2, 0x0f, 0x2d }, 0, .vex_lig_w0, .sse2 },
1865 .{ .vcvtsd2si, .rm, .{ .r64, .xmm_m64 }, .{ 0xf2, 0x0f, 0x2d }, 0, .vex_lig_w1, .sse2 },
1866
1867 .{ .vcvtsd2ss, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5a }, 0, .vex_lig_wig, .avx },
1868
1869 .{ .vcvtsi2sd, .rvm, .{ .xmm, .xmm, .rm32 }, .{ 0xf2, 0x0f, 0x2a }, 0, .vex_lig_w0, .avx },
1870 .{ .vcvtsi2sd, .rvm, .{ .xmm, .xmm, .rm64 }, .{ 0xf2, 0x0f, 0x2a }, 0, .vex_lig_w1, .avx },
1871
1872 .{ .vcvtsi2ss, .rvm, .{ .xmm, .xmm, .rm32 }, .{ 0xf3, 0x0f, 0x2a }, 0, .vex_lig_w0, .avx },
1873 .{ .vcvtsi2ss, .rvm, .{ .xmm, .xmm, .rm64 }, .{ 0xf3, 0x0f, 0x2a }, 0, .vex_lig_w1, .avx },
1874
1875 .{ .vcvtss2sd, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5a }, 0, .vex_lig_wig, .avx },
1876
1877 .{ .vcvtss2si, .rm, .{ .r32, .xmm_m32 }, .{ 0xf3, 0x0f, 0x2d }, 0, .vex_lig_w0, .avx },
1878 .{ .vcvtss2si, .rm, .{ .r64, .xmm_m32 }, .{ 0xf3, 0x0f, 0x2d }, 0, .vex_lig_w1, .avx },
1879
1880 .{ .vcvttpd2dq, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe6 }, 0, .vex_128_wig, .avx },
1881 .{ .vcvttpd2dq, .rm, .{ .xmm, .ymm_m256 }, .{ 0x66, 0x0f, 0xe6 }, 0, .vex_256_wig, .avx },
1882
1883 .{ .vcvttps2dq, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf3, 0x0f, 0x5b }, 0, .vex_128_wig, .avx },
1884 .{ .vcvttps2dq, .rm, .{ .ymm, .ymm_m256 }, .{ 0xf3, 0x0f, 0x5b }, 0, .vex_256_wig, .avx },
1885
1886 .{ .vcvttsd2si, .rm, .{ .r32, .xmm_m64 }, .{ 0xf2, 0x0f, 0x2c }, 0, .vex_lig_w0, .sse2 },
1887 .{ .vcvttsd2si, .rm, .{ .r64, .xmm_m64 }, .{ 0xf2, 0x0f, 0x2c }, 0, .vex_lig_w1, .sse2 },
1888
1889 .{ .vcvttss2si, .rm, .{ .r32, .xmm_m32 }, .{ 0xf3, 0x0f, 0x2c }, 0, .vex_lig_w0, .avx },
1890 .{ .vcvttss2si, .rm, .{ .r64, .xmm_m32 }, .{ 0xf3, 0x0f, 0x2c }, 0, .vex_lig_w1, .avx },
1891
1892 .{ .vdppd, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x41 }, 0, .vex_128_wig, .avx },
1893
1894 .{ .vdpps, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x40 }, 0, .vex_128_wig, .avx },
1895 .{ .vdpps, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x40 }, 0, .vex_256_wig, .avx },
1896
1897 .{ .vdivpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5e }, 0, .vex_128_wig, .avx },
1898 .{ .vdivpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x5e }, 0, .vex_256_wig, .avx },
1899
1900 .{ .vdivps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x5e }, 0, .vex_128_wig, .avx },
1901 .{ .vdivps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x5e }, 0, .vex_256_wig, .avx },
1902
1903 .{ .vdivsd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5e }, 0, .vex_lig_wig, .avx },
1904
1905 .{ .vdivss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5e }, 0, .vex_lig_wig, .avx },
1906
1907 .{ .vextractf128, .mri, .{ .xmm_m128, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x19 }, 0, .vex_256_w0, .avx },
1908
1909 .{ .vextractps, .mri, .{ .rm32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x17 }, 0, .vex_128_wig, .avx },
1910
1911 .{ .vgf2p8affineinvqb, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0xcf }, 0, .vex_128_w1, .@"gfni avx" },
1912 .{ .vgf2p8affineinvqb, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0xcf }, 0, .vex_256_w1, .@"gfni avx" },
1913
1914 .{ .vgf2p8affineqb, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0xce }, 0, .vex_128_w1, .@"gfni avx" },
1915 .{ .vgf2p8affineqb, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0xce }, 0, .vex_256_w1, .@"gfni avx" },
1916
1917 .{ .vgf2p8mulb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xcf }, 0, .vex_128_w0, .@"gfni avx" },
1918 .{ .vgf2p8mulb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xcf }, 0, .vex_256_w0, .@"gfni avx" },
1919
1920 .{ .vhaddpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x7c }, 0, .vex_128_wig, .avx },
1921 .{ .vhaddpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x7c }, 0, .vex_256_wig, .avx },
1922
1923 .{ .vhaddps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0xf2, 0x0f, 0x7c }, 0, .vex_128_wig, .avx },
1924 .{ .vhaddps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0xf2, 0x0f, 0x7c }, 0, .vex_256_wig, .avx },
1925
1926 .{ .vinsertf128, .rvmi, .{ .ymm, .ymm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x18 }, 0, .vex_256_w0, .avx },
1927
1928 .{ .vinsertps, .rvmi, .{ .xmm, .xmm, .xmm_m32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x21 }, 0, .vex_128_wig, .avx },
1929
1930 .{ .vlddqu, .rm, .{ .xmm, .m128 }, .{ 0xf2, 0x0f, 0xf0 }, 0, .vex_128_wig, .avx },
1931 .{ .vlddqu, .rm, .{ .ymm, .m256 }, .{ 0xf2, 0x0f, 0xf0 }, 0, .vex_256_wig, .avx },
1932
1933 .{ .vldmxcsr, .m, .{ .m32 }, .{ 0x0f, 0xae }, 2, .vex_lz_wig, .avx },
1934
1935 .{ .vmaskmovps, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x2c }, 0, .vex_128_w0, .avx },
1936 .{ .vmaskmovps, .rvm, .{ .ymm, .ymm, .m256 }, .{ 0x66, 0x0f, 0x38, 0x2c }, 0, .vex_256_w0, .avx },
1937 .{ .vmaskmovpd, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x2d }, 0, .vex_128_w0, .avx },
1938 .{ .vmaskmovpd, .rvm, .{ .ymm, .ymm, .m256 }, .{ 0x66, 0x0f, 0x38, 0x2d }, 0, .vex_256_w0, .avx },
1939 .{ .vmaskmovps, .mvr, .{ .m128, .xmm, .xmm }, .{ 0x66, 0x0f, 0x38, 0x2e }, 0, .vex_128_w0, .avx },
1940 .{ .vmaskmovps, .mvr, .{ .m256, .ymm, .ymm }, .{ 0x66, 0x0f, 0x38, 0x2e }, 0, .vex_256_w0, .avx },
1941 .{ .vmaskmovpd, .mvr, .{ .m128, .xmm, .xmm }, .{ 0x66, 0x0f, 0x38, 0x2f }, 0, .vex_128_w0, .avx },
1942 .{ .vmaskmovpd, .mvr, .{ .m256, .ymm, .ymm }, .{ 0x66, 0x0f, 0x38, 0x2f }, 0, .vex_256_w0, .avx },
1943
1944 .{ .vmaxpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5f }, 0, .vex_128_wig, .avx },
1945 .{ .vmaxpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x5f }, 0, .vex_256_wig, .avx },
1946
1947 .{ .vmaxps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x5f }, 0, .vex_128_wig, .avx },
1948 .{ .vmaxps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x5f }, 0, .vex_256_wig, .avx },
1949
1950 .{ .vmaxsd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5f }, 0, .vex_lig_wig, .avx },
1951
1952 .{ .vmaxss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5f }, 0, .vex_lig_wig, .avx },
1953
1954 .{ .vmovmskps, .rm, .{ .r32, .xmm }, .{ 0x0f, 0x50 }, 0, .vex_128_wig, .avx },
1955 .{ .vmovmskps, .rm, .{ .r64, .xmm }, .{ 0x0f, 0x50 }, 0, .vex_128_wig, .avx },
1956 .{ .vmovmskps, .rm, .{ .r32, .ymm }, .{ 0x0f, 0x50 }, 0, .vex_256_wig, .avx },
1957 .{ .vmovmskps, .rm, .{ .r64, .ymm }, .{ 0x0f, 0x50 }, 0, .vex_256_wig, .avx },
1958
1959 .{ .vmovmskpd, .rm, .{ .r32, .xmm }, .{ 0x66, 0x0f, 0x50 }, 0, .vex_128_wig, .avx },
1960 .{ .vmovmskpd, .rm, .{ .r64, .xmm }, .{ 0x66, 0x0f, 0x50 }, 0, .vex_128_wig, .avx },
1961 .{ .vmovmskpd, .rm, .{ .r32, .ymm }, .{ 0x66, 0x0f, 0x50 }, 0, .vex_256_wig, .avx },
1962 .{ .vmovmskpd, .rm, .{ .r64, .ymm }, .{ 0x66, 0x0f, 0x50 }, 0, .vex_256_wig, .avx },
1963
1964 .{ .vminpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5d }, 0, .vex_128_wig, .avx },
1965 .{ .vminpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x5d }, 0, .vex_256_wig, .avx },
1966
1967 .{ .vminps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x5d }, 0, .vex_128_wig, .avx },
1968 .{ .vminps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x5d }, 0, .vex_256_wig, .avx },
1969
1970 .{ .vminsd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5d }, 0, .vex_lig_wig, .avx },
1971
1972 .{ .vminss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5d }, 0, .vex_lig_wig, .avx },
1973
1974 .{ .vmovapd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x28 }, 0, .vex_128_wig, .avx },
1975 .{ .vmovapd, .mr, .{ .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x29 }, 0, .vex_128_wig, .avx },
1976 .{ .vmovapd, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x28 }, 0, .vex_256_wig, .avx },
1977 .{ .vmovapd, .mr, .{ .ymm_m256, .ymm }, .{ 0x66, 0x0f, 0x29 }, 0, .vex_256_wig, .avx },
1978
1979 .{ .vmovaps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x28 }, 0, .vex_128_wig, .avx },
1980 .{ .vmovaps, .mr, .{ .xmm_m128, .xmm }, .{ 0x0f, 0x29 }, 0, .vex_128_wig, .avx },
1981 .{ .vmovaps, .rm, .{ .ymm, .ymm_m256 }, .{ 0x0f, 0x28 }, 0, .vex_256_wig, .avx },
1982 .{ .vmovaps, .mr, .{ .ymm_m256, .ymm }, .{ 0x0f, 0x29 }, 0, .vex_256_wig, .avx },
1983
1984 .{ .vmovd, .rm, .{ .xmm, .rm32 }, .{ 0x66, 0x0f, 0x6e }, 0, .vex_128_w0, .avx },
1985 .{ .vmovq, .rm, .{ .xmm, .rm64 }, .{ 0x66, 0x0f, 0x6e }, 0, .vex_128_w1, .avx },
1986 .{ .vmovd, .mr, .{ .rm32, .xmm }, .{ 0x66, 0x0f, 0x7e }, 0, .vex_128_w0, .avx },
1987 .{ .vmovq, .mr, .{ .rm64, .xmm }, .{ 0x66, 0x0f, 0x7e }, 0, .vex_128_w1, .avx },
1988
1989 .{ .vmovddup, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
1990 .{ .vmovddup, .rm, .{ .ymm, .ymm_m256 }, .{ 0xf2, 0x0f, 0x12 }, 0, .vex_256_wig, .avx },
1991
1992 .{ .vmovdqa, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6f }, 0, .vex_128_wig, .avx },
1993 .{ .vmovdqa, .mr, .{ .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x7f }, 0, .vex_128_wig, .avx },
1994 .{ .vmovdqa, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x6f }, 0, .vex_256_wig, .avx },
1995 .{ .vmovdqa, .mr, .{ .ymm_m256, .ymm }, .{ 0x66, 0x0f, 0x7f }, 0, .vex_256_wig, .avx },
1996
1997 .{ .vmovdqu, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf3, 0x0f, 0x6f }, 0, .vex_128_wig, .avx },
1998 .{ .vmovdqu, .mr, .{ .xmm_m128, .xmm }, .{ 0xf3, 0x0f, 0x7f }, 0, .vex_128_wig, .avx },
1999 .{ .vmovdqu, .rm, .{ .ymm, .ymm_m256 }, .{ 0xf3, 0x0f, 0x6f }, 0, .vex_256_wig, .avx },
2000 .{ .vmovdqu, .mr, .{ .ymm_m256, .ymm }, .{ 0xf3, 0x0f, 0x7f }, 0, .vex_256_wig, .avx },
2001
2002 .{ .vmovhlps, .rvm, .{ .xmm, .xmm, .xmm }, .{ 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2003
2004 .{ .vmovhpd, .rvm, .{ .xmm, .xmm, .m64 }, .{ 0x66, 0x0f, 0x16 }, 0, .vex_128_wig, .avx },
2005 .{ .vmovhpd, .mr, .{ .m64, .xmm }, .{ 0x66, 0x0f, 0x17 }, 0, .vex_128_wig, .avx },
2006
2007 .{ .vmovhps, .rvm, .{ .xmm, .xmm, .m64 }, .{ 0x0f, 0x16 }, 0, .vex_128_wig, .avx },
2008 .{ .vmovhps, .mr, .{ .m64, .xmm }, .{ 0x0f, 0x17 }, 0, .vex_128_wig, .avx },
2009
2010 .{ .vmovlhps, .rvm, .{ .xmm, .xmm, .xmm }, .{ 0x0f, 0x16 }, 0, .vex_128_wig, .avx },
2011
2012 .{ .vmovlpd, .rvm, .{ .xmm, .xmm, .m64 }, .{ 0x66, 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2013 .{ .vmovlpd, .mr, .{ .m64, .xmm }, .{ 0x66, 0x0f, 0x13 }, 0, .vex_128_wig, .avx },
2014
2015 .{ .vmovlps, .rvm, .{ .xmm, .xmm, .m64 }, .{ 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2016 .{ .vmovlps, .mr, .{ .m64, .xmm }, .{ 0x0f, 0x13 }, 0, .vex_128_wig, .avx },
2017
2018 .{ .vmovq, .rm, .{ .xmm, .xmm_m64 }, .{ 0xf3, 0x0f, 0x7e }, 0, .vex_128_wig, .avx },
2019 .{ .vmovq, .mr, .{ .xmm_m64, .xmm }, .{ 0x66, 0x0f, 0xd6 }, 0, .vex_128_wig, .avx },
2020
2021 .{ .vmovsd, .rvm, .{ .xmm, .xmm, .xmm }, .{ 0xf2, 0x0f, 0x10 }, 0, .vex_lig_wig, .avx },
2022 .{ .vmovsd, .rm, .{ .xmm, .m64 }, .{ 0xf2, 0x0f, 0x10 }, 0, .vex_lig_wig, .avx },
2023 .{ .vmovsd, .mvr, .{ .xmm, .xmm, .xmm }, .{ 0xf2, 0x0f, 0x11 }, 0, .vex_lig_wig, .avx },
2024 .{ .vmovsd, .mr, .{ .m64, .xmm }, .{ 0xf2, 0x0f, 0x11 }, 0, .vex_lig_wig, .avx },
2025
2026 .{ .vmovshdup, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf3, 0x0f, 0x16 }, 0, .vex_128_wig, .avx },
2027 .{ .vmovshdup, .rm, .{ .ymm, .ymm_m256 }, .{ 0xf3, 0x0f, 0x16 }, 0, .vex_256_wig, .avx },
2028
2029 .{ .vmovsldup, .rm, .{ .xmm, .xmm_m128 }, .{ 0xf3, 0x0f, 0x12 }, 0, .vex_128_wig, .avx },
2030 .{ .vmovsldup, .rm, .{ .ymm, .ymm_m256 }, .{ 0xf3, 0x0f, 0x12 }, 0, .vex_256_wig, .avx },
2031
2032 .{ .vmovss, .rvm, .{ .xmm, .xmm, .xmm }, .{ 0xf3, 0x0f, 0x10 }, 0, .vex_lig_wig, .avx },
2033 .{ .vmovss, .rm, .{ .xmm, .m32 }, .{ 0xf3, 0x0f, 0x10 }, 0, .vex_lig_wig, .avx },
2034 .{ .vmovss, .mvr, .{ .xmm, .xmm, .xmm }, .{ 0xf3, 0x0f, 0x11 }, 0, .vex_lig_wig, .avx },
2035 .{ .vmovss, .mr, .{ .m32, .xmm }, .{ 0xf3, 0x0f, 0x11 }, 0, .vex_lig_wig, .avx },
2036
2037 .{ .vmovupd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x10 }, 0, .vex_128_wig, .avx },
2038 .{ .vmovupd, .mr, .{ .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x11 }, 0, .vex_128_wig, .avx },
2039 .{ .vmovupd, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x10 }, 0, .vex_256_wig, .avx },
2040 .{ .vmovupd, .mr, .{ .ymm_m256, .ymm }, .{ 0x66, 0x0f, 0x11 }, 0, .vex_256_wig, .avx },
2041
2042 .{ .vmovups, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x10 }, 0, .vex_128_wig, .avx },
2043 .{ .vmovups, .mr, .{ .xmm_m128, .xmm }, .{ 0x0f, 0x11 }, 0, .vex_128_wig, .avx },
2044 .{ .vmovups, .rm, .{ .ymm, .ymm_m256 }, .{ 0x0f, 0x10 }, 0, .vex_256_wig, .avx },
2045 .{ .vmovups, .mr, .{ .ymm_m256, .ymm }, .{ 0x0f, 0x11 }, 0, .vex_256_wig, .avx },
2046
2047 .{ .vmulpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x59 }, 0, .vex_128_wig, .avx },
2048 .{ .vmulpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x59 }, 0, .vex_256_wig, .avx },
2049
2050 .{ .vmulps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x59 }, 0, .vex_128_wig, .avx },
2051 .{ .vmulps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x59 }, 0, .vex_256_wig, .avx },
2052
2053 .{ .vmulsd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x59 }, 0, .vex_lig_wig, .avx },
2054
2055 .{ .vmulss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x59 }, 0, .vex_lig_wig, .avx },
2056
2057 .{ .vorpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x56 }, 0, .vex_128_wig, .avx },
2058 .{ .vorpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x56 }, 0, .vex_256_wig, .avx },
2059
2060 .{ .vorps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x56 }, 0, .vex_128_wig, .avx },
2061 .{ .vorps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x56 }, 0, .vex_256_wig, .avx },
2062
2063 .{ .vpabsb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x1c }, 0, .vex_128_wig, .avx },
2064 .{ .vpabsd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x1e }, 0, .vex_128_wig, .avx },
2065 .{ .vpabsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x1d }, 0, .vex_128_wig, .avx },
2066
2067 .{ .vpacksswb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x63 }, 0, .vex_128_wig, .avx },
2068 .{ .vpackssdw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6b }, 0, .vex_128_wig, .avx },
2069
2070 .{ .vpackusdw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x2b }, 0, .vex_128_wig, .avx },
2071
2072 .{ .vpackuswb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x67 }, 0, .vex_128_wig, .avx },
2073
2074 .{ .vpaddb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfc }, 0, .vex_128_wig, .avx },
2075 .{ .vpaddw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfd }, 0, .vex_128_wig, .avx },
2076 .{ .vpaddd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfe }, 0, .vex_128_wig, .avx },
2077 .{ .vpaddq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd4 }, 0, .vex_128_wig, .avx },
2078
2079 .{ .vpaddsb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xec }, 0, .vex_128_wig, .avx },
2080 .{ .vpaddsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xed }, 0, .vex_128_wig, .avx },
2081
2082 .{ .vpaddusb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xdc }, 0, .vex_128_wig, .avx },
2083 .{ .vpaddusw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xdd }, 0, .vex_128_wig, .avx },
2084
2085 .{ .vpalignr, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0f }, 0, .vex_128_wig, .avx },
2086
2087 .{ .vpand, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xdb }, 0, .vex_128_wig, .avx },
2088
2089 .{ .vpandn, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xdf }, 0, .vex_128_wig, .avx },
2090
2091 .{ .vpblendvb, .rvmr, .{ .xmm, .xmm, .xmm_m128, .xmm }, .{ 0x66, 0x0f, 0x3a, 0x4c }, 0, .vex_128_w0, .avx },
2092
2093 .{ .vpblendw, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0e }, 0, .vex_128_wig, .avx },
2094
2095 .{ .vpclmulqdq, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x44 }, 0, .vex_128_wig, .@"pclmul avx" },
2096
2097 .{ .vpcmpeqb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x74 }, 0, .vex_128_wig, .avx },
2098 .{ .vpcmpeqw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x75 }, 0, .vex_128_wig, .avx },
2099 .{ .vpcmpeqd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x76 }, 0, .vex_128_wig, .avx },
2100
2101 .{ .vpcmpeqq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x29 }, 0, .vex_128_wig, .avx },
2102
2103 .{ .vpcmpgtb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x64 }, 0, .vex_128_wig, .avx },
2104 .{ .vpcmpgtw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x65 }, 0, .vex_128_wig, .avx },
2105 .{ .vpcmpgtd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x66 }, 0, .vex_128_wig, .avx },
2106
2107 .{ .vpcmpgtq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x37 }, 0, .vex_128_wig, .avx },
2108
2109 .{ .vperm2f128, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x06 }, 0, .vex_256_w0, .avx },
2110
2111 .{ .vpermilpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x0d }, 0, .vex_128_w0, .avx },
2112 .{ .vpermilpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x0d }, 0, .vex_256_w0, .avx },
2113 .{ .vpermilpd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x05 }, 0, .vex_128_w0, .avx },
2114 .{ .vpermilpd, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x05 }, 0, .vex_256_w0, .avx },
2115
2116 .{ .vpermilpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x0c }, 0, .vex_128_w0, .avx },
2117 .{ .vpermilps, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x04 }, 0, .vex_128_w0, .avx },
2118 .{ .vpermilps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x0c }, 0, .vex_256_w0, .avx },
2119 .{ .vpermilps, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x04 }, 0, .vex_256_w0, .avx },
2120
2121 .{ .vpextrb, .mri, .{ .r32_m8, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x14 }, 0, .vex_128_w0, .avx },
2122 .{ .vpextrd, .mri, .{ .rm32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x16 }, 0, .vex_128_w0, .avx },
2123 .{ .vpextrq, .mri, .{ .rm64, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x16 }, 0, .vex_128_w1, .avx },
2124
2125 .{ .vpextrw, .rmi, .{ .r32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0xc5 }, 0, .vex_128_w0, .avx },
2126 .{ .vpextrw, .mri, .{ .r32_m16, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x15 }, 0, .vex_128_w0, .avx },
2127
2128 .{ .vpinsrb, .rvmi, .{ .xmm, .xmm, .r32_m8, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .vex_128_w0, .avx },
2129 .{ .vpinsrd, .rvmi, .{ .xmm, .xmm, .rm32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w0, .avx },
2130 .{ .vpinsrq, .rvmi, .{ .xmm, .xmm, .rm64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w1, .avx },
2131
2132 .{ .vpinsrw, .rvmi, .{ .xmm, .xmm, .r32_m16, .imm8 }, .{ 0x66, 0x0f, 0xc4 }, 0, .vex_128_w0, .avx },
2133
2134 .{ .vpmaxsb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3c }, 0, .vex_128_wig, .avx },
2135 .{ .vpmaxsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xee }, 0, .vex_128_wig, .avx },
2136 .{ .vpmaxsd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3d }, 0, .vex_128_wig, .avx },
2137
2138 .{ .vpmaxub, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xde }, 0, .vex_128_wig, .avx },
2139 .{ .vpmaxuw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3e }, 0, .vex_128_wig, .avx },
2140
2141 .{ .vpmaxud, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3f }, 0, .vex_128_wig, .avx },
2142
2143 .{ .vpminsb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x38 }, 0, .vex_128_wig, .avx },
2144 .{ .vpminsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xea }, 0, .vex_128_wig, .avx },
2145 .{ .vpminsd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x39 }, 0, .vex_128_wig, .avx },
2146
2147 .{ .vpminub, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xda }, 0, .vex_128_wig, .avx },
2148 .{ .vpminuw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3a }, 0, .vex_128_wig, .avx },
2149
2150 .{ .vpminud, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3b }, 0, .vex_128_wig, .avx },
2151
2152 .{ .vpmovmskb, .rm, .{ .r32, .xmm }, .{ 0x66, 0x0f, 0xd7 }, 0, .vex_128_wig, .avx },
2153 .{ .vpmovmskb, .rm, .{ .r64, .xmm }, .{ 0x66, 0x0f, 0xd7 }, 0, .vex_128_wig, .avx },
2154
2155 .{ .vpmovsxbw, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x20 }, 0, .vex_128_wig, .avx },
2156 .{ .vpmovsxbd, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x21 }, 0, .vex_128_wig, .avx },
2157 .{ .vpmovsxbq, .rm, .{ .xmm, .xmm_m16 }, .{ 0x66, 0x0f, 0x38, 0x22 }, 0, .vex_128_wig, .avx },
2158 .{ .vpmovsxwd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x23 }, 0, .vex_128_wig, .avx },
2159 .{ .vpmovsxwq, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x24 }, 0, .vex_128_wig, .avx },
2160 .{ .vpmovsxdq, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x25 }, 0, .vex_128_wig, .avx },
2161
2162 .{ .vpmovzxbw, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x30 }, 0, .vex_128_wig, .avx },
2163 .{ .vpmovzxbd, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x31 }, 0, .vex_128_wig, .avx },
2164 .{ .vpmovzxbq, .rm, .{ .xmm, .xmm_m16 }, .{ 0x66, 0x0f, 0x38, 0x32 }, 0, .vex_128_wig, .avx },
2165 .{ .vpmovzxwd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x33 }, 0, .vex_128_wig, .avx },
2166 .{ .vpmovzxwq, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x34 }, 0, .vex_128_wig, .avx },
2167 .{ .vpmovzxdq, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x35 }, 0, .vex_128_wig, .avx },
2168
2169 .{ .vpmulhw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe5 }, 0, .vex_128_wig, .avx },
2170
2171 .{ .vpmulld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_128_wig, .avx },
2172
2173 .{ .vpmullw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd5 }, 0, .vex_128_wig, .avx },
2174
2175 .{ .vpor, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xeb }, 0, .vex_128_wig, .avx },
2176
2177 .{ .vpshufb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_128_wig, .avx },
2178
2179 .{ .vpshufd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
2180
2181 .{ .vpshufhw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf3, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
2182
2183 .{ .vpshuflw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf2, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
2184
2185 .{ .vpsllw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .vex_128_wig, .avx },
2186 .{ .vpsllw, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .vex_128_wig, .avx },
2187 .{ .vpslld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf2 }, 0, .vex_128_wig, .avx },
2188 .{ .vpslld, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 6, .vex_128_wig, .avx },
2189 .{ .vpsllq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf3 }, 0, .vex_128_wig, .avx },
2190 .{ .vpsllq, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 6, .vex_128_wig, .avx },
2191
2192 .{ .vpslldq, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 7, .vex_128_wig, .avx },
2193
2194 .{ .vpsraw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe1 }, 0, .vex_128_wig, .avx },
2195 .{ .vpsraw, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 4, .vex_128_wig, .avx },
2196 .{ .vpsrad, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe2 }, 0, .vex_128_wig, .avx },
2197 .{ .vpsrad, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 4, .vex_128_wig, .avx },
2198
2199 .{ .vpsrlw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd1 }, 0, .vex_128_wig, .avx },
2200 .{ .vpsrlw, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 2, .vex_128_wig, .avx },
2201 .{ .vpsrld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd2 }, 0, .vex_128_wig, .avx },
2202 .{ .vpsrld, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 2, .vex_128_wig, .avx },
2203 .{ .vpsrlq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd3 }, 0, .vex_128_wig, .avx },
2204 .{ .vpsrlq, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 2, .vex_128_wig, .avx },
2205
2206 .{ .vpsrldq, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 3, .vex_128_wig, .avx },
2207
2208 .{ .vpsubb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf8 }, 0, .vex_128_wig, .avx },
2209 .{ .vpsubw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf9 }, 0, .vex_128_wig, .avx },
2210 .{ .vpsubd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfa }, 0, .vex_128_wig, .avx },
2211
2212 .{ .vpsubsb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe8 }, 0, .vex_128_wig, .avx },
2213 .{ .vpsubsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe9 }, 0, .vex_128_wig, .avx },
2214
2215 .{ .vpsubq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xfb }, 0, .vex_128_wig, .avx },
2216
2217 .{ .vpsubusb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd8 }, 0, .vex_128_wig, .avx },
2218 .{ .vpsubusw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd9 }, 0, .vex_128_wig, .avx },
2219
2220 .{ .vptest, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x17 }, 0, .vex_128_wig, .avx },
2221 .{ .vptest, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x17 }, 0, .vex_256_wig, .avx },
2222
2223 .{ .vpunpckhbw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x68 }, 0, .vex_128_wig, .avx },
2224 .{ .vpunpckhwd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x69 }, 0, .vex_128_wig, .avx },
2225 .{ .vpunpckhdq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6a }, 0, .vex_128_wig, .avx },
2226 .{ .vpunpckhqdq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6d }, 0, .vex_128_wig, .avx },
2227
2228 .{ .vpunpcklbw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x60 }, 0, .vex_128_wig, .avx },
2229 .{ .vpunpcklwd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x61 }, 0, .vex_128_wig, .avx },
2230 .{ .vpunpckldq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x62 }, 0, .vex_128_wig, .avx },
2231 .{ .vpunpcklqdq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x6c }, 0, .vex_128_wig, .avx },
2232
2233 .{ .vpxor, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xef }, 0, .vex_128_wig, .avx },
2234
2235 .{ .vroundpd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x09 }, 0, .vex_128_wig, .avx },
2236 .{ .vroundpd, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x09 }, 0, .vex_256_wig, .avx },
2237
2238 .{ .vroundps, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x08 }, 0, .vex_128_wig, .avx },
2239 .{ .vroundps, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x08 }, 0, .vex_256_wig, .avx },
2240
2241 .{ .vroundsd, .rvmi, .{ .xmm, .xmm, .xmm_m64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0b }, 0, .vex_lig_wig, .avx },
2242
2243 .{ .vroundss, .rvmi, .{ .xmm, .xmm, .xmm_m32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0a }, 0, .vex_lig_wig, .avx },
2244
2245 .{ .vshufpd, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0xc6 }, 0, .vex_128_wig, .avx },
2246 .{ .vshufpd, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0xc6 }, 0, .vex_256_wig, .avx },
2247
2248 .{ .vshufps, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x0f, 0xc6 }, 0, .vex_128_wig, .avx },
2249 .{ .vshufps, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x0f, 0xc6 }, 0, .vex_256_wig, .avx },
2250
2251 .{ .vsqrtpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x51 }, 0, .vex_128_wig, .avx },
2252 .{ .vsqrtpd, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x51 }, 0, .vex_256_wig, .avx },
2253
2254 .{ .vsqrtps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x0f, 0x51 }, 0, .vex_128_wig, .avx },
2255 .{ .vsqrtps, .rm, .{ .ymm, .ymm_m256 }, .{ 0x0f, 0x51 }, 0, .vex_256_wig, .avx },
2256
2257 .{ .vsqrtsd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x51 }, 0, .vex_lig_wig, .avx },
2258
2259 .{ .vsqrtss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x51 }, 0, .vex_lig_wig, .avx },
2260
2261 .{ .vstmxcsr, .m, .{ .m32 }, .{ 0x0f, 0xae }, 3, .vex_lz_wig, .avx },
2262
2263 .{ .vsubpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x5c }, 0, .vex_128_wig, .avx },
2264 .{ .vsubpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x5c }, 0, .vex_256_wig, .avx },
2265
2266 .{ .vsubps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x5c }, 0, .vex_128_wig, .avx },
2267 .{ .vsubps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x5c }, 0, .vex_256_wig, .avx },
2268
2269 .{ .vsubsd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0xf2, 0x0f, 0x5c }, 0, .vex_lig_wig, .avx },
2270
2271 .{ .vsubss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0xf3, 0x0f, 0x5c }, 0, .vex_lig_wig, .avx },
2272
2273 .{ .vtestps, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x0e }, 0, .vex_128_w0, .avx },
2274 .{ .vtestps, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x0e }, 0, .vex_256_w0, .avx },
2275 .{ .vtestpd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x0f }, 0, .vex_128_w0, .avx },
2276 .{ .vtestpd, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x0f }, 0, .vex_256_w0, .avx },
2277
2278 .{ .vucomisd, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x2e }, 0, .vex_lig_wig, .avx },
2279
2280 .{ .vucomiss, .rm, .{ .xmm, .xmm_m32 }, .{ 0x0f, 0x2e }, 0, .vex_lig_wig, .avx },
2281
2282 .{ .vunpckhpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x15 }, 0, .vex_128_wig, .avx },
2283 .{ .vunpckhpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x15 }, 0, .vex_256_wig, .avx },
2284
2285 .{ .vunpckhps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x15 }, 0, .vex_128_wig, .avx },
2286 .{ .vunpckhps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x15 }, 0, .vex_256_wig, .avx },
2287
2288 .{ .vunpcklpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x14 }, 0, .vex_128_wig, .avx },
2289 .{ .vunpcklpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x14 }, 0, .vex_256_wig, .avx },
2290
2291 .{ .vunpcklps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x14 }, 0, .vex_128_wig, .avx },
2292 .{ .vunpcklps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x14 }, 0, .vex_256_wig, .avx },
2293
2294 .{ .vxorpd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x57 }, 0, .vex_128_wig, .avx },
2295 .{ .vxorpd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x57 }, 0, .vex_256_wig, .avx },
2296
2297 .{ .vxorps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x0f, 0x57 }, 0, .vex_128_wig, .avx },
2298 .{ .vxorps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x0f, 0x57 }, 0, .vex_256_wig, .avx },
2299
2300 // BMI
2301 .{ .andn, .rvm, .{ .r32, .r32, .rm32 }, .{ 0x0f, 0x38, 0xf2 }, 0, .vex_lz_w0, .bmi },
2302 .{ .andn, .rvm, .{ .r64, .r64, .rm64 }, .{ 0x0f, 0x38, 0xf2 }, 0, .vex_lz_w1, .bmi },
2303
2304 .{ .bextr, .rmv, .{ .r32, .rm32, .r32 }, .{ 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w0, .bmi },
2305 .{ .bextr, .rmv, .{ .r64, .rm64, .r64 }, .{ 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w1, .bmi },
2306
2307 .{ .blsi, .vm, .{ .r32, .rm32 }, .{ 0x0f, 0x38, 0xf3 }, 3, .vex_lz_w0, .bmi },
2308 .{ .blsi, .vm, .{ .r64, .rm64 }, .{ 0x0f, 0x38, 0xf3 }, 3, .vex_lz_w1, .bmi },
2309
2310 .{ .blsmsk, .vm, .{ .r32, .rm32 }, .{ 0x0f, 0x38, 0xf3 }, 2, .vex_lz_w0, .bmi },
2311 .{ .blsmsk, .vm, .{ .r64, .rm64 }, .{ 0x0f, 0x38, 0xf3 }, 2, .vex_lz_w1, .bmi },
2312
2313 .{ .blsr, .vm, .{ .r32, .rm32 }, .{ 0x0f, 0x38, 0xf3 }, 1, .vex_lz_w0, .bmi },
2314 .{ .blsr, .vm, .{ .r64, .rm64 }, .{ 0x0f, 0x38, 0xf3 }, 1, .vex_lz_w1, .bmi },
2315
2316 .{ .tzcnt, .rm, .{ .r16, .rm16 }, .{ 0xf3, 0x0f, 0xbc }, 0, .short, .bmi },
2317 .{ .tzcnt, .rm, .{ .r32, .rm32 }, .{ 0xf3, 0x0f, 0xbc }, 0, .none, .bmi },
2318 .{ .tzcnt, .rm, .{ .r64, .rm64 }, .{ 0xf3, 0x0f, 0xbc }, 0, .long, .bmi },
2319
2320 // BMI2
2321 .{ .bzhi, .rmv, .{ .r32, .rm32, .r32 }, .{ 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w0, .bmi2 },
2322 .{ .bzhi, .rmv, .{ .r64, .rm64, .r64 }, .{ 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w1, .bmi2 },
2323
2324 .{ .mulx, .rvm, .{ .r32, .r32, .rm32 }, .{ 0xf2, 0x0f, 0x38, 0xf6 }, 0, .vex_lz_w0, .bmi2 },
2325 .{ .mulx, .rvm, .{ .r64, .r64, .rm64 }, .{ 0xf2, 0x0f, 0x38, 0xf6 }, 0, .vex_lz_w1, .bmi2 },
2326
2327 .{ .pdep, .rvm, .{ .r32, .r32, .rm32 }, .{ 0xf2, 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w0, .bmi2 },
2328 .{ .pdep, .rvm, .{ .r64, .r64, .rm64 }, .{ 0xf2, 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w1, .bmi2 },
2329
2330 .{ .pext, .rvm, .{ .r32, .r32, .rm32 }, .{ 0xf3, 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w0, .bmi2 },
2331 .{ .pext, .rvm, .{ .r64, .r64, .rm64 }, .{ 0xf3, 0x0f, 0x38, 0xf5 }, 0, .vex_lz_w1, .bmi2 },
2332
2333 .{ .rorx, .rmi, .{ .r32, .rm32, .imm8 }, .{ 0xf2, 0x0f, 0x3a }, 0, .vex_lz_w0, .bmi2 },
2334 .{ .rorx, .rmi, .{ .r64, .rm64, .imm8 }, .{ 0xf2, 0x0f, 0x3a }, 0, .vex_lz_w1, .bmi2 },
2335
2336 .{ .sarx, .rmv, .{ .r32, .rm32, .r32 }, .{ 0xf3, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w0, .bmi2 },
2337 .{ .shlx, .rmv, .{ .r32, .rm32, .r32 }, .{ 0x66, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w0, .bmi2 },
2338 .{ .shrx, .rmv, .{ .r32, .rm32, .r32 }, .{ 0xf2, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w0, .bmi2 },
2339 .{ .sarx, .rmv, .{ .r64, .rm64, .r64 }, .{ 0xf3, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w1, .bmi2 },
2340 .{ .shlx, .rmv, .{ .r64, .rm64, .r64 }, .{ 0x66, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w1, .bmi2 },
2341 .{ .shrx, .rmv, .{ .r64, .rm64, .r64 }, .{ 0xf2, 0x0f, 0x38, 0xf7 }, 0, .vex_lz_w1, .bmi2 },
2342
2343 // F16C
2344 .{ .vcvtph2ps, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x13 }, 0, .vex_128_w0, .f16c },
2345 .{ .vcvtph2ps, .rm, .{ .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x13 }, 0, .vex_256_w0, .f16c },
2346
2347 .{ .vcvtps2ph, .mri, .{ .xmm_m64, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x1d }, 0, .vex_128_w0, .f16c },
2348 .{ .vcvtps2ph, .mri, .{ .xmm_m128, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x1d }, 0, .vex_256_w0, .f16c },
2349
2350 // FMA
2351 .{ .vfmadd132pd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x98 }, 0, .vex_128_w1, .fma },
2352 .{ .vfmadd213pd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xa8 }, 0, .vex_128_w1, .fma },
2353 .{ .vfmadd231pd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xb8 }, 0, .vex_128_w1, .fma },
2354 .{ .vfmadd132pd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x98 }, 0, .vex_256_w1, .fma },
2355 .{ .vfmadd213pd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xa8 }, 0, .vex_256_w1, .fma },
2356 .{ .vfmadd231pd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xb8 }, 0, .vex_256_w1, .fma },
2357
2358 .{ .vfmadd132ps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x98 }, 0, .vex_128_w0, .fma },
2359 .{ .vfmadd213ps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xa8 }, 0, .vex_128_w0, .fma },
2360 .{ .vfmadd231ps, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0xb8 }, 0, .vex_128_w0, .fma },
2361 .{ .vfmadd132ps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x98 }, 0, .vex_256_w0, .fma },
2362 .{ .vfmadd213ps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xa8 }, 0, .vex_256_w0, .fma },
2363 .{ .vfmadd231ps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xb8 }, 0, .vex_256_w0, .fma },
2364
2365 .{ .vfmadd132sd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x99 }, 0, .vex_lig_w1, .fma },
2366 .{ .vfmadd213sd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0xa9 }, 0, .vex_lig_w1, .fma },
2367 .{ .vfmadd231sd, .rvm, .{ .xmm, .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0xb9 }, 0, .vex_lig_w1, .fma },
2368
2369 .{ .vfmadd132ss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x99 }, 0, .vex_lig_w0, .fma },
2370 .{ .vfmadd213ss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0xa9 }, 0, .vex_lig_w0, .fma },
2371 .{ .vfmadd231ss, .rvm, .{ .xmm, .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0xb9 }, 0, .vex_lig_w0, .fma },
2372
2373 // VPCLMULQDQ
2374 .{ .vpclmulqdq, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x44 }, 0, .vex_256_wig, .vpclmulqdq },
2375
2376 // AVX2
2377 .{ .vbroadcastss, .rm, .{ .xmm, .xmm }, .{ 0x66, 0x0f, 0x38, 0x18 }, 0, .vex_128_w0, .avx2 },
2378 .{ .vbroadcastss, .rm, .{ .ymm, .xmm }, .{ 0x66, 0x0f, 0x38, 0x18 }, 0, .vex_256_w0, .avx2 },
2379 .{ .vbroadcastsd, .rm, .{ .ymm, .xmm }, .{ 0x66, 0x0f, 0x38, 0x19 }, 0, .vex_256_w0, .avx2 },
2380
2381 .{ .vextracti128, .mri, .{ .xmm_m128, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x39 }, 0, .vex_256_w0, .avx2 },
2382
2383 .{ .vinserti128, .rvmi, .{ .ymm, .ymm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x38 }, 0, .vex_256_w0, .avx2 },
2384
2385 .{ .vpabsb, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x1c }, 0, .vex_256_wig, .avx2 },
2386 .{ .vpabsd, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x1e }, 0, .vex_256_wig, .avx2 },
2387 .{ .vpabsw, .rm, .{ .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x1d }, 0, .vex_256_wig, .avx2 },
2388
2389 .{ .vpacksswb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x63 }, 0, .vex_256_wig, .avx2 },
2390 .{ .vpackssdw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x6b }, 0, .vex_256_wig, .avx2 },
2391
2392 .{ .vpackusdw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x2b }, 0, .vex_256_wig, .avx2 },
2393
2394 .{ .vpackuswb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x67 }, 0, .vex_256_wig, .avx2 },
2395
2396 .{ .vpaddb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xfc }, 0, .vex_256_wig, .avx2 },
2397 .{ .vpaddw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xfd }, 0, .vex_256_wig, .avx2 },
2398 .{ .vpaddd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xfe }, 0, .vex_256_wig, .avx2 },
2399 .{ .vpaddq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xd4 }, 0, .vex_256_wig, .avx2 },
2400
2401 .{ .vpaddsb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xec }, 0, .vex_256_wig, .avx2 },
2402 .{ .vpaddsw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xed }, 0, .vex_256_wig, .avx2 },
2403
2404 .{ .vpaddusb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xdc }, 0, .vex_256_wig, .avx2 },
2405 .{ .vpaddusw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xdd }, 0, .vex_256_wig, .avx2 },
2406
2407 .{ .vpalignr, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0f }, 0, .vex_256_wig, .avx2 },
2408
2409 .{ .vpand, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xdb }, 0, .vex_256_wig, .avx2 },
2410
2411 .{ .vpandn, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xdf }, 0, .vex_256_wig, .avx2 },
2412
2413 .{ .vpblendd, .rvmi, .{ .xmm, .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x02 }, 0, .vex_128_w0, .avx2 },
2414 .{ .vpblendd, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x02 }, 0, .vex_256_w0, .avx2 },
2415
2416 .{ .vpblendvb, .rvmr, .{ .ymm, .ymm, .ymm_m256, .ymm }, .{ 0x66, 0x0f, 0x3a, 0x4c }, 0, .vex_256_w0, .avx2 },
2417
2418 .{ .vpblendw, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0e }, 0, .vex_256_wig, .avx2 },
2419
2420 .{ .vpbroadcastb, .rm, .{ .xmm, .xmm_m8 }, .{ 0x66, 0x0f, 0x38, 0x78 }, 0, .vex_128_w0, .avx2 },
2421 .{ .vpbroadcastb, .rm, .{ .ymm, .xmm_m8 }, .{ 0x66, 0x0f, 0x38, 0x78 }, 0, .vex_256_w0, .avx2 },
2422 .{ .vpbroadcastw, .rm, .{ .xmm, .xmm_m16 }, .{ 0x66, 0x0f, 0x38, 0x79 }, 0, .vex_128_w0, .avx2 },
2423 .{ .vpbroadcastw, .rm, .{ .ymm, .xmm_m16 }, .{ 0x66, 0x0f, 0x38, 0x79 }, 0, .vex_256_w0, .avx2 },
2424 .{ .vpbroadcastd, .rm, .{ .xmm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x58 }, 0, .vex_128_w0, .avx2 },
2425 .{ .vpbroadcastd, .rm, .{ .ymm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x58 }, 0, .vex_256_w0, .avx2 },
2426 .{ .vpbroadcastq, .rm, .{ .xmm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x59 }, 0, .vex_128_w0, .avx2 },
2427 .{ .vpbroadcastq, .rm, .{ .ymm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x59 }, 0, .vex_256_w0, .avx2 },
2428 .{ .vbroadcasti128, .rm, .{ .ymm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x5a }, 0, .vex_256_w0, .avx2 },
2429
2430 .{ .vpcmpeqb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x74 }, 0, .vex_256_wig, .avx2 },
2431 .{ .vpcmpeqw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x75 }, 0, .vex_256_wig, .avx2 },
2432 .{ .vpcmpeqd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x76 }, 0, .vex_256_wig, .avx2 },
2433
2434 .{ .vpcmpeqq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x29 }, 0, .vex_256_wig, .avx2 },
2435
2436 .{ .vpcmpgtb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x64 }, 0, .vex_256_wig, .avx2 },
2437 .{ .vpcmpgtw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x65 }, 0, .vex_256_wig, .avx2 },
2438 .{ .vpcmpgtd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x66 }, 0, .vex_256_wig, .avx2 },
2439
2440 .{ .vpcmpgtq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x37 }, 0, .vex_256_wig, .avx2 },
2441
2442 .{ .vperm2i128, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x46 }, 0, .vex_256_w0, .avx2 },
2443
2444 .{ .vpermd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x36 }, 0, .vex_256_w0, .avx2 },
2445
2446 .{ .vpermpd, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x01 }, 0, .vex_256_w1, .avx2 },
2447
2448 .{ .vpermps, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x16 }, 0, .vex_256_w0, .avx2 },
2449
2450 .{ .vpermq, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x00 }, 0, .vex_256_w1, .avx2 },
2451
2452 .{ .vpmaskmovd, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w0, .avx2 },
2453 .{ .vpmaskmovd, .rvm, .{ .ymm, .ymm, .m256 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_256_w0, .avx2 },
2454 .{ .vpmaskmovq, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w1, .avx2 },
2455 .{ .vpmaskmovq, .rvm, .{ .ymm, .ymm, .m256 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_256_w1, .avx2 },
2456 .{ .vpmaskmovd, .mvr, .{ .m128, .xmm, .xmm }, .{ 0x66, 0x0f, 0x38, 0x8e }, 0, .vex_128_w0, .avx2 },
2457 .{ .vpmaskmovd, .mvr, .{ .m256, .ymm, .ymm }, .{ 0x66, 0x0f, 0x38, 0x8e }, 0, .vex_256_w0, .avx2 },
2458 .{ .vpmaskmovq, .mvr, .{ .m128, .xmm, .xmm }, .{ 0x66, 0x0f, 0x38, 0x8e }, 0, .vex_128_w1, .avx2 },
2459 .{ .vpmaskmovq, .mvr, .{ .m256, .ymm, .ymm }, .{ 0x66, 0x0f, 0x38, 0x8e }, 0, .vex_256_w1, .avx2 },
2460
2461 .{ .vpmaxsb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x3c }, 0, .vex_256_wig, .avx2 },
2462 .{ .vpmaxsw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xee }, 0, .vex_256_wig, .avx2 },
2463 .{ .vpmaxsd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x3d }, 0, .vex_256_wig, .avx2 },
2464
2465 .{ .vpmaxub, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xde }, 0, .vex_256_wig, .avx2 },
2466 .{ .vpmaxuw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x3e }, 0, .vex_256_wig, .avx2 },
2467
2468 .{ .vpmaxud, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x3f }, 0, .vex_256_wig, .avx2 },
2469
2470 .{ .vpminsb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x38 }, 0, .vex_256_wig, .avx2 },
2471 .{ .vpminsw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xea }, 0, .vex_256_wig, .avx2 },
2472 .{ .vpminsd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x39 }, 0, .vex_256_wig, .avx2 },
2473
2474 .{ .vpminub, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xda }, 0, .vex_256_wig, .avx2 },
2475 .{ .vpminuw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x3a }, 0, .vex_256_wig, .avx2 },
2476
2477 .{ .vpminud, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x3b }, 0, .vex_256_wig, .avx2 },
2478
2479 .{ .vpmovmskb, .rm, .{ .r32, .ymm }, .{ 0x66, 0x0f, 0xd7 }, 0, .vex_256_wig, .avx2 },
2480 .{ .vpmovmskb, .rm, .{ .r64, .ymm }, .{ 0x66, 0x0f, 0xd7 }, 0, .vex_256_wig, .avx2 },
2481
2482 .{ .vpmovsxbw, .rm, .{ .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x20 }, 0, .vex_256_wig, .avx2 },
2483 .{ .vpmovsxbd, .rm, .{ .ymm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x21 }, 0, .vex_256_wig, .avx2 },
2484 .{ .vpmovsxbq, .rm, .{ .ymm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x22 }, 0, .vex_256_wig, .avx2 },
2485 .{ .vpmovsxwd, .rm, .{ .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x23 }, 0, .vex_256_wig, .avx2 },
2486 .{ .vpmovsxwq, .rm, .{ .ymm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x24 }, 0, .vex_256_wig, .avx2 },
2487 .{ .vpmovsxdq, .rm, .{ .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x25 }, 0, .vex_256_wig, .avx2 },
2488
2489 .{ .vpmovzxbw, .rm, .{ .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x30 }, 0, .vex_256_wig, .avx2 },
2490 .{ .vpmovzxbd, .rm, .{ .ymm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x31 }, 0, .vex_256_wig, .avx2 },
2491 .{ .vpmovzxbq, .rm, .{ .ymm, .xmm_m32 }, .{ 0x66, 0x0f, 0x38, 0x32 }, 0, .vex_256_wig, .avx2 },
2492 .{ .vpmovzxwd, .rm, .{ .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x33 }, 0, .vex_256_wig, .avx2 },
2493 .{ .vpmovzxwq, .rm, .{ .ymm, .xmm_m64 }, .{ 0x66, 0x0f, 0x38, 0x34 }, 0, .vex_256_wig, .avx2 },
2494 .{ .vpmovzxdq, .rm, .{ .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x35 }, 0, .vex_256_wig, .avx2 },
2495
2496 .{ .vpmulhw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xe5 }, 0, .vex_256_wig, .avx2 },
2497
2498 .{ .vpmulld, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_256_wig, .avx2 },
2499
2500 .{ .vpmullw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xd5 }, 0, .vex_256_wig, .avx2 },
2501
2502 .{ .vpor, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xeb }, 0, .vex_256_wig, .avx2 },
2503
2504 .{ .vpshufb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_256_wig, .avx2 },
2505 .{ .vpshufd, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
2506
2507 .{ .vpshufhw, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0xf3, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
2508
2509 .{ .vpshuflw, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0xf2, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
2510
2511 .{ .vpsllw, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .vex_256_wig, .avx2 },
2512 .{ .vpsllw, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .vex_256_wig, .avx2 },
2513 .{ .vpslld, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf2 }, 0, .vex_256_wig, .avx2 },
2514 .{ .vpslld, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 6, .vex_256_wig, .avx2 },
2515 .{ .vpsllq, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf3 }, 0, .vex_256_wig, .avx2 },
2516 .{ .vpsllq, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 6, .vex_256_wig, .avx2 },
2517
2518 .{ .vpslldq, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 7, .vex_256_wig, .avx2 },
2519
2520 .{ .vpsllvd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x47 }, 0, .vex_128_w0, .avx2 },
2521 .{ .vpsllvq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x47 }, 0, .vex_128_w1, .avx2 },
2522 .{ .vpsllvd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x47 }, 0, .vex_256_w0, .avx2 },
2523 .{ .vpsllvq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x47 }, 0, .vex_256_w1, .avx2 },
2524
2525 .{ .vpsraw, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe1 }, 0, .vex_256_wig, .avx2 },
2526 .{ .vpsraw, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 4, .vex_256_wig, .avx2 },
2527 .{ .vpsrad, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe2 }, 0, .vex_256_wig, .avx2 },
2528 .{ .vpsrad, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 4, .vex_256_wig, .avx2 },
2529
2530 .{ .vpsravd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x46 }, 0, .vex_128_w0, .avx2 },
2531 .{ .vpsravd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x46 }, 0, .vex_256_w0, .avx2 },
2532
2533 .{ .vpsrlw, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd1 }, 0, .vex_256_wig, .avx2 },
2534 .{ .vpsrlw, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 2, .vex_256_wig, .avx2 },
2535 .{ .vpsrld, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd2 }, 0, .vex_256_wig, .avx2 },
2536 .{ .vpsrld, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x72 }, 2, .vex_256_wig, .avx2 },
2537 .{ .vpsrlq, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd3 }, 0, .vex_256_wig, .avx2 },
2538 .{ .vpsrlq, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 2, .vex_256_wig, .avx2 },
2539
2540 .{ .vpsrldq, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x73 }, 3, .vex_256_wig, .avx2 },
2541
2542 .{ .vpsrlvd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x45 }, 0, .vex_128_w0, .avx2 },
2543 .{ .vpsrlvq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x45 }, 0, .vex_128_w1, .avx2 },
2544 .{ .vpsrlvd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x45 }, 0, .vex_256_w0, .avx2 },
2545 .{ .vpsrlvq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x45 }, 0, .vex_256_w1, .avx2 },
2546
2547 .{ .vpsubb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xf8 }, 0, .vex_256_wig, .avx2 },
2548 .{ .vpsubw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xf9 }, 0, .vex_256_wig, .avx2 },
2549 .{ .vpsubd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xfa }, 0, .vex_256_wig, .avx2 },
2550
2551 .{ .vpsubsb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xe8 }, 0, .vex_256_wig, .avx2 },
2552 .{ .vpsubsw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xe9 }, 0, .vex_256_wig, .avx2 },
2553
2554 .{ .vpsubq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xfb }, 0, .vex_256_wig, .avx2 },
2555
2556 .{ .vpsubusb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xd8 }, 0, .vex_256_wig, .avx2 },
2557 .{ .vpsubusw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xd9 }, 0, .vex_256_wig, .avx2 },
2558
2559 .{ .vpunpckhbw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x68 }, 0, .vex_256_wig, .avx2 },
2560 .{ .vpunpckhwd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x69 }, 0, .vex_256_wig, .avx2 },
2561 .{ .vpunpckhdq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x6a }, 0, .vex_256_wig, .avx2 },
2562 .{ .vpunpckhqdq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x6d }, 0, .vex_256_wig, .avx2 },
2563
2564 .{ .vpunpcklbw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x60 }, 0, .vex_256_wig, .avx2 },
2565 .{ .vpunpcklwd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x61 }, 0, .vex_256_wig, .avx2 },
2566 .{ .vpunpckldq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x62 }, 0, .vex_256_wig, .avx2 },
2567 .{ .vpunpcklqdq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x6c }, 0, .vex_256_wig, .avx2 },
2568
2569 .{ .vpxor, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xef }, 0, .vex_256_wig, .avx2 },
2570
2571 // ADX
2572 .{ .adcx, .rm, .{ .r32, .rm32 }, .{ 0x66, 0x0f, 0x38, 0xf6 }, 0, .none, .adx },
2573 .{ .adcx, .rm, .{ .r64, .rm64 }, .{ 0x66, 0x0f, 0x38, 0xf6 }, 0, .long, .adx },
2574
2575 .{ .adox, .rm, .{ .r32, .rm32 }, .{ 0xf3, 0x0f, 0x38, 0xf6 }, 0, .none, .adx },
2576 .{ .adox, .rm, .{ .r64, .rm64 }, .{ 0xf3, 0x0f, 0x38, 0xf6 }, 0, .long, .adx },
2577
2578 // VAES
2579 .{ .vaesdec, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xde }, 0, .vex_256_wig, .vaes },
2580
2581 .{ .vaesdeclast, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xdf }, 0, .vex_256_wig, .vaes },
2582
2583 .{ .vaesenc, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xdc }, 0, .vex_256_wig, .vaes },
2584
2585 .{ .vaesenclast, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0xdd }, 0, .vex_256_wig, .vaes },
2586
2587 // AESKLE
2588 .{ .aesdec128kl, .rm, .{ .xmm, .m }, .{ 0xf3, 0x0f, 0x38, 0xdd }, 0, .none, .kl },
2589
2590 .{ .aesdec256kl, .rm, .{ .xmm, .m }, .{ 0xf3, 0x0f, 0x38, 0xdf }, 0, .none, .kl },
2591
2592 .{ .aesenc128kl, .rm, .{ .xmm, .m }, .{ 0xf3, 0x0f, 0x38, 0xdc }, 0, .none, .kl },
2593
2594 .{ .aesenc256kl, .rm, .{ .xmm, .m }, .{ 0xf3, 0x0f, 0x38, 0xde }, 0, .none, .kl },
2595
2596 .{ .encodekey128, .rm, .{ .r32, .r32 }, .{ 0xf3, 0x0f, 0x38, 0xfa }, 0, .none, .kl },
2597
2598 .{ .encodekey256, .rm, .{ .r32, .r32 }, .{ 0xf3, 0x0f, 0x38, 0xfb }, 0, .none, .kl },
2599
2600 .{ .loadiwkey, .rm, .{ .xmm, .xmm }, .{ 0xf3, 0x0f, 0x38, 0xdc }, 0, .none, .kl },
2601 .{ .loadiwkey, .rm, .{ .xmm, .xmm, .eax, .xmm0 }, .{ 0xf3, 0x0f, 0x38, 0xdc }, 0, .none, .kl },
2602
2603 // AESKLEWIDE_KL
2604 .{ .aesdecwide128kl, .m, .{ .m }, .{ 0xf3, 0x0f, 0x38, 0xd8 }, 1, .none, .widekl },
2605
2606 .{ .aesdecwide256kl, .m, .{ .m }, .{ 0xf3, 0x0f, 0x38, 0xd8 }, 3, .none, .widekl },
2607
2608 .{ .aesencwide128kl, .m, .{ .m }, .{ 0xf3, 0x0f, 0x38, 0xd8 }, 0, .none, .widekl },
2609
2610 .{ .aesencwide256kl, .m, .{ .m }, .{ 0xf3, 0x0f, 0x38, 0xd8 }, 2, .none, .widekl },
2611}
2612// zig fmt: on