From patchwork Tue Nov 14 09:59:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xi Ruoyao X-Patchwork-Id: 164802 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp1756709vqg; Tue, 14 Nov 2023 02:04:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IEVmn1h4UDOgcYQrxuplXODyB2Cg2Lp9KwXaqMsQckRI9Q5ai4A3WvIVDT5MIx2QxhJgI+B X-Received: by 2002:a25:abc3:0:b0:d9c:a7fa:dbcb with SMTP id v61-20020a25abc3000000b00d9ca7fadbcbmr9030838ybi.22.1699956267039; Tue, 14 Nov 2023 02:04:27 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1699956267; cv=pass; d=google.com; s=arc-20160816; b=mf/EewOi9FH3IrunUe3BrtsSsz0m3zvyxQXpAs6Ie6lmg0jQtt84YIoXIV8DYYQA27 UaMgCfn5+OyRNgh76SE47W7gQqL5f43BahOYNbr6h7ayLcuN+Pkci9OsUS+Zliv2sBNT LrAnpFgo7tTEKdCj2biVPudK772sugmgOeyTY7xFSMs2QUrV6lsjhZdPOBwDHwH+8smR Gm/9Y2zwQjZ4qLjZCMbULp+ETLGEytVFBMAVVccgcGxXyppsPlLqSk4PrkT8kMBtTAxs 3NQKdbXI8nez3m/+CCXQHpa4eyOLQdoNNW9oerJODXwEIC1/Tu9wDAV2DAH6rUKLvhs5 dnLw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=f9ZzmObzcGpmHxK4GTXEuNz9BLOPu5gjytm8FgbBka4=; fh=SpKR8TMShUFcNZRn/QJ1UvQ8KPdnHQmoN0koTB0s5wU=; b=UONWLE8NDzLdTnq5RHYtd82E5rhru6M8DNtLF/IjND1mwNHJqII8Qxd/f/Kr3kPapB ++AJylEV2oCJCQ0f7ieGxrKY/Lg6JCX5088sB6GcAREeDumN+oFwYxEhLrxRa4kQHeSW RhsVU7lTB/UD93Zjdcusfr7f+UssntgtvmQKEJu75FH4O9xDLA6IkC66RhtwzUl6Iyka 0lHXbdev5xCULGz3YpccZNijZ8x2rzFEYrMjdCR7+QQLdLvQbJHTUKX0He4TEEFP26zp JBO/Q7G2ssrYDLZ3Ltadp6tG9CE1T8v0t94FKuzzhQYHFpjAdI5AcoSj6mdWOqPFbQNE iFvA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@xry111.site header.s=default header.b=cUveWslM; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=xry111.site Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id t16-20020a0cef50000000b00672a9f42a8bsi6134748qvs.448.2023.11.14.02.04.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 02:04:27 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@xry111.site header.s=default header.b=cUveWslM; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=xry111.site Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 52A1C386BFCC for ; Tue, 14 Nov 2023 10:04:20 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id B29F2385841C; Tue, 14 Nov 2023 10:03:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B29F2385841C Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B29F2385841C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=89.208.246.23 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699956237; cv=none; b=Y1tsLGAHa/C3LoFzJVvItaWYLJOXInL0PmyhMJqk8QT1Ll3agtLeYiVewe/R9ikQBltCoRjyyualzhu2gg+NSrvQo0iRt+ACVJxvZyD3W7eW3vm7KC0RsEWyNoq0EZX/MfVoxa6xzKDlqEsoRWpTa88y4URSLyu+Do7/Qzf7JLg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699956237; c=relaxed/simple; bh=M1Ii+8S7NDCxMICmp1a0XtFIylKM2EfF1cuGyIsD5/Y=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=X7+plfy+PoQlNLonRC2gcvuyzvjRc2fSv68NPUtlqlknueNABHYuTQTi8Fm6yUlVXTDkI9Z3CljX/wV5vwpy/zY1BNzWGD2NXLZwr5lv733brZOLhhgUSErzLzEkvkDmYs7f8/7esSAHK8QzULNy0f469c5LUtVB4Gob916EoLY= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1699956225; bh=M1Ii+8S7NDCxMICmp1a0XtFIylKM2EfF1cuGyIsD5/Y=; h=From:To:Cc:Subject:Date:From; b=cUveWslMaeKQEPp0Gr8ZzWdgxdaGXM1OGTWDRSLZtt8bkg/jkxUFieHvjuj1V52zh WkOc41zzEHA+3TgmGSKsDmPRhTV87C5y7EQZICsDRS9GO3P1487ddtmzy7pbjZJP8v 4KJzBD6a8C55EAVyUbZPo0zRich6cWXD/zIWyZOg= Received: from stargazer.. (unknown [IPv6:240e:358:11dd:4400:dc73:854d:832e:2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 8690066A03; Tue, 14 Nov 2023 05:03:38 -0500 (EST) From: Xi Ruoyao To: gcc-patches@gcc.gnu.org Cc: chenglulu , i@xen0n.name, xuchenghua@loongson.cn, Tamar Christina , tschwinge@gcc.gnu.org, Roger Sayle , Andrew Pinski Subject: [PATCH] Only allow (copysign x, NEG_CONST) -> (fneg (fabs x)) simplification for constant folding [PR112483] Date: Tue, 14 Nov 2023 17:59:44 +0800 Message-ID: <20231114100320.47373-1-xry111@xry111.site> X-Mailer: git-send-email 2.42.1 MIME-Version: 1.0 X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, LIKELY_SPAM_FROM, SPF_HELO_PASS, SPF_PASS, 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+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782533342939076296 X-GMAIL-MSGID: 1782533342939076296 From: Andrew Pinski On targets with native copysign instructions, (copysign x, -1) is usually more efficient than (fneg (fabs x)). Since r14-5284, in the middle end we always optimize (fneg (fabs x)) to (copysign x, -1), not vice versa. If the target does not support native fcopysign, expand_COPYSIGN will expand it as (fneg (fabs x)) anyway. gcc/ChangeLog: PR rtl-optimization/112483 * simplify-rtx.cc (simplify_binary_operation_1) : Call simplify_unary_operation for NEG instead of simplify_gen_unary. --- [xry111]: Following Andrew's suggestion, I bootstrapped and regtested this patch on loongarch64-linux-gnu. Now with float t(float x) { return __builtin_copysignf(x, -0.1234); } It correctly generates pcalau12i $r12,%pc_hi20(.LC0) fld.s $f1,$r12,%pc_lo12(.LC0) fcopysign.s $f0,$f0,$f1 jr $r1 instead of the de-optimized fabs.s and fneg.s Ok for trunk? gcc/simplify-rtx.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc index 2d2e5a3c1ca..f3745d86aea 100644 --- a/gcc/simplify-rtx.cc +++ b/gcc/simplify-rtx.cc @@ -4392,7 +4392,7 @@ simplify_ashift: real_convert (&f1, mode, CONST_DOUBLE_REAL_VALUE (trueop1)); rtx tmp = simplify_gen_unary (ABS, mode, op0, mode); if (REAL_VALUE_NEGATIVE (f1)) - tmp = simplify_gen_unary (NEG, mode, tmp, mode); + tmp = simplify_unary_operation (NEG, mode, tmp, mode); return tmp; } if (GET_CODE (op0) == NEG || GET_CODE (op0) == ABS)