From: Ganesh Gopalasubramanian Date: Mon, 16 Jun 2014 11:02:31 +0000 (+0000) Subject: Remove vpmacsdql instruction from multiplication X-Git-Tag: releases/gcc-5.1.0~6850 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2bd4bfee7e16cf608ae6e16c669e265bce635d48;p=thirdparty%2Fgcc.git Remove vpmacsdql instruction from multiplication From-SVN: r211702 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 802f3d93c28d..7f242f2f0afc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-06-16 Ganesh Gopalasubramanian + + * config/i386/i386.c (ix86_expand_sse2_mulvxdi3): Issue + instructions "vpmuludq" and "vpaddq" instead of "vpmacsdql" for + handling 32-bit multiplication. + 2014-06-16 Chung-Lin Tang PR middle-end/61430 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index d46f5832ecad..33226a9f9354 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -45279,8 +45279,13 @@ ix86_expand_sse2_mulvxdi3 (rtx op0, rtx op1, rtx op2) /* t4: ((B*E)+(A*F))<<32, ((D*G)+(C*H))<<32 */ emit_insn (gen_ashlv2di3 (t4, t3, GEN_INT (32))); - /* op0: (((B*E)+(A*F))<<32)+(B*F), (((D*G)+(C*H))<<32)+(D*H) */ - emit_insn (gen_xop_pmacsdql (op0, op1, op2, t4)); + /* Multiply lower parts and add all */ + t5 = gen_reg_rtx (V2DImode); + emit_insn (gen_vec_widen_umult_even_v4si (t5, + gen_lowpart (V4SImode, op1), + gen_lowpart (V4SImode, op2))); + op0 = expand_binop (mode, add_optab, t5, t4, op0, 1, OPTAB_DIRECT); + } else { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 684eb7b669d9..b417245646ad 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-06-16 Ganesh Gopalasubramanian + + * gcc.target/i386/xop-imul64-vector.c: Remove the check for + vpmacsdql instruction. + 2014-06-16 Yury Gribov * c-c++-common/asan/instrument-with-calls-1.c: New test. diff --git a/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c b/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c index fbf605f31ec0..fc8c8806f78c 100644 --- a/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c +++ b/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c @@ -33,4 +33,3 @@ int main () /* { dg-final { scan-assembler "vpmulld" } } */ /* { dg-final { scan-assembler "vphadddq" } } */ -/* { dg-final { scan-assembler "vpmacsdql" } } */