Request for review (L): 6797305: Add LoadUB and LoadUI opcode class

Christian Thalinger Christian.Thalinger at Sun.COM
Fri Mar 6 11:00:20 PST 2009


On Fri, 2009-03-06 at 10:29 -0800, Tom Rodriguez wrote:
> I'm very confused by your explanation of what's going wrong.   
> Originally you said:

Okay, sorry.  Trying to rephrase.

> 
> mm, JPRT failed and it seems there is a matcher problem.  It matches:
> 
>   match(Set dst (ConvI2L (LoadUB mem)));
> 
> instead of:
> 
>   match(Set dst (ConvI2L src));
> 
> But there is no LoadUB node around.  Are there any matcher restrictions
> that I don't know about?
> 
> But below you say that if you remove that instruction it matches the  
> ConvI2L LoadUB pattern so which one did it do?  Also what is "that  
> instruction"?  What kind of node is src if it's not a LoadUB?

It matches the loadB2L instruction in x86_64.ad and I meant loadB2L by
"that instruction".  But when I comment loadB2L it simply matches the
next one, and that is loadUB2L.

> What kind of node is src if it's not a LoadUB?

Good question.  The correct instruction generated by unmodified HotSpot
is:

029     movslq  R10, [RSP + #0 (32-bit)]        # i2l

and the corresponding store before is:

019     movl    [rsp + #0], RSI # spill

So I think src is a Param (if that's a valid node).

-- Christian




More information about the hotspot-compiler-dev mailing list