mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-04 21:57:30 +00:00
perf annotate: Handle variables in 'sub', 'or' and many other instructions
Just like is done for 'mov' and others that can have as source or targets variables resolved by objdump, to make them more compact: - orb $0x4,0x224d71(%rip) # 226ca4 <_rtld_global+0xca4> + orb $0x4,_rtld_global+0xca4 Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jin Yao <yao.jin@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Martin Liška <mliska@suse.cz> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> Cc: Thomas Richter <tmricht@linux.vnet.ibm.com> Cc: Wang Nan <wangnan0@huawei.com> Link: https://lkml.kernel.org/n/tip-efex7746id4w4wa03nqxvh3m@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
43c4023152
commit
b0d5c81e87
1 changed files with 66 additions and 1 deletions
|
@ -1,21 +1,43 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
static struct ins x86__instructions[] = {
|
||||
{ .name = "adc", .ops = &mov_ops, },
|
||||
{ .name = "adcb", .ops = &mov_ops, },
|
||||
{ .name = "adcl", .ops = &mov_ops, },
|
||||
{ .name = "add", .ops = &mov_ops, },
|
||||
{ .name = "addl", .ops = &mov_ops, },
|
||||
{ .name = "addq", .ops = &mov_ops, },
|
||||
{ .name = "addsd", .ops = &mov_ops, },
|
||||
{ .name = "addw", .ops = &mov_ops, },
|
||||
{ .name = "and", .ops = &mov_ops, },
|
||||
{ .name = "andb", .ops = &mov_ops, },
|
||||
{ .name = "andl", .ops = &mov_ops, },
|
||||
{ .name = "andpd", .ops = &mov_ops, },
|
||||
{ .name = "andps", .ops = &mov_ops, },
|
||||
{ .name = "andq", .ops = &mov_ops, },
|
||||
{ .name = "andw", .ops = &mov_ops, },
|
||||
{ .name = "bsr", .ops = &mov_ops, },
|
||||
{ .name = "bt", .ops = &mov_ops, },
|
||||
{ .name = "btr", .ops = &mov_ops, },
|
||||
{ .name = "bts", .ops = &mov_ops, },
|
||||
{ .name = "btsq", .ops = &mov_ops, },
|
||||
{ .name = "call", .ops = &call_ops, },
|
||||
{ .name = "callq", .ops = &call_ops, },
|
||||
{ .name = "cmovbe", .ops = &mov_ops, },
|
||||
{ .name = "cmove", .ops = &mov_ops, },
|
||||
{ .name = "cmovae", .ops = &mov_ops, },
|
||||
{ .name = "cmp", .ops = &mov_ops, },
|
||||
{ .name = "cmpb", .ops = &mov_ops, },
|
||||
{ .name = "cmpl", .ops = &mov_ops, },
|
||||
{ .name = "cmpq", .ops = &mov_ops, },
|
||||
{ .name = "cmpw", .ops = &mov_ops, },
|
||||
{ .name = "cmpxch", .ops = &mov_ops, },
|
||||
{ .name = "cmpxchg", .ops = &mov_ops, },
|
||||
{ .name = "cs", .ops = &mov_ops, },
|
||||
{ .name = "dec", .ops = &dec_ops, },
|
||||
{ .name = "decl", .ops = &dec_ops, },
|
||||
{ .name = "divsd", .ops = &mov_ops, },
|
||||
{ .name = "divss", .ops = &mov_ops, },
|
||||
{ .name = "gs", .ops = &mov_ops, },
|
||||
{ .name = "imul", .ops = &mov_ops, },
|
||||
{ .name = "inc", .ops = &dec_ops, },
|
||||
{ .name = "incl", .ops = &dec_ops, },
|
||||
|
@ -57,25 +79,68 @@ static struct ins x86__instructions[] = {
|
|||
{ .name = "lea", .ops = &mov_ops, },
|
||||
{ .name = "lock", .ops = &lock_ops, },
|
||||
{ .name = "mov", .ops = &mov_ops, },
|
||||
{ .name = "movapd", .ops = &mov_ops, },
|
||||
{ .name = "movaps", .ops = &mov_ops, },
|
||||
{ .name = "movb", .ops = &mov_ops, },
|
||||
{ .name = "movdqa", .ops = &mov_ops, },
|
||||
{ .name = "movdqu", .ops = &mov_ops, },
|
||||
{ .name = "movl", .ops = &mov_ops, },
|
||||
{ .name = "movq", .ops = &mov_ops, },
|
||||
{ .name = "movsd", .ops = &mov_ops, },
|
||||
{ .name = "movslq", .ops = &mov_ops, },
|
||||
{ .name = "movss", .ops = &mov_ops, },
|
||||
{ .name = "movupd", .ops = &mov_ops, },
|
||||
{ .name = "movups", .ops = &mov_ops, },
|
||||
{ .name = "movw", .ops = &mov_ops, },
|
||||
{ .name = "movzbl", .ops = &mov_ops, },
|
||||
{ .name = "movzwl", .ops = &mov_ops, },
|
||||
{ .name = "mulsd", .ops = &mov_ops, },
|
||||
{ .name = "mulss", .ops = &mov_ops, },
|
||||
{ .name = "nop", .ops = &nop_ops, },
|
||||
{ .name = "nopl", .ops = &nop_ops, },
|
||||
{ .name = "nopw", .ops = &nop_ops, },
|
||||
{ .name = "or", .ops = &mov_ops, },
|
||||
{ .name = "orb", .ops = &mov_ops, },
|
||||
{ .name = "orl", .ops = &mov_ops, },
|
||||
{ .name = "orps", .ops = &mov_ops, },
|
||||
{ .name = "orq", .ops = &mov_ops, },
|
||||
{ .name = "pand", .ops = &mov_ops, },
|
||||
{ .name = "paddq", .ops = &mov_ops, },
|
||||
{ .name = "pcmpeqb", .ops = &mov_ops, },
|
||||
{ .name = "por", .ops = &mov_ops, },
|
||||
{ .name = "rclb", .ops = &mov_ops, },
|
||||
{ .name = "rcll", .ops = &mov_ops, },
|
||||
{ .name = "retq", .ops = &ret_ops, },
|
||||
{ .name = "sbb", .ops = &mov_ops, },
|
||||
{ .name = "sbbl", .ops = &mov_ops, },
|
||||
{ .name = "sete", .ops = &mov_ops, },
|
||||
{ .name = "sub", .ops = &mov_ops, },
|
||||
{ .name = "subl", .ops = &mov_ops, },
|
||||
{ .name = "subq", .ops = &mov_ops, },
|
||||
{ .name = "subsd", .ops = &mov_ops, },
|
||||
{ .name = "subw", .ops = &mov_ops, },
|
||||
{ .name = "test", .ops = &mov_ops, },
|
||||
{ .name = "testb", .ops = &mov_ops, },
|
||||
{ .name = "testl", .ops = &mov_ops, },
|
||||
{ .name = "ucomisd", .ops = &mov_ops, },
|
||||
{ .name = "ucomiss", .ops = &mov_ops, },
|
||||
{ .name = "vaddsd", .ops = &mov_ops, },
|
||||
{ .name = "vandpd", .ops = &mov_ops, },
|
||||
{ .name = "vmovdqa", .ops = &mov_ops, },
|
||||
{ .name = "vmovq", .ops = &mov_ops, },
|
||||
{ .name = "vmovsd", .ops = &mov_ops, },
|
||||
{ .name = "vmulsd", .ops = &mov_ops, },
|
||||
{ .name = "vorpd", .ops = &mov_ops, },
|
||||
{ .name = "vsubsd", .ops = &mov_ops, },
|
||||
{ .name = "vucomisd", .ops = &mov_ops, },
|
||||
{ .name = "xadd", .ops = &mov_ops, },
|
||||
{ .name = "xbeginl", .ops = &jump_ops, },
|
||||
{ .name = "xbeginq", .ops = &jump_ops, },
|
||||
{ .name = "retq", .ops = &ret_ops, },
|
||||
{ .name = "xchg", .ops = &mov_ops, },
|
||||
{ .name = "xor", .ops = &mov_ops, },
|
||||
{ .name = "xorb", .ops = &mov_ops, },
|
||||
{ .name = "xorpd", .ops = &mov_ops, },
|
||||
{ .name = "xorps", .ops = &mov_ops, },
|
||||
};
|
||||
|
||||
static bool x86__ins_is_fused(struct arch *arch, const char *ins1,
|
||||
|
|
Loading…
Add table
Reference in a new issue