1 /// @file xed-encoder-1.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_nonterminal_UISA_ENC_INDEX_ZMM_BIND(xed_encoder_request_t * xes)28 xed_uint32_t xed_encode_nonterminal_UISA_ENC_INDEX_ZMM_BIND(xed_encoder_request_t* xes)
29 {
30 typedef struct { xed_int8_t rexx ;xed_int8_t sibindex ;xed_int8_t vexdest4;} lu_entry_t;
31 static const lu_entry_t lu_table[32] = {
32 /*h(242)=0 INDEX=XED_REG_ZMM0  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {0,0,0},
33 /*h(243)=1 INDEX=XED_REG_ZMM1  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {0,1,0},
34 /*h(244)=2 INDEX=XED_REG_ZMM2  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {0,2,0},
35 /*h(245)=3 INDEX=XED_REG_ZMM3  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {0,3,0},
36 /*h(246)=4 INDEX=XED_REG_ZMM4  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0,4,0},
37 /*h(247)=5 INDEX=XED_REG_ZMM5  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {0,5,0},
38 /*h(248)=6 INDEX=XED_REG_ZMM6  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {0,6,0},
39 /*h(249)=7 INDEX=XED_REG_ZMM7  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {0,7,0},
40 /*h(250)=8 INDEX=XED_REG_ZMM8  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {1,0,0},
41 /*h(251)=9 INDEX=XED_REG_ZMM9  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {1,1,0},
42 /*h(252)=10 INDEX=XED_REG_ZMM10  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {1,2,0},
43 /*h(253)=11 INDEX=XED_REG_ZMM11  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {1,3,0},
44 /*h(254)=12 INDEX=XED_REG_ZMM12  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {1,4,0},
45 /*h(255)=13 INDEX=XED_REG_ZMM13  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {1,5,0},
46 /*h(256)=14 INDEX=XED_REG_ZMM14  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {1,6,0},
47 /*h(257)=15 INDEX=XED_REG_ZMM15  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {1,7,0},
48 /*h(258)=16 INDEX=XED_REG_ZMM16  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {0,0,1},
49 /*h(259)=17 INDEX=XED_REG_ZMM17  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {0,1,1},
50 /*h(260)=18 INDEX=XED_REG_ZMM18  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {0,2,1},
51 /*h(261)=19 INDEX=XED_REG_ZMM19  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {0,3,1},
52 /*h(262)=20 INDEX=XED_REG_ZMM20  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0,4,1},
53 /*h(263)=21 INDEX=XED_REG_ZMM21  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {0,5,1},
54 /*h(264)=22 INDEX=XED_REG_ZMM22  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {0,6,1},
55 /*h(265)=23 INDEX=XED_REG_ZMM23  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {0,7,1},
56 /*h(266)=24 INDEX=XED_REG_ZMM24  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {1,0,1},
57 /*h(267)=25 INDEX=XED_REG_ZMM25  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {1,1,1},
58 /*h(268)=26 INDEX=XED_REG_ZMM26  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {1,2,1},
59 /*h(269)=27 INDEX=XED_REG_ZMM27  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {1,3,1},
60 /*h(270)=28 INDEX=XED_REG_ZMM28  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {1,4,1},
61 /*h(271)=29 INDEX=XED_REG_ZMM29  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {1,5,1},
62 /*h(272)=30 INDEX=XED_REG_ZMM30  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {1,6,1},
63 /*h(273)=31 INDEX=XED_REG_ZMM31  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {1,7,1}
64 };
65 xed_uint64_t key = 0;
66 xed_uint64_t hidx = 0;
67 key = xed_enc_lu_INDEX(xes);
68 hidx = key - 242;
69 if(hidx <= 31) {
70     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
71     xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
72     xed3_operand_set_vexdest4(xes,lu_table[hidx].vexdest4);
73     return 1;
74 }
75 else{
76     return 0;
77 }
78 }
xed_encode_nonterminal_FIXUP_SMODE_ENC_BIND(xed_encoder_request_t * xes)79 xed_uint32_t xed_encode_nonterminal_FIXUP_SMODE_ENC_BIND(xed_encoder_request_t* xes)
80 {
81 typedef struct {xed_uint32_t key; xed_int8_t error ;xed_int8_t smode;} lu_entry_t;
82 static const lu_entry_t lu_table[2] = {
83 /*h(2)=0 MODE=2 SMODE=0  ->	FB SMODE=2 value=0x2*/ {2, -1,2},
84 /*h(6)=1 MODE=2 SMODE=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {6, XED_ERROR_GENERAL_ERROR,-1}
85 };
86 xed_union64_t t;
87 xed_uint64_t key = 0;
88 xed_uint64_t hidx = 0;
89 key = xed_enc_lu_MODE_SMODE(xes);
90 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-1));
91 if(lu_table[hidx].key == key) {
92     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
93     if(lu_table[hidx].smode >= 0) xed3_operand_set_smode(xes,lu_table[hidx].smode);
94     return 1;
95 }
96 else{
97     return 1;
98 }
99 }
xed_encode_nonterminal_FORCE64_BIND(xed_encoder_request_t * xes)100 xed_uint32_t xed_encode_nonterminal_FORCE64_BIND(xed_encoder_request_t* xes)
101 {
102 xed3_operand_set_df64(xes,1);
103 xed3_operand_set_eosz(xes,3);
104 return 1;
105 (void)xes;
106 return 1;
107 }
xed_encode_nonterminal_NELEM_GSCAT_BIND(xed_encoder_request_t * xes)108 xed_uint32_t xed_encode_nonterminal_NELEM_GSCAT_BIND(xed_encoder_request_t* xes)
109 {
110 return 1;
111 (void)xes;
112 return 1;
113 }
xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xed_encoder_request_t * xes)114 xed_uint32_t xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xed_encoder_request_t* xes)
115 {
116 typedef struct {xed_uint32_t key; xed_int8_t seg_ovd;} lu_entry_t;
117 static const lu_entry_t lu_table[14] = {
118 /*h(0)=0 DEFAULT_SEG=0 SEG0=@  ->	FB SEG_OVD=0 value=0x0*/ {0, 0},
119 /*h(601)=1 DEFAULT_SEG=1 SEG0=XED_REG_SS  ->	FB SEG_OVD=0 value=0x0*/ {601, 0},
120 /*h(604)=2 DEFAULT_SEG=0 SEG0=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4*/ {604, 4},
121 /*h(593)=3 DEFAULT_SEG=1 SEG0=XED_REG_DS  ->	FB SEG_OVD=2 value=0x2*/ {593, 2},
122 /*h(596)=4 DEFAULT_SEG=0 SEG0=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3*/ {596, 3},
123 /*h(1)=5 DEFAULT_SEG=1 SEG0=@  ->	FB SEG_OVD=0 value=0x0*/ {1, 0},
124 /*h(588)=6 DEFAULT_SEG=0 SEG0=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1*/ {588, 1},
125 /*h(605)=7 DEFAULT_SEG=1 SEG0=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4*/ {605, 4},
126 /*h(608)=8 DEFAULT_SEG=0 SEG0=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5*/ {608, 5},
127 /*h(597)=9 DEFAULT_SEG=1 SEG0=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3*/ {597, 3},
128 /*h(600)=10 DEFAULT_SEG=0 SEG0=XED_REG_SS  ->	FB SEG_OVD=6 value=0x6*/ {600, 6},
129 /*h(589)=11 DEFAULT_SEG=1 SEG0=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1*/ {589, 1},
130 /*h(592)=12 DEFAULT_SEG=0 SEG0=XED_REG_DS  ->	FB SEG_OVD=0 value=0x0*/ {592, 0},
131 /*h(609)=13 DEFAULT_SEG=1 SEG0=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5*/ {609, 5}
132 };
133 xed_uint64_t key = 0;
134 xed_uint64_t hidx = 0;
135 key = xed_enc_lu_DEFAULT_SEG_SEG0(xes);
136 hidx = ((5*key % 163) % 14);
137 if(lu_table[hidx].key == key) {
138     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
139     return 1;
140 }
141 else{
142     xed3_operand_set_seg_ovd(xes,0);
143     return 1;
144 }
145 }
xed_encode_nonterminal_MODRM_RM_ENCODE_BIND(xed_encoder_request_t * xes)146 xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_BIND(xed_encoder_request_t* xes)
147 {
148 typedef struct {xed_uint32_t key; xed_nt_func_ptr_t ntptr0;} lu_entry_t;
149 static const lu_entry_t lu_table[8] = {
150 /*empty slot1 */ {0,0},
151 /*h(2)=1 EASZ=2 SIB=0  ->	nt NT[MODRM_RM_ENCODE_EA32_SIB0]*/ {2, xed_encode_nonterminal_MODRM_RM_ENCODE_EA32_SIB0_BIND},
152 /*h(7)=2 EASZ!=1 SIB=1  ->	nt NT[MODRM_RM_ENCODE_EANOT16_SIB1]*/ {7, xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND},
153 /*h(4)=3 EASZ!=1 SIB=1  ->	nt NT[MODRM_RM_ENCODE_EANOT16_SIB1]*/ {4, xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND},
154 /*h(1)=4 EASZ=1 SIB=0  ->	nt NT[MODRM_RM_ENCODE_EA16_SIB0]*/ {1, xed_encode_nonterminal_MODRM_RM_ENCODE_EA16_SIB0_BIND},
155 /*h(6)=5 EASZ!=1 SIB=1  ->	nt NT[MODRM_RM_ENCODE_EANOT16_SIB1]*/ {6, xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND},
156 /*h(3)=6 EASZ=3 SIB=0  ->	nt NT[MODRM_RM_ENCODE_EA64_SIB0]*/ {3, xed_encode_nonterminal_MODRM_RM_ENCODE_EA64_SIB0_BIND},
157 /*empty slot1 */ {0,0}
158 };
159 xed_union64_t t;
160 xed_uint64_t key = 0;
161 xed_uint64_t hidx = 0;
162 xed_uint64_t res = 1;
163 key = xed_enc_lu_EASZ_SIB(xes);
164 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-3));
165 if(lu_table[hidx].key == key) {
166     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
167     xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE=hidx+1;
168     return res;
169     return 1;
170 }
171 else{
172     return 0;
173 }
174 }
xed_encode_nonterminal_FIX_ROUND_LEN512_BIND(xed_encoder_request_t * xes)175 xed_uint32_t xed_encode_nonterminal_FIX_ROUND_LEN512_BIND(xed_encoder_request_t* xes)
176 {
177 return 1;
178 (void)xes;
179 return 1;
180 }
xed_encode_nonterminal_NELEM_GPR_READER_SUBDWORD_BIND(xed_encoder_request_t * xes)181 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_READER_SUBDWORD_BIND(xed_encoder_request_t* xes)
182 {
183 return 1;
184 (void)xes;
185 return 1;
186 }
xed_encode_nonterminal_NELEM_GPR_WRITER_LDOP_BIND(xed_encoder_request_t * xes)187 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_WRITER_LDOP_BIND(xed_encoder_request_t* xes)
188 {
189 return 1;
190 (void)xes;
191 return 1;
192 }
xed_encode_nonterminal_ERROR_BIND(xed_encoder_request_t * xes)193 xed_uint32_t xed_encode_nonterminal_ERROR_BIND(xed_encoder_request_t* xes)
194 {
195 xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
196 return 1;
197 (void)xes;
198 return 1;
199 }
xed_encode_nonterminal_DISP_WIDTH_32_BIND(xed_encoder_request_t * xes)200 xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_32_BIND(xed_encoder_request_t* xes)
201 {
202 xed_uint64_t key = 0;
203 xed_uint64_t hidx = 0;
204 key = xed_enc_lu_DISP_WIDTH(xes);
205 hidx = key - 32;
206 if(hidx == 0) {
207     return 1;
208 }
209 else{
210     return 0;
211 }
212 }
xed_encode_nonterminal_EVEX_UPP_ENC_BIND(xed_encoder_request_t * xes)213 xed_uint32_t xed_encode_nonterminal_EVEX_UPP_ENC_BIND(xed_encoder_request_t* xes)
214 {
215 typedef struct { xed_uint32_t emit;} lu_entry_t;
216 static const lu_entry_t lu_table[4] = {
217 /*h(0)=0 VEX_PREFIX=0  ->	emit 0b100 emit_type=numeric value=0x4 nbits=3*/ {1},
218 /*h(1)=1 VEX_PREFIX=1  ->	emit 0b101 emit_type=numeric value=0x5 nbits=3*/ {2},
219 /*h(2)=2 VEX_PREFIX=2  ->	emit 0b111 emit_type=numeric value=0x7 nbits=3*/ {3},
220 /*h(3)=3 VEX_PREFIX=3  ->	emit 0b110 emit_type=numeric value=0x6 nbits=3*/ {4}
221 };
222 xed_uint64_t key = 0;
223 xed_uint64_t hidx = 0;
224 key = xed_enc_lu_VEX_PREFIX(xes);
225 hidx = key - 0;
226 if(hidx <= 3) {
227     xed_encoder_request_iforms(xes)->x_EVEX_UPP_ENC=lu_table[hidx].emit;
228     return 1;
229 }
230 else{
231     return 0;
232 }
233 }
xed_encode_nonterminal_EVEX_MAP_ENC_BIND(xed_encoder_request_t * xes)234 xed_uint32_t xed_encode_nonterminal_EVEX_MAP_ENC_BIND(xed_encoder_request_t* xes)
235 {
236 typedef struct { xed_uint32_t emit;} lu_entry_t;
237 static const lu_entry_t lu_table[4] = {
238 /*h(0)=0 MAP=0  ->	emit 0b0000 emit_type=numeric value=0x0 nbits=4*/ {1},
239 /*h(1)=1 MAP=1  ->	emit 0b0001 emit_type=numeric value=0x1 nbits=4*/ {2},
240 /*h(2)=2 MAP=2  ->	emit 0b0010 emit_type=numeric value=0x2 nbits=4*/ {3},
241 /*h(3)=3 MAP=3  ->	emit 0b0011 emit_type=numeric value=0x3 nbits=4*/ {4}
242 };
243 xed_uint64_t key = 0;
244 xed_uint64_t hidx = 0;
245 key = xed_enc_lu_MAP(xes);
246 hidx = key - 0;
247 if(hidx <= 3) {
248     xed_encoder_request_iforms(xes)->x_EVEX_MAP_ENC=lu_table[hidx].emit;
249     return 1;
250 }
251 else{
252     return 0;
253 }
254 }
xed_encode_nonterminal_NELEM_FULLMEM_BIND(xed_encoder_request_t * xes)255 xed_uint32_t xed_encode_nonterminal_NELEM_FULLMEM_BIND(xed_encoder_request_t* xes)
256 {
257 return 1;
258 (void)xes;
259 return 1;
260 }
xed_encode_nonterminal_NELEM_GPR_WRITER_STORE_BIND(xed_encoder_request_t * xes)261 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_WRITER_STORE_BIND(xed_encoder_request_t* xes)
262 {
263 return 1;
264 (void)xes;
265 return 1;
266 }
xed_encode_nonterminal_ESIZE_1_BITS_BIND(xed_encoder_request_t * xes)267 xed_uint32_t xed_encode_nonterminal_ESIZE_1_BITS_BIND(xed_encoder_request_t* xes)
268 {
269 return 1;
270 (void)xes;
271 return 1;
272 }
xed_encode_nonterminal_NELEM_GPR_WRITER_STORE_SUBDWORD_BIND(xed_encoder_request_t * xes)273 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_WRITER_STORE_SUBDWORD_BIND(xed_encoder_request_t* xes)
274 {
275 return 1;
276 (void)xes;
277 return 1;
278 }
xed_encode_nonterminal_SE_IMM8_BIND(xed_encoder_request_t * xes)279 xed_uint32_t xed_encode_nonterminal_SE_IMM8_BIND(xed_encoder_request_t* xes)
280 {
281 typedef struct { xed_uint32_t emit;} lu_entry_t;
282 static const lu_entry_t lu_table[1] = {
283 /*h(0)=0 DUMMY=0 ESRC[ssss]=* UIMM0[dddd]=*  ->	emit ssss_dddd emit_type=letters nbits=8*/ {1}
284 };
285 xed_uint64_t key = 0;
286 xed_uint64_t hidx = 0;
287 key = xed_enc_lu_DUMMY(xes);
288 hidx = key - 0;
289 if(hidx == 0) {
290     xed_encoder_request_iforms(xes)->x_SE_IMM8=lu_table[hidx].emit;
291     return 1;
292 }
293 else{
294     return 0;
295 }
296 }
xed_encode_nonterminal_MODRM_MOD_EA16_DISP8_BIND(xed_encoder_request_t * xes)297 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA16_DISP8_BIND(xed_encoder_request_t* xes)
298 {
299 typedef struct {xed_uint32_t key; xed_int8_t mod;} lu_entry_t;
300 static const lu_entry_t lu_table[8] = {
301 /*h(37)=0 BASE0=XED_REG_BX INDEX=@  ->	FB MOD=1 value=0x1*/ {37, 1},
302 /*h(21029)=1 BASE0=XED_REG_BX INDEX=XED_REG_DI  ->	FB MOD=1 value=0x1*/ {21029, 1},
303 /*h(20517)=2 BASE0=XED_REG_BX INDEX=XED_REG_SI  ->	FB MOD=1 value=0x1*/ {20517, 1},
304 /*h(39)=3 BASE0=XED_REG_BP INDEX=@  ->	FB MOD=1 value=0x1*/ {39, 1},
305 /*h(21031)=4 BASE0=XED_REG_BP INDEX=XED_REG_DI  ->	FB MOD=1 value=0x1*/ {21031, 1},
306 /*h(20519)=5 BASE0=XED_REG_BP INDEX=XED_REG_SI  ->	FB MOD=1 value=0x1*/ {20519, 1},
307 /*h(41)=6 BASE0=XED_REG_DI INDEX=@  ->	FB MOD=1 value=0x1*/ {41, 1},
308 /*h(40)=7 BASE0=XED_REG_SI INDEX=@  ->	FB MOD=1 value=0x1*/ {40, 1}
309 };
310 xed_uint64_t key = 0;
311 xed_uint64_t hidx = 0;
312 key = xed_enc_lu_BASE0_INDEX(xes);
313 hidx = ((20*key % 37) % 8);
314 if(lu_table[hidx].key == key) {
315     xed3_operand_set_mod(xes,lu_table[hidx].mod);
316     return 1;
317 }
318 else{
319     return 0;
320 }
321 }
xed_encode_nonterminal_NELEM_GPR_WRITER_LDOP_Q_BIND(xed_encoder_request_t * xes)322 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_WRITER_LDOP_Q_BIND(xed_encoder_request_t* xes)
323 {
324 return 1;
325 (void)xes;
326 return 1;
327 }
xed_encode_nonterminal_BND_B_CHECK_BIND(xed_encoder_request_t * xes)328 xed_uint32_t xed_encode_nonterminal_BND_B_CHECK_BIND(xed_encoder_request_t* xes)
329 {
330 typedef struct { xed_int8_t error;} lu_entry_t;
331 static const lu_entry_t lu_table[16] = {
332 /*h(0)=0 REXB=0 RM=0x0  ->	nothing*/ {-1},
333 /*h(1)=1 REXB=1 RM=0x0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
334 /*h(2)=2 REXB=0 RM=0x1  ->	nothing*/ {-1},
335 /*h(3)=3 REXB=1 RM=0x1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
336 /*h(4)=4 REXB=0 RM=0x2  ->	nothing*/ {-1},
337 /*h(5)=5 REXB=1 RM=0x2  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
338 /*h(6)=6 REXB=0 RM=0x3  ->	nothing*/ {-1},
339 /*h(7)=7 REXB=1 RM=0x3  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
340 /*h(8)=8 REXB=0 RM=0x4  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
341 /*h(9)=9 REXB=1 RM=0x4  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
342 /*h(10)=10 REXB=0 RM=0x5  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
343 /*h(11)=11 REXB=1 RM=0x5  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
344 /*h(12)=12 REXB=0 RM=0x6  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
345 /*h(13)=13 REXB=1 RM=0x6  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
346 /*h(14)=14 REXB=0 RM=0x7  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
347 /*h(15)=15 REXB=1 RM=0x7  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR}
348 };
349 xed_uint64_t key = 0;
350 xed_uint64_t hidx = 0;
351 key = xed_enc_lu_REXB_RM(xes);
352 hidx = key - 0;
353 if(hidx <= 15) {
354     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
355     return 1;
356 }
357 else{
358     return 0;
359 }
360 }
xed_encode_nonterminal_XOP_MAP_ENC_BIND(xed_encoder_request_t * xes)361 xed_uint32_t xed_encode_nonterminal_XOP_MAP_ENC_BIND(xed_encoder_request_t* xes)
362 {
363 typedef struct { xed_uint32_t emit;} lu_entry_t;
364 static const lu_entry_t lu_table[3] = {
365 /*h(8)=0 MAP=8 REXW[w]=*  ->	emit 0b0_1000 emit_type=numeric value=0x8 nbits=5 	emit w emit_type=letters nbits=1*/ {1},
366 /*h(9)=1 MAP=9 REXW[w]=*  ->	emit 0b0_1001 emit_type=numeric value=0x9 nbits=5 	emit w emit_type=letters nbits=1*/ {2},
367 /*h(10)=2 MAP=10 REXW[w]=*  ->	emit 0b0_1010 emit_type=numeric value=0xa nbits=5 	emit w emit_type=letters nbits=1*/ {3}
368 };
369 xed_uint64_t key = 0;
370 xed_uint64_t hidx = 0;
371 key = xed_enc_lu_MAP(xes);
372 hidx = key - 8;
373 if(hidx <= 2) {
374     xed_encoder_request_iforms(xes)->x_XOP_MAP_ENC=lu_table[hidx].emit;
375     return 1;
376 }
377 else{
378     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
379     return 1;
380 }
381 }
xed_encode_nonterminal_NELEM_TUPLE1_BIND(xed_encoder_request_t * xes)382 xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE1_BIND(xed_encoder_request_t* xes)
383 {
384 return 1;
385 (void)xes;
386 return 1;
387 }
xed_encode_nonterminal_MODRM_MOD_ENCODE_BIND(xed_encoder_request_t * xes)388 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_ENCODE_BIND(xed_encoder_request_t* xes)
389 {
390 typedef struct {xed_uint32_t key; xed_nt_func_ptr_t ntptr0;} lu_entry_t;
391 static const lu_entry_t lu_table[15] = {
392 /*h(264)=0 EASZ=2 DISP_WIDTH=8  ->	nt NT[MODRM_MOD_EA32_DISP8]*/ {264, xed_encode_nonterminal_MODRM_MOD_EA32_DISP8_BIND},
393 /*h(416)=1 EASZ=3 DISP_WIDTH=32  ->	nt NT[MODRM_MOD_EA64_DISP32]*/ {416, xed_encode_nonterminal_MODRM_MOD_EA64_DISP32_BIND},
394 /*h(144)=2 EASZ=1 DISP_WIDTH=16  ->	nt NT[MODRM_MOD_EA16_DISP16]*/ {144, xed_encode_nonterminal_MODRM_MOD_EA16_DISP16_BIND},
395 /*h(256)=3 EASZ=2 DISP_WIDTH=0  ->	nt NT[MODRM_MOD_EA32_DISP0]*/ {256, xed_encode_nonterminal_MODRM_MOD_EA32_DISP0_BIND},
396 /*h(448)=4 EASZ=3 DISP_WIDTH=64  ->	nt NT[ERROR]*/ {448, xed_encode_nonterminal_ERROR_BIND},
397 /*h(136)=5 EASZ=1 DISP_WIDTH=8  ->	nt NT[MODRM_MOD_EA16_DISP8]*/ {136, xed_encode_nonterminal_MODRM_MOD_EA16_DISP8_BIND},
398 /*h(288)=6 EASZ=2 DISP_WIDTH=32  ->	nt NT[MODRM_MOD_EA32_DISP32]*/ {288, xed_encode_nonterminal_MODRM_MOD_EA32_DISP32_BIND},
399 /*h(400)=7 EASZ=3 DISP_WIDTH=16  ->	nt NT[ERROR]*/ {400, xed_encode_nonterminal_ERROR_BIND},
400 /*h(128)=8 EASZ=1 DISP_WIDTH=0  ->	nt NT[MODRM_MOD_EA16_DISP0]*/ {128, xed_encode_nonterminal_MODRM_MOD_EA16_DISP0_BIND},
401 /*h(320)=9 EASZ=2 DISP_WIDTH=64  ->	nt NT[ERROR]*/ {320, xed_encode_nonterminal_ERROR_BIND},
402 /*h(392)=10 EASZ=3 DISP_WIDTH=8  ->	nt NT[MODRM_MOD_EA64_DISP8]*/ {392, xed_encode_nonterminal_MODRM_MOD_EA64_DISP8_BIND},
403 /*h(160)=11 EASZ=1 DISP_WIDTH=32  ->	nt NT[ERROR]*/ {160, xed_encode_nonterminal_ERROR_BIND},
404 /*h(272)=12 EASZ=2 DISP_WIDTH=16  ->	nt NT[ERROR]*/ {272, xed_encode_nonterminal_ERROR_BIND},
405 /*h(384)=13 EASZ=3 DISP_WIDTH=0  ->	nt NT[MODRM_MOD_EA64_DISP0]*/ {384, xed_encode_nonterminal_MODRM_MOD_EA64_DISP0_BIND},
406 /*h(192)=14 EASZ=1 DISP_WIDTH=64  ->	nt NT[ERROR]*/ {192, xed_encode_nonterminal_ERROR_BIND}
407 };
408 xed_uint64_t key = 0;
409 xed_uint64_t hidx = 0;
410 xed_uint64_t res = 1;
411 key = xed_enc_lu_DISP_WIDTH_EASZ(xes);
412 hidx = ((5*key % 43) % 15);
413 if(lu_table[hidx].key == key) {
414     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
415     xed_encoder_request_iforms(xes)->x_MODRM_MOD_ENCODE=hidx+1;
416     return res;
417     return 1;
418 }
419 else{
420     return 0;
421 }
422 }
xed_encode_nonterminal_NELEM_MEM128_BIND(xed_encoder_request_t * xes)423 xed_uint32_t xed_encode_nonterminal_NELEM_MEM128_BIND(xed_encoder_request_t* xes)
424 {
425 typedef struct { xed_int8_t error;} lu_entry_t;
426 static const lu_entry_t lu_table[31] = {
427 /*h(1)=0 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
428 /*h(2)=1 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
429 /*h(3)=2 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
430 /*h(4)=3 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
431 /*h(5)=4 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
432 /*h(6)=5 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
433 /*h(7)=6 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
434 /*h(8)=7 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
435 /*h(9)=8 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
436 /*h(10)=9 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
437 /*h(11)=10 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
438 /*h(12)=11 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
439 /*h(13)=12 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
440 /*h(14)=13 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
441 /*h(15)=14 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
442 /*h(16)=15 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
443 /*h(17)=16 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
444 /*h(18)=17 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
445 /*h(19)=18 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
446 /*h(20)=19 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
447 /*h(21)=20 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
448 /*h(22)=21 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
449 /*h(23)=22 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
450 /*h(24)=23 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
451 /*h(25)=24 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
452 /*h(26)=25 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
453 /*h(27)=26 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
454 /*h(28)=27 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
455 /*h(29)=28 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
456 /*h(30)=29 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
457 /*h(31)=30 BCAST!=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR}
458 };
459 xed_uint64_t key = 0;
460 xed_uint64_t hidx = 0;
461 key = xed_enc_lu_BCAST(xes);
462 hidx = key - 1;
463 if(hidx <= 30) {
464     xed3_operand_set_error(xes,lu_table[hidx].error);
465     return 1;
466 }
467 else{
468     xed3_operand_set_bcrc(xes,0);
469     return 1;
470 }
471 }
xed_encode_nonterminal_NELEM_GPR_WRITER_LDOP_D_BIND(xed_encoder_request_t * xes)472 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_WRITER_LDOP_D_BIND(xed_encoder_request_t* xes)
473 {
474 return 1;
475 (void)xes;
476 return 1;
477 }
xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xed_encoder_request_t * xes)478 xed_uint32_t xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xed_encoder_request_t* xes)
479 {
480 typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t sibbase ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
481 static const lu_entry_t lu_table[104] = {
482 /*h(0)=0 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB REXB=0 value=0x0 	FB SIBBASE=5 value=0x5*/ {0, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
483 /*empty slot1 */ {0,0,0,0},
484 /*empty slot1 */ {0,0,0,0},
485 /*h(548)=3 BASE0=XED_REG_DX EASZ=1  ->	FB REXB=0 value=0x0 	FB SIBBASE=2 value=0x2*/ {548, 0,2,0},
486 /*empty slot1 */ {0,0,0,0},
487 /*empty slot1 */ {0,0,0,0},
488 /*empty slot1 */ {0,0,0,0},
489 /*h(549)=7 BASE0=XED_REG_BX EASZ=1  ->	FB REXB=0 value=0x0 	FB SIBBASE=3 value=0x3*/ {549, 0,3,0},
490 /*empty slot1 */ {0,0,0,0},
491 /*empty slot1 */ {0,0,0,0},
492 /*empty slot1 */ {0,0,0,0},
493 /*h(550)=11 BASE0=XED_REG_SP EASZ=1  ->	FB REXB=0 value=0x0 	FB SIBBASE=4 value=0x4*/ {550, 0,4,0},
494 /*h(1024)=12 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB REXB=0 value=0x0 	FB SIBBASE=5 value=0x5*/ {1024, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
495 /*h(1074)=13 BASE0=XED_REG_EAX EASZ=2  ->	FB REXB=0 value=0x0 	FB SIBBASE=0 value=0x0*/ {1074, 0,0,0},
496 /*empty slot1 */ {0,0,0,0},
497 /*h(551)=15 BASE0=XED_REG_BP EASZ=1  ->	nt NT[DISP_WIDTH_8_32] 	FB REXB=0 value=0x0 	FB SIBBASE=5 value=0x5*/ {551, 0,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
498 /*empty slot1 */ {0,0,0,0},
499 /*h(1075)=17 BASE0=XED_REG_ECX EASZ=2  ->	FB REXB=0 value=0x0 	FB SIBBASE=1 value=0x1*/ {1075, 0,1,0},
500 /*empty slot1 */ {0,0,0,0},
501 /*h(552)=19 BASE0=XED_REG_SI EASZ=1  ->	FB REXB=0 value=0x0 	FB SIBBASE=6 value=0x6*/ {552, 0,6,0},
502 /*empty slot1 */ {0,0,0,0},
503 /*h(1076)=21 BASE0=XED_REG_EDX EASZ=2  ->	FB REXB=0 value=0x0 	FB SIBBASE=2 value=0x2*/ {1076, 0,2,0},
504 /*empty slot1 */ {0,0,0,0},
505 /*h(553)=23 BASE0=XED_REG_DI EASZ=1  ->	FB REXB=0 value=0x0 	FB SIBBASE=7 value=0x7*/ {553, 0,7,0},
506 /*empty slot1 */ {0,0,0,0},
507 /*h(1077)=25 BASE0=XED_REG_EBX EASZ=2  ->	FB REXB=0 value=0x0 	FB SIBBASE=3 value=0x3*/ {1077, 0,3,0},
508 /*empty slot1 */ {0,0,0,0},
509 /*h(554)=27 BASE0=XED_REG_R8W EASZ=1  ->	FB REXB=1 value=0x1 	FB SIBBASE=0 value=0x0*/ {554, 1,0,0},
510 /*empty slot1 */ {0,0,0,0},
511 /*h(1078)=29 BASE0=XED_REG_ESP EASZ=2  ->	FB REXB=0 value=0x0 	FB SIBBASE=4 value=0x4*/ {1078, 0,4,0},
512 /*empty slot1 */ {0,0,0,0},
513 /*h(555)=31 BASE0=XED_REG_R9W EASZ=1  ->	FB REXB=1 value=0x1 	FB SIBBASE=1 value=0x1*/ {555, 1,1,0},
514 /*empty slot1 */ {0,0,0,0},
515 /*h(1079)=33 BASE0=XED_REG_EBP EASZ=2  ->	nt NT[DISP_WIDTH_8_32] 	FB REXB=0 value=0x0 	FB SIBBASE=5 value=0x5*/ {1079, 0,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
516 /*empty slot1 */ {0,0,0,0},
517 /*h(556)=35 BASE0=XED_REG_R10W EASZ=1  ->	FB REXB=1 value=0x1 	FB SIBBASE=2 value=0x2*/ {556, 1,2,0},
518 /*empty slot1 */ {0,0,0,0},
519 /*h(1080)=37 BASE0=XED_REG_ESI EASZ=2  ->	FB REXB=0 value=0x0 	FB SIBBASE=6 value=0x6*/ {1080, 0,6,0},
520 /*empty slot1 */ {0,0,0,0},
521 /*h(557)=39 BASE0=XED_REG_R11W EASZ=1  ->	FB REXB=1 value=0x1 	FB SIBBASE=3 value=0x3*/ {557, 1,3,0},
522 /*h(1602)=40 BASE0=XED_REG_RAX EASZ=3  ->	FB REXB=0 value=0x0 	FB SIBBASE=0 value=0x0*/ {1602, 0,0,0},
523 /*h(1081)=41 BASE0=XED_REG_EDI EASZ=2  ->	FB REXB=0 value=0x0 	FB SIBBASE=7 value=0x7*/ {1081, 0,7,0},
524 /*empty slot1 */ {0,0,0,0},
525 /*h(558)=43 BASE0=XED_REG_R12W EASZ=1  ->	FB REXB=1 value=0x1 	FB SIBBASE=4 value=0x4*/ {558, 1,4,0},
526 /*h(1603)=44 BASE0=XED_REG_RCX EASZ=3  ->	FB REXB=0 value=0x0 	FB SIBBASE=1 value=0x1*/ {1603, 0,1,0},
527 /*h(1082)=45 BASE0=XED_REG_R8D EASZ=2  ->	FB REXB=1 value=0x1 	FB SIBBASE=0 value=0x0*/ {1082, 1,0,0},
528 /*empty slot1 */ {0,0,0,0},
529 /*h(559)=47 BASE0=XED_REG_R13W EASZ=1  ->	nt NT[DISP_WIDTH_8_32] 	FB REXB=1 value=0x1 	FB SIBBASE=5 value=0x5*/ {559, 1,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
530 /*h(1604)=48 BASE0=XED_REG_RDX EASZ=3  ->	FB REXB=0 value=0x0 	FB SIBBASE=2 value=0x2*/ {1604, 0,2,0},
531 /*h(1083)=49 BASE0=XED_REG_R9D EASZ=2  ->	FB REXB=1 value=0x1 	FB SIBBASE=1 value=0x1*/ {1083, 1,1,0},
532 /*empty slot1 */ {0,0,0,0},
533 /*h(560)=51 BASE0=XED_REG_R14W EASZ=1  ->	FB REXB=1 value=0x1 	FB SIBBASE=6 value=0x6*/ {560, 1,6,0},
534 /*h(1605)=52 BASE0=XED_REG_RBX EASZ=3  ->	FB REXB=0 value=0x0 	FB SIBBASE=3 value=0x3*/ {1605, 0,3,0},
535 /*h(1084)=53 BASE0=XED_REG_R10D EASZ=2  ->	FB REXB=1 value=0x1 	FB SIBBASE=2 value=0x2*/ {1084, 1,2,0},
536 /*empty slot1 */ {0,0,0,0},
537 /*h(561)=55 BASE0=XED_REG_R15W EASZ=1  ->	FB REXB=1 value=0x1 	FB SIBBASE=7 value=0x7*/ {561, 1,7,0},
538 /*h(1606)=56 BASE0=XED_REG_RSP EASZ=3  ->	FB REXB=0 value=0x0 	FB SIBBASE=4 value=0x4*/ {1606, 0,4,0},
539 /*h(1085)=57 BASE0=XED_REG_R11D EASZ=2  ->	FB REXB=1 value=0x1 	FB SIBBASE=3 value=0x3*/ {1085, 1,3,0},
540 /*h(512)=58 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB REXB=0 value=0x0 	FB SIBBASE=5 value=0x5*/ {512, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
541 /*empty slot1 */ {0,0,0,0},
542 /*h(1607)=60 BASE0=XED_REG_RBP EASZ=3  ->	nt NT[DISP_WIDTH_8_32] 	FB REXB=0 value=0x0 	FB SIBBASE=5 value=0x5*/ {1607, 0,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
543 /*h(1086)=61 BASE0=XED_REG_R12D EASZ=2  ->	FB REXB=1 value=0x1 	FB SIBBASE=4 value=0x4*/ {1086, 1,4,0},
544 /*empty slot1 */ {0,0,0,0},
545 /*empty slot1 */ {0,0,0,0},
546 /*h(1608)=64 BASE0=XED_REG_RSI EASZ=3  ->	FB REXB=0 value=0x0 	FB SIBBASE=6 value=0x6*/ {1608, 0,6,0},
547 /*h(1087)=65 BASE0=XED_REG_R13D EASZ=2  ->	nt NT[DISP_WIDTH_8_32] 	FB REXB=1 value=0x1 	FB SIBBASE=5 value=0x5*/ {1087, 1,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
548 /*empty slot1 */ {0,0,0,0},
549 /*empty slot1 */ {0,0,0,0},
550 /*h(1609)=68 BASE0=XED_REG_RDI EASZ=3  ->	FB REXB=0 value=0x0 	FB SIBBASE=7 value=0x7*/ {1609, 0,7,0},
551 /*h(1088)=69 BASE0=XED_REG_R14D EASZ=2  ->	FB REXB=1 value=0x1 	FB SIBBASE=6 value=0x6*/ {1088, 1,6,0},
552 /*h(1536)=70 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB REXB=0 value=0x0 	FB SIBBASE=5 value=0x5*/ {1536, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
553 /*empty slot1 */ {0,0,0,0},
554 /*h(1610)=72 BASE0=XED_REG_R8 EASZ=3  ->	FB REXB=1 value=0x1 	FB SIBBASE=0 value=0x0*/ {1610, 1,0,0},
555 /*h(1089)=73 BASE0=XED_REG_R15D EASZ=2  ->	FB REXB=1 value=0x1 	FB SIBBASE=7 value=0x7*/ {1089, 1,7,0},
556 /*empty slot1 */ {0,0,0,0},
557 /*empty slot1 */ {0,0,0,0},
558 /*h(1611)=76 BASE0=XED_REG_R9 EASZ=3  ->	FB REXB=1 value=0x1 	FB SIBBASE=1 value=0x1*/ {1611, 1,1,0},
559 /*empty slot1 */ {0,0,0,0},
560 /*empty slot1 */ {0,0,0,0},
561 /*empty slot1 */ {0,0,0,0},
562 /*h(1612)=80 BASE0=XED_REG_R10 EASZ=3  ->	FB REXB=1 value=0x1 	FB SIBBASE=2 value=0x2*/ {1612, 1,2,0},
563 /*empty slot1 */ {0,0,0,0},
564 /*empty slot1 */ {0,0,0,0},
565 /*empty slot1 */ {0,0,0,0},
566 /*h(1613)=84 BASE0=XED_REG_R11 EASZ=3  ->	FB REXB=1 value=0x1 	FB SIBBASE=3 value=0x3*/ {1613, 1,3,0},
567 /*empty slot1 */ {0,0,0,0},
568 /*empty slot1 */ {0,0,0,0},
569 /*empty slot1 */ {0,0,0,0},
570 /*h(1614)=88 BASE0=XED_REG_R12 EASZ=3  ->	FB REXB=1 value=0x1 	FB SIBBASE=4 value=0x4*/ {1614, 1,4,0},
571 /*empty slot1 */ {0,0,0,0},
572 /*h(546)=90 BASE0=XED_REG_AX EASZ=1  ->	FB REXB=0 value=0x0 	FB SIBBASE=0 value=0x0*/ {546, 0,0,0},
573 /*empty slot1 */ {0,0,0,0},
574 /*h(1615)=92 BASE0=XED_REG_R13 EASZ=3  ->	nt NT[DISP_WIDTH_8_32] 	FB REXB=1 value=0x1 	FB SIBBASE=5 value=0x5*/ {1615, 1,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
575 /*empty slot1 */ {0,0,0,0},
576 /*h(547)=94 BASE0=XED_REG_CX EASZ=1  ->	FB REXB=0 value=0x0 	FB SIBBASE=1 value=0x1*/ {547, 0,1,0},
577 /*empty slot1 */ {0,0,0,0},
578 /*h(1616)=96 BASE0=XED_REG_R14 EASZ=3  ->	FB REXB=1 value=0x1 	FB SIBBASE=6 value=0x6*/ {1616, 1,6,0},
579 /*empty slot1 */ {0,0,0,0},
580 /*empty slot1 */ {0,0,0,0},
581 /*empty slot1 */ {0,0,0,0},
582 /*h(1617)=100 BASE0=XED_REG_R15 EASZ=3  ->	FB REXB=1 value=0x1 	FB SIBBASE=7 value=0x7*/ {1617, 1,7,0},
583 /*empty slot1 */ {0,0,0,0},
584 /*empty slot1 */ {0,0,0,0},
585 /*empty slot1 */ {0,0,0,0}
586 };
587 xed_uint64_t key = 0;
588 xed_uint64_t hidx = 0;
589 xed_uint64_t res = 1;
590 key = xed_enc_lu_BASE0_EASZ(xes);
591 hidx = ((4*key % 199) % 104);
592 if(lu_table[hidx].key == key) {
593     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
594     xed3_operand_set_sibbase(xes,lu_table[hidx].sibbase);
595     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
596     xed_encoder_request_iforms(xes)->x_VSIB_ENC_BASE=hidx+1;
597     return res;
598     return 1;
599 }
600 else{
601     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
602     return 1;
603 }
604 }
xed_encode_nonterminal_NELEM_GPR_WRITER_STORE_WORD_BIND(xed_encoder_request_t * xes)605 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_WRITER_STORE_WORD_BIND(xed_encoder_request_t* xes)
606 {
607 return 1;
608 (void)xes;
609 return 1;
610 }
xed_encode_nonterminal_ESIZE_16_BITS_BIND(xed_encoder_request_t * xes)611 xed_uint32_t xed_encode_nonterminal_ESIZE_16_BITS_BIND(xed_encoder_request_t* xes)
612 {
613 return 1;
614 (void)xes;
615 return 1;
616 }
xed_encode_nonterminal_SIMM8_BIND(xed_encoder_request_t * xes)617 xed_uint32_t xed_encode_nonterminal_SIMM8_BIND(xed_encoder_request_t* xes)
618 {
619 typedef struct { xed_int8_t imm0signed ;xed_uint32_t emit;} lu_entry_t;
620 static const lu_entry_t lu_table[1] = {
621 /*h(8)=0 IMM_WIDTH=8 UIMM0[iiiiiiii]=*  ->	emit uimm0=iiiiiiii emit_type=letters nbits=8 	FB IMM0SIGNED=1 value=0x1*/ {1,1}
622 };
623 xed_uint64_t key = 0;
624 xed_uint64_t hidx = 0;
625 key = xed_enc_lu_IMM_WIDTH(xes);
626 hidx = key - 8;
627 if(hidx == 0) {
628     xed3_operand_set_imm0signed(xes,lu_table[hidx].imm0signed);
629     xed_encoder_request_iforms(xes)->x_SIMM8=lu_table[hidx].emit;
630     return 1;
631 }
632 else{
633     return 0;
634 }
635 }
xed_encode_nonterminal_MEMDISPv_BIND(xed_encoder_request_t * xes)636 xed_uint32_t xed_encode_nonterminal_MEMDISPv_BIND(xed_encoder_request_t* xes)
637 {
638 typedef struct {xed_uint32_t key; xed_uint32_t emit;} lu_entry_t;
639 static const lu_entry_t lu_table[3] = {
640 /*h(448)=0 DISP_WIDTH=64 EASZ=3 DISP[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]=*  ->	emit disp=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa emit_type=letters nbits=64*/ {448, 1},
641 /*h(288)=1 DISP_WIDTH=32 EASZ=2 DISP[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]=*  ->	emit disp=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa emit_type=letters nbits=32*/ {288, 2},
642 /*h(144)=2 DISP_WIDTH=16 EASZ=1 DISP[aaaaaaaaaaaaaaaa]=*  ->	emit disp=aaaaaaaaaaaaaaaa emit_type=letters nbits=16*/ {144, 3}
643 };
644 xed_uint64_t key = 0;
645 xed_uint64_t hidx = 0;
646 key = xed_enc_lu_DISP_WIDTH_EASZ(xes);
647 hidx = ((4*key % 7) % 3);
648 if(lu_table[hidx].key == key) {
649     xed_encoder_request_iforms(xes)->x_MEMDISPv=lu_table[hidx].emit;
650     return 1;
651 }
652 else{
653     return 0;
654 }
655 }
xed_encode_nonterminal_MEMDISP8_BIND(xed_encoder_request_t * xes)656 xed_uint32_t xed_encode_nonterminal_MEMDISP8_BIND(xed_encoder_request_t* xes)
657 {
658 typedef struct { xed_uint32_t emit;} lu_entry_t;
659 static const lu_entry_t lu_table[1] = {
660 /*h(8)=0 DISP_WIDTH=8 DISP[aaaaaaaa]=*  ->	emit disp=aaaaaaaa emit_type=letters nbits=8*/ {1}
661 };
662 xed_uint64_t key = 0;
663 xed_uint64_t hidx = 0;
664 key = xed_enc_lu_DISP_WIDTH(xes);
665 hidx = key - 8;
666 if(hidx == 0) {
667     xed_encoder_request_iforms(xes)->x_MEMDISP8=lu_table[hidx].emit;
668     return 1;
669 }
670 else{
671     return 0;
672 }
673 }
xed_encode_nonterminal_UIMM8_1_BIND(xed_encoder_request_t * xes)674 xed_uint32_t xed_encode_nonterminal_UIMM8_1_BIND(xed_encoder_request_t* xes)
675 {
676 typedef struct { xed_uint32_t emit;} lu_entry_t;
677 static const lu_entry_t lu_table[1] = {
678 /*h(0)=0 DUMMY=0 UIMM1[iiiiiiii]=*  ->	emit uimm1=iiiiiiii emit_type=letters nbits=8*/ {1}
679 };
680 xed_uint64_t key = 0;
681 xed_uint64_t hidx = 0;
682 key = xed_enc_lu_DUMMY(xes);
683 hidx = key - 0;
684 if(hidx == 0) {
685     xed_encoder_request_iforms(xes)->x_UIMM8_1=lu_table[hidx].emit;
686     return 1;
687 }
688 else{
689     return 0;
690 }
691 }
xed_encode_nonterminal_MEMDISP_BIND(xed_encoder_request_t * xes)692 xed_uint32_t xed_encode_nonterminal_MEMDISP_BIND(xed_encoder_request_t* xes)
693 {
694 typedef struct {xed_uint32_t key; xed_int8_t need_memdisp ;xed_uint32_t emit;} lu_entry_t;
695 static const lu_entry_t lu_table[4] = {
696 /*h(0)=0 DISP_WIDTH=0  ->	FB NEED_MEMDISP=0 value=0x0*/ {0, 0,0},
697 /*h(16)=1 DISP_WIDTH=16 DISP[aaaaaaaaaaaaaaaa]=*  ->	FB NEED_MEMDISP=16 value=0x10 	emit disp=aaaaaaaaaaaaaaaa emit_type=letters nbits=16*/ {16, 16,2},
698 /*h(32)=2 DISP_WIDTH=32 DISP[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]=*  ->	FB NEED_MEMDISP=32 value=0x20 	emit disp=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa emit_type=letters nbits=32*/ {32, 32,3},
699 /*h(8)=3 DISP_WIDTH=8 DISP[aaaaaaaa]=*  ->	FB NEED_MEMDISP=8 value=0x8 	emit disp=aaaaaaaa emit_type=letters nbits=8*/ {8, 8,4}
700 };
701 xed_uint64_t key = 0;
702 xed_uint64_t hidx = 0;
703 key = xed_enc_lu_DISP_WIDTH(xes);
704 hidx = ((6*key % 5) % 4);
705 if(lu_table[hidx].key == key) {
706     xed3_operand_set_need_memdisp(xes,lu_table[hidx].need_memdisp);
707     xed_encoder_request_iforms(xes)->x_MEMDISP=lu_table[hidx].emit;
708     return 1;
709 }
710 else{
711     return 0;
712 }
713 }
xed_encode_nonterminal_BRDISP32_BIND(xed_encoder_request_t * xes)714 xed_uint32_t xed_encode_nonterminal_BRDISP32_BIND(xed_encoder_request_t* xes)
715 {
716 typedef struct { xed_uint32_t emit;} lu_entry_t;
717 static const lu_entry_t lu_table[1] = {
718 /*h(32)=0 BRDISP_WIDTH=32 DISP[dddddddddddddddddddddddddddddddd]=*  ->	emit disp=dddddddddddddddddddddddddddddddd emit_type=letters nbits=32*/ {1}
719 };
720 xed_uint64_t key = 0;
721 xed_uint64_t hidx = 0;
722 key = xed_enc_lu_BRDISP_WIDTH(xes);
723 hidx = key - 32;
724 if(hidx == 0) {
725     xed_encoder_request_iforms(xes)->x_BRDISP32=lu_table[hidx].emit;
726     return 1;
727 }
728 else{
729     return 0;
730 }
731 }
xed_encode_nonterminal_MEMDISP32_BIND(xed_encoder_request_t * xes)732 xed_uint32_t xed_encode_nonterminal_MEMDISP32_BIND(xed_encoder_request_t* xes)
733 {
734 typedef struct { xed_uint32_t emit;} lu_entry_t;
735 static const lu_entry_t lu_table[1] = {
736 /*h(32)=0 DISP_WIDTH=32 DISP[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]=*  ->	emit disp=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa emit_type=letters nbits=32*/ {1}
737 };
738 xed_uint64_t key = 0;
739 xed_uint64_t hidx = 0;
740 key = xed_enc_lu_DISP_WIDTH(xes);
741 hidx = key - 32;
742 if(hidx == 0) {
743     xed_encoder_request_iforms(xes)->x_MEMDISP32=lu_table[hidx].emit;
744     return 1;
745 }
746 else{
747     return 0;
748 }
749 }
xed_encode_nonterminal_MEMDISP16_BIND(xed_encoder_request_t * xes)750 xed_uint32_t xed_encode_nonterminal_MEMDISP16_BIND(xed_encoder_request_t* xes)
751 {
752 typedef struct { xed_uint32_t emit;} lu_entry_t;
753 static const lu_entry_t lu_table[1] = {
754 /*h(16)=0 DISP_WIDTH=16 DISP[aaaaaaaaaaaaaaaa]=*  ->	emit disp=aaaaaaaaaaaaaaaa emit_type=letters nbits=16*/ {1}
755 };
756 xed_uint64_t key = 0;
757 xed_uint64_t hidx = 0;
758 key = xed_enc_lu_DISP_WIDTH(xes);
759 hidx = key - 16;
760 if(hidx == 0) {
761     xed_encoder_request_iforms(xes)->x_MEMDISP16=lu_table[hidx].emit;
762     return 1;
763 }
764 else{
765     return 0;
766 }
767 }
xed_encode_nonterminal_UIMM32_BIND(xed_encoder_request_t * xes)768 xed_uint32_t xed_encode_nonterminal_UIMM32_BIND(xed_encoder_request_t* xes)
769 {
770 typedef struct { xed_uint32_t emit;} lu_entry_t;
771 static const lu_entry_t lu_table[1] = {
772 /*h(32)=0 IMM_WIDTH=32 UIMM0[iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii]=*  ->	emit uimm0=iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii emit_type=letters nbits=32*/ {1}
773 };
774 xed_uint64_t key = 0;
775 xed_uint64_t hidx = 0;
776 key = xed_enc_lu_IMM_WIDTH(xes);
777 hidx = key - 32;
778 if(hidx == 0) {
779     xed_encoder_request_iforms(xes)->x_UIMM32=lu_table[hidx].emit;
780     return 1;
781 }
782 else{
783     return 0;
784 }
785 }
xed_encode_nonterminal_ONE_BIND(xed_encoder_request_t * xes)786 xed_uint32_t xed_encode_nonterminal_ONE_BIND(xed_encoder_request_t* xes)
787 {
788 typedef struct {xed_uint32_t key; } lu_entry_t;
789 static const lu_entry_t lu_table[3] = {
790 /*h(648)=0 IMM_WIDTH=8 UIMM0=1 MODE=1  ->	nothing*/ {648, },
791 /*h(520)=1 IMM_WIDTH=8 UIMM0=1 MODE=0  ->	nothing*/ {520, },
792 /*h(776)=2 IMM_WIDTH=8 UIMM0=1 MODE=2  ->	nothing*/ {776, }
793 };
794 xed_uint64_t key = 0;
795 xed_uint64_t hidx = 0;
796 key = xed_enc_lu_IMM_WIDTH_MODE_UIMM0_1(xes);
797 hidx = (4*key % 3);
798 if(lu_table[hidx].key == key) {
799     return 1;
800 }
801 else{
802     return 0;
803 }
804 }
xed_encode_nonterminal_SIMMz_BIND(xed_encoder_request_t * xes)805 xed_uint32_t xed_encode_nonterminal_SIMMz_BIND(xed_encoder_request_t* xes)
806 {
807 typedef struct {xed_uint32_t key; xed_int8_t imm0signed ;xed_uint32_t emit;} lu_entry_t;
808 static const lu_entry_t lu_table[3] = {
809 /*h(65)=0 IMM_WIDTH=16 EOSZ=1 UIMM0[iiiiiiiiiiiiiiii]=*  ->	emit uimm0=iiiiiiiiiiiiiiii emit_type=letters nbits=16 	FB IMM0SIGNED=1 value=0x1*/ {65, 1,1},
810 /*h(130)=1 IMM_WIDTH=32 EOSZ=2 UIMM0[iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii]=*  ->	emit uimm0=iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii emit_type=letters nbits=32 	FB IMM0SIGNED=1 value=0x1*/ {130, 1,2},
811 /*h(131)=2 IMM_WIDTH=32 EOSZ=3 UIMM0[iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii]=*  ->	emit uimm0=iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii emit_type=letters nbits=32 	FB IMM0SIGNED=1 value=0x1*/ {131, 1,3}
812 };
813 xed_union64_t t, u;
814 xed_uint64_t key = 0;
815 xed_uint64_t hidx = 0;
816 key = xed_enc_lu_EOSZ_IMM_WIDTH(xes);
817 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
818 if(lu_table[hidx].key == key) {
819     xed3_operand_set_imm0signed(xes,lu_table[hidx].imm0signed);
820     xed_encoder_request_iforms(xes)->x_SIMMz=lu_table[hidx].emit;
821     return 1;
822 }
823 else{
824     return 0;
825 }
826 }
xed_encode_nonterminal_ASZ_NONTERM_BIND(xed_encoder_request_t * xes)827 xed_uint32_t xed_encode_nonterminal_ASZ_NONTERM_BIND(xed_encoder_request_t* xes)
828 {
829 typedef struct {xed_uint32_t key; xed_int8_t asz;} lu_entry_t;
830 static const lu_entry_t lu_table[9] = {
831 /*h(5)=0 EASZ=1 MODE=1  ->	FB ASZ=1 value=0x1*/ {5, 1},
832 /*h(10)=1 EASZ=2 MODE=2  ->	FB ASZ=1 value=0x1*/ {10, 1},
833 /*h(2)=2 EASZ=2 MODE=0  ->	FB ASZ=1 value=0x1*/ {2, 1},
834 /*empty slot1 */ {0,0},
835 /*empty slot1 */ {0,0},
836 /*h(1)=5 EASZ=1 MODE=0  ->	FB ASZ=0 value=0x0*/ {1, 0},
837 /*h(6)=6 EASZ=2 MODE=1  ->	FB ASZ=0 value=0x0*/ {6, 0},
838 /*h(11)=7 EASZ=3 MODE=2  ->	FB ASZ=0 value=0x0*/ {11, 0},
839 /*empty slot1 */ {0,0}
840 };
841 xed_union64_t t, u;
842 xed_uint64_t key = 0;
843 xed_uint64_t hidx = 0;
844 key = xed_enc_lu_EASZ_MODE(xes);
845 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 9ULL, u.s.hi32);
846 if(lu_table[hidx].key == key) {
847     xed3_operand_set_asz(xes,lu_table[hidx].asz);
848     return 1;
849 }
850 else{
851     return 0;
852 }
853 }
xed_encode_nonterminal_UIMMv_BIND(xed_encoder_request_t * xes)854 xed_uint32_t xed_encode_nonterminal_UIMMv_BIND(xed_encoder_request_t* xes)
855 {
856 typedef struct {xed_uint32_t key; xed_uint32_t emit;} lu_entry_t;
857 static const lu_entry_t lu_table[6] = {
858 /*h(259)=0 IMM_WIDTH=64 EOSZ=3 UIMM0[iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii]=*  ->	emit uimm0=iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii emit_type=letters nbits=64*/ {259, 1},
859 /*h(65)=1 IMM_WIDTH=16 EOSZ=1 UIMM0[iiiiiiiiiiiiiiii]=*  ->	emit uimm0=iiiiiiiiiiiiiiii emit_type=letters nbits=16*/ {65, 2},
860 /*h(130)=2 IMM_WIDTH=32 EOSZ=2 UIMM0[iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii]=*  ->	emit uimm0=iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii emit_type=letters nbits=32*/ {130, 3},
861 /*empty slot1 */ {0,0},
862 /*empty slot1 */ {0,0},
863 /*empty slot1 */ {0,0}
864 };
865 xed_union64_t t, u;
866 xed_uint64_t key = 0;
867 xed_uint64_t hidx = 0;
868 key = xed_enc_lu_EOSZ_IMM_WIDTH(xes);
869 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
870 if(lu_table[hidx].key == key) {
871     xed_encoder_request_iforms(xes)->x_UIMMv=lu_table[hidx].emit;
872     return 1;
873 }
874 else{
875     return 0;
876 }
877 }
xed_encode_nonterminal_UIMM16_BIND(xed_encoder_request_t * xes)878 xed_uint32_t xed_encode_nonterminal_UIMM16_BIND(xed_encoder_request_t* xes)
879 {
880 typedef struct { xed_uint32_t emit;} lu_entry_t;
881 static const lu_entry_t lu_table[1] = {
882 /*h(16)=0 IMM_WIDTH=16 UIMM0[iiiiiiiiiiiiiiii]=*  ->	emit uimm0=iiiiiiiiiiiiiiii emit_type=letters nbits=16*/ {1}
883 };
884 xed_uint64_t key = 0;
885 xed_uint64_t hidx = 0;
886 key = xed_enc_lu_IMM_WIDTH(xes);
887 hidx = key - 16;
888 if(hidx == 0) {
889     xed_encoder_request_iforms(xes)->x_UIMM16=lu_table[hidx].emit;
890     return 1;
891 }
892 else{
893     return 0;
894 }
895 }
xed_encode_nonterminal_BRDISPz_BIND(xed_encoder_request_t * xes)896 xed_uint32_t xed_encode_nonterminal_BRDISPz_BIND(xed_encoder_request_t* xes)
897 {
898 typedef struct {xed_uint32_t key; xed_uint32_t emit;} lu_entry_t;
899 static const lu_entry_t lu_table[3] = {
900 /*h(224)=0 BRDISP_WIDTH=32 EOSZ=3 DISP[dddddddddddddddddddddddddddddddd]=*  ->	emit disp=dddddddddddddddddddddddddddddddd emit_type=letters nbits=32*/ {224, 1},
901 /*h(160)=1 BRDISP_WIDTH=32 EOSZ=2 DISP[dddddddddddddddddddddddddddddddd]=*  ->	emit disp=dddddddddddddddddddddddddddddddd emit_type=letters nbits=32*/ {160, 2},
902 /*h(80)=2 BRDISP_WIDTH=16 EOSZ=1 DISP[dddddddddddddddd]=*  ->	emit disp=dddddddddddddddd emit_type=letters nbits=16*/ {80, 3}
903 };
904 xed_uint64_t key = 0;
905 xed_uint64_t hidx = 0;
906 key = xed_enc_lu_BRDISP_WIDTH_EOSZ(xes);
907 hidx = ((3*key % 7) % 3);
908 if(lu_table[hidx].key == key) {
909     xed_encoder_request_iforms(xes)->x_BRDISPz=lu_table[hidx].emit;
910     return 1;
911 }
912 else{
913     return 0;
914 }
915 }
xed_encode_nonterminal_UIMM8_BIND(xed_encoder_request_t * xes)916 xed_uint32_t xed_encode_nonterminal_UIMM8_BIND(xed_encoder_request_t* xes)
917 {
918 typedef struct { xed_uint32_t emit;} lu_entry_t;
919 static const lu_entry_t lu_table[1] = {
920 /*h(8)=0 IMM_WIDTH=8 UIMM0[iiiiiiii]=*  ->	emit uimm0=iiiiiiii emit_type=letters nbits=8*/ {1}
921 };
922 xed_uint64_t key = 0;
923 xed_uint64_t hidx = 0;
924 key = xed_enc_lu_IMM_WIDTH(xes);
925 hidx = key - 8;
926 if(hidx == 0) {
927     xed_encoder_request_iforms(xes)->x_UIMM8=lu_table[hidx].emit;
928     return 1;
929 }
930 else{
931     return 0;
932 }
933 }
xed_encode_nonterminal_BRDISP8_BIND(xed_encoder_request_t * xes)934 xed_uint32_t xed_encode_nonterminal_BRDISP8_BIND(xed_encoder_request_t* xes)
935 {
936 typedef struct { xed_uint32_t emit;} lu_entry_t;
937 static const lu_entry_t lu_table[1] = {
938 /*h(8)=0 BRDISP_WIDTH=8 DISP[dddddddd]=*  ->	emit disp=dddddddd emit_type=letters nbits=8*/ {1}
939 };
940 xed_uint64_t key = 0;
941 xed_uint64_t hidx = 0;
942 key = xed_enc_lu_BRDISP_WIDTH(xes);
943 hidx = key - 8;
944 if(hidx == 0) {
945     xed_encoder_request_iforms(xes)->x_BRDISP8=lu_table[hidx].emit;
946     return 1;
947 }
948 else{
949     return 0;
950 }
951 }
xed_encode_ntluf_MASKNOT0(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)952 xed_uint32_t xed_encode_ntluf_MASKNOT0(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
953 {
954 typedef struct {xed_uint32_t key; xed_int8_t mask;} lu_entry_t;
955 static const lu_entry_t lu_table[10] = {
956 /*h(102)=0 OUTREG=XED_REG_ERROR  ->	FB MASK=0 value=0x0*/ {102, 0},
957 /*h(107)=1 OUTREG=XED_REG_K1  ->	FB MASK=1 value=0x1*/ {107, 1},
958 /*h(112)=2 OUTREG=XED_REG_K6  ->	FB MASK=6 value=0x6*/ {112, 6},
959 /*h(109)=3 OUTREG=XED_REG_K3  ->	FB MASK=3 value=0x3*/ {109, 3},
960 /*empty slot1 */ {0,0},
961 /*empty slot1 */ {0,0},
962 /*h(111)=6 OUTREG=XED_REG_K5  ->	FB MASK=5 value=0x5*/ {111, 5},
963 /*h(108)=7 OUTREG=XED_REG_K2  ->	FB MASK=2 value=0x2*/ {108, 2},
964 /*h(113)=8 OUTREG=XED_REG_K7  ->	FB MASK=7 value=0x7*/ {113, 7},
965 /*h(110)=9 OUTREG=XED_REG_K4  ->	FB MASK=4 value=0x4*/ {110, 4}
966 };
967 xed_union64_t t, u;
968 xed_uint64_t key = 0;
969 xed_uint64_t hidx = 0;
970 xed3_operand_set_outreg(xes,arg_reg);
971 key = xed_enc_lu_OUTREG(xes);
972 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 10ULL, u.s.hi32);
973 if(lu_table[hidx].key == key) {
974     xed3_operand_set_mask(xes,lu_table[hidx].mask);
975     return 1;
976 }
977 else{
978     return 0;
979 }
980 }
xed_encode_ntluf_XMM_R3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)981 xed_uint32_t xed_encode_ntluf_XMM_R3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
982 {
983 typedef struct { xed_int8_t reg ;xed_int8_t rexr ;xed_int8_t rexrr;} lu_entry_t;
984 static const lu_entry_t lu_table[32] = {
985 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0,0},
986 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0,0},
987 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0,0},
988 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0,0},
989 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0,0},
990 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0,0},
991 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0,0},
992 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0,0},
993 /*h(186)=8 OUTREG=XED_REG_XMM8  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1,0},
994 /*h(187)=9 OUTREG=XED_REG_XMM9  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1,0},
995 /*h(188)=10 OUTREG=XED_REG_XMM10  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1,0},
996 /*h(189)=11 OUTREG=XED_REG_XMM11  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1,0},
997 /*h(190)=12 OUTREG=XED_REG_XMM12  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1,0},
998 /*h(191)=13 OUTREG=XED_REG_XMM13  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1,0},
999 /*h(192)=14 OUTREG=XED_REG_XMM14  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1,0},
1000 /*h(193)=15 OUTREG=XED_REG_XMM15  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1,0},
1001 /*h(194)=16 OUTREG=XED_REG_XMM16  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0,1},
1002 /*h(195)=17 OUTREG=XED_REG_XMM17  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0,1},
1003 /*h(196)=18 OUTREG=XED_REG_XMM18  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0,1},
1004 /*h(197)=19 OUTREG=XED_REG_XMM19  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0,1},
1005 /*h(198)=20 OUTREG=XED_REG_XMM20  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0,1},
1006 /*h(199)=21 OUTREG=XED_REG_XMM21  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0,1},
1007 /*h(200)=22 OUTREG=XED_REG_XMM22  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0,1},
1008 /*h(201)=23 OUTREG=XED_REG_XMM23  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0,1},
1009 /*h(202)=24 OUTREG=XED_REG_XMM24  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1,1},
1010 /*h(203)=25 OUTREG=XED_REG_XMM25  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1,1},
1011 /*h(204)=26 OUTREG=XED_REG_XMM26  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1,1},
1012 /*h(205)=27 OUTREG=XED_REG_XMM27  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1,1},
1013 /*h(206)=28 OUTREG=XED_REG_XMM28  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1,1},
1014 /*h(207)=29 OUTREG=XED_REG_XMM29  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1,1},
1015 /*h(208)=30 OUTREG=XED_REG_XMM30  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1,1},
1016 /*h(209)=31 OUTREG=XED_REG_XMM31  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1,1}
1017 };
1018 xed_uint64_t key = 0;
1019 xed_uint64_t hidx = 0;
1020 xed3_operand_set_outreg(xes,arg_reg);
1021 key = xed_enc_lu_OUTREG(xes);
1022 hidx = key - 178;
1023 if(hidx <= 31) {
1024     xed3_operand_set_reg(xes,lu_table[hidx].reg);
1025     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
1026     xed3_operand_set_rexrr(xes,lu_table[hidx].rexrr);
1027     return 1;
1028 }
1029 else{
1030     return 0;
1031 }
1032 }
xed_encode_ntluf_XMM_B_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1033 xed_uint32_t xed_encode_ntluf_XMM_B_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1034 {
1035 typedef struct { xed_int8_t rm;} lu_entry_t;
1036 static const lu_entry_t lu_table[8] = {
1037 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB RM=0 value=0x0*/ {0},
1038 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB RM=1 value=0x1*/ {1},
1039 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB RM=2 value=0x2*/ {2},
1040 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB RM=3 value=0x3*/ {3},
1041 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB RM=4 value=0x4*/ {4},
1042 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB RM=5 value=0x5*/ {5},
1043 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB RM=6 value=0x6*/ {6},
1044 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB RM=7 value=0x7*/ {7}
1045 };
1046 xed_uint64_t key = 0;
1047 xed_uint64_t hidx = 0;
1048 xed3_operand_set_outreg(xes,arg_reg);
1049 key = xed_enc_lu_OUTREG(xes);
1050 hidx = key - 178;
1051 if(hidx <= 7) {
1052     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1053     return 1;
1054 }
1055 else{
1056     return 0;
1057 }
1058 }
xed_encode_ntluf_FINAL_DSEG_MODE64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1059 xed_uint32_t xed_encode_ntluf_FINAL_DSEG_MODE64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1060 {
1061 typedef struct {xed_uint32_t key; xed_int8_t seg_ovd ;xed_int8_t using_default_segment0;} lu_entry_t;
1062 static const lu_entry_t lu_table[4] = {
1063 /*h(0)=0 OUTREG=XED_REG_INVALID  ->	FB SEG_OVD=0 value=0x0 	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {0, 0,1},
1064 /*h(151)=1 OUTREG=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {151, 4,0},
1065 /*empty slot1 */ {0,0,0},
1066 /*h(152)=3 OUTREG=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {152, 5,0}
1067 };
1068 xed_union64_t t;
1069 xed_uint64_t key = 0;
1070 xed_uint64_t hidx = 0;
1071 xed3_operand_set_outreg(xes,arg_reg);
1072 key = xed_enc_lu_OUTREG(xes);
1073 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
1074 if(lu_table[hidx].key == key) {
1075     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
1076     xed3_operand_set_using_default_segment0(xes,lu_table[hidx].using_default_segment0);
1077     return 1;
1078 }
1079 else{
1080     return 0;
1081 }
1082 }
xed_encode_ntluf_OeAX(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1083 xed_uint32_t xed_encode_ntluf_OeAX(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1084 {
1085 typedef struct {xed_uint32_t key; } lu_entry_t;
1086 static const lu_entry_t lu_table[4] = {
1087 /*empty slot1 */ {0},
1088 /*h(203)=1 OUTREG=XED_REG_EAX EOSZ=3  ->	nothing*/ {203, },
1089 /*h(137)=2 OUTREG=XED_REG_AX EOSZ=1  ->	nothing*/ {137, },
1090 /*h(202)=3 OUTREG=XED_REG_EAX EOSZ=2  ->	nothing*/ {202, }
1091 };
1092 xed_union64_t t;
1093 xed_uint64_t key = 0;
1094 xed_uint64_t hidx = 0;
1095 xed3_operand_set_outreg(xes,arg_reg);
1096 key = xed_enc_lu_EOSZ_OUTREG(xes);
1097 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
1098 if(lu_table[hidx].key == key) {
1099     return 1;
1100 }
1101 else{
1102     return 0;
1103 }
1104 }
xed_encode_ntluf_YMM_B3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1105 xed_uint32_t xed_encode_ntluf_YMM_B3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1106 {
1107 typedef struct { xed_int8_t rexb ;xed_int8_t rexx ;xed_int8_t rm;} lu_entry_t;
1108 static const lu_entry_t lu_table[32] = {
1109 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0,0},
1110 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,0,1},
1111 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,0,2},
1112 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,0,3},
1113 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,0,4},
1114 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,0,5},
1115 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,0,6},
1116 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,0,7},
1117 /*h(218)=8 OUTREG=XED_REG_YMM8  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0,0},
1118 /*h(219)=9 OUTREG=XED_REG_YMM9  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,0,1},
1119 /*h(220)=10 OUTREG=XED_REG_YMM10  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,0,2},
1120 /*h(221)=11 OUTREG=XED_REG_YMM11  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,0,3},
1121 /*h(222)=12 OUTREG=XED_REG_YMM12  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,0,4},
1122 /*h(223)=13 OUTREG=XED_REG_YMM13  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,0,5},
1123 /*h(224)=14 OUTREG=XED_REG_YMM14  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,0,6},
1124 /*h(225)=15 OUTREG=XED_REG_YMM15  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,0,7},
1125 /*h(226)=16 OUTREG=XED_REG_YMM16  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,1,0},
1126 /*h(227)=17 OUTREG=XED_REG_YMM17  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1,1},
1127 /*h(228)=18 OUTREG=XED_REG_YMM18  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,1,2},
1128 /*h(229)=19 OUTREG=XED_REG_YMM19  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,1,3},
1129 /*h(230)=20 OUTREG=XED_REG_YMM20  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,1,4},
1130 /*h(231)=21 OUTREG=XED_REG_YMM21  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,1,5},
1131 /*h(232)=22 OUTREG=XED_REG_YMM22  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,1,6},
1132 /*h(233)=23 OUTREG=XED_REG_YMM23  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,1,7},
1133 /*h(234)=24 OUTREG=XED_REG_YMM24  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,1,0},
1134 /*h(235)=25 OUTREG=XED_REG_YMM25  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1,1},
1135 /*h(236)=26 OUTREG=XED_REG_YMM26  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,1,2},
1136 /*h(237)=27 OUTREG=XED_REG_YMM27  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,1,3},
1137 /*h(238)=28 OUTREG=XED_REG_YMM28  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,1,4},
1138 /*h(239)=29 OUTREG=XED_REG_YMM29  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,1,5},
1139 /*h(240)=30 OUTREG=XED_REG_YMM30  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,1,6},
1140 /*h(241)=31 OUTREG=XED_REG_YMM31  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,1,7}
1141 };
1142 xed_uint64_t key = 0;
1143 xed_uint64_t hidx = 0;
1144 xed3_operand_set_outreg(xes,arg_reg);
1145 key = xed_enc_lu_OUTREG(xes);
1146 hidx = key - 210;
1147 if(hidx <= 31) {
1148     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1149     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
1150     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1151     return 1;
1152 }
1153 else{
1154     return 0;
1155 }
1156 }
xed_encode_ntluf_VGPR32_N_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1157 xed_uint32_t xed_encode_ntluf_VGPR32_N_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1158 {
1159 typedef struct { xed_int8_t vexdest210;} lu_entry_t;
1160 static const lu_entry_t lu_table[8] = {
1161 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB VEXDEST210=7 value=0x7*/ {7},
1162 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB VEXDEST210=6 value=0x6*/ {6},
1163 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB VEXDEST210=5 value=0x5*/ {5},
1164 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB VEXDEST210=4 value=0x4*/ {4},
1165 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB VEXDEST210=3 value=0x3*/ {3},
1166 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB VEXDEST210=2 value=0x2*/ {2},
1167 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB VEXDEST210=1 value=0x1*/ {1},
1168 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB VEXDEST210=0 value=0x0*/ {0}
1169 };
1170 xed_uint64_t key = 0;
1171 xed_uint64_t hidx = 0;
1172 xed3_operand_set_outreg(xes,arg_reg);
1173 key = xed_enc_lu_OUTREG(xes);
1174 hidx = key - 50;
1175 if(hidx <= 7) {
1176     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
1177     return 1;
1178 }
1179 else{
1180     return 0;
1181 }
1182 }
xed_encode_ntluf_ZMM_B3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1183 xed_uint32_t xed_encode_ntluf_ZMM_B3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1184 {
1185 typedef struct { xed_int8_t rm;} lu_entry_t;
1186 static const lu_entry_t lu_table[8] = {
1187 /*h(242)=0 OUTREG=XED_REG_ZMM0  ->	FB RM=0 value=0x0*/ {0},
1188 /*h(243)=1 OUTREG=XED_REG_ZMM1  ->	FB RM=1 value=0x1*/ {1},
1189 /*h(244)=2 OUTREG=XED_REG_ZMM2  ->	FB RM=2 value=0x2*/ {2},
1190 /*h(245)=3 OUTREG=XED_REG_ZMM3  ->	FB RM=3 value=0x3*/ {3},
1191 /*h(246)=4 OUTREG=XED_REG_ZMM4  ->	FB RM=4 value=0x4*/ {4},
1192 /*h(247)=5 OUTREG=XED_REG_ZMM5  ->	FB RM=5 value=0x5*/ {5},
1193 /*h(248)=6 OUTREG=XED_REG_ZMM6  ->	FB RM=6 value=0x6*/ {6},
1194 /*h(249)=7 OUTREG=XED_REG_ZMM7  ->	FB RM=7 value=0x7*/ {7}
1195 };
1196 xed_uint64_t key = 0;
1197 xed_uint64_t hidx = 0;
1198 xed3_operand_set_outreg(xes,arg_reg);
1199 key = xed_enc_lu_OUTREG(xes);
1200 hidx = key - 242;
1201 if(hidx <= 7) {
1202     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1203     return 1;
1204 }
1205 else{
1206     return 0;
1207 }
1208 }
xed_encode_ntluf_FINAL_SSEG0(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1209 xed_uint32_t xed_encode_ntluf_FINAL_SSEG0(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1210 {
1211 typedef struct {xed_uint32_t key; xed_int8_t using_default_segment0;} lu_entry_t;
1212 static const lu_entry_t lu_table[3] = {
1213 /*h(2)=0 OUTREG=XED_REG_INVALID MODE=2  ->	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {2, 1},
1214 /*h(601)=1 OUTREG=XED_REG_SS MODE=1  ->	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {601, 1},
1215 /*h(600)=2 OUTREG=XED_REG_SS MODE=0  ->	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {600, 1}
1216 };
1217 xed_union64_t t, u;
1218 xed_uint64_t key = 0;
1219 xed_uint64_t hidx = 0;
1220 xed3_operand_set_outreg(xes,arg_reg);
1221 key = xed_enc_lu_MODE_OUTREG(xes);
1222 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
1223 if(lu_table[hidx].key == key) {
1224     xed3_operand_set_using_default_segment0(xes,lu_table[hidx].using_default_segment0);
1225     return 1;
1226 }
1227 else{
1228     return 0;
1229 }
1230 }
xed_encode_ntluf_FINAL_SSEG1(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1231 xed_uint32_t xed_encode_ntluf_FINAL_SSEG1(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1232 {
1233 typedef struct {xed_uint32_t key; xed_int8_t using_default_segment1;} lu_entry_t;
1234 static const lu_entry_t lu_table[3] = {
1235 /*h(2)=0 OUTREG=XED_REG_INVALID MODE=2  ->	FB USING_DEFAULT_SEGMENT1=1 value=0x1*/ {2, 1},
1236 /*h(601)=1 OUTREG=XED_REG_SS MODE=1  ->	FB USING_DEFAULT_SEGMENT1=1 value=0x1*/ {601, 1},
1237 /*h(600)=2 OUTREG=XED_REG_SS MODE=0  ->	FB USING_DEFAULT_SEGMENT1=1 value=0x1*/ {600, 1}
1238 };
1239 xed_union64_t t, u;
1240 xed_uint64_t key = 0;
1241 xed_uint64_t hidx = 0;
1242 xed3_operand_set_outreg(xes,arg_reg);
1243 key = xed_enc_lu_MODE_OUTREG(xes);
1244 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
1245 if(lu_table[hidx].key == key) {
1246     xed3_operand_set_using_default_segment1(xes,lu_table[hidx].using_default_segment1);
1247     return 1;
1248 }
1249 else{
1250     return 0;
1251 }
1252 }
xed_encode_ntluf_VGPRy_N(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1253 xed_uint32_t xed_encode_ntluf_VGPRy_N(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1254 {
1255 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1256 static const lu_entry_t lu_table[3] = {
1257 /*h(1)=0 EOSZ=1  ->	ntluf*/ {xed_encode_ntluf_VGPR32_N},
1258 /*h(2)=1 EOSZ=2  ->	ntluf*/ {xed_encode_ntluf_VGPR32_N},
1259 /*h(3)=2 EOSZ=3  ->	ntluf*/ {xed_encode_ntluf_VGPR64_N}
1260 };
1261 xed_uint64_t key = 0;
1262 xed_uint64_t hidx = 0;
1263 xed_uint64_t res = 1;
1264 xed3_operand_set_outreg(xes,arg_reg);
1265 key = xed_enc_lu_EOSZ(xes);
1266 hidx = key - 1;
1267 if(hidx <= 2) {
1268     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1269     return res;
1270     return 1;
1271 }
1272 else{
1273     return 0;
1274 }
1275 }
xed_encode_ntluf_GPR8_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1276 xed_uint32_t xed_encode_ntluf_GPR8_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1277 {
1278 typedef struct { xed_int8_t needrex ;xed_int8_t norex ;xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
1279 static const lu_entry_t lu_table[20] = {
1280 /*h(82)=0 OUTREG=XED_REG_AL  ->	FB REG=0 value=0x0*/ {-1,-1,0,-1},
1281 /*h(83)=1 OUTREG=XED_REG_CL  ->	FB REG=1 value=0x1*/ {-1,-1,1,-1},
1282 /*h(84)=2 OUTREG=XED_REG_DL  ->	FB REG=2 value=0x2*/ {-1,-1,2,-1},
1283 /*h(85)=3 OUTREG=XED_REG_BL  ->	FB REG=3 value=0x3*/ {-1,-1,3,-1},
1284 /*h(86)=4 OUTREG=XED_REG_SPL  ->	FB REG=4 value=0x4 	FB NEEDREX=1 value=0x1*/ {1,-1,4,-1},
1285 /*h(87)=5 OUTREG=XED_REG_BPL  ->	FB REG=5 value=0x5 	FB NEEDREX=1 value=0x1*/ {1,-1,5,-1},
1286 /*h(88)=6 OUTREG=XED_REG_SIL  ->	FB REG=6 value=0x6 	FB NEEDREX=1 value=0x1*/ {1,-1,6,-1},
1287 /*h(89)=7 OUTREG=XED_REG_DIL  ->	FB REG=7 value=0x7 	FB NEEDREX=1 value=0x1*/ {1,-1,7,-1},
1288 /*h(90)=8 OUTREG=XED_REG_R8B  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {-1,-1,0,1},
1289 /*h(91)=9 OUTREG=XED_REG_R9B  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {-1,-1,1,1},
1290 /*h(92)=10 OUTREG=XED_REG_R10B  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {-1,-1,2,1},
1291 /*h(93)=11 OUTREG=XED_REG_R11B  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {-1,-1,3,1},
1292 /*h(94)=12 OUTREG=XED_REG_R12B  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {-1,-1,4,1},
1293 /*h(95)=13 OUTREG=XED_REG_R13B  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {-1,-1,5,1},
1294 /*h(96)=14 OUTREG=XED_REG_R14B  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {-1,-1,6,1},
1295 /*h(97)=15 OUTREG=XED_REG_R15B  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {-1,-1,7,1},
1296 /*h(98)=16 OUTREG=XED_REG_AH  ->	FB REG=4 value=0x4 	FB NOREX=1 value=0x1*/ {-1,1,4,-1},
1297 /*h(99)=17 OUTREG=XED_REG_CH  ->	FB REG=5 value=0x5 	FB NOREX=1 value=0x1*/ {-1,1,5,-1},
1298 /*h(100)=18 OUTREG=XED_REG_DH  ->	FB REG=6 value=0x6 	FB NOREX=1 value=0x1*/ {-1,1,6,-1},
1299 /*h(101)=19 OUTREG=XED_REG_BH  ->	FB REG=7 value=0x7 	FB NOREX=1 value=0x1*/ {-1,1,7,-1}
1300 };
1301 xed_uint64_t key = 0;
1302 xed_uint64_t hidx = 0;
1303 xed3_operand_set_outreg(xes,arg_reg);
1304 key = xed_enc_lu_OUTREG(xes);
1305 hidx = key - 82;
1306 if(hidx <= 19) {
1307     if(lu_table[hidx].needrex >= 0) xed3_operand_set_needrex(xes,lu_table[hidx].needrex);
1308     if(lu_table[hidx].norex >= 0) xed3_operand_set_norex(xes,lu_table[hidx].norex);
1309     xed3_operand_set_reg(xes,lu_table[hidx].reg);
1310     if(lu_table[hidx].rexr >= 0) xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
1311     return 1;
1312 }
1313 else{
1314     return 0;
1315 }
1316 }
xed_encode_ntluf_Ar8(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1317 xed_uint32_t xed_encode_ntluf_Ar8(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1318 {
1319 typedef struct {xed_uint32_t key; } lu_entry_t;
1320 static const lu_entry_t lu_table[4] = {
1321 /*empty slot1 */ {0},
1322 /*h(169)=1 OUTREG=XED_REG_R8W EASZ=1  ->	nothing*/ {169, },
1323 /*h(234)=2 OUTREG=XED_REG_R8D EASZ=2  ->	nothing*/ {234, },
1324 /*h(299)=3 OUTREG=XED_REG_R8 EASZ=3  ->	nothing*/ {299, }
1325 };
1326 xed_union64_t t;
1327 xed_uint64_t key = 0;
1328 xed_uint64_t hidx = 0;
1329 xed3_operand_set_outreg(xes,arg_reg);
1330 key = xed_enc_lu_EASZ_OUTREG(xes);
1331 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
1332 if(lu_table[hidx].key == key) {
1333     return 1;
1334 }
1335 else{
1336     return 0;
1337 }
1338 }
xed_encode_ntluf_Ar9(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1339 xed_uint32_t xed_encode_ntluf_Ar9(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1340 {
1341 typedef struct {xed_uint32_t key; } lu_entry_t;
1342 static const lu_entry_t lu_table[4] = {
1343 /*h(238)=0 OUTREG=XED_REG_R9D EASZ=2  ->	nothing*/ {238, },
1344 /*h(303)=1 OUTREG=XED_REG_R9 EASZ=3  ->	nothing*/ {303, },
1345 /*empty slot1 */ {0},
1346 /*h(173)=3 OUTREG=XED_REG_R9W EASZ=1  ->	nothing*/ {173, }
1347 };
1348 xed_union64_t t;
1349 xed_uint64_t key = 0;
1350 xed_uint64_t hidx = 0;
1351 xed3_operand_set_outreg(xes,arg_reg);
1352 key = xed_enc_lu_EASZ_OUTREG(xes);
1353 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
1354 if(lu_table[hidx].key == key) {
1355     return 1;
1356 }
1357 else{
1358     return 0;
1359 }
1360 }
xed_encode_ntluf_GPR8_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1361 xed_uint32_t xed_encode_ntluf_GPR8_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1362 {
1363 typedef struct { xed_int8_t needrex ;xed_int8_t norex ;xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
1364 static const lu_entry_t lu_table[20] = {
1365 /*h(82)=0 OUTREG=XED_REG_AL  ->	FB RM=0 value=0x0*/ {-1,-1,-1,0},
1366 /*h(83)=1 OUTREG=XED_REG_CL  ->	FB RM=1 value=0x1*/ {-1,-1,-1,1},
1367 /*h(84)=2 OUTREG=XED_REG_DL  ->	FB RM=2 value=0x2*/ {-1,-1,-1,2},
1368 /*h(85)=3 OUTREG=XED_REG_BL  ->	FB RM=3 value=0x3*/ {-1,-1,-1,3},
1369 /*h(86)=4 OUTREG=XED_REG_SPL  ->	FB RM=4 value=0x4 	FB NEEDREX=1 value=0x1*/ {1,-1,-1,4},
1370 /*h(87)=5 OUTREG=XED_REG_BPL  ->	FB RM=5 value=0x5 	FB NEEDREX=1 value=0x1*/ {1,-1,-1,5},
1371 /*h(88)=6 OUTREG=XED_REG_SIL  ->	FB RM=6 value=0x6 	FB NEEDREX=1 value=0x1*/ {1,-1,-1,6},
1372 /*h(89)=7 OUTREG=XED_REG_DIL  ->	FB RM=7 value=0x7 	FB NEEDREX=1 value=0x1*/ {1,-1,-1,7},
1373 /*h(90)=8 OUTREG=XED_REG_R8B  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {-1,-1,1,0},
1374 /*h(91)=9 OUTREG=XED_REG_R9B  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {-1,-1,1,1},
1375 /*h(92)=10 OUTREG=XED_REG_R10B  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {-1,-1,1,2},
1376 /*h(93)=11 OUTREG=XED_REG_R11B  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {-1,-1,1,3},
1377 /*h(94)=12 OUTREG=XED_REG_R12B  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {-1,-1,1,4},
1378 /*h(95)=13 OUTREG=XED_REG_R13B  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {-1,-1,1,5},
1379 /*h(96)=14 OUTREG=XED_REG_R14B  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {-1,-1,1,6},
1380 /*h(97)=15 OUTREG=XED_REG_R15B  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {-1,-1,1,7},
1381 /*h(98)=16 OUTREG=XED_REG_AH  ->	FB RM=4 value=0x4 	FB NOREX=1 value=0x1*/ {-1,1,-1,4},
1382 /*h(99)=17 OUTREG=XED_REG_CH  ->	FB RM=5 value=0x5 	FB NOREX=1 value=0x1*/ {-1,1,-1,5},
1383 /*h(100)=18 OUTREG=XED_REG_DH  ->	FB RM=6 value=0x6 	FB NOREX=1 value=0x1*/ {-1,1,-1,6},
1384 /*h(101)=19 OUTREG=XED_REG_BH  ->	FB RM=7 value=0x7 	FB NOREX=1 value=0x1*/ {-1,1,-1,7}
1385 };
1386 xed_uint64_t key = 0;
1387 xed_uint64_t hidx = 0;
1388 xed3_operand_set_outreg(xes,arg_reg);
1389 key = xed_enc_lu_OUTREG(xes);
1390 hidx = key - 82;
1391 if(hidx <= 19) {
1392     if(lu_table[hidx].needrex >= 0) xed3_operand_set_needrex(xes,lu_table[hidx].needrex);
1393     if(lu_table[hidx].norex >= 0) xed3_operand_set_norex(xes,lu_table[hidx].norex);
1394     if(lu_table[hidx].rexb >= 0) xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1395     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1396     return 1;
1397 }
1398 else{
1399     return 0;
1400 }
1401 }
xed_encode_ntluf_SEGe(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1402 xed_uint32_t xed_encode_ntluf_SEGe(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1403 {
1404 xed_uint64_t key = 0;
1405 xed_uint64_t hidx = 0;
1406 xed3_operand_set_outreg(xes,arg_reg);
1407 key = xed_enc_lu_OUTREG(xes);
1408 hidx = key - 147;
1409 if(hidx <= 5) {
1410     return 1;
1411 }
1412 else{
1413     return 0;
1414 }
1415 }
xed_encode_ntluf_YMM_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1416 xed_uint32_t xed_encode_ntluf_YMM_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1417 {
1418 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1419 static const lu_entry_t lu_table[3] = {
1420 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_YMM_B_32},
1421 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_YMM_B_32},
1422 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_YMM_B_64}
1423 };
1424 xed_uint64_t key = 0;
1425 xed_uint64_t hidx = 0;
1426 xed_uint64_t res = 1;
1427 xed3_operand_set_outreg(xes,arg_reg);
1428 key = xed_enc_lu_MODE(xes);
1429 hidx = key - 0;
1430 if(hidx <= 2) {
1431     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1432     return res;
1433     return 1;
1434 }
1435 else{
1436     return 0;
1437 }
1438 }
xed_encode_ntluf_YMM_N(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1439 xed_uint32_t xed_encode_ntluf_YMM_N(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1440 {
1441 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1442 static const lu_entry_t lu_table[3] = {
1443 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_YMM_N_32},
1444 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_YMM_N_32},
1445 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_YMM_N_64}
1446 };
1447 xed_uint64_t key = 0;
1448 xed_uint64_t hidx = 0;
1449 xed_uint64_t res = 1;
1450 xed3_operand_set_outreg(xes,arg_reg);
1451 key = xed_enc_lu_MODE(xes);
1452 hidx = key - 0;
1453 if(hidx <= 2) {
1454     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1455     return res;
1456     return 1;
1457 }
1458 else{
1459     return 0;
1460 }
1461 }
xed_encode_ntluf_ZMM_N3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1462 xed_uint32_t xed_encode_ntluf_ZMM_N3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1463 {
1464 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1465 static const lu_entry_t lu_table[3] = {
1466 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_ZMM_N3_32},
1467 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_ZMM_N3_32},
1468 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_ZMM_N3_64}
1469 };
1470 xed_uint64_t key = 0;
1471 xed_uint64_t hidx = 0;
1472 xed_uint64_t res = 1;
1473 xed3_operand_set_outreg(xes,arg_reg);
1474 key = xed_enc_lu_MODE(xes);
1475 hidx = key - 0;
1476 if(hidx <= 2) {
1477     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1478     return res;
1479     return 1;
1480 }
1481 else{
1482     return 0;
1483 }
1484 }
xed_encode_ntluf_YMM_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1485 xed_uint32_t xed_encode_ntluf_YMM_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1486 {
1487 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1488 static const lu_entry_t lu_table[3] = {
1489 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_YMM_R_32},
1490 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_YMM_R_32},
1491 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_YMM_R_64}
1492 };
1493 xed_uint64_t key = 0;
1494 xed_uint64_t hidx = 0;
1495 xed_uint64_t res = 1;
1496 xed3_operand_set_outreg(xes,arg_reg);
1497 key = xed_enc_lu_MODE(xes);
1498 hidx = key - 0;
1499 if(hidx <= 2) {
1500     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1501     return res;
1502     return 1;
1503 }
1504 else{
1505     return 0;
1506 }
1507 }
xed_encode_ntluf_OrDX(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1508 xed_uint32_t xed_encode_ntluf_OrDX(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1509 {
1510 typedef struct {xed_uint32_t key; } lu_entry_t;
1511 static const lu_entry_t lu_table[6] = {
1512 /*empty slot1 */ {0},
1513 /*empty slot1 */ {0},
1514 /*empty slot1 */ {0},
1515 /*h(145)=3 OUTREG=XED_REG_DX EOSZ=1  ->	nothing*/ {145, },
1516 /*h(210)=4 OUTREG=XED_REG_EDX EOSZ=2  ->	nothing*/ {210, },
1517 /*h(275)=5 OUTREG=XED_REG_RDX EOSZ=3  ->	nothing*/ {275, }
1518 };
1519 xed_union64_t t, u;
1520 xed_uint64_t key = 0;
1521 xed_uint64_t hidx = 0;
1522 xed3_operand_set_outreg(xes,arg_reg);
1523 key = xed_enc_lu_EOSZ_OUTREG(xes);
1524 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
1525 if(lu_table[hidx].key == key) {
1526     return 1;
1527 }
1528 else{
1529     return 0;
1530 }
1531 }
xed_encode_ntluf_XMM_N3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1532 xed_uint32_t xed_encode_ntluf_XMM_N3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1533 {
1534 typedef struct { xed_int8_t vexdest210 ;xed_int8_t vexdest3 ;xed_int8_t vexdest4;} lu_entry_t;
1535 static const lu_entry_t lu_table[32] = {
1536 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1,0},
1537 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1,0},
1538 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1,0},
1539 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1,0},
1540 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1,0},
1541 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1,0},
1542 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1,0},
1543 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1,0},
1544 /*h(186)=8 OUTREG=XED_REG_XMM8  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0,0},
1545 /*h(187)=9 OUTREG=XED_REG_XMM9  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0,0},
1546 /*h(188)=10 OUTREG=XED_REG_XMM10  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0,0},
1547 /*h(189)=11 OUTREG=XED_REG_XMM11  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0,0},
1548 /*h(190)=12 OUTREG=XED_REG_XMM12  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0,0},
1549 /*h(191)=13 OUTREG=XED_REG_XMM13  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0,0},
1550 /*h(192)=14 OUTREG=XED_REG_XMM14  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0,0},
1551 /*h(193)=15 OUTREG=XED_REG_XMM15  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0,0},
1552 /*h(194)=16 OUTREG=XED_REG_XMM16  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1,1},
1553 /*h(195)=17 OUTREG=XED_REG_XMM17  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1,1},
1554 /*h(196)=18 OUTREG=XED_REG_XMM18  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1,1},
1555 /*h(197)=19 OUTREG=XED_REG_XMM19  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1,1},
1556 /*h(198)=20 OUTREG=XED_REG_XMM20  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1,1},
1557 /*h(199)=21 OUTREG=XED_REG_XMM21  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1,1},
1558 /*h(200)=22 OUTREG=XED_REG_XMM22  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1,1},
1559 /*h(201)=23 OUTREG=XED_REG_XMM23  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1,1},
1560 /*h(202)=24 OUTREG=XED_REG_XMM24  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0,1},
1561 /*h(203)=25 OUTREG=XED_REG_XMM25  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0,1},
1562 /*h(204)=26 OUTREG=XED_REG_XMM26  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0,1},
1563 /*h(205)=27 OUTREG=XED_REG_XMM27  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0,1},
1564 /*h(206)=28 OUTREG=XED_REG_XMM28  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0,1},
1565 /*h(207)=29 OUTREG=XED_REG_XMM29  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0,1},
1566 /*h(208)=30 OUTREG=XED_REG_XMM30  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0,1},
1567 /*h(209)=31 OUTREG=XED_REG_XMM31  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0,1}
1568 };
1569 xed_uint64_t key = 0;
1570 xed_uint64_t hidx = 0;
1571 xed3_operand_set_outreg(xes,arg_reg);
1572 key = xed_enc_lu_OUTREG(xes);
1573 hidx = key - 178;
1574 if(hidx <= 31) {
1575     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
1576     xed3_operand_set_vexdest3(xes,lu_table[hidx].vexdest3);
1577     xed3_operand_set_vexdest4(xes,lu_table[hidx].vexdest4);
1578     return 1;
1579 }
1580 else{
1581     return 0;
1582 }
1583 }
xed_encode_ntluf_YMM_B_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1584 xed_uint32_t xed_encode_ntluf_YMM_B_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1585 {
1586 typedef struct { xed_int8_t rm;} lu_entry_t;
1587 static const lu_entry_t lu_table[8] = {
1588 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB RM=0 value=0x0*/ {0},
1589 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB RM=1 value=0x1*/ {1},
1590 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB RM=2 value=0x2*/ {2},
1591 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB RM=3 value=0x3*/ {3},
1592 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB RM=4 value=0x4*/ {4},
1593 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB RM=5 value=0x5*/ {5},
1594 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB RM=6 value=0x6*/ {6},
1595 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB RM=7 value=0x7*/ {7}
1596 };
1597 xed_uint64_t key = 0;
1598 xed_uint64_t hidx = 0;
1599 xed3_operand_set_outreg(xes,arg_reg);
1600 key = xed_enc_lu_OUTREG(xes);
1601 hidx = key - 210;
1602 if(hidx <= 7) {
1603     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1604     return 1;
1605 }
1606 else{
1607     return 0;
1608 }
1609 }
xed_encode_ntluf_GPRy_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1610 xed_uint32_t xed_encode_ntluf_GPRy_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1611 {
1612 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1613 static const lu_entry_t lu_table[3] = {
1614 /*h(1)=0 EOSZ=1  ->	ntluf*/ {xed_encode_ntluf_GPR32_R},
1615 /*h(2)=1 EOSZ=2  ->	ntluf*/ {xed_encode_ntluf_GPR32_R},
1616 /*h(3)=2 EOSZ=3  ->	ntluf*/ {xed_encode_ntluf_GPR64_R}
1617 };
1618 xed_uint64_t key = 0;
1619 xed_uint64_t hidx = 0;
1620 xed_uint64_t res = 1;
1621 xed3_operand_set_outreg(xes,arg_reg);
1622 key = xed_enc_lu_EOSZ(xes);
1623 hidx = key - 1;
1624 if(hidx <= 2) {
1625     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1626     return res;
1627     return 1;
1628 }
1629 else{
1630     return 0;
1631 }
1632 }
xed_encode_ntluf_XMM_B3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1633 xed_uint32_t xed_encode_ntluf_XMM_B3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1634 {
1635 typedef struct { xed_int8_t rexb ;xed_int8_t rexx ;xed_int8_t rm;} lu_entry_t;
1636 static const lu_entry_t lu_table[32] = {
1637 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0,0},
1638 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,0,1},
1639 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,0,2},
1640 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,0,3},
1641 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,0,4},
1642 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,0,5},
1643 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,0,6},
1644 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB REXX=0 value=0x0 	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,0,7},
1645 /*h(186)=8 OUTREG=XED_REG_XMM8  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0,0},
1646 /*h(187)=9 OUTREG=XED_REG_XMM9  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,0,1},
1647 /*h(188)=10 OUTREG=XED_REG_XMM10  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,0,2},
1648 /*h(189)=11 OUTREG=XED_REG_XMM11  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,0,3},
1649 /*h(190)=12 OUTREG=XED_REG_XMM12  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,0,4},
1650 /*h(191)=13 OUTREG=XED_REG_XMM13  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,0,5},
1651 /*h(192)=14 OUTREG=XED_REG_XMM14  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,0,6},
1652 /*h(193)=15 OUTREG=XED_REG_XMM15  ->	FB REXX=0 value=0x0 	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,0,7},
1653 /*h(194)=16 OUTREG=XED_REG_XMM16  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,1,0},
1654 /*h(195)=17 OUTREG=XED_REG_XMM17  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1,1},
1655 /*h(196)=18 OUTREG=XED_REG_XMM18  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,1,2},
1656 /*h(197)=19 OUTREG=XED_REG_XMM19  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,1,3},
1657 /*h(198)=20 OUTREG=XED_REG_XMM20  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,1,4},
1658 /*h(199)=21 OUTREG=XED_REG_XMM21  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,1,5},
1659 /*h(200)=22 OUTREG=XED_REG_XMM22  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,1,6},
1660 /*h(201)=23 OUTREG=XED_REG_XMM23  ->	FB REXX=1 value=0x1 	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,1,7},
1661 /*h(202)=24 OUTREG=XED_REG_XMM24  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,1,0},
1662 /*h(203)=25 OUTREG=XED_REG_XMM25  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1,1},
1663 /*h(204)=26 OUTREG=XED_REG_XMM26  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,1,2},
1664 /*h(205)=27 OUTREG=XED_REG_XMM27  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,1,3},
1665 /*h(206)=28 OUTREG=XED_REG_XMM28  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,1,4},
1666 /*h(207)=29 OUTREG=XED_REG_XMM29  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,1,5},
1667 /*h(208)=30 OUTREG=XED_REG_XMM30  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,1,6},
1668 /*h(209)=31 OUTREG=XED_REG_XMM31  ->	FB REXX=1 value=0x1 	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,1,7}
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 - 178;
1675 if(hidx <= 31) {
1676     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1677     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
1678     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1679     return 1;
1680 }
1681 else{
1682     return 0;
1683 }
1684 }
xed_encode_ntluf_GPR32e_m64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1685 xed_uint32_t xed_encode_ntluf_GPR32e_m64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1686 {
1687 xed_uint64_t key = 0;
1688 xed_uint64_t hidx = 0;
1689 xed3_operand_set_outreg(xes,arg_reg);
1690 key = xed_enc_lu_OUTREG(xes);
1691 hidx = key - 50;
1692 if(hidx <= 15) {
1693     return 1;
1694 }
1695 else{
1696     return 0;
1697 }
1698 }
xed_encode_ntluf_YMM_SE(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1699 xed_uint32_t xed_encode_ntluf_YMM_SE(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1700 {
1701 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1702 static const lu_entry_t lu_table[3] = {
1703 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_YMM_SE32},
1704 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_YMM_SE32},
1705 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_YMM_SE64}
1706 };
1707 xed_uint64_t key = 0;
1708 xed_uint64_t hidx = 0;
1709 xed_uint64_t res = 1;
1710 xed3_operand_set_outreg(xes,arg_reg);
1711 key = xed_enc_lu_MODE(xes);
1712 hidx = key - 0;
1713 if(hidx <= 2) {
1714     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1715     return res;
1716     return 1;
1717 }
1718 else{
1719     return 0;
1720 }
1721 }
xed_encode_ntluf_FINAL_SSEG_NOT64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1722 xed_uint32_t xed_encode_ntluf_FINAL_SSEG_NOT64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1723 {
1724 typedef struct { xed_int8_t seg_ovd ;xed_int8_t using_default_segment0;} lu_entry_t;
1725 static const lu_entry_t lu_table[6] = {
1726 /*h(147)=0 OUTREG=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {1,0},
1727 /*h(148)=1 OUTREG=XED_REG_DS  ->	FB SEG_OVD=2 value=0x2 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {2,0},
1728 /*h(149)=2 OUTREG=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {3,0},
1729 /*h(150)=3 OUTREG=XED_REG_SS  ->	FB SEG_OVD=0 value=0x0 	FB USING_DEFAULT_SEGMENT0=1 value=0x1*/ {0,1},
1730 /*h(151)=4 OUTREG=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {4,0},
1731 /*h(152)=5 OUTREG=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5 	FB USING_DEFAULT_SEGMENT0=0 value=0x0*/ {5,0}
1732 };
1733 xed_uint64_t key = 0;
1734 xed_uint64_t hidx = 0;
1735 xed3_operand_set_outreg(xes,arg_reg);
1736 key = xed_enc_lu_OUTREG(xes);
1737 hidx = key - 147;
1738 if(hidx <= 5) {
1739     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
1740     xed3_operand_set_using_default_segment0(xes,lu_table[hidx].using_default_segment0);
1741     return 1;
1742 }
1743 else{
1744     return 0;
1745 }
1746 }
xed_encode_ntluf_OrAX(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1747 xed_uint32_t xed_encode_ntluf_OrAX(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1748 {
1749 typedef struct {xed_uint32_t key; } lu_entry_t;
1750 static const lu_entry_t lu_table[4] = {
1751 /*h(267)=0 OUTREG=XED_REG_RAX EOSZ=3  ->	nothing*/ {267, },
1752 /*empty slot1 */ {0},
1753 /*h(137)=2 OUTREG=XED_REG_AX EOSZ=1  ->	nothing*/ {137, },
1754 /*h(202)=3 OUTREG=XED_REG_EAX EOSZ=2  ->	nothing*/ {202, }
1755 };
1756 xed_union64_t t;
1757 xed_uint64_t key = 0;
1758 xed_uint64_t hidx = 0;
1759 xed3_operand_set_outreg(xes,arg_reg);
1760 key = xed_enc_lu_EOSZ_OUTREG(xes);
1761 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
1762 if(lu_table[hidx].key == key) {
1763     return 1;
1764 }
1765 else{
1766     return 0;
1767 }
1768 }
xed_encode_ntluf_GPR16_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1769 xed_uint32_t xed_encode_ntluf_GPR16_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1770 {
1771 typedef struct { xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
1772 static const lu_entry_t lu_table[16] = {
1773 /*h(34)=0 OUTREG=XED_REG_AX  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0},
1774 /*h(35)=1 OUTREG=XED_REG_CX  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0},
1775 /*h(36)=2 OUTREG=XED_REG_DX  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0},
1776 /*h(37)=3 OUTREG=XED_REG_BX  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0},
1777 /*h(38)=4 OUTREG=XED_REG_SP  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0},
1778 /*h(39)=5 OUTREG=XED_REG_BP  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0},
1779 /*h(40)=6 OUTREG=XED_REG_SI  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0},
1780 /*h(41)=7 OUTREG=XED_REG_DI  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0},
1781 /*h(42)=8 OUTREG=XED_REG_R8W  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1},
1782 /*h(43)=9 OUTREG=XED_REG_R9W  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1},
1783 /*h(44)=10 OUTREG=XED_REG_R10W  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1},
1784 /*h(45)=11 OUTREG=XED_REG_R11W  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1},
1785 /*h(46)=12 OUTREG=XED_REG_R12W  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1},
1786 /*h(47)=13 OUTREG=XED_REG_R13W  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1},
1787 /*h(48)=14 OUTREG=XED_REG_R14W  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1},
1788 /*h(49)=15 OUTREG=XED_REG_R15W  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1}
1789 };
1790 xed_uint64_t key = 0;
1791 xed_uint64_t hidx = 0;
1792 xed3_operand_set_outreg(xes,arg_reg);
1793 key = xed_enc_lu_OUTREG(xes);
1794 hidx = key - 34;
1795 if(hidx <= 15) {
1796     xed3_operand_set_reg(xes,lu_table[hidx].reg);
1797     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
1798     return 1;
1799 }
1800 else{
1801     return 0;
1802 }
1803 }
xed_encode_ntluf_GPRz_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1804 xed_uint32_t xed_encode_ntluf_GPRz_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1805 {
1806 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1807 static const lu_entry_t lu_table[3] = {
1808 /*h(1)=0 EOSZ=1  ->	ntluf*/ {xed_encode_ntluf_GPR16_B},
1809 /*h(2)=1 EOSZ=2  ->	ntluf*/ {xed_encode_ntluf_GPR32_B},
1810 /*h(3)=2 EOSZ=3  ->	ntluf*/ {xed_encode_ntluf_GPR32_B}
1811 };
1812 xed_uint64_t key = 0;
1813 xed_uint64_t hidx = 0;
1814 xed_uint64_t res = 1;
1815 xed3_operand_set_outreg(xes,arg_reg);
1816 key = xed_enc_lu_EOSZ(xes);
1817 hidx = key - 1;
1818 if(hidx <= 2) {
1819     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1820     return res;
1821     return 1;
1822 }
1823 else{
1824     return 0;
1825 }
1826 }
xed_encode_ntluf_ArSI(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1827 xed_uint32_t xed_encode_ntluf_ArSI(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1828 {
1829 typedef struct {xed_uint32_t key; } lu_entry_t;
1830 static const lu_entry_t lu_table[5] = {
1831 /*empty slot1 */ {0},
1832 /*empty slot1 */ {0},
1833 /*h(161)=2 OUTREG=XED_REG_SI EASZ=1  ->	nothing*/ {161, },
1834 /*h(226)=3 OUTREG=XED_REG_ESI EASZ=2  ->	nothing*/ {226, },
1835 /*h(291)=4 OUTREG=XED_REG_RSI EASZ=3  ->	nothing*/ {291, }
1836 };
1837 xed_union64_t t, u;
1838 xed_uint64_t key = 0;
1839 xed_uint64_t hidx = 0;
1840 xed3_operand_set_outreg(xes,arg_reg);
1841 key = xed_enc_lu_EASZ_OUTREG(xes);
1842 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
1843 if(lu_table[hidx].key == key) {
1844     return 1;
1845 }
1846 else{
1847     return 0;
1848 }
1849 }
xed_encode_ntluf_ArSP(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1850 xed_uint32_t xed_encode_ntluf_ArSP(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1851 {
1852 typedef struct {xed_uint32_t key; } lu_entry_t;
1853 static const lu_entry_t lu_table[5] = {
1854 /*empty slot1 */ {0},
1855 /*empty slot1 */ {0},
1856 /*h(153)=2 OUTREG=XED_REG_SP EASZ=1  ->	nothing*/ {153, },
1857 /*h(218)=3 OUTREG=XED_REG_ESP EASZ=2  ->	nothing*/ {218, },
1858 /*h(283)=4 OUTREG=XED_REG_RSP EASZ=3  ->	nothing*/ {283, }
1859 };
1860 xed_union64_t t, u;
1861 xed_uint64_t key = 0;
1862 xed_uint64_t hidx = 0;
1863 xed3_operand_set_outreg(xes,arg_reg);
1864 key = xed_enc_lu_EASZ_OUTREG(xes);
1865 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
1866 if(lu_table[hidx].key == key) {
1867     return 1;
1868 }
1869 else{
1870     return 0;
1871 }
1872 }
xed_encode_ntluf_ZMM_N3_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1873 xed_uint32_t xed_encode_ntluf_ZMM_N3_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1874 {
1875 typedef struct { xed_int8_t vexdest210;} lu_entry_t;
1876 static const lu_entry_t lu_table[8] = {
1877 /*h(242)=0 OUTREG=XED_REG_ZMM0  ->	FB VEXDEST210=7 value=0x7*/ {7},
1878 /*h(243)=1 OUTREG=XED_REG_ZMM1  ->	FB VEXDEST210=6 value=0x6*/ {6},
1879 /*h(244)=2 OUTREG=XED_REG_ZMM2  ->	FB VEXDEST210=5 value=0x5*/ {5},
1880 /*h(245)=3 OUTREG=XED_REG_ZMM3  ->	FB VEXDEST210=4 value=0x4*/ {4},
1881 /*h(246)=4 OUTREG=XED_REG_ZMM4  ->	FB VEXDEST210=3 value=0x3*/ {3},
1882 /*h(247)=5 OUTREG=XED_REG_ZMM5  ->	FB VEXDEST210=2 value=0x2*/ {2},
1883 /*h(248)=6 OUTREG=XED_REG_ZMM6  ->	FB VEXDEST210=1 value=0x1*/ {1},
1884 /*h(249)=7 OUTREG=XED_REG_ZMM7  ->	FB VEXDEST210=0 value=0x0*/ {0}
1885 };
1886 xed_uint64_t key = 0;
1887 xed_uint64_t hidx = 0;
1888 xed3_operand_set_outreg(xes,arg_reg);
1889 key = xed_enc_lu_OUTREG(xes);
1890 hidx = key - 242;
1891 if(hidx <= 7) {
1892     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
1893     return 1;
1894 }
1895 else{
1896     return 0;
1897 }
1898 }
xed_encode_ntluf_ArDX(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1899 xed_uint32_t xed_encode_ntluf_ArDX(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1900 {
1901 typedef struct {xed_uint32_t key; } lu_entry_t;
1902 static const lu_entry_t lu_table[6] = {
1903 /*empty slot1 */ {0},
1904 /*empty slot1 */ {0},
1905 /*empty slot1 */ {0},
1906 /*h(145)=3 OUTREG=XED_REG_DX EASZ=1  ->	nothing*/ {145, },
1907 /*h(210)=4 OUTREG=XED_REG_EDX EASZ=2  ->	nothing*/ {210, },
1908 /*h(275)=5 OUTREG=XED_REG_RDX EASZ=3  ->	nothing*/ {275, }
1909 };
1910 xed_union64_t t, u;
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_EASZ_OUTREG(xes);
1915 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
1916 if(lu_table[hidx].key == key) {
1917     return 1;
1918 }
1919 else{
1920     return 0;
1921 }
1922 }
xed_encode_ntluf_VGPR32_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1923 xed_uint32_t xed_encode_ntluf_VGPR32_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1924 {
1925 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1926 static const lu_entry_t lu_table[3] = {
1927 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_VGPR32_R_32},
1928 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_VGPR32_R_32},
1929 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_VGPR32_R_64}
1930 };
1931 xed_uint64_t key = 0;
1932 xed_uint64_t hidx = 0;
1933 xed_uint64_t res = 1;
1934 xed3_operand_set_outreg(xes,arg_reg);
1935 key = xed_enc_lu_MODE(xes);
1936 hidx = key - 0;
1937 if(hidx <= 2) {
1938     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1939     return res;
1940     return 1;
1941 }
1942 else{
1943     return 0;
1944 }
1945 }
xed_encode_ntluf_GPRz_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1946 xed_uint32_t xed_encode_ntluf_GPRz_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1947 {
1948 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
1949 static const lu_entry_t lu_table[3] = {
1950 /*h(1)=0 EOSZ=1  ->	ntluf*/ {xed_encode_ntluf_GPR16_R},
1951 /*h(2)=1 EOSZ=2  ->	ntluf*/ {xed_encode_ntluf_GPR32_R},
1952 /*h(3)=2 EOSZ=3  ->	ntluf*/ {xed_encode_ntluf_GPR32_R}
1953 };
1954 xed_uint64_t key = 0;
1955 xed_uint64_t hidx = 0;
1956 xed_uint64_t res = 1;
1957 xed3_operand_set_outreg(xes,arg_reg);
1958 key = xed_enc_lu_EOSZ(xes);
1959 hidx = key - 1;
1960 if(hidx <= 2) {
1961     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
1962     return res;
1963     return 1;
1964 }
1965 else{
1966     return 0;
1967 }
1968 }
xed_encode_ntluf_YMM_R3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)1969 xed_uint32_t xed_encode_ntluf_YMM_R3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
1970 {
1971 typedef struct { xed_int8_t reg ;xed_int8_t rexr ;xed_int8_t rexrr;} lu_entry_t;
1972 static const lu_entry_t lu_table[32] = {
1973 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0,0},
1974 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0,0},
1975 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0,0},
1976 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0,0},
1977 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0,0},
1978 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0,0},
1979 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0,0},
1980 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB REXRR=0 value=0x0 	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0,0},
1981 /*h(218)=8 OUTREG=XED_REG_YMM8  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1,0},
1982 /*h(219)=9 OUTREG=XED_REG_YMM9  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1,0},
1983 /*h(220)=10 OUTREG=XED_REG_YMM10  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1,0},
1984 /*h(221)=11 OUTREG=XED_REG_YMM11  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1,0},
1985 /*h(222)=12 OUTREG=XED_REG_YMM12  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1,0},
1986 /*h(223)=13 OUTREG=XED_REG_YMM13  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1,0},
1987 /*h(224)=14 OUTREG=XED_REG_YMM14  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1,0},
1988 /*h(225)=15 OUTREG=XED_REG_YMM15  ->	FB REXRR=0 value=0x0 	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1,0},
1989 /*h(226)=16 OUTREG=XED_REG_YMM16  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0,1},
1990 /*h(227)=17 OUTREG=XED_REG_YMM17  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0,1},
1991 /*h(228)=18 OUTREG=XED_REG_YMM18  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0,1},
1992 /*h(229)=19 OUTREG=XED_REG_YMM19  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0,1},
1993 /*h(230)=20 OUTREG=XED_REG_YMM20  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0,1},
1994 /*h(231)=21 OUTREG=XED_REG_YMM21  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0,1},
1995 /*h(232)=22 OUTREG=XED_REG_YMM22  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0,1},
1996 /*h(233)=23 OUTREG=XED_REG_YMM23  ->	FB REXRR=1 value=0x1 	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0,1},
1997 /*h(234)=24 OUTREG=XED_REG_YMM24  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1,1},
1998 /*h(235)=25 OUTREG=XED_REG_YMM25  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1,1},
1999 /*h(236)=26 OUTREG=XED_REG_YMM26  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1,1},
2000 /*h(237)=27 OUTREG=XED_REG_YMM27  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1,1},
2001 /*h(238)=28 OUTREG=XED_REG_YMM28  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1,1},
2002 /*h(239)=29 OUTREG=XED_REG_YMM29  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1,1},
2003 /*h(240)=30 OUTREG=XED_REG_YMM30  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1,1},
2004 /*h(241)=31 OUTREG=XED_REG_YMM31  ->	FB REXRR=1 value=0x1 	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1,1}
2005 };
2006 xed_uint64_t key = 0;
2007 xed_uint64_t hidx = 0;
2008 xed3_operand_set_outreg(xes,arg_reg);
2009 key = xed_enc_lu_OUTREG(xes);
2010 hidx = key - 210;
2011 if(hidx <= 31) {
2012     xed3_operand_set_reg(xes,lu_table[hidx].reg);
2013     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
2014     xed3_operand_set_rexrr(xes,lu_table[hidx].rexrr);
2015     return 1;
2016 }
2017 else{
2018     return 0;
2019 }
2020 }
xed_encode_ntluf_YMM_R_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2021 xed_uint32_t xed_encode_ntluf_YMM_R_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2022 {
2023 typedef struct { xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
2024 static const lu_entry_t lu_table[16] = {
2025 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0},
2026 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0},
2027 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0},
2028 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0},
2029 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0},
2030 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0},
2031 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0},
2032 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0},
2033 /*h(218)=8 OUTREG=XED_REG_YMM8  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1},
2034 /*h(219)=9 OUTREG=XED_REG_YMM9  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1},
2035 /*h(220)=10 OUTREG=XED_REG_YMM10  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1},
2036 /*h(221)=11 OUTREG=XED_REG_YMM11  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1},
2037 /*h(222)=12 OUTREG=XED_REG_YMM12  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1},
2038 /*h(223)=13 OUTREG=XED_REG_YMM13  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1},
2039 /*h(224)=14 OUTREG=XED_REG_YMM14  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1},
2040 /*h(225)=15 OUTREG=XED_REG_YMM15  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1}
2041 };
2042 xed_uint64_t key = 0;
2043 xed_uint64_t hidx = 0;
2044 xed3_operand_set_outreg(xes,arg_reg);
2045 key = xed_enc_lu_OUTREG(xes);
2046 hidx = key - 210;
2047 if(hidx <= 15) {
2048     xed3_operand_set_reg(xes,lu_table[hidx].reg);
2049     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
2050     return 1;
2051 }
2052 else{
2053     return 0;
2054 }
2055 }
xed_encode_ntluf_ArCX(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2056 xed_uint32_t xed_encode_ntluf_ArCX(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2057 {
2058 typedef struct {xed_uint32_t key; } lu_entry_t;
2059 static const lu_entry_t lu_table[5] = {
2060 /*h(141)=0 OUTREG=XED_REG_CX EASZ=1  ->	nothing*/ {141, },
2061 /*h(206)=1 OUTREG=XED_REG_ECX EASZ=2  ->	nothing*/ {206, },
2062 /*h(271)=2 OUTREG=XED_REG_RCX EASZ=3  ->	nothing*/ {271, },
2063 /*empty slot1 */ {0},
2064 /*empty slot1 */ {0}
2065 };
2066 xed_union64_t t, u;
2067 xed_uint64_t key = 0;
2068 xed_uint64_t hidx = 0;
2069 xed3_operand_set_outreg(xes,arg_reg);
2070 key = xed_enc_lu_EASZ_OUTREG(xes);
2071 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
2072 if(lu_table[hidx].key == key) {
2073     return 1;
2074 }
2075 else{
2076     return 0;
2077 }
2078 }
xed_encode_ntluf_XMM_B3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2079 xed_uint32_t xed_encode_ntluf_XMM_B3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2080 {
2081 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2082 static const lu_entry_t lu_table[3] = {
2083 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_XMM_B3_32},
2084 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_XMM_B3_32},
2085 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_XMM_B3_64}
2086 };
2087 xed_uint64_t key = 0;
2088 xed_uint64_t hidx = 0;
2089 xed_uint64_t res = 1;
2090 xed3_operand_set_outreg(xes,arg_reg);
2091 key = xed_enc_lu_MODE(xes);
2092 hidx = key - 0;
2093 if(hidx <= 2) {
2094     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2095     return res;
2096     return 1;
2097 }
2098 else{
2099     return 0;
2100 }
2101 }
xed_encode_ntluf_XMM_N_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2102 xed_uint32_t xed_encode_ntluf_XMM_N_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2103 {
2104 typedef struct { xed_int8_t vexdest210;} lu_entry_t;
2105 static const lu_entry_t lu_table[8] = {
2106 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB VEXDEST210=7 value=0x7*/ {7},
2107 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB VEXDEST210=6 value=0x6*/ {6},
2108 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB VEXDEST210=5 value=0x5*/ {5},
2109 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB VEXDEST210=4 value=0x4*/ {4},
2110 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB VEXDEST210=3 value=0x3*/ {3},
2111 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB VEXDEST210=2 value=0x2*/ {2},
2112 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB VEXDEST210=1 value=0x1*/ {1},
2113 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB VEXDEST210=0 value=0x0*/ {0}
2114 };
2115 xed_uint64_t key = 0;
2116 xed_uint64_t hidx = 0;
2117 xed3_operand_set_outreg(xes,arg_reg);
2118 key = xed_enc_lu_OUTREG(xes);
2119 hidx = key - 178;
2120 if(hidx <= 7) {
2121     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
2122     return 1;
2123 }
2124 else{
2125     return 0;
2126 }
2127 }
xed_encode_ntluf_YMM_R3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2128 xed_uint32_t xed_encode_ntluf_YMM_R3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2129 {
2130 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2131 static const lu_entry_t lu_table[3] = {
2132 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_YMM_R3_32},
2133 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_YMM_R3_32},
2134 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_YMM_R3_64}
2135 };
2136 xed_uint64_t key = 0;
2137 xed_uint64_t hidx = 0;
2138 xed_uint64_t res = 1;
2139 xed3_operand_set_outreg(xes,arg_reg);
2140 key = xed_enc_lu_MODE(xes);
2141 hidx = key - 0;
2142 if(hidx <= 2) {
2143     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2144     return res;
2145     return 1;
2146 }
2147 else{
2148     return 0;
2149 }
2150 }
xed_encode_ntluf_YMM_N3_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2151 xed_uint32_t xed_encode_ntluf_YMM_N3_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2152 {
2153 typedef struct { xed_int8_t vexdest210 ;xed_int8_t vexdest3 ;xed_int8_t vexdest4;} lu_entry_t;
2154 static const lu_entry_t lu_table[32] = {
2155 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1,0},
2156 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1,0},
2157 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1,0},
2158 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1,0},
2159 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1,0},
2160 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1,0},
2161 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1,0},
2162 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1,0},
2163 /*h(218)=8 OUTREG=XED_REG_YMM8  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0,0},
2164 /*h(219)=9 OUTREG=XED_REG_YMM9  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0,0},
2165 /*h(220)=10 OUTREG=XED_REG_YMM10  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0,0},
2166 /*h(221)=11 OUTREG=XED_REG_YMM11  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0,0},
2167 /*h(222)=12 OUTREG=XED_REG_YMM12  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0,0},
2168 /*h(223)=13 OUTREG=XED_REG_YMM13  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0,0},
2169 /*h(224)=14 OUTREG=XED_REG_YMM14  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0,0},
2170 /*h(225)=15 OUTREG=XED_REG_YMM15  ->	FB VEXDEST4=0 value=0x0 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0,0},
2171 /*h(226)=16 OUTREG=XED_REG_YMM16  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1,1},
2172 /*h(227)=17 OUTREG=XED_REG_YMM17  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1,1},
2173 /*h(228)=18 OUTREG=XED_REG_YMM18  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1,1},
2174 /*h(229)=19 OUTREG=XED_REG_YMM19  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1,1},
2175 /*h(230)=20 OUTREG=XED_REG_YMM20  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1,1},
2176 /*h(231)=21 OUTREG=XED_REG_YMM21  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1,1},
2177 /*h(232)=22 OUTREG=XED_REG_YMM22  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1,1},
2178 /*h(233)=23 OUTREG=XED_REG_YMM23  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1,1},
2179 /*h(234)=24 OUTREG=XED_REG_YMM24  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0,1},
2180 /*h(235)=25 OUTREG=XED_REG_YMM25  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0,1},
2181 /*h(236)=26 OUTREG=XED_REG_YMM26  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0,1},
2182 /*h(237)=27 OUTREG=XED_REG_YMM27  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0,1},
2183 /*h(238)=28 OUTREG=XED_REG_YMM28  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0,1},
2184 /*h(239)=29 OUTREG=XED_REG_YMM29  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0,1},
2185 /*h(240)=30 OUTREG=XED_REG_YMM30  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0,1},
2186 /*h(241)=31 OUTREG=XED_REG_YMM31  ->	FB VEXDEST4=1 value=0x1 	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0,1}
2187 };
2188 xed_uint64_t key = 0;
2189 xed_uint64_t hidx = 0;
2190 xed3_operand_set_outreg(xes,arg_reg);
2191 key = xed_enc_lu_OUTREG(xes);
2192 hidx = key - 210;
2193 if(hidx <= 31) {
2194     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
2195     xed3_operand_set_vexdest3(xes,lu_table[hidx].vexdest3);
2196     xed3_operand_set_vexdest4(xes,lu_table[hidx].vexdest4);
2197     return 1;
2198 }
2199 else{
2200     return 0;
2201 }
2202 }
xed_encode_ntluf_FINAL_DSEG1_MODE64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2203 xed_uint32_t xed_encode_ntluf_FINAL_DSEG1_MODE64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2204 {
2205 typedef struct {xed_uint32_t key; xed_int8_t seg_ovd ;xed_int8_t using_default_segment1;} lu_entry_t;
2206 static const lu_entry_t lu_table[4] = {
2207 /*h(0)=0 OUTREG=XED_REG_INVALID  ->	FB SEG_OVD=0 value=0x0 	FB USING_DEFAULT_SEGMENT1=1 value=0x1*/ {0, 0,1},
2208 /*h(151)=1 OUTREG=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4 	FB USING_DEFAULT_SEGMENT1=0 value=0x0*/ {151, 4,0},
2209 /*empty slot1 */ {0,0,0},
2210 /*h(152)=3 OUTREG=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5 	FB USING_DEFAULT_SEGMENT1=0 value=0x0*/ {152, 5,0}
2211 };
2212 xed_union64_t t;
2213 xed_uint64_t key = 0;
2214 xed_uint64_t hidx = 0;
2215 xed3_operand_set_outreg(xes,arg_reg);
2216 key = xed_enc_lu_OUTREG(xes);
2217 hidx = (t.u64 = 2654435769  * key,  t.s.lo32 >> (32-2));
2218 if(lu_table[hidx].key == key) {
2219     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
2220     xed3_operand_set_using_default_segment1(xes,lu_table[hidx].using_default_segment1);
2221     return 1;
2222 }
2223 else{
2224     return 0;
2225 }
2226 }
xed_encode_ntluf_XMM_N(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2227 xed_uint32_t xed_encode_ntluf_XMM_N(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2228 {
2229 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2230 static const lu_entry_t lu_table[3] = {
2231 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_XMM_N_32},
2232 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_XMM_N_32},
2233 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_XMM_N_64}
2234 };
2235 xed_uint64_t key = 0;
2236 xed_uint64_t hidx = 0;
2237 xed_uint64_t res = 1;
2238 xed3_operand_set_outreg(xes,arg_reg);
2239 key = xed_enc_lu_MODE(xes);
2240 hidx = key - 0;
2241 if(hidx <= 2) {
2242     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2243     return res;
2244     return 1;
2245 }
2246 else{
2247     return 0;
2248 }
2249 }
xed_encode_ntluf_rIPa(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2250 xed_uint32_t xed_encode_ntluf_rIPa(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2251 {
2252 typedef struct {xed_uint32_t key; } lu_entry_t;
2253 static const lu_entry_t lu_table[2] = {
2254 /*h(418)=0 OUTREG=XED_REG_EIP EASZ=2  ->	nothing*/ {418, },
2255 /*h(415)=1 OUTREG=XED_REG_RIP EASZ=3  ->	nothing*/ {415, }
2256 };
2257 xed_uint64_t key = 0;
2258 xed_uint64_t hidx = 0;
2259 xed3_operand_set_outreg(xes,arg_reg);
2260 key = xed_enc_lu_EASZ_OUTREG(xes);
2261 hidx = (3*key % 2);
2262 if(lu_table[hidx].key == key) {
2263     return 1;
2264 }
2265 else{
2266     return 0;
2267 }
2268 }
xed_encode_ntluf_VGPR32_N_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2269 xed_uint32_t xed_encode_ntluf_VGPR32_N_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2270 {
2271 typedef struct { xed_int8_t vexdest210 ;xed_int8_t vexdest3;} lu_entry_t;
2272 static const lu_entry_t lu_table[16] = {
2273 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1},
2274 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1},
2275 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1},
2276 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1},
2277 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1},
2278 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1},
2279 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1},
2280 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1},
2281 /*h(58)=8 OUTREG=XED_REG_R8D  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0},
2282 /*h(59)=9 OUTREG=XED_REG_R9D  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0},
2283 /*h(60)=10 OUTREG=XED_REG_R10D  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0},
2284 /*h(61)=11 OUTREG=XED_REG_R11D  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0},
2285 /*h(62)=12 OUTREG=XED_REG_R12D  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0},
2286 /*h(63)=13 OUTREG=XED_REG_R13D  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0},
2287 /*h(64)=14 OUTREG=XED_REG_R14D  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0},
2288 /*h(65)=15 OUTREG=XED_REG_R15D  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0}
2289 };
2290 xed_uint64_t key = 0;
2291 xed_uint64_t hidx = 0;
2292 xed3_operand_set_outreg(xes,arg_reg);
2293 key = xed_enc_lu_OUTREG(xes);
2294 hidx = key - 50;
2295 if(hidx <= 15) {
2296     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
2297     xed3_operand_set_vexdest3(xes,lu_table[hidx].vexdest3);
2298     return 1;
2299 }
2300 else{
2301     return 0;
2302 }
2303 }
xed_encode_ntluf_GPRm_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2304 xed_uint32_t xed_encode_ntluf_GPRm_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2305 {
2306 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2307 static const lu_entry_t lu_table[3] = {
2308 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_GPR32_R},
2309 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_GPR32_R},
2310 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_GPR64_R}
2311 };
2312 xed_uint64_t key = 0;
2313 xed_uint64_t hidx = 0;
2314 xed_uint64_t res = 1;
2315 xed3_operand_set_outreg(xes,arg_reg);
2316 key = xed_enc_lu_MODE(xes);
2317 hidx = key - 0;
2318 if(hidx <= 2) {
2319     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2320     return res;
2321     return 1;
2322 }
2323 else{
2324     return 0;
2325 }
2326 }
xed_encode_ntluf_VGPR64_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2327 xed_uint32_t xed_encode_ntluf_VGPR64_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2328 {
2329 typedef struct { xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
2330 static const lu_entry_t lu_table[16] = {
2331 /*h(66)=0 OUTREG=XED_REG_RAX  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0},
2332 /*h(67)=1 OUTREG=XED_REG_RCX  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0},
2333 /*h(68)=2 OUTREG=XED_REG_RDX  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0},
2334 /*h(69)=3 OUTREG=XED_REG_RBX  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0},
2335 /*h(70)=4 OUTREG=XED_REG_RSP  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0},
2336 /*h(71)=5 OUTREG=XED_REG_RBP  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0},
2337 /*h(72)=6 OUTREG=XED_REG_RSI  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0},
2338 /*h(73)=7 OUTREG=XED_REG_RDI  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0},
2339 /*h(74)=8 OUTREG=XED_REG_R8  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1},
2340 /*h(75)=9 OUTREG=XED_REG_R9  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1},
2341 /*h(76)=10 OUTREG=XED_REG_R10  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1},
2342 /*h(77)=11 OUTREG=XED_REG_R11  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1},
2343 /*h(78)=12 OUTREG=XED_REG_R12  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1},
2344 /*h(79)=13 OUTREG=XED_REG_R13  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1},
2345 /*h(80)=14 OUTREG=XED_REG_R14  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1},
2346 /*h(81)=15 OUTREG=XED_REG_R15  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1}
2347 };
2348 xed_uint64_t key = 0;
2349 xed_uint64_t hidx = 0;
2350 xed3_operand_set_outreg(xes,arg_reg);
2351 key = xed_enc_lu_OUTREG(xes);
2352 hidx = key - 66;
2353 if(hidx <= 15) {
2354     xed3_operand_set_reg(xes,lu_table[hidx].reg);
2355     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
2356     return 1;
2357 }
2358 else{
2359     return 0;
2360 }
2361 }
xed_encode_ntluf_XMM_SE(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2362 xed_uint32_t xed_encode_ntluf_XMM_SE(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2363 {
2364 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2365 static const lu_entry_t lu_table[3] = {
2366 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_XMM_SE32},
2367 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_XMM_SE32},
2368 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_XMM_SE64}
2369 };
2370 xed_uint64_t key = 0;
2371 xed_uint64_t hidx = 0;
2372 xed_uint64_t res = 1;
2373 xed3_operand_set_outreg(xes,arg_reg);
2374 key = xed_enc_lu_MODE(xes);
2375 hidx = key - 0;
2376 if(hidx <= 2) {
2377     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2378     return res;
2379     return 1;
2380 }
2381 else{
2382     return 0;
2383 }
2384 }
xed_encode_ntluf_XMM_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2385 xed_uint32_t xed_encode_ntluf_XMM_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2386 {
2387 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2388 static const lu_entry_t lu_table[3] = {
2389 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_XMM_B_32},
2390 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_XMM_B_32},
2391 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_XMM_B_64}
2392 };
2393 xed_uint64_t key = 0;
2394 xed_uint64_t hidx = 0;
2395 xed_uint64_t res = 1;
2396 xed3_operand_set_outreg(xes,arg_reg);
2397 key = xed_enc_lu_MODE(xes);
2398 hidx = key - 0;
2399 if(hidx <= 2) {
2400     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2401     return res;
2402     return 1;
2403 }
2404 else{
2405     return 0;
2406 }
2407 }
xed_encode_ntluf_XMM_R_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2408 xed_uint32_t xed_encode_ntluf_XMM_R_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2409 {
2410 typedef struct { xed_int8_t reg ;xed_int8_t rexr;} lu_entry_t;
2411 static const lu_entry_t lu_table[16] = {
2412 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB REXR=0 value=0x0 	FB REG=0 value=0x0*/ {0,0},
2413 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB REXR=0 value=0x0 	FB REG=1 value=0x1*/ {1,0},
2414 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB REXR=0 value=0x0 	FB REG=2 value=0x2*/ {2,0},
2415 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB REXR=0 value=0x0 	FB REG=3 value=0x3*/ {3,0},
2416 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB REXR=0 value=0x0 	FB REG=4 value=0x4*/ {4,0},
2417 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB REXR=0 value=0x0 	FB REG=5 value=0x5*/ {5,0},
2418 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB REXR=0 value=0x0 	FB REG=6 value=0x6*/ {6,0},
2419 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB REXR=0 value=0x0 	FB REG=7 value=0x7*/ {7,0},
2420 /*h(186)=8 OUTREG=XED_REG_XMM8  ->	FB REXR=1 value=0x1 	FB REG=0 value=0x0*/ {0,1},
2421 /*h(187)=9 OUTREG=XED_REG_XMM9  ->	FB REXR=1 value=0x1 	FB REG=1 value=0x1*/ {1,1},
2422 /*h(188)=10 OUTREG=XED_REG_XMM10  ->	FB REXR=1 value=0x1 	FB REG=2 value=0x2*/ {2,1},
2423 /*h(189)=11 OUTREG=XED_REG_XMM11  ->	FB REXR=1 value=0x1 	FB REG=3 value=0x3*/ {3,1},
2424 /*h(190)=12 OUTREG=XED_REG_XMM12  ->	FB REXR=1 value=0x1 	FB REG=4 value=0x4*/ {4,1},
2425 /*h(191)=13 OUTREG=XED_REG_XMM13  ->	FB REXR=1 value=0x1 	FB REG=5 value=0x5*/ {5,1},
2426 /*h(192)=14 OUTREG=XED_REG_XMM14  ->	FB REXR=1 value=0x1 	FB REG=6 value=0x6*/ {6,1},
2427 /*h(193)=15 OUTREG=XED_REG_XMM15  ->	FB REXR=1 value=0x1 	FB REG=7 value=0x7*/ {7,1}
2428 };
2429 xed_uint64_t key = 0;
2430 xed_uint64_t hidx = 0;
2431 xed3_operand_set_outreg(xes,arg_reg);
2432 key = xed_enc_lu_OUTREG(xes);
2433 hidx = key - 178;
2434 if(hidx <= 15) {
2435     xed3_operand_set_reg(xes,lu_table[hidx].reg);
2436     xed3_operand_set_rexr(xes,lu_table[hidx].rexr);
2437     return 1;
2438 }
2439 else{
2440     return 0;
2441 }
2442 }
xed_encode_ntluf_GPR32e_m32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2443 xed_uint32_t xed_encode_ntluf_GPR32e_m32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2444 {
2445 xed_uint64_t key = 0;
2446 xed_uint64_t hidx = 0;
2447 xed3_operand_set_outreg(xes,arg_reg);
2448 key = xed_enc_lu_OUTREG(xes);
2449 hidx = key - 50;
2450 if(hidx <= 7) {
2451     return 1;
2452 }
2453 else{
2454     return 0;
2455 }
2456 }
xed_encode_ntluf_XMM_SE64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2457 xed_uint32_t xed_encode_ntluf_XMM_SE64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2458 {
2459 typedef struct { xed_int8_t esrc;} lu_entry_t;
2460 static const lu_entry_t lu_table[16] = {
2461 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB ESRC=0 value=0x0*/ {0},
2462 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB ESRC=1 value=0x1*/ {1},
2463 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB ESRC=2 value=0x2*/ {2},
2464 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB ESRC=3 value=0x3*/ {3},
2465 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB ESRC=4 value=0x4*/ {4},
2466 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB ESRC=5 value=0x5*/ {5},
2467 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB ESRC=6 value=0x6*/ {6},
2468 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB ESRC=7 value=0x7*/ {7},
2469 /*h(186)=8 OUTREG=XED_REG_XMM8  ->	FB ESRC=8 value=0x8*/ {8},
2470 /*h(187)=9 OUTREG=XED_REG_XMM9  ->	FB ESRC=9 value=0x9*/ {9},
2471 /*h(188)=10 OUTREG=XED_REG_XMM10  ->	FB ESRC=10 value=0xa*/ {10},
2472 /*h(189)=11 OUTREG=XED_REG_XMM11  ->	FB ESRC=11 value=0xb*/ {11},
2473 /*h(190)=12 OUTREG=XED_REG_XMM12  ->	FB ESRC=12 value=0xc*/ {12},
2474 /*h(191)=13 OUTREG=XED_REG_XMM13  ->	FB ESRC=13 value=0xd*/ {13},
2475 /*h(192)=14 OUTREG=XED_REG_XMM14  ->	FB ESRC=14 value=0xe*/ {14},
2476 /*h(193)=15 OUTREG=XED_REG_XMM15  ->	FB ESRC=15 value=0xf*/ {15}
2477 };
2478 xed_uint64_t key = 0;
2479 xed_uint64_t hidx = 0;
2480 xed3_operand_set_outreg(xes,arg_reg);
2481 key = xed_enc_lu_OUTREG(xes);
2482 hidx = key - 178;
2483 if(hidx <= 15) {
2484     xed3_operand_set_esrc(xes,lu_table[hidx].esrc);
2485     return 1;
2486 }
2487 else{
2488     return 0;
2489 }
2490 }
xed_encode_ntluf_Ar12(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2491 xed_uint32_t xed_encode_ntluf_Ar12(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2492 {
2493 typedef struct {xed_uint32_t key; } lu_entry_t;
2494 static const lu_entry_t lu_table[5] = {
2495 /*empty slot1 */ {0},
2496 /*h(185)=1 OUTREG=XED_REG_R12W EASZ=1  ->	nothing*/ {185, },
2497 /*h(250)=2 OUTREG=XED_REG_R12D EASZ=2  ->	nothing*/ {250, },
2498 /*h(315)=3 OUTREG=XED_REG_R12 EASZ=3  ->	nothing*/ {315, },
2499 /*empty slot1 */ {0}
2500 };
2501 xed_union64_t t, u;
2502 xed_uint64_t key = 0;
2503 xed_uint64_t hidx = 0;
2504 xed3_operand_set_outreg(xes,arg_reg);
2505 key = xed_enc_lu_EASZ_OUTREG(xes);
2506 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
2507 if(lu_table[hidx].key == key) {
2508     return 1;
2509 }
2510 else{
2511     return 0;
2512 }
2513 }
xed_encode_ntluf_Ar13(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2514 xed_uint32_t xed_encode_ntluf_Ar13(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2515 {
2516 typedef struct {xed_uint32_t key; } lu_entry_t;
2517 static const lu_entry_t lu_table[6] = {
2518 /*h(319)=0 OUTREG=XED_REG_R13 EASZ=3  ->	nothing*/ {319, },
2519 /*empty slot1 */ {0},
2520 /*empty slot1 */ {0},
2521 /*empty slot1 */ {0},
2522 /*h(189)=4 OUTREG=XED_REG_R13W EASZ=1  ->	nothing*/ {189, },
2523 /*h(254)=5 OUTREG=XED_REG_R13D EASZ=2  ->	nothing*/ {254, }
2524 };
2525 xed_union64_t t, u;
2526 xed_uint64_t key = 0;
2527 xed_uint64_t hidx = 0;
2528 xed3_operand_set_outreg(xes,arg_reg);
2529 key = xed_enc_lu_EASZ_OUTREG(xes);
2530 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
2531 if(lu_table[hidx].key == key) {
2532     return 1;
2533 }
2534 else{
2535     return 0;
2536 }
2537 }
xed_encode_ntluf_XMM_B_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2538 xed_uint32_t xed_encode_ntluf_XMM_B_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2539 {
2540 typedef struct { xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
2541 static const lu_entry_t lu_table[16] = {
2542 /*h(178)=0 OUTREG=XED_REG_XMM0  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0},
2543 /*h(179)=1 OUTREG=XED_REG_XMM1  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1},
2544 /*h(180)=2 OUTREG=XED_REG_XMM2  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,2},
2545 /*h(181)=3 OUTREG=XED_REG_XMM3  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,3},
2546 /*h(182)=4 OUTREG=XED_REG_XMM4  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,4},
2547 /*h(183)=5 OUTREG=XED_REG_XMM5  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,5},
2548 /*h(184)=6 OUTREG=XED_REG_XMM6  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,6},
2549 /*h(185)=7 OUTREG=XED_REG_XMM7  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,7},
2550 /*h(186)=8 OUTREG=XED_REG_XMM8  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0},
2551 /*h(187)=9 OUTREG=XED_REG_XMM9  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1},
2552 /*h(188)=10 OUTREG=XED_REG_XMM10  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,2},
2553 /*h(189)=11 OUTREG=XED_REG_XMM11  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,3},
2554 /*h(190)=12 OUTREG=XED_REG_XMM12  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,4},
2555 /*h(191)=13 OUTREG=XED_REG_XMM13  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,5},
2556 /*h(192)=14 OUTREG=XED_REG_XMM14  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,6},
2557 /*h(193)=15 OUTREG=XED_REG_XMM15  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,7}
2558 };
2559 xed_uint64_t key = 0;
2560 xed_uint64_t hidx = 0;
2561 xed3_operand_set_outreg(xes,arg_reg);
2562 key = xed_enc_lu_OUTREG(xes);
2563 hidx = key - 178;
2564 if(hidx <= 15) {
2565     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
2566     xed3_operand_set_rm(xes,lu_table[hidx].rm);
2567     return 1;
2568 }
2569 else{
2570     return 0;
2571 }
2572 }
xed_encode_ntluf_Ar11(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2573 xed_uint32_t xed_encode_ntluf_Ar11(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2574 {
2575 typedef struct {xed_uint32_t key; } lu_entry_t;
2576 static const lu_entry_t lu_table[5] = {
2577 /*h(246)=0 OUTREG=XED_REG_R11D EASZ=2  ->	nothing*/ {246, },
2578 /*h(311)=1 OUTREG=XED_REG_R11 EASZ=3  ->	nothing*/ {311, },
2579 /*empty slot1 */ {0},
2580 /*empty slot1 */ {0},
2581 /*h(181)=4 OUTREG=XED_REG_R11W EASZ=1  ->	nothing*/ {181, }
2582 };
2583 xed_union64_t t, u;
2584 xed_uint64_t key = 0;
2585 xed_uint64_t hidx = 0;
2586 xed3_operand_set_outreg(xes,arg_reg);
2587 key = xed_enc_lu_EASZ_OUTREG(xes);
2588 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
2589 if(lu_table[hidx].key == key) {
2590     return 1;
2591 }
2592 else{
2593     return 0;
2594 }
2595 }
xed_encode_ntluf_YMM_N_64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2596 xed_uint32_t xed_encode_ntluf_YMM_N_64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2597 {
2598 typedef struct { xed_int8_t vexdest210 ;xed_int8_t vexdest3;} lu_entry_t;
2599 static const lu_entry_t lu_table[16] = {
2600 /*h(210)=0 OUTREG=XED_REG_YMM0  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1},
2601 /*h(211)=1 OUTREG=XED_REG_YMM1  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1},
2602 /*h(212)=2 OUTREG=XED_REG_YMM2  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1},
2603 /*h(213)=3 OUTREG=XED_REG_YMM3  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1},
2604 /*h(214)=4 OUTREG=XED_REG_YMM4  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1},
2605 /*h(215)=5 OUTREG=XED_REG_YMM5  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1},
2606 /*h(216)=6 OUTREG=XED_REG_YMM6  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1},
2607 /*h(217)=7 OUTREG=XED_REG_YMM7  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1},
2608 /*h(218)=8 OUTREG=XED_REG_YMM8  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=7 value=0x7*/ {7,0},
2609 /*h(219)=9 OUTREG=XED_REG_YMM9  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=6 value=0x6*/ {6,0},
2610 /*h(220)=10 OUTREG=XED_REG_YMM10  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=5 value=0x5*/ {5,0},
2611 /*h(221)=11 OUTREG=XED_REG_YMM11  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=4 value=0x4*/ {4,0},
2612 /*h(222)=12 OUTREG=XED_REG_YMM12  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=3 value=0x3*/ {3,0},
2613 /*h(223)=13 OUTREG=XED_REG_YMM13  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=2 value=0x2*/ {2,0},
2614 /*h(224)=14 OUTREG=XED_REG_YMM14  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=1 value=0x1*/ {1,0},
2615 /*h(225)=15 OUTREG=XED_REG_YMM15  ->	FB VEXDEST3=0 value=0x0 	FB VEXDEST210=0 value=0x0*/ {0,0}
2616 };
2617 xed_uint64_t key = 0;
2618 xed_uint64_t hidx = 0;
2619 xed3_operand_set_outreg(xes,arg_reg);
2620 key = xed_enc_lu_OUTREG(xes);
2621 hidx = key - 210;
2622 if(hidx <= 15) {
2623     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
2624     xed3_operand_set_vexdest3(xes,lu_table[hidx].vexdest3);
2625     return 1;
2626 }
2627 else{
2628     return 0;
2629 }
2630 }
xed_encode_ntluf_Ar14(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2631 xed_uint32_t xed_encode_ntluf_Ar14(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2632 {
2633 typedef struct {xed_uint32_t key; } lu_entry_t;
2634 static const lu_entry_t lu_table[5] = {
2635 /*empty slot1 */ {0},
2636 /*h(193)=1 OUTREG=XED_REG_R14W EASZ=1  ->	nothing*/ {193, },
2637 /*h(258)=2 OUTREG=XED_REG_R14D EASZ=2  ->	nothing*/ {258, },
2638 /*h(323)=3 OUTREG=XED_REG_R14 EASZ=3  ->	nothing*/ {323, },
2639 /*empty slot1 */ {0}
2640 };
2641 xed_union64_t t, u;
2642 xed_uint64_t key = 0;
2643 xed_uint64_t hidx = 0;
2644 xed3_operand_set_outreg(xes,arg_reg);
2645 key = xed_enc_lu_EASZ_OUTREG(xes);
2646 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
2647 if(lu_table[hidx].key == key) {
2648     return 1;
2649 }
2650 else{
2651     return 0;
2652 }
2653 }
xed_encode_ntluf_Ar15(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2654 xed_uint32_t xed_encode_ntluf_Ar15(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2655 {
2656 typedef struct {xed_uint32_t key; } lu_entry_t;
2657 static const lu_entry_t lu_table[5] = {
2658 /*h(327)=0 OUTREG=XED_REG_R15 EASZ=3  ->	nothing*/ {327, },
2659 /*empty slot1 */ {0},
2660 /*empty slot1 */ {0},
2661 /*h(197)=3 OUTREG=XED_REG_R15W EASZ=1  ->	nothing*/ {197, },
2662 /*h(262)=4 OUTREG=XED_REG_R15D EASZ=2  ->	nothing*/ {262, }
2663 };
2664 xed_union64_t t, u;
2665 xed_uint64_t key = 0;
2666 xed_uint64_t hidx = 0;
2667 xed3_operand_set_outreg(xes,arg_reg);
2668 key = xed_enc_lu_EASZ_OUTREG(xes);
2669 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
2670 if(lu_table[hidx].key == key) {
2671     return 1;
2672 }
2673 else{
2674     return 0;
2675 }
2676 }
xed_encode_ntluf_VGPR64_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2677 xed_uint32_t xed_encode_ntluf_VGPR64_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2678 {
2679 typedef struct { xed_int8_t rexb ;xed_int8_t rm;} lu_entry_t;
2680 static const lu_entry_t lu_table[16] = {
2681 /*h(66)=0 OUTREG=XED_REG_RAX  ->	FB REXB=0 value=0x0 	FB RM=0 value=0x0*/ {0,0},
2682 /*h(67)=1 OUTREG=XED_REG_RCX  ->	FB REXB=0 value=0x0 	FB RM=1 value=0x1*/ {0,1},
2683 /*h(68)=2 OUTREG=XED_REG_RDX  ->	FB REXB=0 value=0x0 	FB RM=2 value=0x2*/ {0,2},
2684 /*h(69)=3 OUTREG=XED_REG_RBX  ->	FB REXB=0 value=0x0 	FB RM=3 value=0x3*/ {0,3},
2685 /*h(70)=4 OUTREG=XED_REG_RSP  ->	FB REXB=0 value=0x0 	FB RM=4 value=0x4*/ {0,4},
2686 /*h(71)=5 OUTREG=XED_REG_RBP  ->	FB REXB=0 value=0x0 	FB RM=5 value=0x5*/ {0,5},
2687 /*h(72)=6 OUTREG=XED_REG_RSI  ->	FB REXB=0 value=0x0 	FB RM=6 value=0x6*/ {0,6},
2688 /*h(73)=7 OUTREG=XED_REG_RDI  ->	FB REXB=0 value=0x0 	FB RM=7 value=0x7*/ {0,7},
2689 /*h(74)=8 OUTREG=XED_REG_R8  ->	FB REXB=1 value=0x1 	FB RM=0 value=0x0*/ {1,0},
2690 /*h(75)=9 OUTREG=XED_REG_R9  ->	FB REXB=1 value=0x1 	FB RM=1 value=0x1*/ {1,1},
2691 /*h(76)=10 OUTREG=XED_REG_R10  ->	FB REXB=1 value=0x1 	FB RM=2 value=0x2*/ {1,2},
2692 /*h(77)=11 OUTREG=XED_REG_R11  ->	FB REXB=1 value=0x1 	FB RM=3 value=0x3*/ {1,3},
2693 /*h(78)=12 OUTREG=XED_REG_R12  ->	FB REXB=1 value=0x1 	FB RM=4 value=0x4*/ {1,4},
2694 /*h(79)=13 OUTREG=XED_REG_R13  ->	FB REXB=1 value=0x1 	FB RM=5 value=0x5*/ {1,5},
2695 /*h(80)=14 OUTREG=XED_REG_R14  ->	FB REXB=1 value=0x1 	FB RM=6 value=0x6*/ {1,6},
2696 /*h(81)=15 OUTREG=XED_REG_R15  ->	FB REXB=1 value=0x1 	FB RM=7 value=0x7*/ {1,7}
2697 };
2698 xed_uint64_t key = 0;
2699 xed_uint64_t hidx = 0;
2700 xed3_operand_set_outreg(xes,arg_reg);
2701 key = xed_enc_lu_OUTREG(xes);
2702 hidx = key - 66;
2703 if(hidx <= 15) {
2704     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
2705     xed3_operand_set_rm(xes,lu_table[hidx].rm);
2706     return 1;
2707 }
2708 else{
2709     return 0;
2710 }
2711 }
xed_encode_ntluf_XMM_R(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2712 xed_uint32_t xed_encode_ntluf_XMM_R(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2713 {
2714 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2715 static const lu_entry_t lu_table[3] = {
2716 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_XMM_R_32},
2717 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_XMM_R_32},
2718 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_XMM_R_64}
2719 };
2720 xed_uint64_t key = 0;
2721 xed_uint64_t hidx = 0;
2722 xed_uint64_t res = 1;
2723 xed3_operand_set_outreg(xes,arg_reg);
2724 key = xed_enc_lu_MODE(xes);
2725 hidx = key - 0;
2726 if(hidx <= 2) {
2727     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2728     return res;
2729     return 1;
2730 }
2731 else{
2732     return 0;
2733 }
2734 }
xed_encode_ntluf_GPR64_SB(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2735 xed_uint32_t xed_encode_ntluf_GPR64_SB(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2736 {
2737 typedef struct { xed_int8_t rexb ;xed_int8_t srm;} lu_entry_t;
2738 static const lu_entry_t lu_table[16] = {
2739 /*h(66)=0 OUTREG=XED_REG_RAX  ->	FB REXB=0 value=0x0 	FB SRM=0 value=0x0*/ {0,0},
2740 /*h(67)=1 OUTREG=XED_REG_RCX  ->	FB REXB=0 value=0x0 	FB SRM=1 value=0x1*/ {0,1},
2741 /*h(68)=2 OUTREG=XED_REG_RDX  ->	FB REXB=0 value=0x0 	FB SRM=2 value=0x2*/ {0,2},
2742 /*h(69)=3 OUTREG=XED_REG_RBX  ->	FB REXB=0 value=0x0 	FB SRM=3 value=0x3*/ {0,3},
2743 /*h(70)=4 OUTREG=XED_REG_RSP  ->	FB REXB=0 value=0x0 	FB SRM=4 value=0x4*/ {0,4},
2744 /*h(71)=5 OUTREG=XED_REG_RBP  ->	FB REXB=0 value=0x0 	FB SRM=5 value=0x5*/ {0,5},
2745 /*h(72)=6 OUTREG=XED_REG_RSI  ->	FB REXB=0 value=0x0 	FB SRM=6 value=0x6*/ {0,6},
2746 /*h(73)=7 OUTREG=XED_REG_RDI  ->	FB REXB=0 value=0x0 	FB SRM=7 value=0x7*/ {0,7},
2747 /*h(74)=8 OUTREG=XED_REG_R8  ->	FB REXB=1 value=0x1 	FB SRM=0 value=0x0*/ {1,0},
2748 /*h(75)=9 OUTREG=XED_REG_R9  ->	FB REXB=1 value=0x1 	FB SRM=1 value=0x1*/ {1,1},
2749 /*h(76)=10 OUTREG=XED_REG_R10  ->	FB REXB=1 value=0x1 	FB SRM=2 value=0x2*/ {1,2},
2750 /*h(77)=11 OUTREG=XED_REG_R11  ->	FB REXB=1 value=0x1 	FB SRM=3 value=0x3*/ {1,3},
2751 /*h(78)=12 OUTREG=XED_REG_R12  ->	FB REXB=1 value=0x1 	FB SRM=4 value=0x4*/ {1,4},
2752 /*h(79)=13 OUTREG=XED_REG_R13  ->	FB REXB=1 value=0x1 	FB SRM=5 value=0x5*/ {1,5},
2753 /*h(80)=14 OUTREG=XED_REG_R14  ->	FB REXB=1 value=0x1 	FB SRM=6 value=0x6*/ {1,6},
2754 /*h(81)=15 OUTREG=XED_REG_R15  ->	FB REXB=1 value=0x1 	FB SRM=7 value=0x7*/ {1,7}
2755 };
2756 xed_uint64_t key = 0;
2757 xed_uint64_t hidx = 0;
2758 xed3_operand_set_outreg(xes,arg_reg);
2759 key = xed_enc_lu_OUTREG(xes);
2760 hidx = key - 66;
2761 if(hidx <= 15) {
2762     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
2763     xed3_operand_set_srm(xes,lu_table[hidx].srm);
2764     return 1;
2765 }
2766 else{
2767     return 0;
2768 }
2769 }
xed_encode_ntluf_GPRy_B(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2770 xed_uint32_t xed_encode_ntluf_GPRy_B(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2771 {
2772 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2773 static const lu_entry_t lu_table[3] = {
2774 /*h(1)=0 EOSZ=1  ->	ntluf*/ {xed_encode_ntluf_GPR32_B},
2775 /*h(2)=1 EOSZ=2  ->	ntluf*/ {xed_encode_ntluf_GPR32_B},
2776 /*h(3)=2 EOSZ=3  ->	ntluf*/ {xed_encode_ntluf_GPR64_B}
2777 };
2778 xed_uint64_t key = 0;
2779 xed_uint64_t hidx = 0;
2780 xed_uint64_t res = 1;
2781 xed3_operand_set_outreg(xes,arg_reg);
2782 key = xed_enc_lu_EOSZ(xes);
2783 hidx = key - 1;
2784 if(hidx <= 2) {
2785     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2786     return res;
2787     return 1;
2788 }
2789 else{
2790     return 0;
2791 }
2792 }
xed_encode_ntluf_MASK_N64(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2793 xed_uint32_t xed_encode_ntluf_MASK_N64(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2794 {
2795 typedef struct { xed_int8_t vexdest210 ;xed_int8_t vexdest3;} lu_entry_t;
2796 static const lu_entry_t lu_table[8] = {
2797 /*h(106)=0 OUTREG=XED_REG_K0  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=7 value=0x7*/ {7,1},
2798 /*h(107)=1 OUTREG=XED_REG_K1  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=6 value=0x6*/ {6,1},
2799 /*h(108)=2 OUTREG=XED_REG_K2  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=5 value=0x5*/ {5,1},
2800 /*h(109)=3 OUTREG=XED_REG_K3  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=4 value=0x4*/ {4,1},
2801 /*h(110)=4 OUTREG=XED_REG_K4  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=3 value=0x3*/ {3,1},
2802 /*h(111)=5 OUTREG=XED_REG_K5  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=2 value=0x2*/ {2,1},
2803 /*h(112)=6 OUTREG=XED_REG_K6  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=1 value=0x1*/ {1,1},
2804 /*h(113)=7 OUTREG=XED_REG_K7  ->	FB VEXDEST3=1 value=0x1 	FB VEXDEST210=0 value=0x0*/ {0,1}
2805 };
2806 xed_uint64_t key = 0;
2807 xed_uint64_t hidx = 0;
2808 xed3_operand_set_outreg(xes,arg_reg);
2809 key = xed_enc_lu_OUTREG(xes);
2810 hidx = key - 106;
2811 if(hidx <= 7) {
2812     xed3_operand_set_vexdest210(xes,lu_table[hidx].vexdest210);
2813     xed3_operand_set_vexdest3(xes,lu_table[hidx].vexdest3);
2814     return 1;
2815 }
2816 else{
2817     return 0;
2818 }
2819 }
xed_encode_ntluf_Ar10(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2820 xed_uint32_t xed_encode_ntluf_Ar10(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2821 {
2822 typedef struct {xed_uint32_t key; } lu_entry_t;
2823 static const lu_entry_t lu_table[5] = {
2824 /*empty slot1 */ {0},
2825 /*h(177)=1 OUTREG=XED_REG_R10W EASZ=1  ->	nothing*/ {177, },
2826 /*h(242)=2 OUTREG=XED_REG_R10D EASZ=2  ->	nothing*/ {242, },
2827 /*h(307)=3 OUTREG=XED_REG_R10 EASZ=3  ->	nothing*/ {307, },
2828 /*empty slot1 */ {0}
2829 };
2830 xed_union64_t t, u;
2831 xed_uint64_t key = 0;
2832 xed_uint64_t hidx = 0;
2833 xed3_operand_set_outreg(xes,arg_reg);
2834 key = xed_enc_lu_EASZ_OUTREG(xes);
2835 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
2836 if(lu_table[hidx].key == key) {
2837     return 1;
2838 }
2839 else{
2840     return 0;
2841 }
2842 }
xed_encode_ntluf_VGPR32_B_32(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2843 xed_uint32_t xed_encode_ntluf_VGPR32_B_32(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2844 {
2845 typedef struct { xed_int8_t rm;} lu_entry_t;
2846 static const lu_entry_t lu_table[8] = {
2847 /*h(50)=0 OUTREG=XED_REG_EAX  ->	FB RM=0 value=0x0*/ {0},
2848 /*h(51)=1 OUTREG=XED_REG_ECX  ->	FB RM=1 value=0x1*/ {1},
2849 /*h(52)=2 OUTREG=XED_REG_EDX  ->	FB RM=2 value=0x2*/ {2},
2850 /*h(53)=3 OUTREG=XED_REG_EBX  ->	FB RM=3 value=0x3*/ {3},
2851 /*h(54)=4 OUTREG=XED_REG_ESP  ->	FB RM=4 value=0x4*/ {4},
2852 /*h(55)=5 OUTREG=XED_REG_EBP  ->	FB RM=5 value=0x5*/ {5},
2853 /*h(56)=6 OUTREG=XED_REG_ESI  ->	FB RM=6 value=0x6*/ {6},
2854 /*h(57)=7 OUTREG=XED_REG_EDI  ->	FB RM=7 value=0x7*/ {7}
2855 };
2856 xed_uint64_t key = 0;
2857 xed_uint64_t hidx = 0;
2858 xed3_operand_set_outreg(xes,arg_reg);
2859 key = xed_enc_lu_OUTREG(xes);
2860 hidx = key - 50;
2861 if(hidx <= 7) {
2862     xed3_operand_set_rm(xes,lu_table[hidx].rm);
2863     return 1;
2864 }
2865 else{
2866     return 0;
2867 }
2868 }
xed_encode_ntluf_GPR16e(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2869 xed_uint32_t xed_encode_ntluf_GPR16e(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2870 {
2871 xed_uint64_t key = 0;
2872 xed_uint64_t hidx = 0;
2873 xed3_operand_set_outreg(xes,arg_reg);
2874 key = xed_enc_lu_OUTREG(xes);
2875 hidx = key - 34;
2876 if(hidx <= 7) {
2877     return 1;
2878 }
2879 else{
2880     return 0;
2881 }
2882 }
xed_encode_ntluf_GPRv_SB(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2883 xed_uint32_t xed_encode_ntluf_GPRv_SB(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2884 {
2885 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2886 static const lu_entry_t lu_table[3] = {
2887 /*h(1)=0 EOSZ=1  ->	ntluf*/ {xed_encode_ntluf_GPR16_SB},
2888 /*h(2)=1 EOSZ=2  ->	ntluf*/ {xed_encode_ntluf_GPR32_SB},
2889 /*h(3)=2 EOSZ=3  ->	ntluf*/ {xed_encode_ntluf_GPR64_SB}
2890 };
2891 xed_uint64_t key = 0;
2892 xed_uint64_t hidx = 0;
2893 xed_uint64_t res = 1;
2894 xed3_operand_set_outreg(xes,arg_reg);
2895 key = xed_enc_lu_EOSZ(xes);
2896 hidx = key - 1;
2897 if(hidx <= 2) {
2898     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2899     return res;
2900     return 1;
2901 }
2902 else{
2903     return 0;
2904 }
2905 }
xed_encode_ntluf_FINAL_DSEG1(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2906 xed_uint32_t xed_encode_ntluf_FINAL_DSEG1(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2907 {
2908 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2909 static const lu_entry_t lu_table[3] = {
2910 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_FINAL_DSEG1_NOT64},
2911 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_FINAL_DSEG1_NOT64},
2912 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_FINAL_DSEG1_MODE64}
2913 };
2914 xed_uint64_t key = 0;
2915 xed_uint64_t hidx = 0;
2916 xed_uint64_t res = 1;
2917 xed3_operand_set_outreg(xes,arg_reg);
2918 key = xed_enc_lu_MODE(xes);
2919 hidx = key - 0;
2920 if(hidx <= 2) {
2921     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2922     return res;
2923     return 1;
2924 }
2925 else{
2926     return 0;
2927 }
2928 }
xed_encode_ntluf_GPR16_SB(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2929 xed_uint32_t xed_encode_ntluf_GPR16_SB(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2930 {
2931 typedef struct { xed_int8_t rexb ;xed_int8_t srm;} lu_entry_t;
2932 static const lu_entry_t lu_table[16] = {
2933 /*h(34)=0 OUTREG=XED_REG_AX  ->	FB REXB=0 value=0x0 	FB SRM=0 value=0x0*/ {0,0},
2934 /*h(35)=1 OUTREG=XED_REG_CX  ->	FB REXB=0 value=0x0 	FB SRM=1 value=0x1*/ {0,1},
2935 /*h(36)=2 OUTREG=XED_REG_DX  ->	FB REXB=0 value=0x0 	FB SRM=2 value=0x2*/ {0,2},
2936 /*h(37)=3 OUTREG=XED_REG_BX  ->	FB REXB=0 value=0x0 	FB SRM=3 value=0x3*/ {0,3},
2937 /*h(38)=4 OUTREG=XED_REG_SP  ->	FB REXB=0 value=0x0 	FB SRM=4 value=0x4*/ {0,4},
2938 /*h(39)=5 OUTREG=XED_REG_BP  ->	FB REXB=0 value=0x0 	FB SRM=5 value=0x5*/ {0,5},
2939 /*h(40)=6 OUTREG=XED_REG_SI  ->	FB REXB=0 value=0x0 	FB SRM=6 value=0x6*/ {0,6},
2940 /*h(41)=7 OUTREG=XED_REG_DI  ->	FB REXB=0 value=0x0 	FB SRM=7 value=0x7*/ {0,7},
2941 /*h(42)=8 OUTREG=XED_REG_R8W  ->	FB REXB=1 value=0x1 	FB SRM=0 value=0x0*/ {1,0},
2942 /*h(43)=9 OUTREG=XED_REG_R9W  ->	FB REXB=1 value=0x1 	FB SRM=1 value=0x1*/ {1,1},
2943 /*h(44)=10 OUTREG=XED_REG_R10W  ->	FB REXB=1 value=0x1 	FB SRM=2 value=0x2*/ {1,2},
2944 /*h(45)=11 OUTREG=XED_REG_R11W  ->	FB REXB=1 value=0x1 	FB SRM=3 value=0x3*/ {1,3},
2945 /*h(46)=12 OUTREG=XED_REG_R12W  ->	FB REXB=1 value=0x1 	FB SRM=4 value=0x4*/ {1,4},
2946 /*h(47)=13 OUTREG=XED_REG_R13W  ->	FB REXB=1 value=0x1 	FB SRM=5 value=0x5*/ {1,5},
2947 /*h(48)=14 OUTREG=XED_REG_R14W  ->	FB REXB=1 value=0x1 	FB SRM=6 value=0x6*/ {1,6},
2948 /*h(49)=15 OUTREG=XED_REG_R15W  ->	FB REXB=1 value=0x1 	FB SRM=7 value=0x7*/ {1,7}
2949 };
2950 xed_uint64_t key = 0;
2951 xed_uint64_t hidx = 0;
2952 xed3_operand_set_outreg(xes,arg_reg);
2953 key = xed_enc_lu_OUTREG(xes);
2954 hidx = key - 34;
2955 if(hidx <= 15) {
2956     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
2957     xed3_operand_set_srm(xes,lu_table[hidx].srm);
2958     return 1;
2959 }
2960 else{
2961     return 0;
2962 }
2963 }
xed_encode_ntluf_XMM_R3(xed_encoder_request_t * xes,xed_reg_enum_t arg_reg)2964 xed_uint32_t xed_encode_ntluf_XMM_R3(xed_encoder_request_t* xes, xed_reg_enum_t arg_reg)
2965 {
2966 typedef struct { xed_ntluf_func_ptr_t ntlufptr0;} lu_entry_t;
2967 static const lu_entry_t lu_table[3] = {
2968 /*h(0)=0 MODE=0  ->	ntluf*/ {xed_encode_ntluf_XMM_R3_32},
2969 /*h(1)=1 MODE=1  ->	ntluf*/ {xed_encode_ntluf_XMM_R3_32},
2970 /*h(2)=2 MODE=2  ->	ntluf*/ {xed_encode_ntluf_XMM_R3_64}
2971 };
2972 xed_uint64_t key = 0;
2973 xed_uint64_t hidx = 0;
2974 xed_uint64_t res = 1;
2975 xed3_operand_set_outreg(xes,arg_reg);
2976 key = xed_enc_lu_MODE(xes);
2977 hidx = key - 0;
2978 if(hidx <= 2) {
2979     if(lu_table[hidx].ntlufptr0 != 0) res=(*lu_table[hidx].ntlufptr0)(xes,arg_reg);
2980     return res;
2981     return 1;
2982 }
2983 else{
2984     return 0;
2985 }
2986 }
2987