Lines Matching refs:bits
3 #define _BITS(bits, pos, width) (((bits) >> (pos)) & ((1 << (width)) - 1))
5 bi_disasm_fma_arshift_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
11 const char *lane2 = lane2_table[_BITS(bits, 9, 2)];
17 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
18 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
20 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
21 if (!(0x8 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
23 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
28 bi_disasm_fma_arshift_v2i16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
33 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
38 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
39 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
41 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
42 if (!(0x8 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
44 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
49 bi_disasm_fma_arshift_v2i16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
54 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
59 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
60 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
62 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
63 if (!(0x8 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
65 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
70 bi_disasm_fma_arshift_v4i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
75 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
80 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
81 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
83 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
84 if (!(0x8 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
86 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
91 bi_disasm_fma_arshift_v4i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
101 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
102 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
104 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
105 if (!(0x8 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
107 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
112 bi_disasm_fma_arshift_double_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
118 const char *bytes2 = bytes2_table[_BITS(bits, 9, 1)];
124 const char *lane2 = lane2_table[_BITS(bits, 10, 1)];
130 const char *result_word = result_word_table[_BITS(bits, 11, 1)];
137 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
138 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
140 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
141 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
143 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
149 bi_disasm_fma_atom_c_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
155 const char *atom_opc = atom_opc_table[_BITS(bits, 9, 4)];
162 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
163 if (!(0xf3 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
165 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
166 if (!(0xf3 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
168 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
169 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
173 bi_disasm_fma_atom_c_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
179 const char *atom_opc = atom_opc_table[_BITS(bits, 9, 4)];
186 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
187 if (!(0xf3 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
189 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
190 if (!(0xf3 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
192 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
193 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
197 bi_disasm_fma_atom_c1_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
203 const char *atom_opc = atom_opc_table[_BITS(bits, 6, 3)];
210 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
211 if (!(0xf3 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
213 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
214 if (!(0xf3 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
218 bi_disasm_fma_atom_c1_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
224 const char *atom_opc = atom_opc_table[_BITS(bits, 6, 3)];
231 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
232 if (!(0xf3 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
234 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
235 if (!(0xf3 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
239 bi_disasm_fma_atom_c1_return_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
245 const char *atom_opc = atom_opc_table[_BITS(bits, 6, 3)];
252 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
253 if (!(0xf3 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
255 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
256 if (!(0xf3 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
260 bi_disasm_fma_atom_c1_return_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
266 const char *atom_opc = atom_opc_table[_BITS(bits, 6, 3)];
273 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
274 if (!(0xf3 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
276 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
277 if (!(0xf3 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
281 bi_disasm_fma_atom_c_return_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
287 const char *atom_opc = atom_opc_table[_BITS(bits, 9, 4)];
294 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
295 if (!(0xf3 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
297 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
298 if (!(0xf3 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
300 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
301 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
305 bi_disasm_fma_atom_c_return_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
311 const char *atom_opc = atom_opc_table[_BITS(bits, 9, 4)];
318 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
319 if (!(0xf3 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
321 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
322 if (!(0xf3 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
324 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
325 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
329 bi_disasm_fma_atom_post_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
335 const char *atom_opc = atom_opc_table[_BITS(bits, 6, 4)];
342 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
343 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
345 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
346 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
350 bi_disasm_fma_atom_post_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
356 const char *atom_opc = atom_opc_table[_BITS(bits, 6, 4)];
363 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
364 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
366 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
367 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
371 bi_disasm_fma_atom_pre_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
377 const char *atom_opc = atom_opc_table[_BITS(bits, 9, 4)];
384 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
385 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
387 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
388 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
390 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
394 bi_disasm_fma_bitrev_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
400 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
401 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
405 bi_disasm_fma_clz_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
411 const char *mask = mask_table[_BITS(bits, 3, 1)];
418 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
419 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
423 bi_disasm_fma_clz_v2u16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
429 const char *mask = mask_table[_BITS(bits, 3, 1)];
435 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
442 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
443 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
448 bi_disasm_fma_clz_v4u8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
454 const char *mask = mask_table[_BITS(bits, 3, 1)];
461 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
462 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
466 bi_disasm_fma_csel_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
471 const char *cmpf = cmpf_table[(_BITS(bits, 12, 2) << 0)];
477 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
478 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
480 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
481 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
483 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
485 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
489 bi_disasm_fma_csel_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
494 const char *cmpf = cmpf_table[(_BITS(bits, 12, 3) << 0)];
500 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
501 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
503 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
504 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
506 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
508 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
512 bi_disasm_fma_csel_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
517 const char *cmpf = cmpf_table[(_BITS(bits, 12, 1) << 0)];
523 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
524 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
526 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
527 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
529 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
531 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
535 bi_disasm_fma_csel_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
540 const char *cmpf = cmpf_table[(_BITS(bits, 12, 1) << 0)];
546 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
547 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
549 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
550 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
552 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
554 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
558 bi_disasm_fma_csel_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
563 const char *cmpf = cmpf_table[(_BITS(bits, 12, 2) << 0)];
569 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
570 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
572 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
573 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
575 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
577 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
581 bi_disasm_fma_csel_v2i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
586 const char *cmpf = cmpf_table[(_BITS(bits, 12, 3) << 0)];
592 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
593 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
595 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
596 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
598 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
600 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
604 bi_disasm_fma_csel_v2s16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
609 const char *cmpf = cmpf_table[(_BITS(bits, 12, 1) << 0)];
615 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
616 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
618 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
619 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
621 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
623 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
627 bi_disasm_fma_csel_v2u16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
632 const char *cmpf = cmpf_table[(_BITS(bits, 12, 1) << 0)];
638 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
639 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
641 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
642 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
644 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
646 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
650 bi_disasm_fma_cubeface1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
655 const char *neg1 = neg1_table[(_BITS(bits, 9, 1) << 0)];
659 const char *neg0 = neg0_table[(_BITS(bits, 9, 1) << 0)];
663 const char *neg2 = neg2_table[(_BITS(bits, 9, 1) << 0)];
668 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
669 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
672 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
673 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
676 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
681 bi_disasm_fma_dtsel_imm(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
687 const char *table = table_table[_BITS(bits, 3, 2)];
694 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
695 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
699 bi_disasm_fma_f16_to_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
705 const char *lane0 = lane0_table[_BITS(bits, 3, 1)];
711 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
712 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
717 bi_disasm_fma_fadd_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
722 const char *widen1 = widen1_table[(_BITS(bits, 9, 3) << 0)];
726 const char *widen0 = widen0_table[(_BITS(bits, 9, 3) << 0)];
731 const char *abs1 = abs1_table[_BITS(bits, 6, 1)];
737 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
743 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
749 const char *abs0 = abs0_table[_BITS(bits, 12, 1)];
755 const char *round = round_table[_BITS(bits, 13, 2)];
761 const char *clamp = clamp_table[_BITS(bits, 15, 2)];
769 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
770 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
775 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
776 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
783 bi_disasm_fma_fadd_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
785 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
792 const char *abs0 = ordering ? abs0_1[(_BITS(bits, 6, 1) << 0)] : abs0_0[(_BITS(bits, 6, 1) << 0)];
799 const char *abs1 = ordering ? abs1_1[(_BITS(bits, 6, 1) << 0)] : abs1_0[(_BITS(bits, 6, 1) << 0)];
804 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
810 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
816 bits, 9, 2)];
822 const char *swz1 = swz1_table[_BITS(bits, 11, 2)];
828 const char *round = round_table[_BITS(bits, 13, 2)];
834 const char *clamp = clamp_table[_BITS(bits, 15, 2)];
842 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
843 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
848 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
849 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
856 bi_disasm_fma_fadd_lscale_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
862 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
868 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
874 const char *abs1 = abs1_table[_BITS(bits, 8, 1)];
880 const char *neg1 = neg1_table[_BITS(bits, 9, 1)];
886 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
887 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
891 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
892 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
898 bi_disasm_fma_fcmp_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
903 const char *widen1 = widen1_table[(_BITS(bits, 9, 3) << 0)];
907 const char *widen0 = widen0_table[(_BITS(bits, 9, 3) << 0)];
912 const char *abs1 = abs1_table[_BITS(bits, 6, 1)];
918 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
924 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
930 const char *abs0 = abs0_table[_BITS(bits, 12, 1)];
936 const char *cmpf = cmpf_table[_BITS(bits, 13, 3)];
942 const char *result_type = result_type_table[_BITS(bits, 16, 2)];
950 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
951 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
956 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
957 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
964 bi_disasm_fma_fcmp_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
966 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
973 const char *abs0 = ordering ? abs0_1[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 13, 3) << 1)] : abs0_0[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 13, 3) << 1)];
980 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 13, 3) << 1)] : cmpf_0[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 13, 3) << 1)];
987 const char *abs1 = ordering ? abs1_1[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 13, 3) << 1)] : abs1_0[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 13, 3) << 1)];
992 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
998 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
1004 const char *swz0 = swz0_table[_BITS(bits, 9, 2)];
1010 const char *swz1 = swz1_table[_BITS(bits, 11, 2)];
1016 const char *result_type = result_type_table[_BITS(bits, 16, 2)];
1024 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1025 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1030 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1031 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1038 bi_disasm_fma_flshift_double_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1044 const char *bytes2 = bytes2_table[_BITS(bits, 9, 1)];
1050 const char *lane2 = lane2_table[_BITS(bits, 10, 1)];
1056 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1057 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1059 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1060 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1062 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
1068 bi_disasm_fma_fma_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1073 const char *neg1 = neg1_table[(_BITS(bits, 9, 3) << 0) | (_BITS(bits, 17, 1) << 3)];
1077 const char *neg0 = neg0_table[(_BITS(bits, 9, 3) << 0) | (_BITS(bits, 17, 1) << 3)];
1081 const char *widen1 = widen1_table[(_BITS(bits, 9, 3) << 0) | (_BITS(bits, 17, 1) << 3)];
1085 const char *widen0 = widen0_table[(_BITS(bits, 9, 3) << 0) | (_BITS(bits, 17, 1) << 3)];
1090 const char *abs0 = abs0_table[_BITS(bits, 12, 1)];
1096 const char *round = round_table[_BITS(bits, 13, 2)];
1102 const char *clamp = clamp_table[_BITS(bits, 15, 2)];
1108 const char *abs1 = abs1_table[_BITS(bits, 19, 1)];
1114 const char *neg2 = neg2_table[_BITS(bits, 18, 1)];
1120 const char *abs2 = abs2_table[_BITS(bits, 20, 1)];
1128 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1129 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1134 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1135 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1140 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
1146 bi_disasm_fma_fma_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1151 const char *neg1 = neg1_table[(_BITS(bits, 17, 1) << 0)];
1155 const char *neg0 = neg0_table[(_BITS(bits, 17, 1) << 0)];
1160 const char *swz0 = swz0_table[_BITS(bits, 9, 2)];
1166 const char *swz1 = swz1_table[_BITS(bits, 11, 2)];
1172 const char *round = round_table[_BITS(bits, 13, 2)];
1178 const char *clamp = clamp_table[_BITS(bits, 15, 2)];
1184 const char *neg2 = neg2_table[_BITS(bits, 18, 1)];
1190 const char *swz2 = swz2_table[_BITS(bits, 19, 2)];
1198 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1199 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1203 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1204 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1208 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
1214 bi_disasm_fma_fma_rscale_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1219 const char *neg1 = neg1_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1223 const char *neg0 = neg0_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1227 const char *round = round_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1231 const char *special = special_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1235 const char *clamp = clamp_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1240 const char *abs0 = abs0_table[_BITS(bits, 15, 1)];
1246 const char *neg2 = neg2_table[_BITS(bits, 17, 1)];
1255 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1256 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1260 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1261 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1264 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
1267 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
1271 bi_disasm_fma_fma_rscale_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1276 const char *neg1 = neg1_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1280 const char *neg0 = neg0_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1284 const char *round = round_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1288 const char *special = special_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1292 const char *clamp = clamp_table[(_BITS(bits, 16, 1) << 0) | (_BITS(bits, 12, 3) << 1)];
1297 const char *abs0 = abs0_table[_BITS(bits, 15, 1)];
1303 const char *neg2 = neg2_table[_BITS(bits, 17, 1)];
1312 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1313 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1317 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1318 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1321 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
1324 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
1328 bi_disasm_fma_fmul_cslice(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1334 const char *lane0 = lane0_table[_BITS(bits, 6, 1)];
1340 const char *abs0 = abs0_table[_BITS(bits, 7, 1)];
1346 const char *neg0 = neg0_table[_BITS(bits, 8, 1)];
1352 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1353 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1358 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1359 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1363 bi_disasm_fma_fmul_slice_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1369 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1370 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1372 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1373 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1377 bi_disasm_fma_frexpe_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1387 const char *neg0 = neg0_table[_BITS(bits, 6, 1)];
1393 const char *sqrt = sqrt_table[_BITS(bits, 8, 1)];
1399 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
1407 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1408 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1414 bi_disasm_fma_frexpe_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1432 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
1440 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1441 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1447 bi_disasm_fma_frexpe_v2f16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1457 const char *neg0 = neg0_table[_BITS(bits, 6, 1)];
1463 const char *sqrt = sqrt_table[_BITS(bits, 8, 1)];
1469 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
1477 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1478 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1484 bi_disasm_fma_frexpe_v2f16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1502 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
1510 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1511 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1517 bi_disasm_fma_frexpm_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1531 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
1537 const char *sqrt = sqrt_table[_BITS(bits, 7, 1)];
1543 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
1551 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1552 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1559 bi_disasm_fma_frexpm_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1573 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
1579 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
1585 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
1593 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1594 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1601 bi_disasm_fma_frexpm_v2f16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1615 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
1621 const char *sqrt = sqrt_table[_BITS(bits, 7, 1)];
1627 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
1635 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1636 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1643 bi_disasm_fma_frexpm_v2f16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1657 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
1663 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
1669 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
1677 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1678 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1685 bi_disasm_fma_fround_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1690 const char *round = round_table[(_BITS(bits, 9, 2) << 0)];
1695 const char *abs0 = abs0_table[_BITS(bits, 7, 1)];
1701 const char *neg0 = neg0_table[_BITS(bits, 8, 1)];
1707 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
1714 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1715 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1722 bi_disasm_fma_fround_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1732 const char *abs0 = abs0_table[_BITS(bits, 7, 1)];
1738 const char *neg0 = neg0_table[_BITS(bits, 8, 1)];
1744 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
1751 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1752 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1759 bi_disasm_fma_fround_v2f16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1764 const char *round = round_table[(_BITS(bits, 9, 2) << 0)];
1769 const char *abs0 = abs0_table[_BITS(bits, 7, 1)];
1775 const char *neg0 = neg0_table[_BITS(bits, 8, 1)];
1781 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
1788 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1789 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1796 bi_disasm_fma_fround_v2f16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1806 const char *abs0 = abs0_table[_BITS(bits, 7, 1)];
1812 const char *neg0 = neg0_table[_BITS(bits, 8, 1)];
1818 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
1825 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1826 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1833 bi_disasm_fma_frshift_double_i32(FILE *fp, unsigned bits
1839 const char *bytes2 = bytes2_table[_BITS(bits, 9, 1)];
1845 const char *lane2 = lane2_table[_BITS(bits, 10, 1)];
1851 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1852 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1854 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1855 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1857 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
1863 bi_disasm_fma_iaddc_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1869 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1870 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1872 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1873 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1875 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
1879 bi_disasm_fma_idp_v4i8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1885 const char *sign0 = sign0_table[_BITS(bits, 9, 1)];
1891 const char *sign1 = sign1_table[_BITS(bits, 10, 1)];
1897 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1898 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1901 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1902 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1907 bi_disasm_fma_imul_i32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1922 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1923 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1925 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1926 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1931 bi_disasm_fma_imul_i32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1936 const char *extend = extend_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 10, 1) << 1)];
1940 const char *widen1 = widen1_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 10, 1) << 1)];
1946 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1947 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1949 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1950 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1955 bi_disasm_fma_imul_i32_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1960 const char *extend = extend_table[(_BITS(bits, 9, 2) << 0) | (_BITS(bits, 11, 1) << 2)];
1964 const char *widen1 = widen1_table[(_BITS(bits, 9, 2) << 0) | (_BITS(bits, 11, 1) << 2)];
1970 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1971 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
1973 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
1974 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
1979 bi_disasm_fma_imul_v2i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
1985 const char *swz0 = swz0_table[_BITS(bits, 9, 2)];
1991 const char *swz1 = swz1_table[_BITS(bits, 11, 2)];
1997 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
1998 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2001 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2002 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2007 bi_disasm_fma_imul_v4i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2021 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2022 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2025 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2026 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2031 bi_disasm_fma_imul_v4i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2036 const char *replicate0 = replicate0_table[(_BITS(bits, 9, 2) << 0)];
2040 const char *replicate1 = replicate1_table[(_BITS(bits, 9, 2) << 0)];
2045 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2046 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2049 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2050 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2055 bi_disasm_fma_imuld(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2061 const char *threads = threads_table[_BITS(bits, 6, 1)];
2068 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2069 if (!(0x33 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2071 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2072 if (!(0x33 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2076 bi_disasm_fma_isubb_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2082 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2083 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2085 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2086 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2088 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2092 bi_disasm_fma_jump_ex(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2098 const char *test_mode = test_mode_table[_BITS(bits, 9, 1)];
2104 const char *stack_mode = stack_mode_table[_BITS(bits, 10, 2)];
2112 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2113 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2115 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2116 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2118 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2122 bi_disasm_fma_lrot_double_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2128 const char *bytes2 = bytes2_table[_BITS(bits, 9, 1)];
2134 const char *lane2 = lane2_table[_BITS(bits, 10, 1)];
2140 const char *result_word = result_word_table[_BITS(bits, 11, 1)];
2147 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2148 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2150 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2151 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2153 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2159 bi_disasm_fma_lshift_and_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2165 const char *lane2 = lane2_table[_BITS(bits, 9, 2)];
2171 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2177 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2184 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2185 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2187 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2188 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2191 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2196 bi_disasm_fma_lshift_and_v2i16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2201 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2206 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2212 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2219 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2220 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2222 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2223 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2226 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2231 bi_disasm_fma_lshift_and_v2i16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2236 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2241 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2247 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2254 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2255 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2257 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2258 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2261 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2266 bi_disasm_fma_lshift_and_v4i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2271 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2276 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2282 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2289 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2290 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2292 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2293 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2296 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2301 bi_disasm_fma_lshift_and_v4i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2311 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2317 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2324 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2325 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2327 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2328 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2331 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2336 bi_disasm_fma_lshift_double_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2342 const char *bytes2 = bytes2_table[_BITS(bits, 9, 1)];
2348 const char *lane2 = lane2_table[_BITS(bits, 10, 1)];
2354 const char *result_word = result_word_table[_BITS(bits, 11, 1)];
2361 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2362 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2364 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2365 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2367 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2373 bi_disasm_fma_lshift_or_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2379 const char *lane2 = lane2_table[_BITS(bits, 9, 2)];
2385 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2391 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2398 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2399 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2401 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2402 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2405 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2410 bi_disasm_fma_lshift_or_v2i16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2415 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2420 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2426 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2433 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2434 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2436 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2437 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2440 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2445 bi_disasm_fma_lshift_or_v2i16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2450 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2455 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2461 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2468 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2469 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2471 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2472 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2475 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2480 bi_disasm_fma_lshift_or_v4i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2485 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2490 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2496 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2503 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2504 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2506 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2507 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2510 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2515 bi_disasm_fma_lshift_or_v4i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2525 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2531 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2538 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2539 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2541 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2542 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2545 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2550 bi_disasm_fma_lshift_xor_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2556 const char *lane2 = lane2_table[_BITS(bits, 9, 2)];
2562 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
2569 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2570 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2572 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2573 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2575 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2580 bi_disasm_fma_lshift_xor_v2i16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2585 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2590 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
2597 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2598 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2600 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2601 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2603 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2608 bi_disasm_fma_lshift_xor_v2i16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2613 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2618 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
2625 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2626 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2628 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2629 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2631 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2636 bi_disasm_fma_lshift_xor_v4i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2641 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2646 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
2653 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2654 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2656 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2657 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2659 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2664 bi_disasm_fma_lshift_xor_v4i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2674 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
2681 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2682 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2684 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2685 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2687 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2692 bi_disasm_fma_mkvec_v2i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2698 const char *lane0 = lane0_table[_BITS(bits, 6, 1)];
2704 const char *lane1 = lane1_table[_BITS(bits, 7, 1)];
2710 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2711 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2714 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2715 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2720 bi_disasm_fma_mkvec_v4i8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2726 const char *lane0 = lane0_table[_BITS(bits, 12, 1)];
2732 const char *lane1 = lane1_table[_BITS(bits, 13, 1)];
2738 const char *lane2 = lane2_table[_BITS(bits, 14, 1)];
2744 const char *lane3 = lane3_table[_BITS(bits, 15, 1)];
2750 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2751 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2754 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2755 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2758 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2761 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
2766 bi_disasm_fma_mov_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2772 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2773 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2777 bi_disasm_fma_nop(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2785 bi_disasm_fma_popcount_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2791 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2792 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2796 bi_disasm_fma_quiet_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2802 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2803 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2807 bi_disasm_fma_quiet_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2813 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
2819 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2820 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2825 bi_disasm_fma_rrot_double_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2831 const char *bytes2 = bytes2_table[_BITS(bits, 9, 1)];
2837 const char *lane2 = lane2_table[_BITS(bits, 10, 1)];
2843 const char *result_word = result_word_table[_BITS(bits, 11, 1)];
2850 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2851 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2853 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2854 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2856 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2862 bi_disasm_fma_rshift_and_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2868 const char *lane2 = lane2_table[_BITS(bits, 9, 2)];
2874 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2880 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2887 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2888 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2890 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2891 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2894 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2899 bi_disasm_fma_rshift_and_v2i16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2904 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2909 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2915 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2922 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2923 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2925 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2926 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2929 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2934 bi_disasm_fma_rshift_and_v2i16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2939 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2944 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2950 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2957 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2958 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2960 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2961 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2964 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
2969 bi_disasm_fma_rshift_and_v4i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
2974 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
2979 const char *not1 = not1_table[_BITS(bits, 14, 1)];
2985 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
2992 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
2993 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
2995 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
2996 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
2999 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3004 bi_disasm_fma_rshift_and_v4i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3014 const char *not1 = not1_table[_BITS(bits, 14, 1)];
3020 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
3027 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3028 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3030 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3031 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3034 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3039 bi_disasm_fma_rshift_double_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3045 const char *bytes2 = bytes2_table[_BITS(bits, 9, 1)];
3051 const char *lane2 = lane2_table[_BITS(bits, 10, 1)];
3057 const char *result_word = result_word_table[_BITS(bits, 11, 1)];
3064 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3065 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3067 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3068 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3070 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3076 bi_disasm_fma_rshift_or_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3082 const char *lane2 = lane2_table[_BITS(bits, 9, 2)];
3088 const char *not1 = not1_table[_BITS(bits, 14, 1)];
3094 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
3101 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3102 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3104 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3105 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3108 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3113 bi_disasm_fma_rshift_or_v2i16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3118 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
3123 const char *not1 = not1_table[_BITS(bits, 14, 1)];
3129 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
3136 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3137 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3139 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3140 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3143 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3148 bi_disasm_fma_rshift_or_v2i16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3153 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
3158 const char *not1 = not1_table[_BITS(bits, 14, 1)];
3164 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
3171 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3172 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3174 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3175 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3178 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3183 bi_disasm_fma_rshift_or_v4i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3188 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
3193 const char *not1 = not1_table[_BITS(bits, 14, 1)];
3199 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
3206 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3207 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3209 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3210 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3213 dump_src(fp, _BITS(bits
3218 bi_disasm_fma_rshift_or_v4i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3228 const char *not1 = not1_table[_BITS(bits, 14, 1)];
3234 const char *not_result = not_result_table[_BITS(bits, 15, 1)];
3241 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3242 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3244 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3245 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3248 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3253 bi_disasm_fma_rshift_xor_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3259 const char *lane2 = lane2_table[_BITS(bits, 9, 2)];
3265 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
3272 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3273 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3275 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3276 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3278 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3283 bi_disasm_fma_rshift_xor_v2i16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3288 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
3293 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
3300 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3301 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3303 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3304 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3306 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3311 bi_disasm_fma_rshift_xor_v2i16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3316 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
3321 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
3328 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3329 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3331 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3332 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3334 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3339 bi_disasm_fma_rshift_xor_v4i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3344 const char *lanes2 = lanes2_table[(_BITS(bits, 9, 2) << 0)];
3349 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
3356 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3357 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3359 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3360 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3362 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3367 bi_disasm_fma_rshift_xor_v4i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3377 const char *not_result = not_result_table[_BITS(bits, 13, 1)];
3384 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3385 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3387 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3388 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3390 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3395 bi_disasm_fma_s16_to_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3401 const char *lane0 = lane0_table[_BITS(bits, 4, 1)];
3407 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3408 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3413 bi_disasm_fma_s8_to_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3419 const char *lane0 = lane0_table[_BITS(bits, 4, 2)];
3425 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3426 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3431 bi_disasm_fma_seg_add(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3437 const char *seg = seg_table[_BITS(bits, 3, 3)];
3443 const char *preserve_null = preserve_null_table[_BITS(bits, 7, 1)];
3451 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3452 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3456 bi_disasm_fma_seg_sub(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3462 const char *seg = seg_table[_BITS(bits, 3, 3)];
3468 const char *preserve_null = preserve_null_table[_BITS(bits, 7, 1)];
3476 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3477 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3481 bi_disasm_fma_shaddxl_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3487 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3488 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3490 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3491 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3492 fprintf(fp, ", shift:%u", _BITS(bits, 6, 3));
3496 bi_disasm_fma_shaddxl_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3502 const char *lane1 = lane1_table[_BITS(bits, 9, 2)];
3508 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3509 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3511 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3512 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3514 fprintf(fp, ", shift:%u", _BITS(bits, 6, 3));
3518 bi_disasm_fma_shaddxl_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3524 const char *lane1 = lane1_table[_BITS(bits, 9, 2)];
3530 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3531 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3533 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3534 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3536 fprintf(fp, ", shift:%u", _BITS(bits, 6, 3));
3540 bi_disasm_fma_u16_to_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3546 const char *lane0 = lane0_table[_BITS(bits, 4, 1)];
3552 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3553 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3558 bi_disasm_fma_u8_to_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3564 const char *lane0 = lane0_table[_BITS(bits, 4, 2)];
3570 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3571 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3576 bi_disasm_fma_v2f32_to_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3581 const char *neg1 = neg1_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
3585 const char *abs0 = abs0_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
3589 const char *neg0 = neg0_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
3593 const char *abs1 = abs1_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
3598 const char *clamp = clamp_table[_BITS(bits, 8, 2)];
3604 const char *round = round_table[_BITS(bits, 10, 3)];
3612 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3613 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3617 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3618 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3624 bi_disasm_fma_vn_asst1_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3630 const char *h = h_table[_BITS(bits, 9, 1)];
3636 const char *l = l_table[_BITS(bits, 10, 1)];
3642 const char *neg2 = neg2_table[_BITS(bits, 11, 1)];
3650 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3651 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3653 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3654 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3656 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3661 bi_disasm_fma_vn_asst1_f32(FILE *fp, unsigned bits
3667 const char *neg2 = neg2_table[_BITS(bits, 12, 1)];
3673 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, true);
3674 if (!(0xfb & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3676 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, true);
3677 if (!(0xfb & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3679 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, true);
3682 dump_src(fp, _BITS(bits, 9, 3), *srcs, branch_offset, consts, true);
3686 bi_disasm_add_acmpstore_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3692 const char *seg = seg_table[_BITS(bits, 9, 1)];
3699 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3701 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3706 bi_disasm_add_acmpstore_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3712 const char *seg = seg_table[_BITS(bits, 9, 1)];
3719 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3721 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3726 bi_disasm_add_acmpxchg_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3732 const char *seg = seg_table[_BITS(bits, 9, 1)];
3739 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3741 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3746 bi_disasm_add_acmpxchg_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3752 const char *seg = seg_table[_BITS(bits, 9, 1)];
3759 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3761 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3766 bi_disasm_add_atest(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3772 const char *widen1 = widen1_table[_BITS(bits, 6, 2)];
3778 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3779 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
3781 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3782 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3788 bi_disasm_add_atom_cx(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3794 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3796 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3798 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
3803 bi_disasm_add_axchg_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3809 const char *seg = seg_table[_BITS(bits, 9, 1)];
3816 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3818 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3823 bi_disasm_add_axchg_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3829 const char *seg = seg_table[_BITS(bits, 9, 1)];
3836 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3838 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3843 bi_disasm_add_barrier(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3851 bi_disasm_add_blend(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3857 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3859 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3860 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
3862 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
3863 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
3868 bi_disasm_add_branch_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3870 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
3877 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : cmpf_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3884 const char *widen1 = ordering ? widen1_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen1_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3891 const char *widen0 = ordering ? widen0_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen0_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3897 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3900 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3903 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
3904 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
3908 bi_disasm_add_branch_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3910 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
3917 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : cmpf_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3924 const char *widen1 = ordering ? widen1_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen1_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3931 const char *widen0 = ordering ? widen0_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen0_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3937 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3940 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3943 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
3944 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
3948 bi_disasm_add_branch_i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3950 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
3957 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : cmpf_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3964 const char *widen1 = ordering ? widen1_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen1_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3971 const char *widen0 = ordering ? widen0_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen0_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
3977 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
3980 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
3983 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
3984 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
3988 bi_disasm_add_branch_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
3990 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
3997 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : cmpf_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4004 const char *widen1 = ordering ? widen1_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen1_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4011 const char *widen0 = ordering ? widen0_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen0_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4017 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4020 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4023 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4024 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4028 bi_disasm_add_branch_s16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4030 bool ordering = (_BITS(bitsbits, 3, 3));
4037 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : cmpf_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4044 const char *widen1 = ordering ? widen1_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen1_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4051 const char *widen0 = ordering ? widen0_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen0_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4057 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4060 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4063 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4064 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4068 bi_disasm_add_branch_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4070 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
4077 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : cmpf_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4084 const char *widen1 = ordering ? widen1_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen1_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4091 const char *widen0 = ordering ? widen0_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen0_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4097 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4100 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4103 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4104 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4108 bi_disasm_add_branch_u16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4110 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
4117 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : cmpf_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4124 const char *widen1 = ordering ? widen1_1[(_BITS(bitsbits, 9, 3) << 3)] : widen1_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4131 const char *widen0 = ordering ? widen0_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen0_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4137 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4140 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4143 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4144 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4148 bi_disasm_add_branch_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4150 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
4157 const char *cmpf = ordering ? cmpf_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : cmpf_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4164 const char *widen1 = ordering ? widen1_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen1_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4171 const char *widen0 = ordering ? widen0_1[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)] : widen0_0[(_BITS(bits, 12, 3) << 0) | (_BITS(bits, 9, 3) << 3)];
4177 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4180 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4183 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4184 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4188 bi_disasm_add_branchc_i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4193 const char *lane0 = lane0_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 3, 1) << 1)];
4198 const char *combine = combine_table[_BITS(bits, 10, 1)];
4205 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4208 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4209 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4213 bi_disasm_add_branchc_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4219 const char *combine = combine_table[_BITS(bits, 10, 1)];
4226 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4228 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4229 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4233 bi_disasm_add_branchz_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4238 const char *cmpf = cmpf_table[(_BITS(bits, 4, 2) << 0) | (_BITS(bits, 3, 1) << 2) | (_BITS(bits, 9, 3) << 3)];
4242 const char *widen0 = widen0_table[(_BITS(bits, 4, 2) << 0) | (_BITS(bits, 3, 1) << 2) | (_BITS(bits, 9, 3) << 3)];
4248 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4251 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4252 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4256 bi_disasm_add_branchz_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4261 const char *cmpf = cmpf_table[(_BITS(bits, 3, 1) << 0) | (_BITS(bits, 9, 3) << 1)];
4267 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4269 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4270 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4274 bi_disasm_add_branchz_i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4279 const char *cmpf = cmpf_table[(_BITS(bits, 4, 2) << 0) | (_BITS(bits, 3, 1) << 2)];
4283 const char *widen0 = widen0_table[(_BITS(bits, 4, 2) << 0) | (_BITS(bits, 3, 1) << 2)];
4289 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4292 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4293 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4297 bi_disasm_add_branchz_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4302 const char *cmpf = cmpf_table[(_BITS(bits, 3, 1) << 0)];
4308 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4310 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4311 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4315 bi_disasm_add_branchz_s16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4320 const char *cmpf = cmpf_table[(_BITS(bits, 4, 2) << 0) | (_BITS(bits, 9, 3) << 2)];
4324 const char *widen0 = widen0_table[(_BITS(bits, 4, 2) << 0) | (_BITS(bits, 9, 3) << 2)];
4330 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4333 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4334 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4338 bi_disasm_add_branchz_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4343 const char *cmpf = cmpf_table[(_BITS(bits, 9, 3) << 0)];
4349 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4351 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4352 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4356 bi_disasm_add_branchz_u16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4361 const char *cmpf = cmpf_table[(_BITS(bits, 4, 2) << 0) | (_BITS(bits, 9, 3) << 2)];
4365 const char *widen0 = widen0_table[(_BITS(bits, 4, 2) << 0) | (_BITS(bits, 9, 3) << 2)];
4371 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4374 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4375 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4379 bi_disasm_add_branchz_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4384 const char *cmpf = cmpf_table[(_BITS(bits, 9, 3) << 0)];
4390 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4392 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4393 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4397 bi_disasm_add_branch_diverg(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4403 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4404 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4408 bi_disasm_add_branch_lowbits_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4414 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4416 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4417 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4421 bi_disasm_add_branch_no_diverg(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4427 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4428 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
4432 bi_disasm_add_clper_v6_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4438 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4439 if (!(0x7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
4441 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4445 bi_disasm_add_clper_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4451 const char *lane_op = lane_op_table[_BITS(bits, 6, 2)];
4457 const char *subgroup = subgroup_table[_BITS(bits, 8, 2)];
4463 const char *inactive_result = inactive_result_table[_BITS(bits, 10, 4)];
4472 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4473 if (!(0x7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
4475 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4479 bi_disasm_add_cubeface2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4485 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4489 bi_disasm_add_cube_ssel(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4494 const char *neg1 = neg1_table[(_BITS(bits, 9, 1) << 0)];
4498 const char *neg0 = neg0_table[(_BITS(bits, 9, 1) << 0)];
4503 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4506 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4509 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4513 bi_disasm_add_cube_tsel(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4518 const char *neg1 = neg1_table[(_BITS(bits, 9, 1) << 0)];
4522 const char *neg0 = neg0_table[(_BITS(bits, 9, 1) << 0)];
4527 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4530 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4533 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4537 bi_disasm_add_discard_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4542 const char *cmpf = cmpf_table[(_BITS(bits, 6, 2) << 0) | (_BITS(bits, 8, 3) << 2)];
4546 const char *widen1 = widen1_table[(_BITS(bits, 6, 2) << 0) | (_BITS(bits, 8, 3) << 2)];
4550 const char *widen0 = widen0_table[(_BITS(bits, 6, 2) << 0) | (_BITS(bits, 8, 3) << 2)];
4556 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4559 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4564 bi_disasm_add_doorbell(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4570 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4574 bi_disasm_add_eureka(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4580 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4584 bi_disasm_add_f16_to_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4590 const char *lane0 = lane0_table[_BITS(bits, 3, 1)];
4596 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4601 bi_disasm_add_f16_to_s32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4606 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
4611 const char *lane0 = lane0_table[_BITS(bits, 7, 1)];
4618 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4623 bi_disasm_add_f16_to_s32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4633 const char *lane0 = lane0_table[_BITS(bits, 5, 1)];
4640 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4645 bi_disasm_add_f16_to_u32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4650 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
4655 const char *lane0 = lane0_table[_BITS(bits, 7, 1)];
4662 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4667 bi_disasm_add_f16_to_u32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4677 const char *lane0 = lane0_table[_BITS(bits, 5, 1)];
4684 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4689 bi_disasm_add_f32_to_s32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4694 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
4700 bits, 0, 3), *srcs, branch_offset, consts, false);
4704 bi_disasm_add_f32_to_s32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4715 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4719 bi_disasm_add_f32_to_u32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4724 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
4730 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4734 bi_disasm_add_f32_to_u32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4745 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4749 bi_disasm_add_fadd_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4754 const char *round = round_table[(_BITS(bits, 13, 2) << 0) | (_BITS(bits, 9, 2) << 2)];
4758 const char *widen1 = widen1_table[(_BITS(bits, 13, 2) << 0) | (_BITS(bits, 9, 2) << 2)];
4762 const char *widen0 = widen0_table[(_BITS(bits, 13, 2) << 0) | (_BITS(bits, 9, 2) << 2)];
4767 const char *abs1 = abs1_table[_BITS(bits, 6, 1)];
4773 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
4779 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
4785 const char *clamp = clamp_table[_BITS(bits, 11, 2)];
4791 const char *abs0 = abs0_table[_BITS(bits, 15, 1)];
4799 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4804 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4811 bi_disasm_add_fadd_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4851 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4856 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4863 bi_disasm_add_fadd_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4869 const char *abs1 = abs1_table[_BITS(bits, 6, 1)];
4875 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
4881 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
4887 const char *swz0 = swz0_table[_BITS(bits, 9, 2)];
4893 const char *swz1 = swz1_table[_BITS(bits, 11, 2)];
4899 const char *round = round_table[_BITS(bits, 13, 2)];
4905 const char *abs0 = abs0_table[_BITS(bits, 15, 1)];
4912 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4917 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4924 bi_disasm_add_fadd_rscale_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4929 const char *round = round_table[(_BITS(bits, 9, 3) << 0)];
4933 const char *special = special_table[(_BITS(bits, 9, 3) << 0)];
4937 const char *clamp = clamp_table[(_BITS(bits, 9, 3) << 0)];
4942 const char *abs1 = abs1_table[_BITS(bits, 12, 1)];
4948 const char *neg0 = neg0_table[_BITS(bits, 13, 1)];
4954 const char *neg1 = neg1_table[_BITS(bits, 14, 1)];
4960 const char *abs0 = abs0_table[_BITS(bits, 16, 1)];
4969 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
4973 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
4977 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
4981 bi_disasm_add_fatan_assist_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
4987 const char *lane1 = lane1_table[_BITS(bits, 6, 1)];
4993 const char *lane0 = lane0_table[_BITS(bits, 7, 1)];
4999 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5000 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5003 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5004 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
5009 bi_disasm_add_fatan_assist_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5015 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5016 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5018 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5019 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
5023 bi_disasm_add_fatan_table_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5029 const char *lane1 = lane1_table[_BITS(bits, 6, 1)];
5035 const char *lane0 = lane0_table[_BITS(bits, 7, 1)];
5041 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5042 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5045 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5046 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
5051 bi_disasm_add_fatan_table_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5057 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5058 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5060 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5061 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
5065 bi_disasm_add_fcmp_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5070 const char *neg1 = neg1_table[(_BITS(bits, 9, 2) << 0) | (_BITS(bits, 13, 1) << 2)];
5074 const char *neg0 = neg0_table[(_BITS(bits, 9, 2) << 0) | (_BITS(bits, 13, 1) << 2)];
5078 const char *widen1 = widen1_table[(_BITS(bits, 9, 2) << 0) | (_BITS(bits, 13, 1) << 2)];
5082 const char *widen0 = widen0_table[(_BITS(bits, 9, 2) << 0) | (_BITS(bits, 13, 1) << 2)];
5087 const char *cmpf = cmpf_table[_BITS(bits, 6, 3)];
5093 const char *abs0 = abs0_table[_BITS(bits, 11, 1)];
5099 const char *abs1 = abs1_table[_BITS(bits, 12, 1)];
5105 const char *result_type = result_type_table[_BITS(bits, 14, 2)];
5113 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5118 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5125 bi_disasm_add_fcmp_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5130 const char *neg1 = neg1_table[(_BITS(bits, 13, 1) << 0)];
5134 const char *neg0 = neg0_table[(_BITS(bits, 13, 1) << 0)];
5139 const char *cmpf = cmpf_table[_BITS(bits, 6, 3)];
5145 const char *swz0 = swz0_table[_BITS(bits, 9, 2)];
5151 const char *swz1 = swz1_table[_BITS(bits, 11, 2)];
5157 const char *result_type = result_type_table[_BITS(bits, 14, 2)];
5165 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5169 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5175 bi_disasm_add_fcos_table_u6(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5181 const char *offset = offset_table[_BITS(bits, 4, 1)];
5188 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5189 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5193 bi_disasm_add_fexp_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5199 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5200 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5202 bits, 3, 3), *srcs, branch_offset, consts, false);
5203 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
5207 bi_disasm_add_fexp_table_u4(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5213 const char *adj = adj_table[_BITS(bits, 3, 2)];
5220 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5221 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5225 bi_disasm_add_flogd_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5231 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5232 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5236 bi_disasm_add_flog_table_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5254 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
5260 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
5266 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
5275 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5276 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5283 bi_disasm_add_flog_table_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5288 const char *precision = precision_table[(_BITS(bits, 7, 1) << 0)];
5292 const char *mode = mode_table[(_BITS(bits, 7, 1) << 0)];
5296 const char *widen0 = widen0_table[(_BITS(bits, 7, 1) << 0)];
5301 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
5307 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
5313 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
5322 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5323 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5330 bi_disasm_add_flog_table_f32_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5335 const char *divzero = divzero_table[(_BITS(bits, 5, 1) << 0)];
5339 const char *mode = mode_table[(_BITS(bits, 5, 1) << 0)];
5343 const char *precision = precision_table[(_BITS(bits, 5, 1) << 0)];
5347 const char *widen0 = widen0_table[(_BITS(bits, 5, 1) << 0)];
5352 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
5358 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
5367 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5368 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5375 bi_disasm_add_flog_table_f32_3(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5380 const char *divzero = divzero_table[(_BITS(bits, 5, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
5384 const char *mode = mode_table[(_BITS(bits, 5, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
5388 const char *precision = precision_table[(_BITS(bits, 5, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
5392 const char *widen0 = widen0_table[(_BITS(bits, 5, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
5397 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
5403 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
5412 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5413 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5420 bi_disasm_add_flog_table_f32_4(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5425 const char *abs0 = abs0_table[(_BITS(bits, 3, 1) << 0) | (_BITS(bits, 4, 1) << 1)];
5429 const char *divzero = divzero_table[(_BITS(bits, 3, 1) << 0) | (_BITS(bits, 4, 1) << 1)];
5433 const char *mode = mode_table[(_BITS(bits, 3, 1) << 0) | (_BITS(bits, 4, 1) << 1)];
5437 const char *neg0 = neg0_table[(_BITS(bits, 3, 1) << 0) | (_BITS(bits, 4, 1) << 1)];
5441 const char *precision = precision_table[(_BITS(bits, 3, 1) << 0) | (_BITS(bits, 4, 1) << 1)];
5445 const char *widen0 = widen0_table[(_BITS(bits, 3, 1) << 0) | (_BITS(bits, 4, 1) << 1)];
5453 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5454 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5461 bi_disasm_add_fmax_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5467 const char *abs1 = abs1_table[_BITS(bits, 6, 1)];
5473 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
5479 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
5485 const char *clamp = clamp_table[_BITS(bits, 11, 2)];
5491 const char *sem = sem_table[_BITS(bits, 13, 2)];
5497 const char *abs0 = abs0_table[_BITS(bits, 15, 1)];
5505 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5509 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5515 bi_disasm_add_fmax_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5517 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
5524 const char *abs0 = ordering ? abs0_1[(_BITS(bits, 6, 1) << 0)] : abs0_0[(_BITS(bits, 6, 1) << 0)];
5531 const char *abs1 = ordering ? abs1_1[(_BITS(bits, 6, 1) << 0)] : abs1_0[(_BITS(bits, 6, 1) << 0)];
5536 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
5542 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
5548 const char *swz0 = swz0_table[_BITS(bits, 9, 2)];
5554 const char *swz1 = swz1_table[_BITS(bits, 11, 2)];
5560 const char *sem = sem_table[_BITS(bits, 13, 2)];
5567 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5572 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5579 bi_disasm_add_fmin_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5585 const char *abs1 = abs1_table[_BITS(bits, 6, 1)];
5591 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
5597 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
5603 const char *clamp = clamp_table[_BITS(bits, 11, 2)];
5609 const char *sem = sem_table[_BITS(bits, 13, 2)];
5615 const char *abs0 = abs0_table[_BITS(bits, 15, 1)];
5623 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5627 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5633 bi_disasm_add_fmin_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5635 bool ordering = (_BITS(bits, 0, 3) > _BITS(bits, 3, 3));
5642 const char *abs0 = ordering ? abs0_1[(_BITS(bits, 6, 1) << 0)] : abs0_0[(_BITS(bits, 6, 1) << 0)];
5649 const char *abs1 = ordering ? abs1_1[(_BITS(bits, 6, 1) << 0)] : abs1_0[(_BITS(bits, 6, 1) << 0)];
5654 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
5660 const char *neg1 = neg1_table[_BITS(bits, 8, 1)];
5666 const char *swz0 = swz0_table[_BITS(bits, 9, 2)];
5672 const char *swz1 = swz1_table[_BITS(bits, 11, 2)];
5678 const char *sem = sem_table[_BITS(bits, 13, 2)];
5685 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5690 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5697 bi_disasm_add_fpclass_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5703 const char *lane0 = lane0_table[_BITS(bits, 3, 1)];
5709 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5710 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5715 bi_disasm_add_fpclass_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5721 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5722 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5726 bi_disasm_add_fpow_sc_apply(FILE *fp, unsigned bits
5732 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5734 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5738 bi_disasm_add_fpow_sc_det_f16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5743 const char *lane1 = lane1_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 8, 1) << 1)];
5747 const char *func = func_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 8, 1) << 1)];
5752 const char *lane0 = lane0_table[_BITS(bits, 7, 1)];
5759 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5760 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5763 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5764 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
5769 bi_disasm_add_fpow_sc_det_f16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5774 const char *lane1 = lane1_table[(_BITS(bits, 8, 1) << 0)];
5778 const char *func = func_table[(_BITS(bits, 8, 1) << 0)];
5783 const char *lane0 = lane0_table[_BITS(bits, 7, 1)];
5790 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5791 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5794 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5795 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
5800 bi_disasm_add_fpow_sc_det_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5806 const char *func = func_table[_BITS(bits, 7, 2)];
5813 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5814 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5816 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
5817 if (!(0xf7 & (1 << _BITS(bits, 3, 3)))) fputs("(INVALID)", fp);
5821 bi_disasm_add_frcbrt_approx_a_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5831 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
5837 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
5843 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
5850 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5851 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5858 bi_disasm_add_frcbrt_approx_a_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5863 const char *widen0 = widen0_table[(_BITS(bits, 7, 1) << 0)];
5868 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
5874 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
5880 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
5887 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5888 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5895 bi_disasm_add_frcbrt_approx_b_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5901 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5902 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5906 bi_disasm_add_frcbrt_approx_c_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5912 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5913 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5917 bi_disasm_add_frcp_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5923 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
5929 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
5935 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
5941 const char *lane0 = lane0_table[_BITS(bits, 8, 1)];
5948 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5949 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5956 bi_disasm_add_frcp_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5961 const char *widen0 = widen0_table[(_BITS(bits, 6, 1) << 0)];
5966 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
5972 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
5978 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
5979 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
5986 bi_disasm_add_frcp_approx_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
5996 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
6002 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
6008 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
6015 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6016 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
6023 bi_disasm_add_frcp_approx_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6028 const char *widen0 = widen0_table[(_BITS(bits, 7, 1) << 0)];
6033 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
6039 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
6045 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
6052 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6053 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
6060 bi_disasm_add_frexpe_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6070 const char *neg0 = neg0_table[_BITS(bits, 6, 1)];
6076 const char *sqrt = sqrt_table[_BITS(bits, 8, 1)];
6082 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
6090 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6096 bi_disasm_add_frexpe_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6114 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
6122 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6128 bi_disasm_add_frexpe_v2f16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6138 const char *neg0 = neg0_table[_BITS(bits, 6, 1)];
6144 const char *sqrt = sqrt_table[_BITS(bits, 8, 1)];
6150 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
6158 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6164 bi_disasm_add_frexpe_v2f16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6182 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
6190 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6196 bi_disasm_add_frexpm_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6210 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
6216 const char *sqrt = sqrt_table[_BITS(bits, 7, 1)];
6222 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
6230 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6237 bi_disasm_add_frexpm_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6251 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
6257 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
6263 bits, 7, 1)];
6271 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6278 bi_disasm_add_frexpm_v2f16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6292 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
6298 const char *sqrt = sqrt_table[_BITS(bits, 7, 1)];
6304 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
6312 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6319 bi_disasm_add_frexpm_v2f16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6333 const char *abs0 = abs0_table[_BITS(bits, 6, 1)];
6339 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
6345 const char *neg0 = neg0_table[_BITS(bits, 7, 1)];
6353 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6360 bi_disasm_add_fround_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6366 const char *abs0 = abs0_table[_BITS(bits, 7, 1)];
6372 const char *neg0 = neg0_table[_BITS(bits, 8, 1)];
6378 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
6384 const char *round = round_table[_BITS(bits, 9, 2)];
6391 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6398 bi_disasm_add_fround_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6404 const char *abs0 = abs0_table[_BITS(bits, 7, 1)];
6410 const char *neg0 = neg0_table[_BITS(bits, 8, 1)];
6416 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
6422 const char *round = round_table[_BITS(bits, 9, 2)];
6429 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6436 bi_disasm_add_frsq_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6442 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
6448 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
6454 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
6460 const char *lane0 = lane0_table[_BITS(bits, 8, 1)];
6467 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6468 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
6475 bi_disasm_add_frsq_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6480 const char *widen0 = widen0_table[(_BITS(bits, 6, 1) << 0)];
6485 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
6491 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
6497 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6498 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
6505 bi_disasm_add_frsq_approx_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6515 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
6521 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
6527 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
6534 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6535 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
6542 bi_disasm_add_frsq_approx_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6547 const char *widen0 = widen0_table[(_BITS(bits, 7, 1) << 0)];
6552 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
6558 const char *abs0 = abs0_table[_BITS(bits, 4, 1)];
6564 const char *divzero = divzero_table[_BITS(bits, 5, 1)];
6571 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6572 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
6579 bi_disasm_add_fsincos_offset_u6(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6585 const char *scale = scale_table[_BITS(bits, 3, 1)];
6592 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6593 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
6597 bi_disasm_add_fsin_table_u6(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6603 const char *offset = offset_table[_BITS(bits, 4, 1)];
6610 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6611 if (!(0xf7 & (1 << _BITS(bits, 0, 3)))) fputs("(INVALID)", fp);
6615 bi_disasm_add_hadd_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6621 const char *round = round_table[_BITS(bits, 12, 1)];
6628 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6630 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6634 bi_disasm_add_hadd_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6640 const char *round = round_table[_BITS(bits, 12, 1)];
6647 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6649 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6653 bi_disasm_add_hadd_v2s16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6659 const char *round = round_table[_BITS(bits, 12, 1)];
6665 const char *swap1 = swap1_table[_BITS(bits, 9, 1)];
6671 const char *swap0 = swap0_table[_BITS(bits, 10, 1)];
6678 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6681 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6686 bi_disasm_add_hadd_v2u16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6692 const char *round = round_table[_BITS(bits, 12, 1)];
6698 const char *swap1 = swap1_table[_BITS(bits, 9, 1)];
6704 const char *swap0 = swap0_table[_BITS(bits, 10, 1)];
6711 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6714 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6719 bi_disasm_add_hadd_v4s8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6725 const char *round = round_table[_BITS(bits, 12, 1)];
6732 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6734 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6738 bi_disasm_add_hadd_v4u8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6744 const char *round = round_table[_BITS(bits, 12, 1)];
6751 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6753 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6757 bi_disasm_add_iabs_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6763 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6767 bi_disasm_add_iabs_v2s16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6773 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
6779 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6784 bi_disasm_add_iabs_v4s8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6790 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6794 bi_disasm_add_iadd_s32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6804 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
6811 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6813 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6818 bi_disasm_add_iadd_s32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6823 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0)];
6828 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
6835 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6837 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6842 bi_disasm_add_iadd_s32_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6847 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 2) << 0)];
6852 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
6859 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6861 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6866 bi_disasm_add_iadd_u32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6871 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0)];
6876 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
6883 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6885 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6890 bi_disasm_add_iadd_u32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6895 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
6900 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
6907 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6909 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6914 bi_disasm_add_iadd_u32_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6919 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 2) << 1)];
6924 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
6931 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6933 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6938 bi_disasm_add_iadd_v2s16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6943 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 10, 1) << 1)];
6947 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 10, 1) << 1)];
6952 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
6959 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6962 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6967 bi_disasm_add_iadd_v2s16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
6972 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0)];
6976 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 1) << 0)];
6981 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
6988 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
6991 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
6996 bi_disasm_add_iadd_v2s16_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7001 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0)];
7005 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 1) << 0)];
7010 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7017 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7020 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7025 bi_disasm_add_iadd_v2u16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7030 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1) | (_BITS(bits, 10, 1) << 2)];
7034 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1) | (_BITS(bits, 10, 1) << 2)];
7039 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7046 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7049 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7054 bi_disasm_add_iadd_v2u16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7059 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7063 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7068 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7075 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7078 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7083 bi_disasm_add_iadd_v2u16_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7088 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7092 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7097 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7104 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7107 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7112 bi_disasm_add_iadd_v4s8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7126 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7133 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7136 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7141 bi_disasm_add_iadd_v4s8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7146 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 2) << 0)];
7150 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 2) << 0)];
7155 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7162 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7165 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7170 bi_disasm_add_iadd_v4s8_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7175 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0)];
7179 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 1) << 0)];
7184 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7191 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7194 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7199 bi_disasm_add_iadd_v4u8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7204 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0)];
7208 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0)];
7213 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7220 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7223 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7228 bi_disasm_add_iadd_v4u8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7233 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 2) << 1)];
7237 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 2) << 1)];
7242 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7249 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7252 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7257 bi_disasm_add_iadd_v4u8_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7262 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7266 bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7271 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7278 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7281 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7286 bi_disasm_add_icmp_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7292 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7298 const char *cmpf = cmpf_table[_BITS(bits, 6, 1)];
7306 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7308 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7312 bi_disasm_add_icmp_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7317 const char *cmpf = cmpf_table[(_BITS(bits, 6, 1) << 0)];
7322 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7330 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7332 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7336 bi_disasm_add_icmp_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7341 const char *cmpf = cmpf_table[(_BITS(bits, 6, 1) << 0)];
7346 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7354 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7356 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7360 bi_disasm_add_icmp_v2i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7366 const char *swz0 = swz0_table[_BITS(bits, 6, 2)];
7372 const char *swz1 = swz1_table[_BITS(bits, 8, 2)];
7378 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7384 const char *cmpf = cmpf_table[_BITS(bits, 11, 1)];
7392 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7395 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7400 bi_disasm_add_icmp_v2s16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7405 const char *cmpf = cmpf_table[(_BITS(bits, 12, 1) << 0)];
7410 const char *swz0 = swz0_table[_BITS(bits, 6, 2)];
7416 const char *swz1 = swz1_table[_BITS(bits, 8, 2)];
7422 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7430 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7433 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7438 bi_disasm_add_icmp_v2u16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7443 const char *cmpf = cmpf_table[(_BITS(bits, 12, 1) << 0)];
7448 const char *swz0 = swz0_table[_BITS(bits, 6, 2)];
7454 const char *swz1 = swz1_table[_BITS(bits, 8, 2)];
7460 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7468 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7471 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7476 bi_disasm_add_icmp_v4i8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7482 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7488 const char *cmpf = cmpf_table[_BITS(bits, 6, 1)];
7496 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7498 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7502 bi_disasm_add_icmp_v4s8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7507 const char *cmpf = cmpf_table[(_BITS(bits, 6, 1) << 0)];
7512 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7520 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7522 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7526 bi_disasm_add_icmp_v4u8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7531 const char *cmpf = cmpf_table[(_BITS(bits, 6, 1) << 0)];
7536 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7544 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7546 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7550 bi_disasm_add_icmpf_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7556 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7558 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7560 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
7564 bi_disasm_add_icmpi_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7570 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7576 const char *cmpf = cmpf_table[_BITS(bits, 6, 1)];
7584 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7586 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7590 bi_disasm_add_icmpi_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7596 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7602 const char *cmpf = cmpf_table[_BITS(bits, 6, 1)];
7610 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7612 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7616 bi_disasm_add_icmpi_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7622 const char *result_type = result_type_table[_BITS(bits, 10, 1)];
7628 const char *cmpf = cmpf_table[_BITS(bits, 6, 1)];
7636 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7638 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7642 bi_disasm_add_icmpm_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7648 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7650 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7652 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
7656 bi_disasm_add_ilogb_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7662 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
7668 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7673 bi_disasm_add_ilogb_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7679 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
7685 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7690 bi_disasm_add_imov_fma(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7696 const char *threads = threads_table[_BITS(bits, 3, 1)];
7705 bi_disasm_add_isub_s32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7715 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7722 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7724 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7729 bi_disasm_add_isub_s32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7734 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0)];
7739 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7746 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7748 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7753 bi_disasm_add_isub_s32_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7758 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 2) << 0)];
7763 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7770 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7772 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7777 bi_disasm_add_isub_u32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7782 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0)];
7787 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7794 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7796 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7801 bi_disasm_add_isub_u32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7806 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7811 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7818 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7820 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7825 bi_disasm_add_isub_u32_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7830 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 2) << 1)];
7835 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7842 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7844 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7849 bi_disasm_add_isub_v2s16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7854 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 10, 1) << 1)];
7858 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 10, 1) << 1)];
7863 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7870 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7873 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7878 bi_disasm_add_isub_v2s16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7883 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0)];
7887 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 1) << 0)];
7892 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7899 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7902 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7907 bi_disasm_add_isub_v2s16_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7912 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0)];
7916 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 1) << 0)];
7921 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7928 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7931 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7936 bi_disasm_add_isub_v2u16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7941 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1) | (_BITS(bits, 10, 1) << 2)];
7945 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1) | (_BITS(bits, 10, 1) << 2)];
7950 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7957 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7960 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7965 bi_disasm_add_isub_v2u16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7970 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7974 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
7979 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
7986 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
7989 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
7994 bi_disasm_add_isub_v2u16_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
7999 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
8003 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
8008 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
8015 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8018 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8023 bi_disasm_add_isub_v4s8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8037 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
8044 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8047 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8052 bi_disasm_add_isub_v4s8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8057 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 2) << 0)];
8061 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 2) << 0)];
8066 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
8073 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8076 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8081 bi_disasm_add_isub_v4s8_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8086 const char *lanes1 = lanes1_table[(_BITS(bits, 9, 1) << 0)];
8090 const char *lanes0 = lanes0_table[(_BITS(bits, 9, 1) << 0)];
8095 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
8102 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8105 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8110 bi_disasm_add_isub_v4u8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8115 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0)];
8119 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0)];
8124 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
8131 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8134 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8139 bi_disasm_add_isub_v4u8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8144 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 2) << 1)];
8148 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 2) << 1)];
8153 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
8160 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8163 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8168 bi_disasm_add_isub_v4u8_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8173 const char *lanes1 = lanes1_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
8177 const char *lanes0 = lanes0_table[(_BITS(bits, 7, 1) << 0) | (_BITS(bits, 9, 1) << 1)];
8182 const char *saturate = saturate_table[_BITS(bits, 8, 1)];
8189 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8192 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8197 bi_disasm_add_jump(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8203 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8204 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
8208 bi_disasm_add_kaboom(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8214 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8218 bi_disasm_add_ldexp_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8224 const char *round = round_table[_BITS(bits, 6, 3)];
8231 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8233 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8237 bi_disasm_add_ldexp_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8243 const char *round = round_table[_BITS(bits, 6, 3)];
8250 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8252 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8256 bi_disasm_add_ld_attr_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8261 const char *register_format = register_format_table[(_BITS(bits, 13, 3) << 0)];
8266 const char *vecsize = vecsize_table[_BITS(bits, 11, 2)];
8274 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8276 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8278 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8283 bi_disasm_add_ld_attr_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8293 const char *vecsize = vecsize_table[_BITS(bits, 11, 2)];
8301 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8303 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8305 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8310 bi_disasm_add_ld_attr_imm_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8315 const char *register_format = register_format_table[(_BITS(bits, 13, 3) << 0)];
8320 const char *vecsize = vecsize_table[_BITS(bits, 11, 2)];
8328 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8330 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8331 fprintf(fp, ", attribute_index:%u", _BITS(bits, 6, 4));
8336 bi_disasm_add_ld_attr_imm_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8346 const char *vecsize = vecsize_table[_BITS(bits, 11, 2)];
8354 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8356 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8357 fprintf(fp, ", attribute_index:%u", _BITS(bits, 6, 4));
8362 bi_disasm_add_ld_attr_tex_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8367 const char *register_format = register_format_table[(_BITS(bits, 13, 3) << 0)];
8372 const char *vecsize = vecsize_table[_BITS(bits, 11, 2)];
8380 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8382 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8384 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8389 bi_disasm_add_ld_attr_tex_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8399 const char *vecsize = vecsize_table[_BITS(bits, 11, 2)];
8407 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8409 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8411 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8416 bi_disasm_add_ld_cvt(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8422 const char *vecsize = vecsize_table[_BITS(bits, 9, 2)];
8429 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8431 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8433 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8434 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
8439 bi_disasm_add_ld_gclk_u64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8445 const char *source = source_table[_BITS(bits, 0, 3)];
8455 bi_disasm_add_ld_tile(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8461 const char *vecsize = vecsize_table[_BITS(bits, 9, 2)];
8468 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8470 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8472 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8473 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
8478 bi_disasm_add_ld_var_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8483 const char *update = update_table[(_BITS(bits, 19, 1) << 0) | (_BITS(bits, 10, 4) << 1)];
8487 const char *sample = sample_table[(_BITS(bits, 19, 1) << 0) | (_BITS(bits, 10, 4) << 1)];
8491 const char *register_format = register_format_table[(_BITS(bits, 19, 1) << 0) | (_BITS(bits, 10, 4) << 1)];
8496 const char *vecsize = vecsize_table[_BITS(bits, 8, 2)];
8506 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8508 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8513 bi_disasm_add_ld_var_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8518 const char *update = update_table[(_BITS(bits, 10, 4) << 0)];
8522 const char *sample = sample_table[(_BITS(bits, 10, 4) << 0)];
8526 const char *register_format = register_format_table[(_BITS(bits, 10, 4) << 0)];
8531 const char *vecsize = vecsize_table[_BITS(bits, 8, 2)];
8541 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8543 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8548 bi_disasm_add_ld_var_flat_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8553 const char *register_format = register_format_table[(_BITS(bits, 10, 1) << 0) | (_BITS(bits, 19, 1) << 1)];
8558 const char *vecsize = vecsize_table[_BITS(bits, 8, 2)];
8564 const char *function = function_table[_BITS(bits, 0, 3)];
8573 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8578 bi_disasm_add_ld_var_flat_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8588 const char *vecsize = vecsize_table[_BITS(bits, 8, 2)];
8594 const char *function = function_table[_BITS(bits, 0, 3)];
8603 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8608 bi_disasm_add_ld_var_flat_imm_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8613 const char *register_format = register_format_table[(_BITS(bits, 10, 1) << 0) | (_BITS(bits, 19, 1) << 1)];
8618 const char *vecsize = vecsize_table[_BITS(bits, 8, 2)];
8624 const char *function = function_table[_BITS(bits, 0, 3)];
8632 fprintf(fp, ", index:%u", _BITS(bits, 3, 5));
8637 bi_disasm_add_ld_var_flat_imm_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8647 const char *vecsize = vecsize_table[_BITS(bits, 8, 2)];
8653 const char *function = function_table[_BITS(bits, 0, 3)];
8661 fprintf(fp, ", index:%u", _BITS(bits, 3, 5));
8666 bi_disasm_add_ld_var_imm_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8671 const char *update = update_table[(_BITS(bits, 19, 1) << 0) | (_BITS(bits, 10, 4) << 1)];
8675 const char *sample = sample_table[(_BITS(bits, 19, 1) << 0) | (_BITS(bits, 10, 4) << 1)];
8679 const char *register_format = register_format_table[(_BITS(bits, 19, 1) << 0) | (_BITS(bits, 10, 4) << 1)];
8684 const char *vecsize = vecsize_table[_BITS(bits, 8, 2)];
8694 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8695 fprintf(fp, ", index:%u", _BITS(bits, 3, 5));
8700 bi_disasm_add_ld_var_imm_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8705 const char *update = update_table[(_BITS(bits, 10, 4) << 0)];
8709 const char *sample = sample_table[(_BITS(bits, 10, 4) << 0)];
8713 const char *register_format = register_format_table[(_BITS(bits, 10, 4) << 0)];
8718 const char *vecsize = vecsize_table[_BITS(bits, 8, 2)];
8728 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8729 fprintf(fp, ", index:%u", _BITS(bits, 3, 5));
8734 bi_disasm_add_ld_var_special_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8739 const char *update = update_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 19, 1) << 2) | (_BITS(bits, 10, 4) << 3)];
8743 const char *register_format = register_format_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 19, 1) << 2) | (_BITS(bits, 10, 4) << 3)];
8747 const char *sample = sample_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 19, 1) << 2) | (_BITS(bits, 10, 4) << 3)];
8751 const char *varying_name = varying_name_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 19, 1) << 2) | (_BITS(bits, 10, 4) << 3)];
8755 const char *vecsize = vecsize_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 19, 1) << 2) | (_BITS(bits, 10, 4) << 3)];
8765 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8770 bi_disasm_add_ld_var_special_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8775 const char *update = update_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 10, 4) << 2)];
8779 const char *register_format = register_format_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 10, 4) << 2)];
8783 const char *sample = sample_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 10, 4) << 2)];
8787 const char *varying_name = varying_name_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 10, 4) << 2)];
8791 const char *vecsize = vecsize_table[(_BITS(bits, 3, 2) << 0) | (_BITS(bits, 10, 4) << 2)];
8801 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8806 bi_disasm_add_lea_attr_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8811 const char *register_format = register_format_table[(_BITS(bits, 11, 3) << 0)];
8817 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8819 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8821 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8826 bi_disasm_add_lea_attr_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8837 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8839 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8841 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8846 bi_disasm_add_lea_attr_imm_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8851 const char *register_format = register_format_table[(_BITS(bits, 11, 3) << 0)];
8857 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8859 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8860 fprintf(fp, ", attribute_index:%u", _BITS(bits, 6, 4));
8865 bi_disasm_add_lea_attr_imm_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8876 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8878 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8879 fprintf(fp, ", attribute_index:%u", _BITS(bits, 6, 4));
8884 bi_disasm_add_lea_attr_tex_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8889 const char *register_format = register_format_table[(_BITS(bits, 11, 3) << 0)];
8895 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8897 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8899 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8904 bi_disasm_add_lea_attr_tex_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8915 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8917 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8919 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8924 bi_disasm_add_lea_tex(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8930 const char *format = format_table[_BITS(bits, 11, 1)];
8937 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8939 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8941 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
8946 bi_disasm_add_lea_tex_imm(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8952 const char *format = format_table[_BITS(bits, 11, 1)];
8959 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8961 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8962 fprintf(fp, ", texture_index:%u", _BITS(bits, 6, 5));
8967 bi_disasm_add_load_i128(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8973 const char *seg = seg_table[_BITS(bits, 6, 3)];
8980 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
8982 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
8987 bi_disasm_add_load_i16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
8992 const char *lane_dest = lane_dest_table[(_BITS(bits, 9, 1) << 0)];
8996 const char *extend = extend_table[(_BITS(bits, 9, 1) << 0)];
9001 const char *seg = seg_table[_BITS(bits, 6, 3)];
9010 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9012 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9017 bi_disasm_add_load_i16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9022 const char *lane_dest = lane_dest_table[(_BITS(bits, 9, 1) << 0)];
9026 const char *extend = extend_table[(_BITS(bits, 9, 1) << 0)];
9031 const char *seg = seg_table[_BITS(bits, 6, 3)];
9040 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9042 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9047 bi_disasm_add_load_i16_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9052 const char *lane_dest = lane_dest_table[(_BITS(bits, 9, 1) << 0)];
9056 const char *extend = extend_table[(_BITS(bits, 9, 1) << 0)];
9061 const char *seg = seg_table[_BITS(bits, 6, 3)];
9070 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9072 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9077 bi_disasm_add_load_i24(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9083 const char *seg = seg_table[_BITS(bits, 6, 3)];
9090 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9092 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9097 bi_disasm_add_load_i32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9111 const char *seg = seg_table[_BITS(bits, 6, 3)];
9120 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9122 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9127 bi_disasm_add_load_i32_1(FILE *fp, unsigned bits
9132 const char *lane_dest = lane_dest_table[(_BITS(bits, 9, 1) << 0)];
9136 const char *extend = extend_table[(_BITS(bits, 9, 1) << 0)];
9141 const char *seg = seg_table[_BITS(bits, 6, 3)];
9150 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9152 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9157 bi_disasm_add_load_i48(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9163 const char *seg = seg_table[_BITS(bits, 6, 3)];
9170 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9172 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9177 bi_disasm_add_load_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9183 const char *seg = seg_table[_BITS(bits, 6, 3)];
9190 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9192 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9197 bi_disasm_add_load_i8_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9202 const char *lane_dest = lane_dest_table[(_BITS(bits, 9, 2) << 0)];
9206 const char *extend = extend_table[(_BITS(bits, 9, 2) << 0)];
9211 const char *seg = seg_table[_BITS(bits, 6, 3)];
9220 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9222 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9227 bi_disasm_add_load_i8_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9232 const char *lane_dest = lane_dest_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 10, 1) << 1)];
9236 const char *extend = extend_table[(_BITS(bits, 9, 1) << 0) | (_BITS(bits, 10, 1) << 1)];
9241 const char *seg = seg_table[_BITS(bits, 6, 3)];
9250 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9252 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9257 bi_disasm_add_load_i8_2(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9262 const char *lane_dest = lane_dest_table[(_BITS(bits, 9, 1) << 0)];
9266 const char *extend = extend_table[(_BITS(bits, 9, 1) << 0)];
9271 const char *seg = seg_table[_BITS(bits, 6, 3)];
9280 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9282 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9287 bi_disasm_add_load_i8_3(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9292 const char *lane_dest = lane_dest_table[(_BITS(bits, 9, 1) << 0)];
9296 const char *extend = extend_table[(_BITS(bits, 9, 1) << 0)];
9301 const char *seg = seg_table[_BITS(bits, 6, 3)];
9310 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9312 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9317 bi_disasm_add_load_i96(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9323 const char *seg = seg_table[_BITS(bits, 6, 3)];
9330 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9332 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9337 bi_disasm_add_logb_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9343 const char *widen0 = widen0_table[_BITS(bits, 3, 2)];
9349 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9354 bi_disasm_add_logb_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9360 const char *swz0 = swz0_table[_BITS(bits, 3, 2)];
9366 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9371 bi_disasm_add_mkvec_v2i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9377 const char *lane0 = lane0_table[_BITS(bits, 6, 1)];
9383 const char *lane1 = lane1_table[_BITS(bits, 7, 1)];
9389 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9392 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9397 bi_disasm_add_mov_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9403 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9407 bi_disasm_add_mux_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9413 const char *mux = mux_table[_BITS(bits, 9, 2)];
9420 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9422 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9424 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
9428 bi_disasm_add_mux_v2i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9434 const char *mux = mux_table[_BITS(bits, 9, 2)];
9440 const char *swap2 = swap2_table[_BITS(bits, 11, 1)];
9446 const char *swap1 = swap1_table[_BITS(bits, 12, 1)];
9452 const char *swap0 = swap0_table[_BITS(bits, 13, 1)];
9459 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9462 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9465 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
9470 bi_disasm_add_mux_v4i8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9476 const char *mux = mux_table[_BITS(bits, 9, 1)];
9483 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9485 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9487 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
9491 bi_disasm_add_nop(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9499 bi_disasm_add_quiet_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9505 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9509 bi_disasm_add_quiet_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9515 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
9521 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9526 bi_disasm_add_s16_to_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9532 const char *lane0 = lane0_table[_BITS(bits, 4, 1)];
9538 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9543 bi_disasm_add_s16_to_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9549 const char *lane0 = lane0_table[_BITS(bits, 4, 1)];
9555 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9560 bi_disasm_add_s32_to_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9565 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
9571 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9575 bi_disasm_add_s32_to_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9586 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9590 bi_disasm_add_s8_to_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9596 const char *lane0 = lane0_table[_BITS(bits, 4, 2)];
9602 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9607 bi_disasm_add_s8_to_s32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9613 const char *lane0 = lane0_table[_BITS(bits, 4, 2)];
9619 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9624 bi_disasm_add_seg_add(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9630 const char *seg = seg_table[_BITS(bits, 3, 3)];
9636 const char *preserve_null = preserve_null_table[_BITS(bits, 7, 1)];
9644 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9648 bi_disasm_add_seg_sub(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9654 const char *seg = seg_table[_BITS(bits, 3, 3)];
9660 const char *preserve_null = preserve_null_table[_BITS(bits, 7, 1)];
9668 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9672 bi_disasm_add_shaddxh_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9678 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9680 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9684 bi_disasm_add_shift_double_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9690 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9692 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9694 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
9698 bi_disasm_add_store_i128(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9704 const char *seg = seg_table[_BITS(bits, 6, 3)];
9711 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9713 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9718 bi_disasm_add_store_i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9724 const char *seg = seg_table[_BITS(bits, 6, 3)];
9731 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9733 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9738 bi_disasm_add_store_i24(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9744 const char *seg = seg_table[_BITS(bits, 6, 3)];
9751 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9753 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9758 bi_disasm_add_store_i32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9764 const char *seg = seg_table[_BITS(bits, 6, 3)];
9771 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9773 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9778 bi_disasm_add_store_i48(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9784 const char *seg = seg_table[_BITS(bits, 6, 3)];
9791 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9793 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9798 bi_disasm_add_store_i64(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9804 const char *seg = seg_table[_BITS(bits, 6, 3)];
9811 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9813 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9818 bi_disasm_add_store_i8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9824 const char *seg = seg_table[_BITS(bits, 6, 3)];
9831 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9833 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9838 bi_disasm_add_store_i96(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9844 const char *seg = seg_table[_BITS(bits, 6, 3)];
9851 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9853 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9858 bi_disasm_add_st_cvt(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9864 const char *vecsize = vecsize_table[_BITS(bits, 9, 2)];
9871 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9873 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9875 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
9876 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
9881 bi_disasm_add_st_tile(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9887 const char *vecsize = vecsize_table[_BITS(bits, 9, 2)];
9894 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9896 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9898 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
9899 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
9904 bi_disasm_add_swz_v2i16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9910 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
9916 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9921 bi_disasm_add_swz_v4i8(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9927 const char *swz0 = swz0_table[_BITS(bits, 3, 3)];
9933 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9938 bi_disasm_add_texc(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9944 const char *skip = skip_table[_BITS(bits, 9, 1)];
9951 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9953 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9955 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
9956 if (!(0xf7 & (1 << _BITS(bits, 6, 3)))) fputs("(INVALID)", fp);
9961 bi_disasm_add_texs_2d_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9967 const char *skip = skip_table[_BITS(bits, 9, 1)];
9973 const char *lod_mode = lod_mode_table[_BITS(bits, 13, 1)];
9981 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
9983 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
9984 fprintf(fp, ", texture_index:%u", _BITS(bits, 6, 3));
9985 fprintf(fp, ", sampler_index:%u", _BITS(bits, 10, 3));
9990 bi_disasm_add_texs_2d_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
9996 const char *skip = skip_table[_BITS(bits, 9, 1)];
10002 const char *lod_mode = lod_mode_table[_BITS(bits, 13, 1)];
10010 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10012 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
10013 fprintf(fp, ", texture_index:%u", _BITS(bits, 6, 3));
10014 fprintf(fp, ", sampler_index:%u", _BITS(bits, 10, 3));
10019 bi_disasm_add_texs_cube_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10025 const char *skip = skip_table[_BITS(bits, 9, 1)];
10032 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10034 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
10036 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
10037 fprintf(fp, ", sampler_index:%u", _BITS(bits, 10, 2));
10038 fprintf(fp, ", texture_index:%u", _BITS(bits, 12, 2));
10043 bi_disasm_add_texs_cube_f32(FILE *fp, unsigned bits
10049 const char *skip = skip_table[_BITS(bits, 9, 1)];
10056 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10058 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
10060 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
10061 fprintf(fp, ", sampler_index:%u", _BITS(bits, 10, 2));
10062 fprintf(fp, ", texture_index:%u", _BITS(bits, 12, 2));
10067 bi_disasm_add_u16_to_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10073 const char *lane0 = lane0_table[_BITS(bits, 4, 1)];
10079 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10084 bi_disasm_add_u16_to_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10090 const char *lane0 = lane0_table[_BITS(bits, 4, 1)];
10096 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10101 bi_disasm_add_u32_to_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10106 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
10112 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10116 bi_disasm_add_u32_to_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10127 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10131 bi_disasm_add_u8_to_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10137 const char *lane0 = lane0_table[_BITS(bits, 4, 2)];
10143 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10148 bi_disasm_add_u8_to_u32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10154 const char *lane0 = lane0_table[_BITS(bits, 4, 2)];
10160 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10165 bi_disasm_add_v2f16_to_v2s16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10170 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
10175 const char *swz0 = swz0_table[_BITS(bits, 6, 2)];
10182 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10187 bi_disasm_add_v2f16_to_v2s16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10197 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
10204 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10209 bi_disasm_add_v2f16_to_v2u16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10214 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
10219 const char *swz0 = swz0_table[_BITS(bits, 6, 2)];
10226 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10231 bi_disasm_add_v2f16_to_v2u16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10241 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
10248 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10253 bi_disasm_add_v2f32_to_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10258 const char *neg1 = neg1_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
10262 const char *abs0 = abs0_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
10266 const char *neg0 = neg0_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
10270 const char *abs1 = abs1_table[(_BITS(bits, 6, 1) << 0) | (_BITS(bits, 7, 1) << 1)];
10275 const char *clamp = clamp_table[_BITS(bits, 8, 2)];
10281 const char *round = round_table[_BITS(bits, 10, 3)];
10289 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10293 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
10299 bi_disasm_add_v2s16_to_v2f16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10304 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
10309 const char *swz0 = swz0_table[_BITS(bits, 6, 2)];
10316 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10321 bi_disasm_add_v2s16_to_v2f16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10331 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
10338 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10343 bi_disasm_add_v2s8_to_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10349 const char *swz0 = swz0_table[_BITS(bits, 4, 4)];
10355 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10360 bi_disasm_add_v2s8_to_v2s16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10366 const char *swz0 = swz0_table[_BITS(bits, 4, 4)];
10372 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10377 bi_disasm_add_v2u16_to_v2f16_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10382 const char *round = round_table[(_BITS(bits, 4, 2) << 0)];
10387 const char *swz0 = swz0_table[_BITS(bits, 6, 2)];
10394 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10399 bi_disasm_add_v2u16_to_v2f16_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10409 const char *swz0 = swz0_table[_BITS(bits, 4, 2)];
10416 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10421 bi_disasm_add_v2u8_to_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10427 const char *swz0 = swz0_table[_BITS(bits, 4, 4)];
10433 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10438 bi_disasm_add_v2u8_to_v2u16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10444 const char *swz0 = swz0_table[_BITS(bits, 4, 4)];
10450 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10455 bi_disasm_add_var_tex_f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10460 const char *update = update_table[(_BITS(bits, 5, 2) << 0)];
10464 const char *sample = sample_table[(_BITS(bits, 5, 2) << 0)];
10469 const char *skip = skip_table[_BITS(bits, 7, 1)];
10475 const char *lod_mode = lod_mode_table[_BITS(bits, 9, 1)];
10484 fprintf(fp, ", varying_index:%u", _BITS(bits, 0, 3));
10485 fprintf(fp, ", texture_index:%u", _BITS(bits, 3, 2));
10490 bi_disasm_add_var_tex_f32(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10495 const char *update = update_table[(_BITS(bits, 5, 2) << 0)];
10499 const char *sample = sample_table[(_BITS(bits, 5, 2) << 0)];
10504 const char *skip = skip_table[_BITS(bits, 7, 1)];
10510 const char *lod_mode = lod_mode_table[_BITS(bits, 9, 1)];
10519 fprintf(fp, ", varying_index:%u", _BITS(bits, 0, 3));
10520 fprintf(fp, ", texture_index:%u", _BITS(bits, 3, 2));
10525 bi_disasm_add_vn_asst2_f32_0(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10535 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
10542 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10547 bi_disasm_add_vn_asst2_f32_1(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10557 const char *neg0 = neg0_table[_BITS(bits, 4, 1)];
10564 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10569 bi_disasm_add_vn_asst2_v2f16(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10575 const char *neg0 = neg0_table[_BITS(bits, 3, 1)];
10581 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10586 bi_disasm_add_wmask(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10592 const char *subgroup = subgroup_table[_BITS(bits, 4, 2)];
10599 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10600 fprintf(fp, ", fill:%u", _BITS(bits, 3, 1));
10604 bi_disasm_add_zs_emit(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10609 const char *z = z_table[(_BITS(bits, 9, 2) << 0)];
10613 const char *stencil = stencil_table[(_BITS(bits, 9, 2) << 0)];
10620 dump_src(fp, _BITS(bits, 0, 3), *srcs, branch_offset, consts, false);
10622 dump_src(fp, _BITS(bits, 3, 3), *srcs, branch_offset, consts, false);
10624 dump_src(fp, _BITS(bits, 6, 3), *srcs, branch_offset, consts, false);
10629 bi_disasm_fma(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10633 if (unlikely(((bits & 0x7fffff) == 0x701963)))
10634 bi_disasm_fma_nop(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10635 else if (unlikely(((bits & 0x7ffff8) == 0x701fc0)))
10636 bi_disasm_fma_bitrev_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10637 else if (unlikely(((bits & 0x7ffff8) == 0x701968)))
10638 bi_disasm_fma_mov_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10639 else if (unlikely(((bits & 0x7ffff8) == 0x73c6d8)))
10640 bi_disasm_fma_popcount_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10641 else if (unlikely(((bits & 0x7ffff8) == 0x701970)))
10642 bi_disasm_fma_quiet_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10643 else if (unlikely(((bits & 0x7ffff0) == 0x701fd0)))
10644 bi_disasm_fma_clz_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10645 else if (unlikely(((bits & 0x7ffff0) == 0x701f90)))
10646 bi_disasm_fma_clz_v4u8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10647 else if (unlikely(((bits & 0x7ffff0) == 0x700d10)))
10648 bi_disasm_fma_f16_to_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10649 else if (unlikely(((bits & 0x7fffe8) == 0x700cc0)))
10650 bi_disasm_fma_s16_to_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10651 else if (unlikely(((bits & 0x7fffe8) == 0x700cc8)))
10652 bi_disasm_fma_u16_to_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10653 else if (unlikely(((bits & 0x7fffe0) == 0x70f3e0)))
10654 bi_disasm_fma_dtsel_imm(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10655 else if (unlikely(((bits & 0x7fffe0) == 0x701e20)))
10656 bi_disasm_fma_frexpe_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10657 else if (unlikely(((bits & 0x7fffe0) == 0x701e00)))
10658 bi_disasm_fma_frexpe_v2f16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10659 else if (unlikely(((bits & 0x7fffc8) == 0x701900)))
10660 bi_disasm_fma_quiet_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10661 else if (unlikely(((bits & 0x7fffc8) == 0x700b40)))
10662 bi_disasm_fma_s8_to_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10663 else if (unlikely(((bits & 0x7fffc8) == 0x700b48)))
10664 bi_disasm_fma_u8_to_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10665 else if (unlikely(((bits & 0x7fffc0) == 0x701ec0)))
10666 bi_disasm_fma_clz_v2u16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10667 else if (unlikely(((bits & 0x7fffc0) == 0x70cb40)))
10668 bi_disasm_fma_fmul_slice_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10669 else if (unlikely(((bits & 0x7fffc0) == 0x73c0c0)))
10670 bi_disasm_fma_imul_i32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10671 else if (unlikely(((bits & 0x7fffc0) == 0x73e0c0)))
10672 bi_disasm_fma_imul_v4i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10673 else if (unlikely(((bits & 0x7fff80) == 0x70f100)))
10674 bi_disasm_fma_imuld(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10675 else if (unlikely(((bits & 0x7fff40) == 0x701500)))
10676 bi_disasm_fma_seg_add(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10677 else if (unlikely(((bits & 0x7fff40) == 0x701540)))
10678 bi_disasm_fma_seg_sub(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10679 else if (unlikely(((bits & 0x7fff20) == 0x701b20)))
10680 bi_disasm_fma_frexpm_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10681 else if (unlikely(((bits & 0x7fff20) == 0x701a20)))
10682 bi_disasm_fma_frexpm_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10683 else if (unlikely(((bits & 0x7fff20) == 0x701b00)))
10684 bi_disasm_fma_frexpm_v2f16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10685 else if (unlikely(((bits & 0x7fff20) == 0x701a00)))
10686 bi_disasm_fma_frexpm_v2f16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10687 else if (unlikely(((bits & 0x7fff00) == 0x70f000)))
10688 bi_disasm_fma_mkvec_v2i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10689 else if (unlikely(((bits & 0x7ffea0) == 0x701c20)))
10690 bi_disasm_fma_frexpe_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10691 else if (unlikely(((bits & 0x7ffea0) == 0x701c00)))
10692 bi_disasm_fma_frexpe_v2f16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10693 else if (unlikely(((bits & 0x7ffe60) == 0x707620)))
10694 bi_disasm_fma_fround_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10695 else if (unlikely(((bits & 0x7ffe60) == 0x707600)))
10696 bi_disasm_fma_fround_v2f16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10697 else if (unlikely(((bits & 0x7ffe38) == 0x335818)))
10698 bi_disasm_fma_arshift_v4i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10699 else if (unlikely(((bits & 0x7ffe00) == 0x2f5e00)))
10700 bi_disasm_fma_atom_c1_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10701 else if (unlikely(((bits & 0x7ffe00) == 0x2f1e00)))
10702 bi_disasm_fma_atom_c1_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10703 else if (unlikely(((bits & 0x7ffe00) == 0x2f7e00)))
10704 bi_disasm_fma_atom_c1_return_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10705 else if (unlikely(((bits & 0x7ffe00) == 0x2f3e00)))
10706 bi_disasm_fma_atom_c1_return_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10707 else if (unlikely(((bits & 0x7ffe00) == 0x70d000)))
10708 bi_disasm_fma_fmul_cslice(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10709 else if (unlikely(((bits & 0x7ffe00) == 0x27fc00)))
10710 bi_disasm_fma_iaddc_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10711 else if (unlikely(((bits & 0x7ffe00) == 0x27fe00)))
10712 bi_disasm_fma_isubb_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10713 else if (unlikely(((bits & 0x7ffe00) == 0x70e600)))
10714 bi_disasm_fma_shaddxl_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10715 else if (unlikely(((bits & 0x7ffc00) == 0x6ee400)))
10716 bi_disasm_fma_atom_post_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10717 else if (unlikely(((bits & 0x7ffc00) == 0x6ee000)))
10718 bi_disasm_fma_atom_post_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10719 else if (unlikely(((bits & 0x7ffc00) == 0x706800)))
10720 bi_disasm_fma_cubeface1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10721 else if (unlikely(((bits & 0x7ffc00) == 0x70f400)))
10722 bi_disasm_fma_fadd_lscale_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10723 else if (unlikely(((bits & 0x7ff9c0) == 0x73e8c0)))
10724 bi_disasm_fma_idp_v4i8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10725 else if (unlikely(((bits & 0x7ff9c0) == 0x73c8c0)))
10726 bi_disasm_fma_imul_i32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10727 else if (unlikely(((bits & 0x7ff9c0) == 0x7380c0)))
10728 bi_disasm_fma_imul_v4i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10729 else if (unlikely(((bits & 0x7ff860) == 0x70c020)))
10730 bi_disasm_fma_fround_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10731 else if (unlikely(((bits & 0x7ff860) == 0x70c000)))
10732 bi_disasm_fma_fround_v2f16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10733 else if (unlikely(((bits & 0x7ff838) == 0x335018)))
10734 bi_disasm_fma_arshift_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10735 else if (unlikely(((bits & 0x7ff838) == 0x334818)))
10736 bi_disasm_fma_arshift_v2i16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10737 else if (unlikely(((bits & 0x7ff838) == 0x335818)
10738 && !(0x1 & (1 << _BITS(bits, 9, 2)))
10740 bi_disasm_fma_arshift_v2i16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10741 else if (unlikely(((bits & 0x7ff838) == 0x334018)))
10742 bi_disasm_fma_arshift_v4i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10743 else if (unlikely(((bits & 0x7ff800) == 0x33f800)))
10744 bi_disasm_fma_flshift_double_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10745 else if (unlikely(((bits & 0x7ff800) == 0x33f000)))
10746 bi_disasm_fma_frshift_double_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10747 else if (unlikely(((bits & 0x7ff800) == 0x70e800)))
10748 bi_disasm_fma_shaddxl_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10749 else if (unlikely(((bits & 0x7ff800) == 0x70e000)))
10750 bi_disasm_fma_shaddxl_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10751 else if (unlikely(((bits & 0x7ff1c0) == 0x73b0c0)))
10752 bi_disasm_fma_imul_i32_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10753 else if (unlikely(((bits & 0x7ff000) == 0x33e000)))
10754 bi_disasm_fma_arshift_double_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10755 else if (unlikely(((bits & 0x7ff000) == 0x2eb000)))
10756 bi_disasm_fma_jump_ex(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10757 else if (unlikely(((bits & 0x7ff000) == 0x33b000)))
10758 bi_disasm_fma_lrot_double_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10759 else if (unlikely(((bits & 0x7ff000) == 0x33c000)))
10760 bi_disasm_fma_lshift_double_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10761 else if (unlikely(((bits & 0x7ff000) == 0x33a000)))
10762 bi_disasm_fma_rrot_double_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10763 else if (unlikely(((bits & 0x7ff000) == 0x33d000)))
10764 bi_disasm_fma_rshift_double_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10765 else if (unlikely(((bits & 0x7ff000) == 0x6eb000)))
10766 bi_disasm_fma_vn_asst1_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10767 else if (unlikely(((bits & 0x7fe1c0) == 0x7240c0)))
10768 bi_disasm_fma_imul_v2i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10769 else if (unlikely(((bits & 0x7fe000) == 0x2f4000)))
10770 bi_disasm_fma_atom_c_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10771 else if (unlikely(((bits & 0x7fe000) == 0x2f0000)))
10772 bi_disasm_fma_atom_c_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10773 else if (unlikely(((bits & 0x7fe000) == 0x2f6000)))
10774 bi_disasm_fma_atom_c_return_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10775 else if (unlikely(((bits & 0x7fe000) == 0x2f2000)))
10776 bi_disasm_fma_atom_c_return_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10777 else if (unlikely(((bits & 0x7fe000) == 0x6ec000)))
10778 bi_disasm_fma_atom_pre_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10779 else if (unlikely(((bits & 0x7fe000) == 0x2e4000)))
10780 bi_disasm_fma_csel_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10781 else if (unlikely(((bits & 0x7fe000) == 0x2e6000)))
10782 bi_disasm_fma_csel_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10783 else if (unlikely(((bits & 0x7fe000) == 0x6e4000)))
10784 bi_disasm_fma_csel_v2s16(fp, bits
10785 else if (unlikely(((bits & 0x7fe000) == 0x6e6000)))
10786 bi_disasm_fma_csel_v2u16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10787 else if (unlikely(((bits & 0x7fe000) == 0x6e8000)))
10788 bi_disasm_fma_v2f32_to_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10789 else if (unlikely(((bits & 0x7fe000) == 0x27c000)))
10790 bi_disasm_fma_vn_asst1_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10791 else if (unlikely(((bits & 0x7fde00) == 0x325800)))
10792 bi_disasm_fma_lshift_xor_v4i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10793 else if (unlikely(((bits & 0x7fde00) == 0x321800)))
10794 bi_disasm_fma_rshift_xor_v4i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10795 else if (unlikely(((bits & 0x7fd800) == 0x325000)))
10796 bi_disasm_fma_lshift_xor_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10797 else if (unlikely(((bits & 0x7fd800) == 0x324800)))
10798 bi_disasm_fma_lshift_xor_v2i16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10799 else if (unlikely(((bits & 0x7fd800) == 0x325800)
10800 && !(0x1 & (1 << _BITS(bits, 9, 2)))
10802 bi_disasm_fma_lshift_xor_v2i16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10803 else if (unlikely(((bits & 0x7fd800) == 0x324000)))
10804 bi_disasm_fma_lshift_xor_v4i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10805 else if (unlikely(((bits & 0x7fd800) == 0x321000)))
10806 bi_disasm_fma_rshift_xor_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10807 else if (unlikely(((bits & 0x7fd800) == 0x320800)))
10808 bi_disasm_fma_rshift_xor_v2i16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10809 else if (unlikely(((bits & 0x7fd800) == 0x321800)
10810 && !(0x1 & (1 << _BITS(bits, 9, 2)))
10812 bi_disasm_fma_rshift_xor_v2i16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10813 else if (unlikely(((bits & 0x7fd800) == 0x320000)))
10814 bi_disasm_fma_rshift_xor_v4i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10815 else if (unlikely(((bits & 0x7fc000) == 0x2e0000)
10816 && !(0x8 & (1 << _BITS(bits, 12, 2)))
10818 bi_disasm_fma_csel_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10819 else if (unlikely(((bits & 0x7fc000) == 0x6e0000)
10820 && !(0x8 & (1 << _BITS(bits, 12, 2)))
10822 bi_disasm_fma_csel_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10823 else if (unlikely(((bits & 0x7f8000) == 0x2e0000)
10824 && !(0xf7 & (1 << _BITS(bits, 12, 3)))
10826 bi_disasm_fma_csel_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10827 else if (unlikely(((bits & 0x7f8000) == 0x6e0000)
10828 && !(0xf7 & (1 << _BITS(bits, 12, 3)))
10830 bi_disasm_fma_csel_v2i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10831 else if (unlikely(((bits & 0x7f3e00) == 0x311800)))
10832 bi_disasm_fma_lshift_and_v4i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10833 else if (unlikely(((bits & 0x7f3e00) == 0x313800)))
10834 bi_disasm_fma_lshift_or_v4i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10835 else if (unlikely(((bits & 0x7f3e00) == 0x301800)))
10836 bi_disasm_fma_rshift_and_v4i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10837 else if (unlikely(((bits & 0x7f3e00) == 0x303800)))
10838 bi_disasm_fma_rshift_or_v4i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10839 else if (unlikely(((bits & 0x7f3800) == 0x311000)))
10840 bi_disasm_fma_lshift_and_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10841 else if (unlikely(((bits & 0x7f3800) == 0x310800)))
10842 bi_disasm_fma_lshift_and_v2i16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10843 else if (unlikely(((bits & 0x7f3800) == 0x311800)
10844 && !(0x1 & (1 << _BITS(bits, 9, 2)))
10846 bi_disasm_fma_lshift_and_v2i16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10847 else if (unlikely(((bits & 0x7f3800) == 0x310000)))
10848 bi_disasm_fma_lshift_and_v4i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10849 else if (unlikely(((bits & 0x7f3800) == 0x313000)))
10850 bi_disasm_fma_lshift_or_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10851 else if (unlikely(((bits & 0x7f3800) == 0x312800)))
10852 bi_disasm_fma_lshift_or_v2i16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10853 else if (unlikely(((bits & 0x7f3800) == 0x313800)
10854 && !(0x1 & (1 << _BITS(bits, 9, 2)))
10856 bi_disasm_fma_lshift_or_v2i16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10857 else if (unlikely(((bits & 0x7f3800) == 0x312000)))
10858 bi_disasm_fma_lshift_or_v4i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10859 else if (unlikely(((bits & 0x7f3800) == 0x301000)))
10860 bi_disasm_fma_rshift_and_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10861 else if (unlikely(((bits & 0x7f3800) == 0x300800)))
10862 bi_disasm_fma_rshift_and_v2i16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10863 else if (unlikely(((bits & 0x7f3800) == 0x301800)
10864 && !(0x1 & (1 << _BITS(bits, 9, 2)))
10866 bi_disasm_fma_rshift_and_v2i16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10867 else if (unlikely(((bits & 0x7f3800) == 0x300000)))
10868 bi_disasm_fma_rshift_and_v4i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10869 else if (unlikely(((bits & 0x7f3800) == 0x303000)))
10870 bi_disasm_fma_rshift_or_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10871 else if (unlikely(((bits & 0x7f3800) == 0x302800)))
10872 bi_disasm_fma_rshift_or_v2i16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10873 else if (unlikely(((bits & 0x7f3800) == 0x303800)
10874 && !(0x1 & (1 << _BITS(bits, 9, 2)))
10876 bi_disasm_fma_rshift_or_v2i16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10877 else if (unlikely(((bits & 0x7f3800) == 0x302000)))
10878 bi_disasm_fma_rshift_or_v4i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10879 else if (unlikely(((bits & 0x7f0000) == 0x710000)))
10880 bi_disasm_fma_mkvec_v4i8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10881 else if (unlikely(((bits & 0x7e0000) == 0x2c0000)))
10882 bi_disasm_fma_fadd_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10883 else if (unlikely(((bits & 0x7e0000) == 0x6c0000)))
10884 bi_disasm_fma_fadd_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10885 else if (unlikely(((bits & 0x7c0000) == 0x240000)))
10886 bi_disasm_fma_fcmp_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10887 else if (unlikely(((bits & 0x7c0000) == 0x640000)))
10888 bi_disasm_fma_fcmp_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10889 else if (unlikely(((bits & 0x7c0000) == 0x280000)))
10890 bi_disasm_fma_fma_rscale_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10891 else if (unlikely(((bits & 0x7c0000) == 0x680000)
10892 && !(0x40 & (1 << _BITS(bits, 12, 3)))
10894 bi_disasm_fma_fma_rscale_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10895 else if (unlikely(((bits & 0x600000) == 0x0)))
10896 bi_disasm_fma_fma_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10897 else if (unlikely(((bits & 0x600000) == 0x400000)))
10898 bi_disasm_fma_fma_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10900 fprintf(fp, "INSTR_INVALID_ENC fma %X", bits);
10905 bi_disasm_add(FILE *fp, unsigned bits, struct bifrost_regs *srcs, struct bifrost_regs *next_regs, unsigned staging_register, unsigned branch_offset, struct bi_constants *consts, bool last)
10909 if (unlikely(((bits & 0xfffff) == 0xd7874)))
10910 bi_disasm_add_barrier(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10911 else if (unlikely(((bits & 0xfffff) == 0x3d964)))
10912 bi_disasm_add_nop(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10913 else if (unlikely(((bits & 0xffff8) == 0x3de58)))
10914 bi_disasm_add_cubeface2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10915 else if (unlikely(((bits & 0xffff8) == 0xd7860)))
10916 bi_disasm_add_doorbell(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10917 else if (unlikely(((bits & 0xffff8) == 0xd7850)))
10918 bi_disasm_add_eureka(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10919 else if (unlikely(((bits & 0xffff8) == 0x3cca0)))
10920 bi_disasm_add_f32_to_s32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10921 else if (unlikely(((bits & 0xffff8) == 0x3cca8)))
10922 bi_disasm_add_f32_to_u32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10923 else if (unlikely(((bits & 0xffff8) == 0x66340)))
10924 bi_disasm_add_flogd_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10925 else if (unlikely(((bits & 0xffff8) == 0x67c50)))
10926 bi_disasm_add_fpclass_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10927 else if (unlikely(((bits & 0xffff8) == 0x67ab0)))
10928 bi_disasm_add_frcbrt_approx_b_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10929 else if (unlikely(((bits & 0xffff8) == 0x67ab8)))
10930 bi_disasm_add_frcbrt_approx_c_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10931 else if (unlikely(((bits & 0xffff8) == 0x3dea0)))
10932 bi_disasm_add_iabs_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10933 else if (unlikely(((bits & 0xffff8) == 0x3deb0)))
10934 bi_disasm_add_iabs_v4s8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10935 else if (unlikely(((bits & 0xffff8) == 0xd7858)))
10936 bi_disasm_add_kaboom(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10937 else if (unlikely(((bits & 0xffff8) == 0xd7800)))
10938 bi_disasm_add_ld_gclk_u64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10939 else if (unlikely(((bits & 0xffff8) == 0x3d968)))
10940 bi_disasm_add_mov_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10941 else if (unlikely(((bits & 0xffff8) == 0x3d970)))
10942 bi_disasm_add_quiet_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10943 else if (unlikely(((bits & 0xffff8) == 0x3cd00)))
10944 bi_disasm_add_s32_to_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10945 else if (unlikely(((bits & 0xffff8) == 0x3cd08)))
10946 bi_disasm_add_u32_to_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10947 else if (unlikely(((bits & 0xffff7) == 0xd7820)))
10948 bi_disasm_add_imov_fma(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10949 else if (unlikely(((bits & 0xffff0) == 0x3cd10)))
10950 bi_disasm_add_f16_to_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10951 else if (unlikely(((bits & 0xffff0) == 0x67c40)))
10952 bi_disasm_add_fpclass_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10953 else if (unlikely(((bits & 0xffff0) == 0x67aa0)))
10954 bi_disasm_add_fsincos_offset_u6(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10955 else if (unlikely(((bits & 0xffff0) == 0x3df80)))
10956 bi_disasm_add_vn_asst2_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10957 else if (unlikely(((bits & 0xffff0) == 0x3dfa0)))
10958 bi_disasm_add_vn_asst2_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10959 else if (unlikely(((bits & 0xfffe8) == 0x67a88)))
10960 bi_disasm_add_fcos_table_u6(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10961 else if (unlikely(((bits & 0xfffe8) == 0x67a80)))
10962 bi_disasm_add_fsin_table_u6(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10963 else if (unlikely(((bits & 0xfffe8) == 0x3cce0)))
10964 bi_disasm_add_s16_to_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10965 else if (unlikely(((bits & 0xfffe8) == 0x3ccc0)))
10966 bi_disasm_add_s16_to_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10967 else if (unlikely(((bits & 0xfffe8) == 0x3cce8)))
10968 bi_disasm_add_u16_to_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10969 else if (unlikely(((bits & 0xfffe8) == 0x3ccc8)))
10970 bi_disasm_add_u16_to_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10971 else if (unlikely(((bits & 0xfffe8) == 0x3de80)))
10972 bi_disasm_add_vn_asst2_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10973 else if (unlikely(((bits & 0xfffe0) == 0x67ac0)))
10974 bi_disasm_add_fexp_table_u4(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10975 else if (unlikely(((bits & 0xfffe0) == 0x67ae0)))
10976 bi_disasm_add_flog_table_f32_4(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10977 else if (unlikely(((bits & 0xfffe0) == 0x3de20)))
10978 bi_disasm_add_frexpe_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10979 else if (unlikely(((bits & 0xfffe0) == 0x3de00)))
10980 bi_disasm_add_frexpe_v2f16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10981 else if (unlikely(((bits & 0xfffe0) == 0x3d9e0)))
10982 bi_disasm_add_ilogb_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10983 else if (unlikely(((bits & 0xfffe0) == 0x3d9c0)))
10984 bi_disasm_add_ilogb_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10985 else if (unlikely(((bits & 0xfffe0) == 0x3d9a0)))
10986 bi_disasm_add_logb_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10987 else if (unlikely(((bits & 0xfffe0) == 0x3d980)))
10988 bi_disasm_add_logb_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10989 else if (unlikely(((bits & 0xfffd8) == 0x3cc40)))
10990 bi_disasm_add_f16_to_s32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10991 else if (unlikely(((bits & 0xfffd8) == 0x3cc48)))
10992 bi_disasm_add_f16_to_u32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10993 else if (unlikely(((bits & 0xfffc8) == 0x3c980)))
10994 bi_disasm_add_f32_to_s32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10995 else if (unlikely(((bits & 0xfffc8) == 0x3c988)))
10996 bi_disasm_add_f32_to_u32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10997 else if (unlikely(((bits & 0xfffc8) == 0x3de88)))
10998 bi_disasm_add_iabs_v2s16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
10999 else if (unlikely(((bits & 0xfffc8) == 0x3d900)))
11000 bi_disasm_add_quiet_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11001 else if (unlikely(((bits & 0xfffc8) == 0x3cbc0)))
11002 bi_disasm_add_s32_to_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11003 else if (unlikely(((bits & 0xfffc8) == 0x3cb80)))
11004 bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11005 else if (unlikely(((bits & 0xfffc8) == 0x3cb40)))
11006 bi_disasm_add_s8_to_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11007 else if (unlikely(((bits & 0xfffc8) == 0x3d948)))
11008 bi_disasm_add_swz_v2i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11009 else if (unlikely(((bits & 0xfffc8) == 0x3cbc8)))
11010 bi_disasm_add_u32_to_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11011 else if (unlikely(((bits & 0xfffc8) == 0x3cb88)))
11012 bi_disasm_add_u8_to_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11013 else if (unlikely(((bits & 0xfffc8) == 0x3cb48)))
11014 bi_disasm_add_u8_to_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11015 else if (unlikely(((bits & 0xfffc8) == 0x3ca80)))
11016 bi_disasm_add_v2f16_to_v2s16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11017 else if (unlikely(((bits & 0xfffc8) == 0x3ca88)))
11018 bi_disasm_add_v2f16_to_v2u16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11019 else if (unlikely(((bits & 0xfffc8) == 0x3cb00)))
11020 bi_disasm_add_v2s16_to_v2f16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11021 else if (unlikely(((bits & 0xfffc8) == 0x3cb08)))
11022 bi_disasm_add_v2u16_to_v2f16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11023 else if (unlikely(((bits & 0xfffc0) == 0x3f0c0)))
11024 bi_disasm_add_clper_v6_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11025 else if (unlikely(((bits & 0xfffc0) == 0x75200)))
11026 bi_disasm_add_fadd_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11027 else if (unlikely(((bits & 0xfffc0) == 0x67a00)))
11028 bi_disasm_add_fatan_assist_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11029 else if (unlikely(((bits & 0xfffc0) == 0x67a40)))
11030 bi_disasm_add_fatan_table_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11031 else if (unlikely(((bits & 0xfffc0) == 0x66ac0)))
11032 bi_disasm_add_fexp_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11033 else if (unlikely(((bits & 0xfffc0) == 0x67300)))
11034 bi_disasm_add_flog_table_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11035 else if (unlikely(((bits & 0xfffc0) == 0x67b00)))
11036 bi_disasm_add_flog_table_f32_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11037 else if (unlikely(((bits & 0xfffc0) == 0x75080)))
11038 bi_disasm_add_fpow_sc_apply(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11039 else if (unlikely(((bits & 0xfffc0) == 0x67200)))
11040 bi_disasm_add_frcbrt_approx_a_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11041 else if (unlikely(((bits & 0xfffc0) == 0x67000)))
11042 bi_disasm_add_frcp_approx_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11043 else if (unlikely(((bits & 0xfffc0) == 0x67100)))
11044 bi_disasm_add_frsq_approx_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11045 else if (unlikely(((bits & 0xfffc0) == 0x3f8c0)))
11046 bi_disasm_add_shaddxh_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11047 else if (unlikely(((bits & 0xfffc0) == 0x3df40)))
11048 bi_disasm_add_swz_v4i8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11049 else if (unlikely(((bits & 0xfffc0) == 0x3d700)))
11050 bi_disasm_add_wmask(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11051 else if (unlikely(((bits & 0xfffa0) == 0x66000)
11052 && !(0x2 & (1 << _BITS(bits, 6, 1)))
11054 bi_disasm_add_frcp_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11055 else if (unlikely(((bits & 0xfffa0) == 0x66100)
11056 && !(0x2 & (1 << _BITS(bits, 6, 1)))
11058 bi_disasm_add_frsq_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11059 else if (unlikely(((bits & 0xfff48) == 0x3c500)))
11060 bi_disasm_add_f16_to_s32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11061 else if (unlikely(((bits & 0xfff48) == 0x3c508)))
11062 bi_disasm_add_f16_to_u32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11063 else if (unlikely(((bits & 0xfff40) == 0x67340)))
11064 bi_disasm_add_flog_table_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11065 else if (unlikely(((bits & 0xfff40) == 0x67b40)))
11066 bi_disasm_add_flog_table_f32_3(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11067 else if (unlikely(((bits & 0xfff40) == 0x67240)))
11068 bi_disasm_add_frcbrt_approx_a_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11069 else if (unlikely(((bits & 0xfff40) == 0x67040)))
11070 bi_disasm_add_frcp_approx_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11071 else if (unlikely(((bits & 0xfff40) == 0x67140)))
11072 bi_disasm_add_frsq_approx_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11073 else if (unlikely(((bits & 0xfff40) == 0x3d500)))
11074 bi_disasm_add_seg_add(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11075 else if (unlikely(((bits & 0xfff40) == 0x3d540)))
11076 bi_disasm_add_seg_sub(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11077 else if (unlikely(((bits & 0xfff20) == 0x3db20)))
11078 bi_disasm_add_frexpm_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11079 else if (unlikely(((bits & 0xfff20) == 0x3da20)))
11080 bi_disasm_add_frexpm_f32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11081 else if (unlikely(((bits & 0xfff20) == 0x3db00)))
11082 bi_disasm_add_frexpm_v2f16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11083 else if (unlikely(((bits & 0xfff20) == 0x3da00)))
11084 bi_disasm_add_frexpm_v2f16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11085 else if (unlikely(((bits & 0xfff08) == 0x3c200)))
11086 bi_disasm_add_v2f16_to_v2s16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11087 else if (unlikely(((bits & 0xfff08) == 0x3c208)))
11088 bi_disasm_add_v2f16_to_v2u16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11089 else if (unlikely(((bits & 0xfff08) == 0x3c600)))
11090 bi_disasm_add_v2s16_to_v2f16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11091 else if (unlikely(((bits & 0xfff08) == 0x3c800)))
11092 bi_disasm_add_v2s8_to_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11093 else if (unlikely(((bits & 0xfff08) == 0x3c700)))
11094 bi_disasm_add_v2s8_to_v2s16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11095 else if (unlikely(((bits & 0xfff08) == 0x3c608)))
11096 bi_disasm_add_v2u16_to_v2f16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11097 else if (unlikely(((bits & 0xfff08) == 0x3c808)))
11098 bi_disasm_add_v2u8_to_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11099 else if (unlikely(((bits & 0xfff08) == 0x3c708)))
11100 bi_disasm_add_v2u8_to_v2u16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11101 else if (unlikely(((bits & 0xfff00) == 0xc8f00)))
11102 bi_disasm_add_atest(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11103 else if (unlikely(((bits & 0xfff00) == 0x67800)))
11104 bi_disasm_add_fatan_assist_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11105 else if (unlikely(((bits & 0xfff00) == 0x67900)))
11106 bi_disasm_add_fatan_table_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11107 else if (unlikely(((bits & 0xfff00) == 0x75300)))
11108 bi_disasm_add_mkvec_v2i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11109 else if (unlikely(((bits & 0xffec0) == 0x67080)))
11110 bi_disasm_add_frcp_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11111 else if (unlikely(((bits & 0xffec0) == 0x67280)))
11112 bi_disasm_add_frsq_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11113 else if (unlikely(((bits & 0xffec0) == 0xbc600)))
11114 bi_disasm_add_iadd_s32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11115 else if (unlikely(((bits & 0xffec0) == 0xbc400)))
11116 bi_disasm_add_iadd_v4s8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11117 else if (unlikely(((bits & 0xffec0) == 0xbd600)))
11118 bi_disasm_add_isub_s32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11119 else if (unlikely(((bits & 0xffec0) == 0xbd400)))
11120 bi_disasm_add_isub_v4s8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11121 else if (unlikely(((bits & 0xffea0) == 0x3dc20)))
11122 bi_disasm_add_frexpe_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11123 else if (unlikely(((bits & 0xffea0) == 0x3dc00)))
11124 bi_disasm_add_frexpe_v2f16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11125 else if (unlikely(((bits & 0xffe40) == 0x67600)))
11126 bi_disasm_add_fpow_sc_det_f16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11127 else if (unlikely(((bits & 0xffe40) == 0x67640)))
11128 bi_disasm_add_fpow_sc_det_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11129 else if (unlikely(((bits & 0xffe40) == 0xbc600)))
11130 bi_disasm_add_iadd_u32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11131 else if (unlikely(((bits & 0xffe40) == 0xbc400)))
11132 bi_disasm_add_iadd_v4u8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11133 else if (unlikely(((bits & 0xffe40) == 0xbd600)))
11134 bi_disasm_add_isub_u32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11135 else if (unlikely(((bits & 0xffe40) == 0xbd400)))
11136 bi_disasm_add_isub_v4u8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11137 else if (unlikely(((bits & 0xffe3f) == 0x6f83c)))
11138 bi_disasm_add_branch_diverg(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11139 else if (unlikely(((bits & 0xffe3f) == 0x6fa34)))
11140 bi_disasm_add_branch_no_diverg(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11141 else if (unlikely(((bits & 0xffe3f) == 0x6fe34)))
11142 bi_disasm_add_jump(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11143 else if (unlikely(((bits & 0xffe38) == 0x6fa38)))
11144 bi_disasm_add_branch_lowbits_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11145 else if (unlikely(((bits & 0xffe30) == 0x6f800)))
11146 bi_disasm_add_branchz_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11147 else if (unlikely(((bits & 0xffe00) == 0xd7400)))
11148 bi_disasm_add_atom_cx(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11149 else if (unlikely(((bits & 0xffe00) == 0xca800)))
11150 bi_disasm_add_blend(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11151 else if (unlikely(((bits & 0xffe00) == 0x6f800)
11152 && !(0x9 & (1 << _BITS(bits, 4, 2)))
11154 bi_disasm_add_branchz_i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11155 else if (unlikely(((bits & 0xffe00) == 0x67400)))
11156 bi_disasm_add_fpow_sc_det_f16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11157 else if (unlikely(((bits & 0xffe00) == 0x7be00)))
11158 bi_disasm_add_icmpf_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11159 else if (unlikely(((bits & 0xffe00) == 0x7ba00)))
11160 bi_disasm_add_icmpm_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11161 else if (unlikely(((bits & 0xffe00) == 0x74c00)))
11162 bi_disasm_add_ldexp_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11163 else if (unlikely(((bits & 0xffe00) == 0x74e00)))
11164 bi_disasm_add_ldexp_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11165 else if (unlikely(((bits & 0xffe00) == 0xc8400)))
11166 bi_disasm_add_lea_attr_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11167 else if (unlikely(((bits & 0xffe00) == 0xc8600)))
11168 bi_disasm_add_lea_attr_tex_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11169 else if (unlikely(((bits & 0xffe00) == 0x61000)))
11170 bi_disasm_add_load_i128(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11171 else if (unlikely(((bits & 0xffe00) == 0x65000)))
11172 bi_disasm_add_load_i24(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11173 else if (unlikely(((bits & 0xffe00) == 0x60c00)))
11174 bi_disasm_add_load_i32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11175 else if (unlikely(((bits & 0xffe00) == 0x65200)))
11176 bi_disasm_add_load_i48(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11177 else if (unlikely(((bits & 0xffe00) == 0x60e00)))
11178 bi_disasm_add_load_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11179 else if (unlikely(((bits & 0xffe00) == 0x65400)))
11180 bi_disasm_add_load_i96(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11181 else if (unlikely(((bits & 0xffe00) == 0xefe00)))
11182 bi_disasm_add_shift_double_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11183 else if (unlikely(((bits & 0xffe00) == 0x61200)))
11184 bi_disasm_add_store_i128(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11185 else if (unlikely(((bits & 0xffe00) == 0x62800)))
11186 bi_disasm_add_store_i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11187 else if (unlikely(((bits & 0xffe00) == 0x65800)))
11188 bi_disasm_add_store_i24(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11189 else if (unlikely(((bits & 0xffe00) == 0x62c00)))
11190 bi_disasm_add_store_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11191 else if (unlikely(((bits & 0xffe00) == 0x65a00)))
11192 bi_disasm_add_store_i48(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11193 else if (unlikely(((bits & 0xffe00) == 0x62e00)))
11194 bi_disasm_add_store_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11195 else if (unlikely(((bits & 0xffe00) == 0x62000)))
11196 bi_disasm_add_store_i8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11197 else if (unlikely(((bits & 0xffe00) == 0x65c00)))
11198 bi_disasm_add_store_i96(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11199 else if (unlikely(((bits & 0xffdc0) == 0x648c0)))
11200 bi_disasm_add_acmpstore_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11201 else if (unlikely(((bits & 0xffdc0) == 0x64900)))
11202 bi_disasm_add_acmpstore_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11203 else if (unlikely(((bits & 0xffdc0) == 0x644c0)))
11204 bi_disasm_add_acmpxchg_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11205 else if (unlikely(((bits & 0xffdc0) == 0x64500)))
11206 bi_disasm_add_acmpxchg_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11207 else if (unlikely(((bits & 0xffdc0) == 0x640c0)))
11208 bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11209 else if (unlikely(((bits & 0xffdc0) == 0x64100)))
11210 bi_disasm_add_axchg_i64(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11211 else if (unlikely(((bits & 0xffd00) == 0xca100)
11212 && !(0xc & (1 << _BITS(bits, 5, 2)))
11214 bi_disasm_add_var_tex_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11215 else if (unlikely(((bits & 0xffd00) == 0xca000)
11216 && !(0xc & (1 << _BITS(bits, 5, 2)))
11218 bi_disasm_add_var_tex_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11219 else if (unlikely(((bits & 0xffcc0) == 0xbec00)))
11220 bi_disasm_add_iadd_s32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11221 else if (unlikely(((bits & 0xffcc0) == 0xbec40)))
11222 bi_disasm_add_iadd_v2s16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11223 else if (unlikely(((bits & 0xffcc0) == 0xbe800)))
11224 bi_disasm_add_iadd_v2s16_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11225 else if (unlikely(((bits & 0xffcc0) == 0xbe840)))
11226 bi_disasm_add_iadd_v4s8_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11227 else if (unlikely(((bits & 0xffcc0) == 0xbfc00)))
11228 bi_disasm_add_isub_s32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11229 else if (unlikely(((bits & 0xffcc0) == 0xbfc40)))
11230 bi_disasm_add_isub_v2s16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11231 else if (unlikely(((bits & 0xffcc0) == 0xbf800)))
11232 bi_disasm_add_isub_v2s16_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11233 else if (unlikely(((bits & 0xffcc0) == 0xbf840)))
11234 bi_disasm_add_isub_v4s8_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11235 else if (unlikely(((bits & 0xffcc0) == 0xcf8c0)))
11236 bi_disasm_add_ld_var_flat_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11237 else if (unlikely(((bits & 0xffc40) == 0xbec00)))
11238 bi_disasm_add_iadd_u32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11239 else if (unlikely(((bits & 0xffc40) == 0xbec40)))
11240 bi_disasm_add_iadd_v2u16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11241 else if (unlikely(((bits & 0xffc40) == 0xbe800)))
11242 bi_disasm_add_iadd_v2u16_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11243 else if (unlikely(((bits & 0xffc40) == 0xbe840)))
11244 bi_disasm_add_iadd_v4u8_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11245 else if (unlikely(((bits & 0xffc40) == 0xbfc00)))
11246 bi_disasm_add_isub_u32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11247 else if (unlikely(((bits & 0xffc40) == 0xbfc40)))
11248 bi_disasm_add_isub_v2u16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11249 else if (unlikely(((bits & 0xffc40) == 0xbf800)))
11250 bi_disasm_add_isub_v2u16_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11251 else if (unlikely(((bits & 0xffc40) == 0xbf840)))
11252 bi_disasm_add_isub_v4u8_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11253 else if (unlikely(((bits & 0xffc00) == 0x3e000)))
11254 bi_disasm_add_cube_ssel(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11255 else if (unlikely(((bits & 0xffc00) == 0x3e400)))
11256 bi_disasm_add_cube_tsel(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11257 else if (unlikely(((bits & 0xffc00) == 0xcf800)))
11258 bi_disasm_add_ld_var_flat_imm_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11259 else if (unlikely(((bits & 0xffc00) == 0xc8000)))
11260 bi_disasm_add_lea_attr_imm_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11261 else if (unlikely(((bits & 0xffc00) == 0x60800)))
11262 bi_disasm_add_load_i16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11263 else if (unlikely(((bits & 0xffc00) == 0x63000)))
11264 bi_disasm_add_load_i16_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11265 else if (unlikely(((bits & 0xffc00) == 0x61800)))
11266 bi_disasm_add_load_i16_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11267 else if (unlikely(((bits & 0xffc00) == 0x61c00)))
11268 bi_disasm_add_load_i32_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11269 else if (unlikely(((bits & 0xffc00) == 0x63400)))
11270 bi_disasm_add_load_i8_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11271 else if (unlikely(((bits & 0xffc00) == 0x61400)))
11272 bi_disasm_add_load_i8_3(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11273 else if (unlikely(((bits & 0xffc00) == 0x74800)))
11274 bi_disasm_add_mux_v4i8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11275 else if (unlikely(((bits & 0xffc00) == 0xd7000)))
11276 bi_disasm_add_texc(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11277 else if (unlikely(((bits & 0xffb80) == 0x7b300)))
11278 bi_disasm_add_icmp_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11279 else if (unlikely(((bits & 0xffb80) == 0x7b200)))
11280 bi_disasm_add_icmp_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11281 else if (unlikely(((bits & 0xffb80) == 0x7b280)))
11282 bi_disasm_add_icmp_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11283 else if (unlikely(((bits & 0xffb80) == 0x7b100)))
11284 bi_disasm_add_icmp_v4i8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11285 else if (unlikely(((bits & 0xffb80) == 0x7b000)))
11286 bi_disasm_add_icmp_v4s8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11287 else if (unlikely(((bits & 0xffb80) == 0x7b080)))
11288 bi_disasm_add_icmp_v4u8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11289 else if (unlikely(((bits & 0xffb80) == 0x7b900)))
11290 bi_disasm_add_icmpi_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11291 else if (unlikely(((bits & 0xffb80) == 0x7b800)))
11292 bi_disasm_add_icmpi_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11293 else if (unlikely(((bits & 0xffb80) == 0x7b880)))
11294 bi_disasm_add_icmpi_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11295 else if (unlikely(((bits & 0xffa38) == 0x6f238)))
11296 bi_disasm_add_branchc_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11297 else if (unlikely(((bits & 0xff8c0) == 0xbe000)))
11298 bi_disasm_add_iadd_s32_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11299 else if (unlikely(((bits & 0xff8c0) == 0xbc800)))
11300 bi_disasm_add_iadd_v2s16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11301 else if (unlikely(((bits & 0xff8c0) == 0xbe040)))
11302 bi_disasm_add_iadd_v4s8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11303 else if (unlikely(((bits & 0xff8c0) == 0xbf000)))
11304 bi_disasm_add_isub_s32_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11305 else if (unlikely(((bits & 0xff8c0) == 0xbd800)))
11306 bi_disasm_add_isub_v2s16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11307 else if (unlikely(((bits & 0xff8c0) == 0xbf040)))
11308 bi_disasm_add_isub_v4s8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11309 else if (unlikely(((bits & 0xff860) == 0x3e820)))
11310 bi_disasm_add_fround_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11311 else if (unlikely(((bits & 0xff860) == 0x3e800)))
11312 bi_disasm_add_fround_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11313 else if (unlikely(((bits & 0xff840) == 0xbe000)))
11314 bi_disasm_add_iadd_u32_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11315 else if (unlikely(((bits & 0xff840) == 0xbc800)))
11316 bi_disasm_add_iadd_v2u16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11317 else if (unlikely(((bits & 0xff840) == 0xbe040)))
11318 bi_disasm_add_iadd_v4u8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11319 else if (unlikely(((bits & 0xff840) == 0xbf000)))
11320 bi_disasm_add_isub_u32_2(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11321 else if (unlikely(((bits & 0xff840) == 0xbd800)))
11322 bi_disasm_add_isub_v2u16_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11323 else if (unlikely(((bits & 0xff840) == 0xbf040)))
11324 bi_disasm_add_isub_v4u8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11325 else if (unlikely(((bits & 0xff830) == 0x6f030)))
11326 bi_disasm_add_branchc_i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11327 else if (unlikely(((bits & 0xff800) == 0xc8800)
11328 && !(0xe0 & (1 << _BITS(bits, 8, 3)))
11330 bi_disasm_add_discard_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11331 else if (unlikely(((bits & 0xff800) == 0xc9000)))
11332 bi_disasm_add_ld_cvt(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11333 else if (unlikely(((bits & 0xff800) == 0xcb000)))
11334 bi_disasm_add_ld_tile(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11335 else if (unlikely(((bits & 0xff800) == 0x60000)))
11336 bi_disasm_add_load_i8_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11337 else if (unlikely(((bits & 0xff800) == 0x63800)))
11338 bi_disasm_add_load_i8_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11339 else if (unlikely(((bits & 0xff800) == 0x74000)))
11340 bi_disasm_add_mux_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11341 else if (unlikely(((bits & 0xff800) == 0xc9800)))
11342 bi_disasm_add_st_cvt(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11343 else if (unlikely(((bits & 0xff800) == 0xcb800)))
11344 bi_disasm_add_st_tile(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11345 else if (unlikely(((bits & 0xff800) == 0xd7800)
11346 && !(0x1 & (1 << _BITS(bits, 9, 2)))
11348 bi_disasm_add_zs_emit(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11349 else if (unlikely(((bits & 0xff600) == 0xd6600)))
11350 bi_disasm_add_lea_tex(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11351 else if (unlikely(((bits & 0xff038) == 0x6f008)
11352 && !(0xf0 & (1 << _BITS(bits, 9, 3)))
11354 bi_disasm_add_branchz_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11355 else if (unlikely(((bits & 0xff038) == 0x6f000)
11356 && !(0xf0 & (1 << _BITS(bits, 9, 3)))
11358 bi_disasm_add_branchz_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11359 else if (unlikely(((bits & 0xff030) == 0x6f000)
11360 && !(0x1f & (1 << _BITS(bits, 9, 3)))
11362 bi_disasm_add_branchz_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11363 else if (unlikely(((bits & 0xff008) == 0x6f008)
11364 && !(0x9 & (1 << _BITS(bits, 4, 2)))
11365 && !(0xf0 & (1 << _BITS(bits, 9, 3)))
11367 bi_disasm_add_branchz_s16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11368 else if (unlikely(((bits & 0xff008) == 0x6f000)
11369 && !(0x9 & (1 << _BITS(bits, 4, 2)))
11370 && !(0xf0 & (1 << _BITS(bits, 9, 3)))
11372 bi_disasm_add_branchz_u16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11373 else if (unlikely(((bits & 0xff000) == 0x6f000)
11374 && !(0x9 & (1 << _BITS(bits, 4, 2)))
11375 && !(0x1f & (1 << _BITS(bits, 9, 3)))
11377 bi_disasm_add_branchz_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11378 else if (unlikely(((bits & 0xff000) == 0x7a000)))
11379 bi_disasm_add_icmp_v2i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11380 else if (unlikely(((bits & 0xff000) == 0xd6000)))
11381 bi_disasm_add_lea_tex_imm(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11382 else if (unlikely(((bits & 0xfefc0) == 0xbc640)))
11383 bi_disasm_add_hadd_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11384 else if (unlikely(((bits & 0xfefc0) == 0xbc6c0)))
11385 bi_disasm_add_hadd_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11386 else if (unlikely(((bits & 0xfefc0) == 0xbc440)))
11387 bi_disasm_add_hadd_v4s8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11388 else if (unlikely(((bits & 0xfefc0) == 0xbc4c0)))
11389 bi_disasm_add_hadd_v4u8(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11390 else if (unlikely(((bits & 0xfe9c0) == 0xbc840)))
11391 bi_disasm_add_hadd_v2s16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11392 else if (unlikely(((bits & 0xfe9c0) == 0xbc8c0)))
11393 bi_disasm_add_hadd_v2u16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11394 else if (unlikely(((bits & 0xfe800) == 0x78000)))
11395 bi_disasm_add_icmp_v2s16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11396 else if (unlikely(((bits & 0xfe800) == 0x78800)))
11397 bi_disasm_add_icmp_v2u16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11398 else if (unlikely(((bits & 0xfe600) == 0xc4400)))
11399 bi_disasm_add_ld_attr_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11400 else if (unlikely(((bits & 0xfe600) == 0xc4600)))
11401 bi_disasm_add_ld_attr_tex_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11402 else if (unlikely(((bits & 0xfe400) == 0xc4000)))
11403 bi_disasm_add_ld_attr_imm_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11404 else if (unlikely(((bits & 0xfe000) == 0x76000)))
11405 bi_disasm_add_v2f32_to_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11406 else if (unlikely(((bits & 0xfc600) == 0xc0400)))
11407 bi_disasm_add_lea_attr_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11408 else if (unlikely(((bits & 0xfc600) == 0xc0600)))
11409 bi_disasm_add_lea_attr_tex_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11410 else if (unlikely(((bits & 0xfc400) == 0xc0000)))
11411 bi_disasm_add_lea_attr_imm_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11412 else if (unlikely(((bits & 0xfc3e0) == 0xcc0a0)
11413 && !(0x2 & (1 << _BITS(bits, 3, 2)))
11414 && !(0xc0e0 & (1 << _BITS(bits, 10, 4)))
11416 bi_disasm_add_ld_var_special_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11417 else if (unlikely(((bits & 0xfc0c0) == 0xcc0c0)
11418 && !(0xc0e0 & (1 << _BITS(bits, 10, 4)))
11420 bi_disasm_add_ld_var_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11421 else if (unlikely(((bits & 0xfc000) == 0x7c000)))
11422 bi_disasm_add_clper_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11423 else if (unlikely(((bits & 0xfc000) == 0xcc000)
11424 && !(0xc0e0 & (1 << _BITS(bits, 10, 4)))
11426 bi_disasm_add_ld_var_imm_1(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11427 else if (unlikely(((bits & 0xfc000) == 0x70000)))
11428 bi_disasm_add_mux_v2i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11429 bits & 0xfc000) == 0xd8000)))
11430 bi_disasm_add_texs_2d_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11431 else if (unlikely(((bits & 0xfc000) == 0x58000)))
11432 bi_disasm_add_texs_2d_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11433 else if (unlikely(((bits & 0xfc000) == 0xdc000)))
11434 bi_disasm_add_texs_cube_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11435 else if (unlikely(((bits & 0xfc000) == 0x5c000)))
11436 bi_disasm_add_texs_cube_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11437 else if (unlikely(((bits & 0xf8000) == 0x68000)
11438 && !(0xe1 & (1 << _BITS(bits, 12, 3)))
11439 && !(0xf & (1 << _BITS(bits, 9, 3)))
11441 bi_disasm_add_branch_f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11442 else if (unlikely(((bits & 0xf8000) == 0x68000)
11443 && !(0x9e & (1 << _BITS(bits, 12, 3)))
11444 && !(0x1 & (1 << _BITS(bits, 9, 3)))
11446 bi_disasm_add_branch_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11447 else if (unlikely(((bits & 0xf8000) == 0x68000)
11448 && !(0xe1 & (1 << _BITS(bits, 12, 3)))
11449 && !(0xed & (1 << _BITS(bits, 9, 3)))
11451 bi_disasm_add_branch_i16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11452 else if (unlikely(((bits & 0xf8000) == 0x68000)
11453 && !(0xfe & (1 << _BITS(bits, 12, 3)))
11454 && !(0xed & (1 << _BITS(bits, 9, 3)))
11456 bi_disasm_add_branch_i32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11457 else if (unlikely(((bits & 0xf8000) == 0x68000)
11458 && !(0xe9 & (1 << _BITS(bits, 12, 3)))
11459 && !(0xe0 & (1 << _BITS(bits, 9, 3)))
11461 bi_disasm_add_branch_s16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11462 else if (unlikely(((bits & 0xf8000) == 0x68000)
11463 && !(0xfe & (1 << _BITS(bits, 12, 3)))
11464 && !(0xe0 & (1 << _BITS(bits, 9, 3)))
11466 bi_disasm_add_branch_s32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11467 else if (unlikely(((bits & 0xf8000) == 0x68000)
11468 && !(0xf1 & (1 << _BITS(bits, 12, 3)))
11469 && !(0xf0 & (1 << _BITS(bits, 9, 3)))
11471 bi_disasm_add_branch_u16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11472 else if (unlikely(((bits & 0xf8000) == 0x68000)
11473 && !(0xfe & (1 << _BITS(bits, 12, 3)))
11474 && !(0xf0 & (1 << _BITS(bits, 9, 3)))
11476 bi_disasm_add_branch_u32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11477 else if (unlikely(((bits & 0xf8000) == 0x80000)))
11478 bi_disasm_add_fmax_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11479 else if (unlikely(((bits & 0xf8000) == 0x90000)))
11480 bi_disasm_add_fmin_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11481 else if (unlikely(((bits & 0xf0600) == 0x0)))
11482 bi_disasm_add_fmax_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11483 else if (unlikely(((bits & 0xf0600) == 0x10000)))
11484 bi_disasm_add_fmin_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11485 else if (unlikely(((bits & 0xf0600) == 0x40400)))
11486 bi_disasm_add_ld_attr_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11487 else if (unlikely(((bits & 0xf0600) == 0x40600)))
11488 bi_disasm_add_ld_attr_tex_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11489 else if (unlikely(((bits & 0xf0400) == 0x40000)))
11490 bi_disasm_add_ld_attr_imm_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11491 else if (unlikely(((bits & 0xf0000) == 0x20000)))
11492 bi_disasm_add_fadd_f32_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11493 else if (unlikely(((bits & 0xf0000) == 0xa0000)))
11494 bi_disasm_add_fadd_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11495 else if (unlikely(((bits & 0xf0000) == 0x30000)))
11496 bi_disasm_add_fcmp_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11497 else if (unlikely(((bits & 0xf0000) == 0xb0000)))
11498 bi_disasm_add_fcmp_v2f16(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11499 else if (unlikely(((bits & 0xe8000) == 0x88000)
11500 && !(0x2 & (1 << _BITS(bits, 9, 3)))
11502 bi_disasm_add_fadd_rscale_f32(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11503 else if (unlikely(((bits & 0x7f8c0) == 0x538c0)))
11504 bi_disasm_add_ld_var_flat_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11505 else if (unlikely(((bits & 0x7f800) == 0x53800)))
11506 bi_disasm_add_ld_var_flat_imm_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11507 else if (unlikely(((bits & 0x7c3e0) == 0x500a0)
11508 && !(0x2 & (1 << _BITS(bits, 3, 2)))
11509 && !(0xc0e0 & (1 << _BITS(bits, 10, 4)))
11511 bi_disasm_add_ld_var_special_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11512 else if (unlikely(((bits & 0x7c0c0) == 0x500c0)
11513 && !(0xc0e0 & (1 << _BITS(bits, 10, 4)))
11515 bi_disasm_add_ld_var_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11516 else if (unlikely(((bits & 0x7c000) == 0x50000)
11517 && !(0xc0e0 & (1 << _BITS(bits, 10, 4)))
11519 bi_disasm_add_ld_var_imm_0(fp, bits, srcs, next_regs, staging_register, branch_offset, consts, last);
11521 fprintf(fp, "INSTR_INVALID_ENC add %X", bits);