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);

Reply via email to