diff options
author | Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com> | 2014-06-16 11:02:31 +0000 |
---|---|---|
committer | Ganesh Gopalasubramanian <gganesh@gcc.gnu.org> | 2014-06-16 11:02:31 +0000 |
commit | 2bd4bfee7e16cf608ae6e16c669e265bce635d48 (patch) | |
tree | 2a096620bd4b1de0c439c4ade00d9a743e4c9cce /gcc | |
parent | debd8f30b92c8c2fd30b04770173db9b72d055f6 (diff) | |
download | gcc-2bd4bfee7e16cf608ae6e16c669e265bce635d48.zip gcc-2bd4bfee7e16cf608ae6e16c669e265bce635d48.tar.gz gcc-2bd4bfee7e16cf608ae6e16c669e265bce635d48.tar.bz2 |
Remove vpmacsdql instruction from multiplication
From-SVN: r211702
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/xop-imul64-vector.c | 1 |
4 files changed, 18 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 802f3d9..7f242f2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-06-16 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com> + + * 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 <cltang@codesourcery.com> PR middle-end/61430 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index d46f583..33226a9 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 684eb7b..b417245 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-06-16 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com> + + * gcc.target/i386/xop-imul64-vector.c: Remove the check for + vpmacsdql instruction. + 2014-06-16 Yury Gribov <y.gribov@samsung.com> * 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 fbf605f..fc8c880 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" } } */ |