RFR: 8265784: [C2] Hoisting of DecodeN leaves MachTemp inputs behind

Martin Doerr mdoerr at openjdk.java.net
Sat May 1 13:44:49 UTC 2021


On Thu, 22 Apr 2021 18:58:28 GMT, Martin Doerr <mdoerr at openjdk.org> wrote:

> PPC64 and s390 have DecodeN implementations which use a MachTemp input. When LCM hoists the DecodeN, the MachTemp nodes reside in the old block, but should get hoisted together with the DecodeN node.
> Same is true for load Base input which exists on s390 for example. Unfortunately, that's just a platform specific MachNode which is not nicely recognizable in LCM.

Hi Vladimir, thanks for reviewing my PR.
Yes, base is an immediate constant (CompressedOops::base()). It's not a load from memory.
MachTemp nodes are added and connected by ADLC generated code (ArchDesc::defineExpand). PPC64 and s390 code contains "expand" and "postalloc_expand" rules. E.g. decodeN_Ex in ppc64.ad uses a register with TEMP effect.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3637


More information about the hotspot-compiler-dev mailing list