Lines Matching refs:ib

66    uint32_t *ib;
77 static void ac_do_parse_ib(FILE *f, struct ac_ib_parser *ib);
210 static uint32_t ac_ib_get(struct ac_ib_parser *ib)
214 if (ib->cur_dw < ib->num_dw) {
215 v = ib->ib[ib->cur_dw];
225 fprintf(ib->f, "%sValgrind: The next DWORD is garbage%s\n",
228 fprintf(ib->f, "\n\035#%08x ", v);
230 fprintf(ib->f, "\n\035#???????? ");
233 ib->cur_dw++;
238 struct ac_ib_parser *ib)
240 unsigned reg_dw = ac_ib_get(ib);
251 ac_dump_reg(f, ib->chip_class, reg + i * 4, ac_ib_get(ib), ~0);
254 static void ac_parse_packet3(FILE *f, uint32_t header, struct ac_ib_parser *ib,
257 unsigned first_dw = ib->cur_dw;
282 ac_parse_set_reg_packet(f, count, SI_CONTEXT_REG_OFFSET, ib);
285 ac_parse_set_reg_packet(f, count, SI_CONFIG_REG_OFFSET, ib);
289 ac_parse_set_reg_packet(f, count, CIK_UCONFIG_REG_OFFSET, ib);
292 ac_parse_set_reg_packet(f, count, SI_SH_REG_OFFSET, ib);
295 ac_dump_reg(f, ib->chip_class, R_0301F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
296 ac_dump_reg(f, ib->chip_class, R_0301F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
297 ac_dump_reg(f, ib->chip_class, R_030230_CP_COHER_SIZE_HI, ac_ib_get(ib), ~0);
298 ac_dump_reg(f, ib->chip_class, R_0301F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
299 ac_dump_reg(f, ib->chip_class, R_0301E4_CP_COHER_BASE_HI, ac_ib_get(ib), ~0);
300 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
301 if (ib->chip_class >= GFX10)
302 ac_dump_reg(f, ib->chip_class, R_586_GCR_CNTL, ac_ib_get(ib), ~0);
305 if (ib->chip_class >= GFX7) {
306 ac_dump_reg(f, ib->chip_class, R_0301F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
307 ac_dump_reg(f, ib->chip_class, R_0301F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
308 ac_dump_reg(f, ib->chip_class, R_0301F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
310 ac_dump_reg(f, ib->chip_class, R_0085F0_CP_COHER_CNTL, ac_ib_get(ib), ~0);
311 ac_dump_reg(f, ib->chip_class, R_0085F4_CP_COHER_SIZE, ac_ib_get(ib), ~0);
312 ac_dump_reg(f, ib->chip_class, R_0085F8_CP_COHER_BASE, ac_ib_get(ib), ~0);
314 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
317 uint32_t event_dw = ac_ib_get(ib);
318 ac_dump_reg(f, ib->chip_class, R_028A90_VGT_EVENT_INITIATOR, event_dw,
323 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
324 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 16);
329 uint32_t event_dw = ac_ib_get(ib);
330 ac_dump_reg(f, ib->chip_class, R_028A90_VGT_EVENT_INITIATOR, event_dw,
338 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
339 uint32_t addr_hi_dw = ac_ib_get(ib);
344 print_named_value(f, "DATA_LO", ac_ib_get(ib), 32);
345 print_named_value(f, "DATA_HI", ac_ib_get(ib), 32);
349 uint32_t event_dw = ac_ib_get(ib);
350 if (ib->chip_class >= GFX10) {
351 ac_dump_reg(f, ib->chip_class, R_490_RELEASE_MEM_OP, event_dw, ~0u);
353 ac_dump_reg(f, ib->chip_class, R_028A90_VGT_EVENT_INITIATOR, event_dw,
365 uint32_t sel_dw = ac_ib_get(ib);
369 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
370 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 32);
371 print_named_value(f, "DATA_LO", ac_ib_get(ib), 32);
372 print_named_value(f, "DATA_HI", ac_ib_get(ib), 32);
373 print_named_value(f, "CTXID", ac_ib_get(ib), 32);
377 print_named_value(f, "OP", ac_ib_get(ib), 32);
378 print_named_value(f, "ADDRESS_LO", ac_ib_get(ib), 32);
379 print_named_value(f, "ADDRESS_HI", ac_ib_get(ib), 32);
380 print_named_value(f, "REF", ac_ib_get(ib), 32);
381 print_named_value(f, "MASK", ac_ib_get(ib), 32);
382 print_named_value(f, "POLL_INTERVAL", ac_ib_get(ib), 16);
385 ac_dump_reg(f, ib->chip_class, R_030930_VGT_NUM_INDICES, ac_ib_get(ib), ~0);
386 ac_dump_reg(f, ib->chip_class, R_0287F0_VGT_DRAW_INITIATOR, ac_ib_get(ib), ~0);
389 ac_dump_reg(f, ib->chip_class, R_028A78_VGT_DMA_MAX_SIZE, ac_ib_get(ib), ~0);
390 ac_dump_reg(f, ib->chip_class, R_0287E8_VGT_DMA_BASE, ac_ib_get(ib), ~0);
391 ac_dump_reg(f, ib->chip_class, R_0287E4_VGT_DMA_BASE_HI, ac_ib_get(ib), ~0);
392 ac_dump_reg(f, ib->chip_class, R_030930_VGT_NUM_INDICES, ac_ib_get(ib), ~0);
393 ac_dump_reg(f, ib->chip_class, R_0287F0_VGT_DRAW_INITIATOR, ac_ib_get(ib), ~0);
396 ac_dump_reg(f, ib->chip_class, R_028A7C_VGT_DMA_INDEX_TYPE, ac_ib_get(ib), ~0);
399 ac_dump_reg(f, ib->chip_class, R_030934_VGT_NUM_INSTANCES, ac_ib_get(ib), ~0);
402 ac_dump_reg(f, ib->chip_class, R_370_CONTROL, ac_ib_get(ib), ~0);
403 ac_dump_reg(f, ib->chip_class, R_371_DST_ADDR_LO, ac_ib_get(ib), ~0);
404 ac_dump_reg(f, ib->chip_class, R_372_DST_ADDR_HI, ac_ib_get(ib), ~0);
408 ac_dump_reg(f, ib->chip_class, R_410_CP_DMA_WORD0, ac_ib_get(ib), ~0);
409 ac_dump_reg(f, ib->chip_class, R_411_CP_DMA_WORD1, ac_ib_get(ib), ~0);
410 ac_dump_reg(f, ib->chip_class, R_412_CP_DMA_WORD2, ac_ib_get(ib), ~0);
411 ac_dump_reg(f, ib->chip_class, R_413_CP_DMA_WORD3, ac_ib_get(ib), ~0);
412 ac_dump_reg(f, ib->chip_class, R_415_COMMAND, ac_ib_get(ib), ~0);
415 ac_dump_reg(f, ib->chip_class, R_500_DMA_DATA_WORD0, ac_ib_get(ib), ~0);
416 ac_dump_reg(f, ib->chip_class, R_501_SRC_ADDR_LO, ac_ib_get(ib), ~0);
417 ac_dump_reg(f, ib->chip_class, R_502_SRC_ADDR_HI, ac_ib_get(ib), ~0);
418 ac_dump_reg(f, ib->chip_class, R_503_DST_ADDR_LO, ac_ib_get(ib), ~0);
419 ac_dump_reg(f, ib->chip_class, R_504_DST_ADDR_HI, ac_ib_get(ib), ~0);
420 ac_dump_reg(f, ib->chip_class, R_415_COMMAND, ac_ib_get(ib), ~0);
425 uint32_t base_lo_dw = ac_ib_get(ib);
426 ac_dump_reg(f, ib->chip_class, R_3F0_IB_BASE_LO, base_lo_dw, ~0);
427 uint32_t base_hi_dw = ac_ib_get(ib);
428 ac_dump_reg(f, ib->chip_class, R_3F1_IB_BASE_HI, base_hi_dw, ~0);
429 uint32_t control_dw = ac_ib_get(ib);
430 ac_dump_reg(f, ib->chip_class, R_3F2_IB_CONTROL, control_dw, ~0);
432 if (!ib->addr_callback)
436 void *data = ib->addr_callback(ib->addr_callback_data, addr);
441 ib->ib = data;
442 ib->num_dw = G_3F2_IB_SIZE(control_dw);
443 ib->cur_dw = 0;
448 memcpy(&ib_recurse, ib, sizeof(ib_recurse));
449 ib_recurse.ib = data;
453 if (*current_trace_id == *ib->trace_ids) {
473 } else if (count == 0 && ib->cur_dw < ib->num_dw && AC_IS_TRACE_POINT(ib->ib[ib->cur_dw])) {
474 unsigned packet_id = AC_GET_TRACE_POINT_ID(ib->ib[ib->cur_dw]);
479 if (!ib->trace_id_count)
485 if (packet_id < *ib->trace_ids) {
488 } else if (packet_id == *ib->trace_ids) {
492 } else if (packet_id + 1 == *ib->trace_ids) {
507 while (ib->cur_dw <= first_dw + count)
508 ac_ib_get(ib);
510 if (ib->cur_dw > first_dw + count + 1)
518 static void ac_do_parse_ib(FILE *f, struct ac_ib_parser *ib)
522 while (ib->cur_dw < ib->num_dw) {
523 uint32_t header = ac_ib_get(ib);
528 ac_parse_packet3(f, header, ib, &current_trace_id);
600 struct ac_ib_parser ib = {0};
601 ib.ib = ib_ptr;
602 ib.num_dw = num_dw;
603 ib.trace_ids = trace_ids;
604 ib.trace_id_count = trace_id_count;
605 ib.chip_class = chip_class;
606 ib.addr_callback = addr_callback;
607 ib.addr_callback_data = addr_callback_data;
614 ib.f = memf;
615 ac_do_parse_ib(memf, &ib);
623 if (ib.cur_dw > ib.num_dw) {
633 * \param ib IB
643 void ac_parse_ib(FILE *f, uint32_t *ib, int num_dw, const int *trace_ids, unsigned trace_id_count,
649 ac_parse_ib_chunk(f, ib, num_dw, trace_ids, trace_id_count, chip_class, addr_callback,