On Wed, 12 Aug 2026 04:18:35 GMT, Jatin Bhateja <[email protected]> wrote:
>> @jatin-bhateja A lot has changed in past couple of weeks on mainline. It
>> would be good to do a merge with mainline and the GHA run successfully.
>
> Thanks @sviswa7 and @iwanowww for review and approvals.
Hi @jatin-bhateja,
`compiler/vectorapi/TestFloat16VectorFMAAccumSpill.java` fails
deterministically in our downstream CI on a Sapphire Rapids host (avx512_fp16,
linux-x64 fastdebug, master @ 241381ba70496).
[2026-08-18T02:43:54.226Z] Failed IR Rules (1) of Methods (1)
[2026-08-18T02:43:54.226Z] ----------------------------------
[2026-08-18T02:43:54.226Z] 1) Method
"compiler.vectorapi.TestFloat16VectorFMAAccumSpill::fmaAccum" - [Failed IR
rules: 1]:
[2026-08-18T02:43:54.226Z] * @IR rule 2:
"@compiler.lib.ir_framework.IR(phase={FINAL_CODE}, applyIfCPUFeatureAnd={},
applyIfPlatformAnd={}, applyIf={}, applyIfCPUFeatureOr={},
applyIfCPUFeature={"avx512_fp16", "true"}, counts={},
failOn={"_#C#MEM_TO_REG_SPILL_COPY_TYPE#_", "vector[xyz]"}, applyIfAnd={},
applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={})"
[2026-08-18T02:43:54.226Z] > Phase "Final Code":
[2026-08-18T02:43:54.226Z] - failOn: Graph contains forbidden nodes:
[2026-08-18T02:43:54.227Z] * Constraint 1:
"(\d+(\s){2}(MemToRegSpillCopy.*)+(\s){2}===.*vector[xyz].*)"
[2026-08-18T02:43:54.227Z] - Matched forbidden nodes (8):
[2026-08-18T02:43:54.227Z] * 6394 MemToRegSpillCopy === _ 1139
[[ 1138 ]] vectorz<S,32> !jvms: Float16Vector::lanewiseTemplate @ bci:70 (line
1112) Float16Vector512::lanewise @ bci:4 (line 318) Float16Vector512::lanewise
@ bci:4 (line 42) TestFloat16VectorFMAAccumSpill::fmaAccum @ bci:582 (line 131)
[2026-08-18T02:43:54.227Z] * 6510 MemToRegSpillCopy === _ 1130
[[ 1129 ]] vectorz<S,32> !jvms: Float16Vector::lanewiseTemplate @ bci:70 (line
1112) Float16Vector512::lanewise @ bci:4 (line 318) Float16Vector512::lanewise
@ bci:4 (line 42) TestFloat16VectorFMAAccumSpill::fmaAccum @ bci:582 (line 131)
[2026-08-18T02:43:54.227Z] * 6630 MemToRegSpillCopy === _ 1121
[[ 1120 ]] vectorz<S,32> !jvms: Float16Vector::lanewiseTemplate @ bci:70 (line
1112) Float16Vector512::lanewise @ bci:4 (line 318) Float16Vector512::lanewise
@ bci:4 (line 42) TestFloat16VectorFMAAccumSpill::fmaAccum @ bci:582 (line 131)
[2026-08-18T02:43:54.227Z] * 6754 MemToRegSpillCopy === _ 1112
[[ 1111 ]] vectorz<S,32> !jvms: Float16Vector::lanewiseTemplate @ bci:70 (line
1112) Float16Vector512::lanewise @ bci:4 (line 318) Float16Vector512::lanewise
@ bci:4 (line 42) TestFloat16VectorFMAAccumSpill::fmaAccum @ bci:582 (line 131)
[2026-08-18T02:43:54.228Z] * 6882 MemToRegSpillCopy === _ 1103
[[ 1102 ]] vectorz<S,32> !jvms: Float16Vector::lanewiseTemplate @ bci:70 (line
1112) Float16Vector512::lanewise @ bci:4 (line 318) Float16Vector512::lanewise
@ bci:4 (line 42) TestFloat16VectorFMAAccumSpill::fmaAccum @ bci:582 (line 131)
[2026-08-18T02:43:54.228Z] * 7014 MemToRegSpillCopy === _ 1094
[[ 1093 ]] vectorz<S,32> !jvms: Float16Vector::lanewiseTemplate @ bci:70 (line
1112) Float16Vector512::lanewise @ bci:4 (line 318) Float16Vector512::lanewise
@ bci:4 (line 42) TestFloat16VectorFMAAccumSpill::fmaAccum @ bci:582 (line 131)
[2026-08-18T02:43:54.228Z] * 7147 MemToRegSpillCopy === _ 1085
[[ 1084 ]] vectorz<S,32> !jvms: Float16Vector::lanewiseTemplate @ bci:70 (line
1112) Float16Vector512::lanewise @ bci:4 (line 318) Float16Vector512::lanewise
@ bci:4 (line 42) TestFloat16VectorFMAAccumSpill::fmaAccum @ bci:582 (line 131)
[2026-08-18T02:43:54.229Z] * 7280 MemToRegSpillCopy === _ 1076
[[ 1075 ]] vectorz<S,32> !jvms: Float16Vector::lanewiseTemplate @ bci:70 (line
1112) Float16Vector512::lanewise @ bci:4 (line 318) Float16Vector512::lanewise
@ bci:4 (line 42) TestFloat16VectorFMAAccumSpill::fmaAccum @ bci:582 (line 131)
[2026-08-18T02:43:54.229Z]
[2026-08-18T02:43:54.229Z] >>> Check stdout for compilation output of the
failed methods
The trigger is assertions. The test passes with
`make test
TEST=test/hotspot/jtreg/compiler/vectorapi/TestFloat16VectorFMAAccumSpill.java`
because hotspot targets set `hotspot_JTREG_ASSERT := false` in
make/RunTests.gmk, i.e. no `-ea -esa`. It fails when jtreg is invoked with `-ea
-esa`, which is what our CI does.
I’m not sure whether this is a bug or whether it’s worth fixing. Could you take
a look?
-------------
PR Comment: https://git.openjdk.org/jdk/pull/31724#issuecomment-5391431370