https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114471
Hongtao Liu <liuhongt at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |liuhongt at gcc dot gnu.org --- Comment #5 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- Maybe we should always use kmask under AVX512, currently only >= 128-bits vector of vector _Float16 use kmask, < 128 bits vector still use vector mask. 24628 /* Scalar mask case. */ 24629 if ((TARGET_AVX512F && TARGET_EVEX512 && vector_size == 64) 24630 || (TARGET_AVX512VL && (vector_size == 32 || vector_size == 16)) 24631 /* AVX512FP16 only supports vector comparison 24632 to kmask for _Float16. */ 24633 || (TARGET_AVX512VL && TARGET_AVX512FP16 24634 && GET_MODE_INNER (data_mode) == E_HFmode)) 24635 { 24636 if (elem_size == 4 24637 || elem_size == 8 24638 || (TARGET_AVX512BW && (elem_size == 1 || elem_size == 2))) 24639 return smallest_int_mode_for_size (nunits); 24640 } 24641 24642 scalar_int_mode elem_mode 24643 = smallest_int_mode_for_size (elem_size * BITS_PER_UNIT); 24644 24645 gcc_assert (elem_size * nunits == vector_size); 24646 24647 return mode_for_vector (elem_mode, nunits);