perf disasm: Add e_machine/e_flags to struct archCurrently functions like get_dwarf_regnum only work with the hostarchitecture. Carry the elf machine and flags in struct arch so thatin disassembl
perf disasm: Add e_machine/e_flags to struct archCurrently functions like get_dwarf_regnum only work with the hostarchitecture. Carry the elf machine and flags in struct arch so thatin disassembly these can be used to allow cross platform disassembly.Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>Signed-off-by: Ian Rogers <irogers@google.com>Cc: Anup Patel <anup@brainfault.org>Cc: Yang Jihong <yangjihong@bytedance.com>Cc: Palmer Dabbelt <palmer@dabbelt.com>Cc: David S. Miller <davem@davemloft.net>Cc: Albert Ou <aou@eecs.berkeley.edu>Cc: Shenlin Liang <liangshenlin@eswincomputing.com>Cc: Nick Terrell <terrelln@fb.com>Cc: Guilherme Amadio <amadio@gentoo.org>Cc: Steinar H. Gunderson <sesse@google.com>Cc: Changbin Du <changbin.du@huawei.com>Cc: Alexander Lobakin <aleksander.lobakin@intel.com>Cc: Przemek Kitszel <przemyslaw.kitszel@intel.com>Cc: Huacai Chen <chenhuacai@kernel.org>Cc: Guo Ren <guoren@kernel.org>Cc: Masahiro Yamada <masahiroy@kernel.org>Cc: Will Deacon <will@kernel.org>Cc: James Clark <james.clark@linaro.org>Cc: Mike Leach <mike.leach@linaro.org>Cc: Chen Pei <cp0613@linux.alibaba.com>Cc: Leo Yan <leo.yan@linux.dev>Cc: Oliver Upton <oliver.upton@linux.dev>Cc: Aditya Gupta <adityag@linux.ibm.com>Cc: Kajol Jain <kjain@linux.ibm.com>Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>Cc: linux-arm-kernel@lists.infradead.orgCc: linux-riscv@lists.infradead.orgCc: Bibo Mao <maobibo@loongson.cn>Cc: John Garry <john.g.garry@oracle.com>Cc: Atish Patra <atishp@rivosinc.com>Cc: Dima Kogan <dima@secretsauce.net>Cc: Paul Walmsley <paul.walmsley@sifive.com>Cc: Dr. David Alan Gilbert <linux@treblig.org>Cc: linux-csky@vger.kernel.orgLink: https://lore.kernel.org/r/20241108234606.429459-5-irogers@google.comSigned-off-by: Namhyung Kim <namhyung@kernel.org>
show more ...
perf annotate: Update parameters for reg extract functions to use raw instruction on powerpcUse the raw instruction code and macros to identify memory instructions,extract register fields and also
perf annotate: Update parameters for reg extract functions to use raw instruction on powerpcUse the raw instruction code and macros to identify memory instructions,extract register fields and also offset.The implementation addresses the D-form, X-form, DS-form instructions.Adds "mem_ref" field to check whether source/target has memoryreference.Add function "get_powerpc_regs" which will set these fields: reg1, reg2,offset depending of where it is source or target ops.Update "parse" callback for "struct ins_ops" to also pass "structdisasm_line" as argument. This is needed in parse functions where opcodeis used to determine whether to set multi_regs and other fieldsReviewed-by: Kajol Jain <kjain@linux.ibm.com>Reviewed-by: Namhyung Kim <namhyung@kernel.org>Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>Tested-by: Kajol Jain <kjain@linux.ibm.com>Cc: Adrian Hunter <adrian.hunter@intel.com>Cc: Akanksha J N <akanksha@linux.ibm.com>Cc: Christophe Leroy <christophe.leroy@csgroup.eu>Cc: Disha Goel <disgoel@linux.vnet.ibm.com>Cc: Hari Bathini <hbathini@linux.ibm.com>Cc: Ian Rogers <irogers@google.com>Cc: Jiri Olsa <jolsa@kernel.org>Cc: Madhavan Srinivasan <maddy@linux.ibm.com>Cc: Segher Boessenkool <segher@kernel.crashing.org>Link: https://lore.kernel.org/lkml/20240718084358.72242-7-atrajeev@linux.vnet.ibm.comSigned-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
perf annotate: Move raw_comment and raw_func_start fields out of 'struct ins_operands'Thoese two fields are used only for the jump_ops, so move them into theunion to save some bytes. Also add jum
perf annotate: Move raw_comment and raw_func_start fields out of 'struct ins_operands'Thoese two fields are used only for the jump_ops, so move them into theunion to save some bytes. Also add jump__delete() callback not to freethe fields as they didn't allocate new strings.Signed-off-by: Namhyung Kim <namhyung@kernel.org>Cc: Adrian Hunter <adrian.hunter@intel.com>Cc: Andi Kleen <ak@linux.intel.com>Cc: Huacai Chen <chenhuacai@kernel.org>Cc: Ian Rogers <irogers@google.com>Cc: Ingo Molnar <mingo@kernel.org>Cc: Jiri Olsa <jolsa@kernel.org>Cc: Linus Torvalds <torvalds@linux-foundation.org>Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org>Cc: Peter Zijlstra <peterz@infradead.org>Cc: Stephane Eranian <eranian@google.com>Cc: WANG Rui <wangrui@loongson.cn>Cc: linux-toolchains@vger.kernel.orgCc: linux-trace-devel@vger.kernel.orgLink: https://lore.kernel.org/r/20231110000012.3538610-3-namhyung@kernel.orgSigned-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
perf annotate: Fix instruction association and parsing for LoongArchIn the perf annotate view for LoongArch, there is no arrowed linepointing to the target from the branch instruction. This issue
perf annotate: Fix instruction association and parsing for LoongArchIn the perf annotate view for LoongArch, there is no arrowed linepointing to the target from the branch instruction. This issue iscaused by incorrect instruction association and parsing.$ perf record alloc-6276705c94ad1398 # rust benchmark$ perf report 0.28 │ ori $a1, $zero, 0x63 │ move $a2, $zero 10.55 │ addi.d $a3, $a2, 1(0x1) │ sltu $a4, $a3, $s7 9.53 │ masknez $a4, $s7, $a4 │ sub.d $a3, $a3, $a4 12.12 │ st.d $a1, $fp, 24(0x18) │ st.d $a3, $fp, 16(0x10) 16.29 │ slli.d $a2, $a2, 0x2 │ ldx.w $a2, $s8, $a2 12.77 │ st.w $a2, $sp, 724(0x2d4) │ st.w $s0, $sp, 720(0x2d0) 7.03 │ addi.d $a2, $sp, 720(0x2d0) │ addi.d $a1, $a1, -1(0xfff) 12.03 │ move $a2, $a3 │ → bne $a1, $s3, -52(0x3ffcc) # 82ce8 <test::bench::Bencher::iter+0x3f4> 2.50 │ addi.d $a0, $a0, 1(0x1)This patch fixes instruction association issues, such as associatingbranch instructions with jump_ops instead of call_ops, and correctsfalse instruction matches. It also implements branch instruction parsingspecifically for LoongArch. With this patch, we will be able to see thearrowed line. 0.79 │3ec: ori $a1, $zero, 0x63 │ move $a2, $zero 10.32 │3f4:┌─→addi.d $a3, $a2, 1(0x1) │ │ sltu $a4, $a3, $s7 10.44 │ │ masknez $a4, $s7, $a4 │ │ sub.d $a3, $a3, $a4 14.17 │ │ st.d $a1, $fp, 24(0x18) │ │ st.d $a3, $fp, 16(0x10) 13.15 │ │ slli.d $a2, $a2, 0x2 │ │ ldx.w $a2, $s8, $a2 11.00 │ │ st.w $a2, $sp, 724(0x2d4) │ │ st.w $s0, $sp, 720(0x2d0) 8.00 │ │ addi.d $a2, $sp, 720(0x2d0) │ │ addi.d $a1, $a1, -1(0xfff) 11.99 │ │ move $a2, $a3 │ └──bne $a1, $s3, 3f4 3.17 │ addi.d $a0, $a0, 1(0x1)Signed-off-by: WANG Rui <wangrui@loongson.cn>Acked-by: Namhyung Kim <namhyung@kernel.org>Cc: Mark Rutland <mark.rutland@arm.com>Cc: Peter Zijlstra <peterz@infradead.org>Cc: Arnaldo Carvalho de Melo <acme@kernel.org>Cc: Jiri Olsa <jolsa@kernel.org>Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>Cc: loongarch@lists.linux.devCc: loongson-kernel@lists.loongnix.cnCc: Huacai Chen <chenhuacai@loongson.cn>Cc: Tiezhu Yang <yangtiezhu@loongson.cn>Cc: Ingo Molnar <mingo@redhat.com>Cc: WANG Xuerui <kernel@xen0n.name>Link: https://lore.kernel.org/r/20230620132025.105563-1-wangrui@loongson.cnSigned-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf: Add basic support for LoongArchAdd basic support for LoongArch, which is very similar to the MIPSversion.Signed-off-by: Ming Wang <wangming01@loongson.cn>Signed-off-by: Huacai Chen
tools/perf: Add basic support for LoongArchAdd basic support for LoongArch, which is very similar to the MIPSversion.Signed-off-by: Ming Wang <wangming01@loongson.cn>Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>