JDK-8302668 : [TESTBUG] Tests require feature sse4_1 which does not exist, should be sse4.1
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 21
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2023-02-16
  • Updated: 2023-02-23
  • Resolved: 2023-02-20
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 21
21 b11Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
I found this during the work of JDK-8302139.

This test bug means that multiple tests are ignored on intel machines. We have to replace "sse4_1" with "sse4.1".

As [~kvn] said:

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

grep "sse4" test/hotspot/jtreg/compiler/ -r

test/hotspot/jtreg/compiler/vectorization/runner/BasicIntOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicIntOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicIntOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/MultipleLoopsTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/MultipleLoopsTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicLongOpTest.java:    @IR(applyIfCPUFeatureOr = {"sve", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicLongOpTest.java:    @IR(applyIfCPUFeatureOr = {"sve", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/BasicLongOpTest.java:    @IR(applyIfCPUFeatureOr = {"sve", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopLiveOutNodesTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopArrayIndexComputeTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopArrayIndexComputeTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopArrayIndexComputeTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopArrayIndexComputeTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopRangeStrideTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopRangeStrideTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopRangeStrideTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopRangeStrideTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopCombinedOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopCombinedOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopCombinedOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopCombinedOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopCombinedOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/vectorization/runner/LoopCombinedOpTest.java:    @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4_1", "true"},
test/hotspot/jtreg/compiler/c2/cr7200264/TestSSE4IntVect.java: * @requires vm.cpu.features ~= ".*sse4\\.1.*" & vm.debug & vm.flavor == "server"
test/hotspot/jtreg/compiler/arraycopy/stress/TestStressArrayCopy.java:            if (containsFuzzy(cpuFeatures, "sse4")) {
test/hotspot/jtreg/compiler/vectorapi/TestVectorTest.java: * @requires (os.simpleArch == "x64" & vm.cpu.features ~= ".*sse4.*" & (vm.opt.UseSSE == "null" | vm.opt.UseSSE > 3))
test/hotspot/jtreg/compiler/cpuflags/TestSSE4Disabled.java: * @requires vm.cpu.features ~= ".*sse4.*"

When I quickly ran one of them, I got this reported back to me:
[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
Comments
Changeset: 7e08275c Author: Emanuel Peter <epeter@openjdk.org> Date: 2023-02-20 08:41:40 +0000 URL: https://git.openjdk.org/jdk/commit/7e08275cc13bfc0f66b1d62b8df58986ecbb45ba
20-02-2023

A pull request was submitted for review. URL: https://git.openjdk.org/jdk/pull/12601 Date: 2023-02-16 17:28:46 +0000
16-02-2023

ILW = IR verification not executed, some tests on AVX4 capable systems, no workaround = MLH = P4
16-02-2023