jdk icon indicating copy to clipboard operation
jdk copied to clipboard

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

Open eme64 opened this issue 4 months ago • 6 comments

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.


Progress

  • [x] Change must be properly reviewed (1 review required, with at least 1 Reviewer)
  • [x] Change must not contain extraneous whitespace
  • [x] Commit message must refer to an issue

Issue

  • JDK-8342387: C2 SuperWord: refactor and improve compiler/loopopts/superword/TestDependencyOffsets.java (Enhancement - P4)

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/21541/head:pull/21541
$ git checkout pull/21541

Update a local copy of the PR:
$ git checkout pull/21541
$ git pull https://git.openjdk.org/jdk.git pull/21541/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 21541

View PR using the GUI difftool:
$ git pr show -t 21541

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/21541.diff

Webrev

Link to Webrev Comment

eme64 avatar Oct 16 '24 14:10 eme64