x86/AVX512: improve generated code for mask-to-vector-register conversions
authorJan Beulich <jbeulich@suse.com>
Tue, 23 Jul 2019 08:07:49 +0000 (08:07 +0000)
committerJan Beulich <jbeulich@gcc.gnu.org>
Tue, 23 Jul 2019 08:07:49 +0000 (08:07 +0000)
commit58b8c5a87b0bac61bb88e802fc742fdc0d3e6699
tree8e693b05ac236d1496ab64062007d2e5fceff355
parentb1bc0f50350a568e67ed731c4fec2c72847f15fe
x86/AVX512: improve generated code for mask-to-vector-register conversions

Conversion of comparison results to full vectors does, when VPMOVM2* are
unavailable, not require any intermediate VMOVDQ{A,U}*: Simply use
embedded masking on VPTERNLOG* right away, which is available with
AVX512F (while VPMOVM2{D,Q} are available only with AVX512DQ).

Note that the chosen immediate is only one of many possible ones; I was
trying to make the insn here distinguishable from the pre-existing uses
of vpternlog.

gcc/
2019-07-23  Jan Beulich  <jbeulich@suse.com>

* config/i386/sse.md (<avx512>_cvtmask2<ssemodesuffix><mode>):
Require only AVX512F.
(*<avx512>_cvtmask2<ssemodesuffix><mode>): Likewise.  Add
alternative expanding to vpternlog.

From-SVN: r273719
gcc/ChangeLog
gcc/config/i386/sse.md