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