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

Jasmine Karthikeyan jkarthikeyan at openjdk.org
Mon Nov 4 03:36:12 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 incrementally with one additional commit since the last revision:

  Re-use optimize() and add backend-specific should_lower()

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/21599/files
  - new: https://git.openjdk.org/jdk/pull/21599/files/c7ceec71..fc8fa245

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=21599&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21599&range=02-03

  Stats: 49 lines in 8 files changed: 36 ins; 11 del; 2 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