From f7be73c86287ab5b8c8121732d3ab6249415a429 Mon Sep 17 00:00:00 2001 From: Alexander Ivchenko Date: Wed, 10 Sep 2014 07:05:31 +0000 Subject: [PATCH] AVX-512. Add patterns for compress, expand. gcc/ * config/i386/sse.md (define_mode_iterator VI48F): New. (define_insn "_compress_mask"): Rename from "avx512f_compress_mask" and update mode iterator. (define_insn "_compressstore_mask"): Rename from "avx512f_compressstore_mask" and update mode iterator. (define_expand "_expand_maskz"): Rename from "avx512f_expand_maskz" and update mode iterator. (define_insn "_expand_mask"): Rename from "avx512f_expand_mask" and update mode iterator. Co-Authored-By: Andrey Turetskiy Co-Authored-By: Anna Tikhonova Co-Authored-By: Ilya Tocar Co-Authored-By: Ilya Verbin Co-Authored-By: Kirill Yukhin Co-Authored-By: Maxim Kuznetsov Co-Authored-By: Michael Zolotukhin From-SVN: r215108 --- gcc/ChangeLog | 20 +++++++++++++++++++ gcc/config/i386/sse.md | 44 ++++++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7668aab8420..1e518056e79 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2014-09-10 Alexander Ivchenko + Maxim Kuznetsov + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md + (define_mode_iterator VI48F): New. + (define_insn "_compress_mask"): Rename from + "avx512f_compress_mask" and update mode iterator. + (define_insn "_compressstore_mask"): Rename from + "avx512f_compressstore_mask" and update mode iterator. + (define_expand "_expand_maskz"): Rename from + "avx512f_expand_maskz" and update mode iterator. + (define_insn "_expand_mask"): Rename from + "avx512f_expand_mask" and update mode iterator. + 2014-09-10 Alexander Ivchenko Maxim Kuznetsov Anna Tikhonova diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 78276b79670..42f6f188ee2 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -517,6 +517,12 @@ (V16SI "TARGET_AVX512F") (V16SF "TARGET_AVX512F") (V8DI "TARGET_AVX512F") (V8DF "TARGET_AVX512F")]) (define_mode_iterator VI48F_512 [V16SI V16SF V8DI V8DF]) +(define_mode_iterator VI48F + [V16SI V16SF V8DI V8DF + (V8SI "TARGET_AVX512VL") (V8SF "TARGET_AVX512VL") + (V4DI "TARGET_AVX512VL") (V4DF "TARGET_AVX512VL") + (V4SI "TARGET_AVX512VL") (V4SF "TARGET_AVX512VL") + (V2DI "TARGET_AVX512VL") (V2DF "TARGET_AVX512VL")]) ;; Mapping from float mode to required SSE level (define_mode_attr sse @@ -16736,11 +16742,11 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_compress_mask" - [(set (match_operand:VI48F_512 0 "register_operand" "=v") - (unspec:VI48F_512 - [(match_operand:VI48F_512 1 "register_operand" "v") - (match_operand:VI48F_512 2 "vector_move_operand" "0C") +(define_insn "_compress_mask" + [(set (match_operand:VI48F 0 "register_operand" "=v") + (unspec:VI48F + [(match_operand:VI48F 1 "register_operand" "v") + (match_operand:VI48F 2 "vector_move_operand" "0C") (match_operand: 3 "register_operand" "Yk")] UNSPEC_COMPRESS))] "TARGET_AVX512F" @@ -16749,10 +16755,10 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_compressstore_mask" - [(set (match_operand:VI48F_512 0 "memory_operand" "=m") - (unspec:VI48F_512 - [(match_operand:VI48F_512 1 "register_operand" "x") +(define_insn "_compressstore_mask" + [(set (match_operand:VI48F 0 "memory_operand" "=m") + (unspec:VI48F + [(match_operand:VI48F 1 "register_operand" "x") (match_dup 0) (match_operand: 2 "register_operand" "Yk")] UNSPEC_COMPRESS_STORE))] @@ -16763,21 +16769,21 @@ (set_attr "memory" "store") (set_attr "mode" "")]) -(define_expand "avx512f_expand_maskz" - [(set (match_operand:VI48F_512 0 "register_operand") - (unspec:VI48F_512 - [(match_operand:VI48F_512 1 "nonimmediate_operand") - (match_operand:VI48F_512 2 "vector_move_operand") +(define_expand "_expand_maskz" + [(set (match_operand:VI48F 0 "register_operand") + (unspec:VI48F + [(match_operand:VI48F 1 "nonimmediate_operand") + (match_operand:VI48F 2 "vector_move_operand") (match_operand: 3 "register_operand")] UNSPEC_EXPAND))] "TARGET_AVX512F" "operands[2] = CONST0_RTX (mode);") -(define_insn "avx512f_expand_mask" - [(set (match_operand:VI48F_512 0 "register_operand" "=v,v") - (unspec:VI48F_512 - [(match_operand:VI48F_512 1 "nonimmediate_operand" "v,m") - (match_operand:VI48F_512 2 "vector_move_operand" "0C,0C") +(define_insn "_expand_mask" + [(set (match_operand:VI48F 0 "register_operand" "=v,v") + (unspec:VI48F + [(match_operand:VI48F 1 "nonimmediate_operand" "v,m") + (match_operand:VI48F 2 "vector_move_operand" "0C,0C") (match_operand: 3 "register_operand" "Yk,Yk")] UNSPEC_EXPAND))] "TARGET_AVX512F" -- 2.30.2