Lines Matching refs:ib
58 uint32_t *ib;
69 static void ac_do_parse_ib(FILE *f, struct ac_ib_parser *ib);
172 static uint32_t ac_ib_get(struct ac_ib_parser *ib)
176 if (ib->cur_dw < ib->num_dw) {
177 v = ib->ib[ib->cur_dw];
187 fprintf(ib->f, COLOR_RED "Valgrind: The next DWORD is garbage"
190 fprintf(ib->f, "\n\035#%08x ", v);
192 fprintf(ib->f, "\n\035#???????? ");
195 ib->cur_dw++;
200 struct ac_ib_parser *ib)
202 unsigned reg_dw = ac_ib_get(ib);
213 ac_dump_reg(f, ib->chip_class, reg + i*4, ac_ib_get(ib), ~0);
216 static void ac_parse_packet3(FILE *f, uint32_t header, struct ac_ib_parser *ib,
219 unsigned first_dw = ib->cur_dw;
250 ac_parse_set_reg_packet(f, count, SI_CONTEXT_REG_OFFSET, ib);
253 ac_parse_set_reg_packet(f, count, SI_CONFIG_REG_OFFSET, ib);
257 ac_parse_set_reg_packet(f, count, CIK_UCONFIG_REG_OFFSET, ib);
260 ac_parse_set_reg_packet(f, count, SI_SH_REG_OFFSET, ib);
263 ac_dump_reg(f, ib->chip_class, R_0301F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
264 ac_dump_reg(f, ib->chip_class, R_0301F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
265 ac_dump_reg(f, ib->chip_class, R_030230_CP_COHER_SIZE_HI, ac_ib_get(ib), ~0);
266 ac_dump_reg(f, ib->chip_class, R_0301F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
267 ac_dump_reg(f, ib->chip_class, R_0301E4_CP_COHER_BASE_HI, ac_ib_get(ib), ~0);
268 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
271 if (ib->chip_class >= CIK) {
272 ac_dump_reg(f, ib->chip_class, R_0301F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
273 ac_dump_reg(f, ib->chip_class, R_0301F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
274 ac_dump_reg(f, ib->chip_class, R_0301F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
276 ac_dump_reg(f, ib->chip_class, R_0085F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
277 ac_dump_reg(f, ib->chip_class, R_0085F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
278 ac_dump_reg(f, ib->chip_class, R_0085F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
280 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
283 uint32_t event_dw = ac_ib_get(ib);
284 ac_dump_reg(f, ib->chip_class, R_028A90_VGT_EVENT_INITIATOR, event_dw,
289 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
290 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 16);
295 uint32_t event_dw = ac_ib_get(ib);
296 ac_dump_reg(f, ib->chip_class, R_028A90_VGT_EVENT_INITIATOR, event_dw,
304 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
305 uint32_t addr_hi_dw = ac_ib_get(ib);
310 print_named_value(f, "DATA_LO", ac_ib_get(ib), 32);
311 print_named_value(f, "DATA_HI", ac_ib_get(ib), 32);
315 uint32_t event_dw = ac_ib_get(ib);
316 ac_dump_reg(f, ib->chip_class, R_028A90_VGT_EVENT_INITIATOR, event_dw,
327 uint32_t sel_dw = ac_ib_get(ib);
331 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
332 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 32);
333 print_named_value(f, "DATA_LO", ac_ib_get(ib), 32);
334 print_named_value(f, "DATA_HI", ac_ib_get(ib), 32);
335 print_named_value(f, "CTXID", ac_ib_get(ib), 32);
339 print_named_value(f, "OP", ac_ib_get(ib), 32);
340 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
341 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 32);
342 print_named_value(f, "REF", ac_ib_get(ib), 32);
343 print_named_value(f, "MASK", ac_ib_get(ib), 32);
344 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
347 ac_dump_reg(f, ib->chip_class, R_030930_VGT_NUM_INDICES, ac_ib_get(ib), ~0);
348 ac_dump_reg(f, ib->chip_class, R_0287F0_VGT_DRAW_INITIATOR, ac_ib_get(ib), ~0);
351 ac_dump_reg(f, ib->chip_class, R_028A78_VGT_DMA_MAX_SIZE, ac_ib_get(ib), ~0);
352 ac_dump_reg(f, ib->chip_class, R_0287E8_VGT_DMA_BASE, ac_ib_get(ib), ~0);
353 ac_dump_reg(f, ib->chip_class, R_0287E4_VGT_DMA_BASE_HI, ac_ib_get(ib), ~0);
354 ac_dump_reg(f, ib->chip_class, R_030930_VGT_NUM_INDICES, ac_ib_get(ib), ~0);
355 ac_dump_reg(f, ib->chip_class, R_0287F0_VGT_DRAW_INITIATOR, ac_ib_get(ib), ~0);
358 ac_dump_reg(f, ib->chip_class, R_028A7C_VGT_DMA_INDEX_TYPE, ac_ib_get(ib), ~0);
361 ac_dump_reg(f, ib->chip_class, R_030934_VGT_NUM_INSTANCES, ac_ib_get(ib), ~0);
364 ac_dump_reg(f, ib->chip_class, R_370_CONTROL, ac_ib_get(ib), ~0);
365 ac_dump_reg(f, ib->chip_class, R_371_DST_ADDR_LO, ac_ib_get(ib), ~0);
366 ac_dump_reg(f, ib->chip_class, R_372_DST_ADDR_HI, ac_ib_get(ib), ~0);
370 ac_dump_reg(f, ib->chip_class, R_410_CP_DMA_WORD0, ac_ib_get(ib), ~0);
371 ac_dump_reg(f, ib->chip_class, R_411_CP_DMA_WORD1, ac_ib_get(ib), ~0);
372 ac_dump_reg(f, ib->chip_class, R_412_CP_DMA_WORD2, ac_ib_get(ib), ~0);
373 ac_dump_reg(f, ib->chip_class, R_413_CP_DMA_WORD3, ac_ib_get(ib), ~0);
374 ac_dump_reg(f, ib->chip_class, R_414_COMMAND, ac_ib_get(ib), ~0);
377 ac_dump_reg(f, ib->chip_class, R_500_DMA_DATA_WORD0, ac_ib_get(ib), ~0);
378 ac_dump_reg(f, ib->chip_class, R_501_SRC_ADDR_LO, ac_ib_get(ib), ~0);
379 ac_dump_reg(f, ib->chip_class, R_502_SRC_ADDR_HI, ac_ib_get(ib), ~0);
380 ac_dump_reg(f, ib->chip_class, R_503_DST_ADDR_LO, ac_ib_get(ib), ~0);
381 ac_dump_reg(f, ib->chip_class, R_504_DST_ADDR_HI, ac_ib_get(ib), ~0);
382 ac_dump_reg(f, ib->chip_class, R_414_COMMAND, ac_ib_get(ib), ~0);
387 uint32_t base_lo_dw = ac_ib_get(ib);
388 ac_dump_reg(f, ib->chip_class, R_3F0_IB_BASE_LO, base_lo_dw, ~0);
389 uint32_t base_hi_dw = ac_ib_get(ib);
390 ac_dump_reg(f, ib->chip_class, R_3F1_IB_BASE_HI, base_hi_dw, ~0);
391 uint32_t control_dw = ac_ib_get(ib);
392 ac_dump_reg(f, ib->chip_class, R_3F2_CONTROL, control_dw, ~0);
394 if (!ib->addr_callback)
398 void *data = ib->addr_callback(ib->addr_callback_data, addr);
403 ib->ib = data;
404 ib->num_dw = G_3F2_IB_SIZE(control_dw);
405 ib->cur_dw = 0;
410 memcpy(&ib_recurse, ib, sizeof(ib_recurse));
411 ib_recurse.ib = data;
415 if (*current_trace_id == *ib->trace_ids) {
435 } else if (count == 0 && ib->cur_dw < ib->num_dw &&
436 AC_IS_TRACE_POINT(ib->ib[ib->cur_dw])) {
437 unsigned packet_id = AC_GET_TRACE_POINT_ID(ib->ib[ib->cur_dw]);
442 if (!ib->trace_id_count)
448 if (packet_id < *ib->trace_ids)
452 else if (packet_id == *ib->trace_ids)
457 else if (packet_id+1 == *ib->trace_ids)
473 while (ib->cur_dw <= first_dw + count)
474 ac_ib_get(ib);
476 if (ib->cur_dw > first_dw + count + 1)
484 static void ac_do_parse_ib(FILE *f, struct ac_ib_parser *ib)
488 while (ib->cur_dw < ib->num_dw) {
489 uint32_t header = ac_ib_get(ib);
494 ac_parse_packet3(f, header, ib, ¤t_trace_id);
565 struct ac_ib_parser ib = {};
566 ib.ib = ib_ptr;
567 ib.num_dw = num_dw;
568 ib.trace_ids = trace_ids;
569 ib.trace_id_count = trace_id_count;
570 ib.chip_class = chip_class;
571 ib.addr_callback = addr_callback;
572 ib.addr_callback_data = addr_callback_data;
577 ib.f = memf;
578 ac_do_parse_ib(memf, &ib);
586 if (ib.cur_dw > ib.num_dw) {
596 * \param ib IB
606 void ac_parse_ib(FILE *f, uint32_t *ib, int num_dw, const int *trace_ids,
613 ac_parse_ib_chunk(f, ib, num_dw, trace_ids, trace_id_count,