From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonicconh5003-vm0.mail.kks.yahoo.co.jp (sonicconh5003-vm0.mail.kks.yahoo.co.jp [114.110.61.43]) by sourceware.org (Postfix) with ESMTPS id 312DE3858C52 for ; Tue, 10 Jan 2023 03:34:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 312DE3858C52 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=yahoo.co.jp Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.co.jp X-YMail-OSG: QMNQaRsVM1kSgqJ.4.cIGsZigB6FRNhF3YKIzVKrsss4UaHjMrlvoMQuA330R83 DtzvnkBEauHIkzwJKLhdfFkCkDPizpMc.eJqdmwv1VNGIGcvksr9FrMi4vVqWI_vDbv7wqLaTvkk K6VsK0jxf0EWspLTJFuE0dIuQDudWVBvQS3MOPqZGkiKygFOnh9Um7O798cbmbij1JGDRpIf7dxS 7i.oXmC.jCrYH6YuhaOcJ22RM10jRuTSgb.M5T5nCd1gsVTPb1crRlnxTliR40p.YFICxdBNjXCJ DOruLKRLITMhJVHPt3Dr0LtSX4nxFXQLnebkA1Hop8C8ccDli4GlHZlAEHdPz4RGEkDgUtA55mlx Zjn7EmYeV3SG2pltbv5BrJryFgpZy6VSUS4.CW__oUlsaKbVyqMb.kFrKWgZ.mMR3wmlhf.PIlu9 SnWP4mRb6QNA5.0GyQZ8B1AdbJxmQwm.p.p5ggQK5dr43YIMQRiNxnAfZoqAzf.Yl4tk6XsyNp1Y C4mulVuwjSReR1.DnNkNmu3J_l1DVKPNTei11cTX9KyccVpRkDRaE0f8UAZYZmJVw9ZHq._P2kxA 3Ddpca0Z2R.u8taeMXooLr1D.S5yLqVras62jGqXrqqykoXqtxue7OrhRP9LARt_Qwr_YNl3Myfv EI3x4XwdIxRM95j3URzMygqzIYZ2Y0x1I7Y4SAPADBBIG3cAI0n7hAiJ4ZJHWqxUY.1SFx3qLYqM 9zdMfGg6TB.6JuVE39e9V0xVUarp61XbVOZZ4wzRSOWWatK9W1RtduKlp4K3hGhISoSFE5J8jxSt cUYIJ6BqZ7jOhNhd5xL_5Zft0smpI2CuEF4KgTU4YQOAf15dAXrVL6PbiXw6ZkfimwcVNzTz.Dpt LPNwkFjQtdARgH9QHAK5zpncemccY6WsgXhydvipPE6MH_T_js.cZxL3y7AuEyBTwZ5Q8Bo7JzP1 XGMj_LKQ- Received: from sonicgw.mail.yahoo.co.jp by sonicconh5003.mail.kks.yahoo.co.jp with HTTP; Tue, 10 Jan 2023 03:34:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1673321647; s=yj20110701; d=yahoo.co.jp; h=Message-ID:Date:MIME-Version:To:Cc:From:Subject:Content-Type:Content-Transfer-Encoding:References; bh=eQZ0OuIY304WWeuI3cXHUsrZEK1b2xJgOcvQPLXDiMc=; b=qtKh2cUEi0FjMS+7+Ap7nNIdlg+xHEFWsMaUHBIsiBzZ3kgTCarnBg2AhwaXSZIS 2mIGRii6Cd4Y6X0/ywUhX0z47k+Hva1h42/xuyY0kTFg80JlwinvqJvWT4pPhR391KM 8mXwGYWMXnJAdDUXD32ejMoHbdyskgj1H8Cwb4Ps= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=yj20110701; d=yahoo.co.jp; h=Message-ID:Date:MIME-Version:Cc:From:Content-Type:Content-Transfer-Encoding:References; b=vJjh0zUvRu6SwOgTO3+YVk9oCQFz4rwVrYe4RE6q6HBFVVL9y4THA0nJ+BW++O6C vqa2EoQKcTPs56QTsXUWRPQXF9BsG+hfLqo2lf+tyA8OBuH45Qjy3/F5jpN3fJug+TL qXptwX4liI5GvnVAptssy5DjnNW0cd8KHMhYpWiY=; Received: by smtphe5003.mail.kks.ynwp.yahoo.co.jp (YJ Hermes SMTP Server) with ESMTPA ID 7f4581061f7cc2b4210360c4e57c09cd; Tue, 10 Jan 2023 12:34:01 +0900 (JST) Message-ID: <2203c450-66c4-f100-2fc1-ab7e45cc008f@yahoo.co.jp> Date: Tue, 10 Jan 2023 12:34:01 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 To: GCC Patches Cc: Max Filippov From: Takayuki 'January June' Suwa Subject: [PATCH] xtensa: Make instruction cost estimation for size more accurate Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit References: <2203c450-66c4-f100-2fc1-ab7e45cc008f.ref@yahoo.co.jp> X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Until now, we applied COSTS_N_INSNS() (multiplying by 4) after dividing the instruction length by 3, so we couldn't express the difference less than modulo 3 in insn cost for size (e.g. 11 Bytes and 12 bytes cost the same). This patch fixes that. ;; 2 bytes addi.n a2, a2, -1 ; cost 3 ;; 3 bytes addmi a2, a2, 1024 ; cost 4 ;; 4 bytes movi.n a3, 80 ; cost 5 bnez.n a2, a3, .L4 ;; 5 bytes srli a2, a3, 1 ; cost 7 add.n a2, a2, a2 ;; 6 bytes ssai 8 ; cost 8 src a4, a2, a3 :: 3 + 4 bytes l32r a2, .L5 ; cost 9 ;; 11 bytes ; cost 15 ;; 12 bytes ; cost 16 gcc/ChangeLog: * config/xtensa/xtensa.cc (xtensa_insn_cost): Let insn cost for size be obtained by applying COSTS_N_INSNS() to instruction length and then dividing by 3. --- gcc/config/xtensa/xtensa.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gcc/config/xtensa/xtensa.cc b/gcc/config/xtensa/xtensa.cc index a1f184950ae..6cf6b35399a 100644 --- a/gcc/config/xtensa/xtensa.cc +++ b/gcc/config/xtensa/xtensa.cc @@ -4519,13 +4519,15 @@ xtensa_insn_cost (rtx_insn *insn, bool speed) { if (!(recog_memoized (insn) < 0)) { - int len = get_attr_length (insn), n = (len + 2) / 3; + int len = get_attr_length (insn); if (len == 0) return COSTS_N_INSNS (0); if (speed) /* For speed cost. */ { + int n = (len + 2) / 3; + /* "L32R" may be particular slow (implementation-dependent). */ if (xtensa_is_insn_L32R_p (insn)) return COSTS_N_INSNS (1 + xtensa_extra_l32r_costs); @@ -4572,10 +4574,11 @@ xtensa_insn_cost (rtx_insn *insn, bool speed) { /* "L32R" itself plus constant in litpool. */ if (xtensa_is_insn_L32R_p (insn)) - return COSTS_N_INSNS (2) + 1; + len = 3 + 4; - /* Consider ".n" short instructions. */ - return COSTS_N_INSNS (n) - (n * 3 - len); + /* Consider fractional instruction length (for example, ".n" + short instructions or "L32R" litpool constants. */ + return (COSTS_N_INSNS (len) + 1) / 3; } } } -- 2.30.2