From patchwork Tue Feb 4 10:24:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 1233243 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-518853-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha1 header.s=default header.b=bIoevx4U; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=H7BwzMae; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=H7BwzMae; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 48BgnG11NFzB3tL for ; Tue, 4 Feb 2020 21:25:20 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:content-type :content-transfer-encoding:mime-version; q=dns; s=default; b=QO/ j2QzHDTFBTF7QTdsN1Rkbpb/uRpLSuDcbGyrgNGEuOZZ5RF571HDoR2nOR6FFyPB 4Qch28yzMLdecFFth7/EEWUbigtGZzb2L0+5ukI9kF5gExG8h9sqn69r9Ej8sBWH BtzMGiKplJkUWm+L4XrLosNDHKw1gNaMYFxQ+E2s= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:content-type :content-transfer-encoding:mime-version; s=default; bh=lT9kxgMD9 jj0BZMT6hK6VkqNeL8=; b=bIoevx4UTLsXB7I6+sZ8J1615PV3qAC4MtzBQOWX5 C4pi4pCPjorhM+dI6Ikz11lMEtWnPZqudVZZEk7EohHrPrQ0Ckkw3dcYdNqk7x3N w/c8vW5YIgrRw35Jm35oFGFAyEwBuZHvZ79/3XIkfojNSXcSIk+bsn8ajduuJdwa Kw= Received: (qmail 129809 invoked by alias); 4 Feb 2020 10:25:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 129792 invoked by uid 89); 4 Feb 2020 10:25:12 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-20.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 spammy=optab X-HELO: EUR04-HE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr70073.outbound.protection.outlook.com (HELO EUR04-HE1-obe.outbound.protection.outlook.com) (40.107.7.73) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 04 Feb 2020 10:25:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0aJpCrdAq3uncX2d3/TaGM/L3JZENhml/GOq+4yHPU0=; b=H7BwzMaewbmmPRDFvQ96OcuWU/bzX+WCFjkBxjli/72JEdfetWrseGJkxG69NDdtJTfF+6yuaHNRk/pLCEoo+Yu8x0BXZQqvfM9BsKPQ3k6ar6/5RTemZ8fxIwdHXORB8NDCCm9OxHe3XUq+73/eUlooFbEI11jNrdg/J4K0OgM= Received: from VI1PR0801CA0086.eurprd08.prod.outlook.com (2603:10a6:800:7d::30) by AM0PR08MB4610.eurprd08.prod.outlook.com (2603:10a6:208:104::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2707.21; Tue, 4 Feb 2020 10:24:51 +0000 Received: from DB5EUR03FT061.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::207) by VI1PR0801CA0086.outlook.office365.com (2603:10a6:800:7d::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.32 via Frontend Transport; Tue, 4 Feb 2020 10:24:51 +0000 Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; gcc.gnu.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT061.mail.protection.outlook.com (10.152.21.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.18 via Frontend Transport; Tue, 4 Feb 2020 10:24:50 +0000 Received: ("Tessian outbound 0420f1404d58:v42"); Tue, 04 Feb 2020 10:24:50 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a1ede1d14985fba7 X-CR-MTA-TID: 64aa7808 Received: from fb36abba8668.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 80C7E7EF-80B5-41DB-A045-3D1247B11B52.1; Tue, 04 Feb 2020 10:24:40 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id fb36abba8668.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 04 Feb 2020 10:24:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f+t1/1IqCj3mBWTLExweZDQArN8Re6/3GjfGB29qMyilfesqifYadcIFxeEpwYdFzcdEmxdO+xhKw+T6onyrgzhx+O9MqBbb0HDVT1A4kAL97ThqtQvtInH1xblSk9Xkckrp/jGtnUywo6SzLJlD2dvdK1RSZa/9bIUbDNAP3Ydh1egYQ9XS3RaqV1y6154JT7xx2kUO8hCwOs/SKbYZ/mfycuhE5Y4pY/8KYqwQR+bS9+edt93r+W/FkyA92guiYJtDSCVUf2FD8wIqJYtFF4pfSmEwZAcEGEm37DS+DyuBkBTwVG2SLjHGiOlKWxil8zcjX17hh1lnH/08/dDzsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0aJpCrdAq3uncX2d3/TaGM/L3JZENhml/GOq+4yHPU0=; b=hqBvKg6KC8KuqWTSEePsBnbcRdL3rv0BJbLHSYfFfsuW9IcnbGIj/ZWEg9UEYt0DcpDrKrVeos5psxrrzC0HPotaGn9eVDP7bk28QPeF1G0fUnRXDvWlyM7m5ty5vInswA6gFhXgqF1vb2mVDICkEzF5wL48UdlsJxZSbIImrV5PA5knRptSBk5Zfm1/TrXwuTFXGXEtjT7W49zDB40XUpU4RL9Rlmy0mGrmZmmGLgrXVgJwJLvg86KP7xRv0AShhptosSrgAeyfKmUcQfB9GZPSedDDFGUpuZaEglnrcCzgsfkWd26qy8aVZADW2ELMmPl8xY1/PP0TpHBI9rfLmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0aJpCrdAq3uncX2d3/TaGM/L3JZENhml/GOq+4yHPU0=; b=H7BwzMaewbmmPRDFvQ96OcuWU/bzX+WCFjkBxjli/72JEdfetWrseGJkxG69NDdtJTfF+6yuaHNRk/pLCEoo+Yu8x0BXZQqvfM9BsKPQ3k6ar6/5RTemZ8fxIwdHXORB8NDCCm9OxHe3XUq+73/eUlooFbEI11jNrdg/J4K0OgM= Received: from HE1PR0801MB2044.eurprd08.prod.outlook.com (10.168.95.21) by HE1PR0801MB1754.eurprd08.prod.outlook.com (10.168.148.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.30; Tue, 4 Feb 2020 10:24:38 +0000 Received: from HE1PR0801MB2044.eurprd08.prod.outlook.com ([fe80::9055:3c42:aae0:6c83]) by HE1PR0801MB2044.eurprd08.prod.outlook.com ([fe80::9055:3c42:aae0:6c83%9]) with mapi id 15.20.2686.031; Tue, 4 Feb 2020 10:24:38 +0000 From: Wilco Dijkstra To: GCC Patches CC: Richard Earnshaw , Kyrylo Tkachov , Richard Sandiford Subject: [PATCH][AArch64] Improve clz patterns Date: Tue, 4 Feb 2020 10:24:38 +0000 Message-ID: Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Wilco.Dijkstra@arm.com; x-ms-exchange-transport-forked: True x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:5516;OLM:5516; X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4636009)(396003)(346002)(136003)(366004)(39860400002)(376002)(189003)(199004)(55016002)(26005)(5660300002)(81156014)(478600001)(86362001)(316002)(76116006)(64756008)(66446008)(66556008)(66476007)(66946007)(186003)(81166006)(54906003)(4326008)(6506007)(52536014)(8676002)(33656002)(71200400001)(7696005)(9686003)(2906002)(8936002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1754; H:HE1PR0801MB2044.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: hSXZtjlfipPBDHpwkRX+fQlni31+tHwBmw13K3S8jXTEtvh6+gDPbcfqxxqz8dv7TiSwoQa/FW11GFHF1ftwdPrlI2W1aVx6tvPuOpWB+7SSWQJKgrJd3axQcz4uJn4Py/aB3jdp1vAWwGMFrPUeivbq8jehXRZj3e2BBz1FyqBHVo+y7OzdykuGUSRE43QcIgyA6UCXi88qRgnEEC75lJJwbwL9KrZU2yIXd413vMjQ78bVrsZWk7zpea25S1TtBE9BdnEF95nJwfWs/fi35WClpgQadKFnB4cmBEyf4BM6RHkQaXA/UYsmPlittVE2ucG1ntdq9Ax7NyIcxPZzDuamHXqhnNxg0iO6RjL4f2FSBnfeYcMKijIzaugJ87bKtvUOUbQXkkLHJubn+yca/rRRaLlFHRMUppOgReTrzHp07mOQnXkHarMCpyamg3Uk x-ms-exchange-antispam-messagedata: KaC9rXfqM6VHKyppb6S03YArFlKm3kXD3X4yLjqlxeFr3zVaKJMTNYnuKHTDaBI05bGPOucfwTkIquG7vIWGlWvzEZISUe1r57GYxH9hBGp/68CpnT/1FZ65DJh4MjBhDibelf+YRW+GF5hVC1Be/w== MIME-Version: 1.0 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Wilco.Dijkstra@arm.com; X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 6895ca50-f514-4965-aff5-08d7a95c708e Although GCC should understand the limited range of clz/ctz/cls results, Combine sometimes behaves oddly and duplicates ctz to remove a sign extension. Avoid this by adding an explicit AND with 127 in the patterns. Deepsjeng performance improves by ~0.6%. Bootstrap OK. ChangeLog: 2020-02-03 Wilco Dijkstra * config/aarch64/aarch64.md (clz2): Mask the clz result. (clrsb2): Likewise. (ctz2): Likewise. diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 5edc76ee14b55b2b4323530e10bd22b3ffca483e..7ff0536aac42957dbb7a15be766d35cc6725ac40 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -4794,7 +4794,8 @@ (define_insn "*and_one_cmpl_3_compare0_no_reuse" (define_insn "clz2" [(set (match_operand:GPI 0 "register_operand" "=r") - (clz:GPI (match_operand:GPI 1 "register_operand" "r")))] + (and:GPI (clz:GPI (match_operand:GPI 1 "register_operand" "r")) + (const_int 127)))] "" "clz\\t%0, %1" [(set_attr "type" "clz")] @@ -4848,7 +4849,8 @@ (define_expand "popcount2" (define_insn "clrsb2" [(set (match_operand:GPI 0 "register_operand" "=r") - (clrsb:GPI (match_operand:GPI 1 "register_operand" "r")))] + (and:GPI (clrsb:GPI (match_operand:GPI 1 "register_operand" "r")) + (const_int 127)))] "" "cls\\t%0, %1" [(set_attr "type" "clz")] @@ -4869,7 +4871,8 @@ (define_insn "rbit2" (define_insn_and_split "ctz2" [(set (match_operand:GPI 0 "register_operand" "=r") - (ctz:GPI (match_operand:GPI 1 "register_operand" "r")))] + (and:GPI (ctz:GPI (match_operand:GPI 1 "register_operand" "r")) + (const_int 127)))] "" "#" "reload_completed"