From patchwork Sat Mar 9 09:04:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Georg-Johann Lay X-Patchwork-Id: 87005 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A5D93385ED4F for ; Sat, 9 Mar 2024 09:05:17 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [85.215.255.22]) by sourceware.org (Postfix) with ESMTPS id 4B200385DC3A for ; Sat, 9 Mar 2024 09:04:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4B200385DC3A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gjlay.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=gjlay.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4B200385DC3A Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=85.215.255.22 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709975089; cv=pass; b=qEAbNPJqvlYJy4dxxqMafSVaRzjOz3WuMAnDlfcrbZxHhjE6O3lm3AfIBCLZqHahekZ4YACdHG2liU7PlROXNm/bznWq+n0b+blPD6V0qwdKHK4MM+9T0p61271eVhR9WBKzlkuh4Djq7zZ8dzVJHCasQp73PNNV9VJCpa7dlBs= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709975089; c=relaxed/simple; bh=J5KQspFg/nfp4fAIwTl8xTbqImFoyTmmp48m5UIAuL8=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:MIME-Version:From: To:Subject; b=BEk5B/yoVAMHtv8nQwyu1amcA+xb8MzgfTtM1paIKr6ecvBvygjfM7VuF+OmLVyILrq2rv526QZyl3M1/lPEqjvjR8xjh/cAkC86WAFFZmWSXHN3qffIM3aXyF/uAYywl5K4lIOJ/RrHzPPKhrDQZF86ggPqnk4lnCgLSOdi63U= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1709975085; cv=none; d=strato.com; s=strato-dkim-0002; b=FZcJnwbjLoFrmzY8I4WcsSXguuA9HDkJHuPzx4bFRwcq7pH4uRjYTIQsXDm3L2igWM pJVOmXlcKRJ8PEzNYwPMi3VsDQM8AvUi9LY9l9KGSVy7BNYvXzCCpQ0guFnFdx65muoT 7gPgnXXoYLvvOlA+39CEjqv5uP7NNGQ+tQZUKKsg/RFuFqg+xCqQL8VZYoyepmgeR9Om UkfbQnbuBA3QcHuwE600c4ZeJWinaUHuOCy84Y/simjUmK5ej7SPr3BTdE8ROd1oKH4s KlWqMqiEp5gaPJmqYSV1oumlmeHUzsAVdjYEzl5WoioJ+hNGA91Lq4VHXP0v1OaboyA9 uFbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1709975085; s=strato-dkim-0002; d=strato.com; h=Subject:To:From:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=LngeKjWFoDSAPeUIA5PlYdLKDzg7MqdWoQG5INnl7Jc=; b=R64gseOWrzj7DVHI/lCFCAEHXGQY7OnYq+JZrj4I0diSxyRApUWOfCtzS+JGEAKHmX djzXBVpnc48Cw7vRSMitP4yB5yFcuSsGxmi/wjfqEPogtl6tcYMZXcwBxZaeKHUr5cjh zBa14KOELxP+9Plq7b977ipEBCaw0HuQluszG6CjKHD1CGxscNx2rDqy09qePKjgpSTN n0EPA9CSDnlf9AOn6PubuBx7ddgQOgIjJtMNHquHNyH8g+Nx6Dzvxa0PgvUDvTkLFxYH 3vPi2kGEQVQDm61xYSdUAezB54p0Zezsi2tRw8uGTXg7vOcPcWj4mYce1UzfsB9tAH36 /aLw== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1709975085; s=strato-dkim-0002; d=gjlay.de; h=Subject:To:From:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=LngeKjWFoDSAPeUIA5PlYdLKDzg7MqdWoQG5INnl7Jc=; b=UiGr4AlMsBDIyWY204Pe8QUQ92dU0LFJMw+3nNjmHbVHCjFvwon+HIEfhQXHgxJ4Vj wavYSe3b+yXKqyC5WZkAGNv7DHi2JOWubGLB4BcbTql/aHlWHaI5dJfF9jp/LSavlFUf iaBqrDrP0sIJ+0XKZWM8tJTWQzqZrNYRoAqR88Vb3vvrJbgj0PJJkvUpWr9zFX4b9jiF L7ACKnYaJZAGOC7/c1jHPWFBqw8uUj95DLbpkP/9GJCYGeaVV060SdrHXkMMa/YbmLob uElKR0XFJSNnD5YGJfcs4oYm+dzt0BQ3LTAAEwaSRwdDq7SWyNO+V/tTtgHB/WCdkFdX E9Rw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1709975085; s=strato-dkim-0003; d=gjlay.de; h=Subject:To:From:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=LngeKjWFoDSAPeUIA5PlYdLKDzg7MqdWoQG5INnl7Jc=; b=SDlaYNuRQQ1YjgCDQsNBfv97g3wmQbvOFNJnweJ4F4VR/xCmCNLrcwwfmDGlUoJxzA hmzVsEt7l39C3DY0+RAg== X-RZG-AUTH: ":LXoWVUeid/7A29J/hMvvT3koxZnKT7Qq0xotTetVnKkSgcSjpmy9KwoMJ/K0VA==" Received: from [192.168.2.102] by smtp.strato.de (RZmta 50.2.0 DYNA|AUTH) with ESMTPSA id xef40c02994iB7Q (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate) for ; Sat, 9 Mar 2024 10:04:44 +0100 (CET) Message-ID: Date: Sat, 9 Mar 2024 10:04:44 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Georg-Johann Lay To: "gcc-patches@gcc.gnu.org" Subject: [patch,avr,applied] Add some more cost computation X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org This adds cost computation for some insn combiner patterns and improves a few other nits. Johann --- AVR: Add cost computation for some insn combine patterns. gcc/ * config/avr/avr.cc (avr_rtx_costs_1) [PLUS]: Determine cost for usum_widenqihi and add_zero_extend1. [MINUS]: Determine costs for udiff_widenqihi, sub+zero_extend, sub+sign_extend. * config/avr/avr.md (*addhi3.sign_extend1, *subhi3.sign_extend2): Compute exact insn lengths. (*usum_widenqihi3): Allow input operands to commute. diff --git a/gcc/config/avr/avr.cc b/gcc/config/avr/avr.cc index 1fa4b557f5d..00fce8da15f 100644 --- a/gcc/config/avr/avr.cc +++ b/gcc/config/avr/avr.cc @@ -12524,10 +12524,25 @@ avr_rtx_costs_1 (rtx x, machine_mode mode, int outer_code, return true; } + // *usum_widenqihi + if (mode == HImode + && GET_CODE (XEXP (x, 0)) == ZERO_EXTEND + && GET_CODE (XEXP (x, 1)) == ZERO_EXTEND) + { + *total = COSTS_N_INSNS (3); + return true; + } + if (GET_CODE (XEXP (x, 0)) == ZERO_EXTEND && REG_P (XEXP (x, 1))) { - *total = COSTS_N_INSNS (GET_MODE_SIZE (mode) - 1); + *total = COSTS_N_INSNS (GET_MODE_SIZE (mode)); + return true; + } + if (REG_P (XEXP (x, 0)) + && GET_CODE (XEXP (x, 1)) == ZERO_EXTEND) + { + *total = COSTS_N_INSNS (GET_MODE_SIZE (mode)); return true; } @@ -12610,6 +12625,29 @@ avr_rtx_costs_1 (rtx x, machine_mode mode, int outer_code, return true; case MINUS: + // *udiff_widenqihi + if (mode == HImode + && GET_CODE (XEXP (x, 0)) == ZERO_EXTEND + && GET_CODE (XEXP (x, 1)) == ZERO_EXTEND) + { + *total = COSTS_N_INSNS (2); + return true; + } + // *sub3_zero_extend1 + if (REG_P (XEXP (x, 0)) + && GET_CODE (XEXP (x, 1)) == ZERO_EXTEND) + { + *total = COSTS_N_INSNS (GET_MODE_SIZE (mode)); + return true; + } + // *sub3.sign_extend2 + if (REG_P (XEXP (x, 0)) + && GET_CODE (XEXP (x, 1)) == SIGN_EXTEND) + { + *total = COSTS_N_INSNS (2 + GET_MODE_SIZE (mode)); + return true; + } + if (AVR_HAVE_MUL && QImode == mode && register_operand (XEXP (x, 0), QImode) diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index 52b6cff4a8b..59ec724f7da 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -1588,12 +1588,10 @@ (define_insn_and_split "*addhi3.sign_extend1_split" "" "#" "&& reload_completed" - [(parallel - [(set (match_dup 0) - (plus:HI - (sign_extend:HI (match_dup 1)) - (match_dup 2))) - (clobber (reg:CC REG_CC))])]) + [(parallel [(set (match_dup 0) + (plus:HI (sign_extend:HI (match_dup 1)) + (match_dup 2))) + (clobber (reg:CC REG_CC))])]) (define_insn "*addhi3.sign_extend1" @@ -1607,7 +1605,8 @@ (define_insn "*addhi3.sign_extend1" ? "mov __tmp_reg__,%1\;add %A0,%1\;adc %B0,__zero_reg__\;sbrc __tmp_reg__,7\;dec %B0" : "add %A0,%1\;adc %B0,__zero_reg__\;sbrc %1,7\;dec %B0"; } - [(set_attr "length" "5")]) + [(set (attr "length") + (symbol_ref ("4 + reg_overlap_mentioned_p (operands[0], operands[1])")))]) (define_insn_and_split "*addhi3_zero_extend.const_split" [(set (match_operand:HI 0 "register_operand" "=d") @@ -1665,7 +1664,7 @@ (define_insn "*addhi3_zero_extend.ashift1" (define_insn_and_split "*usum_widenqihi3_split" [(set (match_operand:HI 0 "register_operand" "=r") - (plus:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "0")) + (plus:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%0")) (zero_extend:HI (match_operand:QI 2 "register_operand" "r"))))] "" "#" @@ -1678,7 +1677,7 @@ (define_insn_and_split "*usum_widenqihi3_split" (define_insn "*usum_widenqihi3" [(set (match_operand:HI 0 "register_operand" "=r") - (plus:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "0")) + (plus:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%0")) (zero_extend:HI (match_operand:QI 2 "register_operand" "r")))) (clobber (reg:CC REG_CC))] "reload_completed" @@ -2186,7 +2185,8 @@ (define_insn "*subhi3.sign_extend2" ? "mov __tmp_reg__,%2\;sub %A0,%2\;sbc %B0,__zero_reg__\;sbrc __tmp_reg__,7\;inc %B0" : "sub %A0,%2\;sbc %B0,__zero_reg__\;sbrc %2,7\;inc %B0"; } - [(set_attr "length" "5")]) + [(set (attr "length") + (symbol_ref ("4 + reg_overlap_mentioned_p (operands[0], operands[2])")))]) ;; "subsi3" ;; "subsq3" "subusq3"