Lines Matching refs:fp
44 #define DEFINE_CASE(define, str) case define: { fprintf(fp, str); break; }
98 print_alu_opcode(FILE *fp, midgard_alu_op op)
101 fprintf(fp, "%s", alu_opcode_props[op].name);
103 fprintf(fp, "alu_op_%02X", op);
110 print_ld_st_opcode(FILE *fp, midgard_load_store_op op)
113 fprintf(fp, "%s", load_store_opcode_props[op].name);
115 fprintf(fp, "ldst_op_%02X", op);
173 print_alu_reg(disassemble_context *ctx, FILE *fp, unsigned reg, bool is_write)
197 fprintf(fp, "TMP%u", reg - REGISTER_UNUSED);
199 fprintf(fp, "%s%u", is_write ? "AT" : "TA", reg - REGISTER_TEXTURE_BASE);
201 fprintf(fp, "AL%u", reg - REGISTER_LDST_BASE);
203 fprintf(fp, "U%u", uniform_reg);
205 fprintf(fp, "PC_SP");
207 fprintf(fp, "R%u", reg);
211 print_ldst_write_reg(FILE *fp, unsigned reg)
216 fprintf(fp, "AL%u", reg - REGISTER_LDST_BASE);
220 fprintf(fp, "AT%u", reg - REGISTER_TEXTURE_BASE);
223 fprintf(fp, "PC_SP");
226 fprintf(fp, "R%d", reg);
232 print_ldst_read_reg(FILE *fp, unsigned reg)
237 fprintf(fp, "AL%u", reg);
240 fprintf(fp, "PC_SP");
243 fprintf(fp, "LOCAL_STORAGE_PTR");
246 fprintf(fp, "LOCAL_THREAD_ID");
249 fprintf(fp, "GROUP_ID");
252 fprintf(fp, "GLOBAL_THREAD_ID");
255 fprintf(fp, "0");
263 print_tex_reg(FILE *fp, unsigned reg, bool is_write)
271 fprintf(fp, "R%d", select);
275 fprintf(fp, "AL%d", select);
279 fprintf(fp, "%s%d", str, select);
322 print_outmod(FILE *fp, unsigned outmod, bool is_int)
324 fprintf(fp, "%s", is_int ? outmod_names_int[outmod] :
329 print_alu_outmod(FILE *fp, unsigned outmod, bool is_int, bool half)
337 fprintf(fp, ".shrink");
339 print_outmod(fp, outmod, is_int);
361 print_quad_word(FILE *fp, uint32_t *words, unsigned tabs)
366 fprintf(fp, "0x%08X%s ", words[i], i == 3 ? "" : ",");
368 fprintf(fp, "\n");
403 print_vec_selectors_64(FILE *fp, unsigned swizzle,
418 fprintf(fp, "%c", components[a]);
428 fprintf(fp, "%c", a >> 1 ? 'Y' : 'X');
430 fprintf(fp, "[%c%c]", components[a], components[b]);
435 print_vec_selectors(FILE *fp, unsigned swizzle,
457 fprintf(fp, "%c", components[c]);
459 fprintf(fp, "%c", components[c+1]);
464 print_vec_swizzle(FILE *fp, unsigned swizzle,
520 fprintf(fp, ".");
524 print_vec_selectors_64(fp, swizzle, mode, expand, first_half, mask);
529 print_vec_selectors(fp, swizzle, mode, first_half, mask, &mask_offs);
531 print_vec_selectors(fp, swizzle, mode, second_half, mask, &mask_offs);
535 print_scalar_constant(FILE *fp, unsigned src_binary,
542 fprintf(fp, "#");
543 mir_print_constant_component(fp, consts, src->component,
550 print_vector_constants(FILE *fp, unsigned src_binary,
566 fprintf(fp, "<");
631 fprintf(fp, ", ");
633 mir_print_constant_component(fp, consts, c, alu->reg_mode,
638 fprintf(fp, ">");
642 print_srcmod(FILE *fp, bool is_int, bool expands, unsigned mod, bool scalar)
648 fprintf(fp, "%s", srcmod_names_int[mod]);
651 fprintf(fp, ".abs");
653 fprintf(fp, ".neg");
655 fprintf(fp, ".widen");
660 print_vector_src(disassemble_context *ctx, FILE *fp, unsigned src_binary,
670 print_alu_reg(ctx, fp, reg, false);
672 print_vec_swizzle(fp, src->swizzle, src->expand_mode, mode, src_mask);
674 fprintf(fp, "%s", argmod_names[arg_mod]);
676 print_srcmod(fp, is_int, INPUT_EXPANDS(src->expand_mode), src->mod, false);
690 print_immediate(FILE *fp, uint16_t imm, bool is_instruction_int)
693 fprintf(fp, "#%u", imm);
695 fprintf(fp, "#%g", _mesa_half_to_float(imm));
711 print_dest(disassemble_context *ctx, FILE *fp, unsigned reg)
714 print_alu_reg(ctx, fp, reg, true);
725 print_alu_mask(FILE *fp, uint8_t mask, unsigned bits, midgard_shrink_mode shrink_mode)
732 fprintf(fp, ".");
767 fprintf(fp, "%c", c);
769 fprintf(fp, "%c", alphabet[comp_idx+1]);
774 fprintf(fp, " /* %X */", mask);
779 print_ldst_mask(FILE *fp, unsigned mask, unsigned swizzle) {
780 fprintf(fp, ".");
788 fprintf(fp, "%c", write ? components[c] : '~');
793 print_tex_mask(FILE *fp, unsigned mask, bool upper)
797 fprintf(fp, "'");
802 fprintf(fp, ".");
807 fprintf(fp, "%c", components[i + (upper ? 4 : 0)]);
812 print_vector_field(disassemble_context *ctx, FILE *fp, const char *name,
825 fprintf(fp, "%s.", name);
827 bool is_instruction_int = print_alu_opcode(fp, alu_field->op);
830 fprintf(fp, ".%c%d", is_int_out ? 'i' : 'f', bits_for_mode(mode));
832 fprintf(fp, " ");
838 print_dest(ctx, fp, reg_info->out_reg);
845 fprintf(fp, "/* do%u */ ", shrink_mode);
857 fprintf(fp, "/* err too many components */");
859 print_alu_mask(fp, mask, bits_for_mode(mode), shrink_mode);
863 print_alu_outmod(fp, alu_field->outmod, is_int_out, shrink_mode != midgard_shrink_mode_none);
870 fprintf(fp, ", ");
873 print_vector_constants(fp, alu_field->src1, consts, alu_field);
876 print_vector_src(ctx, fp, alu_field->src1, mode, reg_info->src1_reg,
880 fprintf(fp, ", ");
884 print_immediate(fp, imm, is_instruction_int);
886 print_vector_constants(fp, alu_field->src2, consts, alu_field);
889 print_vector_src(ctx, fp, alu_field->src2, mode, reg_info->src2_reg,
894 fprintf(fp, "\n");
898 print_scalar_src(disassemble_context *ctx, FILE *fp, bool is_int, unsigned src_binary, unsigned reg)
902 print_alu_reg(ctx, fp, reg, false);
911 fprintf(fp, ".%c", components[c]);
913 print_srcmod(fp, is_int, !src->full, src->mod, true);
929 print_scalar_field(disassemble_context *ctx, FILE *fp, const char *name,
940 fprintf(fp, "scalar ALU unknown bit set\n");
943 fprintf(fp, "%s.", name);
945 bool is_instruction_int = print_alu_opcode(fp, alu_field->op);
949 fprintf(fp, ".%c32", is_int_out ? 'i' : 'f');
951 fprintf(fp, " ");
953 print_dest(ctx, fp, reg_info->out_reg);
961 fprintf(fp, ".%c", components[c]);
963 print_alu_outmod(fp, alu_field->outmod, is_int_out, !full);
965 fprintf(fp, ", ");
968 print_scalar_constant(fp, alu_field->src1, consts, alu_field);
970 print_scalar_src(ctx, fp, is_int, alu_field->src1, reg_info->src1_reg);
972 fprintf(fp, ", ");
977 print_immediate(fp, imm, is_instruction_int);
979 print_scalar_constant(fp, alu_field->src2, consts, alu_field);
981 print_scalar_src(ctx, fp, is_int, alu_field->src2, reg_info->src2_reg);
984 fprintf(fp, "\n");
988 print_branch_op(FILE *fp, unsigned op)
992 fprintf(fp, "uncond.");
996 fprintf(fp, "cond.");
1000 fprintf(fp, "write.");
1004 fprintf(fp, "tilebuffer.");
1008 fprintf(fp, "discard.");
1012 fprintf(fp, "unk%u.", op);
1018 print_branch_cond(FILE *fp, int cond)
1022 fprintf(fp, "write0");
1026 fprintf(fp, "false");
1030 fprintf(fp, "true");
1034 fprintf(fp, "always");
1038 fprintf(fp, "unk%X", cond);
1044 print_compact_branch_writeout_field(disassemble_context *ctx, FILE *fp, uint16_t word)
1053 fprintf(fp, "br.uncond ");
1056 fprintf(fp, "unknown:%u, ", br_uncond.unknown);
1059 fprintf(fp, "+");
1061 fprintf(fp, "%d -> %s", br_uncond.offset,
1063 fprintf(fp, "\n");
1075 fprintf(fp, "br.");
1077 print_branch_op(fp, br_cond.op);
1078 print_branch_cond(fp, br_cond.cond);
1080 fprintf(fp, " ");
1083 fprintf(fp, "+");
1085 fprintf(fp, "%d -> %s", br_cond.offset,
1087 fprintf(fp, "\n");
1097 print_extended_branch_writeout_field(disassemble_context *ctx, FILE *fp, uint8_t *words,
1103 fprintf(fp, "brx.");
1105 print_branch_op(fp, br.op);
1116 print_branch_cond(fp, br.cond & 0x3);
1118 fprintf(fp, "lut%X", br.cond);
1121 fprintf(fp, ".unknown%u", br.unknown);
1123 fprintf(fp, " ");
1126 fprintf(fp, "+");
1128 fprintf(fp, "%d -> %s\n", br.offset,
1134 fprintf(fp, "\t/* XXX TAG ERROR: jumping to %s but tagged %s \n",
1169 print_alu_word(disassemble_context *ctx, FILE *fp, uint32_t *words,
1209 fprintf(fp, "unknown bit 16 enabled\n");
1212 print_vector_field(ctx, fp, "vmul", word_ptr, *beginning_ptr, consts, tabs, verbose);
1218 fprintf(fp, "unknown bit 18 enabled\n");
1221 print_scalar_field(ctx, fp, "sadd", word_ptr, *beginning_ptr, consts, tabs, verbose);
1227 fprintf(fp, "unknown bit 20 enabled\n");
1230 print_vector_field(ctx, fp, "vadd", word_ptr, *beginning_ptr, consts, tabs, verbose);
1236 fprintf(fp, "unknown bit 22 enabled\n");
1239 print_scalar_field(ctx, fp, "smul", word_ptr, *beginning_ptr, consts, tabs, verbose);
1245 fprintf(fp, "unknown bit 24 enabled\n");
1248 print_vector_field(ctx, fp, "lut", word_ptr, *beginning_ptr, consts, tabs, verbose);
1253 branch_forward |= print_compact_branch_writeout_field(ctx, fp, *word_ptr);
1258 branch_forward |= print_extended_branch_writeout_field(ctx, fp, (uint8_t *) word_ptr, next);
1263 fprintf(fp, "uconstants 0x%X, 0x%X, 0x%X, 0x%X\n",
1273 print_varying_parameters(FILE *fp, midgard_load_store_word *word)
1279 fprintf(fp, ".flat");
1282 fprintf(fp, ".correction");
1285 fprintf(fp, ".centroid");
1288 fprintf(fp, ".sample");
1292 fprintf(fp, ".perspectivey");
1295 fprintf(fp, ".perspectivez");
1298 fprintf(fp, ".perspectivew");
1340 midgard_print_sint(FILE *fp, int n)
1343 fprintf(fp, " + 0x%X", n);
1345 fprintf(fp, " - 0x%X", -n);
1356 print_load_store_instr(disassemble_context *ctx, FILE *fp, uint64_t data, bool verbose)
1360 print_ld_st_opcode(fp, word->op);
1363 fprintf(fp, " 0x%X\n", word->signed_offset);
1391 fprintf(fp, ".%s", is_secondary ? "secondary" : "primary");
1393 fprintf(fp, ".%s", word->bitsize_toggle ? "f32" : "f16");
1395 fprintf(fp, " ");
1400 print_ldst_write_reg(fp, word->reg);
1411 print_ldst_mask(fp, word->mask, swizzle);
1413 print_ldst_read_reg(fp, word->reg);
1414 print_vec_swizzle(fp, word->swizzle, midgard_src_passthrough,
1422 fprintf(fp, ", %u", imm);
1424 fprintf(fp, ", ");
1425 print_ldst_read_reg(fp, word->arg_reg);
1426 fprintf(fp, ".%c", components[word->arg_comp]);
1429 fprintf(fp, ", ");
1430 print_ldst_read_reg(fp, word->index_reg);
1431 fprintf(fp, ".%c", components[word->index_comp]);
1433 fprintf(fp, " lsl %u", word->index_shift);
1434 midgard_print_sint(fp, UNPACK_LDST_UBO_OFS(word->signed_offset));
1439 fprintf(fp, ", ");
1444 print_ldst_read_reg(fp, word->arg_reg);
1445 fprintf(fp, ".u%d.%c",
1454 fprintf(fp, " + ");
1456 print_ldst_read_reg(fp, word->index_reg);
1457 fprintf(fp, "%s.%c",
1461 fprintf(fp, " lsl %u", word->index_shift);
1464 midgard_print_sint(fp, word->signed_offset);
1469 fprintf(fp, ", ");
1470 print_ldst_read_reg(fp, word->arg_reg);
1471 print_vec_swizzle(fp, word->swizzle, midgard_src_passthrough,
1479 fprintf(fp, ", ");
1480 print_ldst_read_reg(fp, src);
1481 fprintf(fp, ".%c", components[src_comp]);
1487 fprintf(fp, ", ");
1488 print_ldst_read_reg(fp, word->index_reg);
1489 fprintf(fp, ".%c", components[word->index_comp]);
1494 fprintf(fp, ", ");
1495 print_ldst_read_reg(fp, word->index_reg);
1496 fprintf(fp, ".%c", components[word->index_comp]);
1498 fprintf(fp, " lsl %u", word->index_shift);
1499 midgard_print_sint(fp, UNPACK_LDST_ATTRIB_OFS(word->signed_offset));
1504 fprintf(fp, ", ");
1505 print_ldst_read_reg(fp, word->arg_reg);
1508 fprintf(fp, ".u%d", word->bitsize_toggle ? 64 : 32);
1510 fprintf(fp, ".%c", components[word->arg_comp]);
1513 midgard_print_sint(fp, UNPACK_LDST_VERTEX_OFS(word->signed_offset));
1518 fprintf(fp, ", ");
1520 fprintf(fp, "0x%X", format_specifier);
1523 fprintf(fp, "\n");
1554 print_load_store_word(disassemble_context *ctx, FILE *fp, uint32_t *word, bool verbose)
1559 print_load_store_instr(ctx, fp, load_store->word1, verbose);
1563 print_load_store_instr(ctx, fp, load_store->word2, verbose);
1568 print_texture_reg_select(FILE *fp, uint8_t u, unsigned base)
1573 print_tex_reg(fp, base + sel.select, false);
1583 fprintf(fp, ".%c.%d", components[component], sel.full ? 32 : 16);
1589 print_texture_format(FILE *fp, int format)
1592 fprintf(fp, ".");
1618 print_texture_op(FILE *fp, unsigned op)
1621 fprintf(fp, "%s", tex_opcode_props[op].name);
1623 fprintf(fp, "tex_op_%02X", op);
1649 print_texture_barrier(FILE *fp, uint32_t *word)
1654 fprintf(fp, "/* barrier tag %X != tex/bar */ ", barrier->type);
1657 fprintf(fp, "/* cont missing? */");
1660 fprintf(fp, "/* last missing? */");
1663 fprintf(fp, "/* zero1 = 0x%X */ ", barrier->zero1);
1666 fprintf(fp, "/* zero2 = 0x%X */ ", barrier->zero2);
1669 fprintf(fp, "/* zero3 = 0x%X */ ", barrier->zero3);
1672 fprintf(fp, "/* zero4 = 0x%X */ ", barrier->zero4);
1675 fprintf(fp, "/* zero4 = 0x%" PRIx64 " */ ", barrier->zero5);
1678 fprintf(fp, ".ooo%u", barrier->out_of_order);
1680 fprintf(fp, "\n");
1711 print_texture_word(disassemble_context *ctx, FILE *fp, uint32_t *word,
1719 print_texture_op(fp, texture->op);
1723 print_texture_barrier(fp, word);
1726 fprintf (fp, "/* nonbarrier had tex/bar tag */ ");
1728 fprintf (fp, ".vtx");
1731 fprintf(fp, "%s", derivative_mode(texture->mode));
1733 fprintf(fp, "%s", texture_mode(texture->mode));
1736 print_texture_format(fp, texture->format);
1741 fprintf(fp, ".cont");
1744 fprintf(fp, ".last");
1747 fprintf(fp, ".ooo%u", texture->out_of_order);
1749 fprintf(fp, " ");
1750 print_tex_reg(fp, out_reg_base + texture->out_reg_select, true);
1751 print_tex_mask(fp, texture->mask, texture->out_upper);
1752 fprintf(fp, ".%c%d", texture->sampler_type == MALI_SAMPLER_FLOAT ? 'f' : 'i',
1758 print_outmod(fp, texture->outmod, false);
1760 fprintf(fp, ", ");
1766 fprintf(fp, "texture[");
1767 print_texture_reg_select(fp, texture->texture_handle, in_reg_base);
1768 fprintf(fp, "], ");
1773 fprintf(fp, "texture%u, ", texture->texture_handle);
1778 fprintf(fp, "%csampler", sampler_type_name(texture->sampler_type));
1781 fprintf(fp, "[");
1782 print_texture_reg_select(fp, texture->sampler_handle, in_reg_base);
1783 fprintf(fp, "]");
1787 fprintf(fp, "%u", texture->sampler_handle);
1791 print_vec_swizzle(fp, texture->swizzle, midgard_src_passthrough, midgard_reg_mode_32, 0xFF);
1793 fprintf(fp, ", ");
1797 print_tex_reg(fp, in_reg_base + texture->in_reg_select, false);
1798 print_vec_swizzle(fp, texture->in_reg_swizzle, exp, midgard_reg_mode_32, 0xFF);
1799 fprintf(fp, ".%d", texture->in_reg_full ? 32 : 16);
1813 fprintf(fp, " + ");
1822 print_tex_reg(fp, in_reg_base + select, false);
1823 print_vec_swizzle(fp, swizzle, exp, midgard_reg_mode_32, 0xFF);
1824 fprintf(fp, ".%d", full ? 32 : 16);
1827 fprintf(fp, ", ");
1841 fprintf(fp, "/* invalid negative */ ");
1845 fprintf(fp, " + <%d, %d, %d>, ", offset_x, offset_y, offset_z);
1847 fprintf(fp, ", ");
1853 fprintf(fp, "lod %c ", lod_operand);
1854 print_texture_reg_select(fp, texture->bias, in_reg_base);
1855 fprintf(fp, ", ");
1858 fprintf(fp, " /* bias_int = 0x%X */", texture->bias_int);
1865 fprintf(fp, " /* bias_int = 0x%X */ ", texture->bias_int);
1867 fprintf(fp, "lod = %u, ", texture->bias);
1877 fprintf(fp, "lod %c %f, ", operand, fabsf(bias));
1880 fprintf(fp, "\n");
1887 fprintf(fp, "// unknown4 = 0x%x\n", texture->unknown4);
1888 fprintf(fp, "// unknown8 = 0x%x\n", texture->unknown8);
1895 disassemble_midgard(FILE *fp, uint8_t *code, size_t size, unsigned gpu_id, bool verbose)
1919 fprintf(fp, "\t/* XXX: TAG ERROR branch, got %s expected %s */\n",
1945 fprintf(fp, "\t/* XXX: invalid next tag */\n");
1948 fprintf(fp, "\t/* XXX: TAG ERROR sequence, got %s expexted %s */\n",
1971 print_texture_word(&ctx, fp, &words[i], tabs,
1978 print_load_store_word(&ctx, fp, &words[i], verbose);
1982 branch_forward = print_alu_word(&ctx, fp, &words[i], num_quad_words, tabs, i + 4*num_quad_words, verbose);
1986 fprintf(fp, "writeout\n");
1991 fprintf(fp, "Unknown word type %u:\n", words[i] & 0xF);
1993 print_quad_word(fp, &words[i], tabs);
1994 fprintf(fp, "\n");
2011 fprintf(fp, "break\n");
2013 fprintf(fp, "\n");
2018 fprintf(fp, "\n");
2024 fprintf(fp, "/* XXX: shader ended with tag %s */\n",