We found some extra register copy generated by CastX2P. See the discussion: https://github.com/openjdk/jdk/pull/16991#issuecomment-2206368740.
The motivation comes from some cast operations like castPP. The difference for ADLC between castPP and CastX2P lies in that CastX2P always has different types for dst and src. We can force ADLC to generate an extra two_adr() for CastX2P like it does automatically for castPP, which could tell register allocator that the instruction needs the same register for dst and src.
The motivation comes from some cast operations like castPP. The difference for ADLC between castPP and CastX2P lies in that CastX2P always has different types for dst and src. We can force ADLC to generate an extra two_adr() for CastX2P like it does automatically for castPP, which could tell register allocator that the instruction needs the same register for dst and src.
- links to
-
Review(master) openjdk/jdk/20159