Lines Matching defs:ib
66 uint32_t *ib;
77 static void ac_do_parse_ib(FILE *f, struct ac_ib_parser *ib);
214 static uint32_t ac_ib_get(struct ac_ib_parser *ib)
218 if (ib->cur_dw < ib->num_dw) {
219 v = ib->ib[ib->cur_dw];
229 fprintf(ib->f, "%sValgrind: The next DWORD is garbage%s\n",
232 fprintf(ib->f, "\n\035#%08x ", v);
234 fprintf(ib->f, "\n\035#???????? ");
237 ib->cur_dw++;
242 struct ac_ib_parser *ib)
244 unsigned reg_dw = ac_ib_get(ib);
255 ac_dump_reg(f, ib->gfx_level, reg + i * 4, ac_ib_get(ib), ~0);
258 static void ac_parse_packet3(FILE *f, uint32_t header, struct ac_ib_parser *ib,
261 unsigned first_dw = ib->cur_dw;
286 ac_parse_set_reg_packet(f, count, SI_CONTEXT_REG_OFFSET, ib);
289 ac_parse_set_reg_packet(f, count, SI_CONFIG_REG_OFFSET, ib);
293 ac_parse_set_reg_packet(f, count, CIK_UCONFIG_REG_OFFSET, ib);
297 ac_parse_set_reg_packet(f, count, SI_SH_REG_OFFSET, ib);
300 if (ib->gfx_level >= GFX11 && G_585_PWS_ENA(ib->ib[ib->cur_dw + 5])) {
301 ac_dump_reg(f, ib->gfx_level, R_580_ACQUIRE_MEM_PWS_2, ac_ib_get(ib), ~0);
302 print_named_value(f, "GCR_SIZE", ac_ib_get(ib), 32);
303 print_named_value(f, "GCR_SIZE_HI", ac_ib_get(ib), 25);
304 print_named_value(f, "GCR_BASE_LO", ac_ib_get(ib), 32);
305 print_named_value(f, "GCR_BASE_HI", ac_ib_get(ib), 32);
306 ac_dump_reg(f, ib->gfx_level, R_585_ACQUIRE_MEM_PWS_7, ac_ib_get(ib), ~0);
307 ac_dump_reg(f, ib->gfx_level, R_586_GCR_CNTL, ac_ib_get(ib), ~0);
310 ac_dump_reg(f, ib->gfx_level, R_0301F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
311 ac_dump_reg(f, ib->gfx_level, R_0301F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
312 ac_dump_reg(f, ib->gfx_level, R_030230_CP_COHER_SIZE_HI, ac_ib_get(ib), ~0);
313 ac_dump_reg(f, ib->gfx_level, R_0301F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
314 ac_dump_reg(f, ib->gfx_level, R_0301E4_CP_COHER_BASE_HI, ac_ib_get(ib), ~0);
315 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
316 if (ib->gfx_level >= GFX10)
317 ac_dump_reg(f, ib->gfx_level, R_586_GCR_CNTL, ac_ib_get(ib), ~0);
320 if (ib->gfx_level >= GFX7) {
321 ac_dump_reg(f, ib->gfx_level, R_0301F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
322 ac_dump_reg(f, ib->gfx_level, R_0301F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
323 ac_dump_reg(f, ib->gfx_level, R_0301F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
325 ac_dump_reg(f, ib->gfx_level, R_0085F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
326 ac_dump_reg(f, ib->gfx_level, R_0085F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
327 ac_dump_reg(f, ib->gfx_level, R_0085F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
329 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
332 uint32_t event_dw = ac_ib_get(ib);
333 ac_dump_reg(f, ib->gfx_level, R_028A90_VGT_EVENT_INITIATOR, event_dw,
338 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
339 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 16);
344 uint32_t event_dw = ac_ib_get(ib);
345 ac_dump_reg(f, ib->gfx_level, R_028A90_VGT_EVENT_INITIATOR, event_dw,
353 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
354 uint32_t addr_hi_dw = ac_ib_get(ib);
359 print_named_value(f, "DATA_LO", ac_ib_get(ib), 32);
360 print_named_value(f, "DATA_HI", ac_ib_get(ib), 32);
364 uint32_t event_dw = ac_ib_get(ib);
365 if (ib->gfx_level >= GFX10) {
366 ac_dump_reg(f, ib->gfx_level, R_490_RELEASE_MEM_OP, event_dw, ~0u);
368 ac_dump_reg(f, ib->gfx_level, R_028A90_VGT_EVENT_INITIATOR, event_dw,
380 uint32_t sel_dw = ac_ib_get(ib);
384 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
385 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 32);
386 print_named_value(f, "DATA_LO", ac_ib_get(ib), 32);
387 print_named_value(f, "DATA_HI", ac_ib_get(ib), 32);
388 print_named_value(f, "CTXID", ac_ib_get(ib), 32);
392 print_named_value(f, "OP", ac_ib_get(ib), 32);
393 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
394 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 32);
395 print_named_value(f, "REF", ac_ib_get(ib), 32);
396 print_named_value(f, "MASK", ac_ib_get(ib), 32);
397 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
400 ac_dump_reg(f, ib->gfx_level, R_030930_VGT_NUM_INDICES, ac_ib_get(ib), ~0);
401 ac_dump_reg(f, ib->gfx_level, R_0287F0_VGT_DRAW_INITIATOR, ac_ib_get(ib), ~0);
404 ac_dump_reg(f, ib->gfx_level, R_028A78_VGT_DMA_MAX_SIZE, ac_ib_get(ib), ~0);
405 ac_dump_reg(f, ib->gfx_level, R_0287E8_VGT_DMA_BASE, ac_ib_get(ib), ~0);
406 ac_dump_reg(f, ib->gfx_level, R_0287E4_VGT_DMA_BASE_HI, ac_ib_get(ib), ~0);
407 ac_dump_reg(f, ib->gfx_level, R_030930_VGT_NUM_INDICES, ac_ib_get(ib), ~0);
408 ac_dump_reg(f, ib->gfx_level, R_0287F0_VGT_DRAW_INITIATOR, ac_ib_get(ib), ~0);
411 ac_dump_reg(f, ib->gfx_level, R_028A7C_VGT_DMA_INDEX_TYPE, ac_ib_get(ib), ~0);
414 ac_dump_reg(f, ib->gfx_level, R_030934_VGT_NUM_INSTANCES, ac_ib_get(ib), ~0);
417 ac_dump_reg(f, ib->gfx_level, R_370_CONTROL, ac_ib_get(ib), ~0);
418 ac_dump_reg(f, ib->gfx_level, R_371_DST_ADDR_LO, ac_ib_get(ib), ~0);
419 ac_dump_reg(f, ib->gfx_level, R_372_DST_ADDR_HI, ac_ib_get(ib), ~0);
423 ac_dump_reg(f, ib->gfx_level, R_410_CP_DMA_WORD0, ac_ib_get(ib), ~0);
424 ac_dump_reg(f, ib->gfx_level, R_411_CP_DMA_WORD1, ac_ib_get(ib), ~0);
425 ac_dump_reg(f, ib->gfx_level, R_412_CP_DMA_WORD2, ac_ib_get(ib), ~0);
426 ac_dump_reg(f, ib->gfx_level, R_413_CP_DMA_WORD3, ac_ib_get(ib), ~0);
427 ac_dump_reg(f, ib->gfx_level, R_415_COMMAND, ac_ib_get(ib), ~0);
430 ac_dump_reg(f, ib->gfx_level, R_500_DMA_DATA_WORD0, ac_ib_get(ib), ~0);
431 ac_dump_reg(f, ib->gfx_level, R_501_SRC_ADDR_LO, ac_ib_get(ib), ~0);
432 ac_dump_reg(f, ib->gfx_level, R_502_SRC_ADDR_HI, ac_ib_get(ib), ~0);
433 ac_dump_reg(f, ib->gfx_level, R_503_DST_ADDR_LO, ac_ib_get(ib), ~0);
434 ac_dump_reg(f, ib->gfx_level, R_504_DST_ADDR_HI, ac_ib_get(ib), ~0);
435 ac_dump_reg(f, ib->gfx_level, R_415_COMMAND, ac_ib_get(ib), ~0);
440 uint32_t base_lo_dw = ac_ib_get(ib);
441 ac_dump_reg(f, ib->gfx_level, R_3F0_IB_BASE_LO, base_lo_dw, ~0);
442 uint32_t base_hi_dw = ac_ib_get(ib);
443 ac_dump_reg(f, ib->gfx_level, R_3F1_IB_BASE_HI, base_hi_dw, ~0);
444 uint32_t control_dw = ac_ib_get(ib);
445 ac_dump_reg(f, ib->gfx_level, R_3F2_IB_CONTROL, control_dw, ~0);
447 if (!ib->addr_callback)
451 void *data = ib->addr_callback(ib->addr_callback_data, addr);
456 ib->ib = data;
457 ib->num_dw = G_3F2_IB_SIZE(control_dw);
458 ib->cur_dw = 0;
463 memcpy(&ib_recurse, ib, sizeof(ib_recurse));
464 ib_recurse.ib = data;
468 if (*current_trace_id == *ib->trace_ids) {
488 } else if (count == 0 && ib->cur_dw < ib->num_dw && AC_IS_TRACE_POINT(ib->ib[ib->cur_dw])) {
489 unsigned packet_id = AC_GET_TRACE_POINT_ID(ib->ib[ib->cur_dw]);
494 if (!ib->trace_id_count)
500 if (packet_id < *ib->trace_ids) {
503 } else if (packet_id == *ib->trace_ids) {
507 } else if (packet_id + 1 == *ib->trace_ids) {
522 while (ib->cur_dw <= first_dw + count)
523 ac_ib_get(ib);
525 if (ib->cur_dw > first_dw + count + 1)
533 static void ac_do_parse_ib(FILE *f, struct ac_ib_parser *ib)
537 while (ib->cur_dw < ib->num_dw) {
538 uint32_t header = ac_ib_get(ib);
543 ac_parse_packet3(f, header, ib, ¤t_trace_id);
615 struct ac_ib_parser ib = {0};
616 ib.ib = ib_ptr;
617 ib.num_dw = num_dw;
618 ib.trace_ids = trace_ids;
619 ib.trace_id_count = trace_id_count;
620 ib.gfx_level = gfx_level;
621 ib.addr_callback = addr_callback;
622 ib.addr_callback_data = addr_callback_data;
629 ib.f = memf;
630 ac_do_parse_ib(memf, &ib);
638 if (ib.cur_dw > ib.num_dw) {
648 * \param ib IB
658 void ac_parse_ib(FILE *f, uint32_t *ib, int num_dw, const int *trace_ids, unsigned trace_id_count,
664 ac_parse_ib_chunk(f, ib, num_dw, trace_ids, trace_id_count, gfx_level, addr_callback,