From patchwork Wed Dec 13 10:45:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Perta X-Patchwork-Id: 847922 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-469107-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="MVOF1CY5"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yxYJX0hyjz9sBZ for ; Wed, 13 Dec 2017 21:46:03 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type :content-transfer-encoding; q=dns; s=default; b=CvScsJDm0Zp3YCRq lbYNJhSJ/fnQrmyna2ib3hdBMs880CfpXexF4yLoH3vZniyCaLm2XpyHcT8F8w4J aZwxpOOnrAG0equOX+bKmUWK1YvpZRVGw/+saVG8WPpzr/68UnFukEPx5Un/dcmg gGV3C3ZDTOln7E+6gzbRhsXG7FA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type :content-transfer-encoding; s=default; bh=+zNfpzxEhtUTKmPa7mnuwv e11HQ=; b=MVOF1CY5wPV8LKvoJdLy3CNHDTIMsiCW9/7FFifhLTWsTHKwvR+2Sx EqPVPXxH9B4MPAb85hrpElfetdpLjpKs+xOPpN+sIG0mQDBs2f03HQUsT7qtx94M 48a1esu+aicnKLJyqFhg86AV+lJPtMRU9+d8n4lCghUuehH9QfBOA= Received: (qmail 11545 invoked by alias); 13 Dec 2017 10:45:54 -0000 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 Received: (qmail 11525 invoked by uid 89); 13 Dec 2017 10:45:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.1 required=5.0 tests=BAYES_00, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=tax, aa, AA, H*UA:Outlook X-HELO: relmlie3.idc.renesas.com Received: from relmlor4.renesas.com (HELO relmlie3.idc.renesas.com) (210.160.252.174) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 13 Dec 2017 10:45:49 +0000 Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie3.idc.renesas.com with ESMTP; 13 Dec 2017 19:45:47 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id 065A192473 for ; Wed, 13 Dec 2017 19:45:47 +0900 (JST) Received: from unknown (HELO REEBED03978) ([10.226.37.54]) by relmlii2.idc.renesas.com with ESMTP; 13 Dec 2017 19:45:46 +0900 From: "Sebastian Perta" To: Subject: [PATCH] RL78 bswaphi improvement Date: Wed, 13 Dec 2017 10:45:45 -0000 Message-ID: <000101d373ff$88935cd0$99ba1670$@renesas.com> MIME-Version: 1.0 Hello, The following patch helps GCC to generate xch instruction. The patch is being useful in many test cases from c-torture, for example in gcc.c-torture/execute/pr52760.c xch is being generated 4 times in foo and the code size for foo is being reduced from 94 to 58 bytes. Regression test is OK, tested with the following command: make -k check-gcc RUNTESTFLAGS=--target_board=rl78-sim Please let me know if this is OK, Thank you! Sebastian Index: ChangeLog =================================================================== --- ChangeLog (revision 255581) +++ ChangeLog (working copy) @@ -1,3 +1,9 @@ +2017-12-12 Sebastian Perta + + * config/rl78/rl78-expand.md: New define_expand "bswaphi2" + * config/rl78/rl78-virt.md: New define_insn "*bswaphi2_virt" + * config/rl78/rl78-real.md: New define_insn "*bswaphi2_real" + 2017-12-12 Richard Biener PR tree-optimization/83385 Index: config/rl78/rl78-expand.md =================================================================== --- config/rl78/rl78-expand.md (revision 255581) +++ config/rl78/rl78-expand.md (working copy) @@ -105,6 +105,14 @@ [(set_attr "valloc" "op1")] ) +(define_expand "bswaphi2" + [(set (match_operand:HI 0 "nonimmediate_operand") + (bswap:HI (match_operand:HI 1 "general_operand")))] + "" + "if (rl78_force_nonfar_2 (operands, gen_bswaphi2)) + DONE;" +) + ;;---------- Conversions ------------------------ (define_expand "zero_extendqihi2" Index: config/rl78/rl78-real.md =================================================================== --- config/rl78/rl78-real.md (revision 255581) +++ config/rl78/rl78-real.md (working copy) @@ -90,6 +90,15 @@ movw\t%0, %1" ) +(define_insn "*bswaphi2_real" + [(set (match_operand:HI 0 "rl78_nonfar_nonimm_operand" "=A,A") + (bswap:HI (match_operand:HI 1 "general_operand" "0,viU")))] + "rl78_real_insns_ok ()" + "@ + xch\ta, x + movw\tax, %1\n\txch\ta, x" +) + ;;---------- Conversions ------------------------ (define_insn "*zero_extendqihi2_real" Index: config/rl78/rl78-virt.md =================================================================== --- config/rl78/rl78-virt.md (revision 255581) +++ config/rl78/rl78-virt.md (working copy) @@ -65,6 +65,14 @@ [(set_attr "valloc" "op1")] ) +(define_insn "*bswaphi2_virt" + [(set (match_operand:HI 0 "rl78_nonfar_nonimm_operand" "=vm") + (bswap:HI (match_operand:HI 1 "general_operand" "vim")))] + "rl78_virt_insns_ok ()" + "v.bswaphi\t%0, %1" + [(set_attr "valloc" "op1")] +) + ;;---------- Conversions ------------------------ (define_insn "*zero_extendqihi2_virt"