Request for review (L): 6797305: Add LoadUB and LoadUI opcode class
Christian Thalinger
Christian.Thalinger at Sun.COM
Thu Feb 26 09:09:18 PST 2009
On Thu, 2009-02-26 at 09:02 -0800, Tom Rodriguez wrote:
> I haven't looked through all your changes yet but instead of using
> enc_class you can directly embed the encoding in the instruction like
> this:
>
> +// Load Short (16bit signed)
> +instruct loadS(eRegI dst, memory mem) %{
> + match(Set dst (LoadS mem));
> +
> + ins_cost(125);
> + format %{ "MOVSX $dst,$mem\t# short" %}
> +
> + ins_encode %{
> + Address Amem = Address::make_raw($mem$$base, $mem$$index, $mem$
> $scale, $mem$$disp);
> + Register Rdst = as_Register($dst$$reg);
> +
> + __ movswl(Rdst, Amem);
> + %}
> + ins_pipe(ialu_reg_mem);
> +%}
>
> This style automatically creates a MacroAssembler for you so you can
> just use __ directly. You can also say $dst$$Register instead of
> as_Register($dst$$reg). I have some changes somewhere that adds
> support for $mem$$Address which would make it possible to simply have:
>
> inc_encode %{
> __ movswl($dst$$Register, $mem$$Address)
> %}
>
> I think this style is a lot more readable than the enc_class stuff.
Much better :-) I'll change that.
>
> As far as sparc goes I wouldn't mind if they were changed to use the
> MacroAssembler too.
Well, I could change that, at least for the loads.
> Someday we'd like to convert all the inc_encodes
> to use MacroAssembler. If we were really slick we could derive the
> format from the ins_encode block too but that's for another day.
Yeah, that would be nice too.
-- Christian
More information about the hotspot-compiler-dev
mailing list