JDK-8308746 : C2 IR test failures for TestFpMinMaxReductions.java with SSE2
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 21
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2023-05-24
  • Updated: 2023-06-01
  • Resolved: 2023-05-25
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 b25Fixed
Related Reports
Relates :  
Description
The test was recently added JDK-8287087

[~jbhateja] found it:
https://github.com/openjdk/jdk/pull/13493#issuecomment-1560459854

I can reproduce it like this:

make test TEST="test/hotspot/jtreg/compiler/intrinsics/math/TestFpMinMaxReductions.java" CONF=linux-x64-slowdebug JTREG="RETAIN=all;JOBS=8;TIMEOUT_FACTOR=8;JAVA_OPTIONS=-XX:UseSSE=2"




See output below:

Failed IR Rules (12) of Methods (12)
------------------------------------
1) Method "private static double compiler.intrinsics.math.TestFpMinMaxReductions.testDoubleMax()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MAX_D_REG#_", "1"}, applyIfAnd={}, failOn={"_#MAX_D_REDUCTION_REG#_"}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(maxD_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 = 1 [given]
           - No nodes matched!

2) Method "private static double compiler.intrinsics.math.TestFpMinMaxReductions.testDoubleMaxReduction()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MAX_D_REDUCTION_REG#_", ">= 1"}, applyIfAnd={}, failOn={}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(maxD_reduction_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 >= 1 [given]
           - No nodes matched!

3) Method "private static double compiler.intrinsics.math.TestFpMinMaxReductions.testDoubleMin()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MIN_D_REG#_", "1"}, applyIfAnd={}, failOn={"_#MIN_D_REDUCTION_REG#_"}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(minD_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 = 1 [given]
           - No nodes matched!

4) Method "private static double compiler.intrinsics.math.TestFpMinMaxReductions.testDoubleMinReduction()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MIN_D_REDUCTION_REG#_", ">= 1"}, applyIfAnd={}, failOn={}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(minD_reduction_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 >= 1 [given]
           - No nodes matched!

5) Method "private static float compiler.intrinsics.math.TestFpMinMaxReductions.testFloatMax()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MAX_F_REG#_", "1"}, applyIfAnd={}, failOn={"_#MAX_F_REDUCTION_REG#_"}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(maxF_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 = 1 [given]
           - No nodes matched!

6) Method "private static float compiler.intrinsics.math.TestFpMinMaxReductions.testFloatMaxReduction()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MAX_F_REDUCTION_REG#_", ">= 1"}, applyIfAnd={}, failOn={}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(maxF_reduction_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 >= 1 [given]
           - No nodes matched!

7) Method "private static float compiler.intrinsics.math.TestFpMinMaxReductions.testFloatMin()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MIN_F_REG#_", "1"}, applyIfAnd={}, failOn={"_#MIN_F_REDUCTION_REG#_"}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(minF_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 = 1 [given]
           - No nodes matched!

8) Method "private static float compiler.intrinsics.math.TestFpMinMaxReductions.testFloatMinReduction()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MIN_F_REDUCTION_REG#_", ">= 1"}, applyIfAnd={}, failOn={}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(minF_reduction_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 >= 1 [given]
           - No nodes matched!

9) Method "private static float compiler.intrinsics.math.TestFpMinMaxReductions.testFloatMinReductionGlobalAccumulator()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MIN_F_REDUCTION_REG#_", ">= 1"}, applyIfAnd={}, failOn={}, applyIfOr={}, applyIfNot={})"
     > Phase "Final Code":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\d+(\s){2}(minF_reduction_reg.*)+(\s){2}===.*)"
           - Failed comparison: [found] 0 >= 1 [given]
           - No nodes matched!

10) Method "private static float compiler.intrinsics.math.TestFpMinMaxReductions.testFloatMinReductionInOuterLoop()" - [Failed IR rules: 1]:
    * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MIN_F_REDUCTION_REG#_", ">= 1"}, applyIfAnd={}, failOn={}, applyIfOr={}, applyIfNot={})"
      > Phase "Final Code":
        - counts: Graph contains wrong number of nodes:
          * Constraint 1: "(\d+(\s){2}(minF_reduction_reg.*)+(\s){2}===.*)"
            - Failed comparison: [found] 0 >= 1 [given]
            - No nodes matched!

11) Method "private static float compiler.intrinsics.math.TestFpMinMaxReductions.testFloatMinReductionNonCounted()" - [Failed IR rules: 1]:
    * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MIN_F_REDUCTION_REG#_", ">= 1"}, applyIfAnd={}, failOn={}, applyIfOr={}, applyIfNot={})"
      > Phase "Final Code":
        - counts: Graph contains wrong number of nodes:
          * Constraint 1: "(\d+(\s){2}(minF_reduction_reg.*)+(\s){2}===.*)"
            - Failed comparison: [found] 0 >= 1 [given]
            - No nodes matched!

12) Method "private static float compiler.intrinsics.math.TestFpMinMaxReductions.testFloatMinReductionPartiallyUnrolled()" - [Failed IR rules: 1]:
    * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#MIN_F_REDUCTION_REG#_", ">= 1"}, applyIfAnd={}, failOn={}, applyIfOr={}, applyIfNot={})"
      > Phase "Final Code":
        - counts: Graph contains wrong number of nodes:
          * Constraint 1: "(\d+(\s){2}(minF_reduction_reg.*)+(\s){2}===.*)"
            - Failed comparison: [found] 0 >= 1 [given]
            - No nodes matched!
Comments
Changeset: 5a0a238f Author: Roberto CastaƱeda Lozano <rcastanedalo@openjdk.org> Date: 2023-05-25 11:07:10 +0000 URL: https://git.openjdk.org/jdk/commit/5a0a238f67ae2a7757611881c5c713149cefe3c0
25-05-2023

A pull request was submitted for review. URL: https://git.openjdk.org/jdk/pull/14141 Date: 2023-05-25 07:04:54 +0000
25-05-2023

ILW = IR test failure with SSE < 4, single test, use SSE = 4; MLM = P4
24-05-2023