From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17456 invoked by alias); 1 Aug 2008 19:34:19 -0000 Received: (qmail 16173 invoked by uid 48); 1 Aug 2008 19:32:58 -0000 Date: Fri, 01 Aug 2008 19:34:00 -0000 Message-ID: <20080801193258.16172.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/msg00075.txt.bz2 ------- Comment #8 from ubizjak at gmail dot com 2008-08-01 19:32 ------- (In reply to comment #7) > But it isn't necessary at all. We should use > > movq %xmm0,%xmm0 It looks to me that we should add: [(set (match_operand:V2DI 0 "register_operand" "=x") (vec_concat:V2DI (match_operand:DI 1 "nonimmediate_operand" "!x") (match_operand:DI 2 "vector_move_operand" " C")))] to the alternatives of all vec_concatv2di patterns. Perhaps we need something like that also for all vec_concatv2si patterns, since x can also hold SImode value, and movd fills upper part of target SSE reg with zeroes. "!" guarantees, that this alternative applies only when input value is already in SSE reg. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36992