From: Alexander Ivchenko Date: Tue, 19 Aug 2014 07:32:22 +0000 (+0000) Subject: sse.md (define_mode_iterator VI48_AVX512F): Delete. X-Git-Tag: upstream/12.2.0~61098 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=21c924ac985800859335f088e24b374b29c179b0;p=platform%2Fupstream%2Fgcc.git sse.md (define_mode_iterator VI48_AVX512F): Delete. gcc/ * config/i386/sse.md (define_mode_iterator VI48_AVX512F): Delete. (define_mode_iterator VI48_AVX512F_AVX512VL): New. (define_mode_iterator VI2_AVX512VL): Ditto. (define_insn "avx512f_ufix_notruncv16sfv16si"): Delete. (define_insn ("_ufix_notrunc"): New. (define_insn "avx512cd_maskw_vec_dup"): Macroize. (define_insn "_ashrv"): Delete. (define_insn "_ashrv", with VI48_AVX512F_AVX512VL): New. (define_insn "_ashrv", with VI2_AVX512VL): Ditto. 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: r214134 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 002da55..d0f260b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,28 @@ +2014-08-19 Alexander Ivchenko + Maxim Kuznetsov + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md + (define_mode_iterator VI48_AVX512F): Delete. + (define_mode_iterator VI48_AVX512F_AVX512VL): New. + (define_mode_iterator VI2_AVX512VL): Ditto. + (define_insn "avx512f_ufix_notruncv16sfv16si"): + Delete. + (define_insn + ("_ufix_notrunc"): + New. + (define_insn "avx512cd_maskw_vec_dup"): Macroize. + (define_insn "_ashrv"): Delete. + (define_insn "_ashrv", + with VI48_AVX512F_AVX512VL): New. + (define_insn "_ashrv", + with VI2_AVX512VL): Ditto. + 2014-08-19 Marek Polacek * doc/invoke.texi: Document -Wc99-c11-compat. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index eaaaf45..967092e 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -284,9 +284,15 @@ (define_mode_iterator VI4_AVX512F [(V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX2") V4SI]) -(define_mode_iterator VI48_AVX512F - [(V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX2") V4SI - (V8DI "TARGET_AVX512F")]) +(define_mode_iterator VI4_AVX512VL + [V16SI (V8SI "TARGET_AVX512VL") (V4SI "TARGET_AVX512VL")]) + +(define_mode_iterator VI48_AVX512F_AVX512VL + [V4SI V8SI (V16SI "TARGET_AVX512F") + (V2DI "TARGET_AVX512VL") (V4DI "TARGET_AVX512VL") (V8DI "TARGET_AVX512F")]) + +(define_mode_iterator VI2_AVX512VL + [(V8HI "TARGET_AVX512VL") (V16HI "TARGET_AVX512VL") V32HI]) (define_mode_iterator VI8_AVX2_AVX512BW [(V8DI "TARGET_AVX512BW") (V4DI "TARGET_AVX2") V2DI]) @@ -3747,16 +3753,16 @@ (set_attr "prefix" "evex") (set_attr "mode" "XI")]) -(define_insn "avx512f_ufix_notruncv16sfv16si" - [(set (match_operand:V16SI 0 "register_operand" "=v") - (unspec:V16SI - [(match_operand:V16SF 1 "" "")] +(define_insn "_ufix_notrunc" + [(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v") + (unspec:VI4_AVX512VL + [(match_operand: 1 "nonimmediate_operand" "")] UNSPEC_UNSIGNED_FIX_NOTRUNC))] "TARGET_AVX512F" "vcvtps2udq\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") - (set_attr "mode" "XI")]) + (set_attr "mode" "")]) (define_insn "fix_truncv16sfv16si2" [(set (match_operand:V16SI 0 "register_operand" "=v") @@ -14486,9 +14492,9 @@ (set_attr "prefix" "evex") (set_attr "mode" "XI")]) -(define_insn "avx512cd_maskw_vec_dupv16si" - [(set (match_operand:V16SI 0 "register_operand" "=v") - (vec_duplicate:V16SI +(define_insn "avx512cd_maskw_vec_dup" + [(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v") + (vec_duplicate:VI4_AVX512VL (zero_extend:SI (match_operand:HI 1 "register_operand" "Yk"))))] "TARGET_AVX512CD" @@ -15170,17 +15176,28 @@ DONE; }) -(define_insn "_ashrv" - [(set (match_operand:VI48_AVX512F 0 "register_operand" "=v") - (ashiftrt:VI48_AVX512F - (match_operand:VI48_AVX512F 1 "register_operand" "v") - (match_operand:VI48_AVX512F 2 "nonimmediate_operand" "vm")))] +(define_insn "_ashrv" + [(set (match_operand:VI48_AVX512F_AVX512VL 0 "register_operand" "=v") + (ashiftrt:VI48_AVX512F_AVX512VL + (match_operand:VI48_AVX512F_AVX512VL 1 "register_operand" "v") + (match_operand:VI48_AVX512F_AVX512VL 2 "nonimmediate_operand" "vm")))] "TARGET_AVX2 && " "vpsrav\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseishft") (set_attr "prefix" "maybe_evex") (set_attr "mode" "")]) +(define_insn "_ashrv" + [(set (match_operand:VI2_AVX512VL 0 "register_operand" "=v") + (ashiftrt:VI2_AVX512VL + (match_operand:VI2_AVX512VL 1 "register_operand" "v") + (match_operand:VI2_AVX512VL 2 "nonimmediate_operand" "vm")))] + "TARGET_AVX512BW" + "vpsravw\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseishft") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "")]) + (define_insn "_v" [(set (match_operand:VI48_AVX2_48_AVX512F 0 "register_operand" "=v") (any_lshift:VI48_AVX2_48_AVX512F