Merge pull request #218 from saper/build-fixes
[envytools.git] / envydis / gm107.c
blob8122adec34e953b4fb6e89989757dedfc49375a8
1 /*
2 * Copyright 2014 Red Hat Inc.
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
22 * Authors: Ben Skeggs <bskeggs@redhat.com>
25 #include "dis-intern.h"
27 #define F_SM50 1
28 #define F_SM52 2
29 #define F_SM60 4
31 #define ZN(b,n) atomtab_a, atomtab_d, (struct insn[]) { \
32 { 0ull << (b), 1ull << (b), N(#n) }, \
33 { 1ull << (b), 1ull << (b) }, \
34 { 0, 0, OOPS } \
37 #define ON(b,n) atomtab_a, atomtab_d, (struct insn[]) { \
38 { 0ull << (b), 1ull << (b) }, \
39 { 1ull << (b), 1ull << (b), N(#n) }, \
40 { 0, 0, OOPS } \
43 #define ZNV(b,n,v) atomtab_a, atomtab_d, (struct insn[]) { \
44 { 0ull << (b), 1ull << (b), N(#n), .fmask = (v) }, \
45 { 1ull << (b), 1ull << (b) }, \
46 { 0, 0, OOPS }, \
49 #define ONV(b,n,v) atomtab_a, atomtab_d, (struct insn[]) { \
50 { 0ull << (b), 1ull << (b) }, \
51 { 1ull << (b), 1ull << (b), N(#n), .fmask = (v) }, \
52 { 0, 0, OOPS }, \
55 /* sched control codes
56 * (source: https://github.com/NervanaSystems/maxas/wiki/Control-Codes) */
57 #define ST_POS(n) (n * 21 + 0) /* stall counts */
58 #define YL_POS(n) (n * 21 + 4) /* yield hint flag */
59 #define WR_POS(n) (n * 21 + 5) /* write dep bar */
60 #define RD_POS(n) (n * 21 + 8) /* read dep bar */
61 #define WT_POS(n) (n * 21 + 11) /* wait dep bar */
62 #define RU_POS(n) (n * 21 + 17) /* reuse flag */
64 #define ST(n) static struct insn tabst##n[] = { \
65 { 0x0000000000000000ull, 0x0000000000000000ull, N("st"), \
66 atomrimm, (struct bitfield[]) { { ST_POS(n), 4 } } }, \
67 { 0, 0, OOPS }, \
70 #define YL(n) static struct insn tabyl##n[] = { \
71 { 0x0000000000000000ull, 1ULL << YL_POS(n) }, \
72 { 1ULL << YL_POS(n) , 1ULL << YL_POS(n), N("yl") }, \
73 { 0, 0, OOPS }, \
76 #define WR(n) static struct insn tabwr##n[] = { \
77 { 7ULL << WR_POS(n) , 7ULL << WR_POS(n) }, \
78 { 0x0000000000000000ull, 0x0000000000000000ull, N("wr"), \
79 atomrimm, (struct bitfield[]) { { WR_POS(n), 3 } } }, \
80 { 0, 0, OOPS }, \
83 #define RD(n) static struct insn tabrd##n[] = { \
84 { 7ULL << RD_POS(n) , 7ULL << RD_POS(n) }, \
85 { 0x0000000000000000ull, 0x0000000000000000ull, N("rd"), \
86 atomrimm, (struct bitfield[]) { { RD_POS(n), 3 } } }, \
87 { 0, 0, OOPS }, \
90 #define WT(n) static struct insn tabwt##n[] = { \
91 { 0x0000000000000000ull, 63ULL << WT_POS(n) }, \
92 { 0x0000000000000000ull, 0x0000000000000000ull, N("wt"), \
93 atomrimm, (struct bitfield[]) { { WT_POS(n), 6 } } }, \
94 { 0, 0, OOPS }, \
97 #define RU(n) static struct insn tabru##n[] = { \
98 { 0x0000000000000000ull, 15ULL << RU_POS(n) }, \
99 { 0x0000000000000000ull, 0x0000000000000000ull, N("ru"), \
100 atomrimm, (struct bitfield[]) { { RU_POS(n), 4 } } }, \
101 { 0, 0, OOPS }, \
104 #define SCHED(n) \
105 ST(n); YL(n); WR(n); RD(n); WT(n); RU(n); \
106 static struct insn tabsched##n[] = { \
107 0, 0, SESTART, T(st##n), T(yl##n), T(wr##n), T(rd##n), T(wt##n), T(ru##n), SEEND \
110 SCHED(0);
111 SCHED(1);
112 SCHED(2);
114 /* register fields */
115 static struct sreg reg_sr[] = {
116 { 255, 0, SR_ZERO },
117 { -1 }
120 static struct sreg sys_sr[] = {
121 { 0x00, "laneid" },
122 { 0x01, "clock" },
123 { 0x02, "virtcfg" }, // bits 8-14: nwarpid, bits 20-28: nsmid
124 { 0x03, "virtid" }, // bits 8-13: warpid, bits 20-28: smid
125 { 0x04, "pm0" },
126 { 0x05, "pm1" },
127 { 0x06, "pm2" },
128 { 0x07, "pm3" },
129 { 0x08, "pm4" },
130 { 0x09, "pm5" },
131 { 0x0a, "pm6" },
132 { 0x0b, "pm7" },
133 { 0x0f, "ordering_ticket", .fmask = F_SM60 },
134 { 0x10, "prim_type" },
135 { 0x11, "invocation_id" },
136 { 0x12, "y_direction" },
137 { 0x13, "thread_kill" },
138 { 0x14, "shader_type" },
139 { 0x15, "directbewriteaddresslow" },
140 { 0x16, "directbewriteaddresshigh" },
141 { 0x17, "directbewriteenabled" },
142 { 0x18, "machine_id_0" },
143 { 0x19, "machine_id_1" },
144 { 0x1a, "machine_id_2" },
145 { 0x1b, "machine_id_3" },
146 { 0x1c, "affinity" },
147 { 0x1d, "invocation_info" },
148 { 0x1e, "wscalefactor_xy" },
149 { 0x1f, "wscalefactor_z" },
150 { 0x20, "tid" },
151 { 0x21, "tidx" },
152 { 0x22, "tidy" },
153 { 0x23, "tidz" },
154 { 0x24, "cta_param" },
155 { 0x25, "ctaidx" },
156 { 0x26, "ctaidy" },
157 { 0x27, "ctaidz" },
158 { 0x28, "ntid" },
159 { 0x29, "cirqueueincrminusone" },
160 { 0x2a, "nlatc" },
161 { 0x2c, "sm_spa_version", .fmask = F_SM60 },
162 { 0x2d, "multipassshaderinfo", .fmask = F_SM60 },
163 { 0x2e, "lwinhi", .fmask = F_SM60 },
164 { 0x2f, "swinhi", .fmask = F_SM60 },
165 { 0x30, "swinlo" },
166 { 0x31, "swinsz" },
167 { 0x32, "smemsz" },
168 { 0x33, "smembanks" },
169 { 0x34, "lwinlo" },
170 { 0x35, "lwinsz" },
171 { 0x36, "lmemlosz" },
172 { 0x37, "lmemhioff" },
173 { 0x38, "eqmask" },
174 { 0x39, "ltmask" },
175 { 0x3a, "lemask" },
176 { 0x3b, "gtmask" },
177 { 0x3c, "gemask" },
178 { 0x3d, "regalloc" },
179 { 0x3e, "ctxaddr", .fmask = F_SM50 },
180 { 0x3e, "barrieralloc", .fmask = F_SM60 },
181 { 0x40, "globalerrorstatus" },
182 { 0x42, "warperrorstatus" },
183 { 0x43, "warperrorstatusclear" },
184 { 0x48, "pm_hi0" },
185 { 0x49, "pm_hi1" },
186 { 0x4a, "pm_hi2" },
187 { 0x4b, "pm_hi3" },
188 { 0x4c, "pm_hi4" },
189 { 0x4d, "pm_hi5" },
190 { 0x4e, "pm_hi6" },
191 { 0x4f, "pm_hi7" },
192 { 0x50, "clocklo" },
193 { 0x51, "clockhi" },
194 { 0x52, "globaltimerlo" },
195 { 0x53, "globaltimerhi" },
196 { 0x60, "hwtaskid" },
197 { 0x61, "circularqueueentryindex" },
198 { 0x62, "circularqueueentryaddresslow" },
199 { 0x63, "circularqueueentryaddresshigh" },
200 { -1 }
203 static struct bitfield reg00_bf = { 0, 8 };
204 static struct bitfield reg08_bf = { 8, 8 };
205 static struct bitfield reg20_bf = { 20, 8 };
206 static struct bitfield reg28_bf = { 28, 8 };
207 static struct bitfield reg39_bf = { 39, 8 };
209 static struct reg reg00_r = { &reg00_bf, "r", .specials = reg_sr };
210 static struct reg reg08_r = { &reg08_bf, "r", .specials = reg_sr };
211 static struct reg reg20_r = { &reg20_bf, "r", .specials = reg_sr };
212 static struct reg reg28_r = { &reg28_bf, "r", .specials = reg_sr };
213 static struct reg reg39_r = { &reg39_bf, "r", .specials = reg_sr };
214 static struct reg sys20_r = { &reg20_bf, "s", .specials = sys_sr };
216 #define REG_00 atomreg, &reg00_r
217 #define REG_08 atomreg, &reg08_r
218 #define REG_20 atomreg, &reg20_r
219 #define REG_28 atomreg, &reg28_r
220 #define REG_39 atomreg, &reg39_r
221 #define SYS_20 atomreg, &sys20_r
223 /* immediate fields */
224 static struct rbitfield u0326_bf = { { 26, 3 }, RBF_UNSIGNED };
225 static struct rbitfield u0412_bf = { { 12, 4 }, RBF_UNSIGNED };
226 static struct rbitfield u0428_bf = { { 28, 4 }, RBF_UNSIGNED };
227 static struct rbitfield u0431_bf = { { 31, 4 }, RBF_UNSIGNED };
228 static struct rbitfield u0439_bf = { { 39, 4 }, RBF_UNSIGNED };
229 static struct rbitfield u0520_bf = { { 20, 5 }, RBF_UNSIGNED };
230 static struct rbitfield u0528_bf = { { 28, 5 }, RBF_UNSIGNED };
231 static struct rbitfield u0539_bf = { { 39, 5 }, RBF_UNSIGNED };
232 static struct rbitfield u0551_bf = { { 51, 5 }, RBF_UNSIGNED };
233 static struct rbitfield u0553_bf = { { 53, 5 }, RBF_UNSIGNED };
234 static struct rbitfield u0620_bf = { { 20, 6 }, RBF_UNSIGNED };
235 static struct rbitfield u0600_bf = { { 0, 6 }, RBF_UNSIGNED };
236 static struct rbitfield u0808_bf = { { 8, 8 }, RBF_UNSIGNED };
237 static struct rbitfield u0820_bf = { { 20, 8 }, RBF_UNSIGNED };
238 static struct rbitfield u0828_bf = { { 28, 8 }, RBF_UNSIGNED };
239 static struct rbitfield u0848_bf = { { 48, 8 }, RBF_UNSIGNED };
240 static struct rbitfield u0920_bf = { { 20, 9 }, RBF_UNSIGNED, .shr = 6 };
241 static struct rbitfield u0930_bf = { { 30, 9 }, RBF_UNSIGNED, .shr = 6 };
242 static struct rbitfield u1220_bf = { { 20, 12 }, RBF_UNSIGNED };
243 static struct rbitfield u1334_bf = { { 34, 13 }, RBF_UNSIGNED };
244 static struct rbitfield u1336_bf = { { 36, 13 }, RBF_UNSIGNED };
245 static struct rbitfield u1620_bf = { { 20, 16 }, RBF_UNSIGNED };
246 static struct rbitfield u1636_bf = { { 36, 16 }, RBF_UNSIGNED };
247 static struct rbitfield u2020_bf = { { 20, 20 }, RBF_UNSIGNED };
248 static struct rbitfield u2420_bf = { { 20, 24 }, RBF_UNSIGNED };
249 static struct rbitfield u3220_bf = { { 20, 32 }, RBF_UNSIGNED };
250 static struct rbitfield u3613_bf = { { 36, 13 }, RBF_UNSIGNED };
251 static struct rbitfield s1120_bf = { { 20, 11 }, RBF_SIGNED };
252 static struct rbitfield s1620_bf = { { 20, 16 }, RBF_SIGNED };
253 static struct rbitfield s2020_bf = { { 20, 19, 56, 1 }, RBF_SIGNED };
254 static struct rbitfield s2420_bf = { { 20, 24 }, RBF_SIGNED };
255 static struct rbitfield s3220_bf = { { 20, 32 }, RBF_SIGNED };
256 static struct rbitfield f1920_bf = { { 20, 19, 56, 1 }, RBF_UNSIGNED, .shr = 12 };
257 static struct rbitfield d1920_bf = { { 20, 19, 56, 1 }, RBF_UNSIGNED, .shr = 44 };
258 static struct rbitfield o1420_bf = { { 20, 14 }, RBF_SIGNED, .shr = 2 };
260 #define U03_26 atomrimm, &u0326_bf
261 #define U04_12 atomrimm, &u0412_bf
262 #define U04_28 atomrimm, &u0428_bf
263 #define U04_31 atomrimm, &u0431_bf
264 #define U04_39 atomrimm, &u0439_bf
265 #define U05_20 atomrimm, &u0520_bf
266 #define U05_28 atomrimm, &u0528_bf
267 #define U05_39 atomrimm, &u0539_bf
268 #define U05_51 atomrimm, &u0551_bf
269 #define U05_53 atomrimm, &u0553_bf
270 #define U06_20 atomrimm, &u0620_bf
271 #define U06_00 atomrimm, &u0600_bf
272 #define U08_08 atomrimm, &u0808_bf
273 #define U08_20 atomrimm, &u0820_bf
274 #define U08_28 atomrimm, &u0828_bf
275 #define U08_48 atomrimm, &u0848_bf
276 #define U09_20 atomrimm, &u0920_bf
277 #define U09_30 atomrimm, &u0930_bf
278 #define U12_20 atomrimm, &u1220_bf
279 #define U13_34 atomrimm, &u1334_bf
280 #define U13_36 atomrimm, &u1336_bf
281 #define U16_20 atomrimm, &u1620_bf
282 #define U16_36 atomrimm, &u1636_bf
283 #define U20_20 atomrimm, &u2020_bf
284 #define U24_20 atomrimm, &u2420_bf
285 #define U32_20 atomrimm, &u3220_bf
286 #define U36_13 atomrimm, &u3613_bf
287 #define S11_20 atomrimm, &s1120_bf
288 #define S16_20 atomrimm, &u1620_bf
289 #define S20_20 atomrimm, &s2020_bf
290 #define S24_20 atomrimm, &s2420_bf
291 #define S32_20 atomrimm, &s3220_bf
292 #define F20_20 atomrimm, &f1920_bf
293 #define F32_20 atomrimm, &u3220_bf
294 #define D20_20 atomrimm, &d1920_bf
296 /* branch targets */
297 static struct rbitfield btarg_bf = { { 20, 24 }, RBF_SIGNED, .pcrel = 1, .addend = 8 };
299 #define BTARG atomctarg, &btarg_bf
301 /* constbuf selection fields */
302 static struct bitfield cmem34_idx = { 34, 5 };
303 static struct bitfield cmem36_idx = { 36, 5 };
305 static struct mem cmem34rzo1420_m = { "c", &cmem34_idx, 0, &o1420_bf };
306 static struct mem cmem36rzs1620_m = { "c", &cmem36_idx, 0, &s1620_bf };
307 static struct mem cmem3608s1620_m = { "c", &cmem36_idx, &reg08_r, &s1620_bf };
309 #define C34_RZ_O14_20 atommem, &cmem34rzo1420_m
310 #define C36_RZ_S16_20 atommem, &cmem36rzs1620_m
311 #define C36_08_S16_20 atommem, &cmem3608s1620_m
313 /* memory fields */
314 static struct rbitfield amem20_imm = { { 20, 10 }, RBF_UNSIGNED };
315 static struct rbitfield amem28_imm = { { 28, 10 }, RBF_UNSIGNED };
316 static struct rbitfield smem_imm = { { 20, 24 }, RBF_SIGNED };
317 static struct rbitfield smem20_imm = { { 20, 20 }, RBF_SIGNED };
318 static struct rbitfield pldmem_imm = { { 20, 8 }, RBF_SIGNED };
319 static struct rbitfield cctlmem_imm = { { 22, 30 }, RBF_SIGNED, .shr = 2 };
320 static struct rbitfield cctllmem_imm = { { 22, 22 }, RBF_SIGNED, .shr = 2 };
321 static struct rbitfield atommem0_imm = { { 28, 20 }, RBF_SIGNED };
322 static struct rbitfield atommem1_imm = { { 30, 22 }, RBF_SIGNED, .shr = 2 };
323 static struct rbitfield gmem_imm = { { 20, 32 }, RBF_SIGNED };
325 static struct mem amem_m = { "a", 0, &reg08_r, &amem20_imm };
326 static struct mem amem28_m = { "a", 0, &reg08_r, &amem28_imm };
327 static struct mem amemidx_m = { "a", 0, &reg08_r, 0 };
328 static struct mem lmem_m = { "l", 0, &reg08_r, &smem_imm };
329 static struct mem smem_m = { "s", 0, &reg08_r, &smem_imm };
330 static struct mem gmem_m = { "g", 0, &reg08_r, &gmem_imm };
331 static struct mem ncgmem_m = { "ncg", 0, &reg08_r, &smem_imm };
332 static struct mem ncgmem20_m = { "ncg", 0, &reg08_r, &smem20_imm };
334 static struct mem cctlmem_m = { "g", 0, &reg08_r, &cctlmem_imm };
335 static struct mem cctllmem_m = { "l", 0, &reg08_r, &cctllmem_imm };
337 static struct mem pldmem_m = { "pix", 0, &reg08_r, &pldmem_imm };
338 static struct mem isberdmem_m = { "p", 0, &reg08_r };
339 static struct mem atommem0_m = { "g", 0, &reg08_r, &atommem0_imm };
340 static struct mem atommem1_m = { "s", 0, &reg08_r, &atommem1_imm };
341 static struct mem redmem0_m = { "g", 0, &reg08_r, &atommem0_imm };
342 static struct mem suredmem_m = { "g", 0, &reg08_r, 0 };
344 #define AMEM atommem, &amem_m
345 #define AMEM28 atommem, &amem28_m
346 #define AMEMIDX atommem, &amemidx_m
347 #define LMEM atommem, &lmem_m
348 #define SMEM atommem, &smem_m
349 #define GMEM atommem, &gmem_m
350 #define NCGMEM atommem, &ncgmem_m
351 #define NCGMEM_20 atommem, &ncgmem20_m
353 #define PLDMEM atommem, &pldmem_m
354 #define ISBERDMEM atommem, &isberdmem_m
355 #define CCTLMEM atommem, &cctlmem_m
356 #define CCTLLMEM atommem, &cctllmem_m
357 #define ATOMMEM0 atommem, &atommem0_m
358 #define ATOMMEM1 atommem, &atommem1_m
359 #define REDMEM0 atommem, &redmem0_m
360 #define SUREDMEM atommem, &suredmem_m
362 /* predicate fields */
363 static struct sreg pred_sr[] = {
364 { 7, 0, SR_ONE },
365 { -1 }
368 static struct bitfield pred00_bf = { 0, 3 };
369 static struct bitfield pred03_bf = { 3, 3 };
370 static struct bitfield pred12_bf = { 12, 3 };
371 static struct bitfield pred16_bf = { 16, 3 };
372 static struct bitfield pred29_bf = { 29, 3 };
373 static struct bitfield pred39_bf = { 39, 3 };
374 static struct bitfield pred44_bf = { 44, 3 };
375 static struct bitfield pred45_bf = { 45, 3 };
376 static struct bitfield pred47_bf = { 47, 3 };
377 static struct bitfield pred48_bf = { 48, 3 };
378 static struct bitfield pred58_bf = { 58, 3 };
380 static struct reg pred00_r = { &pred00_bf, "p", .specials = pred_sr };
381 static struct reg pred03_r = { &pred03_bf, "p", .specials = pred_sr };
382 static struct reg pred12_r = { &pred12_bf, "p", .specials = pred_sr };
383 static struct reg pred16_r = { &pred16_bf, "p", .specials = pred_sr };
384 static struct reg pred29_r = { &pred29_bf, "p", .specials = pred_sr };
385 static struct reg pred39_r = { &pred39_bf, "p", .specials = pred_sr };
386 static struct reg pred44_r = { &pred44_bf, "p", .specials = pred_sr };
387 static struct reg pred45_r = { &pred45_bf, "p", .specials = pred_sr };
388 static struct reg pred47_r = { &pred47_bf, "p", .specials = pred_sr };
389 static struct reg pred48_r = { &pred48_bf, "p", .specials = pred_sr };
390 static struct reg pred58_r = { &pred58_bf, "p", .specials = pred_sr };
392 #define PRED00 atomreg, &pred00_r
393 #define PRED03 atomreg, &pred03_r
394 #define PRED12 atomreg, &pred12_r
395 #define PRED16 atomreg, &pred16_r
396 #define PRED29 atomreg, &pred29_r
397 #define PRED39 atomreg, &pred39_r
398 #define PRED44 atomreg, &pred44_r
399 #define PRED45 atomreg, &pred45_r
400 #define PRED47 atomreg, &pred47_r
401 #define PRED48 atomreg, &pred48_r
402 #define PRED58 atomreg, &pred58_r
404 static struct insn tabpred12[] = { { 0, 0, ON(15, not), PRED12 }, };
405 static struct insn tabpred29[] = { { 0, 0, ON(32, not), PRED29 }, };
406 static struct insn tabpred39[] = { { 0, 0, ON(42, not), PRED39 }, };
407 static struct insn tabpred47[] = { { 0, 0, ON(50, not), PRED47 }, };
408 static struct insn tabpred[] = {
409 { 0x0000000000070000ull, 0x00000000000f0000ull },
410 { 0x00000000000f0000ull, 0x00000000000f0000ull, N("never") },
411 { 0, 0, ON(19, not), PRED16 }
414 static struct insn tabfbe0_0[] = {
415 { 0x0000008000000000ull, 0x0000018000000000ull, N("emit") },
416 { 0x0000010000000000ull, 0x0000018000000000ull, N("cut") },
417 { 0x0000018000000000ull, 0x0000018000000000ull, N("emit_then_cut") },
418 { 0, 0, OOPS },
421 static struct bitfield inv_pred41_bf = { 41, 3, .xorend = 7 };
422 static struct reg inv_pred41_r = { &inv_pred41_bf, "p", .specials = pred_sr };
424 #define INV_PRED41 atomreg, &inv_pred41_r
426 static struct insn tabf0f8_0[] = {
427 { 0x0000000000000000ull, 0x000000000000001full, N("f") },
428 { 0x0000000000000001ull, 0x000000000000001full, N("lt") },
429 { 0x0000000000000002ull, 0x000000000000001full, N("eq") },
430 { 0x0000000000000003ull, 0x000000000000001full, N("le") },
431 { 0x0000000000000004ull, 0x000000000000001full, N("gt") },
432 { 0x0000000000000005ull, 0x000000000000001full, N("ne") },
433 { 0x0000000000000006ull, 0x000000000000001full, N("ge") },
434 { 0x0000000000000007ull, 0x000000000000001full, N("num") },
435 { 0x0000000000000008ull, 0x000000000000001full, N("nan") },
436 { 0x0000000000000009ull, 0x000000000000001full, N("ltu") },
437 { 0x000000000000000aull, 0x000000000000001full, N("equ") },
438 { 0x000000000000000bull, 0x000000000000001full, N("leu") },
439 { 0x000000000000000cull, 0x000000000000001full, N("gtu") },
440 { 0x000000000000000dull, 0x000000000000001full, N("neu") },
441 { 0x000000000000000eull, 0x000000000000001full, N("geu") },
442 { 0x000000000000000full, 0x000000000000001full },
443 { 0x0000000000000010ull, 0x000000000000001full, N("off") },
444 { 0x0000000000000011ull, 0x000000000000001full, N("lo") },
445 { 0x0000000000000012ull, 0x000000000000001full, N("sff") },
446 { 0x0000000000000013ull, 0x000000000000001full, N("ls") },
447 { 0x0000000000000014ull, 0x000000000000001full, N("hi") },
448 { 0x0000000000000015ull, 0x000000000000001full, N("sft") },
449 { 0x0000000000000016ull, 0x000000000000001full, N("hs") },
450 { 0x0000000000000017ull, 0x000000000000001full, N("oft") },
451 { 0x0000000000000018ull, 0x000000000000001full, N("csm_ta") },
452 { 0x0000000000000019ull, 0x000000000000001full, N("csm_tr") },
453 { 0x000000000000001aull, 0x000000000000001full, N("csm_mx") },
454 { 0x000000000000001bull, 0x000000000000001full, N("fcsm_ta") },
455 { 0x000000000000001cull, 0x000000000000001full, N("fcsm_tr") },
456 { 0x000000000000001dull, 0x000000000000001full, N("fcsm_mx") },
457 { 0x000000000000001eull, 0x000000000000001full, N("rle") },
458 { 0x000000000000001full, 0x000000000000001full, N("rgt") },
459 { 0, 0, OOPS },
462 static struct insn tabf0f0_0[] = {
463 { 0x0000000000000000ull, 0x0000000020000000ull },
464 { 0x0000000020000000ull, 0x0000000020000000ull, N("le") },
465 { 0, 0, OOPS },
468 static struct insn tabf0c0_0[] = {
469 { 0x0000000000000000ull, 0x0000000300000000ull },
470 { 0x0000000100000000ull, 0x0000000300000000ull, N("result") },
471 { 0x0000000200000000ull, 0x0000000300000000ull, N("warp") },
472 { 0, 0, OOPS },
475 static struct insn tabeff0_0[] = {
476 { 0x0000000000000000ull, 0x0001800000000000ull, N("b32") },
477 { 0x0000800000000000ull, 0x0001800000000000ull, N("b64") },
478 { 0x0001000000000000ull, 0x0001800000000000ull, N("b96") },
479 { 0x0001800000000000ull, 0x0001800000000000ull, N("b128") },
480 { 0, 0, OOPS },
483 static struct insn tabefe8_0[] = {
484 { 0x0000000000000000ull, 0x0000000380000000ull },
485 { 0x0000000080000000ull, 0x0000000380000000ull, N("covmask") },
486 { 0x0000000100000000ull, 0x0000000380000000ull, N("covered") },
487 { 0x0000000180000000ull, 0x0000000380000000ull, N("offset") },
488 { 0x0000000200000000ull, 0x0000000380000000ull, N("centroid_offset") },
489 { 0x0000000280000000ull, 0x0000000380000000ull, N("my_index") },
490 { 0, 0, OOPS },
493 static struct insn tabefd0_0[] = {
494 { 0x0000000000000000ull, 0x0000000600000000ull },
495 { 0x0000000200000000ull, 0x0000000600000000ull, N("patch") },
496 { 0x0000000400000000ull, 0x0000000600000000ull, N("prim") },
497 { 0x0000000600000000ull, 0x0000000600000000ull, N("attr") },
498 { 0, 0, OOPS },
501 static struct insn tabefd0sz[] = {
502 { 0x0000000000000000ull, 0x0001800000000000ull },
503 { 0x0000800000000000ull, 0x0001800000000000ull, N("u16") },
504 { 0x0001000000000000ull, 0x0001800000000000ull, N("b32") },
505 { 0, 0, OOPS },
508 static struct insn tabef98_0[] = {
509 { 0x0000000000000000ull, 0x0000000000000300ull, N("cta") },
510 { 0x0000000000000100ull, 0x0000000000000300ull, N("gl") },
511 { 0x0000000000000200ull, 0x0000000000000300ull, N("sys") },
512 { 0x0000000000000300ull, 0x0000000000000300ull, N("vc") },
513 { 0, 0, OOPS },
516 static struct insn tabef98_1[] = {
517 { 0x0000000000000000ull, 0x0000000000000003ull },
518 { 0x0000000000000001ull, 0x0000000000000003ull, N("ivalld") },
519 { 0x0000000000000002ull, 0x0000000000000003ull, N("ivallt") },
520 { 0x0000000000000003ull, 0x0000000000000003ull, N("ivalltd") },
521 { 0, 0, OOPS },
524 static struct insn tabef90_0[] = {
525 { 0x0000000000000000ull, 0x0000300000000000ull },
526 { 0x0000100000000000ull, 0x0000300000000000ull, N("il") },
527 { 0x0000200000000000ull, 0x0000300000000000ull, N("is") },
528 { 0x0000300000000000ull, 0x0000300000000000ull, N("isl") },
529 { 0, 0, OOPS },
532 static struct insn tabef90sz[] = {
533 { 0x0000000000000000ull, 0x0007000000000000ull, N("u8") },
534 { 0x0001000000000000ull, 0x0007000000000000ull, N("s8") },
535 { 0x0002000000000000ull, 0x0007000000000000ull, N("u16") },
536 { 0x0003000000000000ull, 0x0007000000000000ull, N("s16") },
537 { 0x0004000000000000ull, 0x0007000000000000ull, N("b32") },
538 { 0x0005000000000000ull, 0x0007000000000000ull, N("b64") },
539 { 0, 0, OOPS },
542 static struct insn tabef80_0[] = {
543 { 0x0000000000000001ull, 0x000000000000000full, N("pf1") },
544 { 0x0000000000000002ull, 0x000000000000000full, N("pf1.5") },
545 { 0x0000000000000003ull, 0x000000000000000full, N("pf2") },
546 { 0x0000000000000004ull, 0x000000000000000full, N("wb") },
547 { 0x0000000000000005ull, 0x000000000000000full, N("iv") },
548 { 0x000000000000ff06ull, 0x00000fffffc0ff0full, N("ivall") },
549 { 0x0000000000000007ull, 0x000000000000000full, N("rs") },
550 { 0x0000000000000008ull, 0x000000000000000full, N("what?") }, /*XXX*/
551 { 0x0000000000000009ull, 0x000000000000000full, N("rslb") },
552 { 0, 0, OOPS },
555 static struct insn tabef80ct[] = {
556 { 0x0000000000000000ull, 0x0000000000000070ull },
557 { 0, 0, OOPS },
560 static struct insn tabef60_0[] = {
561 { 0x0000000000000000ull, 0x000000000000000full, N("qry1") },
562 { 0x0000000000000001ull, 0x000000000000000full, N("pf1") },
563 { 0x0000000000000002ull, 0x000000000000000full, N("pf1.5") },
564 { 0x0000000000000003ull, 0x000000000000000full, N("pf2") },
565 { 0x0000000000000004ull, 0x000000000000000full, N("wb") },
566 { 0x0000000000000005ull, 0x000000000000000full, N("iv") },
567 { 0x000000000000ff06ull, 0x00000fffffc0ff0full, N("ivall") },
568 { 0x0000000000000007ull, 0x000000000000000full, N("rs") },
569 { 0x0000000000000008ull, 0x000000000000000full, N("what?") }, /*XXX*/
570 { 0x0000000000000009ull, 0x000000000000000full, N("rslb") },
571 { 0, 0, OOPS },
574 static struct insn tabef60ct[] = {
575 { 0x0000000000000000ull, 0x0000000000000070ull },
576 { 0x0000000000000010ull, 0x0000000000000070ull, N("u") },
577 { 0x0000000000000020ull, 0x0000000000000070ull, N("c") },
578 { 0x0000000000000030ull, 0x0000000000000070ull, N("i") },
579 { 0x0000000000000040ull, 0x0000000000000070ull, N("crs") },
580 { 0, 0, OOPS },
583 static struct insn tabef58sz[] = {
584 { 0x0000000000000000ull, 0x0007000000000000ull, N("u8") },
585 { 0x0001000000000000ull, 0x0007000000000000ull, N("s8") },
586 { 0x0002000000000000ull, 0x0007000000000000ull, N("u16") },
587 { 0x0003000000000000ull, 0x0007000000000000ull, N("s16") },
588 { 0x0004000000000000ull, 0x0007000000000000ull, N("b32") },
589 { 0x0005000000000000ull, 0x0007000000000000ull, N("b64") },
590 { 0x0006000000000000ull, 0x0007000000000000ull, N("b128") },
591 { 0, 0, OOPS },
594 static struct insn tabef50_0[] = {
595 { 0x0000000000000000ull, 0x0000300000000000ull },
596 { 0x0000100000000000ull, 0x0000300000000000ull, N("cg") },
597 { 0x0000200000000000ull, 0x0000300000000000ull, N("cs") },
598 { 0x0000300000000000ull, 0x0000300000000000ull, N("wt") },
599 { 0, 0, OOPS },
602 static struct insn tabef40_0[] = {
603 { 0x0000000000000000ull, 0x0000300000000000ull },
604 { 0x0000100000000000ull, 0x0000300000000000ull, N("lu") },
605 { 0x0000200000000000ull, 0x0000300000000000ull, N("ci") },
606 { 0x0000300000000000ull, 0x0000300000000000ull, N("cv") },
607 { 0, 0, OOPS },
610 static struct insn tabef10_0[] = {
611 { 0x0000000000000000ull, 0x00000000c0000000ull, N("idx") },
612 { 0x0000000040000000ull, 0x00000000c0000000ull, N("up") },
613 { 0x0000000080000000ull, 0x00000000c0000000ull, N("down") },
614 { 0x00000000c0000000ull, 0x00000000c0000000ull, N("bfly") },
615 { 0, 0, OOPS },
618 static struct insn tabef10_1[] = {
619 { 0x00000000000000000ull, 0x0000000030000000ull, REG_20, REG_39 },
620 { 0x00000000010000000ull, 0x0000000030000000ull, U05_20, REG_39 },
621 { 0x00000000020000000ull, 0x0000000030000000ull, REG_20, U13_34 },
622 { 0x00000000030000000ull, 0x0000000030000000ull, U05_20, U13_34 },
623 { 0, 0, OOPS },
626 static struct insn tabeed8_0[] = {
627 { 0x0000000000000000ull, 0x0000c00000000000ull },
628 { 0x0000400000000000ull, 0x0000c00000000000ull, N("cg") },
629 { 0x0000800000000000ull, 0x0000c00000000000ull, N("cs") },
630 { 0x0000c00000000000ull, 0x0000c00000000000ull, N("wt") },
631 { 0, 0, OOPS },
634 static struct insn tabeed0_0[] = {
635 { 0x0000000000000000ull, 0x0000c00000000000ull },
636 { 0x0000400000000000ull, 0x0000c00000000000ull, N("cg") },
637 { 0x0000800000000000ull, 0x0000c00000000000ull, N("ci") },
638 { 0x0000c00000000000ull, 0x0000c00000000000ull, N("cv") },
639 { 0, 0, OOPS },
642 static struct insn tabeed0sz[] = {
643 { 0x0000000000000000ull, 0x0007000000000000ull, N("u8") },
644 { 0x0001000000000000ull, 0x0007000000000000ull, N("s8") },
645 { 0x0002000000000000ull, 0x0007000000000000ull, N("u16") },
646 { 0x0003000000000000ull, 0x0007000000000000ull, N("s16") },
647 { 0x0004000000000000ull, 0x0007000000000000ull, N("b32") },
648 { 0x0005000000000000ull, 0x0007000000000000ull, N("b64") },
649 { 0x0006000000000000ull, 0x0007000000000000ull, N("b128") },
650 { 0x0007000000000000ull, 0x0007000000000000ull, N("u"), N("b128") },
651 { 0, 0, OOPS },
654 static struct insn tabee00_0[] = {
655 { 0x0000000000000000ull, 0x0060000000000000ull, N("cast") },
656 { 0x0020000000000000ull, 0x0060000000000000ull, N("cast"), N("spin") },
657 { 0x0040000000000000ull, 0x0060000000000000ull, N("cas") },
658 { 0, 0, OOPS },
661 static struct insn tabee00sz[] = {
662 { 0x0000000000000000ull, 0x0010000000000000ull, N("b32") },
663 { 0x0010000000000000ull, 0x0010000000000000ull, N("b64") },
664 { 0, 0, OOPS },
667 static struct insn tabeef0sz[] = {
668 { 0x0000000000000000ull, 0x0002000000000000ull, N("b32") },
669 { 0x0002000000000000ull, 0x0002000000000000ull, N("b64") },
670 { 0, 0, OOPS },
673 static struct insn tabed00_0[] = {
674 { 0x0000000000000000ull, 0x00f0000000000000ull, N("add") },
675 { 0x0010000000000000ull, 0x00f0000000000000ull, N("min") },
676 { 0x0020000000000000ull, 0x00f0000000000000ull, N("max") },
677 { 0x0030000000000000ull, 0x00f0000000000000ull, N("inc") },
678 { 0x0040000000000000ull, 0x00f0000000000000ull, N("dec") },
679 { 0x0050000000000000ull, 0x00f0000000000000ull, N("and") },
680 { 0x0060000000000000ull, 0x00f0000000000000ull, N("or") },
681 { 0x0070000000000000ull, 0x00f0000000000000ull, N("xor") },
682 { 0x0080000000000000ull, 0x00f0000000000000ull, N("exch") },
683 { 0x00a0000000000000ull, 0x00f0000000000000ull, N("safeadd") },
684 { 0, 0, OOPS },
687 static struct insn tabed00sz[] = {
688 { 0x0000000000000000ull, 0x000e000000000000ull, N("u32") },
689 { 0x0002000000000000ull, 0x000e000000000000ull, N("s32") },
690 { 0x0004000000000000ull, 0x000e000000000000ull, N("u64") },
691 { 0x0006000000000000ull, 0x000e000000000000ull, N("ftz"), N("rn"), N("f32") },
692 { 0x0008000000000000ull, 0x000e000000000000ull, N("u128") },
693 { 0x000a000000000000ull, 0x000e000000000000ull, N("s64") },
694 { 0, 0, OOPS },
697 static struct insn tabec00_0[] = {
698 { 0x0000000000000000ull, 0x00f0000000000000ull, N("add") },
699 { 0x0010000000000000ull, 0x00f0000000000000ull, N("min") },
700 { 0x0020000000000000ull, 0x00f0000000000000ull, N("max") },
701 { 0x0030000000000000ull, 0x00f0000000000000ull, N("inc") },
702 { 0x0040000000000000ull, 0x00f0000000000000ull, N("dec") },
703 { 0x0050000000000000ull, 0x00f0000000000000ull, N("and") },
704 { 0x0060000000000000ull, 0x00f0000000000000ull, N("or") },
705 { 0x0070000000000000ull, 0x00f0000000000000ull, N("xor") },
706 { 0x0080000000000000ull, 0x00f0000000000000ull, N("exch") },
707 { 0, 0, OOPS },
710 static struct insn tabec00sz[] = {
711 { 0x0000000000000000ull, 0x0000000030000000ull, N("u32") },
712 { 0x0000000010000000ull, 0x0000000030000000ull, N("s32") },
713 { 0x0000000020000000ull, 0x0000000030000000ull, N("u64") },
714 { 0x0000000030000000ull, 0x0000000030000000ull, N("s64") },
715 { 0, 0, OOPS },
718 static struct insn tabebf8_0[] = {
719 { 0x0000000000000000ull, 0x0000000003800000ull, N("add") },
720 { 0x0000000000800000ull, 0x0000000003800000ull, N("min") },
721 { 0x0000000001000000ull, 0x0000000003800000ull, N("max") },
722 { 0x0000000001800000ull, 0x0000000003800000ull, N("inc") },
723 { 0x0000000002000000ull, 0x0000000003800000ull, N("dec") },
724 { 0x0000000002800000ull, 0x0000000003800000ull, N("and") },
725 { 0x0000000003000000ull, 0x0000000003800000ull, N("or") },
726 { 0x0000000003800000ull, 0x0000000003800000ull, N("xor") },
727 { 0, 0, OOPS },
730 static struct insn tabebf8sz[] = {
731 { 0x0000000000000000ull, 0x0000000000700000ull, N("u32") },
732 { 0x0000000000100000ull, 0x0000000000700000ull, N("s32") },
733 { 0x0000000000200000ull, 0x0000000000700000ull, N("u64") },
734 { 0x0000000000300000ull, 0x0000000000700000ull, N("ftz"), N("rn"), N("f32") },
735 { 0x0000000000400000ull, 0x0000000000700000ull, N("u128") },
736 { 0x0000000000500000ull, 0x0000000000700000ull, N("s64") },
737 { 0, 0, OOPS },
740 static struct insn tabebf0_0[] = {
741 { 0x0000000000000003ull, 0x0000000000000000ull, N("ivall") },
742 { 0x0000000000000003ull, 0x0000000000000000ull, N("ivth"), U13_36 },
743 { 0, 0, OOPS },
746 static struct insn tabebe0_0[] = {
747 { 0x0000008000000000ull, 0x0000018000000000ull, N("emit") },
748 { 0x0000010000000000ull, 0x0000018000000000ull, N("cut") },
749 { 0x0000018000000000ull, 0x0000018000000000ull, N("emit_then_cut") },
750 { 0, 0, OOPS },
753 static struct insn tabeb40_0[] = {
754 { 0x0000000000000000ull, 0x0010000000000000ull, N("p") },
755 { 0x0010000000000000ull, 0x0010000000000000ull, N("d") },
756 { 0, 0, OOPS },
759 static struct insn tabeb40_1[] = {
760 { 0x0000000000000000ull, 0x0000000e00000000ull, N("t1d") },
761 { 0x0000000200000000ull, 0x0000000e00000000ull, N("b1d") },
762 { 0x0000000400000000ull, 0x0000000e00000000ull, N("a1d") },
763 { 0x0000000600000000ull, 0x0000000e00000000ull, N("t2d") },
764 { 0x0000000800000000ull, 0x0000000e00000000ull, N("a2d") },
765 { 0x0000000a00000000ull, 0x0000000e00000000ull, N("t3d") },
766 { 0, 0, OOPS },
769 static struct insn tabeb40_2[] = {
770 { 0x0000000000000000ull, 0x0000000007000000ull, N("add") },
771 { 0x0000000001000000ull, 0x0000000007000000ull, N("min") },
772 { 0x0000000002000000ull, 0x0000000007000000ull, N("max") },
773 { 0x0000000003000000ull, 0x0000000007000000ull, N("inc") },
774 { 0x0000000004000000ull, 0x0000000007000000ull, N("dec") },
775 { 0x0000000005000000ull, 0x0000000007000000ull, N("and") },
776 { 0x0000000006000000ull, 0x0000000007000000ull, N("or") },
777 { 0x0000000007000000ull, 0x0000000007000000ull, N("xor") },
778 { 0, 0, OOPS },
781 static struct insn tabeb40_3[] = {
782 { 0x0000000000000000ull, 0x0006000000000000ull, N("ign") },
783 { 0x0002000000000000ull, 0x0006000000000000ull },
784 { 0x0004000000000000ull, 0x0006000000000000ull, N("trap") },
785 { 0, 0, OOPS },
788 static struct insn tabeb40_4[] = {
789 { 0x0000000000000000ull, 0x0008000000000000ull, REG_39 },
790 { 0x0008000000000000ull, 0x0008000000000000ull, U36_13 },
791 { 0, 0, OOPS },
794 static struct insn tabeb20_0[] = {
795 { 0x0010000000000000ull, 0x0010000000800000ull, N("ba") },
796 { 0x0000000000000000ull, 0x0000000000000000ull },
799 static struct insn tabeb20_1[] = {
800 { 0x0000000000100000ull, 0x0010000000f00000ull, N("r") },
801 { 0x0000000000200000ull, 0x0010000000f00000ull, N("g") },
802 { 0x0000000000300000ull, 0x0010000000f00000ull, N("rg") },
803 { 0x0000000000400000ull, 0x0010000000f00000ull, N("b") },
804 { 0x0000000000500000ull, 0x0010000000f00000ull, N("rb") },
805 { 0x0000000000600000ull, 0x0010000000f00000ull, N("gb") },
806 { 0x0000000000700000ull, 0x0010000000f00000ull, N("rgb") },
807 { 0x0000000000800000ull, 0x0010000000f00000ull, N("a") },
808 { 0x0000000000900000ull, 0x0010000000f00000ull, N("ra") },
809 { 0x0000000000a00000ull, 0x0010000000f00000ull, N("ga") },
810 { 0x0000000000b00000ull, 0x0010000000f00000ull, N("rga") },
811 { 0x0000000000c00000ull, 0x0010000000f00000ull, N("ba") },
812 { 0x0000000000d00000ull, 0x0010000000f00000ull, N("rba") },
813 { 0x0000000000e00000ull, 0x0010000000f00000ull, N("gba") },
814 { 0x0000000000f00000ull, 0x0010000000f00000ull, N("rgba") },
815 { 0x0010000000000000ull, 0x0010000000f00000ull, N("u8") },
816 { 0x0010000000100000ull, 0x0010000000f00000ull, N("s8") },
817 { 0x0010000000200000ull, 0x0010000000f00000ull, N("u16") },
818 { 0x0010000000300000ull, 0x0010000000f00000ull, N("s16") },
819 { 0x0010000000400000ull, 0x0010000000f00000ull, N("b32") },
820 { 0x0010000000500000ull, 0x0010000000f00000ull, N("b64") },
821 { 0x0010000000600000ull, 0x0010000000f00000ull, N("b128") },
822 { 0, 0, OOPS },
825 static struct insn tabeb20_2[] = {
826 { 0x0000000000000000ull, 0x0000000003000000ull },
827 { 0x0000000001000000ull, 0x0000000003000000ull, N("cg") },
828 { 0x0000000002000000ull, 0x0000000003000000ull, N("cs") },
829 { 0x0000000003000000ull, 0x0000000003000000ull, N("wt") },
830 { 0, 0, OOPS },
833 static struct insn tabeb00_0[] = {
834 { 0x0000000000000000ull, 0x0000000003000000ull },
835 { 0x0000000001000000ull, 0x0000000003000000ull, N("cg") },
836 { 0x0000000002000000ull, 0x0000000003000000ull, N("ci") },
837 { 0x0000000003000000ull, 0x0000000003000000ull, N("cv") },
838 { 0, 0, OOPS },
841 static struct insn tabe3a0_0[] = {
842 { 0x0000000000000040ull, 0x00000000000001c0ull, N("drain_illegal") },
843 { 0x0000000000000080ull, 0x00000000000001c0ull, N("cal") },
844 { 0x00000000000000c0ull, 0x00000000000001c0ull, N("pause") },
845 { 0x0000000000000100ull, 0x00000000000001c0ull, N("trap") },
846 { 0x0000000000000140ull, 0x00000000000001c0ull, N("int") },
847 { 0x0000000000000180ull, 0x00000000000001c0ull, N("drain") },
848 { 0, 0, OOPS },
851 static struct insn tabe360_0[] = {
852 { 0x0000000000000000ull, 0x0000000000000003ull },
853 { 0x0000000000000001ull, 0x0000000000000003ull, N("terminate") },
854 { 0x0000000000000002ull, 0x0000000000000003ull, N("fallthrough") },
855 { 0x0000000000000003ull, 0x0000000000000003ull, N("preempted") },
856 { 0, 0, OOPS },
859 static struct insn tabe000_0[] = {
860 { 0x0000000000000000ull, 0x00c0000000000000ull, N("pass") },
861 { 0x0040000000000000ull, 0x00c0000000000000ull },
862 { 0x0080000000000000ull, 0x00c0000000000000ull, N("constant") },
863 { 0x00c0000000000000ull, 0x00c0000000000000ull, N("sc") },
864 { 0, 0, OOPS },
867 static struct insn tabe000_1[] = {
868 { 0x0000000000000000ull, 0x0030000000000000ull },
869 { 0x0010000000000000ull, 0x0030000000000000ull, N("centroid") },
870 { 0x0020000000000000ull, 0x0030000000000000ull, N("offset") },
871 { 0, 0, OOPS },
874 static struct insn tabdf60_0[] = {
875 { 0x0000000000000000ull, 0x0000000060000000ull, N("t1d") },
876 { 0x0000000020000000ull, 0x0000000060000000ull, N("t2d") },
877 { 0x0000000040000000ull, 0x0000000060000000ull, N("t3d") },
878 { 0x0000000060000000ull, 0x0000000060000000ull, N("tcube") },
879 { 0, 0, OOPS },
882 static struct insn tabdf50_0[] = {
883 { 0x0000000000400000ull, 0x000000000fc00000ull, N("dimension") },
884 { 0x0000000000800000ull, 0x000000000fc00000ull, N("texture_type") },
885 { 0x0000000001400000ull, 0x000000000fc00000ull, N("sample_pos") },
886 { 0x0000000004000000ull, 0x000000000fc00000ull, N("filter") },
887 { 0x0000000004800000ull, 0x000000000fc00000ull, N("lod") },
888 { 0x0000000005000000ull, 0x000000000fc00000ull, N("wrap") },
889 { 0x0000000005800000ull, 0x000000000fc00000ull, N("border_color") },
890 { 0, 0, OOPS },
893 static struct insn tabdf00_0[] = {
894 { 0x0000000000000000ull, 0x0030000000000000ull, N("r") },
895 { 0x0010000000000000ull, 0x0030000000000000ull, N("g") },
896 { 0x0020000000000000ull, 0x0030000000000000ull, N("b") },
897 { 0x0030000000000000ull, 0x0030000000000000ull, N("a") },
898 { 0, 0, OOPS },
901 static struct insn tabdef8_0[] = {
902 { 0x0000000000000000ull, 0x000000c000000000ull, N("r") },
903 { 0x0000004000000000ull, 0x000000c000000000ull, N("g") },
904 { 0x0000008000000000ull, 0x000000c000000000ull, N("b") },
905 { 0x000000c000000000ull, 0x000000c000000000ull, N("a") },
906 { 0, 0, OOPS },
909 static struct insn tabdef8_1[] = {
910 { 0x0000000000000000ull, 0x0000003000000000ull },
911 { 0x0000001000000000ull, 0x0000003000000000ull, N("aoffi") },
912 { 0x0000002000000000ull, 0x0000003000000000ull, N("ptp") },
913 { 0, 0, OOPS },
916 static struct insn tabdeb8_0[] = {
917 { 0x0000000000000000ull, 0x000000e000000000ull },
918 { 0x0000002000000000ull, 0x000000e000000000ull, N("lz") },
919 { 0x0000004000000000ull, 0x000000e000000000ull, N("lb") },
920 { 0x0000006000000000ull, 0x000000e000000000ull, N("ll") },
921 { 0x000000c000000000ull, 0x000000e000000000ull, N("lba") },
922 { 0x000000e000000000ull, 0x000000e000000000ull, N("lla") },
923 { 0, 0, OOPS },
926 static struct insn tabdc38_0[] = {
927 { 0x0000000000000000ull, 0x0080000000000000ull, N("lz") },
928 { 0x0080000000000000ull, 0x0080000000000000ull, N("ll") },
929 { 0, 0, OOPS },
932 static struct insn tabd200_0[] = {
933 { 0x0000000000000000ull, 0x01e0000000000000ull, N("lz") },
934 { 0x0020000000000000ull, 0x01e0000000000000ull, N("ll") },
935 { 0x0040000000000000ull, 0x01e0000000000000ull, N("lz") },
936 { 0x0080000000000000ull, 0x01e0000000000000ull, N("lz"), N("aoffi") },
937 { 0x00a0000000000000ull, 0x01e0000000000000ull, N("ll") },
938 { 0x00c0000000000000ull, 0x01e0000000000000ull, N("lz"), N("mz") },
939 { 0x00e0000000000000ull, 0x01e0000000000000ull, N("lz") },
940 { 0x0100000000000000ull, 0x01e0000000000000ull, N("lz") },
941 { 0x0180000000000000ull, 0x01e0000000000000ull, N("ll"), N("aoffi") },
942 { 0, 0, OOPS },
945 static struct insn tabd200_1[] = {
946 { 0x0000000000000000ull, 0x01e0000000000000ull, N("t1d") },
947 { 0x0020000000000000ull, 0x01e0000000000000ull, N("t1d") },
948 { 0x0040000000000000ull, 0x01e0000000000000ull, N("t2d") },
949 { 0x0080000000000000ull, 0x01e0000000000000ull, N("t2d") },
950 { 0x00a0000000000000ull, 0x01e0000000000000ull, N("t2d") },
951 { 0x00c0000000000000ull, 0x01e0000000000000ull, N("t2d") },
952 { 0x00e0000000000000ull, 0x01e0000000000000ull, N("t3d") },
953 { 0x0100000000000000ull, 0x01e0000000000000ull, N("a2d") },
954 { 0x0180000000000000ull, 0x01e0000000000000ull, N("t2d") },
955 { 0, 0, OOPS },
958 static struct insn tabd200_2[] = {
959 { 0x0000000ff0000000ull, 0x001c000ff0000000ull, N("r") },
960 { 0x0004000ff0000000ull, 0x001c000ff0000000ull, N("g") },
961 { 0x0008000ff0000000ull, 0x001c000ff0000000ull, N("b") },
962 { 0x000c000ff0000000ull, 0x001c000ff0000000ull, N("a") },
963 { 0x0010000ff0000000ull, 0x001c000ff0000000ull, N("rg") },
964 { 0x0014000ff0000000ull, 0x001c000ff0000000ull, N("ra") },
965 { 0x0018000ff0000000ull, 0x001c000ff0000000ull, N("ga") },
966 { 0x001c000ff0000000ull, 0x001c000ff0000000ull, N("ba") },
967 { 0x0000000000000000ull, 0x001c000000000000ull, N("rgb") },
968 { 0x0004000000000000ull, 0x001c000000000000ull, N("rga") },
969 { 0x0008000000000000ull, 0x001c000000000000ull, N("rba") },
970 { 0x000c000000000000ull, 0x001c000000000000ull, N("gba") },
971 { 0x0010000000000000ull, 0x001c000000000000ull, N("rgba") },
972 { 0, 0, OOPS },
975 static struct insn tabd000_0[] = {
976 { 0x0000000000000000ull, 0x01e0000000000000ull, N("lz") },
977 { 0x0020000000000000ull, 0x01e0000000000000ull },
978 { 0x0040000000000000ull, 0x01e0000000000000ull, N("lz") },
979 { 0x0060000000000000ull, 0x01e0000000000000ull, N("ll") },
980 { 0x0080000000000000ull, 0x01e0000000000000ull, N("dc") },
981 { 0x00a0000000000000ull, 0x01e0000000000000ull, N("ll"), N("dc") },
982 { 0x00c0000000000000ull, 0x01e0000000000000ull, N("lz"), N("dc") },
983 { 0x00e0000000000000ull, 0x01e0000000000000ull },
984 { 0x0100000000000000ull, 0x01e0000000000000ull, N("lz") },
985 { 0x0120000000000000ull, 0x01e0000000000000ull, N("lz"), N("dc") },
986 { 0x0140000000000000ull, 0x01e0000000000000ull },
987 { 0x0160000000000000ull, 0x01e0000000000000ull, N("lz") },
988 { 0x0180000000000000ull, 0x01e0000000000000ull },
989 { 0x01a0000000000000ull, 0x01e0000000000000ull, N("ll") },
990 { 0, 0, OOPS },
993 static struct insn tabd000_1[] = {
994 { 0x0000000000000000ull, 0x01e0000000000000ull, N("t1d") },
995 { 0x0020000000000000ull, 0x01e0000000000000ull, N("t2d") },
996 { 0x0040000000000000ull, 0x01e0000000000000ull, N("t2d") },
997 { 0x0060000000000000ull, 0x01e0000000000000ull, N("t2d") },
998 { 0x0080000000000000ull, 0x01e0000000000000ull, N("t2d") },
999 { 0x00a0000000000000ull, 0x01e0000000000000ull, N("t2d") },
1000 { 0x00c0000000000000ull, 0x01e0000000000000ull, N("t2d") },
1001 { 0x00e0000000000000ull, 0x01e0000000000000ull, N("a2d") },
1002 { 0x0100000000000000ull, 0x01e0000000000000ull, N("a2d") },
1003 { 0x0120000000000000ull, 0x01e0000000000000ull, N("a2d") },
1004 { 0x0140000000000000ull, 0x01e0000000000000ull, N("t3d") },
1005 { 0x0160000000000000ull, 0x01e0000000000000ull, N("t3d") },
1006 { 0x0180000000000000ull, 0x01e0000000000000ull, N("tcube") },
1007 { 0x01a0000000000000ull, 0x01e0000000000000ull, N("tcube") },
1008 { 0, 0, OOPS },
1011 static struct insn tabc838_0[] = {
1012 { 0x0000000000000000ull, 0x0300000000000000ull, N("r") },
1013 { 0x0100000000000000ull, 0x0300000000000000ull, N("g") },
1014 { 0x0200000000000000ull, 0x0300000000000000ull, N("b") },
1015 { 0x0300000000000000ull, 0x0300000000000000ull, N("a") },
1016 { 0, 0, OOPS },
1019 static struct insn tabc838_1[] = {
1020 { 0x0000000000000000ull, 0x00c0000000000000ull },
1021 { 0x0040000000000000ull, 0x00c0000000000000ull, N("aoffi") },
1022 { 0x0080000000000000ull, 0x00c0000000000000ull, N("ptp") },
1023 { 0, 0, OOPS },
1026 static struct insn tabc038_0[] = {
1027 { 0x0000000000000000ull, 0x0380000000000000ull },
1028 { 0x0080000000000000ull, 0x0380000000000000ull, N("lz") },
1029 { 0x0100000000000000ull, 0x0380000000000000ull, N("lb") },
1030 { 0x0180000000000000ull, 0x0380000000000000ull, N("ll") },
1031 { 0x0300000000000000ull, 0x0380000000000000ull, N("lba") },
1032 { 0x0380000000000000ull, 0x0380000000000000ull, N("lla") },
1033 { 0, 0, OOPS },
1036 static struct insn taba000_0[] = {
1037 { 0x0000000000000000ull, 0x0300000000000000ull },
1038 { 0x0100000000000000ull, 0x0300000000000000ull, N("cg") },
1039 { 0x0200000000000000ull, 0x0300000000000000ull, N("ct") },
1040 { 0x0300000000000000ull, 0x0300000000000000ull, N("wt") },
1041 { 0, 0, OOPS },
1044 static struct insn taba000_1[] = {
1045 { 0x0000000000000000ull, 0x00e0000000000000ull, N("u8") },
1046 { 0x0020000000000000ull, 0x00e0000000000000ull, N("s8") },
1047 { 0x0040000000000000ull, 0x00e0000000000000ull, N("u16") },
1048 { 0x0060000000000000ull, 0x00e0000000000000ull, N("s16") },
1049 { 0x0080000000000000ull, 0x00e0000000000000ull, N("b32") },
1050 { 0x00a0000000000000ull, 0x00e0000000000000ull, N("b64") },
1051 { 0x00c0000000000000ull, 0x00e0000000000000ull, N("b128") },
1052 { 0, 0, OOPS },
1055 static struct insn tab8000_0[] = {
1056 { 0x0000000000000000ull, 0x0300000000000000ull },
1057 { 0x0100000000000000ull, 0x0300000000000000ull, N("cg") },
1058 { 0x0200000000000000ull, 0x0300000000000000ull, N("ci") },
1059 { 0x0300000000000000ull, 0x0300000000000000ull, N("cv") },
1060 { 0, 0, OOPS },
1063 static struct insn tab7c00_0[] = {
1064 { 0x0000000000000000ull, 0x001e000000000000ull, N("f") },
1065 { 0x0002000000000000ull, 0x001e000000000000ull, N("lt") },
1066 { 0x0004000000000000ull, 0x001e000000000000ull, N("eq") },
1067 { 0x0006000000000000ull, 0x001e000000000000ull, N("le") },
1068 { 0x0008000000000000ull, 0x001e000000000000ull, N("gt") },
1069 { 0x000a000000000000ull, 0x001e000000000000ull, N("ne") },
1070 { 0x000c000000000000ull, 0x001e000000000000ull, N("ge") },
1071 { 0x000e000000000000ull, 0x001e000000000000ull, N("num") },
1072 { 0x0010000000000000ull, 0x001e000000000000ull, N("nan") },
1073 { 0x0012000000000000ull, 0x001e000000000000ull, N("ltu") },
1074 { 0x0014000000000000ull, 0x001e000000000000ull, N("equ") },
1075 { 0x0016000000000000ull, 0x001e000000000000ull, N("leu") },
1076 { 0x0018000000000000ull, 0x001e000000000000ull, N("gtu") },
1077 { 0x001a000000000000ull, 0x001e000000000000ull, N("neu") },
1078 { 0x001c000000000000ull, 0x001e000000000000ull, N("geu") },
1079 { 0x001e000000000000ull, 0x001e000000000000ull, N("t") },
1080 { 0, 0, OOPS },
1083 static struct insn tab6080_0[] = {
1084 { 0x0000000000000000ull, 0x0600000000000000ull },
1085 { 0x0200000000000000ull, 0x0600000000000000ull, N("ftz") },
1086 { 0x0400000000000000ull, 0x0600000000000000ull, N("fmz") },
1087 { 0, 0, OOPS },
1090 static struct insn tab5f00_0[] = {
1091 { 0x0000000000000000ull, 0x0001004000000000ull, N("u8") },
1092 { 0x0000004000000000ull, 0x0001004000000000ull, N("u16") },
1093 { 0x0001000000000000ull, 0x0001004000000000ull, N("s8") },
1094 { 0x0001004000000000ull, 0x0001004000000000ull, N("s16") },
1095 { 0, 0, OOPS },
1098 static struct insn tab5f00_2[] = {
1099 { 0x0000000000000000ull, 0x0018000000000000ull },
1100 { 0x0008000000000000ull, 0x0018000000000000ull, N("shr7") },
1101 { 0x0010000000000000ull, 0x0018000000000000ull, N("shr15") },
1102 { 0, 0, OOPS },
1105 static struct insn tab5f00_3[] = {
1106 { 0x0000000000000000ull, 0x0000003000000000ull },
1107 { 0x0000001000000000ull, 0x0000003000000000ull, N("b1") },
1108 { 0x0000002000000000ull, 0x0000003000000000ull, N("b2") },
1109 { 0x0000003000000000ull, 0x0000003000000000ull, N("b3") },
1110 { 0, 0, OOPS },
1113 static struct insn tab5d18_0[] = {
1114 { 0x0000000000000000ull, 0x0000007800000000ull, N("f") },
1115 { 0x0000000800000000ull, 0x0000007800000000ull, N("lt") },
1116 { 0x0000001000000000ull, 0x0000007800000000ull, N("eq") },
1117 { 0x0000001800000000ull, 0x0000007800000000ull, N("le") },
1118 { 0x0000002000000000ull, 0x0000007800000000ull, N("gt") },
1119 { 0x0000002800000000ull, 0x0000007800000000ull, N("ne") },
1120 { 0x0000003000000000ull, 0x0000007800000000ull, N("ge") },
1121 { 0x0000003800000000ull, 0x0000007800000000ull, N("num") },
1122 { 0x0000004000000000ull, 0x0000007800000000ull, N("nan") },
1123 { 0x0000004800000000ull, 0x0000007800000000ull, N("ltu") },
1124 { 0x0000005000000000ull, 0x0000007800000000ull, N("equ") },
1125 { 0x0000005800000000ull, 0x0000007800000000ull, N("leu") },
1126 { 0x0000006000000000ull, 0x0000007800000000ull, N("gtu") },
1127 { 0x0000006800000000ull, 0x0000007800000000ull, N("neu") },
1128 { 0x0000007000000000ull, 0x0000007800000000ull, N("geu") },
1129 { 0x0000007800000000ull, 0x0000007800000000ull, N("t") },
1130 { 0, 0, OOPS },
1133 static struct insn tab5d10_0[] = {
1134 { 0x0000000000000000ull, 0x0006000000000000ull },
1135 { 0x0002000000000000ull, 0x0006000000000000ull, N("f32") },
1136 { 0x0004000000000000ull, 0x0006000000000000ull, N("mrg_h0") },
1137 { 0x0006000000000000ull, 0x0006000000000000ull, N("mrg_h1") },
1138 { 0, 0, OOPS },
1141 static struct insn tab5d10_1[] = {
1142 { 0x0000000000000000ull, 0x0001800000000000ull },
1143 { 0x0000800000000000ull, 0x0001800000000000ull, N("f32") },
1144 { 0x0001000000000000ull, 0x0001800000000000ull, N("h0_h0") },
1145 { 0x0001800000000000ull, 0x0001800000000000ull, N("h1_h1") },
1146 { 0, 0, OOPS },
1149 static struct insn tab5d10_2[] = {
1150 { 0x0000000000000000ull, 0x0000000030000000ull },
1151 { 0x0000000010000000ull, 0x0000000030000000ull, N("f32") },
1152 { 0x0000000020000000ull, 0x0000000030000000ull, N("h0_h0") },
1153 { 0x0000000030000000ull, 0x0000000030000000ull, N("h1_h1") },
1154 { 0, 0, OOPS },
1157 static struct insn tab5d08_0[] = {
1158 { 0x0000000000000000ull, 0x0000018000000000ull },
1159 { 0x0000008000000000ull, 0x0000018000000000ull, N("ftz") },
1160 { 0x0000010000000000ull, 0x0000018000000000ull, N("fmz") },
1161 { 0, 0, OOPS },
1164 static struct insn tab5d00_0[] = {
1165 { 0x0000000000000000ull, 0x0000006000000000ull },
1166 { 0x0000002000000000ull, 0x0000006000000000ull, N("ftz") },
1167 { 0x0000004000000000ull, 0x0000006000000000ull, N("fmz") },
1168 { 0, 0, OOPS },
1171 static struct insn tab5d00_1[] = {
1172 { 0x0000000000000000ull, 0x0000001800000000ull },
1173 { 0x0000000800000000ull, 0x0000001800000000ull, N("f32") },
1174 { 0x0000001000000000ull, 0x0000001800000000ull, N("h0_h0") },
1175 { 0x0000001800000000ull, 0x0000001800000000ull, N("h1_h1") },
1176 { 0, 0, OOPS },
1179 static struct insn tab5cf8_1[] = {
1180 { 0x0000000000000000ull, 0x0000006000000000ull },
1181 { 0x0000004000000000ull, 0x0000006000000000ull, N("u64") },
1182 { 0x0000006000000000ull, 0x0000006000000000ull, N("s64") },
1183 { 0, 0, OOPS },
1186 static struct insn tab5cf8_0[] = {
1187 { 0x0000000000000000ull, 0x0003000000000000ull },
1188 { 0x0001000000000000ull, 0x0003000000000000ull, N("hi") },
1189 { 0x0002000000000000ull, 0x0003000000000000ull, N("x") },
1190 { 0x0003000000000000ull, 0x0003000000000000ull, N("xhi") },
1191 { 0, 0, OOPS },
1194 static struct insn tab5cf0_0[] = {
1195 { 0x0000000000000000ull, 0x0000010000000000ull, N("pr") },
1196 { 0x0000010000000000ull, 0x0000010000000000ull, N("cc") },
1197 { 0, 0, OOPS },
1200 static struct insn tab5cf0_1[] = {
1201 { 0x0000000000000000ull, 0x0000060000000000ull },
1202 { 0x0000020000000000ull, 0x0000060000000000ull, N("b1") },
1203 { 0x0000040000000000ull, 0x0000060000000000ull, N("b2") },
1204 { 0x0000060000000000ull, 0x0000060000000000ull, N("b3") },
1205 { 0, 0, OOPS },
1208 static struct insn tab5ce0_0[] = {
1209 { 0x0000000000000000ull, 0x0000000000001300ull, N("u8") },
1210 { 0x0000000000000100ull, 0x0000000000001300ull, N("u16") },
1211 { 0x0000000000000200ull, 0x0000000000001300ull, N("u32") },
1212 { 0x0000000000001000ull, 0x0000000000001300ull, N("s8") },
1213 { 0x0000000000001100ull, 0x0000000000001300ull, N("s16") },
1214 { 0x0000000000001200ull, 0x0000000000001300ull, N("s32") },
1215 { 0, 0, OOPS },
1218 static struct insn tab5ce0_1[] = {
1219 { 0x0000000000000000ull, 0x0000000000002c00ull, N("u8") },
1220 { 0x0000000000000400ull, 0x0000000000002c00ull, N("u16") },
1221 { 0x0000000000000800ull, 0x0000000000002c00ull, N("u32") },
1222 { 0x0000000000002000ull, 0x0000000000002c00ull, N("s8") },
1223 { 0x0000000000002400ull, 0x0000000000002c00ull, N("s16") },
1224 { 0x0000000000002800ull, 0x0000000000002c00ull, N("s32") },
1225 { 0, 0, OOPS },
1228 static struct insn tab5cc0_0[] = {
1229 { 0x0000000000000000ull, 0x0000006000000000ull },
1230 { 0x0000002000000000ull, 0x0000006000000000ull, N("rs") },
1231 { 0x0000004000000000ull, 0x0000006000000000ull, N("ls") },
1232 { 0, 0, OOPS },
1235 static struct insn tab5cc0_1[] = {
1236 { 0x0000000000000000ull, 0x0000001800000000ull },
1237 { 0x0000000800000000ull, 0x0000001800000000ull, N("h0") },
1238 { 0x0000001000000000ull, 0x0000001800000000ull, N("h1") },
1239 { 0, 0, OOPS },
1242 static struct insn tab5cc0_2[] = {
1243 { 0x0000000000000000ull, 0x0000000600000000ull },
1244 { 0x0000000200000000ull, 0x0000000600000000ull, N("h0") },
1245 { 0x0000000400000000ull, 0x0000000600000000ull, N("h1") },
1246 { 0, 0, OOPS },
1249 static struct insn tab5cc0_3[] = {
1250 { 0x0000000000000000ull, 0x0000000180000000ull },
1251 { 0x0000000080000000ull, 0x0000000180000000ull, N("h0") },
1252 { 0x0000000100000000ull, 0x0000000180000000ull, N("h1") },
1253 { 0, 0, OOPS },
1256 static struct insn tab5cb8_0[] = {
1257 { 0x0000000000000100ull, 0x0000000000000300ull, N("f16") },
1258 { 0x0000000000000200ull, 0x0000000000000300ull, N("f32") },
1259 { 0x0000000000000300ull, 0x0000000000000300ull, N("f64") },
1260 { 0, 0, OOPS },
1263 static struct insn tab5cb8_1[] = {
1264 { 0x0000000000000000ull, 0x0000000000002c00ull, N("u8") },
1265 { 0x0000000000000400ull, 0x0000000000002c00ull, N("u16") },
1266 { 0x0000000000000800ull, 0x0000000000002c00ull, N("u32") },
1267 { 0x0000000000000c00ull, 0x0000000000002c00ull, N("u64") },
1268 { 0x0000000000002000ull, 0x0000000000002c00ull, N("s8") },
1269 { 0x0000000000002400ull, 0x0000000000002c00ull, N("s16") },
1270 { 0x0000000000002800ull, 0x0000000000002c00ull, N("s32") },
1271 { 0x0000000000002c00ull, 0x0000000000002c00ull, N("s64") },
1272 { 0, 0, OOPS },
1275 static struct insn tab5cb8_2[] = {
1276 { 0x0000000000000000ull, 0x0000018000000000ull },
1277 { 0x0000008000000000ull, 0x0000018000000000ull, N("rm") },
1278 { 0x0000010000000000ull, 0x0000018000000000ull, N("rp") },
1279 { 0x0000018000000000ull, 0x0000018000000000ull, N("rz") },
1280 { 0, 0, OOPS },
1283 static struct insn tab5cb0_2[] = {
1284 { 0x0000000000000000ull, 0x0000000000001300ull, N("u8") },
1285 { 0x0000000000000100ull, 0x0000000000001300ull, N("u16") },
1286 { 0x0000000000000200ull, 0x0000000000001300ull, N("u32") },
1287 { 0x0000000000000300ull, 0x0000000000001300ull, N("u64") },
1288 { 0x0000000000001000ull, 0x0000000000001300ull, N("s8") },
1289 { 0x0000000000001100ull, 0x0000000000001300ull, N("s16") },
1290 { 0x0000000000001200ull, 0x0000000000001300ull, N("s32") },
1291 { 0x0000000000001300ull, 0x0000000000001300ull, N("u64") },
1292 { 0, 0, OOPS },
1295 static struct insn tab5cb0_0[] = {
1296 { 0x0000000000000400ull, 0x0000000000000c00ull, N("f16") },
1297 { 0x0000000000000800ull, 0x0000000000000c00ull, N("f32") },
1298 { 0x0000000000000c00ull, 0x0000000000000c00ull, N("f64") },
1299 { 0, 0, OOPS },
1302 static struct insn tab5cb0_1[] = {
1303 { 0x0000000000000000ull, 0x0000018000000000ull },
1304 { 0x0000008000000000ull, 0x0000018000000000ull, N("floor") },
1305 { 0x0000010000000000ull, 0x0000018000000000ull, N("ceil") },
1306 { 0x0000018000000000ull, 0x0000018000000000ull, N("trunc") },
1307 { 0, 0, OOPS },
1310 static struct insn tab5ca8_0[] = {
1311 { 0x0000000000000000ull, 0x0000058000000000ull },
1312 { 0x0000018000000000ull, 0x0000058000000000ull, N("pass") },
1313 { 0x0000040000000000ull, 0x0000058000000000ull, N("round") },
1314 { 0x0000048000000000ull, 0x0000058000000000ull, N("floor") },
1315 { 0x0000050000000000ull, 0x0000058000000000ull, N("ceil") },
1316 { 0x0000058000000000ull, 0x0000058000000000ull, N("trunc") },
1317 { 0, 0, OOPS },
1320 static struct insn tab5c90_0[] = {
1321 { 0x0000000000000000ull, 0x0000008000000000ull, N("sincos") },
1322 { 0x0000008000000000ull, 0x0000008000000000ull, N("ex2") },
1323 { 0, 0, OOPS },
1326 static struct insn tab5c88_0[] = {
1327 { 0x0000000000000000ull, 0x00001f8000000000ull, N("divide") },
1328 { 0, 0, OOPS },
1331 static struct insn tab5c68_0[] = {
1332 { 0x0000000000000000ull, 0x0000300000000000ull },
1333 { 0x0000100000000000ull, 0x0000300000000000ull, N("ftz") },
1334 { 0x0000200000000000ull, 0x0000300000000000ull, N("fmz") },
1335 { 0, 0, OOPS },
1338 static struct insn tab5c68_1[] = {
1339 { 0x0000000000000000ull, 0x00000e0000000000ull },
1340 { 0x0000020000000000ull, 0x00000e0000000000ull, N("d2") },
1341 { 0x0000040000000000ull, 0x00000e0000000000ull, N("d4") },
1342 { 0x0000060000000000ull, 0x00000e0000000000ull, N("d8") },
1343 { 0x0000080000000000ull, 0x00000e0000000000ull, N("m8") },
1344 { 0x00000a0000000000ull, 0x00000e0000000000ull, N("m4") },
1345 { 0x00000c0000000000ull, 0x00000e0000000000ull, N("m2") },
1346 { 0, 0, OOPS },
1349 static struct insn tab5c40_0[] = {
1350 { 0x0000000000000000ull, 0x0000060000000000ull, N("and") },
1351 { 0x0000020000000000ull, 0x0000060000000000ull, N("or") },
1352 { 0x0000040000000000ull, 0x0000060000000000ull, N("xor") },
1353 { 0x0000060000000000ull, 0x0000060000000000ull, N("pass_b") },
1354 { 0, 0, OOPS },
1357 static struct insn tab5c40_1[] = {
1358 { 0x0000000000000000ull, 0x0000300000000000ull },
1359 { 0x0000100000000000ull, 0x0000300000000000ull, N("t") },
1360 { 0x0000200000000000ull, 0x0000300000000000ull, N("z") },
1361 { 0x0000300000000000ull, 0x0000300000000000ull, N("nz") },
1362 { 0, 0, OOPS },
1365 static struct insn tab5c30_0[] = {
1366 { 0x0000000000000000ull, 0x0001000000000000ull, N("u32") },
1367 { 0x0001000000000000ull, 0x0001000000000000ull },
1368 { 0, 0, OOPS },
1371 static struct insn tab5c38_0[] = {
1372 { 0x0000000000000000ull, 0x0000010000000000ull, N("u32") },
1373 { 0x0000010000000000ull, 0x0000010000000000ull, N("s32") },
1374 { 0, 0, OOPS },
1377 static struct insn tab5c38_1[] = {
1378 { 0x0000000000000000ull, 0x0000020000000000ull, N("u32") },
1379 { 0x0000020000000000ull, 0x0000020000000000ull, N("s32") },
1380 { 0, 0, OOPS },
1383 static struct insn tab5c20_0[] = {
1384 { 0x0000000000000000ull, 0x0000180000000000ull },
1385 { 0x0000080000000000ull, 0x0000180000000000ull, N("xlo") },
1386 { 0x0000100000000000ull, 0x0000180000000000ull, N("xmed") },
1387 { 0x0000180000000000ull, 0x0000180000000000ull, N("xhi") },
1388 { 0, 0, OOPS },
1391 static struct insn tab5be0_0[] = {
1392 { 0x0000000000000000ull, 0x0000003000000000ull },
1393 { 0x0000001000000000ull, 0x0000003000000000ull, N("t") },
1394 { 0x0000002000000000ull, 0x0000003000000000ull, N("z") },
1395 { 0x0000003000000000ull, 0x0000003000000000ull, N("nz") },
1396 { 0, 0, OOPS },
1399 static struct insn tab5bc0_0[] = {
1400 { 0x0000000000000000ull, 0x000f000000000000ull },
1401 { 0x0001000000000000ull, 0x000f000000000000ull, N("f4e") },
1402 { 0x0002000000000000ull, 0x000f000000000000ull, N("b4e") },
1403 { 0x0003000000000000ull, 0x000f000000000000ull, N("rc8") },
1404 { 0x0004000000000000ull, 0x000f000000000000ull, N("ecl") },
1405 { 0x0005000000000000ull, 0x000f000000000000ull, N("ecr") },
1406 { 0x0006000000000000ull, 0x000f000000000000ull, N("rc16") },
1407 { 0, 0, OOPS },
1410 static struct insn tab5bb0_0[] = {
1411 { 0x0000000000000000ull, 0x000f000000000000ull, N("f") },
1412 { 0x0001000000000000ull, 0x000f000000000000ull, N("lt") },
1413 { 0x0002000000000000ull, 0x000f000000000000ull, N("eq") },
1414 { 0x0003000000000000ull, 0x000f000000000000ull, N("le") },
1415 { 0x0004000000000000ull, 0x000f000000000000ull, N("gt") },
1416 { 0x0005000000000000ull, 0x000f000000000000ull, N("ne") },
1417 { 0x0006000000000000ull, 0x000f000000000000ull, N("ge") },
1418 { 0x0007000000000000ull, 0x000f000000000000ull, N("num") },
1419 { 0x0008000000000000ull, 0x000f000000000000ull, N("nan") },
1420 { 0x0009000000000000ull, 0x000f000000000000ull, N("ltu") },
1421 { 0x000a000000000000ull, 0x000f000000000000ull, N("equ") },
1422 { 0x000b000000000000ull, 0x000f000000000000ull, N("leu") },
1423 { 0x000c000000000000ull, 0x000f000000000000ull, N("gtu") },
1424 { 0x000d000000000000ull, 0x000f000000000000ull, N("neu") },
1425 { 0x000e000000000000ull, 0x000f000000000000ull, N("geu") },
1426 { 0x000f000000000000ull, 0x000f000000000000ull, N("t") },
1427 { 0, 0, OOPS },
1430 static struct insn tab5bb0_1[] = {
1431 { 0x0000000000000000ull, 0x0000600000000000ull, N("and") },
1432 { 0x0000200000000000ull, 0x0000600000000000ull, N("or") },
1433 { 0x0000400000000000ull, 0x0000600000000000ull, N("xor") },
1434 { 0, 0, OOPS },
1437 static struct insn tab5b70_0[] = {
1438 { 0x0000000000000000ull, 0x000c000000000000ull },
1439 { 0x0004000000000000ull, 0x000c000000000000ull, N("rm") },
1440 { 0x0008000000000000ull, 0x000c000000000000ull, N("rp") },
1441 { 0x000c000000000000ull, 0x000c000000000000ull, N("rz") },
1442 { 0, 0, OOPS },
1445 static struct insn tab5b60_0[] = {
1446 { 0x0000000000000000ull, 0x000e000000000000ull, N("f") },
1447 { 0x0002000000000000ull, 0x000e000000000000ull, N("lt") },
1448 { 0x0004000000000000ull, 0x000e000000000000ull, N("eq") },
1449 { 0x0006000000000000ull, 0x000e000000000000ull, N("le") },
1450 { 0x0008000000000000ull, 0x000e000000000000ull, N("gt") },
1451 { 0x000a000000000000ull, 0x000e000000000000ull, N("ne") },
1452 { 0x000c000000000000ull, 0x000e000000000000ull, N("ge") },
1453 { 0x000e000000000000ull, 0x000e000000000000ull, N("t") },
1454 { 0, 0, OOPS },
1457 static struct insn tab5b00_0[] = {
1458 { 0x0000000000000000ull, 0x0003000000000000ull },
1459 { 0x0001000000000000ull, 0x0003000000000000ull, N("s16"), N("u16") },
1460 { 0x0002000000000000ull, 0x0003000000000000ull, N("u16"), N("s16") },
1461 { 0x0003000000000000ull, 0x0003000000000000ull, N("s16"), N("s16") },
1462 { 0, 0, OOPS },
1465 static struct insn tab5b00_1[] = {
1466 { 0x0000000000000000ull, 0x001c000000000000ull },
1467 { 0x0004000000000000ull, 0x001c000000000000ull, N("clo") },
1468 { 0x0008000000000000ull, 0x001c000000000000ull, N("chi") },
1469 { 0x000c000000000000ull, 0x001c000000000000ull, N("csfu") },
1470 { 0x0010000000000000ull, 0x001c000000000000ull, N("cbcc") },
1471 { 0, 0, OOPS },
1474 static struct insn tab5a80_0[] = {
1475 { 0x0000000000000000ull, 0x0007000000000000ull, N("u32") },
1476 { 0x0001000000000000ull, 0x0007000000000000ull, N("s32") },
1477 { 0x0002000000000000ull, 0x0007000000000000ull, N("u24") },
1478 { 0x0003000000000000ull, 0x0007000000000000ull, N("s24") },
1479 { 0x0004000000000000ull, 0x0007000000000000ull, N("u16h0") },
1480 { 0x0005000000000000ull, 0x0007000000000000ull, N("s16h0") },
1481 { 0x0006000000000000ull, 0x0007000000000000ull, N("u16h1") },
1482 { 0x0007000000000000ull, 0x0007000000000000ull, N("s16h1") },
1483 { 0, 0, OOPS },
1486 static struct insn tab5a80_1[] = {
1487 { 0x0000000000000000ull, 0x0060000000000000ull, N("u24") },
1488 { 0x0020000000000000ull, 0x0060000000000000ull, N("s24") },
1489 { 0x0040000000000000ull, 0x0060000000000000ull, N("u16h0") },
1490 { 0x0060000000000000ull, 0x0060000000000000ull, N("s16h0") },
1491 { 0, 0, OOPS },
1494 static struct insn tab5a80_2[] = {
1495 { 0x0000000000000000ull, 0x0019000000000000ull, N("u32") },
1496 { 0x0001000000000000ull, 0x0019000000000000ull, N("s32") },
1497 { 0x0008000000000000ull, 0x0019000000000000ull, N("u24") },
1498 { 0x0009000000000000ull, 0x0019000000000000ull, N("s24") },
1499 { 0x0010000000000000ull, 0x0019000000000000ull, N("u16h0") },
1500 { 0x0011000000000000ull, 0x0019000000000000ull, N("s16h0") },
1501 { 0, 0, OOPS },
1504 static struct insn tab5a00_0[] = {
1505 { 0x0000000000000000ull, 0x0001000000000000ull, N("u32") },
1506 { 0x0001000000000000ull, 0x0001000000000000ull, N("s32") },
1507 { 0, 0, OOPS },
1510 static struct insn tab5a00_1[] = {
1511 { 0x0000000000000000ull, 0x0020000000000000ull, N("u32") },
1512 { 0x0020000000000000ull, 0x0020000000000000ull, N("s32") },
1513 { 0, 0, OOPS },
1516 static struct insn tab5980_0[] = {
1517 { 0x0000000000000000ull, 0x0060000000000000ull },
1518 { 0x0020000000000000ull, 0x0060000000000000ull, N("ftz") },
1519 { 0x0040000000000000ull, 0x0060000000000000ull, N("fmz") },
1520 { 0, 0, OOPS },
1523 static struct insn tab5980_1[] = {
1524 { 0x0000000000000000ull, 0x0018000000000000ull },
1525 { 0x0008000000000000ull, 0x0018000000000000ull, N("rm") },
1526 { 0x0010000000000000ull, 0x0018000000000000ull, N("rp") },
1527 { 0x0018000000000000ull, 0x0018000000000000ull, N("rz") },
1528 { 0, 0, OOPS },
1532 static struct insn tab5700_0[] = {
1533 { 0x0000000000000000ull, 0x0040000000000000ull, N("ud") },
1534 { 0x0040000000000000ull, 0x0040000000000000ull },
1535 { 0, 0, OOPS },
1538 static struct insn tab5700_1[] = {
1539 { 0x0000000000000000ull, 0x0001004000000000ull, N("u8") },
1540 { 0x0000004000000000ull, 0x0001004000000000ull, N("u16") },
1541 { 0x0001000000000000ull, 0x0001004000000000ull, N("s8") },
1542 { 0x0001004000000000ull, 0x0001004000000000ull, N("s16") },
1543 { 0, 0, OOPS },
1546 static struct insn tab5700_2[] = {
1547 { 0x0000000000000000ull, 0x0004000000000000ull, N("u16") },
1548 { 0x0004000000000000ull, 0x0004000000000000ull, N("u8") },
1549 { 0, 0, OOPS },
1552 static struct insn tab5700_3[] = {
1553 { 0x0000000000000000ull, 0x0038000000000000ull, N("mrg_16h") },
1554 { 0x0008000000000000ull, 0x0038000000000000ull, N("mrg_16l") },
1555 { 0x0010000000000000ull, 0x0038000000000000ull, N("mrg_8b0") },
1556 { 0x0018000000000000ull, 0x0038000000000000ull, N("mrg_8b2") },
1557 { 0x0020000000000000ull, 0x0038000000000000ull, N("acc") },
1558 { 0x0028000000000000ull, 0x0038000000000000ull, N("min") },
1559 { 0x0030000000000000ull, 0x0038000000000000ull, N("max") },
1560 { 0x0038000000000000ull, 0x0038000000000000ull },
1561 { 0, 0, OOPS },
1564 static struct insn tab53d8_0[] = {
1565 { 0x0000000000000000ull, 0x0007000000000000ull, N("4a"), N("u8") },
1566 { 0x0001000000000000ull, 0x0007000000000000ull, N("2a"), N("lo"), N("u16") },
1567 { 0x0002000000000000ull, 0x0007000000000000ull, N("4a"), N("s8") },
1568 { 0x0003000000000000ull, 0x0007000000000000ull, N("2a"), N("lo"), N("s16") },
1569 { 0x0005000000000000ull, 0x0007000000000000ull, N("2a"), N("hi"), N("u16") },
1570 { 0x0007000000000000ull, 0x0007000000000000ull, N("2a"), N("hi"), N("s16") },
1571 { 0, 0, OOPS },
1574 static struct insn tab53d8_1[] = {
1575 { 0x0000000000000000ull, 0x0000800000000000ull, N("u8") },
1576 { 0x0000800000000000ull, 0x0000800000000000ull, N("s8") },
1577 { 0, 0, OOPS },
1580 static struct insn tab5100_0[] = {
1581 { 0x0000000000000000ull, 0x000c000000000000ull },
1582 { 0x0004000000000000ull, 0x000c000000000000ull, N("clo") },
1583 { 0x0008000000000000ull, 0x000c000000000000ull, N("chi") },
1584 { 0x000c000000000000ull, 0x000c000000000000ull, N("csfu") },
1585 { 0, 0, OOPS },
1588 static struct insn tab50f0_0[] = {
1589 { 0x0000000000000000ull, 0x0000980000000000ull, N("f") },
1590 { 0x0000080000000000ull, 0x0000980000000000ull, N("lt") },
1591 { 0x0000100000000000ull, 0x0000980000000000ull, N("eq") },
1592 { 0x0000180000000000ull, 0x0000980000000000ull, N("le") },
1593 { 0x0000800000000000ull, 0x0000980000000000ull, N("gt") },
1594 { 0x0000880000000000ull, 0x0000980000000000ull, N("ne") },
1595 { 0x0000900000000000ull, 0x0000980000000000ull, N("ge") },
1596 { 0x0000980000000000ull, 0x0000980000000000ull, N("t") },
1597 { 0, 0, OOPS },
1600 static struct insn tab50f0_1_const[] = {
1601 { 0x0000000000000000ull, 0x0002000000000000ull, U16_20 },
1602 { 0x0002000000000000ull, 0x0002000000000000ull, S16_20 },
1603 { 0, 0, OOPS },
1606 static struct insn tab50f0_1_reg_8[] = {
1607 { 0x0000000000000000ull, 0x0000000030000000ull, N("b0") },
1608 { 0x0000000010000000ull, 0x0000000030000000ull, N("b1") },
1609 { 0x0000000020000000ull, 0x0000000030000000ull, N("b2") },
1610 { 0x0000000030000000ull, 0x0000000030000000ull, N("b3") },
1611 { 0, 0, OOPS },
1614 static struct insn tab50f0_1_size[] = {
1615 { 0x0000000000000000ull, 0x0002000040000000ull, N("u8"), T(50f0_1_reg_8) },
1616 { 0x0002000000000000ull, 0x0002000040000000ull, N("s8"), T(50f0_1_reg_8) },
1617 { 0x0000000040000000ull, 0x0002000070000000ull, N("u16"), N("h0") },
1618 { 0x0002000040000000ull, 0x0002000070000000ull, N("s16"), N("h0") },
1619 { 0x0000000050000000ull, 0x0002000070000000ull, N("u16"), N("h1") },
1620 { 0x0002000050000000ull, 0x0002000070000000ull, N("s16"), N("h1") },
1621 { 0x0000000060000000ull, 0x0002000070000000ull, N("u32") },
1622 { 0x0002000060000000ull, 0x0002000070000000ull, N("s32") },
1623 { 0, 0, OOPS },
1626 static struct insn tab50f0_1[] = {
1627 { 0x0000000000000000ull, 0x0004000000000000ull, T(50f0_1_const) },
1628 { 0x0004000000000000ull, 0x0004000000000000ull, T(50f0_1_size), REG_20 },
1629 { 0, 0, OOPS },
1633 static struct insn tab50e0_0[] = {
1634 { 0x0000000000000000ull, 0x0003000000000000ull, N("r") },
1635 { 0x0001000000000000ull, 0x0003000000000000ull, N("a") },
1636 { 0x0002000000000000ull, 0x0003000000000000ull, N("ra") },
1637 { 0, 0, OOPS },
1640 static struct insn tab50d8_0[] = {
1641 { 0x0000000000000000ull, 0x0003000000000000ull, N("all") },
1642 { 0x0001000000000000ull, 0x0003000000000000ull, N("any") },
1643 { 0x0002000000000000ull, 0x0003000000000000ull, N("eq") },
1644 { 0, 0, OOPS },
1647 static struct insn tab50b0_0[] = {
1648 { 0x0000000000000000ull, 0x0000000000001f00ull, N("f") },
1649 { 0x0000000000000100ull, 0x0000000000001f00ull, N("lt") },
1650 { 0x0000000000000200ull, 0x0000000000001f00ull, N("eq") },
1651 { 0x0000000000000300ull, 0x0000000000001f00ull, N("le") },
1652 { 0x0000000000000400ull, 0x0000000000001f00ull, N("gt") },
1653 { 0x0000000000000500ull, 0x0000000000001f00ull, N("ne") },
1654 { 0x0000000000000600ull, 0x0000000000001f00ull, N("ge") },
1655 { 0x0000000000000700ull, 0x0000000000001f00ull, N("num") },
1656 { 0x0000000000000800ull, 0x0000000000001f00ull, N("nan") },
1657 { 0x0000000000000900ull, 0x0000000000001f00ull, N("ltu") },
1658 { 0x0000000000000a00ull, 0x0000000000001f00ull, N("equ") },
1659 { 0x0000000000000b00ull, 0x0000000000001f00ull, N("leu") },
1660 { 0x0000000000000c00ull, 0x0000000000001f00ull, N("gtu") },
1661 { 0x0000000000000d00ull, 0x0000000000001f00ull, N("neu") },
1662 { 0x0000000000000e00ull, 0x0000000000001f00ull, N("geu") },
1663 { 0x0000000000000f00ull, 0x0000000000001f00ull },
1664 { 0x0000000000001000ull, 0x0000000000001f00ull, N("off") },
1665 { 0x0000000000001100ull, 0x0000000000001f00ull, N("lo") },
1666 { 0x0000000000001200ull, 0x0000000000001f00ull, N("sff") },
1667 { 0x0000000000001300ull, 0x0000000000001f00ull, N("ls") },
1668 { 0x0000000000001400ull, 0x0000000000001f00ull, N("hi") },
1669 { 0x0000000000001500ull, 0x0000000000001f00ull, N("sft") },
1670 { 0x0000000000001600ull, 0x0000000000001f00ull, N("hs") },
1671 { 0x0000000000001700ull, 0x0000000000001f00ull, N("oft") },
1672 { 0x0000000000001800ull, 0x0000000000001f00ull, N("csm_ta") },
1673 { 0x0000000000001900ull, 0x0000000000001f00ull, N("csm_tr") },
1674 { 0x0000000000001a00ull, 0x0000000000001f00ull, N("csm_mx") },
1675 { 0x0000000000001b00ull, 0x0000000000001f00ull, N("fcsm_ta") },
1676 { 0x0000000000001c00ull, 0x0000000000001f00ull, N("fcsm_tr") },
1677 { 0x0000000000001d00ull, 0x0000000000001f00ull, N("fcsm_mx") },
1678 { 0x0000000000001e00ull, 0x0000000000001f00ull, N("rle") },
1679 { 0x0000000000001f00ull, 0x0000000000001f00ull, N("rgt") },
1680 { 0, 0, OOPS },
1683 static struct insn tab5090_0[] = {
1684 { 0x0000000000000000ull, 0x0000000003000000ull, N("and") },
1685 { 0x0000000001000000ull, 0x0000000003000000ull, N("or") },
1686 { 0x0000000002000000ull, 0x0000000003000000ull, N("xor") },
1687 { 0, 0, OOPS },
1690 static struct insn tab5080_0[] = {
1691 { 0x0000000000000000ull, 0x0000000000f00000ull, N("cos") },
1692 { 0x0000000000100000ull, 0x0000000000f00000ull, N("sin") },
1693 { 0x0000000000200000ull, 0x0000000000f00000ull, N("ex2") },
1694 { 0x0000000000300000ull, 0x0000000000f00000ull, N("lg2") },
1695 { 0x0000000000400000ull, 0x0000000000f00000ull, N("rcp") },
1696 { 0x0000000000500000ull, 0x0000000000f00000ull, N("rsq") },
1697 { 0x0000000000600000ull, 0x0000000000f00000ull, N("rcp64h") },
1698 { 0x0000000000700000ull, 0x0000000000f00000ull, N("rsq64h") },
1699 { 0x0000000000800000ull, 0x0000000000f00000ull, N("sqrt"), .fmask = F_SM52 },
1700 { 0, 0, OOPS },
1703 static struct insn tab5000_0[] = {
1704 { 0x0000000000000000ull, 0x0001000000000000ull, N("u8") },
1705 { 0x0001000000000000ull, 0x0001000000000000ull, N("s28") },
1706 { 0, 0, OOPS },
1709 static struct insn tab5000_1[] = {
1710 { 0x0000000000000000ull, 0x0002000000000000ull, N("u8") },
1711 { 0x0002000000000000ull, 0x0002000000000000ull, N("s8") },
1712 { 0, 0, OOPS },
1715 static struct insn tab5000_2[] = {
1716 { 0x0000000000000000ull, 0x0018003000000000ull },
1717 { 0x0008000000000000ull, 0x0018003000000000ull, N("x") },
1718 { 0x0010000000000000ull, 0x0018003000000000ull, N("y") },
1719 { 0x0018000000000000ull, 0x0018003000000000ull, N("xy") },
1720 { 0x0000001000000000ull, 0x0018003000000000ull, N("z") },
1721 { 0x0008001000000000ull, 0x0018003000000000ull, N("xz") },
1722 { 0x0010001000000000ull, 0x0018003000000000ull, N("xy") },
1723 { 0x0018001000000000ull, 0x0018003000000000ull, N("xyz") },
1724 { 0x0000002000000000ull, 0x0018003000000000ull, N("w") },
1725 { 0x0008002000000000ull, 0x0018003000000000ull, N("xw") },
1726 { 0x0010002000000000ull, 0x0018003000000000ull, N("yw") },
1727 { 0x0018002000000000ull, 0x0018003000000000ull, N("xyw") },
1728 { 0x0000003000000000ull, 0x0018003000000000ull, N("zw") },
1729 { 0x0008003000000000ull, 0x0018003000000000ull, N("xzw") },
1730 { 0x0010003000000000ull, 0x0018003000000000ull, N("xyw") },
1731 { 0x0018003000000000ull, 0x0018003000000000ull, N("xyzw") },
1732 { 0, 0, OOPS },
1735 static struct insn tab5000_3[] = {
1736 { 0x0000000000000000ull, 0x0000000f00000000ull, N("0000") },
1737 { 0x0000000100000000ull, 0x0000000f00000000ull, N("1111") },
1738 { 0x0000000200000000ull, 0x0000000f00000000ull, N("2222") },
1739 { 0x0000000300000000ull, 0x0000000f00000000ull, N("3333") },
1740 { 0x0000000400000000ull, 0x0000000f00000000ull },
1741 { 0x0000000500000000ull, 0x0000000f00000000ull, N("4321") },
1742 { 0x0000000600000000ull, 0x0000000f00000000ull, N("5432") },
1743 { 0x0000000700000000ull, 0x0000000f00000000ull, N("6543") },
1744 { 0x0000000800000000ull, 0x0000000f00000000ull, N("3201") },
1745 { 0x0000000900000000ull, 0x0000000f00000000ull, N("3012") },
1746 { 0x0000000a00000000ull, 0x0000000f00000000ull, N("0213") },
1747 { 0x0000000b00000000ull, 0x0000000f00000000ull, N("3120") },
1748 { 0x0000000c00000000ull, 0x0000000f00000000ull, N("1230") },
1749 { 0x0000000d00000000ull, 0x0000000f00000000ull, N("2310") },
1750 { 0, 0, OOPS },
1753 static struct insn tab5000_4[] = {
1754 { 0x0000000000000000ull, 0x00000000f0000000ull, N("4444") },
1755 { 0x0000000010000000ull, 0x00000000f0000000ull, N("5555") },
1756 { 0x0000000020000000ull, 0x00000000f0000000ull, N("6666") },
1757 { 0x0000000030000000ull, 0x00000000f0000000ull, N("7777") },
1758 { 0x0000000040000000ull, 0x00000000f0000000ull },
1759 { 0x0000000050000000ull, 0x00000000f0000000ull, N("6543") },
1760 { 0x0000000060000000ull, 0x00000000f0000000ull, N("5432") },
1761 { 0x0000000070000000ull, 0x00000000f0000000ull, N("4321") },
1762 { 0x0000000080000000ull, 0x00000000f0000000ull, N("4567") },
1763 { 0x0000000090000000ull, 0x00000000f0000000ull, N("6745") },
1764 { 0x00000000a0000000ull, 0x00000000f0000000ull, N("5467") },
1765 { 0, 0, OOPS },
1768 static struct insn tab5000_5[] = {
1769 { 0x0000000000000000ull, 0x0060000000000000ull },
1770 { 0x0020000000000000ull, 0x0060000000000000ull, N("acc") },
1771 { 0, 0, OOPS },
1774 static struct insn tab2c00_0[] = {
1775 { 0x0000000000000000ull, 0x0060000000000000ull },
1776 { 0x0020000000000000ull, 0x0060000000000000ull, N("f32") },
1777 { 0x0040000000000000ull, 0x0060000000000000ull, N("h0_h0") },
1778 { 0x0060000000000000ull, 0x0060000000000000ull, N("h1_h1") },
1779 { 0, 0, OOPS },
1782 static struct insn tab2a00_0[] = {
1783 { 0x0000000000000000ull, 0x0180000000000000ull },
1784 { 0x0080000000000000ull, 0x0180000000000000ull, N("ftz") },
1785 { 0x0100000000000000ull, 0x0180000000000000ull, N("fmz") },
1786 { 0, 0, OOPS },
1789 static struct insn tab1f00_0[] = {
1790 { 0x0000000000000000ull, 0x0040000000000000ull, N("u32") },
1791 { 0x0040000000000000ull, 0x0040000000000000ull, N("s32") },
1792 { 0, 0, OOPS },
1795 static struct insn tab1f00_1[] = {
1796 { 0x0000000000000000ull, 0x0080000000000000ull, N("u32") },
1797 { 0x0080000000000000ull, 0x0080000000000000ull, N("s32") },
1798 { 0, 0, OOPS },
1801 static struct insn tab1000_0[] = {
1802 { 0x0000000000000000ull, 0x0200000000000000ull, N("u32") },
1803 { 0x0200000000000000ull, 0x0200000000000000ull, N("s32") },
1804 { 0, 0, OOPS },
1807 static struct insn tab0400_0[] = {
1808 { 0x0000000000000000ull, 0x0060000000000000ull, N("and") },
1809 { 0x0020000000000000ull, 0x0060000000000000ull, N("or") },
1810 { 0x0040000000000000ull, 0x0060000000000000ull, N("xor") },
1811 { 0x0060000000000000ull, 0x0060000000000000ull, N("pass_b") },
1812 { 0, 0, OOPS },
1815 static struct insn tabf0a8_0[] = {
1816 { 0x0000000200000000ull, 0x0000009b00000000ull, N("red"), N("popc") },
1817 { 0x0000000300000000ull, 0x0000009b00000000ull, N("scan") },
1818 { 0x0000000a00000000ull, 0x0000009b00000000ull, N("red"), N("and") },
1819 { 0x0000001200000000ull, 0x0000009b00000000ull, N("red"), N("or") },
1820 { 0x0000008000000000ull, 0x0000009b00000000ull, N("sync") },
1821 { 0x0000008100000000ull, 0x0000009b00000000ull, N("arrive") },
1822 { 0, 0, OOPS },
1825 static struct insn tabf0a8_1[] = {
1826 { 0x0000000000000000ull, 0x0000180000000000ull, REG_08, REG_20 },
1827 { 0x0000080000000000ull, 0x0000180000000000ull, REG_08, U12_20 },
1828 { 0x0000100000000000ull, 0x0000180000000000ull, U08_08, REG_20 },
1829 { 0x0000180000000000ull, 0x0000180000000000ull, U08_08, U12_20 },
1830 { 0, 0, OOPS },
1833 static struct insn tabea80_0[] = {
1834 { 0x0000000010000000ull, 0x0000000010000000ull, N("ba") },
1835 { 0x0000000000000000ull, 0x0000000000000000ull },
1836 { 0, 0, OOPS },
1839 static struct insn tabea80_1[] = {
1840 { 0x0000000000000000ull, 0x0000007000000000ull, N("u32") },
1841 { 0x0000001000000000ull, 0x0000007000000000ull, N("s32") },
1842 { 0x0000002000000000ull, 0x0000007000000000ull, N("u64") },
1843 { 0x0000003000000000ull, 0x0000007000000000ull, N("f32") },
1844 { 0x0000005000000000ull, 0x0000007000000000ull, N("s64") },
1845 { 0x0000006000000000ull, 0x0000007000000000ull, N("sd32") },
1846 { 0x0000007000000000ull, 0x0000007000000000ull, N("sd64") },
1847 { 0, 0, OOPS },
1850 static struct insn tabea80_2[] = {
1851 { 0x0000000000000000ull, 0x0038000000000000ull, N("u32") },
1852 { 0x0008000000000000ull, 0x0038000000000000ull, N("s32") },
1853 { 0x0010000000000000ull, 0x0038000000000000ull, N("u64") },
1854 { 0x0018000000000000ull, 0x0038000000000000ull, N("f32") },
1855 { 0x0028000000000000ull, 0x0038000000000000ull, N("s64") },
1856 { 0x0030000000000000ull, 0x0038000000000000ull, N("sd32") },
1857 { 0x0038000000000000ull, 0x0038000000000000ull, N("sd64") },
1858 { 0, 0, OOPS },
1861 static struct insn tabea00_0[] = {
1862 { 0x0000000000000000ull, 0x00000001e0000000ull, N("add") },
1863 { 0x0000000020000000ull, 0x00000001e0000000ull, N("min") },
1864 { 0x0000000040000000ull, 0x00000001e0000000ull, N("max") },
1865 { 0x0000000060000000ull, 0x00000001e0000000ull, N("inc") },
1866 { 0x0000000080000000ull, 0x00000001e0000000ull, N("dec") },
1867 { 0x00000000a0000000ull, 0x00000001e0000000ull, N("and") },
1868 { 0x00000000c0000000ull, 0x00000001e0000000ull, N("or") },
1869 { 0x00000000e0000000ull, 0x00000001e0000000ull, N("xor") },
1870 { 0x0000000100000000ull, 0x00000001e0000000ull, N("exch") },
1871 { 0, 0, OOPS },
1874 static struct insn tabroot[] = {
1875 { 0xfbe0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "out"), T(fbe0_0), REG_00, REG_08, REG_20 },
1876 { 0xf6e0000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "out"), T(fbe0_0), REG_00, REG_08, S20_20 },
1877 { 0xf0f8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "sync"), T(f0f8_0) },
1878 { 0xf0f0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "depbar"), T(f0f0_0), U03_26, U06_20, U06_00 },
1879 { 0xf0c8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "mov"), REG_00, SYS_20 },
1880 { 0xf0c0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "r2b"), T(f0c0_0), U04_28, REG_20 },
1881 { 0xf0b8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "b2r"), REG_00, U08_08 },
1882 { 0xf0a8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "bar"), T(f0a8_0), T(f0a8_1), T(pred39) },
1883 { 0xeff0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "st"), ON(31, p), T(eff0_0), AMEM, REG_00, REG_39 },
1884 { 0xefe8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "pixld"), T(efe8_0), REG_00, PRED45, PLDMEM },
1885 { 0xefd8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "ld"), ON(32, o), ON(31, p), T(eff0_0), REG_00, AMEM, REG_39 },
1886 { 0xefd0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "isberd"), ON(32, o), T(efd0_0), ON(31, skew), T(efd0sz), REG_00, ISBERDMEM },
1887 { 0xefa0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "al2p"), ON(32, o), T(eff0_0), PRED44, REG_00, REG_08, S11_20 },
1888 { 0xef98000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "membar"), T(ef98_0), T(ef98_1) },
1889 { 0xef90000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "ld"), T(ef90_0), T(ef90sz), REG_00, C36_08_S16_20 },
1890 { 0xef80000000000000ull, 0xffe0000000000000ull, OP8B, T(pred), N( "cctll"), T(ef80ct), T(ef80_0), CCTLLMEM },
1891 { 0xef60000000000000ull, 0xffe0000000000000ull, OP8B, T(pred), N( "cctl"), ON(52, e), T(ef60ct), T(ef60_0), CCTLMEM },
1892 { 0xef58000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "st"), T(ef58sz), SMEM, REG_00 },
1893 { 0xef50000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "st"), T(ef50_0), T(ef58sz), LMEM, REG_00 },
1894 { 0xef48000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "ld"), ON(44, u), T(ef58sz), REG_00, SMEM },
1895 { 0xef40000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "ld"), T(ef40_0), T(ef58sz), REG_00, LMEM },
1896 { 0xef10000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "shfl"), T(ef10_0), PRED48, REG_00, REG_08, T(ef10_1) },
1897 { 0xeef0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "atom"), N("cas"), ON(48, e), T(eef0sz), REG_00, ATOMMEM0, REG_20 },
1898 { 0xeed8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "stg"), ON(45, e), T(eed8_0), T(ef58sz), NCGMEM, REG_00 },
1899 { 0xeed0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "ldg"), ON(45, e), T(eed0_0), T(eed0sz), REG_00, NCGMEM },
1900 { 0xeec8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "ldg"), ON(45, e), T(eed0_0), T(eed0sz), INV_PRED41, REG_00, NCGMEM_20 },
1901 { 0xeea0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "stp"), ON(31, wait), U08_20 },
1902 { 0xee00000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "atoms"), T(ee00_0), T(ee00sz), REG_00, ATOMMEM1, REG_20 /*, REG_20 + 1 */ },
1903 { 0xed00000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "atom"), T(ed00_0), ON(48, e), T(ed00sz), REG_00, ATOMMEM0, REG_20 },
1904 { 0xec00000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "atoms"), T(ec00_0), T(ec00sz), REG_00, ATOMMEM1, REG_20 },
1905 { 0xebf8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "red"), T(ebf8_0), ON(48, e), T(ebf8sz), REDMEM0, REG_00 },
1906 { 0xebf0000000000000ull, 0xfff9000000000000ull, OP8B, T(pred), N( "cctlt"), T(ebf0_0) },
1907 { 0xebe0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "out"), T(ebe0_0), REG_00, REG_08, C34_RZ_O14_20 },
1908 { 0xeb40000000000000ull, 0xffe0000000000000ull, OP8B, T(pred), N( "sured"), T(eb40_0), T(eb40_1), T(eb40_2), T(eb40_3), SUREDMEM, REG_00, T(eb40_4) },
1909 { 0xeb20000000000000ull, 0xffe0000000000000ull, OP8B, T(pred), N( "sust"), T(eb40_0), T(eb20_0), T(eb40_1), T(eb20_1), T(eb20_2), T(eb40_3), SUREDMEM, REG_00, T(eb40_4) },
1910 { 0xeb00000000000000ull, 0xffe0000000000000ull, OP8B, T(pred), N( "suld"), T(eb40_0), T(eb40_1), T(eb20_1), T(eb00_0), T(eb40_3), REG_00, SUREDMEM, T(eb40_4) },
1911 { 0xeac0000000000000ull, 0xffe0000000000000ull, OP8B, T(pred), N( "suatom"), T(eb40_0), T(ea80_0), T(ea80_1), T(eb40_1), N("cas"), T(eb40_3), REG_00, SUREDMEM, REG_20, T(eb40_4) },
1912 { 0xea80000000000000ull, 0xffc0000000000000ull, OP8B, T(pred), N( "suatom"), N("d"), T(ea80_0), T(ea80_2), T(eb40_1), N("cas"), T(eb40_3), REG_00, SUREDMEM, REG_20, U36_13 },
1913 { 0xea60000000000000ull, 0xffe0000000000000ull, OP8B, T(pred), N( "suatom"), T(eb40_0), T(ea80_0), T(ea80_1), T(eb40_1), T(ea00_0), T(eb40_3), REG_00, SUREDMEM, REG_20, T(eb40_4) },
1914 { 0xea00000000000000ull, 0xffc0000000000000ull, OP8B, T(pred), N( "suatom"), N("d"), T(ea80_0), T(ea80_2), T(eb40_1), T(ea00_0), T(eb40_3), REG_00, SUREDMEM, REG_20, U36_13 },
1915 { 0xe3a0000000000000ull, 0xfff0000000000000ull, OP8B, N( "bpt"), T(e3a0_0), U20_20 },
1916 { 0xe390000000000000ull, 0xfff0000000000000ull, OP8B, N( "ide"), ZN(5, en), U16_20 },
1917 { 0xe380000000000000ull, 0xfff0000000000000ull, OP8B, N( "ram") },
1918 { 0xe370000000000000ull, 0xfff0000000000000ull, OP8B, N( "sam") },
1919 { 0xe360000000000000ull, 0xfff0000000000000ull, OP8B, N( "rtt"), T(e360_0) },
1920 { 0xe350000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "cont"), T(f0f8_0) },
1921 { 0xe340000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "brk"), T(f0f8_0) },
1922 { 0xe330000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "kil"), T(f0f8_0) },
1923 { 0xe320000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "ret"), T(f0f8_0) },
1924 { 0xe310000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "longjmp"), T(f0f8_0) },
1925 { 0xe300000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "exit"), ON(5, "keeprefcount"), T(f0f8_0) },
1926 { 0xe2f0000000000000ull, 0xfff0000000000000ull, OP8B, N("setlmembase"), REG_08 },
1927 { 0xe2e0000000000000ull, 0xfff0000000000000ull, OP8B, N( "setcrsptr"), REG_08 },
1928 { 0xe2d0000000000000ull, 0xfff0000000000000ull, OP8B, N("getlmembase"), REG_00 },
1929 { 0xe2c0000000000000ull, 0xfff0000000000000ull, OP8B, N( "getcrsptr"), REG_00 },
1930 { 0xe2b0000000000020ull, 0xfff0000000000020ull, OP8B, N( "pcnt"), C36_RZ_S16_20 },
1931 { 0xe2b0000000000000ull, 0xfff0000000000020ull, OP8B, N( "pcnt"), BTARG },
1932 { 0xe2a0000000000020ull, 0xfff0000000000020ull, OP8B, N( "pbk"), C36_RZ_S16_20 },
1933 { 0xe2a0000000000000ull, 0xfff0000000000020ull, OP8B, N( "pbk"), BTARG },
1934 { 0xe290000000000020ull, 0xfff0000000000020ull, OP8B, N( "ssy"), C36_RZ_S16_20 },
1935 { 0xe290000000000000ull, 0xfff0000000000020ull, OP8B, N( "ssy"), BTARG },
1936 { 0xe280000000000020ull, 0xfff0000000000020ull, OP8B, N( "plongjmp"), C36_RZ_S16_20 },
1937 { 0xe280000000000000ull, 0xfff0000000000020ull, OP8B, N( "plongjmp"), BTARG },
1938 { 0xe270000000000020ull, 0xfff0000000000020ull, OP8B, N( "pret"), ZN(6, noinc), C36_RZ_S16_20 },
1939 { 0xe270000000000000ull, 0xfff0000000000020ull, OP8B, N( "pret"), ZN(6, noinc), BTARG },
1940 { 0xe260000000000020ull, 0xfff0000000000020ull, OP8B, N( "cal"), ZN(6, noinc), C36_RZ_S16_20 },
1941 { 0xe260000000000000ull, 0xfff0000000000020ull, OP8B, N( "cal"), ZN(6, noinc), BTARG },
1942 { 0xe250000000000020ull, 0xfff0000000000020ull, OP8B, T(pred), N( "brx"), ON(6, lmt), T(f0f8_0), C36_08_S16_20 },
1943 { 0xe250000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "brx"), ON(6, lmt), T(f0f8_0), REG_08, S24_20 },
1944 { 0xe240000000000020ull, 0xfff0000000000020ull, OP8B, T(pred), N( "bra"), ON(7, u), ON(6, lmt), T(f0f8_0), C36_RZ_S16_20 },
1945 { 0xe240000000000000ull, 0xfff0000000000020ull, OP8B, T(pred), N( "bra"), ON(7, u), ON(6, lmt), T(f0f8_0), BTARG },
1946 { 0xe230000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "pexit"), BTARG },
1947 { 0xe220000000000020ull, 0xfff0000000000020ull, OP8B, T(pred), N( "jcal"), ON(6, noinc), C36_RZ_S16_20 },
1948 { 0xe220000000000000ull, 0xfff0000000000020ull, OP8B, T(pred), N( "jcal"), ON(6, noinc), U32_20 },
1949 { 0xe210000000000020ull, 0xfff0000000000020ull, OP8B, T(pred), N( "jmp"), ON(7, u), ON(6, lmt), T(f0f8_0), C36_RZ_S16_20 },
1950 { 0xe210000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "jmp"), ON(7, u), ON(6, lmt), T(f0f8_0), U32_20 },
1951 { 0xe200000000000020ull, 0xfff0000000000020ull, OP8B, T(pred), N( "jmx"), ON(6, lmt), T(f0f8_0), REG_08, C36_08_S16_20 },
1952 { 0xe200000000000000ull, 0xfff0000000000020ull, OP8B, T(pred), N( "jmx"), ON(6, lmt), T(f0f8_0), REG_08, S32_20 },
1953 { 0xe00000000000ff00ull, 0xff0000400000ff00ull, OP8B, T(pred), N( "ipa"), T(e000_0), T(e000_1), ON(51, sat), REG_00, AMEM28, REG_20, REG_39, T(pred47) },
1954 { 0xe000004000000000ull, 0xff00004000000000ull, OP8B, T(pred), N( "ipa"), N("idx"), T(e000_0), T(e000_1), ON(51, sat), REG_00, AMEMIDX, REG_20, REG_39, T(pred39) },
1955 { 0xdf60000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "tmml"), N("b"), N("lod"), ON(35, ndv), ON(49, nodep), REG_00, REG_08, REG_20, N("0x0"), ON(28, array), T(df60_0), U04_31 },
1956 { 0xdf58000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "tmml"), N("lod"), ON(35, ndv), ON(49, nodep), REG_00, REG_08, U13_36, ON(28, array), T(df60_0), U04_31 },
1957 { 0xdf50000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "txq"), N("b"), ON(49, nodep), REG_00, REG_08, T(df50_0), U13_36, U04_31 },
1958 { 0xdf48000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "txq"), ON(49, nodep), REG_00, REG_08, T(df50_0), U13_36, U04_31 },
1959 { 0xdf40000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "txa"), ON(35, ndv), ON(49, nodep), REG_00, REG_08, U13_36, U04_31 },
1960 { 0xdf00000000000000ull, 0xff40000000000000ull, OP8B, T(pred), N( "tld4s"), ONV(55, f16, F_SM60), T(df00_0), ON(51, aoffi), ON(50, dc), ON(49, nodep), REG_28, REG_00, REG_08, REG_20, U13_36 },
1961 { 0xdef8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "tld4"), T(def8_0), N("b"), T(def8_1), ON(50, dc), ON(35, ndv), ON(49, nodep), REG_00, REG_08, REG_20, N("0x0"), ON(28, array), T(df60_0), U04_31 },
1962 { 0xdeb8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "tex"), N("b"), T(deb8_0), ON(36, aoffi), ON(50, dc), ON(35, ndv), ON(49, nodep), REG_00, REG_08, REG_20, N("0x0"), ON(28, array), T(df60_0), U04_31 },
1963 { 0xde78000000000000ull, 0xfffc000000000000ull, OP8B, T(pred), N( "txd"), N("b"), ON(35, aoffi), ON(49, nodep), REG_00, REG_08, REG_20, N("0x0"), ON(28, array), T(df60_0), U04_31 },
1964 { 0xde38000000000000ull, 0xfffc000000000000ull, OP8B, T(pred), N( "txd"), ON(35, aoffi), ON(49, nodep), REG_00, REG_08, REG_20, U13_36, ON(28, array), T(df60_0), U04_31 },
1965 { 0xdd38000000000000ull, 0xff38000000000000ull, OP8B, T(pred), N( "tld"), N("b"), T(dc38_0), ON(35, aoffi), ON(50, ms), ON(54, cl), ON(49, nodep), REG_00, REG_08, REG_20, N("0x0"), ON(28, array), T(df60_0), U04_31 },
1966 { 0xdc38000000000000ull, 0xff38000000000000ull, OP8B, T(pred), N( "tld"), T(dc38_0), ON(35, aoffi), ON(50, ms), ON(54, cl), ON(49, nodep), REG_00, REG_08, REG_20, U13_36, ON(28, array), T(df60_0), U04_31 },
1967 { 0xd200000000000000ull, 0xf600000000000000ull, OP8B, T(pred), N( "tlds"), ZNV(59, f16, F_SM60), T(d200_0), ON(49, nodep), REG_28, REG_00, REG_08, REG_20, U13_36, T(d200_1), T(d200_2) },
1968 { 0xd000000000000000ull, 0xf600000000000000ull, OP8B, T(pred), N( "texs"), ZNV(59, f16, F_SM60), T(d000_0), ON(49, nodep), REG_28, REG_00, REG_08, REG_20, U13_36, T(d000_1), T(d200_2) },
1969 { 0xc838000000000000ull, 0xfc38000000000000ull, OP8B, T(pred), N( "tld4"), T(c838_0), T(c838_1), ON(50, dc), ON(35, ndv), ON(49, nodep), REG_00, REG_08, REG_20, U13_36, ON(28, array), T(df60_0), U04_31 },
1970 { 0xc038000000000000ull, 0xfc38000000000000ull, OP8B, T(pred), N( "tex"), T(c038_0), ON(54, aoffi), ON(50, dc), ON(49, nodep), REG_00, REG_08, REG_20, U13_36, ON(28, array), T(df60_0), U04_31 },
1971 { 0xa000000000000000ull, 0xe000000000000000ull, OP8B, T(pred), N( "st"), ON(52, e), T(a000_0), T(a000_1), GMEM, REG_00, PRED58},
1972 { 0x8000000000000000ull, 0xe000000000000000ull, OP8B, T(pred), N( "ld"), ON(52, e), T(8000_0), T(a000_1), REG_00, GMEM, PRED58},
1973 { 0x7e80000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "hsetp2"), T(7c00_0), ON(53, h_and), ON(6, ftz), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(56, neg), ON(54, abs), C34_RZ_O14_20, ON(42, not), PRED39, .fmask = F_SM60 },
1974 { 0x7e00000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "hsetp2"), T(7c00_0), ON(53, h_and), ON(6, ftz), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(56, neg), U09_30, ON(29, neg), U09_20, ON(42, not), PRED39, .fmask = F_SM60 },
1975 { 0x7c80000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "hset2"), ON(53, bf), T(7c00_0), ON(54, ftz), T(5bb0_1), REG_00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(56, neg), ON(54, abs), C34_RZ_O14_20, ON(42, not), PRED39, .fmask = F_SM60 },
1976 { 0x7c00000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "hset2"), ON(53, bf), T(7c00_0), ON(54, ftz), T(5bb0_1), REG_00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(56, neg), U09_30, ON(29, neg), U09_20, ON(42, not), PRED39, .fmask = F_SM60 },
1977 { 0x7a00000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "hadd2"), ON(39, ftz), ON(52, sat), T(5d10_0), REG_00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(56, neg), U09_30, ON(29, neg), U09_20, .fmask = F_SM60 },
1978 { 0x7a80000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "hadd2"), ON(39, ftz), ON(52, sat), T(5d10_0), REG_00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(56, neg), ON(54, abs), C34_RZ_O14_20, .fmask = F_SM60 },
1979 { 0x7800000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "hmul2"), T(5d08_0), ON(52, sat), T(5d10_0), REG_00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(56, neg), U09_30, ON(29, neg), U09_20, .fmask = F_SM60 },
1980 { 0x7880000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "hmul2"), T(5d08_0), ON(52, sat), T(5d10_0), REG_00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(54, abs), C34_RZ_O14_20, .fmask = F_SM60 },
1981 { 0x7080000000000000ull, 0xf880000000000000ull, OP8B, T(pred), N( "hfma2"), T(6080_0), ON(52, sat), T(5d10_0), REG_00, T(5d10_1), REG_08, ON(56, neg), C34_RZ_O14_20, ON(51, neg), T(2c00_0), REG_39, .fmask = F_SM60 },
1982 { 0x7000000000000000ull, 0xf880000000000000ull, OP8B, T(pred), N( "hfma2"), T(6080_0), ON(52, sat), T(5d10_0), REG_00, T(5d10_1), REG_08, ON(56, neg), U09_30, ON(29, neg), U09_20, ON(51, neg), T(2c00_0), REG_39, .fmask = F_SM60 },
1983 { 0x6080000000000000ull, 0xf880000000000000ull, OP8B, T(pred), N( "hfma2"), T(6080_0), ON(52, sat), T(5d10_0), REG_00, T(5d10_1), REG_08, ON(56, neg), T(2c00_0), REG_39, ON(51, neg), C34_RZ_O14_20, .fmask = F_SM60 },
1984 { 0x5f00000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "vmad"), T(5f00_0), T(5f00_2), ON(55, sat), ON(47, cc), REG_00, T(5f00_3), REG_08, T(50f0_1), REG_39 },
1985 { 0x5d20000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "hsetp2"), T(5d18_0), ON(49, h_and), ON(6, ftz), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(31, neg), ON(30, abs), T(5d10_2), REG_20, ON(42, not), PRED39, .fmask = F_SM60 },
1986 { 0x5d18000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "hset2"), ON(49, bf), T(5d18_0), ON(50, ftz), T(5bb0_1), REG_00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(31, neg), ON(30, abs), T(5d10_2), REG_20, ON(42, not), PRED39, .fmask = F_SM60 },
1987 { 0x5d10000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "hadd2"), ON(39, ftz), ON(32, sat), T(5d10_0), REG_00, ON(43, neg), ON(44, abs), T(5d10_1), REG_08, ON(31, neg), ON(30, abs), T(5d10_2), REG_20, .fmask = F_SM60 },
1988 { 0x5d08000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "hmul2"), T(5d08_0), ON(32, sat), T(5d10_0), REG_00, ON(44, abs), T(5d10_1), REG_08, ON(31, neg), ON(30, abs), T(5d10_2), REG_20, .fmask = F_SM60 },
1989 { 0x5d00000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "hfma2"), T(5d00_0), ON(32, sat), T(5d10_0), REG_00, T(5d10_1), REG_08, ON(31, neg), T(5d10_2), REG_20, ON(30, neg), T(5d00_1), REG_39, .fmask = F_SM60 },
1990 { 0x5cf8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "shf"), N("r"), ON(50, w), T(5cf8_1), T(5cf8_0), ON(47, cc), REG_00, REG_08, REG_20, REG_39 },
1991 { 0x5cf0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "r2p"), T(5cf0_0), T(5cf0_1), REG_08, REG_20 },
1992 { 0x5ce8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "p2r"), T(5cf0_1), REG_00, T(5cf0_0), REG_08, REG_20 },
1993 { 0x5ce0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "i2i"), T(5ce0_0), T(5ce0_1), ON(50, sat), ON(47, cc), REG_00, T(5cf0_1), ON(45, neg), ON(49, abs), REG_20 },
1994 { 0x5cc0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "iadd3"), T(5cc0_0), ON(48, x), ON(47, cc), REG_00, ON(51, neg), T(5cc0_1), REG_08, ON(50, neg), T(5cc0_2), REG_20, ON(49, neg), T(5cc0_3), REG_39 },
1995 { 0x5cb8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "i2f"), T(5cb8_0), T(5cb8_1), T(5cb8_2), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), T(5cf0_1), REG_20 },
1996 { 0x5cb0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "f2i"), ON(44, ftz), T(5cb0_2), T(5cb0_0), T(5cb0_1), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), REG_20 },
1997 { 0x5ca8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "f2f"), ON(44, ftz), T(5cb0_0), T(5cb8_0), T(5ca8_0), ON(50, sat), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), REG_20},
1998 { 0x5ca0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "sel"), REG_00, REG_08, REG_20, T(pred39) },
1999 { 0x5c98000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "mov"), REG_00, REG_20, U04_39 },
2000 { 0x5c90000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "rro"), T(5c90_0), REG_00, ON(45, neg), ON(49, abs), REG_20 },
2001 { 0x5c88000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fchk"), T(5c88_0), PRED03, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), REG_20 },
2002 { 0x5c80000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "dmul"), T(5cb8_2), ON(47, cc), REG_00, REG_08, ON(48, neg), REG_20 },
2003 { 0x5c70000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "dadd"), T(5cb8_2), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), REG_20 },
2004 { 0x5c68000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fmul"), T(5c68_0), T(5c68_1), T(5cb8_2), ON(50, sat), ON(47, cc), REG_00, REG_08, ON(48, neg), REG_20 },
2005 { 0x5c60000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fmnmx"), ON(44, ftz), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), REG_20, T(pred39) },
2006 { 0x5c58000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fadd"), ON(44, ftz), ON(50, sat), T(5cb8_2), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), REG_20 },
2007 { 0x5c50000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "dmnmx"), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), REG_20, T(pred39) },
2008 { 0x5c48000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "shl"), ON(39, w), ON(43, x), ON(47, cc), REG_00, REG_08, REG_20 },
2009 { 0x5c40000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "lop"), T(5c40_0), ON(43, x), T(5c40_1), PRED48, ON(47, cc), REG_00, ON(39, inv), REG_08, ON(40, inv), REG_20 },
2010 { 0x5c38000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "imul"), T(5c38_0), T(5c38_1), ON(39, hi), ON(47, cc), REG_00, REG_08, REG_20 },
2011 { 0x5c30000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "flo"), T(5c30_0), ON(41, sh), ON(47, cc), REG_00, ON(40, inv), REG_20 },
2012 { 0x5c28000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "shr"), T(5c30_0), ON(39, w), ON(44, x), ON(40, brev), ON(47, cc), REG_00, REG_08, REG_20 },
2013 { 0x5c20000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "imnmx"), T(5c30_0), T(5c20_0), ON(47, cc), REG_00, REG_08, REG_20, T(pred39) },
2014 { 0x5c18000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "iscadd"), ON(47, cc), REG_00, ON(49, neg), REG_08, ON(48, neg), REG_20, U05_39 },
2015 { 0x5c10000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "iadd"), ON(50, sat), ON(43, x), ON(47, cc), REG_00, ON(49, neg), REG_08, ON(48, neg), REG_20 },
2016 { 0x5c08000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "popc"), REG_00, ON(40, inv), REG_20 },
2017 { 0x5c00000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "bfe"), T(5c30_0), ON(40, brev), ON(47, cc), REG_00, REG_08, REG_20 },
2018 { 0x5bf8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "shf"), N("l"), ON(50, w), T(5cf8_1), T(5cf8_0), ON(47, cc), REG_00, REG_08, REG_20, REG_39 },
2019 { 0x5bf0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "bfi"), ON(47, cc), REG_00, REG_08, REG_20, REG_39 },
2020 { 0x5be0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "lop3"), N("lut"), ON(38, x), T(5be0_0), PRED48, ON(47, cc), REG_00, REG_08, REG_20, REG_39, U08_28 },
2021 { 0x5bd8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "lea"), N("hi"), ON(38, x), PRED48, ON(47, cc), REG_00, ON(37, neg), REG_08, REG_20, REG_39, U05_28 },
2022 { 0x5bd0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "lea"), ON(46, x), PRED48, ON(47, cc), REG_00, ON(45, neg), REG_08, REG_20, U05_39 },
2023 { 0x5bc0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "prmt"), T(5bc0_0), REG_00, REG_08, REG_20, REG_39 },
2024 { 0x5bb0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "fsetp"), T(5bb0_0), ON(47, ftz), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(7, abs), REG_08, ON(6, neg), ON(44, abs), REG_20, T(pred39) },
2025 { 0x5ba0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "fcmp"), T(5bb0_0), ON(47, ftz), REG_00, REG_08, REG_20, REG_39 },
2026 { 0x5b80000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "dsetp"), T(5bb0_0), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(7, abs), REG_08, ON(6, neg), ON(44, abs), REG_20, T(pred39) },
2027 { 0x5b70000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "dfma"), T(5b70_0), ON(47, cc), REG_00, REG_08, ON(48, neg), REG_20, ON(49, neg), REG_39 },
2028 { 0x5b60000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "isetp"), T(5b60_0), T(5c30_0), ON(43, x), T(5bb0_1), PRED03, PRED00, REG_08, REG_20, T(pred39) },
2029 { 0x5b50000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "iset"), ON(44, bf), T(5b60_0), T(5c30_0), ON(43, x), T(5bb0_1), ON(47, cc), REG_00, REG_08, REG_20, T(pred39) },
2030 { 0x5b40000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "icmp"), T(5b60_0), T(5c30_0), REG_00, REG_08, REG_20, REG_39 },
2031 { 0x5b00000000000000ull, 0xffc0000000000000ull, OP8B, T(pred), N( "xmad"), T(5b00_0), ON(36, psl), ON(37, mrg), T(5b00_1), ON(38, x), ON(47, cc), REG_00, ON(53, h1), REG_08, ON(35, h1), REG_20, REG_39 },
2032 { 0x5a80000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "imadsp"), T(5a80_0), T(5a80_1), T(5a80_2), ON(47, cc), REG_00, REG_08, REG_20, REG_39 },
2033 { 0x5a00000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "imad"), T(5a00_0), T(5a00_1), ON(54, hi), ON(50, sat), ON(49, x), ON(47, c), REG_00, REG_08, REG_20, REG_39 },
2034 { 0x5980000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "ffma"), T(5980_0), T(5980_1), ON(50, sat), ON(47, cc), REG_00, REG_08, ON(48, neg), REG_20, ON(49, neg), REG_39 },
2035 { 0x5900000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "dset"), ON(52, bf), T(5bb0_0), T(5bb0_1), ON(47, cc), REG_00, ON(43, neg), ON(54, abs), REG_08, ON(53, neg), ON(44, abs), REG_20, T(pred39) },
2036 { 0x5800000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "fset"), ON(52, bf), T(5bb0_0), T(5bb0_1), ON(55, ftz), ON(47, cc), REG_00, ON(43, neg), ON(54, abs), REG_08, ON(53, neg), ON(44, abs), REG_20, T(pred39) },
2037 { 0x5700000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "vshl"), T(5700_0), T(5700_1), T(5700_2), ON(49, w), ON(55, sat), T(5700_3), ON(47, cc), REG_00, T(5f00_3), REG_08, U16_20, REG_39 },
2038 { 0x5600000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "vshr"), T(5700_0), T(5700_1), T(5700_2), ON(49, w), ON(55, sat), T(5700_3), ON(47, cc), REG_00, T(5f00_3), REG_08, U16_20, REG_39 },
2039 { 0x5400000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "vabsdiff"), ON(54, sd), T(5700_1), ON(55, sat), T(5700_3), ON(47, cc), REG_00, T(5f00_3), REG_08, T(50f0_1), REG_39 },
2040 { 0x53f8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "idp"), T(53d8_0), REG_00, REG_08, T(53d8_1), REG_20, REG_39, .fmask = F_SM60 },
2041 { 0x53f0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "bfi"), ON(47, cc), REG_00, REG_08, REG_39, C34_RZ_O14_20 },
2042 { 0x53d8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "idp"), T(53d8_0), REG_00, REG_08, T(53d8_1), C34_RZ_O14_20, REG_39, .fmask = F_SM60 },
2043 { 0x53c0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "prmt"), T(5bc0_0), REG_00, REG_08, REG_39, C34_RZ_O14_20 },
2044 { 0x53a0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "fcmp"), T(5bb0_0), ON(47, ftz), REG_00, REG_08, REG_39, C34_RZ_O14_20 },
2045 { 0x5370000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "dfma"), T(5b70_0), ON(47, cc), REG_00, REG_08, ON(48, neg), REG_39, ON(49, neg), C34_RZ_O14_20 },
2046 { 0x5340000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "icmp"), T(5b60_0), T(5c30_0), REG_00, REG_08, REG_39, C34_RZ_O14_20 },
2047 { 0x5280000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "imadsp"), T(5a80_0), T(5a80_1), T(5a80_2), ON(47, cc), REG_00, REG_08, REG_39, C34_RZ_O14_20 },
2048 { 0x5200000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "imad"), T(5a00_0), T(5a00_1), ON(54, hi), ON(50, sat), ON(49, x), ON(47, c), REG_00, REG_08, REG_39, C34_RZ_O14_20 },
2049 { 0x5180000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "ffma"), T(5980_0), T(5980_1), ON(50, sat), ON(47, cc), REG_00, REG_08, ON(48, neg), REG_39, ON(49, neg), C34_RZ_O14_20 },
2050 { 0x5100000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "xmad"), T(5b00_0), T(5100_0), ON(54, x), ON(47, cc), REG_00, ON(53, h1), REG_08, ON(52, h1), REG_39, C34_RZ_O14_20 },
2051 { 0x50f8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fswzadd"), ON(44, ftz), T(5cb8_2), ON(38, ndv), ON(47, cc), REG_00, REG_08, REG_20, U08_28 },
2052 { 0x50f0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "vsetp"), T(50f0_0), T(5700_1), T(5bb0_1), PRED03, PRED00, T(5f00_3), REG_08, T(50f0_1), T(pred39) },
2053 { 0x50e0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "vote"), N("vtg"), T(50e0_0), U24_20 },
2054 { 0x50d8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "vote"), T(50d8_0), REG_00, PRED45, T(pred39) },
2055 { 0x50d0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "lepc"), REG_00 },
2056 { 0x50c8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "cs2r"), REG_00, SYS_20 },
2057 { 0x50b0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "nop"), ON(13, trig), T(50b0_0), U16_20 },
2058 { 0x50a0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "csetp"), T(50b0_0), T(5bb0_1), PRED03, PRED00, N("cc"), T(pred39) },
2059 { 0x5098000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "cset"), ON(44, bf), T(50b0_0), T(5bb0_1), REG_00, N("cc"), T(pred39) },
2060 { 0x5090000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "psetp"), T(5090_0), T(5bb0_1), PRED03, PRED00, T(pred12), T(pred29), T(pred39) },
2061 { 0x5088000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "pset"), ON(44, bf), T(5090_0), T(5bb0_1), ON(47, cc), REG_00, T(pred12), T(pred29), T(pred39) },
2062 { 0x5080000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "mufu"), T(5080_0), ON(50, sat), REG_00, ON(48, neg), ON(46, abs), REG_08 },
2063 { 0x5000000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "vabsdiff4"), ON(38, sd), T(5000_0), T(5000_1), ON(50, sat), T(5000_5), T(5000_2), REG_00, T(5000_3), REG_08, T(5000_4), REG_20, REG_39 },
2064 { 0x4e00000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "xmad"), T(5b00_0), ON(55, psl), ON(56, mrg), T(5100_0), ON(54, x), ON(47, cc), REG_00, ON(53, h1), REG_08, ON(52, h1), C34_RZ_O14_20, REG_39 },
2065 { 0x4cf0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "r2p"), T(5cf0_0), T(5cf0_1), REG_08, C34_RZ_O14_20 },
2066 { 0x4ce8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "p2r"), T(5cf0_1), REG_00, T(5cf0_0), REG_08, C34_RZ_O14_20 },
2067 { 0x4ce0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "i2i"), T(5ce0_0), T(5ce0_1), ON(50, sat), ON(47, cc), REG_00, T(5cf0_1), ON(45, neg), ON(49, abs), C34_RZ_O14_20 },
2068 { 0x4cc0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "iadd3"), ON(48, x), ON(47, cc), REG_00, ON(51, neg), REG_08, ON(50, neg), C34_RZ_O14_20, ON(49, neg), REG_39 },
2069 { 0x4cb8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "i2f"), T(5cb8_0), T(5cb8_1), T(5cb8_2), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), T(5cf0_1), C34_RZ_O14_20 },
2070 { 0x4cb0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "f2i"), ON(44, ftz), T(5cb0_2), T(5cb0_0), T(5cb0_1), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), C34_RZ_O14_20 },
2071 { 0x4ca8000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "f2f"), ON(44, ftz), T(5cb0_0), T(5cb8_0), T(5ca8_0), ON(50, sat), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), C34_RZ_O14_20 },
2072 { 0x4ca0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "sel"), REG_00, REG_08, C34_RZ_O14_20, T(pred39) },
2073 { 0x4c98000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "mov"), REG_00, C34_RZ_O14_20, U04_39 },
2074 { 0x4c90000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "rro"), T(5c90_0), REG_00, ON(45, neg), ON(49, abs), C34_RZ_O14_20 },
2075 { 0x4c88000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fchk"), T(5c88_0), PRED03, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), C34_RZ_O14_20 },
2076 { 0x4c80000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "dmul"), T(5cb8_2), ON(47, cc), REG_00, REG_08, ON(48, neg), C34_RZ_O14_20 },
2077 { 0x4c70000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "dadd"), T(5cb8_2), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), C34_RZ_O14_20 },
2078 { 0x4c68000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fmul"), T(5c68_0), T(5c68_1), T(5cb8_2), ON(50, sat), ON(47, cc), REG_00, REG_08, ON(48, neg), C34_RZ_O14_20 },
2079 { 0x4c60000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fmnmx"), ON(44, ftz), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), C34_RZ_O14_20, T(pred39) },
2080 { 0x4c58000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "fadd"), ON(44, ftz), ON(50, sat), T(5cb8_2), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), C34_RZ_O14_20 },
2081 { 0x4c50000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "dmnmx"), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), C34_RZ_O14_20, T(pred39) },
2082 { 0x4c48000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "shl"), ON(39, w), ON(43, x), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20 },
2083 { 0x4c40000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "lop"), T(5c40_0), ON(43, x), T(5c40_1), PRED48, ON(47, cc), REG_00, ON(39, inv), REG_08, ON(40, inv), C34_RZ_O14_20 },
2084 { 0x4c38000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "imul"), T(5c38_0), T(5c38_1), ON(39, hi), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20 },
2085 { 0x4c30000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "flo"), T(5c30_0), ON(41, sh), ON(47, cc), REG_00, ON(40, inv), C34_RZ_O14_20 },
2086 { 0x4c28000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "shr"), T(5c30_0), ON(39, w), ON(44, x), ON(40, brev), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20 },
2087 { 0x4c20000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "imnmx"), T(5c30_0), T(5c20_0), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20, T(pred39) },
2088 { 0x4c18000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "iscadd"), ON(47, cc), REG_00, ON(49, neg), REG_08, ON(48, neg), C34_RZ_O14_20, U05_39 },
2089 { 0x4c10000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "iadd"), ON(50, sat), ON(43, x), ON(47, cc), REG_00, ON(49, neg), REG_08, ON(48, neg), C34_RZ_O14_20 },
2090 { 0x4c08000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "popc"), REG_00, ON(40, inv), C34_RZ_O14_20 },
2091 { 0x4c00000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "bfe"), T(5c30_0), ON(40, brev), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20 },
2092 { 0x4bf0000000000000ull, 0xfff8000000000000ull, OP8B, T(pred), N( "bfi"), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20, REG_39 },
2093 { 0x4bd0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "lea"), ON(46, x), PRED48, ON(47, cc), REG_00, ON(45, neg), REG_08, C34_RZ_O14_20, U05_39 },
2094 { 0x4bc0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "prmt"), T(5bc0_0), REG_00, REG_08, C34_RZ_O14_20, REG_39 },
2095 { 0x4bb0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "fsetp"), T(5bb0_0), ON(47, ftz), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(7, abs), REG_08, ON(6, neg), ON(44, abs), C34_RZ_O14_20, T(pred39) },
2096 { 0x4ba0000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "fcmp"), T(5bb0_0), ON(47, ftz), REG_00, REG_08, C34_RZ_O14_20, REG_39 },
2097 { 0x4b80000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "dsetp"), T(5bb0_0), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(7, abs), REG_08, ON(6, neg), ON(44, abs), C34_RZ_O14_20, T(pred39) },
2098 { 0x4b70000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "dfma"), T(5b70_0), ON(47, cc), REG_00, REG_08, ON(48, neg), C34_RZ_O14_20, ON(49, neg), REG_39 },
2099 { 0x4b60000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "isetp"), T(5b60_0), T(5c30_0), ON(43, x), T(5bb0_1), PRED03, PRED00, REG_08, C34_RZ_O14_20, T(pred39) },
2100 { 0x4b50000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "iset"), ON(44, bf), T(5b60_0), T(5c30_0), ON(43, x), T(5bb0_1), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20, T(pred39) },
2101 { 0x4b40000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "icmp"), T(5b60_0), T(5c30_0), REG_00, REG_08, C34_RZ_O14_20, REG_39 },
2102 { 0x4a80000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "imadsp"), T(5a80_0), T(5a80_1), T(5a80_2), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20, REG_39 },
2103 { 0x4a00000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "imad"), T(5a00_0), T(5a00_1), ON(54, hi), ON(50, sat), ON(49, x), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20, REG_39 },
2104 { 0x4980000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "ffma"), T(5980_0), T(5980_1), ON(50, sat), ON(47, cc), REG_00, REG_08, ON(48, neg), C34_RZ_O14_20, ON(49, neg), REG_39 },
2105 { 0x4900000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "dset"), ON(52, bf), T(5bb0_0), T(5bb0_1), ON(47, cc), REG_00, ON(43, neg), ON(54, abs), REG_08, ON(53, neg), ON(44, abs), C34_RZ_O14_20, T(pred39) },
2106 { 0x4800000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "fset"), ON(52, bf), T(5bb0_0), T(5bb0_1), ON(55, ftz), ON(47, cc), REG_00, ON(43, neg), ON(54, abs), REG_08, ON(53, neg), ON(44, abs), C34_RZ_O14_20, T(pred39) },
2107 { 0x4000000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "vset"), T(50f0_0), T(5700_1), T(5700_3), ON(47, cc), REG_00, T(5f00_3), REG_08, T(50f0_1), REG_39 },
2108 { 0x3c00000000000000ull, 0xfc00000000000000ull, OP8B, T(pred), N( "lop3"), N("lut"), ON(47, cc), REG_00, REG_08, S20_20, U08_48 },
2109 { 0x3a00000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "vmnmx"), T(5700_0), T(5700_1), T(5700_3), ON(47, cc), REG_00, T(5f00_3), REG_08, T(50f0_1), REG_39 },
2110 { 0x38f8000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "shf"), N("r"), ON(50, w), T(5cf8_1), T(5cf8_0), ON(47, cc), REG_00, REG_08, U06_20, REG_39 },
2111 { 0x38f0000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "r2p"), T(5cf0_0), T(5cf0_1), REG_08, S20_20 },
2112 { 0x38e8000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "p2r"), T(5cf0_1), REG_00, T(5cf0_0), REG_08, S20_20 },
2113 { 0x38e0000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "i2i"), T(5ce0_0), T(5ce0_1), ON(50, sat), ON(47, cc), REG_00, T(5cf0_1), ON(45, neg), ON(49, abs), S20_20 },
2114 { 0x38c0000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "iadd3"), ON(48, x), ON(47, cc), REG_00, ON(51, neg), REG_08, ON(50, neg), S20_20, ON(49, neg), REG_39 },
2115 { 0x38b8000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "i2f"), T(5cb8_0), T(5cb8_1), T(5cb8_2), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), T(5cf0_1), S20_20 },
2116 { 0x38b0000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "f2i"), ON(44, ftz), T(5cb0_2), T(5cb0_0), T(5cb0_1), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), F20_20 },
2117 { 0x38a8000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "f2f"), ON(44, ftz), T(5cb0_0), T(5cb8_0), T(5ca8_0), ON(50, sat), ON(47, cc), REG_00, ON(45, neg), ON(49, abs), F20_20},
2118 { 0x38a0000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "sel"), REG_00, REG_08, S20_20, T(pred39) },
2119 { 0x3898000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "mov"), REG_00, S20_20, U04_39 },
2120 { 0x3890000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "rro"), T(5c90_0), REG_00, ON(45, neg), ON(49, abs), F20_20 },
2121 { 0x3888000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "fchk"), T(5c88_0), PRED03, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), F20_20 },
2122 { 0x3880000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "dmul"), T(5cb8_2), ON(47, cc), REG_00, REG_08, ON(48, neg), D20_20 },
2123 { 0x3870000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "dadd"), T(5cb8_2), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), D20_20 },
2124 { 0x3868000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "fmul"), T(5c68_0), T(5c68_1), T(5cb8_2), ON(50, sat), ON(47, cc), REG_00, REG_08, ON(48, neg), F20_20 },
2125 { 0x3860000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "fmnmx"), ON(44, ftz), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), F20_20, T(pred39) },
2126 { 0x3858000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "fadd"), ON(44, ftz), ON(50, sat), T(5cb8_2), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), F20_20 },
2127 { 0x3850000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "dmnmx"), ON(47, cc), REG_00, ON(48, neg), ON(46, abs), REG_08, ON(45, neg), ON(49, abs), D20_20, T(pred39) },
2128 { 0x3848000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "shl"), ON(39, w), ON(43, x), ON(47, cc), REG_00, REG_08, S20_20 },
2129 { 0x3840000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "lop"), T(5c40_0), ON(43, x), T(5c40_1), PRED48, ON(47, cc), REG_00, ON(39, inv), REG_08, ON(40, inv), S20_20 },
2130 { 0x3838000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "imul"), T(5c38_0), T(5c38_1), ON(39, hi), ON(47, cc), REG_00, REG_08, S20_20 },
2131 { 0x3830000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "flo"), T(5c30_0), ON(41, sh), ON(47, cc), REG_00, ON(40, inv), S20_20 },
2132 { 0x3828000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "shr"), T(5c30_0), ON(39, w), ON(44, x), ON(40, brev), ON(47, cc), REG_00, REG_08, S20_20 },
2133 { 0x3820000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "imnmx"), T(5c30_0), T(5c20_0), ON(47, cc), REG_00, REG_08, S20_20, T(pred39) },
2134 { 0x3818000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "iscadd"), ON(47, cc), REG_00, ON(49, neg), REG_08, ON(48, neg), S20_20, U05_39 },
2135 { 0x3810000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "iadd"), ON(50, sat), ON(43, x), ON(47, cc), REG_00, ON(49, neg), REG_08, ON(48, neg), S20_20 },
2136 { 0x3808000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "popc"), REG_00, ON(40, inv), S20_20 },
2137 { 0x3800000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "bfe"), T(5c30_0), ON(40, brev), ON(47, cc), REG_00, REG_08, S20_20 },
2138 { 0x36f8000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "shf"), N("l"), ON(50, w), T(5cf8_1), T(5cf8_0), ON(47, cc), REG_00, REG_08, S20_20, REG_39 },
2139 { 0x36f0000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "bfi"), ON(47, cc), REG_00, REG_08, S20_20, REG_39 },
2140 { 0x36d0000000000000ull, 0xfef8000000000000ull, OP8B, T(pred), N( "lea"), ON(46, x), PRED48, ON(47, cc), REG_00, ON(45, neg), REG_08, S20_20, U05_39 },
2141 { 0x36c0000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "prmt"), T(5bc0_0), REG_00, REG_08, S20_20, REG_39 },
2142 { 0x36b0000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "fsetp"), T(5bb0_0), ON(47, ftz), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(7, abs), REG_08, ON(6, neg), ON(44, abs), F20_20, T(pred39) },
2143 { 0x36a0000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "fcmp"), T(5bb0_0), ON(47, ftz), REG_00, REG_08, F20_20, REG_39 },
2144 { 0x3680000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "dsetp"), T(5bb0_0), T(5bb0_1), PRED03, PRED00, ON(43, neg), ON(7, abs), REG_08, ON(6, neg), ON(44, abs), D20_20, T(pred39) },
2145 { 0x3670000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "dfma"), T(5b70_0), ON(47, cc), REG_00, REG_08, ON(48, neg), D20_20, ON(49, neg), REG_39 },
2146 { 0x3660000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "isetp"), T(5b60_0), T(5c30_0), ON(43, x), T(5bb0_1), PRED03, PRED00, REG_08, S20_20, T(pred39) },
2147 { 0x3650000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "iset"), ON(44, bf), T(5b60_0), T(5c30_0), ON(43, x), T(5bb0_1), ON(47, cc), REG_00, REG_08, S20_20, T(pred39) },
2148 { 0x3640000000000000ull, 0xfef0000000000000ull, OP8B, T(pred), N( "icmp"), T(5b60_0), T(5c30_0), REG_00, REG_08, S20_20, REG_39 },
2149 { 0x3600000000000000ull, 0xfec0000000000000ull, OP8B, T(pred), N( "xmad"), T(5b00_0), ON(36, psl), ON(37, mrg), T(5b00_1), ON(38, x), ON(47, cc), REG_00, ON(53, h1), REG_08, U16_20, REG_39 },
2150 { 0x3480000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "imadsp"), T(5a80_0), T(5a80_1), T(5a80_2), ON(47, cc), REG_00, REG_08, S20_20, REG_39 },
2151 { 0x3400000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "imad"), T(5a00_0), T(5a00_1), ON(54, hi), ON(50, sat), ON(49, x), ON(47, c), REG_00, REG_08, S20_20, REG_39 },
2152 { 0x3280000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "ffma"), T(5980_0), T(5980_1), ON(50, sat), ON(47, cc), REG_00, REG_08, ON(48, neg), F20_20, ON(49, neg), REG_39 },
2153 { 0x3200000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "dset"), ON(52, bf), T(5bb0_0), T(5bb0_1), ON(47, cc), REG_00, ON(43, neg), ON(54, abs), REG_08, ON(53, neg), ON(44, abs), D20_20, T(pred39) },
2154 { 0x3000000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "fset"), ON(52, bf), T(5bb0_0), T(5bb0_1), ON(55, ftz), ON(47, cc), REG_00, ON(43, neg), ON(54, abs), REG_08, ON(53, neg), ON(44, abs), F20_20, T(pred39) },
2155 { 0x2c00000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "hadd2_32i"), ON(55, ftz), ON(52, sat), REG_00, ON(56, neg), T(2c00_0), REG_08, U16_36, U16_20, .fmask = F_SM60 },
2156 { 0x2a00000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "hmul2_32i"), T(2a00_0), ON(52, sat), REG_00, T(2c00_0), REG_08, U16_36, U16_20, .fmask = F_SM60 },
2157 { 0x2800000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "hfma2_32i"), T(2a00_0), REG_00, T(2c00_0), REG_08, U16_36, U16_20, ON(52, neg), REG_00, .fmask = F_SM60 },
2158 { 0x2000000000000000ull, 0xfc00000000000000ull, OP8B, T(pred), N( "vadd"), T(5700_0), T(5700_1), T(5700_3), ON(47, cc), REG_00, T(5f00_3), REG_08, T(50f0_1), REG_39 },
2159 { 0x1f00000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "imul32i"), T(1f00_0), T(1f00_1), ON(53, hi), ON(52, cc), REG_00, REG_08, S32_20 },
2160 { 0x1e00000000000000ull, 0xff00000000000000ull, OP8B, T(pred), N( "fmul32i"), T(5980_0), ON(55, sat), ON(52, cc), REG_00, REG_08, F32_20 },
2161 { 0x1d80000000000000ull, 0xff80000000000000ull, OP8B, T(pred), N( "iadd32i"), N("po"), ON(54, sat), ON(53, x), ON(52, cc), REG_00, REG_08, S32_20 },
2162 { 0x1c00000000000000ull, 0xfe80000000000000ull, OP8B, T(pred), N( "iadd32i"), ON(54, sat), ON(53, x), ON(52, cc), REG_00, ON(56, neg), REG_08, S32_20 },
2163 { 0x1800000000000000ull, 0xfc00000000000000ull, OP8B, T(pred), N( "lea"), N("hi"), ON(57, x), PRED48, ON(47, cc), REG_00, ON(56, neg), REG_08, C34_RZ_O14_20, REG_39, U05_51 },
2164 { 0x1400000000000000ull, 0xfc00000000000000ull, OP8B, T(pred), N( "iscadd32i"), ON(52, cc), REG_00, REG_08, S32_20, U05_53 },
2165 { 0x1000000000000000ull, 0xfc00000000000000ull, OP8B, T(pred), N( "imad32i"), T(1f00_0), T(1000_0), ON(53, hi), ON(52, cc), REG_00, ON(56, neg), REG_08, S32_20, ON(55, neg), REG_00 /*hmm*/ },
2166 { 0x0c00000000000000ull, 0xfc00000000000000ull, OP8B, T(pred), N( "ffma32i"), T(5980_0), ON(55, sat), ON(52, cc), REG_00, ON(56, neg), REG_08, F32_20, ON(57, neg), REG_00 /*hmm*/ },
2167 { 0x0800000000000000ull, 0xfc00000000000000ull, OP8B, T(pred), N( "fadd32i"), ON(55, ftz), ON(52, cc), REG_00, ON(56, neg), ON(54, abs), REG_08, ON(53, neg), ON(57, abs), F32_20 },
2168 { 0x0400000000000000ull, 0xfc00000000000000ull, OP8B, T(pred), N( "lop32i"), T(0400_0), ON(57, x), ON(52, cc), REG_00, ON(55, inv), REG_08, ON(56, inv), U32_20 },
2169 { 0x0200000000000000ull, 0xfe00000000000000ull, OP8B, T(pred), N( "lop3"), N("lut"), ON(56, x), ON(47, cc), REG_00, REG_08, C34_RZ_O14_20, REG_39, U08_48 },
2170 { 0x0100000000000000ull, 0xfff0000000000000ull, OP8B, T(pred), N( "mov32i"), REG_00, U32_20, U04_12 },
2171 { 0, 0, OP8B, OOPS },
2174 static struct insn tabsched[] = {
2175 { 0x0000000000000000ull, 0x8000000000000000ull, OP8B, N( "sched"), T(sched0), T(sched1), T(sched2) },
2176 { 0, 0, OP8B, OOPS },
2179 static struct insn tabrootas[] = {
2180 { 0x0000000000000000ull, 0x8000000000000000ull, OP8B, N( "sched"), T(sched0), T(sched1), T(sched2) },
2181 { 0, 0, OP8B, T(root) },
2184 static void gm107_prep(struct disisa *isa) {
2185 isa->vardata = vardata_new("sm50isa");
2186 int f_sm50op = vardata_add_feature(isa->vardata, "sm50op", "SM50 exclusive opcodes");
2187 int f_sm52op = vardata_add_feature(isa->vardata, "sm52op", "SM52+ opcodes");
2188 int f_sm60op = vardata_add_feature(isa->vardata, "sm60op", "SM60 exclusive opcodes");
2189 if (f_sm50op == -1 || f_sm52op == -1 || f_sm60op == -1)
2190 abort();
2191 int vs_sm = vardata_add_varset(isa->vardata, "sm", "SM version");
2192 if (vs_sm == -1)
2193 abort();
2194 int v_sm50 = vardata_add_variant(isa->vardata, "sm50", "SM50:SM60", vs_sm);
2195 int v_sm52 = vardata_add_variant(isa->vardata, "sm52", "SM52+", vs_sm);
2196 int v_sm60 = vardata_add_variant(isa->vardata, "sm60", "SM60+", vs_sm);
2197 if (v_sm50 == -1 || v_sm52 == -1 || v_sm60 == -1)
2198 abort();
2199 vardata_variant_feature(isa->vardata, v_sm50, f_sm50op);
2200 vardata_variant_feature(isa->vardata, v_sm52, f_sm50op);
2201 vardata_variant_feature(isa->vardata, v_sm52, f_sm52op);
2202 vardata_variant_feature(isa->vardata, v_sm60, f_sm52op);
2203 vardata_variant_feature(isa->vardata, v_sm60, f_sm60op);
2204 if (vardata_validate(isa->vardata))
2205 abort();
2208 struct disisa gm107_isa_s = {
2209 tabroot,
2213 .prep = gm107_prep,
2214 .trootas = tabrootas,
2215 .tsched = tabsched,
2216 .schedpos = 0x20,