Request for review (L): 6797305: Add LoadUB and LoadUI opcode class
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Fri Mar 6 10:18:00 PST 2009
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.
Vladimir
Christian Thalinger wrote:
> On Fri, 2009-03-06 at 09:38 -0800, Vladimir Kozlov wrote:
>> Is this
>>
>> Is it possible that matcher is confused by the cost?
>> You changed the cost of ConvI2L:
>>
>> instruct convI2L_reg( eRegL dst, eRegI src, eFlagsReg cr) %{
>> match(Set dst (ConvI2L src));
>> effect(KILL cr);
>> + ins_cost(375);
>>
>> and cost of "ConvI2L (LoadUB" is lower:
>>
>> ! instruct loadUB2L(eRegL dst, memory mem)
>> ! %{
>> ! match(Set dst (ConvI2L (LoadUB mem)));
>> !
>> ! ins_cost(250);
>
> Ahh, sorry, I didn't mention that this happens on x86_64. I just wonder
> why the matcher matches the rule when there is no LoadB that could be
> matched. If I remove that instruction, then the next is matched:
>
> match(Set dst (ConvI2L (LoadUB mem)));
>
> -- Christian
>
More information about the hotspot-compiler-dev
mailing list