Lines Matching refs:instr
66 static void print_instr_name(struct ir3_instruction *instr, bool flags) in print_instr_name() argument
68 if (!instr) in print_instr_name()
71 printf("%04u:", instr->serialno); in print_instr_name()
73 printf("%04u:", instr->name); in print_instr_name()
74 printf("%04u:", instr->ip); in print_instr_name()
75 if (instr->flags & IR3_INSTR_UNUSED) { in print_instr_name()
78 printf("%03u: ", instr->use_count); in print_instr_name()
83 if (instr->flags & IR3_INSTR_SY) in print_instr_name()
85 if (instr->flags & IR3_INSTR_SS) in print_instr_name()
87 if (instr->flags & IR3_INSTR_JP) in print_instr_name()
89 if (instr->repeat) in print_instr_name()
90 printf("(rpt%d)", instr->repeat); in print_instr_name()
91 if (instr->nop) in print_instr_name()
92 printf("(nop%d)", instr->nop); in print_instr_name()
93 if (instr->flags & IR3_INSTR_UL) in print_instr_name()
99 if (is_meta(instr)) { in print_instr_name()
100 switch (instr->opc) { in print_instr_name()
107 default: printf("_meta:%d", instr->opc); break; in print_instr_name()
109 } else if (instr->opc == OPC_MOV) { in print_instr_name()
110 if (instr->cat1.src_type == instr->cat1.dst_type) in print_instr_name()
114 printf(".%s%s", type_name(instr->cat1.src_type), in print_instr_name()
115 type_name(instr->cat1.dst_type)); in print_instr_name()
117 printf("%s", disasm_a3xx_instr_name(instr->opc)); in print_instr_name()
118 if (instr->flags & IR3_INSTR_3D) in print_instr_name()
120 if (instr->flags & IR3_INSTR_A) in print_instr_name()
122 if (instr->flags & IR3_INSTR_O) in print_instr_name()
124 if (instr->flags & IR3_INSTR_P) in print_instr_name()
126 if (instr->flags & IR3_INSTR_S) in print_instr_name()
128 if (instr->flags & IR3_INSTR_A1EN) in print_instr_name()
130 if (instr->opc == OPC_LDC) in print_instr_name()
131 printf(".offset%d", instr->cat6.d); in print_instr_name()
132 if (instr->flags & IR3_INSTR_B) { in print_instr_name()
134 is_tex(instr) ? instr->cat5.tex_base : instr->cat6.base); in print_instr_name()
136 if (instr->flags & IR3_INSTR_S2EN) in print_instr_name()
148 switch (instr->opc) { in print_instr_name()
155 printf(".%s", cond[instr->cat2.condition & 0x7]); in print_instr_name()
189 if (reg->instr) { in print_reg_name()
192 print_instr_name(reg->instr, false); in print_reg_name()
198 print_instr_name(reg->instr, false); in print_reg_name()
224 print_instr(struct ir3_instruction *instr, int lvl) in print_instr() argument
230 print_instr_name(instr, true); in print_instr()
232 if (is_tex(instr)) { in print_instr()
233 printf(" (%s)(", type_name(instr->cat5.type)); in print_instr()
235 if (instr->regs[0]->wrmask & (1 << i)) in print_instr()
238 } else if (instr->regs_count > 0) { in print_instr()
242 for (i = 0; i < instr->regs_count; i++) { in print_instr()
243 struct ir3_register *reg = instr->regs[i]; in print_instr()
249 if (is_tex(instr) && !(instr->flags & IR3_INSTR_S2EN)) { in print_instr()
250 if (!!(instr->flags & IR3_INSTR_B)) { in print_instr()
251 if (!!(instr->flags & IR3_INSTR_A1EN)) { in print_instr()
252 printf(", s#%d", instr->cat5.samp); in print_instr()
254 printf(", s#%d, t#%d", instr->cat5.samp & 0xf, in print_instr()
255 instr->cat5.samp >> 4); in print_instr()
258 printf(", s#%d, t#%d", instr->cat5.samp, instr->cat5.tex); in print_instr()
262 if (instr->address) { in print_instr()
265 print_instr_name(instr->address, false); in print_instr()
269 if (instr->cp.left) { in print_instr()
272 print_instr_name(instr->cp.left, false); in print_instr()
276 if (instr->cp.right) { in print_instr()
279 print_instr_name(instr->cp.right, false); in print_instr()
283 if (instr->opc == OPC_META_SPLIT) { in print_instr()
284 printf(", off=%d", instr->split.off); in print_instr()
285 } else if (instr->opc == OPC_META_TEX_PREFETCH) { in print_instr()
286 printf(", tex=%d, samp=%d, input_offset=%d", instr->prefetch.tex, in print_instr()
287 instr->prefetch.samp, instr->prefetch.input_offset); in print_instr()
290 if (is_flow(instr) && instr->cat0.target) { in print_instr()
292 if (instr->opc == OPC_B) { in print_instr()
293 printf("r %sp0.x", instr->cat0.inv ? "!" : ""); in print_instr()
295 printf(", target=block%u", block_id(instr->cat0.target)); in print_instr()
298 if (instr->deps_count) { in print_instr()
300 for (unsigned i = 0; i < instr->deps_count; i++) { in print_instr()
304 print_instr_name(instr->deps[i], false); in print_instr()
312 void ir3_print_instr(struct ir3_instruction *instr) in ir3_print_instr() argument
314 print_instr(instr, 0); in ir3_print_instr()
338 foreach_instr (instr, &block->instr_list) { in print_block()
339 print_instr(instr, lvl+1); in print_block()