From: Alexander Ivchenko Date: Fri, 17 Oct 2014 12:53:24 +0000 (+0000) Subject: AVX-512. 80/n. Extend expand_sse2_mulvxdi3. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fde2c35121b2622e00896cf12475946f483a7a74;p=gcc.git AVX-512. 80/n. Extend expand_sse2_mulvxdi3. gcc/ * config/i386/i386.c (ix86_expand_sse2_mulvxdi3): Extend expand_sse2_mulvxdi3. 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: r216400 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5cacce59a83..c7561916833 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2014-10-17 Alexander Ivchenko + Maxim Kuznetsov + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (ix86_expand_sse2_mulvxdi3): Extend + expand_sse2_mulvxdi3. + 2014-10-17 Richard Biener * fold-const.c (fold_comparison): Remove redundant constant diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 7e8a32b790a..52b411f9f1c 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -45623,7 +45623,22 @@ ix86_expand_sse2_mulvxdi3 (rtx op0, rtx op1, rtx op2) enum machine_mode mode = GET_MODE (op0); rtx t1, t2, t3, t4, t5, t6; - if (TARGET_XOP && mode == V2DImode) + if (TARGET_AVX512DQ) + { + rtx (*gen) (rtx, rtx, rtx); + + if (mode == V8DImode) + gen = gen_avx512dq_mulv8di3; + else if (TARGET_AVX512VL) + { + if (mode == V4DImode) + gen = gen_avx512dq_mulv4di3; + else if (mode == V2DImode) + gen = gen_avx512dq_mulv2di3; + } + emit_insn (gen (op0, op1, op2)); + } + else if (TARGET_XOP && mode == V2DImode) { /* op1: A,B,C,D, op2: E,F,G,H */ op1 = gen_lowpart (V4SImode, op1);