RFR: 8342387: C2 SuperWord: refactor and improve compiler/loopopts/superword/TestDependencyOffsets.java

Emanuel Peter epeter at openjdk.org
Tue Oct 22 11:58:59 UTC 2024


I want to refactor `TestDependencyOffsets.java` using the `CompileFramework`.

Reasons:
- I soon need to modify the IR rules in this test soon anyway (https://github.com/openjdk/jdk/pull/21521), and so a refactor might be good to do first.
- The generator script used to be a `generator.py`, stored not on `git` but `JBS`. Not great. Now we have it in Java code, and maintenance is easier.
- Since I first wrote that test, I have now introduced the `IRNode.VECTOR_SIZE`. This allows:
  - Simplifying the logic for the IR rules (removed the `IRRange` and `IRBool`, and the `Platform`).
  - Strengthening the rules.
- I was able to add `random` offsets. This means we have better coverage, and do not rely on just hand-crafted values.

I extensively use `String.format` and `StringBuilder`... would be nicer to have string-templates but they don't exist yet.

Recommendation for review: the old file was huge. Finding the new code in the diff can be hard. I would start by only reading the new file.

Ah. And about runtime of the test. On my machine I get this (in ms):

Generate: 27
Compile:  5845
Run:      23435

Test generation is negligible. 6sec on compilation, 20+sec on execution. I think that is an ok balance, at least we can say that generation and compilation only take about 1/6 of total time - an acceptable overhead I would say.

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

Commit messages:
 - more comment
 - simplify further by removing explicit CPU/Platform vector width
 - remove 2 useless runs
 - whitespace
 - aliasing modes
 - further cosmetics and comments
 - add more cases
 - simplify code
 - cosmetics
 - cleanup
 - ... and 19 more: https://git.openjdk.org/jdk/compare/ebc17c7c...cd483d52

Changes: https://git.openjdk.org/jdk/pull/21541/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21541&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8342387
  Stats: 15511 lines in 1 file changed: 31 ins; 15085 del; 395 mod
  Patch: https://git.openjdk.org/jdk/pull/21541.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21541/head:pull/21541

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


More information about the hotspot-compiler-dev mailing list