All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-perf-users@vger.kernel.org, Andi Kleen <ak@linux.intel.com>,
	Kan Liang <kan.liang@linux.intel.com>
Subject: Re: [PATCH v2 1/2] perf annotate: Handle x86 instruction suffix generally
Date: Tue, 6 Jun 2023 15:00:06 -0300	[thread overview]
Message-ID: <ZH90JspD7JP7i1LZ@kernel.org> (raw)
In-Reply-To: <20230606230658.c1b478f905c82a9f7005034d@kernel.org>

Em Tue, Jun 06, 2023 at 11:06:58PM +0900, Masami Hiramatsu escreveu:
> On Wed, 24 May 2023 13:50:53 -0700
> Namhyung Kim <namhyung@kernel.org> wrote:
> 
> > In AT&T asm syntax, most of x86 instructions can have size suffix like
> > b, w, l or q.  Instead of adding all these instructions in the table,
> > we can handle them in a general way.
> > 
> > For example, it can try to find an instruction as is.  If not found,
> > assuming it has a suffix and it'd try again without the suffix if it's
> > one of the allowed suffixes.  This way, we can reduce the instruction
> > table size for duplicated entries of the same instructions with a
> > different suffix.
> > 
> > If an instruction xyz and others like xyz<suffix> are completely
> > different ones, then they both need to be listed in the table so that
> > they can be found before the second attempt (without the suffix).
> 
> Looks good to me.
> 
> Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>

Thanks, applied both patches.

- Arnaldo

 
> > 
> > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> > ---
> >  tools/perf/util/annotate.c | 22 ++++++++++++++++++++++
> >  1 file changed, 22 insertions(+)
> > 
> > diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> > index b708bbc49c9e..7f05f2a2aa83 100644
> > --- a/tools/perf/util/annotate.c
> > +++ b/tools/perf/util/annotate.c
> > @@ -70,6 +70,7 @@ struct arch {
> >  	struct ins_ops  *(*associate_instruction_ops)(struct arch *arch, const char *name);
> >  	bool		sorted_instructions;
> >  	bool		initialized;
> > +	const char	*insn_suffix;
> >  	void		*priv;
> >  	unsigned int	model;
> >  	unsigned int	family;
> > @@ -179,6 +180,7 @@ static struct arch architectures[] = {
> >  		.init = x86__annotate_init,
> >  		.instructions = x86__instructions,
> >  		.nr_instructions = ARRAY_SIZE(x86__instructions),
> > +		.insn_suffix = "bwlq",
> >  		.objdump =  {
> >  			.comment_char = '#',
> >  		},
> > @@ -720,6 +722,26 @@ static struct ins_ops *__ins__find(struct arch *arch, const char *name)
> >  	}
> >  
> >  	ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
> > +	if (ins)
> > +		return ins->ops;
> > +
> > +	if (arch->insn_suffix) {
> > +		char tmp[32];
> > +		char suffix;
> > +		size_t len = strlen(name);
> > +
> > +		if (len == 0 || len >= sizeof(tmp))
> > +			return NULL;
> > +
> > +		suffix = name[len - 1];
> > +		if (strchr(arch->insn_suffix, suffix) == NULL)
> > +			return NULL;
> > +
> > +		strcpy(tmp, name);
> > +		tmp[len - 1] = '\0'; /* remove the suffix and check again */
> > +
> > +		ins = bsearch(tmp, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
> > +	}
> >  	return ins ? ins->ops : NULL;
> >  }
> >  
> > -- 
> > 2.41.0.rc0.172.g3f132b7071-goog
> > 
> 
> 
> -- 
> Masami Hiramatsu (Google) <mhiramat@kernel.org>

-- 

- Arnaldo

      reply	other threads:[~2023-06-06 18:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-24 20:50 [PATCH v2 1/2] perf annotate: Handle x86 instruction suffix generally Namhyung Kim
2023-05-24 20:50 ` [PATCH v2 2/2] perf annotate: Remove x86 instructions with suffix Namhyung Kim
2023-05-25  5:21   ` Adrian Hunter
2023-06-06 14:07   ` Masami Hiramatsu
2023-05-25  5:21 ` [PATCH v2 1/2] perf annotate: Handle x86 instruction suffix generally Adrian Hunter
2023-06-05 23:56   ` Namhyung Kim
2023-06-06 14:06 ` Masami Hiramatsu
2023-06-06 18:00   ` Arnaldo Carvalho de Melo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZH90JspD7JP7i1LZ@kernel.org \
    --to=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.