RFR: 8302668: [TESTBUG] Tests require feature sse4_1 which does not exist, should be sse4.1

Emanuel Peter epeter at openjdk.org
Mon Feb 20 08:44:53 UTC 2023


On Fri, 17 Feb 2023 06:09:08 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:

>> I found some IR tests where the `cpuFeature` was non-existant, so these rules were always ignored on intel machines.
>> 
>> To quote @vnkozlov :
>> 
>> sse4_1  comes from /proc/cpuinfo. sse4.1 is in CPU_FEATURE_FLAGS and produced by VM output.
>> IR framework gets info from WHITE_BOX.getCPUFeatures() which calls VM_Version::features_string().
>> So you are right tests should use sse4.1
>> 
>> 
>> Maybe the IR framework should check that we only use `cpuFeatures` that are in a verified list? That way we could avoid IR rules not being executed because of a typo / wrong copy. Filed RFE: [JDK-8302681](https://bugs.openjdk.org/browse/JDK-8302681)
>> 
>> This is the list of tests before my patch. They are not showing up after my patch, which means the tests are running now.
>> Warnings are done with my other patch that I will integrate soon https://github.com/openjdk/jdk/pull/12589.
>> 
>> test/hotspot/jtreg/compiler/vectorization/runner/BasicIntOpTest.java
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorMul: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorMulSub: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorMulAdd: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> 
>> test/hotspot/jtreg/compiler/vectorization/runner/MultipleLoopsTest.java
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in nestedLoopOuterNonCounted: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in nestedLoopIndexCompute: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> 
>> test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorMulSub: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorMul: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorUnsignedShiftRight: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorMulAdd: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorShiftLeft: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorSignedShiftRight: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> 
>> test/hotspot/jtreg/compiler/vectorization/runner/BasicLongOpTest.java
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in vectorMulSub: None of the feature constraints met (applyIfCPUFeatureOr): sve, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 2 in vectorMulAdd: None of the feature constraints met (applyIfCPUFeatureOr): sve, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 2 of 2 in vectorMulAdd: None of the feature constraints met (applyIfCPUFeatureOr): sve, true, sse4_1, true
>> 
>> test/hotspot/jtreg/compiler/vectorization/runner/LoopLiveOutNodesTest.java
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in SimpleIvUsed: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> 
>> test/hotspot/jtreg/compiler/vectorization/runner/LoopArrayIndexComputeTest.java
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 2 in indexWithInvariantAndConstant: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 2 of 2 in indexWithInvariantAndConstant: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 2 in indexPlusInvariant: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 2 of 2 in indexPlusInvariant: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> 
>> test/hotspot/jtreg/compiler/vectorization/runner/LoopRangeStrideTest.java
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in countupLoopWithNegScale: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in countDownLoop: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in countDownLoopWithNegScale: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in shortInductionLoop: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> 
>> test/hotspot/jtreg/compiler/vectorization/runner/LoopCombinedOpTest.java
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in opWithConstantAndLoopInvariant: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in partialVectorizableLoop: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in opWithLoopInvariant: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in multipleOpsWithMultipleConstants: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in multipleStoresWithCommonSubExpression: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>> [IREncodingPrinter] Disabling IR matching for rule 1 of 1 in manuallyUnrolledStride2: None of the feature constraints met (applyIfCPUFeatureOr): asimd, true, sse4_1, true
>
> Good catch. The fix looks good to me.
> 
>> Maybe the IR framework should check that we only use cpuFeatures that are in a verified list? That way we could avoid IR rules not being executed because of a typo / wrong copy. Filed RFE: [JDK-8302681](https://bugs.openjdk.org/browse/JDK-8302681)
> 
> Yes, that makes sense.

Thanks for the reviews @TobiHartmann @vnkozlov !

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

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


More information about the hotspot-compiler-dev mailing list