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

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Fri May 22 15:38:37 UTC 2015


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