[15] RFR (S): 8242492: C2: Remove Matcher::vector_shift_count_ideal_reg()
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Fri Apr 10 14:25:56 UTC 2020
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