RFR: 8321712: C2: "failed: Multiple uses of register" in C2_MacroAssembler::vminmax_fp [v5]
Tobias Hartmann
thartmann at openjdk.org
Thu Jan 11 06:52:23 UTC 2024
On Tue, 9 Jan 2024 23:46:45 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
>
> Sandhya Viswanathan has updated the pull request incrementally with one additional commit since the last revision:
>
> copyright year update
Testing all passed.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17315#issuecomment-1886401306
More information about the hotspot-compiler-dev
mailing list