RFR: 8373724: Assertion failure in TestSignumVector.java with UseAPX [v5]

Sandhya Viswanathan sviswanathan at openjdk.org
Mon Jan 5 21:43:30 UTC 2026


On Mon, 5 Jan 2026 17:50:10 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

>> Existing demotable instruction patterns for negI/L_rReg_ndd have 'src' as their second operand, this leads to an failure during register biasing. Changing the NDD demotion flags names to encode explicit operand position i.e. **Flag_ndd_demotable_opr1 and Flag_ndd_demotable_opr2** , splitting commutative flag into seperate new flags and fine tuning assertion checks based on new naming convention fixes the issue.
>> 
>> Failing test test/hotspot/jtreg/compiler/vectorization/TestSignumVector.java passes with the patch.
>> 
>> Kindly review and share your feedback.
>> 
>> Best Regards,
>> Jatin
>> PS: Validation performed using Intel SDE 9.58.
>
> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Update copyright

src/hotspot/cpu/x86/x86.ad line 9947:

> 9945:   match(Set dst (AddI src1 (LoadI src2)));
> 9946:   effect(KILL cr);
> 9947:   flag(PD::Flag_sets_overflow_flag, PD::Flag_sets_sign_flag, PD::Flag_sets_zero_flag, PD::Flag_sets_carry_flag, PD::Flag_sets_parity_flag, PD::Flag_ndd_demotable_opr1, PD::Flag_ndd_demotable_opr2);

Remove PD::Flag_ndd_demotable_opr2 as the second operand is a memory operand.

src/hotspot/cpu/x86/x86.ad line 10237:

> 10235:   match(Set dst (AddL src1 (LoadL src2)));
> 10236:   effect(KILL cr);
> 10237:   flag(PD::Flag_sets_overflow_flag, PD::Flag_sets_sign_flag, PD::Flag_sets_zero_flag, PD::Flag_sets_carry_flag, PD::Flag_sets_parity_flag, PD::Flag_ndd_demotable_opr1, PD::Flag_ndd_demotable_opr2);

Remove PD::Flag_ndd_demotable_opr2 as the second operand is a memory operand.

src/hotspot/cpu/x86/x86.ad line 11585:

> 11583:   match(Set dst (MulL src1 (LoadL src2)));
> 11584:   effect(KILL cr);
> 11585:   flag(PD::Flag_ndd_demotable_opr1, PD::Flag_ndd_demotable_opr2);

Remove PD::Flag_ndd_demotable_opr2 as the second operand is a memory operand.

src/hotspot/cpu/x86/x86.ad line 13038:

> 13036:   match(Set dst (AndI src1 (LoadI src2)));
> 13037:   effect(KILL cr);
> 13038:   flag(PD::Flag_sets_sign_flag, PD::Flag_sets_zero_flag, PD::Flag_sets_parity_flag, PD::Flag_clears_overflow_flag, PD::Flag_clears_carry_flag, PD::Flag_ndd_demotable_opr1, PD::Flag_ndd_demotable_opr2);

Remove PD::Flag_ndd_demotable_opr2 as the second operand is a memory operand.

src/hotspot/cpu/x86/x86.ad line 13683:

> 13681:   match(Set dst (AndL src1 (LoadL src2)));
> 13682:   effect(KILL cr);
> 13683:   flag(PD::Flag_sets_sign_flag, PD::Flag_sets_zero_flag, PD::Flag_sets_parity_flag, PD::Flag_clears_overflow_flag, PD::Flag_clears_carry_flag, PD::Flag_ndd_demotable_opr1, PD::Flag_ndd_demotable_opr2);

Remove PD::Flag_ndd_demotable_opr2 as the second operand is a memory operand.

src/hotspot/cpu/x86/x86.ad line 14000:

> 13998:   match(Set dst (OrL src1 (LoadL src2)));
> 13999:   effect(KILL cr);
> 14000:   flag(PD::Flag_sets_sign_flag, PD::Flag_sets_zero_flag, PD::Flag_sets_parity_flag, PD::Flag_clears_overflow_flag, PD::Flag_clears_carry_flag, PD::Flag_ndd_demotable_opr1, PD::Flag_ndd_demotable_opr2);

Remove PD::Flag_ndd_demotable_opr2 as the second operand is a memory operand.

src/hotspot/cpu/x86/x86.ad line 14182:

> 14180:   match(Set dst (XorL src1 (LoadL src2)));
> 14181:   effect(KILL cr);
> 14182:   flag(PD::Flag_sets_sign_flag, PD::Flag_sets_zero_flag, PD::Flag_sets_parity_flag, PD::Flag_clears_overflow_flag, PD::Flag_clears_carry_flag, PD::Flag_ndd_demotable_opr1, PD::Flag_ndd_demotable_opr2);

Remove PD::Flag_ndd_demotable_opr2 here as the second operand is a memory operand.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28999#discussion_r2662838200
PR Review Comment: https://git.openjdk.org/jdk/pull/28999#discussion_r2662836624
PR Review Comment: https://git.openjdk.org/jdk/pull/28999#discussion_r2662831056
PR Review Comment: https://git.openjdk.org/jdk/pull/28999#discussion_r2662827932
PR Review Comment: https://git.openjdk.org/jdk/pull/28999#discussion_r2662821662
PR Review Comment: https://git.openjdk.org/jdk/pull/28999#discussion_r2662367856
PR Review Comment: https://git.openjdk.org/jdk/pull/28999#discussion_r2662358281


More information about the hotspot-compiler-dev mailing list