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