[9] RFR (XS): loadUB2L_immI8 & loadUS2L_immI16 rules don't match some 8-bit/16-bit masks

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri May 22 17:21:52 UTC 2015


Good.

Thanks,
Vladimir K

On 5/22/15 8:38 AM, Vladimir Ivanov wrote:
> Updated webrev:
>    http://cr.openjdk.java.net/~vlivanov/8001622/webrev.01
>
> Introduced immU8/immU16 operands on sparc.
>
> As a cleanup, sorted immI/immU operand declarations.
>
> Best regards,
> Vladimir Ivanov
>
> On 5/22/15 6:14 PM, Vladimir Ivanov wrote:
>> Thanks for looking into the fix, Roland.
>>
>> On 5/22/15 5:57 PM, Roland Westrelin wrote:
>>>> http://cr.openjdk.java.net/~vlivanov/8001622/webrev.00
>>>> https://bugs.openjdk.java.net/browse/JDK-8001622
>>>>
>>>> Mask in loadUB2L_immI8 & loadUS2L_immI16 can be relaxed from
>>>> immI8/immI16 to immI, since zero-extending move is used.
>>>
>>> The change on sparc doesn’t look good:
>>> __ and3($dst$$Register, $mask$$constant, $dst$$Register);
>>>
>>> the and instruction cannot encode arbitrary large integer constants.
>> Good catch. I missed that it is and3.
>>
>>> Isn’t the root of the problem that we want an unsigned 8 bit integer
>>> and not a signed one?
>> Yes, unsigned 8-bit integer work fine, but it can be generalized to
>> arbitrary masks as well.
>>
>> I experimented with new operand types (immU8, immU16), but it was more
>> code for no particular benefit. I can use them on sparc.
>>
>> Best regards,
>> Vladimir Ivanov


More information about the hotspot-compiler-dev mailing list