From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13548 invoked by alias); 2 Aug 2008 16:03:01 -0000 Received: (qmail 13363 invoked by uid 48); 2 Aug 2008 16:01:50 -0000 Date: Sat, 02 Aug 2008 16:03:00 -0000 Message-ID: <20080802160150.13362.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/36992] Very stange code for _mm_move_epi64 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "ubizjak at gmail dot com" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-08/txt/msg00123.txt.bz2 ------- Comment #14 from ubizjak at gmail dot com 2008-08-02 16:01 ------- (In reply to comment #13) > We should also test -O0. Usage of MMX regs with -O0 is fixed by following patch: Index: config/i386/mmx.md =================================================================== --- config/i386/mmx.md (revision 138553) +++ config/i386/mmx.md (working copy) @@ -65,9 +65,9 @@ (define_insn "*mov_internal_rex64" [(set (match_operand:MMXMODEI8 0 "nonimmediate_operand" - "=rm,r,!?y,!?y ,m ,!y,Y2,x,x ,m,r,x") + "=rm,r,!?y,!?y ,m ,!y,*Y2,x,x ,m,r,x") (match_operand:MMXMODEI8 1 "vector_move_operand" - "Cr ,m,C ,!?ym,!?y,Y2,!y,C,xm,x,x,r"))] + "Cr ,m,C ,!?ym,!?y,*Y2,!y,C,xm,x,x,r"))] "TARGET_64BIT && TARGET_MMX && !(MEM_P (operands[0]) && MEM_P (operands[1]))" "@ @@ -124,9 +124,9 @@ (define_insn "*movv2sf_internal_rex64" [(set (match_operand:V2SF 0 "nonimmediate_operand" - "=rm,r ,!?y,!?y ,m ,!y,Y2,x,x,x,m,r,x") + "=rm,r ,!?y,!?y ,m ,!y,*Y2,x,x,x,m,r,x") (match_operand:V2SF 1 "vector_move_operand" - "Cr ,m ,C ,!?ym,!y,Y2,!y,C,x,m,x,x,r"))] + "Cr ,m ,C ,!?ym,!y,*Y2,!y,C,x,m,x,x,r"))] "TARGET_64BIT && TARGET_MMX && !(MEM_P (operands[0]) && MEM_P (operands[1]))" "@ > Why do we use _mm_movepi64_pi64 at all? _mm_movepi64_pi64 is an MMX > intrinsic. It isn't necessary here. _mm_movepi64_pi64 extracts DImode element 0 from V2DI vector. It just generates sse2_storeq_* pattern that operates also on SSE regs. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36992