--- Comment #6 from ubizjak at gmail dot com 2009-10-28 09:36 ---
Original testcase is now also fixed in mainline, on x86_64 compiles to (-O2):
madd:
pmaddwd a(%rip), %xmm0
ret
madd_swapped:
pmaddwd a(%rip), %xmm0
ret
.section.rodata
--- Comment #5 from ubizjak at gmail dot com 2008-05-07 13:33 ---
The problem with memory operands has been fixed by the patch, so we generate
optimal one insn sequence for both functions in:
--cut here--
#include
extern __m128i a;
__m128i madd (__m128i b)
{
return _mm_madd_epi16(a
--- Comment #4 from uros at gcc dot gnu dot org 2008-05-07 13:12 ---
Subject: Bug 35714
Author: uros
Date: Wed May 7 13:12:02 2008
New Revision: 135041
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=135041
Log:
PR target/35714
* config/i386/mmx.md (mmx_subv2sf3)
--- Comment #3 from ubizjak at gmail dot com 2008-05-06 12:55 ---
This is due to this code snippet from i386.c, ix86_expand_binop_builtin ():
--cut here--
/* ??? Using ix86_fixup_binary_operands is problematic when
we've got mismatched modes. Fake it. */
xops[0] = target;
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
Severity|normal |enhancement
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35714
--- Comment #2 from ubizjak at gmail dot com 2008-03-27 07:41 ---
Combine doesn't want to merge memory operand into sse2_pmaddwd pattern. Perhaps
this is the limitation of combiner, since pmaddwd pattern defines multiple uses
of its input operands.
--
http://gcc.gnu.org/bugzilla/sho
--- Comment #1 from astrange at ithinksw dot com 2008-03-27 01:02 ---
Created an attachment (id=15384)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15384&action=view)
source
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35714