Request for reviews .03 (L): 6814842: Load shortening optimizations
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Tue May 12 11:54:54 PDT 2009
Ah right, the is_simm13 test isn't correct at the bottom since we're
smearing a bunch of potential offsets together.
tom
On May 12, 2009, at 11:27 AM, Vladimir Kozlov wrote:
>
> Tom Rodriguez wrote:
>> indOffset13m7 uses immX13m7 so it effectively contains this
>> predicate. Why would it need it again?
>
> I misspoke, I meant immX13m7.
> What I am saying the used predicate is wrong:
>
> it should be (for int and long)
>
> -4096 <= n->get_int()
>
> instead of
>
> -4096 <= (n->get_int() + 7)
>
> Vladimir
>
>> 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