From: Richard Biener Date: Thu, 9 Nov 2023 10:44:07 +0000 (+0100) Subject: tree-optimization/112450 - avoid AVX512 style masking for BImode masks X-Git-Tag: basepoints/gcc-15~4862 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8863a7990e9f0cd49c8900605a2c75a0e8886e85;p=thirdparty%2Fgcc.git tree-optimization/112450 - avoid AVX512 style masking for BImode masks The following avoids running into the AVX512 style masking code for RVV which would theoretically be able to handle it if I were not relying on integer mode maskness in vect_get_loop_mask. While that's easy to fix (patch in PR), the preference is to not have AVX512 style masking for RVV, thus the following. * tree-vect-loop.cc (vect_verify_full_masking_avx512): Check we have integer mode masks as required by vect_get_loop_mask. --- diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index a544bc9b0599..8abc1937d740 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -1462,7 +1462,10 @@ vect_verify_full_masking_avx512 (loop_vec_info loop_vinfo) if (!mask_type) continue; - if (TYPE_PRECISION (TREE_TYPE (mask_type)) != 1) + /* For now vect_get_loop_mask only supports integer mode masks + when we need to split it. */ + if (GET_MODE_CLASS (TYPE_MODE (mask_type)) != MODE_INT + || TYPE_PRECISION (TREE_TYPE (mask_type)) != 1) { ok = false; break;