From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 432323858C5F for ; Mon, 24 Jul 2023 19:42:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 432323858C5F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690227733; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references; bh=iBGT+pbZob44B6JkmrnFuHWbVc+IRi8XQpppuhuqggo=; b=DezTWhvBk49n2sQl0kYtGxKJDl/Pcp+uaKonAGuB/E+WsYzb0EktN2tKNEhxDIS8gVUfTW sd8Indn7Z8lvUg0ODvjlFNEkFunDjPcg8BDVtg8bKTqPpZsvNloJPQeP4yIhpBBubOKHZx 8cFI/lHVCadwKA0Q/XMHbKQM8l1WDfI= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-37-PQH9BGAYPdCbutciY5gfIQ-1; Mon, 24 Jul 2023 15:42:12 -0400 X-MC-Unique: PQH9BGAYPdCbutciY5gfIQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 918FE185A794; Mon, 24 Jul 2023 19:42:11 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.45.224.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 561A0112131B; Mon, 24 Jul 2023 19:42:11 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.17.1/8.17.1) with ESMTPS id 36OJg9fn3993586 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 24 Jul 2023 21:42:09 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.17.1/8.17.1/Submit) id 36OJg8AV3993585; Mon, 24 Jul 2023 21:42:08 +0200 Date: Mon, 24 Jul 2023 21:42:08 +0200 From: Jakub Jelinek To: Drew Ross Cc: Richard Biener , Jeff Law , Andrew Pinski , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] match.pd: Implement missed optimization (x << c) >> c -> -(x & 1) [PR101955] Message-ID: Reply-To: Jakub Jelinek References: <20230721150851.94504-1-drross@redhat.com> <6acebf98-5165-2c0c-7dea-0c148b7034cd@gmail.com> MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,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 List-Id: On Mon, Jul 24, 2023 at 03:29:54PM -0400, Drew Ross via Gcc-patches wrote: > So would something like > > (simplify > (rshift (nop_convert? (lshift @0 INTEGER_CST@1)) @@1) > (with { tree stype = build_nonstandard_integer_type (1, 0); } > (if (INTEGRAL_TYPE_P (type) > && !TYPE_UNSIGNED (type) > && wi::eq_p (wi::to_wide (@1), element_precision (type) - 1)) > (convert (convert:stype @0))))) > > work? Certainly swap the if and with and the (with then should be indented by 1 column to the right of (if and (convert one further (the reason for the swapping is not to call build_nonstandard_integer_type when it will not be needed, which will be probably far more often then an actual match). As discussed privately, the above isn't what we want for vectors and the 2 shifts are probably best on most arches because even when using -(x & 1) the { 1, 1, 1, ... } vector would often needed to be loaded from memory. Jakub