Hello, If masked variant of vpopcnt[w,q] is being issued: there's no way for reload to put 32/64 bit mask into mask register, since kmov[d,q] are only available under -mavx512bw switch.
We can insist user to issue -mavx512bw along w/ -mavx512bitalg if she is going to use masked variants of corresponding intrinsics. gcc/testsuite PR target/83828 * gcc.target/i386/avx512bitalg-vpopcntb-1.c: Fix test. * gcc.target/i386/avx512bitalg-vpopcntw-1.c: Ditto. * gcc.target/i386/avx512bitalgvl-vpopcntb-1.c: Ditto. * gcc.target/i386/avx512bitalgvl-vpopcntw-1.c: Ditto. Bootstrapped & regtested. Checked into main trunk. -- Thanks, K Index: gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c (revision 257172) +++ gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c (working copy) @@ -1,6 +1,7 @@ /* { dg-do run } */ -/* { dg-options "-O2 -mavx512bitalg" } */ +/* { dg-options "-O2 -mavx512bitalg -mavx512bw" } */ /* { dg-require-effective-target avx512bitalg } */ +/* { dg-require-effective-target avx512bw } */ #include "avx512f-helper.h" Index: gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c (revision 257172) +++ gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c (working copy) @@ -1,6 +1,7 @@ /* { dg-do run } */ -/* { dg-options "-O2 -mavx512bitalg" } */ +/* { dg-options "-O2 -mavx512bitalg -mavx512bw" } */ /* { dg-require-effective-target avx512bitalg } */ +/* { dg-require-effective-target avx512bw } */ #include "avx512f-helper.h" Index: gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntb-1.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntb-1.c (revision 257172) +++ gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntb-1.c (working copy) @@ -1,7 +1,8 @@ /* { dg-do run } */ -/* { dg-options "-O2 -mavx512vl -mavx512bitalg" } */ +/* { dg-options "-O2 -mavx512vl -mavx512bitalg -mavx512bw" } */ /* { dg-require-effective-target avx512vl } */ /* { dg-require-effective-target avx512bitalg } */ +/* { dg-require-effective-target avx512bw } */ #define AVX512VL #define AVX512F_LEN 256 Index: gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntw-1.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntw-1.c (revision 257172) +++ gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntw-1.c (working copy) @@ -1,7 +1,8 @@ /* { dg-do run } */ -/* { dg-options "-O2 -mavx512vl -mavx512bitalg" } */ +/* { dg-options "-O2 -mavx512vl -mavx512bitalg -mavx512bw" } */ /* { dg-require-effective-target avx512vl } */ /* { dg-require-effective-target avx512bitalg } */ +/* { dg-require-effective-target avx512bw } */ #define AVX512VL #define AVX512F_LEN 256