diff mbox

[2/4] i386: Use vpmacsdd for mulv4si3

Message ID 1340656798-18033-3-git-send-email-rth@redhat.com
State New
Headers show

Commit Message

Richard Henderson June 25, 2012, 8:39 p.m. UTC
---
 gcc/ChangeLog          |    4 ++++
 gcc/config/i386/sse.md |    6 ++++++
 2 files changed, 10 insertions(+)
diff mbox

Patch

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 12b8de8..b95eab5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@ 
 2012-06-25  Richard Henderson  <rth@redhat.com>
 
+	* config/i386.sse.md (mul<VI4_AVX2>3): Use xop_pmacsdd.
+
+2012-06-25  Richard Henderson  <rth@redhat.com>
+
 	* config/i386/i386.c (ix86_rtx_costs) [MULT]: Only apply XOP cost
 	to V16QImode.
 	(ix86_expand_vec_interleave): New.
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 4c12581..93cd9d7 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -5564,6 +5564,12 @@ 
 	operands[2] = force_const_mem (<MODE>mode, operands[2]);
       ix86_fixup_binary_operands_no_copy (MULT, <MODE>mode, operands);
     }
+  else if (TARGET_XOP)
+    {
+      rtx z = force_reg (<MODE>mode, CONST0_RTX (<MODE>mode));
+      emit_insn (gen_xop_pmacsdd (operands[0], operands[1], operands[2], z));
+      DONE;
+    }
   else
     {
       ix86_expand_sse2_mulv4si3 (operands[0], operands[1], operands[2]);