From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id E2AE93858D32 for ; Wed, 15 Nov 2023 14:33:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E2AE93858D32 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E2AE93858D32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=68.232.137.252 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700058825; cv=none; b=moZc0jvWC24FRFCmOK6PjWpueX7kH/Osx1gjMfIdgE8qodiCyIXuzb5Il5zBl0Us6IfCivCOYOR80YwgKaxrVathG+7gPPNaaoVhMkxcbCSKigYsr0e2O/sWQFguxdi2+deUEwwD6rxG0cJVOyiVPWQ+cApKAUuZbawk022wgWc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700058825; c=relaxed/simple; bh=dztSoCJ/zizY3T6WoDrZbw9PKKk4KkJgmi5y4QgkWG8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=oDXdfJ3HssYN1iMD9nsy/hDLYWiQY7RimF0XRvBv39TY3G+M4qur46VqtU01YmWL0O80R0xh/LMBvMhvZBqOFIO+iyEH3Y9M4jEO5EloDCkpLps15Z6zbI/5SntoAJVYbhJxMUzRju7ywgh3kdGCpisR+NlzTi3Yxe6nt38AHnE= ARC-Authentication-Results: i=1; server2.sourceware.org X-CSE-ConnectionGUID: uO+6lXbnTlStjZEkdqO7Zw== X-CSE-MsgGUID: rA5wEFMLQp+02DD+JS7xLQ== X-IronPort-AV: E=Sophos;i="6.03,305,1694764800"; d="scan'208,223";a="22818917" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 15 Nov 2023 06:33:34 -0800 IronPort-SDR: +Yj8ns3z8VHVmM4Z0xzpyN3y45phCSxx8O89cZrIdU4woPzsup2ZZyFoG3XcH8Vi2ijuY93QpM 3/jpWg29kNh7B9QHcCKlflA/kXdOPCiGGpVQqDz7xF60wnjbC6XlAC8TLOACezHd3jIYP6ZucA 7GDPrvoVg9nHwsztnZEmNU2N90e3v0l89OP2KYx6QSO9u+lpqntnuMXh6XM2Q7dxA82q3MphKn xgHR26ozwhSFKY/pBFqjbxxxqITp9RpZxbuIoDI4+JQdJIWcmoWmjSBKNt7y8Q60XGEsdjt3Ml DsI= From: Thomas Schwinge To: Roger Sayle , CC: Tom de Vries Subject: Re: [nvptx PATCH] Update nvptx's bitrev2 pattern to use BITREVERSE rtx. In-Reply-To: <00a701d99995$0c8d3d60$25a7b820$@nextmovesoftware.com> References: <00a701d99995$0c8d3d60$25a7b820$@nextmovesoftware.com> User-Agent: Notmuch/0.29.3+94~g74c3f1b (https://notmuchmail.org) Emacs/28.2 (x86_64-pc-linux-gnu) Date: Wed, 15 Nov 2023 15:33:26 +0100 Message-ID: <877cmjulvt.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,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 List-Id: --=-=-= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi! On 2023-06-08T00:09:00+0100, "Roger Sayle" wro= te: > This minor tweak to the nvptx backend switches the representation of > of the brev instruction from an UNSPEC to instead use the new BITREVERSE > rtx. ACK. > This allows various RTL optimizations including evaluation (constant > folding) of integer constant arguments at compile-time. ..., which we're then observing via commit 61c45c055a5ccfc59463c21ab057dece822d973c "nvptx: Extend 'brev' test cases" that I just pushed; "nvptx: Extend 'brev' test cases". > This patch has been tested on nvptx-none with make and make -k check > with no new failures. Ok for mainline? I've thus updated the test cases for these changes here, and pushed to master branch commit 75c20a99b3a242121eef8a532f5224c00c471b56 "Update nvptx's bitrev2 pattern to use BITREVERSE rtx.", see attached. Gr=C3=BC=C3=9Fe Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename="0001-Update-nvptx-s-bitrev-mode-2-pattern-to-use-BITREVER.patch" >From 75c20a99b3a242121eef8a532f5224c00c471b56 Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Thu, 8 Jun 2023 00:09:00 +0100 Subject: [PATCH] Update nvptx's bitrev2 pattern to use BITREVERSE rtx. This minor tweak to the nvptx backend switches the representation of of the brev instruction from an UNSPEC to instead use the new BITREVERSE rtx. This allows various RTL optimizations including evaluation (constant folding) of integer constant arguments at compile-time. gcc/ * config/nvptx/nvptx.md (UNSPEC_BITREV): Delete. (bitrev2): Represent using bitreverse. gcc/testsuite/ * gcc.target/nvptx/brev-2-O2.c: Adjust. * gcc.target/nvptx/brevll-2-O2.c: Likewise. Co-authored-by: Thomas Schwinge --- gcc/config/nvptx/nvptx.md | 5 +--- gcc/testsuite/gcc.target/nvptx/brev-2-O2.c | 25 ++------------------ gcc/testsuite/gcc.target/nvptx/brevll-2-O2.c | 25 ++------------------ 3 files changed, 5 insertions(+), 50 deletions(-) diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md index 1bb93045403..7a7c9948f45 100644 --- a/gcc/config/nvptx/nvptx.md +++ b/gcc/config/nvptx/nvptx.md @@ -34,8 +34,6 @@ UNSPEC_FPINT_CEIL UNSPEC_FPINT_NEARBYINT - UNSPEC_BITREV - UNSPEC_ALLOCA UNSPEC_SET_SOFTSTACK @@ -636,8 +634,7 @@ (define_insn "bitrev2" [(set (match_operand:SDIM 0 "nvptx_register_operand" "=R") - (unspec:SDIM [(match_operand:SDIM 1 "nvptx_register_operand" "R")] - UNSPEC_BITREV))] + (bitreverse:SDIM (match_operand:SDIM 1 "nvptx_register_operand" "R")))] "" "%.\\tbrev.b%T0\\t%0, %1;") diff --git a/gcc/testsuite/gcc.target/nvptx/brev-2-O2.c b/gcc/testsuite/gcc.target/nvptx/brev-2-O2.c index e35052208d0..c707a87f356 100644 --- a/gcc/testsuite/gcc.target/nvptx/brev-2-O2.c +++ b/gcc/testsuite/gcc.target/nvptx/brev-2-O2.c @@ -1,7 +1,6 @@ /* { dg-do run } */ /* { dg-options "-O2" } */ /* { dg-additional-options -save-temps } */ -/* { dg-final { check-function-bodies {**} {} } } */ inline __attribute__((always_inline)) unsigned int bitreverse32(unsigned int x) @@ -96,26 +95,6 @@ int main(void) return 0; } -/* -** main: -** ... -** mov\.u32 (%r[0-9]+), 0; -** brev\.b32 (%r[0-9]+), \1; -** setp\.[^.]+\.u32 %r[0-9]+, \2, 0; -** ... -** mov\.u32 (%r[0-9]+), -1; -** brev\.b32 (%r[0-9]+), \3; -** setp\.[^.]+\.u32 %r[0-9]+, \4, -1; -** ... -** mov\.u32 (%r[0-9]+), 1; -** brev\.b32 (%r[0-9]+), \5; -** setp\.[^.]+\.u32 %r[0-9]+, \6, -2147483648; -** ... -** mov\.u32 (%r[0-9]+), 2; -** brev\.b32 (%r[0-9]+), \7; -** setp\.[^.]+\.u32 %r[0-9]+, \8, 1073741824; -** ... -*/ -/* { dg-final { scan-assembler-times {\tbrev\.b32\t} 40 } } */ -/* { dg-final { scan-assembler {\mabort\M} } } */ +/* { dg-final { scan-assembler-not {\tbrev\.b32\t} } } */ +/* { dg-final { scan-assembler-not {\mabort\M} } } */ diff --git a/gcc/testsuite/gcc.target/nvptx/brevll-2-O2.c b/gcc/testsuite/gcc.target/nvptx/brevll-2-O2.c index cbfda1b9601..c89be9627f8 100644 --- a/gcc/testsuite/gcc.target/nvptx/brevll-2-O2.c +++ b/gcc/testsuite/gcc.target/nvptx/brevll-2-O2.c @@ -1,7 +1,6 @@ /* { dg-do run } */ /* { dg-options "-O2" } */ /* { dg-additional-options -save-temps } */ -/* { dg-final { check-function-bodies {**} {} } } */ inline __attribute__((always_inline)) unsigned long long bitreverse64(unsigned long long x) @@ -156,26 +155,6 @@ int main(void) return 0; } -/* -** main: -** ... -** mov\.u64 (%r[0-9]+), 0; -** brev\.b64 (%r[0-9]+), \1; -** setp\.[^.]+\.u64 %r[0-9]+, \2, 0; -** ... -** mov\.u64 (%r[0-9]+), -1; -** brev\.b64 (%r[0-9]+), \3; -** setp\.[^.]+\.u64 %r[0-9]+, \4, -1; -** ... -** mov\.u64 (%r[0-9]+), 1; -** brev\.b64 (%r[0-9]+), \5; -** setp\.[^.]+\.u64 %r[0-9]+, \6, -9223372036854775808; -** ... -** mov\.u64 (%r[0-9]+), 2; -** brev\.b64 (%r[0-9]+), \7; -** setp\.[^.]+\.u64 %r[0-9]+, \8, 4611686018427387904; -** ... -*/ -/* { dg-final { scan-assembler-times {\tbrev\.b64\t} 70 } } */ -/* { dg-final { scan-assembler {\mabort\M} } } */ +/* { dg-final { scan-assembler-not {\tbrev\.b64\t} } } */ +/* { dg-final { scan-assembler-not {\mabort\M} } } */ -- 2.34.1 --=-=-=--