From 7082a7621aff206af0073cc44a5991b5c221e2d0 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 19 Feb 2016 08:56:36 +0100 Subject: [PATCH] re PR target/69671 (FAIL: gcc.target/i386/avx512vl-vpmovqb-1.c scan-assembler-times vpmovqb[ \\t]+[^{\n]*%ymm[0-9]+[^\n]*%xmm[0-9]+{%k[1-7]}{z}(?) PR target/69671 * config/i386/sse.md (*floatv2div2sf2_mask_1, *avx512vl_v2div2qi2_mask_1, *avx512vl_v4qi2_mask_1, *avx512vl_v8qi2_mask_1, *avx512vl_v4hi2_mask_1, *avx512vl_v2div2hi2_mask_1, *avx512vl_v2div2si2_mask_1, *avx512f_v8div16qi2_mask_1): New insns. From-SVN: r233545 --- gcc/ChangeLog | 9 +++ gcc/config/i386/sse.md | 148 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 69195f73b7a..22ab5cd9ab2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2016-02-18 Jakub Jelinek + + PR target/69671 + * config/i386/sse.md (*floatv2div2sf2_mask_1, + *avx512vl_v2div2qi2_mask_1, *avx512vl_v4qi2_mask_1, + *avx512vl_v8qi2_mask_1, *avx512vl_v4hi2_mask_1, + *avx512vl_v2div2hi2_mask_1, *avx512vl_v2div2si2_mask_1, + *avx512f_v8div16qi2_mask_1): New insns. + 2016-02-18 Michael Meissner PR target/68404 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 045a85f0ac3..79c387f42e4 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -4962,6 +4962,21 @@ (set_attr "prefix" "evex") (set_attr "mode" "V4SF")]) +(define_insn "*floatv2div2sf2_mask_1" + [(set (match_operand:V4SF 0 "register_operand" "=v") + (vec_concat:V4SF + (vec_merge:V2SF + (any_float:V2SF (match_operand:V2DI 1 + "nonimmediate_operand" "vm")) + (const_vector:V2SF [(const_int 0) (const_int 0)]) + (match_operand:QI 2 "register_operand" "Yk")) + (const_vector:V2SF [(const_int 0) (const_int 0)])))] + "TARGET_AVX512DQ && TARGET_AVX512VL" + "vcvtqq2ps{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}" + [(set_attr "type" "ssecvt") + (set_attr "prefix" "evex") + (set_attr "mode" "V4SF")]) + (define_insn "ufloat2" [(set (match_operand:VF2_512_256VL 0 "register_operand" "=v") (unsigned_float:VF2_512_256VL @@ -9150,6 +9165,27 @@ (set_attr "prefix" "evex") (set_attr "mode" "TI")]) +(define_insn "*avx512vl_v2div2qi2_mask_1" + [(set (match_operand:V16QI 0 "register_operand" "=v") + (vec_concat:V16QI + (vec_merge:V2QI + (any_truncate:V2QI + (match_operand:V2DI 1 "register_operand" "v")) + (const_vector:V2QI [(const_int 0) (const_int 0)]) + (match_operand:QI 2 "register_operand" "Yk")) + (const_vector:V14QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "TARGET_AVX512VL" + "vpmovqb\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "TI")]) + (define_insn "avx512vl_v2div2qi2_mask_store" [(set (match_operand:V16QI 0 "memory_operand" "=m") (vec_concat:V16QI @@ -9219,6 +9255,27 @@ (set_attr "prefix" "evex") (set_attr "mode" "TI")]) +(define_insn "*avx512vl_v4qi2_mask_1" + [(set (match_operand:V16QI 0 "register_operand" "=v") + (vec_concat:V16QI + (vec_merge:V4QI + (any_truncate:V4QI + (match_operand:VI4_128_8_256 1 "register_operand" "v")) + (const_vector:V4QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + (match_operand:QI 2 "register_operand" "Yk")) + (const_vector:V12QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "TARGET_AVX512VL" + "vpmov\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "TI")]) + (define_insn "avx512vl_v4qi2_mask_store" [(set (match_operand:V16QI 0 "memory_operand" "=m") (vec_concat:V16QI @@ -9289,6 +9346,27 @@ (set_attr "prefix" "evex") (set_attr "mode" "TI")]) +(define_insn "*avx512vl_v8qi2_mask_1" + [(set (match_operand:V16QI 0 "register_operand" "=v") + (vec_concat:V16QI + (vec_merge:V8QI + (any_truncate:V8QI + (match_operand:VI2_128_BW_4_256 1 "register_operand" "v")) + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + (match_operand:QI 2 "register_operand" "Yk")) + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "TARGET_AVX512VL" + "vpmov\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "TI")]) + (define_insn "avx512vl_v8qi2_mask_store" [(set (match_operand:V16QI 0 "memory_operand" "=m") (vec_concat:V16QI @@ -9370,6 +9448,23 @@ (set_attr "prefix" "evex") (set_attr "mode" "TI")]) +(define_insn "*avx512vl_v4hi2_mask_1" + [(set (match_operand:V8HI 0 "register_operand" "=v") + (vec_concat:V8HI + (vec_merge:V4HI + (any_truncate:V4HI + (match_operand:VI4_128_8_256 1 "register_operand" "v")) + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + (match_operand:QI 2 "register_operand" "Yk")) + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "TARGET_AVX512VL" + "vpmov\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "TI")]) + (define_insn "avx512vl_v4hi2_mask_store" [(set (match_operand:V8HI 0 "memory_operand" "=m") (vec_concat:V8HI @@ -9428,6 +9523,23 @@ (set_attr "prefix" "evex") (set_attr "mode" "TI")]) +(define_insn "*avx512vl_v2div2hi2_mask_1" + [(set (match_operand:V8HI 0 "register_operand" "=v") + (vec_concat:V8HI + (vec_merge:V2HI + (any_truncate:V2HI + (match_operand:V2DI 1 "register_operand" "v")) + (const_vector:V2HI [(const_int 0) (const_int 0)]) + (match_operand:QI 2 "register_operand" "Yk")) + (const_vector:V6HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "TARGET_AVX512VL" + "vpmovqw\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "TI")]) + (define_insn "avx512vl_v2div2hi2_mask_store" [(set (match_operand:V8HI 0 "memory_operand" "=m") (vec_concat:V8HI @@ -9494,6 +9606,21 @@ (set_attr "prefix" "evex") (set_attr "mode" "TI")]) +(define_insn "*avx512vl_v2div2si2_mask_1" + [(set (match_operand:V4SI 0 "register_operand" "=v") + (vec_concat:V4SI + (vec_merge:V2SI + (any_truncate:V2SI + (match_operand:V2DI 1 "register_operand" "v")) + (const_vector:V2SI [(const_int 0) (const_int 0)]) + (match_operand:QI 2 "register_operand" "Yk")) + (const_vector:V2SI [(const_int 0) (const_int 0)])))] + "TARGET_AVX512VL" + "vpmovqd\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "TI")]) + (define_insn "avx512vl_v2div2si2_mask_store" [(set (match_operand:V4SI 0 "memory_operand" "=m") (vec_concat:V4SI @@ -9570,6 +9697,27 @@ (set_attr "prefix" "evex") (set_attr "mode" "TI")]) +(define_insn "*avx512f_v8div16qi2_mask_1" + [(set (match_operand:V16QI 0 "register_operand" "=v") + (vec_concat:V16QI + (vec_merge:V8QI + (any_truncate:V8QI + (match_operand:V8DI 1 "register_operand" "v")) + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + (match_operand:QI 2 "register_operand" "Yk")) + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "TARGET_AVX512F" + "vpmovqb\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "TI")]) + (define_insn "avx512f_v8div16qi2_mask_store" [(set (match_operand:V16QI 0 "memory_operand" "=m") (vec_concat:V16QI -- 2.30.2