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);
308 print_alu_outmod(FILE *fp, unsigned outmod, bool is_int, bool half)
316 fprintf(fp, ".shrink");
318 mir_print_outmod(fp, outmod, is_int);
340 print_quad_word(FILE *fp, uint32_t *words, unsigned tabs)
345 fprintf(fp, "0x%08X%s ", words[i], i == 3 ? "" : ",");
347 fprintf(fp, "\n");
382 print_vec_selectors_64(FILE *fp, unsigned swizzle,
400 fprintf(fp, "%c", components[a / 2]);
410 fprintf(fp, "%c", a >> 1 ? 'Y' : 'X');
412 fprintf(fp, "[%c%c]", components[a], components[b]);
417 print_vec_selectors(FILE *fp, unsigned swizzle,
439 fprintf(fp, "%c", components[c]);
441 fprintf(fp, "%c", components[c+1]);
446 print_vec_swizzle(FILE *fp, unsigned swizzle,
502 fprintf(fp, ".");
506 print_vec_selectors_64(fp, swizzle, mode, expand, first_half, mask);
511 print_vec_selectors(fp, swizzle, mode, first_half, mask, &mask_offs);
513 print_vec_selectors(fp, swizzle, mode, second_half, mask, &mask_offs);
517 print_scalar_constant(FILE *fp, unsigned src_binary,
524 fprintf(fp, "#");
525 mir_print_constant_component(fp, consts, src->component,
532 print_vector_constants(FILE *fp, unsigned src_binary,
549 fprintf(fp, "<");
551 fprintf(fp, "#");
615 fprintf(fp, ", ");
617 mir_print_constant_component(fp, consts, c, alu->reg_mode,
622 fprintf(fp, ">");
626 print_srcmod(FILE *fp, bool is_int, bool expands, unsigned mod, bool scalar)
632 fprintf(fp, "%s", srcmod_names_int[mod]);
635 fprintf(fp, ".abs");
637 fprintf(fp, ".neg");
639 fprintf(fp, ".widen");
644 print_vector_src(disassemble_context *ctx, FILE *fp, unsigned src_binary,
654 print_alu_reg(ctx, fp, reg, false);
656 print_vec_swizzle(fp, src->swizzle, src->expand_mode, mode, src_mask);
658 fprintf(fp, "%s", argmod_names[arg_mod]);
660 print_srcmod(fp, is_int, INPUT_EXPANDS(src->expand_mode), src->mod, false);
674 print_immediate(FILE *fp, uint16_t imm, bool is_instruction_int)
677 fprintf(fp, "#%u", imm);
679 fprintf(fp, "#%g", _mesa_half_to_float(imm));
695 print_dest(disassemble_context *ctx, FILE *fp, unsigned reg)
698 print_alu_reg(ctx, fp, reg, true);
709 print_alu_mask(FILE *fp, uint8_t mask, unsigned bits, midgard_shrink_mode shrink_mode)
716 fprintf(fp, ".");
745 fprintf(fp, "%c", c);
747 fprintf(fp, "%c", alphabet[comp_idx+1]);
752 fprintf(fp, " /* %X */", mask);
757 print_ldst_mask(FILE *fp, unsigned mask, unsigned swizzle) {
758 fprintf(fp, ".");
766 fprintf(fp, "%c", write ? components[c] : '~');
771 print_tex_mask(FILE *fp, unsigned mask, bool upper)
775 fprintf(fp, "'");
780 fprintf(fp, ".");
785 fprintf(fp, "%c", components[i + (upper ? 4 : 0)]);
790 print_vector_field(disassemble_context *ctx, FILE *fp, const char *name,
803 fprintf(fp, "%s.", name);
805 bool is_instruction_int = print_alu_opcode(fp, alu_field->op);
808 fprintf(fp, ".%c%d", is_int_out ? 'i' : 'f', bits_for_mode(mode));
810 fprintf(fp, " ");
816 print_dest(ctx, fp, reg_info->out_reg);
823 fprintf(fp, "/* do%u */ ", shrink_mode);
835 fprintf(fp, "/* err too many components */");
837 print_alu_mask(fp, mask, bits_for_mode(mode), shrink_mode);
841 print_alu_outmod(fp, alu_field->outmod, is_int_out, shrink_mode != midgard_shrink_mode_none);
848 fprintf(fp, ", ");
851 print_vector_constants(fp, alu_field->src1, consts, alu_field);
854 print_vector_src(ctx, fp, alu_field->src1, mode, reg_info->src1_reg,
858 fprintf(fp, ", ");
862 print_immediate(fp, imm, is_instruction_int);
864 print_vector_constants(fp, alu_field->src2, consts, alu_field);
867 print_vector_src(ctx, fp, alu_field->src2, mode, reg_info->src2_reg,
872 fprintf(fp, "\n");
876 print_scalar_src(disassemble_context *ctx, FILE *fp, bool is_int, unsigned src_binary, unsigned reg)
880 print_alu_reg(ctx, fp, reg, false);
889 fprintf(fp, ".%c", components[c]);
891 print_srcmod(fp, is_int, !src->full, src->mod, true);
907 print_scalar_field(disassemble_context *ctx, FILE *fp, const char *name,
918 fprintf(fp, "scalar ALU reserved bit set\n");
921 fprintf(fp, "%s.", name);
923 bool is_instruction_int = print_alu_opcode(fp, alu_field->op);
927 fprintf(fp, ".%c32", is_int_out ? 'i' : 'f');
929 fprintf(fp, " ");
931 print_dest(ctx, fp, reg_info->out_reg);
939 fprintf(fp, ".%c", components[c]);
941 print_alu_outmod(fp, alu_field->outmod, is_int_out, !full);
943 fprintf(fp, ", ");
946 print_scalar_constant(fp, alu_field->src1, consts, alu_field);
948 print_scalar_src(ctx, fp, is_int, alu_field->src1, reg_info->src1_reg);
950 fprintf(fp, ", ");
955 print_immediate(fp, imm, is_instruction_int);
957 print_scalar_constant(fp, alu_field->src2, consts, alu_field);
959 print_scalar_src(ctx, fp, is_int, alu_field->src2, reg_info->src2_reg);
962 fprintf(fp, "\n");
966 print_branch_op(FILE *fp, unsigned op)
970 fprintf(fp, "uncond.");
974 fprintf(fp, "cond.");
978 fprintf(fp, "write.");
982 fprintf(fp, "tilebuffer.");
986 fprintf(fp, "discard.");
990 fprintf(fp, "unk%u.", op);
996 print_branch_cond(FILE *fp, int cond)
1000 fprintf(fp, "write0");
1004 fprintf(fp, "false");
1008 fprintf(fp, "true");
1012 fprintf(fp, "always");
1016 fprintf(fp, "unk%X", cond);
1033 print_compact_branch_writeout_field(disassemble_context *ctx, FILE *fp, uint16_t word)
1042 fprintf(fp, "br.uncond%s ", function_call_mode(br_uncond.call_mode));
1045 fprintf(fp, "+");
1047 fprintf(fp, "%d -> %s", br_uncond.offset,
1049 fprintf(fp, "\n");
1061 fprintf(fp, "br.");
1063 print_branch_op(fp, br_cond.op);
1064 print_branch_cond(fp, br_cond.cond);
1066 fprintf(fp, " ");
1069 fprintf(fp, "+");
1071 fprintf(fp, "%d -> %s", br_cond.offset,
1073 fprintf(fp, "\n");
1083 print_extended_branch_writeout_field(disassemble_context *ctx, FILE *fp, uint8_t *words,
1089 fprintf(fp, "brx%s.", function_call_mode(br.call_mode));
1091 print_branch_op(fp, br.op);
1102 print_branch_cond(fp, br.cond & 0x3);
1104 fprintf(fp, "lut%X", br.cond);
1106 fprintf(fp, " ");
1109 fprintf(fp, "+");
1111 fprintf(fp, "%d -> %s\n", br.offset,
1117 fprintf(fp, "\t/* XXX TAG ERROR: jumping to %s but tagged %s \n",
1152 print_alu_word(disassemble_context *ctx, FILE *fp, uint32_t *words,
1192 fprintf(fp, "unknown bit 16 enabled\n");
1195 print_vector_field(ctx, fp, "vmul", word_ptr, *beginning_ptr, consts, tabs, verbose);
1201 fprintf(fp, "unknown bit 18 enabled\n");
1204 print_scalar_field(ctx, fp, "sadd", word_ptr, *beginning_ptr, consts, tabs, verbose);
1210 fprintf(fp, "unknown bit 20 enabled\n");
1213 print_vector_field(ctx, fp, "vadd", word_ptr, *beginning_ptr, consts, tabs, verbose);
1219 fprintf(fp, "unknown bit 22 enabled\n");
1222 print_scalar_field(ctx, fp, "smul", word_ptr, *beginning_ptr, consts, tabs, verbose);
1228 fprintf(fp, "unknown bit 24 enabled\n");
1231 print_vector_field(ctx, fp, "lut", word_ptr, *beginning_ptr, consts, tabs, verbose);
1236 branch_forward |= print_compact_branch_writeout_field(ctx, fp, *word_ptr);
1241 branch_forward |= print_extended_branch_writeout_field(ctx, fp, (uint8_t *) word_ptr, next);
1246 fprintf(fp, "uconstants 0x%X, 0x%X, 0x%X, 0x%X\n",
1256 print_varying_parameters(FILE *fp, midgard_load_store_word *word)
1262 fprintf(fp, ".flat");
1265 fprintf(fp, ".correction");
1268 fprintf(fp, ".centroid");
1271 fprintf(fp, ".sample");
1275 fprintf(fp, ".perspectivey");
1278 fprintf(fp, ".perspectivez");
1281 fprintf(fp, ".perspectivew");
1323 midgard_print_sint(FILE *fp, int n)
1326 fprintf(fp, " + 0x%X", n);
1328 fprintf(fp, " - 0x%X", -n);
1339 print_load_store_instr(disassemble_context *ctx, FILE *fp, uint64_t data, bool verbose)
1343 print_ld_st_opcode(fp, word->op);
1346 fprintf(fp, " 0x%X\n", word->signed_offset);
1374 fprintf(fp, ".%s", is_secondary ? "secondary" : "primary");
1376 fprintf(fp, ".%s", word->bitsize_toggle ? "f32" : "f16");
1378 fprintf(fp, " ");
1383 print_ldst_write_reg(fp, word->reg);
1394 print_ldst_mask(fp, word->mask, swizzle);
1402 print_ldst_read_reg(fp, word->reg);
1403 print_vec_swizzle(fp, word->swizzle, midgard_src_passthrough,
1411 fprintf(fp, ", %u", imm);
1413 fprintf(fp, ", ");
1414 print_ldst_read_reg(fp, word->arg_reg);
1415 fprintf(fp, ".%c", components[word->arg_comp]);
1418 fprintf(fp, ", ");
1419 print_ldst_read_reg(fp, word->index_reg);
1420 fprintf(fp, ".%c", components[word->index_comp]);
1422 fprintf(fp, " << %u", word->index_shift);
1423 midgard_print_sint(fp, UNPACK_LDST_UBO_OFS(word->signed_offset));
1428 fprintf(fp, ", ");
1433 print_ldst_read_reg(fp, word->arg_reg);
1434 fprintf(fp, ".u%d.%c",
1443 fprintf(fp, " + ");
1445 print_ldst_read_reg(fp, word->index_reg);
1446 fprintf(fp, "%s.%c",
1450 fprintf(fp, " << %u", word->index_shift);
1453 midgard_print_sint(fp, word->signed_offset);
1458 fprintf(fp, ", ");
1459 print_ldst_read_reg(fp, word->arg_reg);
1460 print_vec_swizzle(fp, word->swizzle, midgard_src_passthrough,
1468 fprintf(fp, ", ");
1469 print_ldst_read_reg(fp, src);
1470 fprintf(fp, ".%c", components[src_comp]);
1476 fprintf(fp, ", ");
1477 print_ldst_read_reg(fp, word->index_reg);
1478 fprintf(fp, ".%c", components[word->index_comp]);
1483 fprintf(fp, ", ");
1484 print_ldst_read_reg(fp, word->index_reg);
1485 fprintf(fp, ".%c", components[word->index_comp]);
1487 fprintf(fp, " << %u", word->index_shift);
1488 midgard_print_sint(fp, UNPACK_LDST_ATTRIB_OFS(word->signed_offset));
1493 fprintf(fp, ", ");
1494 print_ldst_read_reg(fp, word->arg_reg);
1497 fprintf(fp, ".u%d", word->bitsize_toggle ? 64 : 32);
1499 fprintf(fp, ".%c", components[word->arg_comp]);
1502 midgard_print_sint(fp, UNPACK_LDST_VERTEX_OFS(word->signed_offset));
1507 fprintf(fp, ", ");
1509 fprintf(fp, "0x%X", format_specifier);
1512 fprintf(fp, "\n");
1543 print_load_store_word(disassemble_context *ctx, FILE *fp, uint32_t *word, bool verbose)
1548 print_load_store_instr(ctx, fp, load_store->word1, verbose);
1552 print_load_store_instr(ctx, fp, load_store->word2, verbose);
1557 print_texture_reg_select(FILE *fp, uint8_t u, unsigned base)
1562 print_tex_reg(fp, base + sel.select, false);
1572 fprintf(fp, ".%c.%d", components[component], sel.full ? 32 : 16);
1578 print_texture_format(FILE *fp, int format)
1581 fprintf(fp, ".");
1607 print_texture_op(FILE *fp, unsigned op)
1610 fprintf(fp, "%s", tex_opcode_props[op].name);
1612 fprintf(fp, "tex_op_%02X", op);
1638 print_texture_barrier(FILE *fp, uint32_t *word)
1643 fprintf(fp, "/* barrier tag %X != tex/bar */ ", barrier->type);
1646 fprintf(fp, "/* cont missing? */");
1649 fprintf(fp, "/* last missing? */");
1652 fprintf(fp, "/* zero1 = 0x%X */ ", barrier->zero1);
1655 fprintf(fp, "/* zero2 = 0x%X */ ", barrier->zero2);
1658 fprintf(fp, "/* zero3 = 0x%X */ ", barrier->zero3);
1661 fprintf(fp, "/* zero4 = 0x%X */ ", barrier->zero4);
1664 fprintf(fp, "/* zero4 = 0x%" PRIx64 " */ ", barrier->zero5);
1667 fprintf(fp, ".ooo%u", barrier->out_of_order);
1669 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);
1739 fputs(partial_exection_mode(texture->exec), fp);
1742 fprintf(fp, ".ooo%u", texture->out_of_order);
1744 fprintf(fp, " ");
1745 print_tex_reg(fp, out_reg_base + texture->out_reg_select, true);
1746 print_tex_mask(fp, texture->mask, texture->out_upper);
1747 fprintf(fp, ".%c%d", texture->sampler_type == MALI_SAMPLER_FLOAT ? 'f' : 'i',
1753 mir_print_outmod(fp, texture->outmod, false);
1755 fprintf(fp, ", ");
1761 fprintf(fp, "texture[");
1762 print_texture_reg_select(fp, texture->texture_handle, in_reg_base);
1763 fprintf(fp, "], ");
1768 fprintf(fp, "texture%u, ", texture->texture_handle);
1773 fprintf(fp, "%csampler", sampler_type_name(texture->sampler_type));
1776 fprintf(fp, "[");
1777 print_texture_reg_select(fp, texture->sampler_handle, in_reg_base);
1778 fprintf(fp, "]");
1782 fprintf(fp, "%u", texture->sampler_handle);
1786 print_vec_swizzle(fp, texture->swizzle, midgard_src_passthrough, midgard_reg_mode_32, 0xFF);
1788 fprintf(fp, ", ");
1792 print_tex_reg(fp, in_reg_base + texture->in_reg_select, false);
1793 print_vec_swizzle(fp, texture->in_reg_swizzle, exp, midgard_reg_mode_32, 0xFF);
1794 fprintf(fp, ".%d", texture->in_reg_full ? 32 : 16);
1808 fprintf(fp, " + ");
1817 print_tex_reg(fp, in_reg_base + select, false);
1818 print_vec_swizzle(fp, swizzle, exp, midgard_reg_mode_32, 0xFF);
1819 fprintf(fp, ".%d", full ? 32 : 16);
1822 fprintf(fp, ", ");
1836 fprintf(fp, "/* invalid negative */ ");
1840 fprintf(fp, " + <%d, %d, %d>, ", offset_x, offset_y, offset_z);
1842 fprintf(fp, ", ");
1848 fprintf(fp, "lod %c ", lod_operand);
1849 print_texture_reg_select(fp, texture->bias, in_reg_base);
1850 fprintf(fp, ", ");
1853 fprintf(fp, " /* bias_int = 0x%X */", texture->bias_int);
1860 fprintf(fp, " /* bias_int = 0x%X */ ", texture->bias_int);
1862 fprintf(fp, "lod = %u, ", texture->bias);
1872 fprintf(fp, "lod %c %f, ", operand, fabsf(bias));
1875 fprintf(fp, "\n");
1882 fprintf(fp, "// unknown4 = 0x%x\n", texture->unknown4);
1883 fprintf(fp, "// unknown8 = 0x%x\n", texture->unknown8);
1890 disassemble_midgard(FILE *fp, uint8_t *code, size_t size, unsigned gpu_id, bool verbose)
1914 fprintf(fp, "\t/* XXX: TAG ERROR branch, got %s expected %s */\n",
1940 fprintf(fp, "\t/* XXX: invalid next tag */\n");
1943 fprintf(fp, "\t/* XXX: TAG ERROR sequence, got %s expexted %s */\n",
1966 print_texture_word(&ctx, fp, &words[i], tabs,
1973 print_load_store_word(&ctx, fp, &words[i], verbose);
1977 branch_forward = print_alu_word(&ctx, fp, &words[i], num_quad_words, tabs, i + 4*num_quad_words, verbose);
1981 fprintf(fp, "writeout\n");
1986 fprintf(fp, "Unknown word type %u:\n", words[i] & 0xF);
1988 print_quad_word(fp, &words[i], tabs);
1989 fprintf(fp, "\n");
2006 fprintf(fp, "break\n");
2008 fprintf(fp, "\n");
2013 fprintf(fp, "\n");
2019 fprintf(fp, "/* XXX: shader ended with tag %s */\n",