[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:14:44 UTC 2015
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