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