From patchwork Thu Sep 3 01:55:04 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: wangjue X-Patchwork-Id: 2297162 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.a=rsa-sha256 header.s=default header.b=Qo+ZOwCX; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4hb2k64JwKz1xvg for ; Thu, 03 Sep 2026 11:55:41 +1000 (AEST) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 03FF74BA2E0F for ; Thu, 3 Sep 2026 01:55:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 03FF74BA2E0F Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.a=rsa-sha256 header.s=default header.b=Qo+ZOwCX X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from out30-111.freemail.mail.aliyun.com (out30-111.freemail.mail.aliyun.com [115.124.30.111]) by sourceware.org (Postfix) with ESMTPS id 663684BA2E0F for ; Thu, 3 Sep 2026 01:55:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 663684BA2E0F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 663684BA2E0F Authentication-Results: sourceware.org; arc=none smtp.remote-ip=115.124.30.111 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788400512; cv=none; b=pSEitZDb38IF5rxIuesm3+IQt1MKXzE0wfhWFZkJEp4v+LeSjs6jyT7WxXEzYG/mK07qlcAUaYEsq1LEQnW5jLUj4rizbBu8RoAxyQ7kWEZTSHjcNaW/Wsqh7VL8fhcRFYFX4GmuXLinaFq86BOBzZ9fVUUn5IgqQrW6dx+2mM8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788400512; c=relaxed/simple; bh=L6eCme4ej9pRMXApxMGGijLIBtoWXFNu6+oZgQpSOfA=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=SHeJqhkkO5ZhnoOr1U37ZGVsXBMnAAAupveoq+yV+WqJimZWu7jRngdRLGCzpO3KCzu99EqzqgdkLHFB343xAQ2yJtQb4KWpgYnrtMtbuEbjzhRu12KOG8QPyxby0fBD859opbFCLArMIwfqUzIZUmUkrkQ+cu0nSqPKLcq67Pk= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.a=rsa-sha256 header.s=default header.b=Qo+ZOwCX DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 663684BA2E0F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1788400508; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=k67hfymoWXEPK0kWL9UTIT8HgXquEyPOqAggK3MMk3k=; b=Qo+ZOwCXRpmHpkW3xWVvKBkP+q9zxDFVC95i9ultOLRxURjUufqJlNaZC9o5Low//sv5Uo/Kqz8Ut49sMqa7Wo+ljPTuFBsdShtikZw942Fpegd8GuPLK9iVdXyVUrOKZiab0B6pmLUlwGlOHSE0oGkpP5bi0E4hAW4mrWlQgtI= X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R141e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=maildocker-contentspam011083073210; MF=juewang@linux.alibaba.com; NM=1; PH=DS; RN=5; SR=0; TI=SMTPD_---0XAER3fC_1788400506; Received: from localhost.localdomain(mailfrom:juewang@linux.alibaba.com fp:SMTPD_---0XAER3fC_1788400506 cluster:ay36) by smtp.aliyun-inc.com; Thu, 03 Sep 2026 09:55:07 +0800 From: wangjue To: gcc-patches@gcc.gnu.org Cc: rdapp.gcc@gmail.com, jeffrey.law@oss.qualcomm.com, wangjue.wangjue@alibaba-inc.com, juewang Subject: [PATCH] testsuite: Add tests for parallel noce sequence costing Date: Thu, 3 Sep 2026 09:55:04 +0800 Message-Id: <20260903015504.76910-1-juewang@linux.alibaba.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <99a2afd6-3b4f-4e1d-a2a6-ea54f81b344c@oss.qualcomm.com> References: <99a2afd6-3b4f-4e1d-a2a6-ea54f81b344c@oss.qualcomm.com> MIME-Version: 1.0 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~incoming=patchwork.ozlabs.org@gcc.gnu.org From: juewang Test both sides of the issue-rate adjustment at a branch cost of three. The xt-c9501fdvt tuning model makes three independent pointer selections profitable, while the generic model retains the branch. gcc/testsuite/ChangeLog: * gcc.target/riscv/ifcvt-parallel-cost-1.c: New test. * gcc.target/riscv/ifcvt-parallel-cost-2.c: New test. --- .../gcc.target/riscv/ifcvt-parallel-cost-1.c | 27 +++++++++++++++++ .../gcc.target/riscv/ifcvt-parallel-cost-2.c | 30 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/ifcvt-parallel-cost-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/ifcvt-parallel-cost-2.c diff --git a/gcc/testsuite/gcc.target/riscv/ifcvt-parallel-cost-1.c b/gcc/testsuite/gcc.target/riscv/ifcvt-parallel-cost-1.c new file mode 100644 index 00000000000..c9ac7f48b4f --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/ifcvt-parallel-cost-1.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target rv64 } */ +/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" } } */ +/* { dg-options "-O2 -march=rv64gc_zicond -mabi=lp64d -mtune=xt-c9501fdvt -mbranch-cost=3" } */ + +extern void consume (void *, void *, void *); + +__attribute__ ((noinline, noclone)) +void +select_three_pointers (long x, long y, + void *a0, void *a1, + void *b0, void *b1, + void *c0, void *c1) +{ + if (x > y) + { + a0 = a1; + b0 = b1; + c0 = c1; + } + + consume (a0, b0, c0); +} + +/* { dg-final { scan-assembler-times "\\sczero\\.eqz\\s" 3 } } */ +/* { dg-final { scan-assembler-times "\\sczero\\.nez\\s" 3 } } */ +/* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/ifcvt-parallel-cost-2.c b/gcc/testsuite/gcc.target/riscv/ifcvt-parallel-cost-2.c new file mode 100644 index 00000000000..178ab54dc2d --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/ifcvt-parallel-cost-2.c @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target rv64 } */ +/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" } } */ +/* { dg-options "-O2 -march=rv64gc_zicond -mabi=lp64d -mtune=generic -mbranch-cost=3" } */ + +extern void consume (void *, void *, void *); + +__attribute__ ((noinline, noclone)) +void +select_three_pointers_generic (long x, long y, + void *a0, void *a1, + void *b0, void *b1, + void *c0, void *c1) +{ + if (x >= y) + { + a0 = a1; + b0 = b1; + c0 = c1; + } + + consume (a0, b0, c0); +} + +/* The generic tuning model has an issue rate of one, so the three pointer + selections are not profitable at a branch cost of three. */ + +/* { dg-final { scan-assembler-times "\\sbge\\s" 1 } } */ +/* { dg-final { scan-assembler-not "\\sczero\\.eqz\\s" } } */ +/* { dg-final { scan-assembler-not "\\sczero\\.nez\\s" } } */