RFR: 8294715: Add IR checks to the reduction vectorization tests

Daniel Skantz duke at openjdk.org
Tue Feb 21 08:15:01 UTC 2023


We are lifting some loopopts/superword tests to use the IR framework, and add IR annotations to check that vector reductions take place on x86_64. This can be useful to prevent issues such as JDK-8300865.

Approach: lift the more general tests in loopopts/superword, mainly using matching rules in cpu/x86/x86.ad, but leave tests mostly unchanged otherwise. Some reductions are considered non-profitable (superword.cpp), so we might need to raise sse/avx value pre-conditions from what would be a strict reading of x86.ad (as noted by @eme64).

Testing: Local testing (x86_64) using UseSSE={2,3,4}, UseAVX={0,1,2,3}. Tested running all jtreg compiler tests. Tier1-tier5 runs to my knowledge never showed any compiler-related regression in other tests as a result from this work. GHA. Validation: all tests fail if we put unreasonable counts for the respective reduction node, such as counts = {IRNode.ADD_REDUCTION_VI, ">= 10000000"}).

Thanks @robcasloz  and @eme64 for advice.

Notes: ProdRed_Double does not vectorize (JDK-8300865). SumRed_Long does not vectorize on 32-bit, according to my reading of source, test on GHA and cross-compiled JDK on 32-bit Linux, so removed these platforms from @requires. Lifted the AbsNeg tests too but added no checks, as these are currently not run on x86_64.

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

Commit messages:
 - remove -XX:-TieredCompilation where it was not before
 - JDK-8294715

Changes: https://git.openjdk.org/jdk/pull/12683/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12683&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8294715
  Stats: 958 lines in 13 files changed: 429 ins; 490 del; 39 mod
  Patch: https://git.openjdk.org/jdk/pull/12683.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12683/head:pull/12683

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


More information about the hotspot-compiler-dev mailing list