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