Lines Matching defs:spm_trace

32 ac_spm_get_block_select(struct ac_spm_trace_data *spm_trace,
38 for (uint32_t i = 0; i < spm_trace->num_block_sel; i++) {
39 if (spm_trace->block_sel[i].b->b->b->gpu_block == block->b->b->gpu_block)
40 return &spm_trace->block_sel[i];
44 num_block_sel = spm_trace->num_block_sel + 1;
45 block_sel = realloc(spm_trace->block_sel, num_block_sel * sizeof(*block_sel));
49 spm_trace->num_block_sel = num_block_sel;
50 spm_trace->block_sel = block_sel;
53 new_block_sel = &spm_trace->block_sel[spm_trace->num_block_sel - 1];
84 ac_spm_map_counter(struct ac_spm_trace_data *spm_trace,
90 for (unsigned i = 0; i < ARRAY_SIZE(spm_trace->sq_block_sel); i++) {
91 struct ac_spm_block_select *sq_block_sel = &spm_trace->sq_block_sel[i];
93 if (i < spm_trace->num_used_sq_block_sel)
108 spm_trace->num_used_sq_block_sel++;
157 struct ac_spm_trace_data *spm_trace,
184 counter = &spm_trace->counters[spm_trace->num_counters];
185 spm_trace->num_counters++;
192 block_sel = ac_spm_get_block_select(spm_trace, block);
197 if (!ac_spm_map_counter(spm_trace, block_sel, counter, &spm_wire)) {
219 struct ac_spm_trace_data *spm_trace)
221 spm_trace->counters = CALLOC(num_counters, sizeof(*spm_trace->counters));
222 if (!spm_trace->counters)
226 if (!ac_spm_add_counter(pc, spm_trace, &counters[i])) {
242 for (unsigned c = 0; c < spm_trace->num_counters; c++) {
243 struct ac_spm_counter_info *counter = &spm_trace->counters[c];
262 spm_trace->muxsel_lines[s] = CALLOC(num_lines, sizeof(*spm_trace->muxsel_lines[s]));
263 if (!spm_trace->muxsel_lines[s])
265 spm_trace->num_muxsel_lines[s] = num_lines;
279 if (!spm_trace->muxsel_lines[s])
284 segment_offset += spm_trace->num_muxsel_lines[ordered_segment[i]] *
301 spm_trace->muxsel_lines[s][even_line_idx].muxsel[even_counter_idx++] = global_timestamp_muxsel;
305 for (unsigned i = 0; i < spm_trace->num_counters; i++) {
306 struct ac_spm_counter_info *counter = &spm_trace->counters[i];
315 spm_trace->muxsel_lines[s][even_line_idx].muxsel[even_counter_idx] = spm_trace->counters[i].muxsel;
324 spm_trace->muxsel_lines[s][odd_line_idx].muxsel[odd_counter_idx] = spm_trace->counters[i].muxsel;
336 void ac_destroy_spm(struct ac_spm_trace_data *spm_trace)
339 FREE(spm_trace->muxsel_lines[s]);
341 FREE(spm_trace->block_sel);
342 FREE(spm_trace->counters);
345 uint32_t ac_spm_get_sample_size(const struct ac_spm_trace_data *spm_trace)
350 sample_size += spm_trace->num_muxsel_lines[s] * AC_SPM_MUXSEL_LINE_SIZE * 4;
356 uint32_t ac_spm_get_num_samples(const struct ac_spm_trace_data *spm_trace)
358 uint32_t sample_size = ac_spm_get_sample_size(spm_trace);
359 uint32_t *ptr = (uint32_t *)spm_trace->ptr;