Request for reviews .03 (L): 6814842: Load shortening optimizations

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Tue May 12 11:24:03 PDT 2009


indOffset13m7 uses immX13m7 so it effectively contains this  
predicate.  Why would it need it again?

tom

On May 12, 2009, at 10:38 AM, Vladimir Kozlov wrote:

> 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