C2: Missed Ideal optimization opportunity with ConvD2F/ConvF2HF and -XX:+StressIncrementalInlining

XMLWordPrintable

      At least the following tests fail with JVM args "-XX:-TieredCompilation -XX:VerifyIterativeGVN=1110 -XX:+UnlockDiagnosticVMOptions -XX:+StressIncrementalInlining" with "Missed Ideal optimization" for ConvD2F or ConvF2HF:
       - compiler/c2/irTests/TestFloat16ScalarOperations.java
       - compiler/vectorization/TestFloat16VectorOperations.java
       - compiler/floatingpoint/TestSubNodeFloatDoubleNegation.java
       - compiler/igvn/TestMinMaxIdentity.java
       - compiler/c2/aarch64/TestFloat16Replicate.java
       - compiler/intrinsics/float16/TestFloat16MaxMinSpecialValues.java
       - compiler/c2/irTests/MulHFNodeIdealizationTests.java

      Example error output for compiler/c2/irTests/TestFloat16ScalarOperations.java:
      Missed Ideal optimization (can_reshape=true):
      The node was replaced by Ideal.
      Old node:
      dist dump
      ---------------------------------------------
         1 1460 SqrtD === 5810 5820 [[ 1929 1615 1497 1603 1929 ]] !jvms: Float16::lambda$sqrt$0 @ bci:4 (line 1261) 0x00000000ba0bb428::apply @ bci:4 Float16Math::sqrt @ bci:24 (line 40) Float16::sqrt @ bci:8 (line 1254) TestFloat16ScalarOperations::testSqrtConstantFolding @ bci:54 (line 708)
         0 1497 ConvD2F === _ 1460 [[ 1509 1532 ]] #float !jvms: Float16::valueOf @ bci:8 (line 381) Float16::lambda$sqrt$0 @ bci:7 (line 1261) 0x00000000ba0bb428::apply @ bci:4 Float16Math::sqrt @ bci:24 (line 40) Float16::sqrt @ bci:8 (line 1254) TestFloat16ScalarOperations::testSqrtConstantFolding @ bci:54 (line 708)
      The result after Ideal:
      dist dump
      ---------------------------------------------
         1 5807 Proj === 5802 [[ 5820 5853 5854 ]] #5 !jvms: Float16::doubleValue @ bci:1 (line 895) Float16::lambda$sqrt$0 @ bci:1 (line 1261) 0x00000000ba0bb428::apply @ bci:4 Float16Math::sqrt @ bci:24 (line 40) Float16::sqrt @ bci:8 (line 1254) TestFloat16ScalarOperations::testSqrtConstantFolding @ bci:54 (line 708)
         1 5810 CatchProj === 5809 [[ 1491 1460 5853 5854 ]] #0@bci -1 !jvms: Float16::doubleValue @ bci:1 (line 895) Float16::lambda$sqrt$0 @ bci:1 (line 1261) 0x00000000ba0bb428::apply @ bci:4 Float16Math::sqrt @ bci:24 (line 40) Float16::sqrt @ bci:8 (line 1254) TestFloat16ScalarOperations::testSqrtConstantFolding @ bci:54 (line 708)
         0 5854 SqrtF === 5810 5807 [[ ]] !jvms: Number::<init> @ bci:1 (line 59) Float16::<init> @ bci:1 (line 128) Float16::valueOf @ bci:8 (line 364) Float16::valueOf @ bci:9 (line 381) Float16::lambda$sqrt$0 @ bci:7 (line 1261) 0x00000000ba0bb428::apply @ bci:4 Float16Math::sqrt @ bci:24 (line 40) Float16::sqrt @ bci:8 (line 1254) TestFloat16ScalarOperations::testSqrtConstantFolding @ bci:20 (line 702)

      #
      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (.../src/hotspot/share/opto/phaseX.hpp:285), pid=2241683, tid=2241699
      # assert(t != nullptr) failed: must set before get
      # [...]


      =====


      Missed Ideal optimization (can_reshape=false):
      The node was replaced by Ideal.
      Old node:
      dist dump
      ---------------------------------------------
         1 514 SubF === _ 840 598 [[ 526 549 ]] !jvms: Float16::subtract @ bci:8 (line 1188) TestFloat16VectorOperations::vectorSubFloat16 @ bci:32 (line 121)
         0 549 ConvF2HF === _ 514 [[ 694 ]] #short !jvms: Float16::valueOf @ bci:5 (line 364) Float16::subtract @ bci:9 (line 1188) TestFloat16VectorOperations::vectorSubFloat16 @ bci:32 (line 121)
      The result after Ideal:
      dist dump
      ---------------------------------------------
         1 844 SubHF === _ 842 843 [[ 845 ]] !jvms: Float16::subtract @ bci:1 (line 1188) TestFloat16VectorOperations::vectorSubFloat16 @ bci:32 (line 121)
         0 845 ReinterpretHF2S === _ 844 [[ ]] !jvms: Float16::subtract @ bci:1 (line 1188) TestFloat16VectorOperations::vectorSubFloat16 @ bci:32 (line 121)

            Assignee:
            Unassigned
            Reporter:
            Marc Chevalier
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: