RFR: 8342662: C2: Add new phase for backend-specific lowering [v5]

Jasmine Karthikeyan jkarthikeyan at openjdk.org
Wed Dec 11 04:16:36 UTC 2024


> Hi all,
> This patch adds a new pass to consolidate lowering of complex backend-specific code patterns, such as `MacroLogicV` and the optimization proposed by #21244. Moving these optimizations to backend code can simplify shared code, while also making it easier to develop more in-depth optimizations. The linked bug has an example of a new optimization this could enable. The new phase does GVN to de-duplicate nodes and calls nodes' `Value()` method, but it does not call `Identity()` or `Ideal()` to avoid undoing any changes done during lowering. It also reuses the IGVN worklist to avoid needing to re-create the notification mechanism.
> 
> In this PR only the skeleton code for the pass is added, moving `MacroLogicV` to this system will be done separately in a future patch. Tier 1 tests pass on my linux x64 machine. Feedback on this patch would be greatly appreciated!

Jasmine Karthikeyan has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains six commits:

 - Fix merge conflict
 - Re-use optimize() and add backend-specific should_lower()
 - Merge branch 'master' into phase-lowering
 - Remove platform-dependent node definitions, rework PhaseLowering implementation
 - Address some changes from code review
 - Implement PhaseLowering

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

Changes: https://git.openjdk.org/jdk/pull/21599/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21599&range=04
  Stats: 298 lines in 14 files changed: 297 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/21599.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21599/head:pull/21599

PR: https://git.openjdk.org/jdk/pull/21599


More information about the hotspot-compiler-dev mailing list