From fde2c35121b2622e00896cf12475946f483a7a74 Mon Sep 17 00:00:00 2001 From: Alexander Ivchenko Date: Fri, 17 Oct 2014 12:53:24 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 12 ++++++++++++ gcc/config/i386/i386.c | 17 ++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) 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); -- 2.30.2