Lines Matching refs:record

111 	void (*ds_synth)(const struct arm_spe_record *record,
322 static struct simd_flags arm_spe__synth_simd_flags(const struct arm_spe_record *record) in arm_spe__synth_simd_flags() argument
326 if ((record->op & ARM_SPE_OP_LDST) && (record->op & ARM_SPE_OP_SVE_LDST)) in arm_spe__synth_simd_flags()
329 if ((record->op & ARM_SPE_OP_OTHER) && (record->op & ARM_SPE_OP_SVE_OTHER)) in arm_spe__synth_simd_flags()
332 if (record->type & ARM_SPE_SVE_PARTIAL_PRED) in arm_spe__synth_simd_flags()
335 if (record->type & ARM_SPE_SVE_EMPTY_PRED) in arm_spe__synth_simd_flags()
346 struct arm_spe_record *record = &speq->decoder->record; in arm_spe_prep_sample() local
349 sample->time = tsc_to_perf_time(record->timestamp, &spe->tc); in arm_spe_prep_sample()
351 sample->ip = record->from_ip; in arm_spe_prep_sample()
357 sample->simd_flags = arm_spe__synth_simd_flags(record); in arm_spe_prep_sample()
367 struct arm_spe_record *record = &speq->decoder->record; in arm_spe__prep_branch_stack() local
372 bool have_pbt = last_branch_sz >= (have_tgt + 1U) && record->prev_br_tgt; in arm_spe__prep_branch_stack()
384 bstack->entries[i].from = record->from_ip; in arm_spe__prep_branch_stack()
385 bstack->entries[i].to = record->to_ip; in arm_spe__prep_branch_stack()
390 if (record->op & ARM_SPE_OP_BR_CR_BL) { in arm_spe__prep_branch_stack()
391 if (record->op & ARM_SPE_OP_BR_COND) in arm_spe__prep_branch_stack()
399 } else if (record->op & ARM_SPE_OP_BR_CR_RET || in arm_spe__prep_branch_stack()
400 record->op & ARM_SPE_OP_BR_INDIRECT) { in arm_spe__prep_branch_stack()
401 if (record->op & ARM_SPE_OP_BR_COND) in arm_spe__prep_branch_stack()
405 } else if (record->op & ARM_SPE_OP_BR_CR_NON_BL_RET) { in arm_spe__prep_branch_stack()
406 if (record->op & ARM_SPE_OP_BR_COND) in arm_spe__prep_branch_stack()
411 if (record->op & ARM_SPE_OP_BR_COND) in arm_spe__prep_branch_stack()
417 if (record->type & ARM_SPE_BRANCH_MISS) { in arm_spe__prep_branch_stack()
425 if (record->type & ARM_SPE_BRANCH_NOT_TAKEN) in arm_spe__prep_branch_stack()
428 if (record->type & ARM_SPE_IN_TXN) in arm_spe__prep_branch_stack()
431 bs_flags->cycles = min(record->latency, 0xFFFFU); in arm_spe__prep_branch_stack()
438 bstack->entries[i].to = record->prev_br_tgt; in arm_spe__prep_branch_stack()
477 struct arm_spe_record *record = &speq->decoder->record; in arm_spe__synth_mem_sample() local
487 sample.addr = record->virt_addr; in arm_spe__synth_mem_sample()
488 sample.phys_addr = record->phys_addr; in arm_spe__synth_mem_sample()
490 sample.weight = record->latency; in arm_spe__synth_mem_sample()
501 struct arm_spe_record *record = &speq->decoder->record; in arm_spe__synth_branch_sample() local
511 sample.addr = record->to_ip; in arm_spe__synth_branch_sample()
512 sample.weight = record->latency; in arm_spe__synth_branch_sample()
525 struct arm_spe_record *record = &speq->decoder->record; in arm_spe__synth_instruction_sample() local
543 sample.addr = record->to_ip; in arm_spe__synth_instruction_sample()
544 sample.phys_addr = record->phys_addr; in arm_spe__synth_instruction_sample()
547 sample.weight = record->latency; in arm_spe__synth_instruction_sample()
581 const struct arm_spe_record *record = &speq->decoder->record; in arm_spe__sample_flags() local
584 if (record->op & ARM_SPE_OP_BRANCH_ERET) { in arm_spe__sample_flags()
587 if (record->type & ARM_SPE_BRANCH_MISS) in arm_spe__sample_flags()
590 if (record->type & ARM_SPE_BRANCH_NOT_TAKEN) in arm_spe__sample_flags()
593 if (record->type & ARM_SPE_IN_TXN) in arm_spe__sample_flags()
596 if (record->op & ARM_SPE_OP_BR_COND) in arm_spe__sample_flags()
599 if (record->op & ARM_SPE_OP_BR_CR_BL) in arm_spe__sample_flags()
601 else if (record->op & ARM_SPE_OP_BR_CR_RET) in arm_spe__sample_flags()
607 else if (record->op & ARM_SPE_OP_BR_INDIRECT) in arm_spe__sample_flags()
612 static void arm_spe__synth_data_source_common(const struct arm_spe_record *record, in arm_spe__synth_data_source_common() argument
627 if (record->op & ARM_SPE_OP_ST) { in arm_spe__synth_data_source_common()
634 switch (record->source) { in arm_spe__synth_data_source_common()
692 static void arm_spe__synth_data_source_ampereone(const struct arm_spe_record *record, in arm_spe__synth_data_source_ampereone() argument
697 switch (record->source) { in arm_spe__synth_data_source_ampereone()
718 record->source); in arm_spe__synth_data_source_ampereone()
722 common_record.op = record->op; in arm_spe__synth_data_source_ampereone()
726 static void arm_spe__synth_data_source_hisi_hip(const struct arm_spe_record *record, in arm_spe__synth_data_source_hisi_hip() argument
730 if (record->op & ARM_SPE_OP_ST) { in arm_spe__synth_data_source_hisi_hip()
731 arm_spe__synth_data_source_common(record, data_src); in arm_spe__synth_data_source_hisi_hip()
735 switch (record->source) { in arm_spe__synth_data_source_hisi_hip()
822 static void arm_spe__synth_memory_level(const struct arm_spe_record *record, in arm_spe__synth_memory_level() argument
825 if (record->type & (ARM_SPE_LLC_ACCESS | ARM_SPE_LLC_MISS)) { in arm_spe__synth_memory_level()
828 if (record->type & ARM_SPE_LLC_MISS) in arm_spe__synth_memory_level()
832 } else if (record->type & (ARM_SPE_L1D_ACCESS | ARM_SPE_L1D_MISS)) { in arm_spe__synth_memory_level()
835 if (record->type & ARM_SPE_L1D_MISS) in arm_spe__synth_memory_level()
841 if (record->type & ARM_SPE_REMOTE_ACCESS) in arm_spe__synth_memory_level()
846 const struct arm_spe_record *record, in arm_spe__synth_ds() argument
886 data_source_handles[i].ds_synth(record, data_src); in arm_spe__synth_ds()
895 const struct arm_spe_record *record) in arm_spe__synth_data_source() argument
900 if (!is_ldst_op(record->op)) in arm_spe__synth_data_source()
903 if (record->op & ARM_SPE_OP_LD) in arm_spe__synth_data_source()
905 else if (record->op & ARM_SPE_OP_ST) in arm_spe__synth_data_source()
910 if (!arm_spe__synth_ds(speq, record, &data_src)) in arm_spe__synth_data_source()
911 arm_spe__synth_memory_level(record, &data_src); in arm_spe__synth_data_source()
913 if (record->type & (ARM_SPE_TLB_ACCESS | ARM_SPE_TLB_MISS)) { in arm_spe__synth_data_source()
916 if (record->type & ARM_SPE_TLB_MISS) in arm_spe__synth_data_source()
927 const struct arm_spe_record *record = &speq->decoder->record; in arm_spe_sample() local
933 data_src = arm_spe__synth_data_source(speq, record); in arm_spe_sample()
936 if (record->type & ARM_SPE_L1D_MISS) { in arm_spe_sample()
943 if (record->type & ARM_SPE_L1D_ACCESS) { in arm_spe_sample()
952 if (record->type & ARM_SPE_LLC_MISS) { in arm_spe_sample()
959 if (record->type & ARM_SPE_LLC_ACCESS) { in arm_spe_sample()
968 if (record->type & ARM_SPE_TLB_MISS) { in arm_spe_sample()
975 if (record->type & ARM_SPE_TLB_ACCESS) { in arm_spe_sample()
987 if (spe->sample_branch && (record->op & ARM_SPE_OP_BRANCH_ERET)) { in arm_spe_sample()
994 (record->type & ARM_SPE_REMOTE_ACCESS)) { in arm_spe_sample()
1005 if (spe->sample_memory && is_ldst_op(record->op)) { in arm_spe_sample()
1023 struct arm_spe_record *record; in arm_spe_run_decoder() local
1053 record = &speq->decoder->record; in arm_spe_run_decoder()
1054 if (!spe->timeless_decoding && record->context_id != (u64)-1) { in arm_spe_run_decoder()
1055 ret = arm_spe_set_tid(speq, record->context_id); in arm_spe_run_decoder()
1079 record = &speq->decoder->record; in arm_spe_run_decoder()
1082 if (record->timestamp > speq->timestamp) in arm_spe_run_decoder()
1083 speq->timestamp = record->timestamp; in arm_spe_run_decoder()
1104 struct arm_spe_record *record; in arm_spe__setup_queue() local
1134 record = &speq->decoder->record; in arm_spe__setup_queue()
1136 speq->timestamp = record->timestamp; in arm_spe__setup_queue()