From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12808 invoked by alias); 24 Jan 2005 18:09:52 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 12773 invoked by uid 48); 24 Jan 2005 18:09:47 -0000 Date: Mon, 24 Jan 2005 18:09:00 -0000 Message-ID: <20050124180947.12772.qmail@sourceware.org> From: "guardia at sympatico dot ca" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20050119145614.19530.guardia@sympatico.ca> References: <20050119145614.19530.guardia@sympatico.ca> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps) X-Bugzilla-Reason: CC X-SW-Source: 2005-01/txt/msg03539.txt.bz2 List-Id: ------- Additional Comments From guardia at sympatico dot ca 2005-01-24 18:09 ------- MMX intrinsics don't seem to be a standard (?), but I'm under the impression that _mm_cvtsi32_si64 is supposed to generate MMX code. I just tested With (GCC) 4.0.0 20050123, and with -mmmx flag, the result is still the same, with the -msse flag I now get : movss 12(%ebp), %xmm0 movlps %xmm0, (%eax) Which is correct, but what I'm trying to get is a MOVD so I don't have to fish back into memory to use the integer I wanted to load in an mmx register. Or is there another way to generate a MOVD? Also, _mm_unpacklo_pi8 (check moo2.i) still generates superfluous movlps : punpcklbw %mm0, %mm0 movl %esp, %ebp subl $8, %esp movl 8(%ebp), %eax movq %mm0, -8(%ebp) movlps -8(%ebp), %xmm1 movlps %xmm1, (%eax) I guess any MMX intrinsics that makes use of the (__m64) cast conversion will suffer from the same problem..... I think the fix to all these problems would be to prevent the register allocator from using SSE registers when compiling MMX intrinsics.. ? -- What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19530