re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
PR target/82855 * config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator. (*cmp<mode>_ccz_1): New insn with $k alternative. * gcc.target/i386/avx512dq-pr82855.c: New test. From-SVN: r254510
This commit is contained in:
parent
682d3a4076
commit
acd377795f
4 changed files with 43 additions and 0 deletions
|
@ -1,5 +1,9 @@
|
|||
2017-11-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/82855
|
||||
* config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
|
||||
(*cmp<mode>_ccz_1): New insn with $k alternative.
|
||||
|
||||
PR target/82855
|
||||
* config/i386/i386.c (ix86_swap_binary_operands_p): Treat
|
||||
RTX_COMM_COMPARE as commutative as well.
|
||||
|
|
|
@ -1275,6 +1275,26 @@
|
|||
(compare:CC (match_operand:SWI48 0 "nonimmediate_operand")
|
||||
(match_operand:SWI48 1 "<general_operand>")))])
|
||||
|
||||
(define_mode_iterator SWI1248_AVX512BWDQ2_64
|
||||
[(QI "TARGET_AVX512DQ") (HI "TARGET_AVX512DQ")
|
||||
(SI "TARGET_AVX512BW") (DI "TARGET_AVX512BW && TARGET_64BIT")])
|
||||
|
||||
(define_insn "*cmp<mode>_ccz_1"
|
||||
[(set (reg FLAGS_REG)
|
||||
(compare (match_operand:SWI1248_AVX512BWDQ2_64 0
|
||||
"nonimmediate_operand" "<r>,?m<r>,$k")
|
||||
(match_operand:SWI1248_AVX512BWDQ2_64 1 "const0_operand")))]
|
||||
"ix86_match_ccmode (insn, CCZmode)"
|
||||
"@
|
||||
test{<imodesuffix>}\t%0, %0
|
||||
cmp{<imodesuffix>}\t{%1, %0|%0, %1}
|
||||
ktest<mskmodesuffix>\t%0, %0"
|
||||
[(set_attr "type" "test,icmp,msklog")
|
||||
(set_attr "length_immediate" "0,1,*")
|
||||
(set_attr "modrm_class" "op0,unknown,*")
|
||||
(set_attr "prefix" "*,*,vex")
|
||||
(set_attr "mode" "<MODE>")])
|
||||
|
||||
(define_insn "*cmp<mode>_ccno_1"
|
||||
[(set (reg FLAGS_REG)
|
||||
(compare (match_operand:SWI 0 "nonimmediate_operand" "<r>,?m<r>")
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-11-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/82855
|
||||
* gcc.target/i386/avx512dq-pr82855.c: New test.
|
||||
|
||||
2017-11-07 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/80425
|
||||
|
|
14
gcc/testsuite/gcc.target/i386/avx512dq-pr82855.c
Normal file
14
gcc/testsuite/gcc.target/i386/avx512dq-pr82855.c
Normal file
|
@ -0,0 +1,14 @@
|
|||
/* PR target/82855 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mavx512vl -mavx512dq" } */
|
||||
/* { dg-final { scan-assembler {\mktestb\M} } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
int
|
||||
foo (const __m256i *ptr)
|
||||
{
|
||||
__m256i v = _mm256_loadu_si256 (ptr);
|
||||
__mmask8 m = _mm256_cmpeq_epi32_mask (v, _mm256_setzero_si256 ());
|
||||
return 0 == m;
|
||||
}
|
Loading…
Add table
Reference in a new issue