RFR: 8333729: C2 SuperWord: remove some @requires usages in test/hotspot/jtreg/compiler/loopopts/superword [v2]
Emanuel Peter
epeter at openjdk.org
Thu Jun 13 15:04:15 UTC 2024
On Thu, 13 Jun 2024 06:50:27 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> I'm removing as many `@requires` statements as possible. Generally, they just limit what tests can be executed where, and in most cases such limitations do not make much sense.
>>
>> For example, tests should not be limited to `@requires vm.compiler2.enabled`, i.e. only run if C2 is available - we can also run the tests if GraalVM is available.
>>
>> We should also not limit tests to `@requires vm.bits == "64"`, but rather limit the `@IR` rules with `applyIfPlatform = {"64-bit", "true"}`.
>>
>> Similarly, we should not limit the platform for a run statement, but do that per `@IR` rule if necessary.
>
> Emanuel Peter has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
>
> - Merge branch 'master' into JDK-8333729-superword-requires
> - last file
> - Merge branch 'master' into JDK-8333729-superword-requires
> - JDK-8333729
[compiler/loopopts/superword/ReductionPerf.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/ReductionPerf.jtr): Test SuperWord Reduction Perf.
[compiler/loopopts/superword/TestAlignVector.java#AlignVector](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestAlignVector_AlignVector.jtr): Test AlignVector with various loop init, stride, scale, invar, etc.
[compiler/loopopts/superword/TestAlignVector.java#NoAlignVector](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestAlignVector_NoAlignVector.jtr): Test AlignVector with various loop init, stride, scale, invar, etc.
[compiler/loopopts/superword/TestDependencyOffsets.java#vanilla-A](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestDependencyOffsets_vanilla-A.jtr): Test SuperWord: vector size, offsets, dependencies, alignment.
[compiler/loopopts/superword/TestDependencyOffsets.java#vanilla-U](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestDependencyOffsets_vanilla-U.jtr): Test SuperWord: vector size, offsets, dependencies, alignment.
[compiler/loopopts/superword/TestGeneralizedReductions.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestGeneralizedReductions.jtr): Test reduction vectorizations that are enabled by performing SLP reduction analysis on unrolled loops.
[compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.jtr): Test some examples with independent packs with cyclic dependency between the packs.
[compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency2.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency2.jtr): Test some examples with independent packs with cyclic dependency between the packs.
[compiler/loopopts/superword/TestLargeCompilation.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestLargeCompilation.jtr): Test compile time for large compilation, where SuperWord takes especially much time.
[compiler/loopopts/superword/TestLargeScaleAndStride.java#AlignVector](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestLargeScaleAndStride_AlignVector.jtr):
[compiler/loopopts/superword/TestMovingLoadBeforeStore.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestMovingLoadBeforeStore.jtr): In SuperWord::output, LoadVector can be moved before StoreVector, but only if it is proven to be safe.
[compiler/loopopts/superword/TestMulAddS2I.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestMulAddS2I.jtr): Test MulAddS2I vectorization.
[compiler/loopopts/superword/TestPeeledReductionNode.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestPeeledReductionNode.jtr): Test that reduction nodes peeled out of an inner loop are not vectorized as reductions within the outer loop.
[compiler/loopopts/superword/TestScheduleReordersScalarMemops.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestScheduleReordersScalarMemops.jtr): Test some examples where non-vectorized memops also need to be reordered during SuperWord::schedule.
[compiler/loopopts/superword/TestSplitPacks.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestSplitPacks.jtr): Test splitting packs in SuperWord
[compiler/loopopts/superword/TestUnorderedReduction.java#MaxVectorSize16-Unaligned](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestUnorderedReduction_MaxVectorSize16-Unaligned.jtr): Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop
[compiler/loopopts/superword/TestUnorderedReduction.java#MaxVectorSize32-Aligned](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestUnorderedReduction_MaxVectorSize32-Aligned.jtr): Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop
[compiler/loopopts/superword/TestUnorderedReduction.java#Vanilla-Aligned](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestUnorderedReduction_Vanilla-Aligned.jtr): Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop
[compiler/loopopts/superword/TestUnorderedReduction.java#Vanilla-Unaligned](https://github.com/openjdk/JTwork/compiler/loopopts/superword/TestUnorderedReduction_Vanilla-Unaligned.jtr): Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop
[compiler/loopopts/superword/Vec_MulAddS2I.java](https://github.com/openjdk/JTwork/compiler/loopopts/superword/Vec_MulAddS2I.jtr): Test operations in C2 MulAddS2I and MulAddVS2VI nodes.
All of these now are failing without C2, investigating...
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19581#issuecomment-2165935749
More information about the hotspot-compiler-dev
mailing list