From patchwork Wed Sep 29 16:21:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 45567 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 362D1385802E for ; Wed, 29 Sep 2021 16:27:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 362D1385802E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1632932866; bh=8+RskaDLN9be9DjFyqlYo1zfv+ESTgcJ53RBRphi4dI=; h=Date:To:Subject:In-Reply-To:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=rE55HJsDFBonoX+IQ81NmAA3V2zacrEGw7b41xjeI+EOA4W2kqkNxFgoI8eHul6KU c7tbL+ys1b9UIheXSrRjXq45lucvK3oiOBOFi/tDuGpo9a0Q9FFW9M40Scaq6SjI/Z WvdIMFFwnVdoFagWueYjzrcl24XEKakD+hSgU27Q= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80075.outbound.protection.outlook.com [40.107.8.75]) by sourceware.org (Postfix) with ESMTPS id DBE25385801D for ; Wed, 29 Sep 2021 16:22:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DBE25385801D Received: from DU2P250CA0018.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:231::23) by HE1PR0801MB2012.eurprd08.prod.outlook.com (2603:10a6:3:4d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.18; Wed, 29 Sep 2021 16:22:12 +0000 Received: from DB5EUR03FT023.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:231:cafe::3b) by DU2P250CA0018.outlook.office365.com (2603:10a6:10:231::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.13 via Frontend Transport; Wed, 29 Sep 2021 16:22:12 +0000 X-MS-Exchange-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=pass 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 DB5EUR03FT023.mail.protection.outlook.com (10.152.20.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Wed, 29 Sep 2021 16:22:12 +0000 Received: ("Tessian outbound a77cafe56b47:v103"); Wed, 29 Sep 2021 16:22:12 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 8fdff116c2ea7b0e X-CR-MTA-TID: 64aa7808 Received: from 1a62dab6eb6b.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5B764206-13C7-45AF-B97E-5864AB1C5F1F.1; Wed, 29 Sep 2021 16:21:59 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 1a62dab6eb6b.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 29 Sep 2021 16:21:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c5/t8kgcELaaYxA0LDLFFQc+2w8gi4EvPETxoywchp9XoAoMpwrl/KgCWk48Wy8x95jfSYKQC93QpqFhyt+uuvZ/eXWk21jPx67MfklX5d1euuBIqrdyRAshBAJrdKRYQ0BGORSh9/Og73ho0eW4aUkzsEwkD3gvFHJc1SordIeF0RRMHoYaWlCMeRukdH45emmaTVpLA4WDHMdWZo40vZCTAWkPv2T7oDR+U18T923dpDYNt6PA/L637NNe2t2fjsvDtSNEx8A7y3/x6xLlxTVllkzRKQwdWrfqt+cM5xooMtAfdGRaOirY9UCAvmAUq01fH4IYsZBW9hEPNMj2kw== 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; bh=8+RskaDLN9be9DjFyqlYo1zfv+ESTgcJ53RBRphi4dI=; b=IjFnzu7p9yecgMzCsXxw4d2gqzTQcAQPsK/wbpunWRl0xeoEEvBPLZHG8kMIrhQDx9hPhYubJxmygKZaLYt5qoJgyR2S/BEPHC2Mng3RZJRSWeCDKjUzqoTNZSWc9tXPmUNITUYNRGhrwBGIols2CuuB/XhjJmivscobvppf0W9tGJfBOVsgpsBBCZuTmAun9/R411C1YcUnnBbdyqsNdhwCgfv35HKYpsDzUM1d4QZECURSW74n8xO/CCTD6Drmo3HZvWbyk977lK5bnlCdNW7QI2nbQYZVSPSMeb2Y1yMBDYlhfJDyhj+N3puiO2Jary5CjeMNSRuZSiXnwuu3cQ== 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 Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR08MB3437.eurprd08.prod.outlook.com (2603:10a6:803:7e::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.13; Wed, 29 Sep 2021 16:21:58 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd45:5ad5:f666:272a]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd45:5ad5:f666:272a%5]) with mapi id 15.20.4544.022; Wed, 29 Sep 2021 16:21:58 +0000 Date: Wed, 29 Sep 2021 17:21:49 +0100 To: gcc-patches@gcc.gnu.org Subject: [PATCH 7/7]AArch64 Combine cmeq 0 + not into cmtst Message-ID: <20210929162147.GA12194@arm.com> Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: SA9P223CA0025.NAMP223.PROD.OUTLOOK.COM (2603:10b6:806:26::30) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 Received: from arm.com (217.140.106.55) by SA9P223CA0025.NAMP223.PROD.OUTLOOK.COM (2603:10b6:806:26::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15 via Frontend Transport; Wed, 29 Sep 2021 16:21:56 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 463f7320-3b51-4d7c-07f0-08d983654b0e X-MS-TrafficTypeDiagnostic: VI1PR08MB3437:|HE1PR0801MB2012: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:1122;OLM:1122; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: osyKC2Q8xMgpQmlYY55QPwhL/FuUdzSbm1oJXfrZGv/WkpwcCx7w0S3fPHYQXHCxIdNCQABS2eyxJg6aT5WVBKrSQ0yidhIhiN67z9w87Fij+bOqc29vl9twSO/g7w48DSxbw6UQIzagXndrw43jg+7lXf22e1CbSj6/Dgan4jwgE3Bh7f/k+xe9VfOVxKO2NXLGGgZ6POT5uZ9GLJlSJuOGA/LAQgO86PVyhsrmAxbUgE32HDyeyMenp985okxI9zGG2emj3TDYYzjugPiuS5FpdQZ2WYXHZS4G+jAVXctstT7vXcZufp14gEVvn5c06Wh3AjOQvgHaq3+RLNUFGtIJKa3TvUROG6S7rtK+FGGHl3LNFuGZ0BC3lHGaQUD/aJ2U3l3sZOMejJSUdf3sEEBDtRMAbVqRxacTcM8Pq+mfv4SyYp02ZViis2DV0PQs8E2z+aiVVpeOLuh6+RiKmO5Odt/U6znDGw7H8B/NHVQjfjWPuF6veOnDiI6MsdeS+sR0+GaahQYFJw//j+wcCacXOyEZvBOKH7mjfMLnhzXqVJd92VX98mOym182YgY50IcobhkyGxEkyowsFIokJjjiYVhEBJBRxGbg+6NI/zCGH0g67iaBPuL9WITPOMBPwHPXlVCNsnDnuy5b2kD1rlikxok0fLtLo1hcYTB/1zKSXQZx2WMu8VJ4AopUTIbCwZvKcsILvI00m9gj72Ze6HYSSph1o8PLaOkpi3t4EC7JxDrucjGViQaL82dDjViISYu4rWlKfcUnw8BK8rrMLwhESFGaioJSCuqd9S9ID2v/F43WWR0gzy2RxNMMFz0i X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8936002)(6666004)(8886007)(8676002)(36756003)(86362001)(2906002)(4743002)(66556008)(66476007)(66616009)(55016002)(33656002)(316002)(38350700002)(38100700002)(1076003)(26005)(235185007)(5660300002)(33964004)(508600001)(52116002)(66946007)(44832011)(44144004)(7696005)(6916009)(956004)(2616005)(4326008)(186003)(2700100001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3437 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT023.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: d264319c-3927-4df8-bf8c-08d98365427f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OeuLBz61Ty3DbsvoqNNupxi5pkqmYyCjURNiWjyevFvOoJP3ZtnvLDi7v34UaiGDc/RffghvT9rjQyFS5aywqZ94Wxut8kxJZ6Qi4qcpXYNmCY/eNjobzEhfarqik1F7vtEL1WDoOvgl8fJfCZi7CKQIPO0TqpRAQrrqB3ocPKsQ132KIwuqC6V6F52D/gIBGlYUJ4WGcFy7qTQVBHjM3M4mHvF4MHOBvcPzaU9TPCZoLNAGU5I0GTjOTnwDVyMBVxs904XSaUVRzwgn06f/c5l5wi0XfZO421AsHT0kv6zT2L0yAiu2gMSjEfPv695AKMsroY8cmTlQEMDVki+A2r3NmmUaTOf2c3H0HL7QEP9pbO2ZHzL7zQAjH8X70qSUs9lxOtHPmGJtauwgagxDfLy7+5Ftg87hygACpaJuL1ye83XdeRLez7gVnoY8cw2FNbAN+chRjctP4IsL/jhEviUyCM+6tD1JNwjIj8VSO03bpfxoch2UkSBdpCBNZnlNuhmmKVK65FHvK8Q0SFU0f/hxQMB0or9iOFmy4ONQ/GOYVh3aYKtB6bRwd+W3AZeSkcl30iA3vQabgc3yVG+0K2UegfobR4MeaepFsHawmfIahii09K/11Pzd3wWhIzO6R7W/Hlkd9y4gmwP2HZAD3aG4ogCMA1Yn0KxR2u64onln/C6MuVzrm6VcRvTQXR8wHYA8kukJv5i9qhr9iGJeurrSezW4NCbRFZJ4Bk1Hi1CrQB0XfpUs20ggJyEvCkuypcxthTZRsfryxGl6BkEh7bG2ctZvVb0r0C2+Kf/ewFx12WpE/phvHz2/ynLHPLi8 X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(508600001)(44832011)(44144004)(33964004)(4743002)(36860700001)(86362001)(26005)(7696005)(55016002)(186003)(6916009)(316002)(235185007)(5660300002)(82310400003)(2906002)(47076005)(70206006)(70586007)(66616009)(36756003)(8936002)(81166007)(356005)(6666004)(33656002)(2616005)(956004)(8886007)(8676002)(336012)(4326008)(1076003)(2700100001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2021 16:22:12.3642 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 463f7320-3b51-4d7c-07f0-08d983654b0e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT023.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB2012 X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org 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: Tamar Christina via Gcc-patches From: Tamar Christina Reply-To: Tamar Christina Cc: Richard.Earnshaw@arm.com, nd@arm.com, richard.sandiford@arm.com, Marcus.Shawcroft@arm.com Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi All, This turns a bitwise inverse of an equality comparison with 0 into a compare of bitwise nonzero (cmtst). We already have one pattern for cmsts, this adds an additional one which does not require an additional bitwise and. i.e. #include uint8x8_t bar(int16x8_t abs_row0, int16x8_t row0) { uint16x8_t row0_diff = vreinterpretq_u16_s16(veorq_s16(abs_row0, vshrq_n_s16(row0, 15))); uint8x8_t abs_row0_gt0 = vmovn_u16(vcgtq_u16(vreinterpretq_u16_s16(abs_row0), vdupq_n_u16(0))); return abs_row0_gt0; } now generates: bar: cmtst v0.8h, v0.8h, v0.8h xtn v0.8b, v0.8h ret instead of: bar: cmeq v0.8h, v0.8h, #0 not v0.16b, v0.16b xtn v0.8b, v0.8h ret Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: * config/aarch64/aarch64-simd.md (*aarch64_cmtst_same_): New. gcc/testsuite/ChangeLog: * gcc.target/aarch64/mvn-cmeq0-1.c: New test. --- inline copy of patch -- diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 9d936428b438c95b56614c94081d7e2ebc47d89f..bce01c36386074bf475b8b7e5c69a1959a13fef3 100644 diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 9d936428b438c95b56614c94081d7e2ebc47d89f..bce01c36386074bf475b8b7e5c69a1959a13fef3 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -6585,6 +6585,23 @@ (define_insn "aarch64_cmtst" [(set_attr "type" "neon_tst")] ) +;; One can also get a cmtsts by having to combine a +;; not (neq (eq x 0)) in which case you rewrite it to +;; a comparison against itself + +(define_insn "*aarch64_cmtst_same_" + [(set (match_operand: 0 "register_operand" "=w") + (plus: + (eq: + (match_operand:VDQ_I 1 "register_operand" "w") + (match_operand:VDQ_I 2 "aarch64_simd_imm_zero")) + (match_operand: 3 "aarch64_simd_imm_minus_one"))) + ] + "TARGET_SIMD" + "cmtst\t%0, %1, %1" + [(set_attr "type" "neon_tst")] +) + (define_insn_and_split "aarch64_cmtstdi" [(set (match_operand:DI 0 "register_operand" "=w,r") (neg:DI diff --git a/gcc/testsuite/gcc.target/aarch64/mvn-cmeq0-1.c b/gcc/testsuite/gcc.target/aarch64/mvn-cmeq0-1.c new file mode 100644 index 0000000000000000000000000000000000000000..59f3a230271c70d3bb51d0338d9ec2613bd4394b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/mvn-cmeq0-1.c @@ -0,0 +1,17 @@ +/* { dg-do assemble } */ +/* { dg-options "-O3 --save-temps --param=vect-epilogues-nomask=0" } */ + +#include + +uint8x8_t bar(int16x8_t abs_row0, int16x8_t row0) { + uint16x8_t row0_diff = + vreinterpretq_u16_s16(veorq_s16(abs_row0, vshrq_n_s16(row0, 15))); + uint8x8_t abs_row0_gt0 = + vmovn_u16(vcgtq_u16(vreinterpretq_u16_s16(abs_row0), vdupq_n_u16(0))); + return abs_row0_gt0; +} + + +/* { dg-final { scan-assembler-times {\tcmtst\t} 1 } } */ +/* { dg-final { scan-assembler-not {\tcmeq\t} } } */ +/* { dg-final { scan-assembler-not {\tnot\t} } } */