diff options
author | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2014-10-17 12:53:24 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2014-10-17 12:53:24 +0000 |
commit | fde2c35121b2622e00896cf12475946f483a7a74 (patch) | |
tree | 1f9402ac35234188721e50e181b925a4bb49bc92 | |
parent | 070664295574d1920eb6bfc8a7ec376d5496bb62 (diff) | |
download | gcc-fde2c35121b2622e00896cf12475946f483a7a74.zip gcc-fde2c35121b2622e00896cf12475946f483a7a74.tar.gz gcc-fde2c35121b2622e00896cf12475946f483a7a74.tar.bz2 |
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 <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r216400
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 17 |
2 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5cacce5..c756191 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2014-10-17 Alexander Ivchenko <alexander.ivchenko@intel.com> + Maxim Kuznetsov <maxim.kuznetsov@intel.com> + Anna Tikhonova <anna.tikhonova@intel.com> + Ilya Tocar <ilya.tocar@intel.com> + Andrey Turetskiy <andrey.turetskiy@intel.com> + Ilya Verbin <ilya.verbin@intel.com> + Kirill Yukhin <kirill.yukhin@intel.com> + Michael Zolotukhin <michael.v.zolotukhin@intel.com> + + * config/i386/i386.c (ix86_expand_sse2_mulvxdi3): Extend + expand_sse2_mulvxdi3. + 2014-10-17 Richard Biener <rguenther@suse.de> * fold-const.c (fold_comparison): Remove redundant constant diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 7e8a32b..52b411f 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); |