Integrated: 8321712: C2: "failed: Multiple uses of register" in C2_MacroAssembler::vminmax_fp

Sandhya Viswanathan sviswanathan at openjdk.org
Thu Jan 11 16:57:34 UTC 2024


On Tue, 9 Jan 2024 00:01:04 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:

> The C2_MacroAssembler::vminmax_fp and evminmax_fp were incorrectly checking for the two USE operand registers to be different and thus resulting in assertion failure.
> 
> In x86_64.ad:
> 
> instruct maxF_reg(legRegF dst, legRegF a, legRegF b, legRegF tmp, legRegF atmp, legRegF btmp) %{
>   ...
>   effect(USE a, USE b, TEMP tmp, TEMP atmp, TEMP btmp);
>   ...
>     __ vminmax_fp(Op_MaxV, T_FLOAT, $dst$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, Assembler::AVX_128bit);
> %}
> 
> 
> Changing the assert in vminmax_fp from:
>   assert_different_registers(a, b, tmp, atmp, btmp);
> to:
>   assert_different_registers(a, tmp, atmp, btmp);
>   assert_different_registers(b, tmp, atmp, btmp);
> fixes the issue.
> 
> Similar change done in evminmax_fp.
> 
> Please review.
> 
> Best Regards,
> Sandhya

This pull request has now been integrated.

Changeset: e10d1400
Author:    Sandhya Viswanathan <sviswanathan at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/e10d14004fa25998231ab1d2611b75aea9b5c67d
Stats:     16 lines in 2 files changed: 14 ins; 0 del; 2 mod

8321712: C2: "failed: Multiple uses of register" in C2_MacroAssembler::vminmax_fp

Co-authored-by: Volodymyr Paprotski <vpaprotski at openjdk.org>
Reviewed-by: kvn, thartmann, epeter, jbhateja

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

PR: https://git.openjdk.org/jdk/pull/17315


More information about the hotspot-compiler-dev mailing list