From patchwork Tue Feb 28 04:36:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sinan X-Patchwork-Id: 62260 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp2808382wrd; Mon, 27 Feb 2023 20:37:05 -0800 (PST) X-Google-Smtp-Source: AK7set/2z40DUwszHb5wXzJ+jcKDo90IssfRzg3H1kQgaGsxSDTGBA63dbxq5VWMaxjoSZKZln/m X-Received: by 2002:a17:907:d489:b0:8f2:62a9:6159 with SMTP id vj9-20020a170907d48900b008f262a96159mr1183274ejc.2.1677559025221; Mon, 27 Feb 2023 20:37:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677559025; cv=none; d=google.com; s=arc-20160816; b=a6WQv2pvY3CTuYNx6rLc6jiseHEEUCv3DgrgGZR5/OFjvGXqaB/uiGed7rhVZKITt7 QeoPD+9G1uGpsyqm6+2UEZRA0KL3GakHg21qs5WNzjnYImmuGvEvtW8EaGRoowM209my 5k4TfeZ99rBLpbRt2SGuaPKhlTbUAsviX2aUBw93Gf1quYeFKPiEoFtZtgD1oWtqo9J5 isPhd/s9OHqU8bMdL80/YmSlJxv33HlVWVA7Po+8RJBfOLTm0Wb9NTV65jC08cSUicn6 vQe+nkUAghbi84sEXokDK3kHlN/YAIvqIJwmA8YGZBHDJ95jujL04rRRHT5fHoU/P37s WYyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:subject:message-id:cc:to :date:dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=48Bb5nBlI9ThXnj462FoPx/n13+CIJDJYO4pVml2/04=; b=dSIGPRyh5QFN7LaOxvxffMjw+FTARTL8b+R4XhIWt4Lm1UH90ANZLTAYdIHInMnSPv al/FPUJfzJ1uKkqN49YI6zRwumHL2xi4GaR2u47J8wPKvKYZwLE0Z7S9O+ADiQl/FX27 HTc6skiTzIbI6aiSpMmJF+Er2c/VK+zflYaBgZ0vbo9FhfIzcCI8korE3tj/76LA1uBF SH+/vAFLFPkYXLUA4N9VUqZcvzu3FkLufx6+Q5L0VHPqoJxvOoMHb9YuiKTj40HiwUdl /SxxpLJgSBbUPkzySQBl7/18zvfOQkstJlLckj4J+z1pswDYs6Bbr4BxYRbrKaIky6ij JdMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=KiS2TRjf; 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=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id w3-20020a1709064a0300b008b2abc71f00si9810506eju.154.2023.02.27.20.37.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Feb 2023 20:37:05 -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=@gcc.gnu.org header.s=default header.b=KiS2TRjf; 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=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0C4283858C62 for ; Tue, 28 Feb 2023 04:37:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0C4283858C62 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1677559024; bh=48Bb5nBlI9ThXnj462FoPx/n13+CIJDJYO4pVml2/04=; h=Date:To:Cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=KiS2TRjf9wYML7OCL9V7ncCexmEtYGeOVNFMrV5JVkIcXDVkSuJi8BkcLLILQ4NtB fYTudvcOna9w/SJ4Dlgk4YuXN70d6XYQju0vZv9okZSc8YRBzGTC46BGjm0Lwxv1aM 80175H8EO5+Mhi424AmeuPDtuPxd7qTRwBrb95oY= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) by sourceware.org (Postfix) with ESMTPS id BA8CC3858D39 for ; Tue, 28 Feb 2023 04:36:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BA8CC3858D39 X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R121e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=ay29a033018045168; MF=sinan.lin@linux.alibaba.com; NM=1; PH=DW; RN=4; SR=0; TI=W4_0.1.41_DEFAULT_210DD506_1677558720198_o7001c15d; Received: from WS-web (sinan.lin@linux.alibaba.com[W4_0.1.41_DEFAULT_210DD506_1677558720198_o7001c15d]) at Tue, 28 Feb 2023 12:36:15 +0800 Date: Tue, 28 Feb 2023 12:36:15 +0800 To: "gcc-patches" Cc: "kito.cheng" , "palmer" , "jlaw" Message-ID: Subject: =?utf-8?q?=5BPATCH=5D_RISC-V=3A_Allow_const0=5Frtx_operand_in_max/m?= =?utf-8?q?in?= X-Mailer: [Alimail-Mailagent][W4_0.1.41][DEFAULT][Chrome] MIME-Version: 1.0 x-aliyun-mail-creator: W4_0.1.41_DEFAULT_QvNTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMC4wLjAuMCBTYWZhcmkvNTM3LjM2La X-Spam-Status: No, score=-19.7 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, UNPARSEABLE_RELAY, USER_IN_DEF_SPF_WL 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-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Sinan via Gcc-patches From: Sinan Reply-To: Sinan Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1759048132522567899?= X-GMAIL-MSGID: =?utf-8?q?1759048132522567899?= From 73e743348a49a7fffcf2e328b8179e8dbbc3b2b4 Mon Sep 17 00:00:00 2001 From: Lin Sinan Date: Tue, 28 Feb 2023 00:44:55 +0800 Subject: [PATCH] RISC-V: Allow const0_rtx operand in max/min Optimize cases that use max[u]/min[u] against a zero constant. E.g., the case int f(int x) { return x >= 0 ? x : 0; } the current asm output in rv64gc_zba_zbb li rtmp,0 max a0,a0,rtmp could be optimized into max a0,a0,zero gcc/ChangeLog: * config/riscv/bitmanip.md: allow 0 constant in max/min pattern. gcc/testsuite/ChangeLog: * gcc.target/riscv/zbb-min-max-03.c: New test. --- gcc/config/riscv/bitmanip.md | 4 ++-- gcc/testsuite/gcc.target/riscv/zbb-min-max-03.c | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/zbb-min-max-03.c diff --git a/gcc/config/riscv/bitmanip.md b/gcc/config/riscv/bitmanip.md index 58a86bd929f..f771835369c 100644 --- a/gcc/config/riscv/bitmanip.md +++ b/gcc/config/riscv/bitmanip.md @@ -363,9 +363,9 @@ (define_insn "3" [(set (match_operand:X 0 "register_operand" "=r") (bitmanip_minmax:X (match_operand:X 1 "register_operand" "r") - (match_operand:X 2 "register_operand" "r")))] + (match_operand:X 2 "reg_or_0_operand" "rJ")))] "TARGET_ZBB" - "\t%0,%1,%2" + "\t%0,%1,%z2" [(set_attr "type" "bitmanip")]) ;; Optimize the common case of a SImode min/max against a constant diff --git a/gcc/testsuite/gcc.target/riscv/zbb-min-max-03.c b/gcc/testsuite/gcc.target/riscv/zbb-min-max-03.c new file mode 100644 index 00000000000..947300d599d --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/zbb-min-max-03.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gc_zba_zbb -mabi=lp64d" } */ +/* { dg-skip-if "" { *-*-* } { "-O0" } } */ + +int f(int x) { + return x >= 0 ? x : 0; +} + +/* { dg-final { scan-assembler-times "max\t" 1 } } */ +/* { dg-final { scan-assembler-not "li\t" } } */