Add vect_recog_popcount_pattern to handle mismatch between the vectorized popcount...
authorliuhongt <hongtao.liu@intel.com>
Wed, 16 Jun 2021 09:34:43 +0000 (17:34 +0800)
committerliuhongt <hongtao.liu@intel.com>
Tue, 22 Jun 2021 02:40:11 +0000 (10:40 +0800)
commite08a125b208e717f99caa991052537305ca75b6a
treeec363835ab057252d5648807ab2180610442a92a
parentf51618f301664d02cc41205f1386c0c9b9a29a54
Add vect_recog_popcount_pattern to handle mismatch between the vectorized popcount IFN and scalar popcount builtin.

The patch remove those pro- and demotions when backend support direct
optab.

For i386: it enables vectorization for vpopcntb/vpopcntw and optimized
for vpopcntq.

gcc/ChangeLog:

PR tree-optimization/97770
* tree-vect-patterns.c (vect_recog_popcount_pattern):
New.
(vect_recog_func vect_vect_recog_func_ptrs): Add new pattern.

gcc/testsuite/ChangeLog:

PR tree-optimization/97770
* gcc.target/i386/avx512bitalg-pr97770-1.c: Remove xfail.
* gcc.target/i386/avx512vpopcntdq-pr97770-1.c: Remove xfail.
gcc/testsuite/gcc.target/i386/avx512bitalg-pr97770-1.c
gcc/testsuite/gcc.target/i386/avx512vpopcntdq-pr97770-1.c
gcc/tree-vect-patterns.c