From patchwork Thu Jun 24 18:31:37 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 56815 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 366E5B6F1A for ; Fri, 25 Jun 2010 04:31:52 +1000 (EST) Received: (qmail 10919 invoked by alias); 24 Jun 2010 18:31:50 -0000 Received: (qmail 10910 invoked by uid 22791); 24 Jun 2010 18:31:50 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, TW_ZJ, T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from fg-out-1718.google.com (HELO fg-out-1718.google.com) (72.14.220.155) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 24 Jun 2010 18:31:42 +0000 Received: by fg-out-1718.google.com with SMTP id e12so1777485fga.8 for ; Thu, 24 Jun 2010 11:31:39 -0700 (PDT) Received: by 10.102.197.36 with SMTP id u36mr3280022muf.105.1277404299529; Thu, 24 Jun 2010 11:31:39 -0700 (PDT) Received: from [93.103.18.160] (93-103-18-160.static.t-2.net [93.103.18.160]) by mx.google.com with ESMTPS id n7sm12500346mue.45.2010.06.24.11.31.38 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 24 Jun 2010 11:31:39 -0700 (PDT) Subject: [PATCH, i386]: Use GET_MODE_SIZE to determine size of XFmode operand From: Uros Bizjak To: gcc-patches@gcc.gnu.org Date: Thu, 24 Jun 2010 20:31:37 +0200 Message-ID: <1277404297.6220.19.camel@localhost> Mime-Version: 1.0 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hello! For the record, the size of XFmode operand changes according to TARGET_128BIT_LONG_DOUBLE flag, so we can't just use (const_int -16) here. 2010-06-24 Uros Bizjak * config/i386/i386 (XFmode push splitter): Use GET_MODE_SIZE to determine size of XFmode operand. (XFmode extended SFmode push splitter): Ditto. (XFmode extended SFmode push splitter): Ditto. Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN. Uros. Index: i386.md =================================================================== --- i386.md (revision 161308) +++ i386.md (working copy) @@ -2683,7 +2683,7 @@ "reload_completed" [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (match_dup 2))) (set (mem:XF (reg:P SP_REG)) (match_dup 1))] - "operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);") + "operands[2] = GEN_INT (-GET_MODE_SIZE (XFmode));") (define_split [(set (match_operand:XF 0 "push_operand" "") @@ -4125,7 +4125,7 @@ "" [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (match_dup 2))) (set (mem:XF (reg:P SP_REG)) (float_extend:XF (match_dup 1)))] - "operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);") + "operands[2] = GEN_INT (-GET_MODE_SIZE (XFmode));") (define_split [(set (match_operand:XF 0 "push_operand" "") @@ -4133,7 +4133,7 @@ "" [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (match_dup 2))) (set (mem:DF (reg:P SP_REG)) (float_extend:XF (match_dup 1)))] - "operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);") + "operands[2] = GEN_INT (-GET_MODE_SIZE (XFmode));") (define_expand "extendsfdf2" [(set (match_operand:DF 0 "nonimmediate_operand" "")