RFR: 8366427: C2 SuperWord: refactor VTransform scalar nodes
Emanuel Peter
epeter at openjdk.org
Fri Aug 29 14:24:09 UTC 2025
I'm working on cost-modeling, and am integrating some smaller changes from this proof-of-concept PR:
https://github.com/openjdk/jdk/pull/20964
This is a pure refactoring - no change in behaviour. I'm presenting it like this because it will make reviews easier.
The goal is to split up some cases that are currently treated the same, but will alter have different behavior. There may be a little bit of code duplication, but the code will soon be made different ;)
We split the `VTransformScalarNode`:
- `VTransformMemopScalarNode`
- Uses that only wanted scalar mem nodes can now directly check for `isa_MemopScalar`.
- We can directly store the `_vpointer` in a field, that way we don't need to do a lookup via `vloop_analyzer`. This could also be helpful later on if we ever do widening (unrolling during auto vectorization): we could then do the necessary modifications to the `vpointer`.
- `VTransformLoopPhiNode`
- Later on, they will play a more special role, they will give us easy access to the beginning state of the loop body and the backedges.
- `VTransformCFGNode`
- Calling them scalar nodes is not 100% accurate. We'll probably have to further refine them later on. But splitting them off now seems like a reasonable choice. Once we do if-conversion we'll have to do more work on CFG.
- `VTransformDataScalarNode`
- These represent all the normal "calculation" nodes in the loop.
- `VTransformInputScalarNode` -> `VTransformOuterNode`:
- For now, we are still just tracking input nodes, but soon we will need to track input and output nodes: basically just the 1-hop neighbourhood of nodes outside the loop. I'm already renaming them now, so it will be less noise later.
I decided to rather split up more, and avoid the `VTransformScalarNode` together, avoiding having to override overrides - that can be really confusing (e.g. what I had with `is_load_in_loop`).
-------------
Depends on: https://git.openjdk.org/jdk/pull/26991
Commit messages:
- improve print_spec
- rm comment
- InputScalar -> Outer renaming
- rm useless methods
- rm vloop_analyzer from vpointer method
- JDK-8366427
Changes: https://git.openjdk.org/jdk/pull/27002/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27002&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8366427
Stats: 157 lines in 4 files changed: 114 ins; 0 del; 43 mod
Patch: https://git.openjdk.org/jdk/pull/27002.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/27002/head:pull/27002
PR: https://git.openjdk.org/jdk/pull/27002
More information about the hotspot-compiler-dev
mailing list