On Mon, 30 Sep 2024 10:35:35 GMT, Tobias Hartmann <thartm...@openjdk.org> wrote:
> You've probably seen this but the new test is failing IR verification: > > ``` > Failed IR Rules (4) of Methods (4) > ---------------------------------- > 1) Method "private static double > compiler.intrinsics.math.TestMinMaxInlining.testDoubleMax(double,double)" - > [Failed IR rules: 1]: > * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, > applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#MAX_D#_", "1"}, > failOn={}, applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={}, > applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, > applyIfNot={})" > > Phase "PrintIdeal": > - counts: Graph contains wrong number of nodes: > * Constraint 1: "(\\d+(\\s){2}(MaxD.*)+(\\s){2}===.*)" > - Failed comparison: [found] 0 = 1 [given] > - No nodes matched! > > 2) Method "private static double > compiler.intrinsics.math.TestMinMaxInlining.testDoubleMin(double,double)" - > [Failed IR rules: 1]: > * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, > applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#MIN_D#_", "1"}, > failOn={}, applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={}, > applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, > applyIfNot={})" > > Phase "PrintIdeal": > - counts: Graph contains wrong number of nodes: > * Constraint 1: "(\\d+(\\s){2}(MinD.*)+(\\s){2}===.*)" > - Failed comparison: [found] 0 = 1 [given] > - No nodes matched! > > 3) Method "private static float > compiler.intrinsics.math.TestMinMaxInlining.testFloatMax(float,float)" - > [Failed IR rules: 1]: > * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, > applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#MAX_F#_", "1"}, > failOn={}, applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={}, > applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, > applyIfNot={})" > > Phase "PrintIdeal": > - counts: Graph contains wrong number of nodes: > * Constraint 1: "(\\d+(\\s){2}(MaxF.*)+(\\s){2}===.*)" > - Failed comparison: [found] 0 = 1 [given] > - No nodes matched! > > 4) Method "private static float > compiler.intrinsics.math.TestMinMaxInlining.testFloatMin(float,float)" - > [Failed IR rules: 1]: > * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, > applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#MIN_F#_", "1"}, > failOn={}, applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={}, > applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, > applyIfNot={})" > > Phase "PrintIdeal": > - counts: Graph contains wrong number of nodes: > * Constraint 1: "(\\d+(\\s){2}(MinF.*)+(\\s){2}===.*)" > - Failed comparison: [found] 0 = 1 [given] > - No nodes matched! > ``` @TobiHartmann the reason for this failure is that hotspot doesn't check whether max/min[F,D] intrinsics are available for x86. E.g. case vmIntrinsics::_maxD: case vmIntrinsics::_maxD_strict: if (!Matcher::match_rule_supported(Op_MaxD)) return false; break; I tried to replicate the test failures with the latest master, but it doesn't build with x86: * For target buildtools_create_symbols_javac__the.COMPILE_CREATE_SYMBOLS_batch: # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (/home/g/1/jdk-intrinsify-max-min-long/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp:747), pid=319052, tid=319399 # Error: Unimplemented() # # JRE version: OpenJDK Runtime Environment (24.0) (fastdebug build 24-internal-adhoc.g.jdk-intrinsify-max-min-long) # Java VM: OpenJDK Server VM (fastdebug 24-internal-adhoc.g.jdk-intrinsify-max-min-long, mixed mode, tiered, g1 gc, linux-x86) # Problematic frame: # V [libjvm.so+0x529eca] BarrierSetAssembler::refine_register(Node const*, int)+0x1a This build failure is caused by the late barrier expansion work, which is unimplemented for x86: OptoReg::Name BarrierSetAssembler::refine_register(const Node* node, OptoReg::Name opto_reg) { Unimplemented(); // This must be implemented to support late barrier expansion. } Looking at some other recent PRs, seems like there's no full build of x86 done any more, with only hotspot being build, and there is no testing executed. E.g. https://github.com/rwestrel/jdk/actions/runs/11145151555. So, if x86 builds are not run, seems like there's no need to fix this? Otherwise there are several ways this can be fixed: disable test for x86, or to check max/min[F,D] intrinsics are available for x86 before adding the nodes to the IR. ------------- PR Comment: https://git.openjdk.org/jdk/pull/20098#issuecomment-2402013495