1 /// @file xed-encoder-2.c
2 
3 // This file was automatically generated.
4 // Do not edit this file.
5 
6 /*BEGIN_LEGAL
7 
8 Copyright (c) 2018 Intel Corporation
9 
10   Licensed under the Apache License, Version 2.0 (the "License");
11   you may not use this file except in compliance with the License.
12   You may obtain a copy of the License at
13 
14       http://www.apache.org/licenses/LICENSE-2.0
15 
16   Unless required by applicable law or agreed to in writing, software
17   distributed under the License is distributed on an "AS IS" BASIS,
18   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19   See the License for the specific language governing permissions and
20   limitations under the License.
21 
22 END_LEGAL */
23 #include "xed-internal-header.h"
24 #include "xed-encoder.h"
25 #include "xed-encode-private.h"
26 #include "xed-enc-operand-lu.h"
27 #include "xed-operand-accessors.h"
xed_encode_ntluf_SrSP(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)28 xed_uint32_t xed_encode_ntluf_SrSP(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
29 {
30 typedef struct {xed_uint32_t key; } lu_entry_t;
31 static const lu_entry_t lu_table[3] = {
32 /*h(1094)=0 OUTREG=XED_REG_RSP SMODE=2  ->	nothing*/ {1094, },
33 /*h(38)=1 OUTREG=XED_REG_SP SMODE=0  ->	nothing*/ {38, },
34 /*h(566)=2 OUTREG=XED_REG_ESP SMODE=1  ->	nothing*/ {566, }
35 };
36 xed_union64_t t, u;
37 xed_uint64_t key = 0;
38 xed_uint64_t hidx = 0;
39 xed3_operand_set_outreg(xes,arg_reg);
40 key = xed_enc_lu_OUTREG_SMODE(xes);
41 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
42 if(lu_table[hidx].key == key) {
43     return 1;
44 }
45 else{
46     return 0;
47 }
48 }
xed_encode_ntluf_VGPR64_N(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)49 xed_uint32_t xed_encode_ntluf_VGPR64_N(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
50 {
51 typedef struct { xed_int8_t vexdest210 ;xed_int8_t vexdest3;} lu_entry_t;
52 static const lu_entry_t lu_table[16] = {
53 /*h(66)=0 OUTREG=XED_REG_RAX  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1},
54 /*h(67)=1 OUTREG=XED_REG_RCX  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1},
55 /*h(68)=2 OUTREG=XED_REG_RDX  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1},
56 /*h(69)=3 OUTREG=XED_REG_RBX  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1},
57 /*h(70)=4 OUTREG=XED_REG_RSP  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1},
58 /*h(71)=5 OUTREG=XED_REG_RBP  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1},
59 /*h(72)=6 OUTREG=XED_REG_RSI  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1},
60 /*h(73)=7 OUTREG=XED_REG_RDI  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1},
61 /*h(74)=8 OUTREG=XED_REG_R8  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0},
62 /*h(75)=9 OUTREG=XED_REG_R9  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0},
63 /*h(76)=10 OUTREG=XED_REG_R10  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0},
64 /*h(77)=11 OUTREG=XED_REG_R11  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0},
65 /*h(78)=12 OUTREG=XED_REG_R12  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0},
66 /*h(79)=13 OUTREG=XED_REG_R13  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0},
67 /*h(80)=14 OUTREG=XED_REG_R14  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0},
68 /*h(81)=15 OUTREG=XED_REG_R15  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0}
69 };
70 xed_uint64_t key = 0;
71 xed_uint64_t hidx = 0;
72 xed3_operand_set_outreg(xes,arg_reg);
73 key = xed_enc_lu_OUTREG(xes);
74 hidx = key - 66;
75 if(hidx <= 15) {
76     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
77     xed3_operand_set_vexdest3(xes,lu_table[hidx].vexdest3);
78     return 1;
79 }
80 else{
81     return 0;
82 }
83 }
xed_encode_ntluf_GPR64_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)84 xed_uint32_t xed_encode_ntluf_GPR64_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
85 {
86 typedef struct { xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
87 static const lu_entry_t lu_table[16] = {
88 /*h(66)=0 OUTREG=XED_REG_RAX  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0},
89 /*h(67)=1 OUTREG=XED_REG_RCX  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1},
90 /*h(68)=2 OUTREG=XED_REG_RDX  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,2},
91 /*h(69)=3 OUTREG=XED_REG_RBX  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,3},
92 /*h(70)=4 OUTREG=XED_REG_RSP  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,4},
93 /*h(71)=5 OUTREG=XED_REG_RBP  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,5},
94 /*h(72)=6 OUTREG=XED_REG_RSI  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,6},
95 /*h(73)=7 OUTREG=XED_REG_RDI  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,7},
96 /*h(74)=8 OUTREG=XED_REG_R8  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0},
97 /*h(75)=9 OUTREG=XED_REG_R9  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1},
98 /*h(76)=10 OUTREG=XED_REG_R10  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,2},
99 /*h(77)=11 OUTREG=XED_REG_R11  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,3},
100 /*h(78)=12 OUTREG=XED_REG_R12  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,4},
101 /*h(79)=13 OUTREG=XED_REG_R13  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,5},
102 /*h(80)=14 OUTREG=XED_REG_R14  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,6},
103 /*h(81)=15 OUTREG=XED_REG_R15  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,7}
104 };
105 xed_uint64_t key = 0;
106 xed_uint64_t hidx = 0;
107 xed3_operand_set_outreg(xes,arg_reg);
108 key = xed_enc_lu_OUTREG(xes);
109 hidx = key - 66;
110 if(hidx <= 15) {
111     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
112     xed3_operand_set_rm(xes,lu_table[hidx].rm);
113     return 1;
114 }
115 else{
116     return 0;
117 }
118 }
xed_encode_ntluf_GPR64_X(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)119 xed_uint32_t xed_encode_ntluf_GPR64_X(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
120 {
121 typedef struct {xed_uint32_t key; xed_int8_t rexx ;xed_int8_t sibindex;} lu_entry_t;
122 static const lu_entry_t lu_table[16] = {
123 /*h(0)=0 OUTREG=XED_REG_INVALID  ->	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0, 0,4},
124 /*h(81)=1 OUTREG=XED_REG_R15  ->	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {81, 1,7},
125 /*h(76)=2 OUTREG=XED_REG_R10  ->	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {76, 1,2},
126 /*h(71)=3 OUTREG=XED_REG_RBP  ->	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {71, 0,5},
127 /*h(66)=4 OUTREG=XED_REG_RAX  ->	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {66, 0,0},
128 /*h(77)=5 OUTREG=XED_REG_R11  ->	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {77, 1,3},
129 /*h(72)=6 OUTREG=XED_REG_RSI  ->	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {72, 0,6},
130 /*h(67)=7 OUTREG=XED_REG_RCX  ->	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {67, 0,1},
131 /*h(78)=8 OUTREG=XED_REG_R12  ->	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {78, 1,4},
132 /*h(73)=9 OUTREG=XED_REG_RDI  ->	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {73, 0,7},
133 /*h(68)=10 OUTREG=XED_REG_RDX  ->	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {68, 0,2},
134 /*h(79)=11 OUTREG=XED_REG_R13  ->	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {79, 1,5},
135 /*h(74)=12 OUTREG=XED_REG_R8  ->	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {74, 1,0},
136 /*h(69)=13 OUTREG=XED_REG_RBX  ->	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {69, 0,3},
137 /*h(80)=14 OUTREG=XED_REG_R14  ->	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {80, 1,6},
138 /*h(75)=15 OUTREG=XED_REG_R9  ->	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {75, 1,1}
139 };
140 xed_uint64_t key = 0;
141 xed_uint64_t hidx = 0;
142 xed3_operand_set_outreg(xes,arg_reg);
143 key = xed_enc_lu_OUTREG(xes);
144 hidx = ((3*key % 89) % 16);
145 if(lu_table[hidx].key == key) {
146     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
147     xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
148     return 1;
149 }
150 else{
151     return 0;
152 }
153 }
xed_encode_ntluf_DR_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)154 xed_uint32_t xed_encode_ntluf_DR_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
155 {
156 typedef struct {xed_uint32_t key; xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
157 static const lu_entry_t lu_table[15] = {
158 /*h(102)=0 OUTREG=XED_REG_ERROR  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {102, 0,1},
159 /*h(26)=1 OUTREG=XED_REG_DR3  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {26, 3,0},
160 /*empty slot1 */ {0,0,0},
161 /*h(23)=3 OUTREG=XED_REG_DR0  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {23, 0,0},
162 /*h(28)=4 OUTREG=XED_REG_DR5  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {28, 5,0},
163 /*empty slot1 */ {0,0,0},
164 /*h(25)=6 OUTREG=XED_REG_DR2  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {25, 2,0},
165 /*empty slot1 */ {0,0,0},
166 /*h(30)=8 OUTREG=XED_REG_DR7  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {30, 7,0},
167 /*empty slot1 */ {0,0,0},
168 /*h(27)=10 OUTREG=XED_REG_DR4  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {27, 4,0},
169 /*empty slot1 */ {0,0,0},
170 /*h(24)=12 OUTREG=XED_REG_DR1  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {24, 1,0},
171 /*h(29)=13 OUTREG=XED_REG_DR6  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {29, 6,0},
172 /*empty slot1 */ {0,0,0}
173 };
174 xed_union64_t t, u;
175 xed_uint64_t key = 0;
176 xed_uint64_t hidx = 0;
177 xed3_operand_set_outreg(xes,arg_reg);
178 key = xed_enc_lu_OUTREG(xes);
179 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 15ULL, u.s.hi32);
180 if(lu_table[hidx].key == key) {
181     xed3_operand_set_reg(xes,lu_table[hidx].reg);
182     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
183     return 1;
184 }
185 else{
186     return 0;
187 }
188 }
xed_encode_ntluf_GPR64_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)189 xed_uint32_t xed_encode_ntluf_GPR64_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
190 {
191 typedef struct { xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
192 static const lu_entry_t lu_table[16] = {
193 /*h(66)=0 OUTREG=XED_REG_RAX  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0},
194 /*h(67)=1 OUTREG=XED_REG_RCX  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0},
195 /*h(68)=2 OUTREG=XED_REG_RDX  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0},
196 /*h(69)=3 OUTREG=XED_REG_RBX  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0},
197 /*h(70)=4 OUTREG=XED_REG_RSP  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0},
198 /*h(71)=5 OUTREG=XED_REG_RBP  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0},
199 /*h(72)=6 OUTREG=XED_REG_RSI  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0},
200 /*h(73)=7 OUTREG=XED_REG_RDI  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0},
201 /*h(74)=8 OUTREG=XED_REG_R8  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1},
202 /*h(75)=9 OUTREG=XED_REG_R9  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1},
203 /*h(76)=10 OUTREG=XED_REG_R10  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1},
204 /*h(77)=11 OUTREG=XED_REG_R11  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1},
205 /*h(78)=12 OUTREG=XED_REG_R12  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1},
206 /*h(79)=13 OUTREG=XED_REG_R13  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1},
207 /*h(80)=14 OUTREG=XED_REG_R14  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1},
208 /*h(81)=15 OUTREG=XED_REG_R15  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1}
209 };
210 xed_uint64_t key = 0;
211 xed_uint64_t hidx = 0;
212 xed3_operand_set_outreg(xes,arg_reg);
213 key = xed_enc_lu_OUTREG(xes);
214 hidx = key - 66;
215 if(hidx <= 15) {
216     xed3_operand_set_reg(xes,lu_table[hidx].reg);
217     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
218     return 1;
219 }
220 else{
221     return 0;
222 }
223 }
xed_encode_ntluf_rFLAGS(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)224 xed_uint32_t xed_encode_ntluf_rFLAGS(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
225 {
226 typedef struct {xed_uint32_t key; } lu_entry_t;
227 static const lu_entry_t lu_table[3] = {
228 /*h(129)=0 OUTREG=XED_REG_EFLAGS MODE=1  ->	nothing*/ {129, },
229 /*h(124)=1 OUTREG=XED_REG_FLAGS MODE=0  ->	nothing*/ {124, },
230 /*h(134)=2 OUTREG=XED_REG_RFLAGS MODE=2  ->	nothing*/ {134, }
231 };
232 xed_uint64_t key = 0;
233 xed_uint64_t hidx = 0;
234 xed3_operand_set_outreg(xes,arg_reg);
235 key = xed_enc_lu_MODE_OUTREG(xes);
236 hidx = (4*key % 3);
237 if(lu_table[hidx].key == key) {
238     return 1;
239 }
240 else{
241     return 0;
242 }
243 }
xed_encode_ntluf_VGPR32_R_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)244 xed_uint32_t xed_encode_ntluf_VGPR32_R_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
245 {
246 typedef struct { xed_int8_t reg;} lu_entry_t;
247 static const lu_entry_t lu_table[8] = {
248 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB REG=0 value=0x0*/ {0},
249 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB REG=1 value=0x1*/ {1},
250 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB REG=2 value=0x2*/ {2},
251 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB REG=3 value=0x3*/ {3},
252 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB REG=4 value=0x4*/ {4},
253 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB REG=5 value=0x5*/ {5},
254 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB REG=6 value=0x6*/ {6},
255 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB REG=7 value=0x7*/ {7}
256 };
257 xed_uint64_t key = 0;
258 xed_uint64_t hidx = 0;
259 xed3_operand_set_outreg(xes,arg_reg);
260 key = xed_enc_lu_OUTREG(xes);
261 hidx = key - 50;
262 if(hidx <= 7) {
263     xed3_operand_set_reg(xes,lu_table[hidx].reg);
264     return 1;
265 }
266 else{
267     return 0;
268 }
269 }
xed_encode_ntluf_FINAL_ESEG1(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)270 xed_uint32_t xed_encode_ntluf_FINAL_ESEG1(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
271 {
272 typedef struct {xed_uint32_t key; xed_int8_t using_default_segment1;} lu_entry_t;
273 static const lu_entry_t lu_table[3] = {
274 /*h(2)=0 OUTREG=XED_REG_INVALID MODE=2  ->	FB USING_DEFAULT_SEGMENT1=1 value=0x1*/ {2, 1},
275 /*h(596)=1 OUTREG=XED_REG_ES MODE=0  ->	FB USING_DEFAULT_SEGMENT1=1 value=0x1*/ {596, 1},
276 /*h(597)=2 OUTREG=XED_REG_ES MODE=1  ->	FB USING_DEFAULT_SEGMENT1=1 value=0x1*/ {597, 1}
277 };
278 xed_union64_t t, u;
279 xed_uint64_t key = 0;
280 xed_uint64_t hidx = 0;
281 xed3_operand_set_outreg(xes,arg_reg);
282 key = xed_enc_lu_MODE_OUTREG(xes);
283 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
284 if(lu_table[hidx].key == key) {
285     xed3_operand_set_using_default_segment1(xes,lu_table[hidx].using_default_segment1);
286     return 1;
287 }
288 else{
289     return 0;
290 }
291 }
xed_encode_ntluf_XMM_B3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)292 xed_uint32_t xed_encode_ntluf_XMM_B3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
293 {
294 typedef struct { xed_int8_t rm;} lu_entry_t;
295 static const lu_entry_t lu_table[8] = {
296 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB RM=0 value=0x0*/ {0},
297 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB RM=1 value=0x1*/ {1},
298 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB RM=2 value=0x2*/ {2},
299 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB RM=3 value=0x3*/ {3},
300 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB RM=4 value=0x4*/ {4},
301 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB RM=5 value=0x5*/ {5},
302 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB RM=6 value=0x6*/ {6},
303 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB RM=7 value=0x7*/ {7}
304 };
305 xed_uint64_t key = 0;
306 xed_uint64_t hidx = 0;
307 xed3_operand_set_outreg(xes,arg_reg);
308 key = xed_enc_lu_OUTREG(xes);
309 hidx = key - 178;
310 if(hidx <= 7) {
311     xed3_operand_set_rm(xes,lu_table[hidx].rm);
312     return 1;
313 }
314 else{
315     return 0;
316 }
317 }
xed_encode_ntluf_ArAX(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)318 xed_uint32_t xed_encode_ntluf_ArAX(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
319 {
320 typedef struct {xed_uint32_t key; } lu_entry_t;
321 static const lu_entry_t lu_table[4] = {
322 /*h(267)=0 OUTREG=XED_REG_RAX EASZ=3  ->	nothing*/ {267, },
323 /*empty slot1 */ {0},
324 /*h(137)=2 OUTREG=XED_REG_AX EASZ=1  ->	nothing*/ {137, },
325 /*h(202)=3 OUTREG=XED_REG_EAX EASZ=2  ->	nothing*/ {202, }
326 };
327 xed_union64_t t;
328 xed_uint64_t key = 0;
329 xed_uint64_t hidx = 0;
330 xed3_operand_set_outreg(xes,arg_reg);
331 key = xed_enc_lu_EASZ_OUTREG(xes);
332 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
333 if(lu_table[hidx].key == key) {
334     return 1;
335 }
336 else{
337     return 0;
338 }
339 }
xed_encode_ntluf_XMM_N3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)340 xed_uint32_t xed_encode_ntluf_XMM_N3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
341 {
342 typedef struct { xed_int8_t vexdest210;} lu_entry_t;
343 static const lu_entry_t lu_table[8] = {
344 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB VEXDEST210=7 value=0x7*/ {7},
345 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB VEXDEST210=6 value=0x6*/ {6},
346 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB VEXDEST210=5 value=0x5*/ {5},
347 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB VEXDEST210=4 value=0x4*/ {4},
348 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB VEXDEST210=3 value=0x3*/ {3},
349 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB VEXDEST210=2 value=0x2*/ {2},
350 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB VEXDEST210=1 value=0x1*/ {1},
351 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB VEXDEST210=0 value=0x0*/ {0}
352 };
353 xed_uint64_t key = 0;
354 xed_uint64_t hidx = 0;
355 xed3_operand_set_outreg(xes,arg_reg);
356 key = xed_enc_lu_OUTREG(xes);
357 hidx = key - 178;
358 if(hidx <= 7) {
359     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
360     return 1;
361 }
362 else{
363     return 0;
364 }
365 }
xed_encode_ntluf_GPRm_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)366 xed_uint32_t xed_encode_ntluf_GPRm_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
367 {
368 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
369 static const lu_entry_t lu_table[3] = {
370 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_GPR32_B},
371 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_GPR32_B},
372 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_GPR64_B}
373 };
374 xed_uint64_t key = 0;
375 xed_uint64_t hidx = 0;
376 xed_uint64_t res = 1;
377 xed3_operand_set_outreg(xes,arg_reg);
378 key = xed_enc_lu_MODE(xes);
379 hidx = key - 0;
380 if(hidx <= 2) {
381     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
382     return res;
383     return 1;
384 }
385 else{
386     return 0;
387 }
388 }
xed_encode_ntluf_SEG(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)389 xed_uint32_t xed_encode_ntluf_SEG(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
390 {
391 typedef struct {xed_uint32_t key; xed_int8_t reg;} lu_entry_t;
392 static const lu_entry_t lu_table[12] = {
393 /*h(102)=0 OUTREG=XED_REG_ERROR  ->	FB REG=6 value=0x6*/ {102, 6},
394 /*h(149)=1 OUTREG=XED_REG_ES  ->	FB REG=0 value=0x0*/ {149, 0},
395 /*empty slot1 */ {0,0},
396 /*h(151)=3 OUTREG=XED_REG_FS  ->	FB REG=4 value=0x4*/ {151, 4},
397 /*empty slot1 */ {0,0},
398 /*h(148)=5 OUTREG=XED_REG_DS  ->	FB REG=3 value=0x3*/ {148, 3},
399 /*empty slot1 */ {0,0},
400 /*empty slot1 */ {0,0},
401 /*h(150)=8 OUTREG=XED_REG_SS  ->	FB REG=2 value=0x2*/ {150, 2},
402 /*empty slot1 */ {0,0},
403 /*h(147)=10 OUTREG=XED_REG_CS  ->	FB REG=1 value=0x1*/ {147, 1},
404 /*h(152)=11 OUTREG=XED_REG_GS  ->	FB REG=5 value=0x5*/ {152, 5}
405 };
406 xed_union64_t t, u;
407 xed_uint64_t key = 0;
408 xed_uint64_t hidx = 0;
409 xed3_operand_set_outreg(xes,arg_reg);
410 key = xed_enc_lu_OUTREG(xes);
411 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 12ULL, u.s.hi32);
412 if(lu_table[hidx].key == key) {
413     xed3_operand_set_reg(xes,lu_table[hidx].reg);
414     return 1;
415 }
416 else{
417     return 0;
418 }
419 }
xed_encode_ntluf_ArDI(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)420 xed_uint32_t xed_encode_ntluf_ArDI(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
421 {
422 typedef struct {xed_uint32_t key; } lu_entry_t;
423 static const lu_entry_t lu_table[4] = {
424 /*h(230)=0 OUTREG=XED_REG_EDI EASZ=2  ->	nothing*/ {230, },
425 /*h(295)=1 OUTREG=XED_REG_RDI EASZ=3  ->	nothing*/ {295, },
426 /*empty slot1 */ {0},
427 /*h(165)=3 OUTREG=XED_REG_DI EASZ=1  ->	nothing*/ {165, }
428 };
429 xed_union64_t t;
430 xed_uint64_t key = 0;
431 xed_uint64_t hidx = 0;
432 xed3_operand_set_outreg(xes,arg_reg);
433 key = xed_enc_lu_EASZ_OUTREG(xes);
434 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
435 if(lu_table[hidx].key == key) {
436     return 1;
437 }
438 else{
439     return 0;
440 }
441 }
xed_encode_ntluf_XMM_R3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)442 xed_uint32_t xed_encode_ntluf_XMM_R3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
443 {
444 typedef struct { xed_int8_t reg;} lu_entry_t;
445 static const lu_entry_t lu_table[8] = {
446 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB REG=0 value=0x0*/ {0},
447 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB REG=1 value=0x1*/ {1},
448 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB REG=2 value=0x2*/ {2},
449 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB REG=3 value=0x3*/ {3},
450 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB REG=4 value=0x4*/ {4},
451 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB REG=5 value=0x5*/ {5},
452 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB REG=6 value=0x6*/ {6},
453 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB REG=7 value=0x7*/ {7}
454 };
455 xed_uint64_t key = 0;
456 xed_uint64_t hidx = 0;
457 xed3_operand_set_outreg(xes,arg_reg);
458 key = xed_enc_lu_OUTREG(xes);
459 hidx = key - 178;
460 if(hidx <= 7) {
461     xed3_operand_set_reg(xes,lu_table[hidx].reg);
462     return 1;
463 }
464 else{
465     return 0;
466 }
467 }
xed_encode_ntluf_ZMM_R3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)468 xed_uint32_t xed_encode_ntluf_ZMM_R3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
469 {
470 typedef struct { xed_int8_t reg ;xed_int8_t rexr ;xed_int8_t rexrr;} lu_entry_t;
471 static const lu_entry_t lu_table[32] = {
472 /*h(242)=0 OUTREG=XED_REG_ZMM0  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0,0},
473 /*h(243)=1 OUTREG=XED_REG_ZMM1  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0,0},
474 /*h(244)=2 OUTREG=XED_REG_ZMM2  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0,0},
475 /*h(245)=3 OUTREG=XED_REG_ZMM3  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0,0},
476 /*h(246)=4 OUTREG=XED_REG_ZMM4  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0,0},
477 /*h(247)=5 OUTREG=XED_REG_ZMM5  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0,0},
478 /*h(248)=6 OUTREG=XED_REG_ZMM6  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0,0},
479 /*h(249)=7 OUTREG=XED_REG_ZMM7  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0,0},
480 /*h(250)=8 OUTREG=XED_REG_ZMM8  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1,0},
481 /*h(251)=9 OUTREG=XED_REG_ZMM9  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1,0},
482 /*h(252)=10 OUTREG=XED_REG_ZMM10  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1,0},
483 /*h(253)=11 OUTREG=XED_REG_ZMM11  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1,0},
484 /*h(254)=12 OUTREG=XED_REG_ZMM12  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1,0},
485 /*h(255)=13 OUTREG=XED_REG_ZMM13  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1,0},
486 /*h(256)=14 OUTREG=XED_REG_ZMM14  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1,0},
487 /*h(257)=15 OUTREG=XED_REG_ZMM15  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1,0},
488 /*h(258)=16 OUTREG=XED_REG_ZMM16  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0,1},
489 /*h(259)=17 OUTREG=XED_REG_ZMM17  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0,1},
490 /*h(260)=18 OUTREG=XED_REG_ZMM18  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0,1},
491 /*h(261)=19 OUTREG=XED_REG_ZMM19  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0,1},
492 /*h(262)=20 OUTREG=XED_REG_ZMM20  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0,1},
493 /*h(263)=21 OUTREG=XED_REG_ZMM21  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0,1},
494 /*h(264)=22 OUTREG=XED_REG_ZMM22  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0,1},
495 /*h(265)=23 OUTREG=XED_REG_ZMM23  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0,1},
496 /*h(266)=24 OUTREG=XED_REG_ZMM24  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1,1},
497 /*h(267)=25 OUTREG=XED_REG_ZMM25  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1,1},
498 /*h(268)=26 OUTREG=XED_REG_ZMM26  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1,1},
499 /*h(269)=27 OUTREG=XED_REG_ZMM27  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1,1},
500 /*h(270)=28 OUTREG=XED_REG_ZMM28  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1,1},
501 /*h(271)=29 OUTREG=XED_REG_ZMM29  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1,1},
502 /*h(272)=30 OUTREG=XED_REG_ZMM30  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1,1},
503 /*h(273)=31 OUTREG=XED_REG_ZMM31  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1,1}
504 };
505 xed_uint64_t key = 0;
506 xed_uint64_t hidx = 0;
507 xed3_operand_set_outreg(xes,arg_reg);
508 key = xed_enc_lu_OUTREG(xes);
509 hidx = key - 242;
510 if(hidx <= 31) {
511     xed3_operand_set_reg(xes,lu_table[hidx].reg);
512     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
513     xed3_operand_set_rexrr(xes,lu_table[hidx].rexrr);
514     return 1;
515 }
516 else{
517     return 0;
518 }
519 }
xed_encode_ntluf_SrBP(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)520 xed_uint32_t xed_encode_ntluf_SrBP(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
521 {
522 typedef struct {xed_uint32_t key; } lu_entry_t;
523 static const lu_entry_t lu_table[3] = {
524 /*h(39)=0 OUTREG=XED_REG_BP SMODE=0  ->	nothing*/ {39, },
525 /*h(567)=1 OUTREG=XED_REG_EBP SMODE=1  ->	nothing*/ {567, },
526 /*h(1095)=2 OUTREG=XED_REG_RBP SMODE=2  ->	nothing*/ {1095, }
527 };
528 xed_union64_t t, u;
529 xed_uint64_t key = 0;
530 xed_uint64_t hidx = 0;
531 xed3_operand_set_outreg(xes,arg_reg);
532 key = xed_enc_lu_OUTREG_SMODE(xes);
533 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
534 if(lu_table[hidx].key == key) {
535     return 1;
536 }
537 else{
538     return 0;
539 }
540 }
xed_encode_ntluf_MMX_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)541 xed_uint32_t xed_encode_ntluf_MMX_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
542 {
543 typedef struct { xed_int8_t rm;} lu_entry_t;
544 static const lu_entry_t lu_table[8] = {
545 /*h(114)=0 OUTREG=XED_REG_MMX0  ->	FB RM=0 value=0x0*/ {0},
546 /*h(115)=1 OUTREG=XED_REG_MMX1  ->	FB RM=1 value=0x1*/ {1},
547 /*h(116)=2 OUTREG=XED_REG_MMX2  ->	FB RM=2 value=0x2*/ {2},
548 /*h(117)=3 OUTREG=XED_REG_MMX3  ->	FB RM=3 value=0x3*/ {3},
549 /*h(118)=4 OUTREG=XED_REG_MMX4  ->	FB RM=4 value=0x4*/ {4},
550 /*h(119)=5 OUTREG=XED_REG_MMX5  ->	FB RM=5 value=0x5*/ {5},
551 /*h(120)=6 OUTREG=XED_REG_MMX6  ->	FB RM=6 value=0x6*/ {6},
552 /*h(121)=7 OUTREG=XED_REG_MMX7  ->	FB RM=7 value=0x7*/ {7}
553 };
554 xed_uint64_t key = 0;
555 xed_uint64_t hidx = 0;
556 xed3_operand_set_outreg(xes,arg_reg);
557 key = xed_enc_lu_OUTREG(xes);
558 hidx = key - 114;
559 if(hidx <= 7) {
560     xed3_operand_set_rm(xes,lu_table[hidx].rm);
561     return 1;
562 }
563 else{
564     return 0;
565 }
566 }
xed_encode_ntluf_YMM_B3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)567 xed_uint32_t xed_encode_ntluf_YMM_B3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
568 {
569 typedef struct { xed_int8_t rm;} lu_entry_t;
570 static const lu_entry_t lu_table[8] = {
571 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB RM=0 value=0x0*/ {0},
572 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB RM=1 value=0x1*/ {1},
573 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB RM=2 value=0x2*/ {2},
574 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB RM=3 value=0x3*/ {3},
575 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB RM=4 value=0x4*/ {4},
576 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB RM=5 value=0x5*/ {5},
577 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB RM=6 value=0x6*/ {6},
578 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB RM=7 value=0x7*/ {7}
579 };
580 xed_uint64_t key = 0;
581 xed_uint64_t hidx = 0;
582 xed3_operand_set_outreg(xes,arg_reg);
583 key = xed_enc_lu_OUTREG(xes);
584 hidx = key - 210;
585 if(hidx <= 7) {
586     xed3_operand_set_rm(xes,lu_table[hidx].rm);
587     return 1;
588 }
589 else{
590     return 0;
591 }
592 }
xed_encode_ntluf_ZMM_B3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)593 xed_uint32_t xed_encode_ntluf_ZMM_B3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
594 {
595 typedef struct { xed_int8_t rexb ;xed_int8_t rexx ;xed_int8_t rm;} lu_entry_t;
596 static const lu_entry_t lu_table[32] = {
597 /*h(242)=0 OUTREG=XED_REG_ZMM0  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0,0},
598 /*h(243)=1 OUTREG=XED_REG_ZMM1  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,0,1},
599 /*h(244)=2 OUTREG=XED_REG_ZMM2  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,0,2},
600 /*h(245)=3 OUTREG=XED_REG_ZMM3  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,0,3},
601 /*h(246)=4 OUTREG=XED_REG_ZMM4  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,0,4},
602 /*h(247)=5 OUTREG=XED_REG_ZMM5  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,0,5},
603 /*h(248)=6 OUTREG=XED_REG_ZMM6  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,0,6},
604 /*h(249)=7 OUTREG=XED_REG_ZMM7  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,0,7},
605 /*h(250)=8 OUTREG=XED_REG_ZMM8  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0,0},
606 /*h(251)=9 OUTREG=XED_REG_ZMM9  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,0,1},
607 /*h(252)=10 OUTREG=XED_REG_ZMM10  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,0,2},
608 /*h(253)=11 OUTREG=XED_REG_ZMM11  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,0,3},
609 /*h(254)=12 OUTREG=XED_REG_ZMM12  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,0,4},
610 /*h(255)=13 OUTREG=XED_REG_ZMM13  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,0,5},
611 /*h(256)=14 OUTREG=XED_REG_ZMM14  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,0,6},
612 /*h(257)=15 OUTREG=XED_REG_ZMM15  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,0,7},
613 /*h(258)=16 OUTREG=XED_REG_ZMM16  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,1,0},
614 /*h(259)=17 OUTREG=XED_REG_ZMM17  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1,1},
615 /*h(260)=18 OUTREG=XED_REG_ZMM18  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,1,2},
616 /*h(261)=19 OUTREG=XED_REG_ZMM19  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,1,3},
617 /*h(262)=20 OUTREG=XED_REG_ZMM20  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,1,4},
618 /*h(263)=21 OUTREG=XED_REG_ZMM21  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,1,5},
619 /*h(264)=22 OUTREG=XED_REG_ZMM22  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,1,6},
620 /*h(265)=23 OUTREG=XED_REG_ZMM23  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,1,7},
621 /*h(266)=24 OUTREG=XED_REG_ZMM24  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,1,0},
622 /*h(267)=25 OUTREG=XED_REG_ZMM25  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1,1},
623 /*h(268)=26 OUTREG=XED_REG_ZMM26  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,1,2},
624 /*h(269)=27 OUTREG=XED_REG_ZMM27  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,1,3},
625 /*h(270)=28 OUTREG=XED_REG_ZMM28  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,1,4},
626 /*h(271)=29 OUTREG=XED_REG_ZMM29  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,1,5},
627 /*h(272)=30 OUTREG=XED_REG_ZMM30  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,1,6},
628 /*h(273)=31 OUTREG=XED_REG_ZMM31  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,1,7}
629 };
630 xed_uint64_t key = 0;
631 xed_uint64_t hidx = 0;
632 xed3_operand_set_outreg(xes,arg_reg);
633 key = xed_enc_lu_OUTREG(xes);
634 hidx = key - 242;
635 if(hidx <= 31) {
636     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
637     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
638     xed3_operand_set_rm(xes,lu_table[hidx].rm);
639     return 1;
640 }
641 else{
642     return 0;
643 }
644 }
xed_encode_ntluf_MASK1(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)645 xed_uint32_t xed_encode_ntluf_MASK1(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
646 {
647 typedef struct { xed_int8_t mask;} lu_entry_t;
648 static const lu_entry_t lu_table[8] = {
649 /*h(106)=0 OUTREG=XED_REG_K0  ->	FB MASK=0 value=0x0*/ {0},
650 /*h(107)=1 OUTREG=XED_REG_K1  ->	FB MASK=1 value=0x1*/ {1},
651 /*h(108)=2 OUTREG=XED_REG_K2  ->	FB MASK=2 value=0x2*/ {2},
652 /*h(109)=3 OUTREG=XED_REG_K3  ->	FB MASK=3 value=0x3*/ {3},
653 /*h(110)=4 OUTREG=XED_REG_K4  ->	FB MASK=4 value=0x4*/ {4},
654 /*h(111)=5 OUTREG=XED_REG_K5  ->	FB MASK=5 value=0x5*/ {5},
655 /*h(112)=6 OUTREG=XED_REG_K6  ->	FB MASK=6 value=0x6*/ {6},
656 /*h(113)=7 OUTREG=XED_REG_K7  ->	FB MASK=7 value=0x7*/ {7}
657 };
658 xed_uint64_t key = 0;
659 xed_uint64_t hidx = 0;
660 xed3_operand_set_outreg(xes,arg_reg);
661 key = xed_enc_lu_OUTREG(xes);
662 hidx = key - 106;
663 if(hidx <= 7) {
664     xed3_operand_set_mask(xes,lu_table[hidx].mask);
665     return 1;
666 }
667 else{
668     return 0;
669 }
670 }
xed_encode_ntluf_MMX_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)671 xed_uint32_t xed_encode_ntluf_MMX_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
672 {
673 typedef struct { xed_int8_t reg;} lu_entry_t;
674 static const lu_entry_t lu_table[8] = {
675 /*h(114)=0 OUTREG=XED_REG_MMX0  ->	FB REG=0 value=0x0*/ {0},
676 /*h(115)=1 OUTREG=XED_REG_MMX1  ->	FB REG=1 value=0x1*/ {1},
677 /*h(116)=2 OUTREG=XED_REG_MMX2  ->	FB REG=2 value=0x2*/ {2},
678 /*h(117)=3 OUTREG=XED_REG_MMX3  ->	FB REG=3 value=0x3*/ {3},
679 /*h(118)=4 OUTREG=XED_REG_MMX4  ->	FB REG=4 value=0x4*/ {4},
680 /*h(119)=5 OUTREG=XED_REG_MMX5  ->	FB REG=5 value=0x5*/ {5},
681 /*h(120)=6 OUTREG=XED_REG_MMX6  ->	FB REG=6 value=0x6*/ {6},
682 /*h(121)=7 OUTREG=XED_REG_MMX7  ->	FB REG=7 value=0x7*/ {7}
683 };
684 xed_uint64_t key = 0;
685 xed_uint64_t hidx = 0;
686 xed3_operand_set_outreg(xes,arg_reg);
687 key = xed_enc_lu_OUTREG(xes);
688 hidx = key - 114;
689 if(hidx <= 7) {
690     xed3_operand_set_reg(xes,lu_table[hidx].reg);
691     return 1;
692 }
693 else{
694     return 0;
695 }
696 }
xed_encode_ntluf_XMM_R_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)697 xed_uint32_t xed_encode_ntluf_XMM_R_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
698 {
699 typedef struct { xed_int8_t reg;} lu_entry_t;
700 static const lu_entry_t lu_table[8] = {
701 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB REG=0 value=0x0*/ {0},
702 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB REG=1 value=0x1*/ {1},
703 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB REG=2 value=0x2*/ {2},
704 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB REG=3 value=0x3*/ {3},
705 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB REG=4 value=0x4*/ {4},
706 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB REG=5 value=0x5*/ {5},
707 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB REG=6 value=0x6*/ {6},
708 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB REG=7 value=0x7*/ {7}
709 };
710 xed_uint64_t key = 0;
711 xed_uint64_t hidx = 0;
712 xed3_operand_set_outreg(xes,arg_reg);
713 key = xed_enc_lu_OUTREG(xes);
714 hidx = key - 178;
715 if(hidx <= 7) {
716     xed3_operand_set_reg(xes,lu_table[hidx].reg);
717     return 1;
718 }
719 else{
720     return 0;
721 }
722 }
xed_encode_ntluf_FINAL_DSEG_NOT64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)723 xed_uint32_t xed_encode_ntluf_FINAL_DSEG_NOT64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
724 {
725 typedef struct { xed_int8_t seg_ovd ;xed_int8_t using_default_segment0;} lu_entry_t;
726 static const lu_entry_t lu_table[6] = {
727 /*h(147)=0 OUTREG=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {1,0},
728 /*h(148)=1 OUTREG=XED_REG_DS  ->	FB SEG_OVD=0 value=0x0 	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {0,1},
729 /*h(149)=2 OUTREG=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {3,0},
730 /*h(150)=3 OUTREG=XED_REG_SS  ->	FB SEG_OVD=6 value=0x6 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {6,0},
731 /*h(151)=4 OUTREG=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {4,0},
732 /*h(152)=5 OUTREG=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {5,0}
733 };
734 xed_uint64_t key = 0;
735 xed_uint64_t hidx = 0;
736 xed3_operand_set_outreg(xes,arg_reg);
737 key = xed_enc_lu_OUTREG(xes);
738 hidx = key - 147;
739 if(hidx <= 5) {
740     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
741     xed3_operand_set_using_default_segment0(xes,lu_table[hidx].using_default_segment0);
742     return 1;
743 }
744 else{
745     return 0;
746 }
747 }
xed_encode_ntluf_MASK_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)748 xed_uint32_t xed_encode_ntluf_MASK_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
749 {
750 typedef struct { xed_int8_t reg ;xed_int8_t rexr ;xed_int8_t rexrr;} lu_entry_t;
751 static const lu_entry_t lu_table[8] = {
752 /*h(106)=0 OUTREG=XED_REG_K0  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0,0},
753 /*h(107)=1 OUTREG=XED_REG_K1  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0,0},
754 /*h(108)=2 OUTREG=XED_REG_K2  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0,0},
755 /*h(109)=3 OUTREG=XED_REG_K3  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0,0},
756 /*h(110)=4 OUTREG=XED_REG_K4  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0,0},
757 /*h(111)=5 OUTREG=XED_REG_K5  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0,0},
758 /*h(112)=6 OUTREG=XED_REG_K6  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0,0},
759 /*h(113)=7 OUTREG=XED_REG_K7  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0,0}
760 };
761 xed_uint64_t key = 0;
762 xed_uint64_t hidx = 0;
763 xed3_operand_set_outreg(xes,arg_reg);
764 key = xed_enc_lu_OUTREG(xes);
765 hidx = key - 106;
766 if(hidx <= 7) {
767     xed3_operand_set_reg(xes,lu_table[hidx].reg);
768     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
769     xed3_operand_set_rexrr(xes,lu_table[hidx].rexrr);
770     return 1;
771 }
772 else{
773     return 0;
774 }
775 }
xed_encode_ntluf_ArBP(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)776 xed_uint32_t xed_encode_ntluf_ArBP(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
777 {
778 typedef struct {xed_uint32_t key; } lu_entry_t;
779 static const lu_entry_t lu_table[6] = {
780 /*h(157)=0 OUTREG=XED_REG_BP EASZ=1  ->	nothing*/ {157, },
781 /*h(222)=1 OUTREG=XED_REG_EBP EASZ=2  ->	nothing*/ {222, },
782 /*h(287)=2 OUTREG=XED_REG_RBP EASZ=3  ->	nothing*/ {287, },
783 /*empty slot1 */ {0},
784 /*empty slot1 */ {0},
785 /*empty slot1 */ {0}
786 };
787 xed_union64_t t, u;
788 xed_uint64_t key = 0;
789 xed_uint64_t hidx = 0;
790 xed3_operand_set_outreg(xes,arg_reg);
791 key = xed_enc_lu_EASZ_OUTREG(xes);
792 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
793 if(lu_table[hidx].key == key) {
794     return 1;
795 }
796 else{
797     return 0;
798 }
799 }
xed_encode_ntluf_VGPR32_R_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)800 xed_uint32_t xed_encode_ntluf_VGPR32_R_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
801 {
802 typedef struct { xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
803 static const lu_entry_t lu_table[16] = {
804 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0},
805 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0},
806 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0},
807 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0},
808 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0},
809 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0},
810 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0},
811 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0},
812 /*h(58)=8 OUTREG=XED_REG_R8D  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1},
813 /*h(59)=9 OUTREG=XED_REG_R9D  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1},
814 /*h(60)=10 OUTREG=XED_REG_R10D  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1},
815 /*h(61)=11 OUTREG=XED_REG_R11D  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1},
816 /*h(62)=12 OUTREG=XED_REG_R12D  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1},
817 /*h(63)=13 OUTREG=XED_REG_R13D  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1},
818 /*h(64)=14 OUTREG=XED_REG_R14D  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1},
819 /*h(65)=15 OUTREG=XED_REG_R15D  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1}
820 };
821 xed_uint64_t key = 0;
822 xed_uint64_t hidx = 0;
823 xed3_operand_set_outreg(xes,arg_reg);
824 key = xed_enc_lu_OUTREG(xes);
825 hidx = key - 50;
826 if(hidx <= 15) {
827     xed3_operand_set_reg(xes,lu_table[hidx].reg);
828     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
829     return 1;
830 }
831 else{
832     return 0;
833 }
834 }
xed_encode_ntluf_CR_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)835 xed_uint32_t xed_encode_ntluf_CR_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
836 {
837 typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
838 static const lu_entry_t lu_table[10] = {
839 /*h(102)=0 OUTREG=XED_REG_ERROR  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {102, 0,1},
840 /*h(10)=1 OUTREG=XED_REG_CR3  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {10, 0,3},
841 /*h(15)=2 OUTREG=XED_REG_CR8  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {15, 1,0},
842 /*h(7)=3 OUTREG=XED_REG_CR0  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {7, 0,0},
843 /*empty slot1 */ {0,0,0},
844 /*h(9)=5 OUTREG=XED_REG_CR2  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {9, 0,2},
845 /*empty slot1 */ {0,0,0},
846 /*h(11)=7 OUTREG=XED_REG_CR4  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {11, 0,4},
847 /*empty slot1 */ {0,0,0},
848 /*empty slot1 */ {0,0,0}
849 };
850 xed_union64_t t, u;
851 xed_uint64_t key = 0;
852 xed_uint64_t hidx = 0;
853 xed3_operand_set_outreg(xes,arg_reg);
854 key = xed_enc_lu_OUTREG(xes);
855 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 10ULL, u.s.hi32);
856 if(lu_table[hidx].key == key) {
857     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
858     xed3_operand_set_rm(xes,lu_table[hidx].rm);
859     return 1;
860 }
861 else{
862     return 0;
863 }
864 }
xed_encode_ntluf_XMM_N_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)865 xed_uint32_t xed_encode_ntluf_XMM_N_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
866 {
867 typedef struct { xed_int8_t vexdest210 ;xed_int8_t vexdest3;} lu_entry_t;
868 static const lu_entry_t lu_table[16] = {
869 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1},
870 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1},
871 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1},
872 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1},
873 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1},
874 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1},
875 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1},
876 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1},
877 /*h(186)=8 OUTREG=XED_REG_XMM8  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0},
878 /*h(187)=9 OUTREG=XED_REG_XMM9  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0},
879 /*h(188)=10 OUTREG=XED_REG_XMM10  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0},
880 /*h(189)=11 OUTREG=XED_REG_XMM11  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0},
881 /*h(190)=12 OUTREG=XED_REG_XMM12  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0},
882 /*h(191)=13 OUTREG=XED_REG_XMM13  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0},
883 /*h(192)=14 OUTREG=XED_REG_XMM14  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0},
884 /*h(193)=15 OUTREG=XED_REG_XMM15  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0}
885 };
886 xed_uint64_t key = 0;
887 xed_uint64_t hidx = 0;
888 xed3_operand_set_outreg(xes,arg_reg);
889 key = xed_enc_lu_OUTREG(xes);
890 hidx = key - 178;
891 if(hidx <= 15) {
892     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
893     xed3_operand_set_vexdest3(xes,lu_table[hidx].vexdest3);
894     return 1;
895 }
896 else{
897     return 0;
898 }
899 }
xed_encode_ntluf_ArBX(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)900 xed_uint32_t xed_encode_ntluf_ArBX(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
901 {
902 typedef struct {xed_uint32_t key; } lu_entry_t;
903 static const lu_entry_t lu_table[5] = {
904 /*h(149)=0 OUTREG=XED_REG_BX EASZ=1  ->	nothing*/ {149, },
905 /*h(214)=1 OUTREG=XED_REG_EBX EASZ=2  ->	nothing*/ {214, },
906 /*h(279)=2 OUTREG=XED_REG_RBX EASZ=3  ->	nothing*/ {279, },
907 /*empty slot1 */ {0},
908 /*empty slot1 */ {0}
909 };
910 xed_union64_t t, u;
911 xed_uint64_t key = 0;
912 xed_uint64_t hidx = 0;
913 xed3_operand_set_outreg(xes,arg_reg);
914 key = xed_enc_lu_EASZ_OUTREG(xes);
915 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
916 if(lu_table[hidx].key == key) {
917     return 1;
918 }
919 else{
920     return 0;
921 }
922 }
xed_encode_ntluf_MASK_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)923 xed_uint32_t xed_encode_ntluf_MASK_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
924 {
925 typedef struct { xed_int8_t rm;} lu_entry_t;
926 static const lu_entry_t lu_table[8] = {
927 /*h(106)=0 OUTREG=XED_REG_K0  ->	FB RM=0 value=0x0*/ {0},
928 /*h(107)=1 OUTREG=XED_REG_K1  ->	FB RM=1 value=0x1*/ {1},
929 /*h(108)=2 OUTREG=XED_REG_K2  ->	FB RM=2 value=0x2*/ {2},
930 /*h(109)=3 OUTREG=XED_REG_K3  ->	FB RM=3 value=0x3*/ {3},
931 /*h(110)=4 OUTREG=XED_REG_K4  ->	FB RM=4 value=0x4*/ {4},
932 /*h(111)=5 OUTREG=XED_REG_K5  ->	FB RM=5 value=0x5*/ {5},
933 /*h(112)=6 OUTREG=XED_REG_K6  ->	FB RM=6 value=0x6*/ {6},
934 /*h(113)=7 OUTREG=XED_REG_K7  ->	FB RM=7 value=0x7*/ {7}
935 };
936 xed_uint64_t key = 0;
937 xed_uint64_t hidx = 0;
938 xed3_operand_set_outreg(xes,arg_reg);
939 key = xed_enc_lu_OUTREG(xes);
940 hidx = key - 106;
941 if(hidx <= 7) {
942     xed3_operand_set_rm(xes,lu_table[hidx].rm);
943     return 1;
944 }
945 else{
946     return 0;
947 }
948 }
xed_encode_ntluf_VGPR32_N(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)949 xed_uint32_t xed_encode_ntluf_VGPR32_N(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
950 {
951 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
952 static const lu_entry_t lu_table[3] = {
953 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_VGPR32_N_32},
954 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_VGPR32_N_32},
955 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_VGPR32_N_64}
956 };
957 xed_uint64_t key = 0;
958 xed_uint64_t hidx = 0;
959 xed_uint64_t res = 1;
960 xed3_operand_set_outreg(xes,arg_reg);
961 key = xed_enc_lu_MODE(xes);
962 hidx = key - 0;
963 if(hidx <= 2) {
964     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
965     return res;
966     return 1;
967 }
968 else{
969     return 0;
970 }
971 }
xed_encode_ntluf_YMM_R_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)972 xed_uint32_t xed_encode_ntluf_YMM_R_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
973 {
974 typedef struct { xed_int8_t reg;} lu_entry_t;
975 static const lu_entry_t lu_table[8] = {
976 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB REG=0 value=0x0*/ {0},
977 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB REG=1 value=0x1*/ {1},
978 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB REG=2 value=0x2*/ {2},
979 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB REG=3 value=0x3*/ {3},
980 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB REG=4 value=0x4*/ {4},
981 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB REG=5 value=0x5*/ {5},
982 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB REG=6 value=0x6*/ {6},
983 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB REG=7 value=0x7*/ {7}
984 };
985 xed_uint64_t key = 0;
986 xed_uint64_t hidx = 0;
987 xed3_operand_set_outreg(xes,arg_reg);
988 key = xed_enc_lu_OUTREG(xes);
989 hidx = key - 210;
990 if(hidx <= 7) {
991     xed3_operand_set_reg(xes,lu_table[hidx].reg);
992     return 1;
993 }
994 else{
995     return 0;
996 }
997 }
xed_encode_ntluf_A_GPR_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)998 xed_uint32_t xed_encode_ntluf_A_GPR_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
999 {
1000 typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
1001 static const lu_entry_t lu_table[96] = {
1002 /*h(206)=0 OUTREG=XED_REG_ECX EASZ=2  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {206, 0,1},
1003 /*empty slot1 */ {0,0,0},
1004 /*h(149)=2 OUTREG=XED_REG_BX EASZ=1  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {149, 0,3},
1005 /*h(275)=3 OUTREG=XED_REG_RDX EASZ=3  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {275, 0,2},
1006 /*h(137)=4 OUTREG=XED_REG_AX EASZ=1  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {137, 0,0},
1007 /*h(218)=5 OUTREG=XED_REG_ESP EASZ=2  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {218, 0,4},
1008 /*empty slot1 */ {0,0,0},
1009 /*h(161)=7 OUTREG=XED_REG_SI EASZ=1  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {161, 0,6},
1010 /*h(287)=8 OUTREG=XED_REG_RBP EASZ=3  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {287, 0,5},
1011 /*empty slot1 */ {0,0,0},
1012 /*h(230)=10 OUTREG=XED_REG_EDI EASZ=2  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {230, 0,7},
1013 /*empty slot1 */ {0,0,0},
1014 /*h(173)=12 OUTREG=XED_REG_R9W EASZ=1  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {173, 1,1},
1015 /*h(299)=13 OUTREG=XED_REG_R8 EASZ=3  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {299, 1,0},
1016 /*empty slot1 */ {0,0,0},
1017 /*h(242)=15 OUTREG=XED_REG_R10D EASZ=2  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {242, 1,2},
1018 /*empty slot1 */ {0,0,0},
1019 /*h(185)=17 OUTREG=XED_REG_R12W EASZ=1  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {185, 1,4},
1020 /*h(311)=18 OUTREG=XED_REG_R11 EASZ=3  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {311, 1,3},
1021 /*empty slot1 */ {0,0,0},
1022 /*h(254)=20 OUTREG=XED_REG_R13D EASZ=2  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {254, 1,5},
1023 /*empty slot1 */ {0,0,0},
1024 /*h(197)=22 OUTREG=XED_REG_R15W EASZ=1  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {197, 1,7},
1025 /*h(323)=23 OUTREG=XED_REG_R14 EASZ=3  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {323, 1,6},
1026 /*empty slot1 */ {0,0,0},
1027 /*empty slot1 */ {0,0,0},
1028 /*empty slot1 */ {0,0,0},
1029 /*empty slot1 */ {0,0,0},
1030 /*empty slot1 */ {0,0,0},
1031 /*empty slot1 */ {0,0,0},
1032 /*empty slot1 */ {0,0,0},
1033 /*empty slot1 */ {0,0,0},
1034 /*empty slot1 */ {0,0,0},
1035 /*h(141)=33 OUTREG=XED_REG_CX EASZ=1  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {141, 0,1},
1036 /*h(267)=34 OUTREG=XED_REG_RAX EASZ=3  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {267, 0,0},
1037 /*empty slot1 */ {0,0,0},
1038 /*h(210)=36 OUTREG=XED_REG_EDX EASZ=2  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {210, 0,2},
1039 /*empty slot1 */ {0,0,0},
1040 /*h(153)=38 OUTREG=XED_REG_SP EASZ=1  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {153, 0,4},
1041 /*h(279)=39 OUTREG=XED_REG_RBX EASZ=3  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {279, 0,3},
1042 /*empty slot1 */ {0,0,0},
1043 /*h(222)=41 OUTREG=XED_REG_EBP EASZ=2  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {222, 0,5},
1044 /*empty slot1 */ {0,0,0},
1045 /*h(165)=43 OUTREG=XED_REG_DI EASZ=1  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {165, 0,7},
1046 /*h(291)=44 OUTREG=XED_REG_RSI EASZ=3  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {291, 0,6},
1047 /*empty slot1 */ {0,0,0},
1048 /*h(234)=46 OUTREG=XED_REG_R8D EASZ=2  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {234, 1,0},
1049 /*empty slot1 */ {0,0,0},
1050 /*h(177)=48 OUTREG=XED_REG_R10W EASZ=1  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {177, 1,2},
1051 /*h(303)=49 OUTREG=XED_REG_R9 EASZ=3  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {303, 1,1},
1052 /*empty slot1 */ {0,0,0},
1053 /*h(246)=51 OUTREG=XED_REG_R11D EASZ=2  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {246, 1,3},
1054 /*empty slot1 */ {0,0,0},
1055 /*h(189)=53 OUTREG=XED_REG_R13W EASZ=1  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {189, 1,5},
1056 /*h(315)=54 OUTREG=XED_REG_R12 EASZ=3  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {315, 1,4},
1057 /*empty slot1 */ {0,0,0},
1058 /*h(258)=56 OUTREG=XED_REG_R14D EASZ=2  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {258, 1,6},
1059 /*empty slot1 */ {0,0,0},
1060 /*empty slot1 */ {0,0,0},
1061 /*h(327)=59 OUTREG=XED_REG_R15 EASZ=3  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {327, 1,7},
1062 /*empty slot1 */ {0,0,0},
1063 /*empty slot1 */ {0,0,0},
1064 /*empty slot1 */ {0,0,0},
1065 /*empty slot1 */ {0,0,0},
1066 /*empty slot1 */ {0,0,0},
1067 /*empty slot1 */ {0,0,0},
1068 /*empty slot1 */ {0,0,0},
1069 /*h(202)=67 OUTREG=XED_REG_EAX EASZ=2  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {202, 0,0},
1070 /*empty slot1 */ {0,0,0},
1071 /*h(145)=69 OUTREG=XED_REG_DX EASZ=1  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {145, 0,2},
1072 /*h(271)=70 OUTREG=XED_REG_RCX EASZ=3  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {271, 0,1},
1073 /*empty slot1 */ {0,0,0},
1074 /*h(214)=72 OUTREG=XED_REG_EBX EASZ=2  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {214, 0,3},
1075 /*empty slot1 */ {0,0,0},
1076 /*h(157)=74 OUTREG=XED_REG_BP EASZ=1  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {157, 0,5},
1077 /*h(283)=75 OUTREG=XED_REG_RSP EASZ=3  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {283, 0,4},
1078 /*empty slot1 */ {0,0,0},
1079 /*h(226)=77 OUTREG=XED_REG_ESI EASZ=2  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {226, 0,6},
1080 /*empty slot1 */ {0,0,0},
1081 /*h(169)=79 OUTREG=XED_REG_R8W EASZ=1  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {169, 1,0},
1082 /*h(295)=80 OUTREG=XED_REG_RDI EASZ=3  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {295, 0,7},
1083 /*empty slot1 */ {0,0,0},
1084 /*h(238)=82 OUTREG=XED_REG_R9D EASZ=2  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {238, 1,1},
1085 /*empty slot1 */ {0,0,0},
1086 /*h(181)=84 OUTREG=XED_REG_R11W EASZ=1  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {181, 1,3},
1087 /*h(307)=85 OUTREG=XED_REG_R10 EASZ=3  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {307, 1,2},
1088 /*empty slot1 */ {0,0,0},
1089 /*h(250)=87 OUTREG=XED_REG_R12D EASZ=2  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {250, 1,4},
1090 /*empty slot1 */ {0,0,0},
1091 /*h(193)=89 OUTREG=XED_REG_R14W EASZ=1  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {193, 1,6},
1092 /*h(319)=90 OUTREG=XED_REG_R13 EASZ=3  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {319, 1,5},
1093 /*empty slot1 */ {0,0,0},
1094 /*h(262)=92 OUTREG=XED_REG_R15D EASZ=2  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {262, 1,7},
1095 /*empty slot1 */ {0,0,0},
1096 /*empty slot1 */ {0,0,0},
1097 /*empty slot1 */ {0,0,0}
1098 };
1099 xed_uint64_t key = 0;
1100 xed_uint64_t hidx = 0;
1101 xed3_operand_set_outreg(xes,arg_reg);
1102 key = xed_enc_lu_EASZ_OUTREG(xes);
1103 hidx = ((9*key % 103) % 96);
1104 if(lu_table[hidx].key == key) {
1105     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1106     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1107     return 1;
1108 }
1109 else{
1110     return 0;
1111 }
1112 }
xed_encode_ntluf_FINAL_ESEG(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1113 xed_uint32_t xed_encode_ntluf_FINAL_ESEG(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1114 {
1115 typedef struct {xed_uint32_t key; xed_int8_t using_default_segment0;} lu_entry_t;
1116 static const lu_entry_t lu_table[3] = {
1117 /*h(2)=0 OUTREG=XED_REG_INVALID MODE=2  ->	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {2, 1},
1118 /*h(596)=1 OUTREG=XED_REG_ES MODE=0  ->	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {596, 1},
1119 /*h(597)=2 OUTREG=XED_REG_ES MODE=1  ->	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {597, 1}
1120 };
1121 xed_union64_t t, u;
1122 xed_uint64_t key = 0;
1123 xed_uint64_t hidx = 0;
1124 xed3_operand_set_outreg(xes,arg_reg);
1125 key = xed_enc_lu_MODE_OUTREG(xes);
1126 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
1127 if(lu_table[hidx].key == key) {
1128     xed3_operand_set_using_default_segment0(xes,lu_table[hidx].using_default_segment0);
1129     return 1;
1130 }
1131 else{
1132     return 0;
1133 }
1134 }
xed_encode_ntluf_GPR16_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1135 xed_uint32_t xed_encode_ntluf_GPR16_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1136 {
1137 typedef struct { xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
1138 static const lu_entry_t lu_table[16] = {
1139 /*h(34)=0 OUTREG=XED_REG_AX  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0},
1140 /*h(35)=1 OUTREG=XED_REG_CX  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1},
1141 /*h(36)=2 OUTREG=XED_REG_DX  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,2},
1142 /*h(37)=3 OUTREG=XED_REG_BX  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,3},
1143 /*h(38)=4 OUTREG=XED_REG_SP  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,4},
1144 /*h(39)=5 OUTREG=XED_REG_BP  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,5},
1145 /*h(40)=6 OUTREG=XED_REG_SI  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,6},
1146 /*h(41)=7 OUTREG=XED_REG_DI  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,7},
1147 /*h(42)=8 OUTREG=XED_REG_R8W  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0},
1148 /*h(43)=9 OUTREG=XED_REG_R9W  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1},
1149 /*h(44)=10 OUTREG=XED_REG_R10W  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,2},
1150 /*h(45)=11 OUTREG=XED_REG_R11W  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,3},
1151 /*h(46)=12 OUTREG=XED_REG_R12W  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,4},
1152 /*h(47)=13 OUTREG=XED_REG_R13W  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,5},
1153 /*h(48)=14 OUTREG=XED_REG_R14W  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,6},
1154 /*h(49)=15 OUTREG=XED_REG_R15W  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,7}
1155 };
1156 xed_uint64_t key = 0;
1157 xed_uint64_t hidx = 0;
1158 xed3_operand_set_outreg(xes,arg_reg);
1159 key = xed_enc_lu_OUTREG(xes);
1160 hidx = key - 34;
1161 if(hidx <= 15) {
1162     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1163     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1164     return 1;
1165 }
1166 else{
1167     return 0;
1168 }
1169 }
xed_encode_ntluf_MASK_N(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1170 xed_uint32_t xed_encode_ntluf_MASK_N(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1171 {
1172 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1173 static const lu_entry_t lu_table[3] = {
1174 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_MASK_N32},
1175 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_MASK_N32},
1176 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_MASK_N64}
1177 };
1178 xed_uint64_t key = 0;
1179 xed_uint64_t hidx = 0;
1180 xed_uint64_t res = 1;
1181 xed3_operand_set_outreg(xes,arg_reg);
1182 key = xed_enc_lu_MODE(xes);
1183 hidx = key - 0;
1184 if(hidx <= 2) {
1185     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1186     return res;
1187     return 1;
1188 }
1189 else{
1190     return 0;
1191 }
1192 }
xed_encode_ntluf_OrSP(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1193 xed_uint32_t xed_encode_ntluf_OrSP(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1194 {
1195 typedef struct {xed_uint32_t key; } lu_entry_t;
1196 static const lu_entry_t lu_table[5] = {
1197 /*empty slot1 */ {0},
1198 /*empty slot1 */ {0},
1199 /*h(153)=2 OUTREG=XED_REG_SP EOSZ=1  ->	nothing*/ {153, },
1200 /*h(218)=3 OUTREG=XED_REG_ESP EOSZ=2  ->	nothing*/ {218, },
1201 /*h(283)=4 OUTREG=XED_REG_RSP EOSZ=3  ->	nothing*/ {283, }
1202 };
1203 xed_union64_t t, u;
1204 xed_uint64_t key = 0;
1205 xed_uint64_t hidx = 0;
1206 xed3_operand_set_outreg(xes,arg_reg);
1207 key = xed_enc_lu_EOSZ_OUTREG(xes);
1208 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
1209 if(lu_table[hidx].key == key) {
1210     return 1;
1211 }
1212 else{
1213     return 0;
1214 }
1215 }
xed_encode_ntluf_VGPR32_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1216 xed_uint32_t xed_encode_ntluf_VGPR32_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1217 {
1218 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1219 static const lu_entry_t lu_table[3] = {
1220 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_VGPR32_B_32},
1221 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_VGPR32_B_32},
1222 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_VGPR32_B_64}
1223 };
1224 xed_uint64_t key = 0;
1225 xed_uint64_t hidx = 0;
1226 xed_uint64_t res = 1;
1227 xed3_operand_set_outreg(xes,arg_reg);
1228 key = xed_enc_lu_MODE(xes);
1229 hidx = key - 0;
1230 if(hidx <= 2) {
1231     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1232     return res;
1233     return 1;
1234 }
1235 else{
1236     return 0;
1237 }
1238 }
xed_encode_ntluf_YMM_N3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1239 xed_uint32_t xed_encode_ntluf_YMM_N3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1240 {
1241 typedef struct { xed_int8_t vexdest210;} lu_entry_t;
1242 static const lu_entry_t lu_table[8] = {
1243 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB VEXDEST210=7 value=0x7*/ {7},
1244 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB VEXDEST210=6 value=0x6*/ {6},
1245 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB VEXDEST210=5 value=0x5*/ {5},
1246 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB VEXDEST210=4 value=0x4*/ {4},
1247 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB VEXDEST210=3 value=0x3*/ {3},
1248 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB VEXDEST210=2 value=0x2*/ {2},
1249 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB VEXDEST210=1 value=0x1*/ {1},
1250 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB VEXDEST210=0 value=0x0*/ {0}
1251 };
1252 xed_uint64_t key = 0;
1253 xed_uint64_t hidx = 0;
1254 xed3_operand_set_outreg(xes,arg_reg);
1255 key = xed_enc_lu_OUTREG(xes);
1256 hidx = key - 210;
1257 if(hidx <= 7) {
1258     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
1259     return 1;
1260 }
1261 else{
1262     return 0;
1263 }
1264 }
xed_encode_ntluf_ZMM_R3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1265 xed_uint32_t xed_encode_ntluf_ZMM_R3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1266 {
1267 typedef struct { xed_int8_t reg;} lu_entry_t;
1268 static const lu_entry_t lu_table[8] = {
1269 /*h(242)=0 OUTREG=XED_REG_ZMM0  ->	FB REG=0 value=0x0*/ {0},
1270 /*h(243)=1 OUTREG=XED_REG_ZMM1  ->	FB REG=1 value=0x1*/ {1},
1271 /*h(244)=2 OUTREG=XED_REG_ZMM2  ->	FB REG=2 value=0x2*/ {2},
1272 /*h(245)=3 OUTREG=XED_REG_ZMM3  ->	FB REG=3 value=0x3*/ {3},
1273 /*h(246)=4 OUTREG=XED_REG_ZMM4  ->	FB REG=4 value=0x4*/ {4},
1274 /*h(247)=5 OUTREG=XED_REG_ZMM5  ->	FB REG=5 value=0x5*/ {5},
1275 /*h(248)=6 OUTREG=XED_REG_ZMM6  ->	FB REG=6 value=0x6*/ {6},
1276 /*h(249)=7 OUTREG=XED_REG_ZMM7  ->	FB REG=7 value=0x7*/ {7}
1277 };
1278 xed_uint64_t key = 0;
1279 xed_uint64_t hidx = 0;
1280 xed3_operand_set_outreg(xes,arg_reg);
1281 key = xed_enc_lu_OUTREG(xes);
1282 hidx = key - 242;
1283 if(hidx <= 7) {
1284     xed3_operand_set_reg(xes,lu_table[hidx].reg);
1285     return 1;
1286 }
1287 else{
1288     return 0;
1289 }
1290 }
xed_encode_ntluf_XMM_SE32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1291 xed_uint32_t xed_encode_ntluf_XMM_SE32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1292 {
1293 typedef struct { xed_int8_t esrc;} lu_entry_t;
1294 static const lu_entry_t lu_table[8] = {
1295 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB ESRC=0 value=0x0*/ {0},
1296 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB ESRC=1 value=0x1*/ {1},
1297 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB ESRC=2 value=0x2*/ {2},
1298 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB ESRC=3 value=0x3*/ {3},
1299 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB ESRC=4 value=0x4*/ {4},
1300 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB ESRC=5 value=0x5*/ {5},
1301 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB ESRC=6 value=0x6*/ {6},
1302 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB ESRC=7 value=0x7*/ {7}
1303 };
1304 xed_uint64_t key = 0;
1305 xed_uint64_t hidx = 0;
1306 xed3_operand_set_outreg(xes,arg_reg);
1307 key = xed_enc_lu_OUTREG(xes);
1308 hidx = key - 178;
1309 if(hidx <= 7) {
1310     xed3_operand_set_esrc(xes,lu_table[hidx].esrc);
1311     return 1;
1312 }
1313 else{
1314     return 0;
1315 }
1316 }
xed_encode_ntluf_YMM_N_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1317 xed_uint32_t xed_encode_ntluf_YMM_N_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1318 {
1319 typedef struct { xed_int8_t vexdest210;} lu_entry_t;
1320 static const lu_entry_t lu_table[8] = {
1321 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB VEXDEST210=7 value=0x7*/ {7},
1322 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB VEXDEST210=6 value=0x6*/ {6},
1323 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB VEXDEST210=5 value=0x5*/ {5},
1324 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB VEXDEST210=4 value=0x4*/ {4},
1325 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB VEXDEST210=3 value=0x3*/ {3},
1326 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB VEXDEST210=2 value=0x2*/ {2},
1327 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB VEXDEST210=1 value=0x1*/ {1},
1328 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB VEXDEST210=0 value=0x0*/ {0}
1329 };
1330 xed_uint64_t key = 0;
1331 xed_uint64_t hidx = 0;
1332 xed3_operand_set_outreg(xes,arg_reg);
1333 key = xed_enc_lu_OUTREG(xes);
1334 hidx = key - 210;
1335 if(hidx <= 7) {
1336     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
1337     return 1;
1338 }
1339 else{
1340     return 0;
1341 }
1342 }
xed_encode_ntluf_GPR32_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1343 xed_uint32_t xed_encode_ntluf_GPR32_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1344 {
1345 typedef struct { xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
1346 static const lu_entry_t lu_table[16] = {
1347 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0},
1348 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1},
1349 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,2},
1350 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,3},
1351 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,4},
1352 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,5},
1353 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,6},
1354 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,7},
1355 /*h(58)=8 OUTREG=XED_REG_R8D  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0},
1356 /*h(59)=9 OUTREG=XED_REG_R9D  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1},
1357 /*h(60)=10 OUTREG=XED_REG_R10D  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,2},
1358 /*h(61)=11 OUTREG=XED_REG_R11D  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,3},
1359 /*h(62)=12 OUTREG=XED_REG_R12D  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,4},
1360 /*h(63)=13 OUTREG=XED_REG_R13D  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,5},
1361 /*h(64)=14 OUTREG=XED_REG_R14D  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,6},
1362 /*h(65)=15 OUTREG=XED_REG_R15D  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,7}
1363 };
1364 xed_uint64_t key = 0;
1365 xed_uint64_t hidx = 0;
1366 xed3_operand_set_outreg(xes,arg_reg);
1367 key = xed_enc_lu_OUTREG(xes);
1368 hidx = key - 50;
1369 if(hidx <= 15) {
1370     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1371     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1372     return 1;
1373 }
1374 else{
1375     return 0;
1376 }
1377 }
xed_encode_ntluf_YMM_SE32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1378 xed_uint32_t xed_encode_ntluf_YMM_SE32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1379 {
1380 typedef struct { xed_int8_t esrc;} lu_entry_t;
1381 static const lu_entry_t lu_table[8] = {
1382 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB ESRC=0 value=0x0*/ {0},
1383 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB ESRC=1 value=0x1*/ {1},
1384 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB ESRC=2 value=0x2*/ {2},
1385 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB ESRC=3 value=0x3*/ {3},
1386 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB ESRC=4 value=0x4*/ {4},
1387 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB ESRC=5 value=0x5*/ {5},
1388 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB ESRC=6 value=0x6*/ {6},
1389 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB ESRC=7 value=0x7*/ {7}
1390 };
1391 xed_uint64_t key = 0;
1392 xed_uint64_t hidx = 0;
1393 xed3_operand_set_outreg(xes,arg_reg);
1394 key = xed_enc_lu_OUTREG(xes);
1395 hidx = key - 210;
1396 if(hidx <= 7) {
1397     xed3_operand_set_esrc(xes,lu_table[hidx].esrc);
1398     return 1;
1399 }
1400 else{
1401     return 0;
1402 }
1403 }
xed_encode_ntluf_GPR32_X(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1404 xed_uint32_t xed_encode_ntluf_GPR32_X(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1405 {
1406 typedef struct {xed_uint32_t key; xed_int8_t rexx ;xed_int8_t sibindex;} lu_entry_t;
1407 static const lu_entry_t lu_table[21] = {
1408 /*h(0)=0 OUTREG=XED_REG_INVALID  ->	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0, 0,4},
1409 /*h(60)=1 OUTREG=XED_REG_R10D  ->	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {60, 1,2},
1410 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {52, 0,2},
1411 /*h(65)=3 OUTREG=XED_REG_R15D  ->	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {65, 1,7},
1412 /*h(57)=4 OUTREG=XED_REG_EDI  ->	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {57, 0,7},
1413 /*empty slot1 */ {0,0,0},
1414 /*h(62)=6 OUTREG=XED_REG_R12D  ->	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {62, 1,4},
1415 /*empty slot1 */ {0,0,0},
1416 /*empty slot1 */ {0,0,0},
1417 /*h(59)=9 OUTREG=XED_REG_R9D  ->	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {59, 1,1},
1418 /*h(51)=10 OUTREG=XED_REG_ECX  ->	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {51, 0,1},
1419 /*h(64)=11 OUTREG=XED_REG_R14D  ->	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {64, 1,6},
1420 /*h(56)=12 OUTREG=XED_REG_ESI  ->	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {56, 0,6},
1421 /*empty slot1 */ {0,0,0},
1422 /*h(61)=14 OUTREG=XED_REG_R11D  ->	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {61, 1,3},
1423 /*h(53)=15 OUTREG=XED_REG_EBX  ->	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {53, 0,3},
1424 /*empty slot1 */ {0,0,0},
1425 /*h(58)=17 OUTREG=XED_REG_R8D  ->	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {58, 1,0},
1426 /*h(50)=18 OUTREG=XED_REG_EAX  ->	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {50, 0,0},
1427 /*h(63)=19 OUTREG=XED_REG_R13D  ->	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {63, 1,5},
1428 /*h(55)=20 OUTREG=XED_REG_EBP  ->	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {55, 0,5}
1429 };
1430 xed_union64_t t, u;
1431 xed_uint64_t key = 0;
1432 xed_uint64_t hidx = 0;
1433 xed3_operand_set_outreg(xes,arg_reg);
1434 key = xed_enc_lu_OUTREG(xes);
1435 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 21ULL, u.s.hi32);
1436 if(lu_table[hidx].key == key) {
1437     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
1438     xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
1439     return 1;
1440 }
1441 else{
1442     return 0;
1443 }
1444 }
xed_encode_ntluf_YMM_B_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1445 xed_uint32_t xed_encode_ntluf_YMM_B_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1446 {
1447 typedef struct { xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
1448 static const lu_entry_t lu_table[16] = {
1449 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0},
1450 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1},
1451 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,2},
1452 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,3},
1453 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,4},
1454 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,5},
1455 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,6},
1456 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,7},
1457 /*h(218)=8 OUTREG=XED_REG_YMM8  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0},
1458 /*h(219)=9 OUTREG=XED_REG_YMM9  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1},
1459 /*h(220)=10 OUTREG=XED_REG_YMM10  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,2},
1460 /*h(221)=11 OUTREG=XED_REG_YMM11  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,3},
1461 /*h(222)=12 OUTREG=XED_REG_YMM12  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,4},
1462 /*h(223)=13 OUTREG=XED_REG_YMM13  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,5},
1463 /*h(224)=14 OUTREG=XED_REG_YMM14  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,6},
1464 /*h(225)=15 OUTREG=XED_REG_YMM15  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,7}
1465 };
1466 xed_uint64_t key = 0;
1467 xed_uint64_t hidx = 0;
1468 xed3_operand_set_outreg(xes,arg_reg);
1469 key = xed_enc_lu_OUTREG(xes);
1470 hidx = key - 210;
1471 if(hidx <= 15) {
1472     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1473     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1474     return 1;
1475 }
1476 else{
1477     return 0;
1478 }
1479 }
xed_encode_ntluf_FINAL_DSEG(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1480 xed_uint32_t xed_encode_ntluf_FINAL_DSEG(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1481 {
1482 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1483 static const lu_entry_t lu_table[3] = {
1484 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_FINAL_DSEG_NOT64},
1485 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_FINAL_DSEG_NOT64},
1486 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_FINAL_DSEG_MODE64}
1487 };
1488 xed_uint64_t key = 0;
1489 xed_uint64_t hidx = 0;
1490 xed_uint64_t res = 1;
1491 xed3_operand_set_outreg(xes,arg_reg);
1492 key = xed_enc_lu_MODE(xes);
1493 hidx = key - 0;
1494 if(hidx <= 2) {
1495     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1496     return res;
1497     return 1;
1498 }
1499 else{
1500     return 0;
1501 }
1502 }
xed_encode_ntluf_YMM_N3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1503 xed_uint32_t xed_encode_ntluf_YMM_N3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1504 {
1505 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1506 static const lu_entry_t lu_table[3] = {
1507 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_YMM_N3_32},
1508 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_YMM_N3_32},
1509 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_YMM_N3_64}
1510 };
1511 xed_uint64_t key = 0;
1512 xed_uint64_t hidx = 0;
1513 xed_uint64_t res = 1;
1514 xed3_operand_set_outreg(xes,arg_reg);
1515 key = xed_enc_lu_MODE(xes);
1516 hidx = key - 0;
1517 if(hidx <= 2) {
1518     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1519     return res;
1520     return 1;
1521 }
1522 else{
1523     return 0;
1524 }
1525 }
xed_encode_ntluf_ZMM_B3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1526 xed_uint32_t xed_encode_ntluf_ZMM_B3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1527 {
1528 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1529 static const lu_entry_t lu_table[3] = {
1530 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_ZMM_B3_32},
1531 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_ZMM_B3_32},
1532 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_ZMM_B3_64}
1533 };
1534 xed_uint64_t key = 0;
1535 xed_uint64_t hidx = 0;
1536 xed_uint64_t res = 1;
1537 xed3_operand_set_outreg(xes,arg_reg);
1538 key = xed_enc_lu_MODE(xes);
1539 hidx = key - 0;
1540 if(hidx <= 2) {
1541     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1542     return res;
1543     return 1;
1544 }
1545 else{
1546     return 0;
1547 }
1548 }
xed_encode_ntluf_GPR32_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1549 xed_uint32_t xed_encode_ntluf_GPR32_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1550 {
1551 typedef struct { xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
1552 static const lu_entry_t lu_table[16] = {
1553 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0},
1554 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0},
1555 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0},
1556 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0},
1557 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0},
1558 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0},
1559 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0},
1560 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0},
1561 /*h(58)=8 OUTREG=XED_REG_R8D  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1},
1562 /*h(59)=9 OUTREG=XED_REG_R9D  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1},
1563 /*h(60)=10 OUTREG=XED_REG_R10D  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1},
1564 /*h(61)=11 OUTREG=XED_REG_R11D  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1},
1565 /*h(62)=12 OUTREG=XED_REG_R12D  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1},
1566 /*h(63)=13 OUTREG=XED_REG_R13D  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1},
1567 /*h(64)=14 OUTREG=XED_REG_R14D  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1},
1568 /*h(65)=15 OUTREG=XED_REG_R15D  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1}
1569 };
1570 xed_uint64_t key = 0;
1571 xed_uint64_t hidx = 0;
1572 xed3_operand_set_outreg(xes,arg_reg);
1573 key = xed_enc_lu_OUTREG(xes);
1574 hidx = key - 50;
1575 if(hidx <= 15) {
1576     xed3_operand_set_reg(xes,lu_table[hidx].reg);
1577     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
1578     return 1;
1579 }
1580 else{
1581     return 0;
1582 }
1583 }
xed_encode_ntluf_GPR32_SB(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1584 xed_uint32_t xed_encode_ntluf_GPR32_SB(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1585 {
1586 typedef struct { xed_int8_t rexb ;xed_int8_t srm;} lu_entry_t;
1587 static const lu_entry_t lu_table[16] = {
1588 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB REXB=0 value=0x0 	FB SRM=0 value=0x0*/ {0,0},
1589 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB REXB=0 value=0x0 	FB SRM=1 value=0x1*/ {0,1},
1590 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB REXB=0 value=0x0 	FB SRM=2 value=0x2*/ {0,2},
1591 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB REXB=0 value=0x0 	FB SRM=3 value=0x3*/ {0,3},
1592 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB REXB=0 value=0x0 	FB SRM=4 value=0x4*/ {0,4},
1593 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB REXB=0 value=0x0 	FB SRM=5 value=0x5*/ {0,5},
1594 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB REXB=0 value=0x0 	FB SRM=6 value=0x6*/ {0,6},
1595 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB REXB=0 value=0x0 	FB SRM=7 value=0x7*/ {0,7},
1596 /*h(58)=8 OUTREG=XED_REG_R8D  ->	FB REXB=1 value=0x1 	FB SRM=0 value=0x0*/ {1,0},
1597 /*h(59)=9 OUTREG=XED_REG_R9D  ->	FB REXB=1 value=0x1 	FB SRM=1 value=0x1*/ {1,1},
1598 /*h(60)=10 OUTREG=XED_REG_R10D  ->	FB REXB=1 value=0x1 	FB SRM=2 value=0x2*/ {1,2},
1599 /*h(61)=11 OUTREG=XED_REG_R11D  ->	FB REXB=1 value=0x1 	FB SRM=3 value=0x3*/ {1,3},
1600 /*h(62)=12 OUTREG=XED_REG_R12D  ->	FB REXB=1 value=0x1 	FB SRM=4 value=0x4*/ {1,4},
1601 /*h(63)=13 OUTREG=XED_REG_R13D  ->	FB REXB=1 value=0x1 	FB SRM=5 value=0x5*/ {1,5},
1602 /*h(64)=14 OUTREG=XED_REG_R14D  ->	FB REXB=1 value=0x1 	FB SRM=6 value=0x6*/ {1,6},
1603 /*h(65)=15 OUTREG=XED_REG_R15D  ->	FB REXB=1 value=0x1 	FB SRM=7 value=0x7*/ {1,7}
1604 };
1605 xed_uint64_t key = 0;
1606 xed_uint64_t hidx = 0;
1607 xed3_operand_set_outreg(xes,arg_reg);
1608 key = xed_enc_lu_OUTREG(xes);
1609 hidx = key - 50;
1610 if(hidx <= 15) {
1611     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1612     xed3_operand_set_srm(xes,lu_table[hidx].srm);
1613     return 1;
1614 }
1615 else{
1616     return 0;
1617 }
1618 }
xed_encode_ntluf_GPRv_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1619 xed_uint32_t xed_encode_ntluf_GPRv_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1620 {
1621 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1622 static const lu_entry_t lu_table[3] = {
1623 /*h(1)=0 EOSZ=1  ->	ntluf*/ {xed_encode_ntluf_GPR16_R},
1624 /*h(2)=1 EOSZ=2  ->	ntluf*/ {xed_encode_ntluf_GPR32_R},
1625 /*h(3)=2 EOSZ=3  ->	ntluf*/ {xed_encode_ntluf_GPR64_R}
1626 };
1627 xed_uint64_t key = 0;
1628 xed_uint64_t hidx = 0;
1629 xed_uint64_t res = 1;
1630 xed3_operand_set_outreg(xes,arg_reg);
1631 key = xed_enc_lu_EOSZ(xes);
1632 hidx = key - 1;
1633 if(hidx <= 2) {
1634     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1635     return res;
1636     return 1;
1637 }
1638 else{
1639     return 0;
1640 }
1641 }
xed_encode_ntluf_X87(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1642 xed_uint32_t xed_encode_ntluf_X87(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1643 {
1644 typedef struct { xed_int8_t rm;} lu_entry_t;
1645 static const lu_entry_t lu_table[8] = {
1646 /*h(169)=0 OUTREG=XED_REG_ST0  ->	FB RM=0 value=0x0*/ {0},
1647 /*h(170)=1 OUTREG=XED_REG_ST1  ->	FB RM=1 value=0x1*/ {1},
1648 /*h(171)=2 OUTREG=XED_REG_ST2  ->	FB RM=2 value=0x2*/ {2},
1649 /*h(172)=3 OUTREG=XED_REG_ST3  ->	FB RM=3 value=0x3*/ {3},
1650 /*h(173)=4 OUTREG=XED_REG_ST4  ->	FB RM=4 value=0x4*/ {4},
1651 /*h(174)=5 OUTREG=XED_REG_ST5  ->	FB RM=5 value=0x5*/ {5},
1652 /*h(175)=6 OUTREG=XED_REG_ST6  ->	FB RM=6 value=0x6*/ {6},
1653 /*h(176)=7 OUTREG=XED_REG_ST7  ->	FB RM=7 value=0x7*/ {7}
1654 };
1655 xed_uint64_t key = 0;
1656 xed_uint64_t hidx = 0;
1657 xed3_operand_set_outreg(xes,arg_reg);
1658 key = xed_enc_lu_OUTREG(xes);
1659 hidx = key - 169;
1660 if(hidx <= 7) {
1661     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1662     return 1;
1663 }
1664 else{
1665     return 0;
1666 }
1667 }
xed_encode_ntluf_GPR64e(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1668 xed_uint32_t xed_encode_ntluf_GPR64e(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1669 {
1670 xed_uint64_t key = 0;
1671 xed_uint64_t hidx = 0;
1672 xed3_operand_set_outreg(xes,arg_reg);
1673 key = xed_enc_lu_OUTREG(xes);
1674 hidx = key - 66;
1675 if(hidx <= 15) {
1676     return 1;
1677 }
1678 else{
1679     return 0;
1680 }
1681 }
xed_encode_ntluf_FINAL_SSEG(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1682 xed_uint32_t xed_encode_ntluf_FINAL_SSEG(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1683 {
1684 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1685 static const lu_entry_t lu_table[3] = {
1686 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_FINAL_SSEG_NOT64},
1687 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_FINAL_SSEG_NOT64},
1688 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_FINAL_SSEG_MODE64}
1689 };
1690 xed_uint64_t key = 0;
1691 xed_uint64_t hidx = 0;
1692 xed_uint64_t res = 1;
1693 xed3_operand_set_outreg(xes,arg_reg);
1694 key = xed_enc_lu_MODE(xes);
1695 hidx = key - 0;
1696 if(hidx <= 2) {
1697     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1698     return res;
1699     return 1;
1700 }
1701 else{
1702     return 0;
1703 }
1704 }
xed_encode_ntluf_GPRv_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1705 xed_uint32_t xed_encode_ntluf_GPRv_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1706 {
1707 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1708 static const lu_entry_t lu_table[3] = {
1709 /*h(1)=0 EOSZ=1  ->	ntluf*/ {xed_encode_ntluf_GPR16_B},
1710 /*h(2)=1 EOSZ=2  ->	ntluf*/ {xed_encode_ntluf_GPR32_B},
1711 /*h(3)=2 EOSZ=3  ->	ntluf*/ {xed_encode_ntluf_GPR64_B}
1712 };
1713 xed_uint64_t key = 0;
1714 xed_uint64_t hidx = 0;
1715 xed_uint64_t res = 1;
1716 xed3_operand_set_outreg(xes,arg_reg);
1717 key = xed_enc_lu_EOSZ(xes);
1718 hidx = key - 1;
1719 if(hidx <= 2) {
1720     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1721     return res;
1722     return 1;
1723 }
1724 else{
1725     return 0;
1726 }
1727 }
xed_encode_ntluf_YMM_SE64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1728 xed_uint32_t xed_encode_ntluf_YMM_SE64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1729 {
1730 typedef struct { xed_int8_t esrc;} lu_entry_t;
1731 static const lu_entry_t lu_table[16] = {
1732 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB ESRC=0 value=0x0*/ {0},
1733 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB ESRC=1 value=0x1*/ {1},
1734 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB ESRC=2 value=0x2*/ {2},
1735 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB ESRC=3 value=0x3*/ {3},
1736 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB ESRC=4 value=0x4*/ {4},
1737 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB ESRC=5 value=0x5*/ {5},
1738 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB ESRC=6 value=0x6*/ {6},
1739 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB ESRC=7 value=0x7*/ {7},
1740 /*h(218)=8 OUTREG=XED_REG_YMM8  ->	FB ESRC=8 value=0x8*/ {8},
1741 /*h(219)=9 OUTREG=XED_REG_YMM9  ->	FB ESRC=9 value=0x9*/ {9},
1742 /*h(220)=10 OUTREG=XED_REG_YMM10  ->	FB ESRC=10 value=0xa*/ {10},
1743 /*h(221)=11 OUTREG=XED_REG_YMM11  ->	FB ESRC=11 value=0xb*/ {11},
1744 /*h(222)=12 OUTREG=XED_REG_YMM12  ->	FB ESRC=12 value=0xc*/ {12},
1745 /*h(223)=13 OUTREG=XED_REG_YMM13  ->	FB ESRC=13 value=0xd*/ {13},
1746 /*h(224)=14 OUTREG=XED_REG_YMM14  ->	FB ESRC=14 value=0xe*/ {14},
1747 /*h(225)=15 OUTREG=XED_REG_YMM15  ->	FB ESRC=15 value=0xf*/ {15}
1748 };
1749 xed_uint64_t key = 0;
1750 xed_uint64_t hidx = 0;
1751 xed3_operand_set_outreg(xes,arg_reg);
1752 key = xed_enc_lu_OUTREG(xes);
1753 hidx = key - 210;
1754 if(hidx <= 15) {
1755     xed3_operand_set_esrc(xes,lu_table[hidx].esrc);
1756     return 1;
1757 }
1758 else{
1759     return 0;
1760 }
1761 }
xed_encode_ntluf_VGPR32_B_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1762 xed_uint32_t xed_encode_ntluf_VGPR32_B_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1763 {
1764 typedef struct { xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
1765 static const lu_entry_t lu_table[16] = {
1766 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0},
1767 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1},
1768 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,2},
1769 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,3},
1770 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,4},
1771 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,5},
1772 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,6},
1773 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,7},
1774 /*h(58)=8 OUTREG=XED_REG_R8D  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0},
1775 /*h(59)=9 OUTREG=XED_REG_R9D  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1},
1776 /*h(60)=10 OUTREG=XED_REG_R10D  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,2},
1777 /*h(61)=11 OUTREG=XED_REG_R11D  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,3},
1778 /*h(62)=12 OUTREG=XED_REG_R12D  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,4},
1779 /*h(63)=13 OUTREG=XED_REG_R13D  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,5},
1780 /*h(64)=14 OUTREG=XED_REG_R14D  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,6},
1781 /*h(65)=15 OUTREG=XED_REG_R15D  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,7}
1782 };
1783 xed_uint64_t key = 0;
1784 xed_uint64_t hidx = 0;
1785 xed3_operand_set_outreg(xes,arg_reg);
1786 key = xed_enc_lu_OUTREG(xes);
1787 hidx = key - 50;
1788 if(hidx <= 15) {
1789     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1790     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1791     return 1;
1792 }
1793 else{
1794     return 0;
1795 }
1796 }
xed_encode_ntluf_GPR32e(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1797 xed_uint32_t xed_encode_ntluf_GPR32e(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1798 {
1799 typedef struct {xed_uint32_t key; } lu_entry_t;
1800 static const lu_entry_t lu_table[36] = {
1801 /*empty slot1 */ {0},
1802 /*h(246)=1 MODE=2 OUTREG=XED_REG_R11D  ->	nothing*/ {246, },
1803 /*h(225)=2 MODE=1 OUTREG=XED_REG_ESI  ->	nothing*/ {225, },
1804 /*h(238)=3 MODE=2 OUTREG=XED_REG_R9D  ->	nothing*/ {238, },
1805 /*h(217)=4 MODE=1 OUTREG=XED_REG_ESP  ->	nothing*/ {217, },
1806 /*h(230)=5 MODE=2 OUTREG=XED_REG_EDI  ->	nothing*/ {230, },
1807 /*h(209)=6 MODE=1 OUTREG=XED_REG_EDX  ->	nothing*/ {209, },
1808 /*h(222)=7 MODE=2 OUTREG=XED_REG_EBP  ->	nothing*/ {222, },
1809 /*h(201)=8 MODE=1 OUTREG=XED_REG_EAX  ->	nothing*/ {201, },
1810 /*h(214)=9 MODE=2 OUTREG=XED_REG_EBX  ->	nothing*/ {214, },
1811 /*empty slot1 */ {0},
1812 /*h(206)=11 MODE=2 OUTREG=XED_REG_ECX  ->	nothing*/ {206, },
1813 /*empty slot1 */ {0},
1814 /*empty slot1 */ {0},
1815 /*empty slot1 */ {0},
1816 /*empty slot1 */ {0},
1817 /*h(258)=16 MODE=2 OUTREG=XED_REG_R14D  ->	nothing*/ {258, },
1818 /*empty slot1 */ {0},
1819 /*h(250)=18 MODE=2 OUTREG=XED_REG_R12D  ->	nothing*/ {250, },
1820 /*h(229)=19 MODE=1 OUTREG=XED_REG_EDI  ->	nothing*/ {229, },
1821 /*h(242)=20 MODE=2 OUTREG=XED_REG_R10D  ->	nothing*/ {242, },
1822 /*h(221)=21 MODE=1 OUTREG=XED_REG_EBP  ->	nothing*/ {221, },
1823 /*h(234)=22 MODE=2 OUTREG=XED_REG_R8D  ->	nothing*/ {234, },
1824 /*h(213)=23 MODE=1 OUTREG=XED_REG_EBX  ->	nothing*/ {213, },
1825 /*h(226)=24 MODE=2 OUTREG=XED_REG_ESI  ->	nothing*/ {226, },
1826 /*h(205)=25 MODE=1 OUTREG=XED_REG_ECX  ->	nothing*/ {205, },
1827 /*h(218)=26 MODE=2 OUTREG=XED_REG_ESP  ->	nothing*/ {218, },
1828 /*empty slot1 */ {0},
1829 /*h(210)=28 MODE=2 OUTREG=XED_REG_EDX  ->	nothing*/ {210, },
1830 /*empty slot1 */ {0},
1831 /*h(202)=30 MODE=2 OUTREG=XED_REG_EAX  ->	nothing*/ {202, },
1832 /*empty slot1 */ {0},
1833 /*empty slot1 */ {0},
1834 /*h(262)=33 MODE=2 OUTREG=XED_REG_R15D  ->	nothing*/ {262, },
1835 /*empty slot1 */ {0},
1836 /*h(254)=35 MODE=2 OUTREG=XED_REG_R13D  ->	nothing*/ {254, }
1837 };
1838 xed_union64_t t, u;
1839 xed_uint64_t key = 0;
1840 xed_uint64_t hidx = 0;
1841 xed3_operand_set_outreg(xes,arg_reg);
1842 key = xed_enc_lu_MODE_OUTREG(xes);
1843 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 36ULL, u.s.hi32);
1844 if(lu_table[hidx].key == key) {
1845     return 1;
1846 }
1847 else{
1848     return 0;
1849 }
1850 }
xed_encode_ntluf_XMM_N3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1851 xed_uint32_t xed_encode_ntluf_XMM_N3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1852 {
1853 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1854 static const lu_entry_t lu_table[3] = {
1855 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_XMM_N3_32},
1856 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_XMM_N3_32},
1857 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_XMM_N3_64}
1858 };
1859 xed_uint64_t key = 0;
1860 xed_uint64_t hidx = 0;
1861 xed_uint64_t res = 1;
1862 xed3_operand_set_outreg(xes,arg_reg);
1863 key = xed_enc_lu_MODE(xes);
1864 hidx = key - 0;
1865 if(hidx <= 2) {
1866     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1867     return res;
1868     return 1;
1869 }
1870 else{
1871     return 0;
1872 }
1873 }
xed_encode_ntluf_MASK_N32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1874 xed_uint32_t xed_encode_ntluf_MASK_N32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1875 {
1876 typedef struct { xed_int8_t vexdest210;} lu_entry_t;
1877 static const lu_entry_t lu_table[8] = {
1878 /*h(106)=0 OUTREG=XED_REG_K0  ->	FB VEXDEST210=7 value=0x7*/ {7},
1879 /*h(107)=1 OUTREG=XED_REG_K1  ->	FB VEXDEST210=6 value=0x6*/ {6},
1880 /*h(108)=2 OUTREG=XED_REG_K2  ->	FB VEXDEST210=5 value=0x5*/ {5},
1881 /*h(109)=3 OUTREG=XED_REG_K3  ->	FB VEXDEST210=4 value=0x4*/ {4},
1882 /*h(110)=4 OUTREG=XED_REG_K4  ->	FB VEXDEST210=3 value=0x3*/ {3},
1883 /*h(111)=5 OUTREG=XED_REG_K5  ->	FB VEXDEST210=2 value=0x2*/ {2},
1884 /*h(112)=6 OUTREG=XED_REG_K6  ->	FB VEXDEST210=1 value=0x1*/ {1},
1885 /*h(113)=7 OUTREG=XED_REG_K7  ->	FB VEXDEST210=0 value=0x0*/ {0}
1886 };
1887 xed_uint64_t key = 0;
1888 xed_uint64_t hidx = 0;
1889 xed3_operand_set_outreg(xes,arg_reg);
1890 key = xed_enc_lu_OUTREG(xes);
1891 hidx = key - 106;
1892 if(hidx <= 7) {
1893     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
1894     return 1;
1895 }
1896 else{
1897     return 0;
1898 }
1899 }
xed_encode_ntluf_FINAL_DSEG1_NOT64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1900 xed_uint32_t xed_encode_ntluf_FINAL_DSEG1_NOT64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1901 {
1902 typedef struct { xed_int8_t seg_ovd ;xed_int8_t using_default_segment1;} lu_entry_t;
1903 static const lu_entry_t lu_table[6] = {
1904 /*h(147)=0 OUTREG=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1 	FB USING_DEFAULT_SEGMENT1=0 value=0x0*/ {1,0},
1905 /*h(148)=1 OUTREG=XED_REG_DS  ->	FB SEG_OVD=0 value=0x0 	FB USING_DEFAULT_SEGMENT1=1 value=0x1*/ {0,1},
1906 /*h(149)=2 OUTREG=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3 	FB USING_DEFAULT_SEGMENT1=0 value=0x0*/ {3,0},
1907 /*h(150)=3 OUTREG=XED_REG_SS  ->	FB SEG_OVD=6 value=0x6 	FB USING_DEFAULT_SEGMENT1=0 value=0x0*/ {6,0},
1908 /*h(151)=4 OUTREG=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4 	FB USING_DEFAULT_SEGMENT1=0 value=0x0*/ {4,0},
1909 /*h(152)=5 OUTREG=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5 	FB USING_DEFAULT_SEGMENT1=0 value=0x0*/ {5,0}
1910 };
1911 xed_uint64_t key = 0;
1912 xed_uint64_t hidx = 0;
1913 xed3_operand_set_outreg(xes,arg_reg);
1914 key = xed_enc_lu_OUTREG(xes);
1915 hidx = key - 147;
1916 if(hidx <= 5) {
1917     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
1918     xed3_operand_set_using_default_segment1(xes,lu_table[hidx].using_default_segment1);
1919     return 1;
1920 }
1921 else{
1922     return 0;
1923 }
1924 }
xed_encode_ntluf_OrBP(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1925 xed_uint32_t xed_encode_ntluf_OrBP(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1926 {
1927 typedef struct {xed_uint32_t key; } lu_entry_t;
1928 static const lu_entry_t lu_table[6] = {
1929 /*h(157)=0 OUTREG=XED_REG_BP EOSZ=1  ->	nothing*/ {157, },
1930 /*h(222)=1 OUTREG=XED_REG_EBP EOSZ=2  ->	nothing*/ {222, },
1931 /*h(287)=2 OUTREG=XED_REG_RBP EOSZ=3  ->	nothing*/ {287, },
1932 /*empty slot1 */ {0},
1933 /*empty slot1 */ {0},
1934 /*empty slot1 */ {0}
1935 };
1936 xed_union64_t t, u;
1937 xed_uint64_t key = 0;
1938 xed_uint64_t hidx = 0;
1939 xed3_operand_set_outreg(xes,arg_reg);
1940 key = xed_enc_lu_EOSZ_OUTREG(xes);
1941 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
1942 if(lu_table[hidx].key == key) {
1943     return 1;
1944 }
1945 else{
1946     return 0;
1947 }
1948 }
xed_encode_ntluf_rIP(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1949 xed_uint32_t xed_encode_ntluf_rIP(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1950 {
1951 typedef struct {xed_uint32_t key; } lu_entry_t;
1952 static const lu_entry_t lu_table[4] = {
1953 /*h(416)=0 OUTREG=XED_REG_EIP MODE=0  ->	nothing*/ {416, },
1954 /*empty slot1 */ {0},
1955 /*h(417)=2 OUTREG=XED_REG_EIP MODE=1  ->	nothing*/ {417, },
1956 /*h(414)=3 OUTREG=XED_REG_RIP MODE=2  ->	nothing*/ {414, }
1957 };
1958 xed_union64_t t;
1959 xed_uint64_t key = 0;
1960 xed_uint64_t hidx = 0;
1961 xed3_operand_set_outreg(xes,arg_reg);
1962 key = xed_enc_lu_MODE_OUTREG(xes);
1963 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
1964 if(lu_table[hidx].key == key) {
1965     return 1;
1966 }
1967 else{
1968     return 0;
1969 }
1970 }
xed_encode_ntluf_YMM_R3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1971 xed_uint32_t xed_encode_ntluf_YMM_R3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1972 {
1973 typedef struct { xed_int8_t reg;} lu_entry_t;
1974 static const lu_entry_t lu_table[8] = {
1975 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB REG=0 value=0x0*/ {0},
1976 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB REG=1 value=0x1*/ {1},
1977 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB REG=2 value=0x2*/ {2},
1978 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB REG=3 value=0x3*/ {3},
1979 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB REG=4 value=0x4*/ {4},
1980 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB REG=5 value=0x5*/ {5},
1981 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB REG=6 value=0x6*/ {6},
1982 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB REG=7 value=0x7*/ {7}
1983 };
1984 xed_uint64_t key = 0;
1985 xed_uint64_t hidx = 0;
1986 xed3_operand_set_outreg(xes,arg_reg);
1987 key = xed_enc_lu_OUTREG(xes);
1988 hidx = key - 210;
1989 if(hidx <= 7) {
1990     xed3_operand_set_reg(xes,lu_table[hidx].reg);
1991     return 1;
1992 }
1993 else{
1994     return 0;
1995 }
1996 }
xed_encode_ntluf_YMM_B3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1997 xed_uint32_t xed_encode_ntluf_YMM_B3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1998 {
1999 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2000 static const lu_entry_t lu_table[3] = {
2001 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_YMM_B3_32},
2002 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_YMM_B3_32},
2003 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_YMM_B3_64}
2004 };
2005 xed_uint64_t key = 0;
2006 xed_uint64_t hidx = 0;
2007 xed_uint64_t res = 1;
2008 xed3_operand_set_outreg(xes,arg_reg);
2009 key = xed_enc_lu_MODE(xes);
2010 hidx = key - 0;
2011 if(hidx <= 2) {
2012     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2013     return res;
2014     return 1;
2015 }
2016 else{
2017     return 0;
2018 }
2019 }
xed_encode_ntluf_FINAL_SSEG_MODE64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2020 xed_uint32_t xed_encode_ntluf_FINAL_SSEG_MODE64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2021 {
2022 typedef struct {xed_uint32_t key; xed_int8_t seg_ovd ;xed_int8_t using_default_segment0;} lu_entry_t;
2023 static const lu_entry_t lu_table[4] = {
2024 /*h(0)=0 OUTREG=XED_REG_INVALID  ->	FB SEG_OVD=0 value=0x0 	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {0, 0,1},
2025 /*h(151)=1 OUTREG=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {151, 4,0},
2026 /*empty slot1 */ {0,0,0},
2027 /*h(152)=3 OUTREG=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {152, 5,0}
2028 };
2029 xed_union64_t t;
2030 xed_uint64_t key = 0;
2031 xed_uint64_t hidx = 0;
2032 xed3_operand_set_outreg(xes,arg_reg);
2033 key = xed_enc_lu_OUTREG(xes);
2034 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
2035 if(lu_table[hidx].key == key) {
2036     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
2037     xed3_operand_set_using_default_segment0(xes,lu_table[hidx].using_default_segment0);
2038     return 1;
2039 }
2040 else{
2041     return 0;
2042 }
2043 }
xed_encode_ntluf_ZMM_N3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2044 xed_uint32_t xed_encode_ntluf_ZMM_N3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2045 {
2046 typedef struct { xed_int8_t vexdest210 ;xed_int8_t vexdest3 ;xed_int8_t vexdest4;} lu_entry_t;
2047 static const lu_entry_t lu_table[32] = {
2048 /*h(242)=0 OUTREG=XED_REG_ZMM0  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1,0},
2049 /*h(243)=1 OUTREG=XED_REG_ZMM1  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1,0},
2050 /*h(244)=2 OUTREG=XED_REG_ZMM2  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1,0},
2051 /*h(245)=3 OUTREG=XED_REG_ZMM3  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1,0},
2052 /*h(246)=4 OUTREG=XED_REG_ZMM4  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1,0},
2053 /*h(247)=5 OUTREG=XED_REG_ZMM5  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1,0},
2054 /*h(248)=6 OUTREG=XED_REG_ZMM6  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1,0},
2055 /*h(249)=7 OUTREG=XED_REG_ZMM7  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1,0},
2056 /*h(250)=8 OUTREG=XED_REG_ZMM8  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0,0},
2057 /*h(251)=9 OUTREG=XED_REG_ZMM9  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0,0},
2058 /*h(252)=10 OUTREG=XED_REG_ZMM10  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0,0},
2059 /*h(253)=11 OUTREG=XED_REG_ZMM11  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0,0},
2060 /*h(254)=12 OUTREG=XED_REG_ZMM12  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0,0},
2061 /*h(255)=13 OUTREG=XED_REG_ZMM13  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0,0},
2062 /*h(256)=14 OUTREG=XED_REG_ZMM14  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0,0},
2063 /*h(257)=15 OUTREG=XED_REG_ZMM15  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0,0},
2064 /*h(258)=16 OUTREG=XED_REG_ZMM16  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1,1},
2065 /*h(259)=17 OUTREG=XED_REG_ZMM17  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1,1},
2066 /*h(260)=18 OUTREG=XED_REG_ZMM18  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1,1},
2067 /*h(261)=19 OUTREG=XED_REG_ZMM19  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1,1},
2068 /*h(262)=20 OUTREG=XED_REG_ZMM20  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1,1},
2069 /*h(263)=21 OUTREG=XED_REG_ZMM21  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1,1},
2070 /*h(264)=22 OUTREG=XED_REG_ZMM22  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1,1},
2071 /*h(265)=23 OUTREG=XED_REG_ZMM23  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1,1},
2072 /*h(266)=24 OUTREG=XED_REG_ZMM24  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0,1},
2073 /*h(267)=25 OUTREG=XED_REG_ZMM25  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0,1},
2074 /*h(268)=26 OUTREG=XED_REG_ZMM26  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0,1},
2075 /*h(269)=27 OUTREG=XED_REG_ZMM27  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0,1},
2076 /*h(270)=28 OUTREG=XED_REG_ZMM28  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0,1},
2077 /*h(271)=29 OUTREG=XED_REG_ZMM29  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0,1},
2078 /*h(272)=30 OUTREG=XED_REG_ZMM30  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0,1},
2079 /*h(273)=31 OUTREG=XED_REG_ZMM31  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0,1}
2080 };
2081 xed_uint64_t key = 0;
2082 xed_uint64_t hidx = 0;
2083 xed3_operand_set_outreg(xes,arg_reg);
2084 key = xed_enc_lu_OUTREG(xes);
2085 hidx = key - 242;
2086 if(hidx <= 31) {
2087     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
2088     xed3_operand_set_vexdest3(xes,lu_table[hidx].vexdest3);
2089     xed3_operand_set_vexdest4(xes,lu_table[hidx].vexdest4);
2090     return 1;
2091 }
2092 else{
2093     return 0;
2094 }
2095 }
xed_encode_ntluf_CR_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2096 xed_uint32_t xed_encode_ntluf_CR_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2097 {
2098 typedef struct {xed_uint32_t key; xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
2099 static const lu_entry_t lu_table[10] = {
2100 /*h(102)=0 OUTREG=XED_REG_ERROR  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {102, 1,0},
2101 /*h(10)=1 OUTREG=XED_REG_CR3  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {10, 3,0},
2102 /*h(15)=2 OUTREG=XED_REG_CR8  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {15, 0,1},
2103 /*h(7)=3 OUTREG=XED_REG_CR0  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {7, 0,0},
2104 /*empty slot1 */ {0,0,0},
2105 /*h(9)=5 OUTREG=XED_REG_CR2  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {9, 2,0},
2106 /*empty slot1 */ {0,0,0},
2107 /*h(11)=7 OUTREG=XED_REG_CR4  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {11, 4,0},
2108 /*empty slot1 */ {0,0,0},
2109 /*empty slot1 */ {0,0,0}
2110 };
2111 xed_union64_t t, u;
2112 xed_uint64_t key = 0;
2113 xed_uint64_t hidx = 0;
2114 xed3_operand_set_outreg(xes,arg_reg);
2115 key = xed_enc_lu_OUTREG(xes);
2116 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 10ULL, u.s.hi32);
2117 if(lu_table[hidx].key == key) {
2118     xed3_operand_set_reg(xes,lu_table[hidx].reg);
2119     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
2120     return 1;
2121 }
2122 else{
2123     return 0;
2124 }
2125 }
xed_encode_ntluf_BND_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2126 xed_uint32_t xed_encode_ntluf_BND_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2127 {
2128 typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
2129 static const lu_entry_t lu_table[5] = {
2130 /*h(5)=0 OUTREG=XED_REG_BND2  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {5, 0,2},
2131 /*h(102)=1 OUTREG=XED_REG_ERROR  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {102, 0,4},
2132 /*h(4)=2 OUTREG=XED_REG_BND1  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {4, 0,1},
2133 /*h(6)=3 OUTREG=XED_REG_BND3  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {6, 0,3},
2134 /*h(3)=4 OUTREG=XED_REG_BND0  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {3, 0,0}
2135 };
2136 xed_uint64_t key = 0;
2137 xed_uint64_t hidx = 0;
2138 xed3_operand_set_outreg(xes,arg_reg);
2139 key = xed_enc_lu_OUTREG(xes);
2140 hidx = (3*key % 5);
2141 if(lu_table[hidx].key == key) {
2142     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
2143     xed3_operand_set_rm(xes,lu_table[hidx].rm);
2144     return 1;
2145 }
2146 else{
2147     return 0;
2148 }
2149 }
xed_encode_ntluf_SEG_MOV(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2150 xed_uint32_t xed_encode_ntluf_SEG_MOV(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2151 {
2152 typedef struct {xed_uint32_t key; xed_int8_t reg;} lu_entry_t;
2153 static const lu_entry_t lu_table[12] = {
2154 /*h(102)=0 OUTREG=XED_REG_ERROR  ->	FB REG=6 value=0x6*/ {102, 6},
2155 /*h(149)=1 OUTREG=XED_REG_ES  ->	FB REG=0 value=0x0*/ {149, 0},
2156 /*empty slot1 */ {0,0},
2157 /*h(151)=3 OUTREG=XED_REG_FS  ->	FB REG=4 value=0x4*/ {151, 4},
2158 /*empty slot1 */ {0,0},
2159 /*h(148)=5 OUTREG=XED_REG_DS  ->	FB REG=3 value=0x3*/ {148, 3},
2160 /*empty slot1 */ {0,0},
2161 /*empty slot1 */ {0,0},
2162 /*h(150)=8 OUTREG=XED_REG_SS  ->	FB REG=2 value=0x2*/ {150, 2},
2163 /*empty slot1 */ {0,0},
2164 /*empty slot1 */ {0,0},
2165 /*h(152)=11 OUTREG=XED_REG_GS  ->	FB REG=5 value=0x5*/ {152, 5}
2166 };
2167 xed_union64_t t, u;
2168 xed_uint64_t key = 0;
2169 xed_uint64_t hidx = 0;
2170 xed3_operand_set_outreg(xes,arg_reg);
2171 key = xed_enc_lu_OUTREG(xes);
2172 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 12ULL, u.s.hi32);
2173 if(lu_table[hidx].key == key) {
2174     xed3_operand_set_reg(xes,lu_table[hidx].reg);
2175     return 1;
2176 }
2177 else{
2178     return 0;
2179 }
2180 }
xed_encode_ntluf_ZMM_R3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2181 xed_uint32_t xed_encode_ntluf_ZMM_R3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2182 {
2183 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2184 static const lu_entry_t lu_table[3] = {
2185 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_ZMM_R3_32},
2186 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_ZMM_R3_32},
2187 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_ZMM_R3_64}
2188 };
2189 xed_uint64_t key = 0;
2190 xed_uint64_t hidx = 0;
2191 xed_uint64_t res = 1;
2192 xed3_operand_set_outreg(xes,arg_reg);
2193 key = xed_enc_lu_MODE(xes);
2194 hidx = key - 0;
2195 if(hidx <= 2) {
2196     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2197     return res;
2198     return 1;
2199 }
2200 else{
2201     return 0;
2202 }
2203 }
xed_encode_ntluf_GPR8_SB(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2204 xed_uint32_t xed_encode_ntluf_GPR8_SB(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2205 {
2206 typedef struct { xed_int8_t needrex ;xed_int8_t norex ;xed_int8_t rexb ;xed_int8_t srm;} lu_entry_t;
2207 static const lu_entry_t lu_table[20] = {
2208 /*h(82)=0 OUTREG=XED_REG_AL  ->	FB SRM=0 value=0x0*/ {-1,-1,-1,0},
2209 /*h(83)=1 OUTREG=XED_REG_CL  ->	FB SRM=1 value=0x1*/ {-1,-1,-1,1},
2210 /*h(84)=2 OUTREG=XED_REG_DL  ->	FB SRM=2 value=0x2*/ {-1,-1,-1,2},
2211 /*h(85)=3 OUTREG=XED_REG_BL  ->	FB SRM=3 value=0x3*/ {-1,-1,-1,3},
2212 /*h(86)=4 OUTREG=XED_REG_SPL  ->	FB SRM=4 value=0x4 	FB NEEDREX=1 value=0x1*/ {1,-1,-1,4},
2213 /*h(87)=5 OUTREG=XED_REG_BPL  ->	FB SRM=5 value=0x5 	FB NEEDREX=1 value=0x1*/ {1,-1,-1,5},
2214 /*h(88)=6 OUTREG=XED_REG_SIL  ->	FB SRM=6 value=0x6 	FB NEEDREX=1 value=0x1*/ {1,-1,-1,6},
2215 /*h(89)=7 OUTREG=XED_REG_DIL  ->	FB SRM=7 value=0x7 	FB NEEDREX=1 value=0x1*/ {1,-1,-1,7},
2216 /*h(90)=8 OUTREG=XED_REG_R8B  ->	FB REXB=1 value=0x1 	FB SRM=0 value=0x0*/ {-1,-1,1,0},
2217 /*h(91)=9 OUTREG=XED_REG_R9B  ->	FB REXB=1 value=0x1 	FB SRM=1 value=0x1*/ {-1,-1,1,1},
2218 /*h(92)=10 OUTREG=XED_REG_R10B  ->	FB REXB=1 value=0x1 	FB SRM=2 value=0x2*/ {-1,-1,1,2},
2219 /*h(93)=11 OUTREG=XED_REG_R11B  ->	FB REXB=1 value=0x1 	FB SRM=3 value=0x3*/ {-1,-1,1,3},
2220 /*h(94)=12 OUTREG=XED_REG_R12B  ->	FB REXB=1 value=0x1 	FB SRM=4 value=0x4*/ {-1,-1,1,4},
2221 /*h(95)=13 OUTREG=XED_REG_R13B  ->	FB REXB=1 value=0x1 	FB SRM=5 value=0x5*/ {-1,-1,1,5},
2222 /*h(96)=14 OUTREG=XED_REG_R14B  ->	FB REXB=1 value=0x1 	FB SRM=6 value=0x6*/ {-1,-1,1,6},
2223 /*h(97)=15 OUTREG=XED_REG_R15B  ->	FB REXB=1 value=0x1 	FB SRM=7 value=0x7*/ {-1,-1,1,7},
2224 /*h(98)=16 OUTREG=XED_REG_AH  ->	FB SRM=4 value=0x4 	FB NOREX=1 value=0x1*/ {-1,1,-1,4},
2225 /*h(99)=17 OUTREG=XED_REG_CH  ->	FB SRM=5 value=0x5 	FB NOREX=1 value=0x1*/ {-1,1,-1,5},
2226 /*h(100)=18 OUTREG=XED_REG_DH  ->	FB SRM=6 value=0x6 	FB NOREX=1 value=0x1*/ {-1,1,-1,6},
2227 /*h(101)=19 OUTREG=XED_REG_BH  ->	FB SRM=7 value=0x7 	FB NOREX=1 value=0x1*/ {-1,1,-1,7}
2228 };
2229 xed_uint64_t key = 0;
2230 xed_uint64_t hidx = 0;
2231 xed3_operand_set_outreg(xes,arg_reg);
2232 key = xed_enc_lu_OUTREG(xes);
2233 hidx = key - 82;
2234 if(hidx <= 19) {
2235     if(lu_table[hidx].needrex >= 0) xed3_operand_set_needrex(xes,lu_table[hidx].needrex);
2236     if(lu_table[hidx].norex >= 0) xed3_operand_set_norex(xes,lu_table[hidx].norex);
2237     if(lu_table[hidx].rexb >= 0) xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
2238     xed3_operand_set_srm(xes,lu_table[hidx].srm);
2239     return 1;
2240 }
2241 else{
2242     return 0;
2243 }
2244 }
xed_encode_ntluf_BND_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2245 xed_uint32_t xed_encode_ntluf_BND_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2246 {
2247 typedef struct {xed_uint32_t key; xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
2248 static const lu_entry_t lu_table[5] = {
2249 /*h(5)=0 OUTREG=XED_REG_BND2  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {5, 2,0},
2250 /*h(102)=1 OUTREG=XED_REG_ERROR  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {102, 4,0},
2251 /*h(4)=2 OUTREG=XED_REG_BND1  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {4, 1,0},
2252 /*h(6)=3 OUTREG=XED_REG_BND3  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {6, 3,0},
2253 /*h(3)=4 OUTREG=XED_REG_BND0  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {3, 0,0}
2254 };
2255 xed_uint64_t key = 0;
2256 xed_uint64_t hidx = 0;
2257 xed3_operand_set_outreg(xes,arg_reg);
2258 key = xed_enc_lu_OUTREG(xes);
2259 hidx = (3*key % 5);
2260 if(lu_table[hidx].key == key) {
2261     xed3_operand_set_reg(xes,lu_table[hidx].reg);
2262     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
2263     return 1;
2264 }
2265 else{
2266     return 0;
2267 }
2268 }
xed_encode_ntluf_A_GPR_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2269 xed_uint32_t xed_encode_ntluf_A_GPR_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2270 {
2271 typedef struct {xed_uint32_t key; xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
2272 static const lu_entry_t lu_table[96] = {
2273 /*h(206)=0 OUTREG=XED_REG_ECX EASZ=2  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {206, 1,0},
2274 /*empty slot1 */ {0,0,0},
2275 /*h(149)=2 OUTREG=XED_REG_BX EASZ=1  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {149, 3,0},
2276 /*h(275)=3 OUTREG=XED_REG_RDX EASZ=3  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {275, 2,0},
2277 /*h(137)=4 OUTREG=XED_REG_AX EASZ=1  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {137, 0,0},
2278 /*h(218)=5 OUTREG=XED_REG_ESP EASZ=2  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {218, 4,0},
2279 /*empty slot1 */ {0,0,0},
2280 /*h(161)=7 OUTREG=XED_REG_SI EASZ=1  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {161, 6,0},
2281 /*h(287)=8 OUTREG=XED_REG_RBP EASZ=3  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {287, 5,0},
2282 /*empty slot1 */ {0,0,0},
2283 /*h(230)=10 OUTREG=XED_REG_EDI EASZ=2  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {230, 7,0},
2284 /*empty slot1 */ {0,0,0},
2285 /*h(173)=12 OUTREG=XED_REG_R9W EASZ=1  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {173, 1,1},
2286 /*h(299)=13 OUTREG=XED_REG_R8 EASZ=3  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {299, 0,1},
2287 /*empty slot1 */ {0,0,0},
2288 /*h(242)=15 OUTREG=XED_REG_R10D EASZ=2  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {242, 2,1},
2289 /*empty slot1 */ {0,0,0},
2290 /*h(185)=17 OUTREG=XED_REG_R12W EASZ=1  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {185, 4,1},
2291 /*h(311)=18 OUTREG=XED_REG_R11 EASZ=3  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {311, 3,1},
2292 /*empty slot1 */ {0,0,0},
2293 /*h(254)=20 OUTREG=XED_REG_R13D EASZ=2  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {254, 5,1},
2294 /*empty slot1 */ {0,0,0},
2295 /*h(197)=22 OUTREG=XED_REG_R15W EASZ=1  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {197, 7,1},
2296 /*h(323)=23 OUTREG=XED_REG_R14 EASZ=3  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {323, 6,1},
2297 /*empty slot1 */ {0,0,0},
2298 /*empty slot1 */ {0,0,0},
2299 /*empty slot1 */ {0,0,0},
2300 /*empty slot1 */ {0,0,0},
2301 /*empty slot1 */ {0,0,0},
2302 /*empty slot1 */ {0,0,0},
2303 /*empty slot1 */ {0,0,0},
2304 /*empty slot1 */ {0,0,0},
2305 /*empty slot1 */ {0,0,0},
2306 /*h(141)=33 OUTREG=XED_REG_CX EASZ=1  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {141, 1,0},
2307 /*h(267)=34 OUTREG=XED_REG_RAX EASZ=3  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {267, 0,0},
2308 /*empty slot1 */ {0,0,0},
2309 /*h(210)=36 OUTREG=XED_REG_EDX EASZ=2  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {210, 2,0},
2310 /*empty slot1 */ {0,0,0},
2311 /*h(153)=38 OUTREG=XED_REG_SP EASZ=1  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {153, 4,0},
2312 /*h(279)=39 OUTREG=XED_REG_RBX EASZ=3  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {279, 3,0},
2313 /*empty slot1 */ {0,0,0},
2314 /*h(222)=41 OUTREG=XED_REG_EBP EASZ=2  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {222, 5,0},
2315 /*empty slot1 */ {0,0,0},
2316 /*h(165)=43 OUTREG=XED_REG_DI EASZ=1  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {165, 7,0},
2317 /*h(291)=44 OUTREG=XED_REG_RSI EASZ=3  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {291, 6,0},
2318 /*empty slot1 */ {0,0,0},
2319 /*h(234)=46 OUTREG=XED_REG_R8D EASZ=2  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {234, 0,1},
2320 /*empty slot1 */ {0,0,0},
2321 /*h(177)=48 OUTREG=XED_REG_R10W EASZ=1  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {177, 2,1},
2322 /*h(303)=49 OUTREG=XED_REG_R9 EASZ=3  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {303, 1,1},
2323 /*empty slot1 */ {0,0,0},
2324 /*h(246)=51 OUTREG=XED_REG_R11D EASZ=2  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {246, 3,1},
2325 /*empty slot1 */ {0,0,0},
2326 /*h(189)=53 OUTREG=XED_REG_R13W EASZ=1  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {189, 5,1},
2327 /*h(315)=54 OUTREG=XED_REG_R12 EASZ=3  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {315, 4,1},
2328 /*empty slot1 */ {0,0,0},
2329 /*h(258)=56 OUTREG=XED_REG_R14D EASZ=2  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {258, 6,1},
2330 /*empty slot1 */ {0,0,0},
2331 /*empty slot1 */ {0,0,0},
2332 /*h(327)=59 OUTREG=XED_REG_R15 EASZ=3  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {327, 7,1},
2333 /*empty slot1 */ {0,0,0},
2334 /*empty slot1 */ {0,0,0},
2335 /*empty slot1 */ {0,0,0},
2336 /*empty slot1 */ {0,0,0},
2337 /*empty slot1 */ {0,0,0},
2338 /*empty slot1 */ {0,0,0},
2339 /*empty slot1 */ {0,0,0},
2340 /*h(202)=67 OUTREG=XED_REG_EAX EASZ=2  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {202, 0,0},
2341 /*empty slot1 */ {0,0,0},
2342 /*h(145)=69 OUTREG=XED_REG_DX EASZ=1  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {145, 2,0},
2343 /*h(271)=70 OUTREG=XED_REG_RCX EASZ=3  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {271, 1,0},
2344 /*empty slot1 */ {0,0,0},
2345 /*h(214)=72 OUTREG=XED_REG_EBX EASZ=2  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {214, 3,0},
2346 /*empty slot1 */ {0,0,0},
2347 /*h(157)=74 OUTREG=XED_REG_BP EASZ=1  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {157, 5,0},
2348 /*h(283)=75 OUTREG=XED_REG_RSP EASZ=3  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {283, 4,0},
2349 /*empty slot1 */ {0,0,0},
2350 /*h(226)=77 OUTREG=XED_REG_ESI EASZ=2  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {226, 6,0},
2351 /*empty slot1 */ {0,0,0},
2352 /*h(169)=79 OUTREG=XED_REG_R8W EASZ=1  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {169, 0,1},
2353 /*h(295)=80 OUTREG=XED_REG_RDI EASZ=3  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {295, 7,0},
2354 /*empty slot1 */ {0,0,0},
2355 /*h(238)=82 OUTREG=XED_REG_R9D EASZ=2  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {238, 1,1},
2356 /*empty slot1 */ {0,0,0},
2357 /*h(181)=84 OUTREG=XED_REG_R11W EASZ=1  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {181, 3,1},
2358 /*h(307)=85 OUTREG=XED_REG_R10 EASZ=3  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {307, 2,1},
2359 /*empty slot1 */ {0,0,0},
2360 /*h(250)=87 OUTREG=XED_REG_R12D EASZ=2  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {250, 4,1},
2361 /*empty slot1 */ {0,0,0},
2362 /*h(193)=89 OUTREG=XED_REG_R14W EASZ=1  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {193, 6,1},
2363 /*h(319)=90 OUTREG=XED_REG_R13 EASZ=3  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {319, 5,1},
2364 /*empty slot1 */ {0,0,0},
2365 /*h(262)=92 OUTREG=XED_REG_R15D EASZ=2  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {262, 7,1},
2366 /*empty slot1 */ {0,0,0},
2367 /*empty slot1 */ {0,0,0},
2368 /*empty slot1 */ {0,0,0}
2369 };
2370 xed_uint64_t key = 0;
2371 xed_uint64_t hidx = 0;
2372 xed3_operand_set_outreg(xes,arg_reg);
2373 key = xed_enc_lu_EASZ_OUTREG(xes);
2374 hidx = ((9*key % 103) % 96);
2375 if(lu_table[hidx].key == key) {
2376     xed3_operand_set_reg(xes,lu_table[hidx].reg);
2377     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
2378     return 1;
2379 }
2380 else{
2381     return 0;
2382 }
2383 }
xed_encode_nonterminal_NELEM_TUPLE1_SUBDWORD_EMIT(xed_encoder_request_t * xes)2384 xed_uint_t xed_encode_nonterminal_NELEM_TUPLE1_SUBDWORD_EMIT(xed_encoder_request_t* xes)
2385 {
2386 /* NELEM_TUPLE1_SUBDWORD()::
2387  */
2388 xed_uint_t okay=1;
2389 return 1;
2390 (void) okay;
2391 (void) xes;
2392 }
xed_encode_nonterminal_UISA_ENC_INDEX_XMM_EMIT(xed_encoder_request_t * xes)2393 xed_uint_t xed_encode_nonterminal_UISA_ENC_INDEX_XMM_EMIT(xed_encoder_request_t* xes)
2394 {
2395 /* UISA_ENC_INDEX_XMM()::
2396 	INDEX=XED_REG_XMM0  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0
2397 	INDEX=XED_REG_XMM1  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1
2398 	INDEX=XED_REG_XMM2  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2
2399 	INDEX=XED_REG_XMM3  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3
2400 	INDEX=XED_REG_XMM4  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4
2401 	INDEX=XED_REG_XMM5  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5
2402 	INDEX=XED_REG_XMM6  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6
2403 	INDEX=XED_REG_XMM7  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7
2404 	INDEX=XED_REG_XMM8  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0
2405 	INDEX=XED_REG_XMM9  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1
2406 	INDEX=XED_REG_XMM10  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2
2407 	INDEX=XED_REG_XMM11  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3
2408 	INDEX=XED_REG_XMM12  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4
2409 	INDEX=XED_REG_XMM13  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5
2410 	INDEX=XED_REG_XMM14  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6
2411 	INDEX=XED_REG_XMM15  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7
2412 	INDEX=XED_REG_XMM16  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0
2413 	INDEX=XED_REG_XMM17  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1
2414 	INDEX=XED_REG_XMM18  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2
2415 	INDEX=XED_REG_XMM19  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3
2416 	INDEX=XED_REG_XMM20  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4
2417 	INDEX=XED_REG_XMM21  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5
2418 	INDEX=XED_REG_XMM22  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6
2419 	INDEX=XED_REG_XMM23  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7
2420 	INDEX=XED_REG_XMM24  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0
2421 	INDEX=XED_REG_XMM25  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1
2422 	INDEX=XED_REG_XMM26  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2
2423 	INDEX=XED_REG_XMM27  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3
2424 	INDEX=XED_REG_XMM28  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4
2425 	INDEX=XED_REG_XMM29  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5
2426 	INDEX=XED_REG_XMM30  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6
2427 	INDEX=XED_REG_XMM31  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7
2428  */
2429 xed_uint_t okay=1;
2430 return 1;
2431 (void) okay;
2432 (void) xes;
2433 }
xed_encode_nonterminal_SIB_NT_EMIT(xed_encoder_request_t * xes)2434 xed_uint_t xed_encode_nonterminal_SIB_NT_EMIT(xed_encoder_request_t* xes)
2435 {
2436 /* SIB_NT()::
2437 	SIB=1 SIBBASE[bbb]=* SIBSCALE[ss]=* SIBINDEX[iii]=*  ->	emit ss_iii_bbb emit_type=letters nbits=8
2438 	SIB=0  ->	nothing
2439  */
2440 xed_uint_t okay=1;
2441 unsigned int iform = xed_encoder_request_iforms(xes)->x_SIB_NT;
2442 /* 2 */ if (iform==2) {
2443     xed_encoder_request_encode_emit(xes,8,(xed3_operand_get_sibscale(xes)<< 6)|(xed3_operand_get_sibindex(xes)<< 3)|(xed3_operand_get_sibbase(xes)));
2444     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2445     return okay;
2446 }
2447 /* 1 */ if (1) { /* nothing */
2448     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2449     return okay;
2450 }
2451 if (1) { /*otherwise*/
2452     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2453     return okay;
2454 }
2455 return 0; /*pacify the compiler*/
2456 (void) okay;
2457 (void) xes;
2458 (void) iform;
2459 }
xed_encode_nonterminal_NELEM_EIGHTHMEM_EMIT(xed_encoder_request_t * xes)2460 xed_uint_t xed_encode_nonterminal_NELEM_EIGHTHMEM_EMIT(xed_encoder_request_t* xes)
2461 {
2462 /* NELEM_EIGHTHMEM()::
2463  */
2464 xed_uint_t okay=1;
2465 return 1;
2466 (void) okay;
2467 (void) xes;
2468 }
xed_encode_nonterminal_MODRM_MOD_EA32_DISP0_EMIT(xed_encoder_request_t * xes)2469 xed_uint_t xed_encode_nonterminal_MODRM_MOD_EA32_DISP0_EMIT(xed_encoder_request_t* xes)
2470 {
2471 /* MODRM_MOD_EA32_DISP0()::
2472 	BASE0=XED_REG_EAX MODE=1  ->	FB MOD=0 value=0x0
2473 	BASE0=XED_REG_EBX MODE=1  ->	FB MOD=0 value=0x0
2474 	BASE0=XED_REG_ECX MODE=1  ->	FB MOD=0 value=0x0
2475 	BASE0=XED_REG_EDX MODE=1  ->	FB MOD=0 value=0x0
2476 	BASE0=XED_REG_ESI MODE=1  ->	FB MOD=0 value=0x0
2477 	BASE0=XED_REG_EDI MODE=1  ->	FB MOD=0 value=0x0
2478 	BASE0=XED_REG_ESP MODE=1  ->	FB MOD=0 value=0x0
2479 	BASE0=XED_REG_EAX MODE=2  ->	FB MOD=0 value=0x0
2480 	BASE0=XED_REG_EBX MODE=2  ->	FB MOD=0 value=0x0
2481 	BASE0=XED_REG_ECX MODE=2  ->	FB MOD=0 value=0x0
2482 	BASE0=XED_REG_EDX MODE=2  ->	FB MOD=0 value=0x0
2483 	BASE0=XED_REG_ESI MODE=2  ->	FB MOD=0 value=0x0
2484 	BASE0=XED_REG_EDI MODE=2  ->	FB MOD=0 value=0x0
2485 	BASE0=XED_REG_ESP MODE=2  ->	FB MOD=0 value=0x0
2486 	BASE0=XED_REG_R8D MODE=2  ->	FB MOD=0 value=0x0
2487 	BASE0=XED_REG_R9D MODE=2  ->	FB MOD=0 value=0x0
2488 	BASE0=XED_REG_R10D MODE=2  ->	FB MOD=0 value=0x0
2489 	BASE0=XED_REG_R11D MODE=2  ->	FB MOD=0 value=0x0
2490 	BASE0=XED_REG_R12D MODE=2  ->	FB MOD=0 value=0x0
2491 	BASE0=XED_REG_R14D MODE=2  ->	FB MOD=0 value=0x0
2492 	BASE0=XED_REG_R15D MODE=2  ->	FB MOD=0 value=0x0
2493 	BASE0=XED_REG_EBP MODE=1  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0
2494 	BASE0=XED_REG_EBP MODE=2  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0
2495 	BASE0=XED_REG_R13D MODE=2  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0
2496  */
2497 xed_uint_t okay=1;
2498 return 1;
2499 (void) okay;
2500 (void) xes;
2501 }
xed_encode_nonterminal_OVERRIDE_SEG1_EMIT(xed_encoder_request_t * xes)2502 xed_uint_t xed_encode_nonterminal_OVERRIDE_SEG1_EMIT(xed_encoder_request_t* xes)
2503 {
2504 /* OVERRIDE_SEG1()::
2505 	SEG1=@  ->	FB SEG_OVD=0 value=0x0
2506 	SEG1=XED_REG_DS  ->	FB SEG_OVD=0 value=0x0
2507 	SEG1=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1
2508 	SEG1=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3
2509 	SEG1=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4
2510 	SEG1=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5
2511 	SEG1=XED_REG_SS  ->	FB SEG_OVD=6 value=0x6
2512  */
2513 xed_uint_t okay=1;
2514 return 1;
2515 (void) okay;
2516 (void) xes;
2517 }
xed_encode_nonterminal_OVERRIDE_SEG0_EMIT(xed_encoder_request_t * xes)2518 xed_uint_t xed_encode_nonterminal_OVERRIDE_SEG0_EMIT(xed_encoder_request_t* xes)
2519 {
2520 /* OVERRIDE_SEG0()::
2521 	SEG0=@  ->	FB SEG_OVD=0 value=0x0
2522 	SEG0=XED_REG_DS  ->	FB SEG_OVD=0 value=0x0
2523 	SEG0=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1
2524 	SEG0=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3
2525 	SEG0=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4
2526 	SEG0=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5
2527 	SEG0=XED_REG_SS  ->	FB SEG_OVD=6 value=0x6
2528  */
2529 xed_uint_t okay=1;
2530 return 1;
2531 (void) okay;
2532 (void) xes;
2533 }
xed_encode_nonterminal_SIBBASE_ENCODE_EMIT(xed_encoder_request_t * xes)2534 xed_uint_t xed_encode_nonterminal_SIBBASE_ENCODE_EMIT(xed_encoder_request_t* xes)
2535 {
2536 /* SIBBASE_ENCODE()::
2537 	SIB=1  ->	nt NT[SIBBASE_ENCODE_SIB1]
2538 	SIB=0  ->	nothing
2539  */
2540 xed_uint_t okay=1;
2541 unsigned int iform = xed_encoder_request_iforms(xes)->x_SIBBASE_ENCODE;
2542 /* 2 */ if (iform==2) {
2543     xed_encode_nonterminal_SIBBASE_ENCODE_SIB1_EMIT(xes);
2544     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2545     return okay;
2546 }
2547 /* 1 */ if (1) { /* nothing */
2548     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2549     return okay;
2550 }
2551 if (1) { /*otherwise*/
2552     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2553     return okay;
2554 }
2555 return 0; /*pacify the compiler*/
2556 (void) okay;
2557 (void) xes;
2558 (void) iform;
2559 }
xed_encode_nonterminal_VEX_ESCVL_ENC_EMIT(xed_encoder_request_t * xes)2560 xed_uint_t xed_encode_nonterminal_VEX_ESCVL_ENC_EMIT(xed_encoder_request_t* xes)
2561 {
2562 /* VEX_ESCVL_ENC()::
2563 	VL=0 VEX_PREFIX=0  ->	emit 0b000 emit_type=numeric value=0x0 nbits=3
2564 	VL=0 VEX_PREFIX=1  ->	emit 0b001 emit_type=numeric value=0x1 nbits=3
2565 	VL=0 VEX_PREFIX=3  ->	emit 0b010 emit_type=numeric value=0x2 nbits=3
2566 	VL=0 VEX_PREFIX=2  ->	emit 0b011 emit_type=numeric value=0x3 nbits=3
2567 	VL=1 VEX_PREFIX=0  ->	emit 0b100 emit_type=numeric value=0x4 nbits=3
2568 	VL=1 VEX_PREFIX=1  ->	emit 0b101 emit_type=numeric value=0x5 nbits=3
2569 	VL=1 VEX_PREFIX=3  ->	emit 0b110 emit_type=numeric value=0x6 nbits=3
2570 	VL=1 VEX_PREFIX=2  ->	emit 0b111 emit_type=numeric value=0x7 nbits=3
2571  */
2572 xed_uint_t okay=1;
2573 unsigned int iform = xed_encoder_request_iforms(xes)->x_VEX_ESCVL_ENC;
2574 /* 1 */ if (iform==1) {
2575     xed_encoder_request_encode_emit(xes,3,0x0);
2576     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2577     return okay;
2578 }
2579 /* 2 */ if (iform==2) {
2580     xed_encoder_request_encode_emit(xes,3,0x1);
2581     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2582     return okay;
2583 }
2584 /* 4 */ if (iform==4) {
2585     xed_encoder_request_encode_emit(xes,3,0x2);
2586     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2587     return okay;
2588 }
2589 /* 3 */ if (iform==3) {
2590     xed_encoder_request_encode_emit(xes,3,0x3);
2591     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2592     return okay;
2593 }
2594 /* 5 */ if (iform==5) {
2595     xed_encoder_request_encode_emit(xes,3,0x4);
2596     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2597     return okay;
2598 }
2599 /* 6 */ if (iform==6) {
2600     xed_encoder_request_encode_emit(xes,3,0x5);
2601     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2602     return okay;
2603 }
2604 /* 8 */ if (iform==8) {
2605     xed_encoder_request_encode_emit(xes,3,0x6);
2606     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2607     return okay;
2608 }
2609 /* 7 */ if (iform==7) {
2610     xed_encoder_request_encode_emit(xes,3,0x7);
2611     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2612     return okay;
2613 }
2614 if (1) { /*otherwise*/
2615     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2616     return okay;
2617 }
2618 return 0; /*pacify the compiler*/
2619 (void) okay;
2620 (void) xes;
2621 (void) iform;
2622 }
xed_encode_nonterminal_SIBSCALE_ENCODE_EMIT(xed_encoder_request_t * xes)2623 xed_uint_t xed_encode_nonterminal_SIBSCALE_ENCODE_EMIT(xed_encoder_request_t* xes)
2624 {
2625 /* SIBSCALE_ENCODE()::
2626 	SIB=1 SCALE=0  ->	FB SIBSCALE=0 value=0x0
2627 	SIB=1 SCALE=1  ->	FB SIBSCALE=0 value=0x0
2628 	SIB=1 SCALE=2  ->	FB SIBSCALE=1 value=0x1
2629 	SIB=1 SCALE=4  ->	FB SIBSCALE=2 value=0x2
2630 	SIB=1 SCALE=8  ->	FB SIBSCALE=3 value=0x3
2631 	SIB=0  ->	nothing
2632  */
2633 xed_uint_t okay=1;
2634 return 1;
2635 (void) okay;
2636 (void) xes;
2637 }
xed_encode_nonterminal_NELEM_TUPLE1_4X_EMIT(xed_encoder_request_t * xes)2638 xed_uint_t xed_encode_nonterminal_NELEM_TUPLE1_4X_EMIT(xed_encoder_request_t* xes)
2639 {
2640 /* NELEM_TUPLE1_4X()::
2641  */
2642 xed_uint_t okay=1;
2643 return 1;
2644 (void) okay;
2645 (void) xes;
2646 }
xed_encode_nonterminal_OSZ_NONTERM_ENC_EMIT(xed_encoder_request_t * xes)2647 xed_uint_t xed_encode_nonterminal_OSZ_NONTERM_ENC_EMIT(xed_encoder_request_t* xes)
2648 {
2649 /* OSZ_NONTERM_ENC()::
2650 	MODE=0 EOSZ=2 DF32=0 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1
2651 	MODE=1 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1
2652 	MODE=2 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1
2653 	MODE=2 EOSZ=3 DF64=0 SKIP_OSZ=0  ->	FB REXW=1 value=0x1
2654 	MODE=0 EOSZ=1  ->	nothing
2655 	MODE=0 EOSZ=2 DF32=1  ->	nothing
2656 	MODE=0 EOSZ=2 DF32=0 SKIP_OSZ=1  ->	nothing
2657 	MODE=1 EOSZ=1 SKIP_OSZ=1  ->	nothing
2658 	MODE=1 EOSZ=2  ->	nothing
2659 	MODE=2 EOSZ=1 SKIP_OSZ=1  ->	nothing
2660 	MODE=2 EOSZ=2 DF64=0  ->	nothing
2661 	MODE=2 EOSZ=3 DF64=1  ->	nothing
2662 	MODE=2 EOSZ=3 DF64=0 SKIP_OSZ=1  ->	nothing
2663 	MODE=2 EOSZ=2 DF64=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR
2664  */
2665 xed_uint_t okay=1;
2666 return 1;
2667 (void) okay;
2668 (void) xes;
2669 }
xed_encode_nonterminal_MODRM_MOD_EA32_DISP8_EMIT(xed_encoder_request_t * xes)2670 xed_uint_t xed_encode_nonterminal_MODRM_MOD_EA32_DISP8_EMIT(xed_encoder_request_t* xes)
2671 {
2672 /* MODRM_MOD_EA32_DISP8()::
2673  */
2674 xed_uint_t okay=1;
2675 return 1;
2676 (void) okay;
2677 (void) xes;
2678 }
xed_encode_nonterminal_REMOVE_SEGMENT_EMIT(xed_encoder_request_t * xes)2679 xed_uint_t xed_encode_nonterminal_REMOVE_SEGMENT_EMIT(xed_encoder_request_t* xes)
2680 {
2681 /* REMOVE_SEGMENT()::
2682 	AGEN=1  ->	nt NT[REMOVE_SEGMENT_AGEN1]
2683 	AGEN=0  ->	nothing
2684  */
2685 xed_uint_t okay=1;
2686 unsigned int iform = xed_encoder_request_iforms(xes)->x_REMOVE_SEGMENT;
2687 /* 2 */ if (iform==2) {
2688     xed_encode_nonterminal_REMOVE_SEGMENT_AGEN1_EMIT(xes);
2689     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2690     return okay;
2691 }
2692 /* 1 */ if (1) { /* nothing */
2693     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2694     return okay;
2695 }
2696 if (1) { /*otherwise*/
2697     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2698     return okay;
2699 }
2700 return 0; /*pacify the compiler*/
2701 (void) okay;
2702 (void) xes;
2703 (void) iform;
2704 }
xed_encode_nonterminal_BRANCH_HINT_EMIT(xed_encoder_request_t * xes)2705 xed_uint_t xed_encode_nonterminal_BRANCH_HINT_EMIT(xed_encoder_request_t* xes)
2706 {
2707 /* BRANCH_HINT()::
2708  */
2709 xed_uint_t okay=1;
2710 return 1;
2711 (void) okay;
2712 (void) xes;
2713 }
xed_encode_nonterminal_NELEM_FULL_EMIT(xed_encoder_request_t * xes)2714 xed_uint_t xed_encode_nonterminal_NELEM_FULL_EMIT(xed_encoder_request_t* xes)
2715 {
2716 /* NELEM_FULL()::
2717 	BCAST!=0  ->	FB BCRC=1 value=0x1
2718  */
2719 xed_uint_t okay=1;
2720 return 1;
2721 (void) okay;
2722 (void) xes;
2723 }
xed_encode_nonterminal_VEX_REG_ENC_EMIT(xed_encoder_request_t * xes)2724 xed_uint_t xed_encode_nonterminal_VEX_REG_ENC_EMIT(xed_encoder_request_t* xes)
2725 {
2726 /* VEX_REG_ENC()::
2727 	MODE=2 VEXDEST3[u]=* VEXDEST210[ddd]=*  ->	emit u_ddd emit_type=letters nbits=4
2728 	MODE!=2 VEXDEST3[u]=* VEXDEST210[ddd]=*  ->	emit 1_ddd emit_type=letters nbits=4
2729  */
2730 xed_uint_t okay=1;
2731 unsigned int iform = xed_encoder_request_iforms(xes)->x_VEX_REG_ENC;
2732 /* 3 */ if (iform==3) {
2733     xed_encoder_request_encode_emit(xes,4,(xed3_operand_get_vexdest3(xes)<< 3)|(xed3_operand_get_vexdest210(xes)));
2734     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2735     return okay;
2736 }
2737 /* 2 */ if (iform==2) {
2738     xed_encoder_request_encode_emit(xes,4,  (1 << 3)|  (((xed3_operand_get_vexdest210(xes) >> 2) & 1) << 2)|  (((xed3_operand_get_vexdest210(xes) >> 1) & 1) << 1)| (xed3_operand_get_vexdest210(xes) & 1) );
2739     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2740     return okay;
2741 }
2742 if (1) { /*otherwise*/
2743     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2744     return okay;
2745 }
2746 return 0; /*pacify the compiler*/
2747 (void) okay;
2748 (void) xes;
2749 (void) iform;
2750 }
xed_encode_nonterminal_NELEM_TUPLE8_EMIT(xed_encoder_request_t * xes)2751 xed_uint_t xed_encode_nonterminal_NELEM_TUPLE8_EMIT(xed_encoder_request_t* xes)
2752 {
2753 /* NELEM_TUPLE8()::
2754  */
2755 xed_uint_t okay=1;
2756 return 1;
2757 (void) okay;
2758 (void) xes;
2759 }
xed_encode_nonterminal_DISP_WIDTH_0_8_32_EMIT(xed_encoder_request_t * xes)2760 xed_uint_t xed_encode_nonterminal_DISP_WIDTH_0_8_32_EMIT(xed_encoder_request_t* xes)
2761 {
2762 /* DISP_WIDTH_0_8_32()::
2763 	DISP_WIDTH=0  ->	nothing
2764 	DISP_WIDTH=8  ->	nothing
2765 	DISP_WIDTH=32  ->	nothing
2766  */
2767 xed_uint_t okay=1;
2768 return 1;
2769 (void) okay;
2770 (void) xes;
2771 }
xed_encode_nonterminal_NELEM_TUPLE4_EMIT(xed_encoder_request_t * xes)2772 xed_uint_t xed_encode_nonterminal_NELEM_TUPLE4_EMIT(xed_encoder_request_t* xes)
2773 {
2774 /* NELEM_TUPLE4()::
2775  */
2776 xed_uint_t okay=1;
2777 return 1;
2778 (void) okay;
2779 (void) xes;
2780 }
xed_encode_nonterminal_DISP_WIDTH_8_32_EMIT(xed_encoder_request_t * xes)2781 xed_uint_t xed_encode_nonterminal_DISP_WIDTH_8_32_EMIT(xed_encoder_request_t* xes)
2782 {
2783 /* DISP_WIDTH_8_32()::
2784 	DISP_WIDTH=8  ->	nothing
2785 	DISP_WIDTH=32  ->	nothing
2786  */
2787 xed_uint_t okay=1;
2788 return 1;
2789 (void) okay;
2790 (void) xes;
2791 }
xed_encode_nonterminal_NELEM_HALFMEM_EMIT(xed_encoder_request_t * xes)2792 xed_uint_t xed_encode_nonterminal_NELEM_HALFMEM_EMIT(xed_encoder_request_t* xes)
2793 {
2794 /* NELEM_HALFMEM()::
2795  */
2796 xed_uint_t okay=1;
2797 return 1;
2798 (void) okay;
2799 (void) xes;
2800 }
xed_encode_nonterminal_SAE_EMIT(xed_encoder_request_t * xes)2801 xed_uint_t xed_encode_nonterminal_SAE_EMIT(xed_encoder_request_t* xes)
2802 {
2803 /* SAE()::
2804 	SAE=1  ->	FB BCRC=1 value=0x1
2805 	SAE=0  ->	FB BCRC=0 value=0x0
2806  */
2807 xed_uint_t okay=1;
2808 return 1;
2809 (void) okay;
2810 (void) xes;
2811 }
xed_encode_nonterminal_MODRM_MOD_EA16_DISP0_EMIT(xed_encoder_request_t * xes)2812 xed_uint_t xed_encode_nonterminal_MODRM_MOD_EA16_DISP0_EMIT(xed_encoder_request_t* xes)
2813 {
2814 /* MODRM_MOD_EA16_DISP0()::
2815 	BASE0=XED_REG_BX INDEX=@  ->	FB MOD=0 value=0x0
2816 	BASE0=XED_REG_SI INDEX=@  ->	FB MOD=0 value=0x0
2817 	BASE0=XED_REG_DI INDEX=@  ->	FB MOD=0 value=0x0
2818 	BASE0=XED_REG_BP INDEX=XED_REG_SI  ->	FB MOD=0 value=0x0
2819 	BASE0=XED_REG_BP INDEX=XED_REG_DI  ->	FB MOD=0 value=0x0
2820 	BASE0=XED_REG_BX INDEX=XED_REG_SI  ->	FB MOD=0 value=0x0
2821 	BASE0=XED_REG_BX INDEX=XED_REG_DI  ->	FB MOD=0 value=0x0
2822 	BASE0=XED_REG_BP INDEX=@  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0
2823  */
2824 xed_uint_t okay=1;
2825 return 1;
2826 (void) okay;
2827 (void) xes;
2828 }
xed_encode_nonterminal_AVX512_ROUND_EMIT(xed_encoder_request_t * xes)2829 xed_uint_t xed_encode_nonterminal_AVX512_ROUND_EMIT(xed_encoder_request_t* xes)
2830 {
2831 /* AVX512_ROUND()::
2832 	ROUNDC=1  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1
2833 	ROUNDC=2  ->	FB LLRC=1 value=0x1 	FB BCRC=1 value=0x1
2834 	ROUNDC=3  ->	FB LLRC=2 value=0x2 	FB BCRC=1 value=0x1
2835 	ROUNDC=4  ->	FB LLRC=3 value=0x3 	FB BCRC=1 value=0x1
2836  */
2837 xed_uint_t okay=1;
2838 return 1;
2839 (void) okay;
2840 (void) xes;
2841 }
xed_encode_nonterminal_ESIZE_128_BITS_EMIT(xed_encoder_request_t * xes)2842 xed_uint_t xed_encode_nonterminal_ESIZE_128_BITS_EMIT(xed_encoder_request_t* xes)
2843 {
2844 /* ESIZE_128_BITS()::
2845  */
2846 xed_uint_t okay=1;
2847 return 1;
2848 (void) okay;
2849 (void) xes;
2850 }
xed_encode_nonterminal_VSIB_ENC_INDEX_XMM_EMIT(xed_encoder_request_t * xes)2851 xed_uint_t xed_encode_nonterminal_VSIB_ENC_INDEX_XMM_EMIT(xed_encoder_request_t* xes)
2852 {
2853 /* VSIB_ENC_INDEX_XMM()::
2854 	INDEX=XED_REG_XMM0  ->	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0
2855 	INDEX=XED_REG_XMM1  ->	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1
2856 	INDEX=XED_REG_XMM2  ->	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2
2857 	INDEX=XED_REG_XMM3  ->	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3
2858 	INDEX=XED_REG_XMM4  ->	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4
2859 	INDEX=XED_REG_XMM5  ->	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5
2860 	INDEX=XED_REG_XMM6  ->	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6
2861 	INDEX=XED_REG_XMM7  ->	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7
2862 	INDEX=XED_REG_XMM8  ->	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0
2863 	INDEX=XED_REG_XMM9  ->	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1
2864 	INDEX=XED_REG_XMM10  ->	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2
2865 	INDEX=XED_REG_XMM11  ->	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3
2866 	INDEX=XED_REG_XMM12  ->	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4
2867 	INDEX=XED_REG_XMM13  ->	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5
2868 	INDEX=XED_REG_XMM14  ->	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6
2869 	INDEX=XED_REG_XMM15  ->	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7
2870  */
2871 xed_uint_t okay=1;
2872 return 1;
2873 (void) okay;
2874 (void) xes;
2875 }
xed_encode_nonterminal_EVEX_LL_ENC_EMIT(xed_encoder_request_t * xes)2876 xed_uint_t xed_encode_nonterminal_EVEX_LL_ENC_EMIT(xed_encoder_request_t* xes)
2877 {
2878 /* EVEX_LL_ENC()::
2879 	ROUNDC=0 SAE=0 VL=0  ->	FB LLRC=0 value=0x0
2880 	ROUNDC=0 SAE=0 VL=1  ->	FB LLRC=1 value=0x1
2881 	ROUNDC=0 SAE=0 VL=2  ->	FB LLRC=2 value=0x2
2882 	ROUNDC=0 SAE=1 VL=0  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1
2883 	ROUNDC=1 SAE=1 VL=0  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1
2884 	ROUNDC=2 SAE=1 VL=0  ->	FB LLRC=1 value=0x1 	FB BCRC=1 value=0x1
2885 	ROUNDC=3 SAE=1 VL=0  ->	FB LLRC=2 value=0x2 	FB BCRC=1 value=0x1
2886 	ROUNDC=4 SAE=1 VL=0  ->	FB LLRC=3 value=0x3 	FB BCRC=1 value=0x1
2887 	ROUNDC=0 SAE=1 VL=2  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1
2888 	ROUNDC=1 SAE=1 VL=2  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1
2889 	ROUNDC=2 SAE=1 VL=2  ->	FB LLRC=1 value=0x1 	FB BCRC=1 value=0x1
2890 	ROUNDC=3 SAE=1 VL=2  ->	FB LLRC=2 value=0x2 	FB BCRC=1 value=0x1
2891 	ROUNDC=4 SAE=1 VL=2  ->	FB LLRC=3 value=0x3 	FB BCRC=1 value=0x1
2892  */
2893 xed_uint_t okay=1;
2894 return 1;
2895 (void) okay;
2896 (void) xes;
2897 }
xed_encode_nonterminal_ESIZE_2_BITS_EMIT(xed_encoder_request_t * xes)2898 xed_uint_t xed_encode_nonterminal_ESIZE_2_BITS_EMIT(xed_encoder_request_t* xes)
2899 {
2900 /* ESIZE_2_BITS()::
2901  */
2902 xed_uint_t okay=1;
2903 return 1;
2904 (void) okay;
2905 (void) xes;
2906 }
xed_encode_nonterminal_NELEM_GPR_READER_BYTE_EMIT(xed_encoder_request_t * xes)2907 xed_uint_t xed_encode_nonterminal_NELEM_GPR_READER_BYTE_EMIT(xed_encoder_request_t* xes)
2908 {
2909 /* NELEM_GPR_READER_BYTE()::
2910  */
2911 xed_uint_t okay=1;
2912 return 1;
2913 (void) okay;
2914 (void) xes;
2915 }
xed_encode_nonterminal_MODRM_RM_ENCODE_EA32_SIB0_EMIT(xed_encoder_request_t * xes)2916 xed_uint_t xed_encode_nonterminal_MODRM_RM_ENCODE_EA32_SIB0_EMIT(xed_encoder_request_t* xes)
2917 {
2918 /* MODRM_RM_ENCODE_EA32_SIB0()::
2919 	BASE0=XED_REG_RIP MODE=2  ->	FB RM=5 value=0x5
2920 	BASE0=XED_REG_EIP MODE=2  ->	FB RM=5 value=0x5
2921 	BASE0=XED_REG_EAX  ->	FB RM=0 value=0x0 	FB REXB=0 value=0x0
2922 	BASE0=XED_REG_R8D  ->	FB RM=0 value=0x0 	FB REXB=1 value=0x1
2923 	BASE0=XED_REG_ECX  ->	FB RM=1 value=0x1 	FB REXB=0 value=0x0
2924 	BASE0=XED_REG_R9D  ->	FB RM=1 value=0x1 	FB REXB=1 value=0x1
2925 	BASE0=XED_REG_EDX  ->	FB RM=2 value=0x2 	FB REXB=0 value=0x0
2926 	BASE0=XED_REG_R10D  ->	FB RM=2 value=0x2 	FB REXB=1 value=0x1
2927 	BASE0=XED_REG_EBX  ->	FB RM=3 value=0x3 	FB REXB=0 value=0x0
2928 	BASE0=XED_REG_R11D  ->	FB RM=3 value=0x3 	FB REXB=1 value=0x1
2929 	BASE0=XED_REG_ESI  ->	FB RM=6 value=0x6 	FB REXB=0 value=0x0
2930 	BASE0=XED_REG_R14D  ->	FB RM=6 value=0x6 	FB REXB=1 value=0x1
2931 	BASE0=XED_REG_EDI  ->	FB RM=7 value=0x7 	FB REXB=0 value=0x0
2932 	BASE0=XED_REG_R15D  ->	FB RM=7 value=0x7 	FB REXB=1 value=0x1
2933 	BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB RM=5 value=0x5
2934 	BASE0=XED_REG_EBP  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=0 value=0x0
2935 	BASE0=XED_REG_R13D  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=1 value=0x1
2936  */
2937 xed_uint_t okay=1;
2938 unsigned int iform = xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE_EA32_SIB0;
2939 /* 66 */ if (iform==66) {
2940     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2941     return okay;
2942 }
2943 /* 73 */ if (iform==73) {
2944     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2945     return okay;
2946 }
2947 /* 21 */ if (iform==21) {
2948     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2949     return okay;
2950 }
2951 /* 81 */ if (iform==81) {
2952     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2953     return okay;
2954 }
2955 /* 28 */ if (iform==28) {
2956     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2957     return okay;
2958 }
2959 /* 86 */ if (iform==86) {
2960     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2961     return okay;
2962 }
2963 /* 37 */ if (iform==37) {
2964     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2965     return okay;
2966 }
2967 /* 89 */ if (iform==89) {
2968     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2969     return okay;
2970 }
2971 /* 46 */ if (iform==46) {
2972     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2973     return okay;
2974 }
2975 /* 98 */ if (iform==98) {
2976     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2977     return okay;
2978 }
2979 /* 63 */ if (iform==63) {
2980     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2981     return okay;
2982 }
2983 /* 117 */ if (iform==117) {
2984     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2985     return okay;
2986 }
2987 /* 68 */ if (iform==68) {
2988     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2989     return okay;
2990 }
2991 /* 4 */ if (iform==4) {
2992     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2993     return okay;
2994 }
2995 /* 36 */ if (iform==36) {
2996     xed_encode_nonterminal_DISP_WIDTH_32_EMIT(xes);
2997     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
2998     return okay;
2999 }
3000 /* 58 */ if (iform==58) {
3001     xed_encode_nonterminal_DISP_WIDTH_0_8_32_EMIT(xes);
3002     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
3003     return okay;
3004 }
3005 /* 110 */ if (iform==110) {
3006     xed_encode_nonterminal_DISP_WIDTH_0_8_32_EMIT(xes);
3007     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
3008     return okay;
3009 }
3010 if (1) { /*otherwise*/
3011     if (xed3_operand_get_error(xes) != XED_ERROR_NONE) okay=0;
3012     return okay;
3013 }
3014 return 0; /*pacify the compiler*/
3015 (void) okay;
3016 (void) xes;
3017 (void) iform;
3018 }
xed_encode_nonterminal_IMMUNE_REXW_EMIT(xed_encoder_request_t * xes)3019 xed_uint_t xed_encode_nonterminal_IMMUNE_REXW_EMIT(xed_encoder_request_t* xes)
3020 {
3021 /* IMMUNE_REXW()::
3022  */
3023 xed_uint_t okay=1;
3024 return 1;
3025 (void) okay;
3026 (void) xes;
3027 }
xed_encode_nonterminal_MODRM_MOD_EA16_DISP16_EMIT(xed_encoder_request_t * xes)3028 xed_uint_t xed_encode_nonterminal_MODRM_MOD_EA16_DISP16_EMIT(xed_encoder_request_t* xes)
3029 {
3030 /* MODRM_MOD_EA16_DISP16()::
3031 	BASE0=@ INDEX=@  ->	FB MOD=0 value=0x0
3032 	BASE0=XED_REG_BX INDEX=@  ->	FB MOD=2 value=0x2
3033 	BASE0=XED_REG_SI INDEX=@  ->	FB MOD=2 value=0x2
3034 	BASE0=XED_REG_DI INDEX=@  ->	FB MOD=2 value=0x2
3035 	BASE0=XED_REG_BP INDEX=@  ->	FB MOD=2 value=0x2
3036 	BASE0=XED_REG_BP INDEX=XED_REG_SI  ->	FB MOD=2 value=0x2
3037 	BASE0=XED_REG_BP INDEX=XED_REG_DI  ->	FB MOD=2 value=0x2
3038 	BASE0=XED_REG_BX INDEX=XED_REG_SI  ->	FB MOD=2 value=0x2
3039 	BASE0=XED_REG_BX INDEX=XED_REG_DI  ->	FB MOD=2 value=0x2
3040  */
3041 xed_uint_t okay=1;
3042 return 1;
3043 (void) okay;
3044 (void) xes;
3045 }
xed_encode_nonterminal_IGNORE66_EMIT(xed_encoder_request_t * xes)3046 xed_uint_t xed_encode_nonterminal_IGNORE66_EMIT(xed_encoder_request_t* xes)
3047 {
3048 /* IGNORE66()::
3049  */
3050 xed_uint_t okay=1;
3051 return 1;
3052 (void) okay;
3053 (void) xes;
3054 }
xed_encode_nonterminal_IMMUNE66_LOOP64_EMIT(xed_encoder_request_t * xes)3055 xed_uint_t xed_encode_nonterminal_IMMUNE66_LOOP64_EMIT(xed_encoder_request_t* xes)
3056 {
3057 /* IMMUNE66_LOOP64()::
3058  */
3059 xed_uint_t okay=1;
3060 return 1;
3061 (void) okay;
3062 (void) xes;
3063 }
xed_encode_nonterminal_NELEM_GPR_READER_EMIT(xed_encoder_request_t * xes)3064 xed_uint_t xed_encode_nonterminal_NELEM_GPR_READER_EMIT(xed_encoder_request_t* xes)
3065 {
3066 /* NELEM_GPR_READER()::
3067  */
3068 xed_uint_t okay=1;
3069 return 1;
3070 (void) okay;
3071 (void) xes;
3072 }
xed_encode_nonterminal_DF64_EMIT(xed_encoder_request_t * xes)3073 xed_uint_t xed_encode_nonterminal_DF64_EMIT(xed_encoder_request_t* xes)
3074 {
3075 /* DF64()::
3076 	MODE=2  ->	FB DF64=1 value=0x1
3077 	MODE=0  ->	nothing
3078 	MODE=1  ->	nothing
3079  */
3080 xed_uint_t okay=1;
3081 return 1;
3082 (void) okay;
3083 (void) xes;
3084 }
xed_encode_nonterminal_MODRM_MOD_EA64_DISP32_EMIT(xed_encoder_request_t * xes)3085 xed_uint_t xed_encode_nonterminal_MODRM_MOD_EA64_DISP32_EMIT(xed_encoder_request_t* xes)
3086 {
3087 /* MODRM_MOD_EA64_DISP32()::
3088 	BASE0=@  ->	FB MOD=0 value=0x0
3089 	BASE0=XED_REG_EIP  ->	FB MOD=0 value=0x0
3090 	BASE0=XED_REG_RIP  ->	FB MOD=0 value=0x0
3091 	BASE0=XED_REG_RAX  ->	FB MOD=2 value=0x2
3092 	BASE0=XED_REG_RBX  ->	FB MOD=2 value=0x2
3093 	BASE0=XED_REG_RCX  ->	FB MOD=2 value=0x2
3094 	BASE0=XED_REG_RDX  ->	FB MOD=2 value=0x2
3095 	BASE0=XED_REG_RSI  ->	FB MOD=2 value=0x2
3096 	BASE0=XED_REG_RDI  ->	FB MOD=2 value=0x2
3097 	BASE0=XED_REG_RSP  ->	FB MOD=2 value=0x2
3098 	BASE0=XED_REG_RBP  ->	FB MOD=2 value=0x2
3099 	BASE0=XED_REG_R8  ->	FB MOD=2 value=0x2
3100 	BASE0=XED_REG_R9  ->	FB MOD=2 value=0x2
3101 	BASE0=XED_REG_R10  ->	FB MOD=2 value=0x2
3102 	BASE0=XED_REG_R11  ->	FB MOD=2 value=0x2
3103 	BASE0=XED_REG_R12  ->	FB MOD=2 value=0x2
3104 	BASE0=XED_REG_R13  ->	FB MOD=2 value=0x2
3105 	BASE0=XED_REG_R14  ->	FB MOD=2 value=0x2
3106 	BASE0=XED_REG_R15  ->	FB MOD=2 value=0x2
3107  */
3108 xed_uint_t okay=1;
3109 return 1;
3110 (void) okay;
3111 (void) xes;
3112 }
xed_encode_nonterminal_ESIZE_4_BITS_EMIT(xed_encoder_request_t * xes)3113 xed_uint_t xed_encode_nonterminal_ESIZE_4_BITS_EMIT(xed_encoder_request_t* xes)
3114 {
3115 /* ESIZE_4_BITS()::
3116  */
3117 xed_uint_t okay=1;
3118 return 1;
3119 (void) okay;
3120 (void) xes;
3121 }
xed_encode_nonterminal_REX_PREFIX_ENC_BIND(xed_encoder_request_t * xes)3122 xed_uint_t xed_encode_nonterminal_REX_PREFIX_ENC_BIND(xed_encoder_request_t* xes)
3123 {
3124 /* REX_PREFIX_ENC()::
3125 	MODE=2 NOREX=0 NEEDREX=1 REXW[w]=* REXB[b]=* REXX[x]=* REXR[r]=*  ->	emit 0b0100 emit_type=numeric value=0x4 nbits=4 	emit wrxb emit_type=letters nbits=4
3126 	MODE=2 NOREX=0 REX=1 REXW[w]=* REXB[b]=* REXX[x]=* REXR[r]=*  ->	emit 0b0100 emit_type=numeric value=0x4 nbits=4 	emit wrxb emit_type=letters nbits=4
3127 	MODE=2 NOREX=0 REXW[w]=1 REXB[b]=* REXX[x]=* REXR[r]=*  ->	emit 0b0100 emit_type=numeric value=0x4 nbits=4 	emit wrxb emit_type=letters nbits=4
3128 	MODE=2 NOREX=0 REXW[w]=* REXB[b]=1 REXX[x]=* REXR[r]=*  ->	emit 0b0100 emit_type=numeric value=0x4 nbits=4 	emit wrxb emit_type=letters nbits=4
3129 	MODE=2 NOREX=0 REXW[w]=* REXB[b]=* REXX[x]=1 REXR[r]=*  ->	emit 0b0100 emit_type=numeric value=0x4 nbits=4 	emit wrxb emit_type=letters nbits=4
3130 	MODE=2 NOREX=0 REXW[w]=* REXB[b]=* REXX[x]=* REXR[r]=1  ->	emit 0b0100 emit_type=numeric value=0x4 nbits=4 	emit wrxb emit_type=letters nbits=4
3131 	MODE=2 NEEDREX=0 REX=0 REXW=0 REXB=0 REXX=0 REXR=0  ->	nothing
3132 	MODE=1 REX=0 REXW=0 REXB=0 REXX=0 REXR=0  ->	nothing
3133 	MODE=0 REX=0 REXW=0 REXB=0 REXX=0 REXR=0  ->	nothing
3134 	MODE=2 NOREX=1 NEEDREX=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR
3135 	MODE=2 NOREX=1 REX=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR
3136 	MODE=2 NOREX=1 REXW=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR
3137 	MODE=2 NOREX=1 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR
3138 	MODE=2 NOREX=1 REXX=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR
3139 	MODE=2 NOREX=1 REXR=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR
3140  */
3141 xed_uint_t okay=1;
3142 xed_uint_t conditions_satisfied=0;
3143 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3144 		 (xed3_operand_get_norex(xes) == 0) &&
3145 		 (xed3_operand_get_needrex(xes) == 1);
3146 if (conditions_satisfied) {
3147     okay=1;
3148     xed_encoder_request_iforms(xes)->x_REX_PREFIX_ENC=1;
3149     if (okay) return 1;
3150 }
3151 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3152 		 (xed3_operand_get_norex(xes) == 0) &&
3153 		 (xed3_operand_get_rex(xes) == 1);
3154 if (conditions_satisfied) {
3155     okay=1;
3156     xed_encoder_request_iforms(xes)->x_REX_PREFIX_ENC=2;
3157     if (okay) return 1;
3158 }
3159 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3160 		 (xed3_operand_get_norex(xes) == 0) &&
3161 		 (xed3_operand_get_rexw(xes) == 1);
3162 if (conditions_satisfied) {
3163     okay=1;
3164     xed_encoder_request_iforms(xes)->x_REX_PREFIX_ENC=3;
3165     if (okay) return 1;
3166 }
3167 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3168 		 (xed3_operand_get_norex(xes) == 0) &&
3169 		 (xed3_operand_get_rexb(xes) == 1);
3170 if (conditions_satisfied) {
3171     okay=1;
3172     xed_encoder_request_iforms(xes)->x_REX_PREFIX_ENC=4;
3173     if (okay) return 1;
3174 }
3175 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3176 		 (xed3_operand_get_norex(xes) == 0) &&
3177 		 (xed3_operand_get_rexx(xes) == 1);
3178 if (conditions_satisfied) {
3179     okay=1;
3180     xed_encoder_request_iforms(xes)->x_REX_PREFIX_ENC=5;
3181     if (okay) return 1;
3182 }
3183 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3184 		 (xed3_operand_get_norex(xes) == 0) &&
3185 		 (xed3_operand_get_rexr(xes) == 1);
3186 if (conditions_satisfied) {
3187     okay=1;
3188     xed_encoder_request_iforms(xes)->x_REX_PREFIX_ENC=6;
3189     if (okay) return 1;
3190 }
3191 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3192 		 (xed3_operand_get_needrex(xes) == 0) &&
3193 		 (xed3_operand_get_rex(xes) == 0) &&
3194 		 (xed3_operand_get_rexw(xes) == 0) &&
3195 		 (xed3_operand_get_rexb(xes) == 0) &&
3196 		 (xed3_operand_get_rexx(xes) == 0) &&
3197 		 (xed3_operand_get_rexr(xes) == 0);
3198 if (conditions_satisfied) {
3199     okay=1;
3200     return 1; /* nothing */
3201     if (okay) return 1;
3202 }
3203 conditions_satisfied = (xed3_operand_get_mode(xes) == 1) &&
3204 		 (xed3_operand_get_rex(xes) == 0) &&
3205 		 (xed3_operand_get_rexw(xes) == 0) &&
3206 		 (xed3_operand_get_rexb(xes) == 0) &&
3207 		 (xed3_operand_get_rexx(xes) == 0) &&
3208 		 (xed3_operand_get_rexr(xes) == 0);
3209 if (conditions_satisfied) {
3210     okay=1;
3211     return 1; /* nothing */
3212     if (okay) return 1;
3213 }
3214 conditions_satisfied = (xed3_operand_get_mode(xes) == 0) &&
3215 		 (xed3_operand_get_rex(xes) == 0) &&
3216 		 (xed3_operand_get_rexw(xes) == 0) &&
3217 		 (xed3_operand_get_rexb(xes) == 0) &&
3218 		 (xed3_operand_get_rexx(xes) == 0) &&
3219 		 (xed3_operand_get_rexr(xes) == 0);
3220 if (conditions_satisfied) {
3221     okay=1;
3222     return 1; /* nothing */
3223     if (okay) return 1;
3224 }
3225 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3226 		 (xed3_operand_get_norex(xes) == 1) &&
3227 		 (xed3_operand_get_needrex(xes) == 1);
3228 if (conditions_satisfied) {
3229     okay=1;
3230     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
3231     return 0; /* error */
3232     if (okay) return 1;
3233 }
3234 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3235 		 (xed3_operand_get_norex(xes) == 1) &&
3236 		 (xed3_operand_get_rex(xes) == 1);
3237 if (conditions_satisfied) {
3238     okay=1;
3239     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
3240     return 0; /* error */
3241     if (okay) return 1;
3242 }
3243 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3244 		 (xed3_operand_get_norex(xes) == 1) &&
3245 		 (xed3_operand_get_rexw(xes) == 1);
3246 if (conditions_satisfied) {
3247     okay=1;
3248     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
3249     return 0; /* error */
3250     if (okay) return 1;
3251 }
3252 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3253 		 (xed3_operand_get_norex(xes) == 1) &&
3254 		 (xed3_operand_get_rexb(xes) == 1);
3255 if (conditions_satisfied) {
3256     okay=1;
3257     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
3258     return 0; /* error */
3259     if (okay) return 1;
3260 }
3261 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3262 		 (xed3_operand_get_norex(xes) == 1) &&
3263 		 (xed3_operand_get_rexx(xes) == 1);
3264 if (conditions_satisfied) {
3265     okay=1;
3266     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
3267     return 0; /* error */
3268     if (okay) return 1;
3269 }
3270 conditions_satisfied = (xed3_operand_get_mode(xes) == 2) &&
3271 		 (xed3_operand_get_norex(xes) == 1) &&
3272 		 (xed3_operand_get_rexr(xes) == 1);
3273 if (conditions_satisfied) {
3274     okay=1;
3275     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
3276     return 0; /* error */
3277     if (okay) return 1;
3278 }
3279 conditions_satisfied = 1;
3280 if (conditions_satisfied) {
3281     okay=1;
3282     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
3283     return 0; /* error */
3284 /* FIXME action code not done yet for return 1*/
3285     if (okay) return 1;
3286 }
3287 return 0; /*pacify the compiler*/
3288 (void) okay;
3289 (void) xes;
3290 (void) conditions_satisfied;
3291 }
3292