[15] RFR (S): 8242492: C2: Remove Matcher::vector_shift_count_ideal_reg()
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Apr 15 23:33:54 UTC 2020
Good.
Thanks,
Vladimir K
On 4/10/20 7:25 AM, Vladimir Ivanov wrote:
> http://cr.openjdk.java.net/~vlivanov/8242492/webrev.00/
> https://bugs.openjdk.java.net/browse/JDK-8242492
>
> Matcher::vector_shift_count_ideal_reg() was introduced specifically for x86 to communicate that only low 32 bits are
> used by vector shift instructions, so only those bits should be spilled when needed.
>
> Unfortunately, it is broken for LShiftCntV/RShiftCntV: Matcher doesn't capute overridden ideal_reg value and spills use
> bottom type instead. So, it causes a mismatch during RA.
>
> Fortunately, LShiftCntV/RShiftCntV are never spilled on x86. Considering how simple AD instructions for
> LShiftCntV/RShiftCntV are, RA prefers to rematerialize the value instead (which is a reg-to-reg move).
>
> I propose to simplify the implementation and completely remove Matcher::vector_shift_count_ideal_reg() along with
> additional special handling logic for LShiftCntV/RShiftCntV.
>
> Testing: hs-precheckin-comp, hs-tier1, hs-tier2
>
> Thanks!
>
> Best regards,
> Vladimir Ivanov
More information about the hotspot-compiler-dev
mailing list