From patchwork Tue Jul 10 07:50:44 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleg Endo X-Patchwork-Id: 170073 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 E21992C007A for ; Tue, 10 Jul 2012 17:51:29 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1342511490; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Message-ID:Subject:From:To:Date:Content-Type:Mime-Version: Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:Sender:Delivered-To; bh=zBWIwEUCTsEgfShSFLFA YcRlIhE=; b=StjqDzKG8P6akWt1NSOL3JBk9G2GL7yI1z7fyX1koHIKRGkp5sXm dM7PQZwJbnz4vL1VGf7+M3zKH0QTd53whkbZbJTkOj9jrJ4v95DVNtgsX0iMojqa v577IPuSKFbmprO8aTUG38PtOzU4EnKhUX3GK60u25zOTzVlr9YUrAg= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Message-ID:Subject:From:To:Date:Content-Type:Mime-Version:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=EdbBDeqoCENFaYLpvyuJIoaUQRCZUP0eEHPHUVtCAcfKsLTDwF5JBzw3+A5IZA yTx+vgL0BL863wVS7Vgxw1X7SospTncQXrnQ2n5ya+oHYqFly3vg9ZkyzeDOp6V1 HYhGn/Ktf57/rfXl1k0WmCDN9hyCQlJE6lEsarBKlRMgQ=; Received: (qmail 15939 invoked by alias); 10 Jul 2012 07:51:21 -0000 Received: (qmail 15913 invoked by uid 22791); 10 Jul 2012 07:51:18 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, RCVD_IN_HOSTKARMA_NO, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY X-Spam-Check-By: sourceware.org Received: from mailout11.t-online.de (HELO mailout11.t-online.de) (194.25.134.85) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 10 Jul 2012 07:51:04 +0000 Received: from fwd22.aul.t-online.de (fwd22.aul.t-online.de ) by mailout11.t-online.de with smtp id 1SoVDq-0007ny-6r; Tue, 10 Jul 2012 09:51:02 +0200 Received: from [192.168.0.100] (Gz9eL-ZdohVnJrul+GryWVA6R7N51tdQEea7LWxGSfvgCYFUI2ijqld6Q-Kp8a5ZJ6@[93.218.191.206]) by fwd22.t-online.de with esmtp id 1SoVDh-0BdYKe0; Tue, 10 Jul 2012 09:50:53 +0200 Message-ID: <1341906644.2292.37.camel@yam-132-YW-E178-FTW> Subject: [SH] PR 53911 - Remove SImode displacement addressing related splits From: Oleg Endo To: gcc-patches Date: Tue, 10 Jul 2012 09:50:44 +0200 Mime-Version: 1.0 X-IsSubscribed: yes 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, The attached patch removes two splits that undo displacement address re-basing. I've noticed that removing the two splits seems to result in overall slightly smaller code according to the CSiBE set (compared with -m4-single -ml -O2 -mpretend-cmove, -1048 bytes in total), despite some code size increases here and there. Tested on rev. 189361 with make -k check RUNTESTFLAGS="--target_board=sh-sim \{-m2/-ml,-m2/-mb,-m2a/-mb,-m2a-single/-mb,-m4/-ml,-m4/-mb,-m4-single/-ml, -m4-single/-mb,-m4a-single/-ml,-m4a-single/-mb}" and no new failures. Cheers, Oleg ChangeLog PR target/53911 * config/sh/sh.md: Remove displacement addresssing related splits. Index: gcc/config/sh/sh.md =================================================================== --- gcc/config/sh/sh.md (revision 189362) +++ gcc/config/sh/sh.md (working copy) @@ -6683,63 +6683,6 @@ FAIL; }) -;; If a base address generated by LEGITIMIZE_ADDRESS for SImode is -;; used only once, let combine add in the index again. - -(define_split - [(set (match_operand:SI 0 "register_operand" "") - (match_operand:SI 1 "" "")) - (clobber (match_operand 2 "register_operand" ""))] - "TARGET_SH1 && ! reload_in_progress && ! reload_completed - && ALLOW_INDEXED_ADDRESS" - [(use (reg:SI R0_REG))] -{ - rtx addr, reg, const_int; - - if (!MEM_P (operands[1])) - FAIL; - addr = XEXP (operands[1], 0); - if (GET_CODE (addr) != PLUS) - FAIL; - reg = XEXP (addr, 0); - const_int = XEXP (addr, 1); - if (! (BASE_REGISTER_RTX_P (reg) && INDEX_REGISTER_RTX_P (operands[2]) - && CONST_INT_P (const_int))) - FAIL; - emit_move_insn (operands[2], const_int); - emit_move_insn (operands[0], - change_address (operands[1], VOIDmode, - gen_rtx_PLUS (SImode, reg, operands[2]))); - DONE; -}) - -(define_split - [(set (match_operand:SI 1 "" "") - (match_operand:SI 0 "register_operand" "")) - (clobber (match_operand 2 "register_operand" ""))] - "TARGET_SH1 && ! reload_in_progress && ! reload_completed - && ALLOW_INDEXED_ADDRESS" - [(use (reg:SI R0_REG))] -{ - rtx addr, reg, const_int; - - if (!MEM_P (operands[1])) - FAIL; - addr = XEXP (operands[1], 0); - if (GET_CODE (addr) != PLUS) - FAIL; - reg = XEXP (addr, 0); - const_int = XEXP (addr, 1); - if (! (BASE_REGISTER_RTX_P (reg) && INDEX_REGISTER_RTX_P (operands[2]) - && CONST_INT_P (const_int))) - FAIL; - emit_move_insn (operands[2], const_int); - emit_move_insn (change_address (operands[1], VOIDmode, - gen_rtx_PLUS (SImode, reg, operands[2])), - operands[0]); - DONE; -}) - (define_expand "movdf" [(set (match_operand:DF 0 "general_movdst_operand" "") (match_operand:DF 1 "general_movsrc_operand" ""))]