RFR: 8351950: C2: AVX512 vector assembler routines causing SIGFPE / no valid evex tuple_table entry [v3]
Jatin Bhateja
jbhateja at openjdk.org
Wed May 21 01:05:25 UTC 2025
On Tue, 20 May 2025 20:21:07 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:
>> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Review comments resolutions
>
> src/hotspot/cpu/x86/assembler_x86.cpp line 5355:
>
>> 5353: assert(dst != xnoreg, "sanity");
>> 5354: InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
>> 5355: attributes.set_address_attributes(/* tuple_type */ EVEX_QVM, /* input_size_in_bits */ EVEX_NObit);
>
> This should have remained as EVEX_HVM.
Correct.
https://www.felixcloutier.com/x86/pmovzx#:~:text=VPMOVZXBW%20xmm1%20%7Bk1%7D%7Bz%7D%2C%20xmm2/m64-,B,-V/V
https://www.felixcloutier.com/x86/pmovzx#:~:text=N/A-,B,Half%20Mem,-ModRM%3Areg%20(w
Good.
> src/hotspot/cpu/x86/assembler_x86.cpp line 5384:
>
>> 5382: InstructionMark im(this);
>> 5383: InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true);
>> 5384: attributes.set_address_attributes(/* tuple_type */ EVEX_QVM, /* input_size_in_bits */ EVEX_NObit);
>
> This should have remained as EVEX_HVM.
https://www.felixcloutier.com/x86/pmovzx#:~:text=VPMOVZXBW%20zmm1%20%7Bk1%7D%7Bz%7D%2C%20ymm2/m256-,B,-V/V
https://www.felixcloutier.com/x86/pmovzx#:~:text=N/A-,B,Half%20Mem,-ModRM%3Areg%20(w
Good
> src/hotspot/cpu/x86/assembler_x86.cpp line 6089:
>
>> 6087: InstructionMark im(this);
>> 6088: InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ _legacy_mode_vlbw, /* no_mask_reg */ true, /* uses_vl */ true);
>> 6089: attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_NObit);
>
> This should have remained as EVEX_FVM.
Good
> src/hotspot/cpu/x86/assembler_x86.cpp line 11395:
>
>> 11393: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), "");
>> 11394: InstructionAttr attributes(vector_len, /* vex_w */ false,/* legacy_mode */ false, /* no_mask_reg */ false,/* uses_vl */ true);
>> 11395: attributes.set_address_attributes(/* tuple_type */ EVEX_FV,/* input_size_in_bits */ EVEX_NObit);
>
> This should have remained as EVEX_FVM.
Correct,
https://www.felixcloutier.com/x86/pabsb:pabsw:pabsd:pabsq#:~:text=EVEX.512.66.0F38.WIG%201C%20/r%20VPABSB%20zmm1%20%7Bk1%7D%7Bz%7D%2C%20zmm2/m512
Good.
> src/hotspot/cpu/x86/assembler_x86.cpp line 11423:
>
>> 11421: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), "");
>> 11422: InstructionAttr attributes(vector_len, /* vex_w */ false,/* legacy_mode */ false, /* no_mask_reg */ false,/* uses_vl */ true);
>> 11423: attributes.set_address_attributes(/* tuple_type */ EVEX_FV,/* input_size_in_bits */ EVEX_NObit);
>
> This should have remained as EVEX_FVM.
Correct,
It does not have an embedded broadcasting variant.
https://www.felixcloutier.com/x86/pabsb:pabsw:pabsd:pabsq#:~:text=EVEX.512.66.0F38.WIG%201D%20/r%20VPABSW%20zmm1%20%7Bk1%7D%7Bz%7D%2C%20zmm2/m512
Good.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25021#discussion_r2099102197
PR Review Comment: https://git.openjdk.org/jdk/pull/25021#discussion_r2099102266
PR Review Comment: https://git.openjdk.org/jdk/pull/25021#discussion_r2099102793
PR Review Comment: https://git.openjdk.org/jdk/pull/25021#discussion_r2099102382
PR Review Comment: https://git.openjdk.org/jdk/pull/25021#discussion_r2099102325
More information about the hotspot-compiler-dev
mailing list