Request for review (L): 6797305: Add LoadUB and LoadUI opcode class
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Fri Mar 6 12:19:54 PST 2009
I think the problem is in MatchNode::cisc_spill_match in
formssel.cpp. It appears to be selecting these new instructions as
cisc spill variants without checking that the intermediate load
operations match the size of the spill operation. If you look in
ad_x86_64.cpp it dumps a big list of the cisc spill variants and you
can see that it's selecting the byte sized variant instead of the int
sized one.
Didn't you reorder the instruct definitions? I think the cisc spill
matching selects the first one it sees and it's possible that now it's
finding the LoadB variant. Anyway, I think cisc_spill_match should be
fixed to handle this correctly.
tom
On Mar 6, 2009, at 11:31 AM, Christian Thalinger wrote:
> On Fri, 2009-03-06 at 10:18 -0800, Vladimir Kozlov wrote:
>> Matcher definitely should not do this but it could be confused since
>> all LoadB mem, LoadUB mem, LoadI mem produce the same RegI register
>> and it takes first one defined in generated/adfiles/dfa_x86_64.cpp
>> in State::_sub_Op_ConvI2L(const Node *n) method.
>
> Maybe the problem this (in ad_x86_64.hpp):
>
> class loadB2LNode : public MachNode {
> ...
> virtual int ideal_Opcode() const { return Op_ConvI2L; }
>
> But I'm just guessing...
>
> -- Christian
>
More information about the hotspot-compiler-dev
mailing list