Request for reviews .03 (L): 6814842: Load shortening optimizations
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Tue May 12 10:38:59 PDT 2009
It could be solved by using next restriction on indOffset13m7:
predicate((-4096L <= (n->get_long())) && ((n->get_long() + 7L) <= 4095L));
Vladimir
Vladimir Kozlov wrote:
> Christian,
>
> in immL13m7() it should be <=
>
> (-4096L <= (n->get_long() + 7L))
> ^
>
> Can you explain how indOffset13m7 memory reference is generated
> when offset does not fit into 13 bits? I did not find the explanation
> in this thread.
>
> For example:
>
> + format %{ "LDSB $mem+1,$dst\t! short -> byte" %}
> + ins_encode %{
> + __ ldsb($mem$$Address, $dst$$Register, 1);
> + %}
>
> Let mem.disp == -4100 (so that -4100+7 > -4096) and with ldsb(mem, reg, 1)
> you will get mem.disp == -4099 which does not fit into 13 bits.
>
> Thanks,
> Vladimir
>
> Tom Rodriguez wrote:
>> looks good.
>>
>> tom
>>
>> On May 12, 2009, at 3:02 AM, Christian Thalinger wrote:
>>
>>> On Mon, 2009-05-11 at 13:38 -0700, Tom Rodriguez wrote:
>>>> I don't think the assert in formssel.cpp is needed because it
>>>> replicates the logic in this test that guards enabling cisc spill.
>>>> I'd given that to you originally before I fully realized what was
>>>> going wrong.
>>>
>>> I removed the assert.
>>>
>>>>
>>>> 1127 if( def_oper == NameList::Not_in_list && instr->num_opnds()
>>>> == num_opnds()) {
>>>>
>>>> in sparc.ad you use simm13 instead of 13 bit in the comments since
>>>> that's the sparc terminology.
>>>
>>> I changed the ones I added, the others are just copied.
>>>
>>> http://cr.openjdk.java.net/~twisti/6814842/webrev.03/
>>>
>>> -- Christian
>>>
>>
More information about the hotspot-compiler-dev
mailing list