From patchwork Thu Oct 24 15:05:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jennifer Schmitz X-Patchwork-Id: 2001787 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=XfCGNiqR; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 4XZ8Px1b3Pz1xx6 for ; Fri, 25 Oct 2024 02:06:28 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DD1EA3858C98 for ; Thu, 24 Oct 2024 15:06:26 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on20623.outbound.protection.outlook.com [IPv6:2a01:111:f403:2009::623]) by sourceware.org (Postfix) with ESMTPS id 574203858D21 for ; Thu, 24 Oct 2024 15:05:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 574203858D21 Authentication-Results: sourceware.org; dmarc=fail (p=reject dis=none) header.from=nvidia.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=nvidia.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 574203858D21 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2009::623 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1729782360; cv=pass; b=HJCVGWNWSEXx7NYClouJGlv+5lCxvUV3Rj3Ii3dCTlgsAE//Qa//0oTnjTtHP282UcVMJjxs5V8DEq9MLz4LwyUl6Tni//YdFNKWH9Ewn+UNSXaDku4i9rklsgHlYExLsW1Vg59aCGhmcZMBrCK2M982qnQP/DVv4ZuVvJ4vXrA= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1729782360; c=relaxed/simple; bh=ReffPDvkuccHqkSLYr+EbUMOp17ZCo+y747Eq+LQQ9E=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Jw+o3VuTxD2lIVtLgePJ1rDoMzcFkSVPJU8Ntem5scHPRcFEGKQTzeCgz9spMVLINY3T/RePxFEB75WC5SzYsetGy3RAC6Epd008ovYT5y3cAnp/DsgRu+Mnt0237YGgATZ7R4ynREtxI5Y5MpF9HduO3SwsWdsVasYoJrk42sU= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MCwBa/G1ZqSDQFYwJhP9K9cW61A43R2UBXDINRQeuP748GwGCDTI1v1aezL8kQE/GvAi6DbP5DcjJJF5AGQrQxYZsKfetEg9Q62v9dasTyRlrE7xQYYyTG2+SeBTDvIw3wz9DclRmLjfb2IU2+PgvjrOFwnkKSxOzSz06+CxI2mgfFCT76mKbYc/FLdRtAUmmg+7uUN+IJFjH5UOyBQIw3HXCjhhjc31u20BKhFIXGUMjdKtHzUrekSSzHY+qhOOJwgG6/Lc8D25u8wCXB0JJT+wLbYcTWx8ipG0Y12nNSHCH3YaP39Qb/iM6EkUcIuKIamN9Luq6pdN565R6VFDfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yfLmN+xUwD/UMHJqTELLThP7mVdwfNqxdaKz5UM84Xc=; b=MevuBPZTW3NP9a5KSIIIs0iB7oTdB5PKGM2q3/XEMjc3pSPbMpiTJ0teEoj9O3YTR8Dm/MxFH4WaFgWIw47OIWzMt6j1kCUDvAkUFCKIyj6vfQech/LNgIVFsuBb4eyYp52hTTEfP+wTq/7AuO1vEeU5M9kZKfnxQe/7vCrIsdP1stTRYVKNactSSnorPPtxwN3cwosuoJ185fKTdznacpUOSehhqnO0v64aZHGSpCDcs73Hcw42tJWuytaee+oSTPu3VygRan0RW9pHgo+od+DKrPtO39YFnOYiYHqhR/XuCuul0yeJ3ghpMa77XWnQXAqVe0ucjA/02uNuC9p3nQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yfLmN+xUwD/UMHJqTELLThP7mVdwfNqxdaKz5UM84Xc=; b=XfCGNiqRzr8K2ptGPnSnNgGkAMojK8rGNbzSyK5I7wmMrH0tnDNz8NdXWJ6PId7W65d+gwMohGklWlTX8VzKNvgd7BW48m9+1Jgo0UzWtpJ+LAkOkV818+371/Fpvf2UjOf7s8ggD7FrBnDR484WZpe57W6Y4UXayXXD/l+pux2A56Jd59SiMDX8zy1fRHOUEpqNQ5eCrgS4CfYWUB2lAOwUZRpipyBkYuT4T+o9SU2eSrDGbXNihaRpWdSWZ3BVUk1uZppzrNRALiIY1p38q3w/K/Btf/sFDHN0r2Az8qMVTXWGrFmyeTBAg7ZxYCGIIaiu7bK17fIQ4mi+/zRBDQ== Received: from CH0PR12MB5252.namprd12.prod.outlook.com (2603:10b6:610:d3::24) by PH7PR12MB8594.namprd12.prod.outlook.com (2603:10b6:510:1b3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18; Thu, 24 Oct 2024 15:05:52 +0000 Received: from CH0PR12MB5252.namprd12.prod.outlook.com ([fe80::290b:293f:5cbd:9c9d]) by CH0PR12MB5252.namprd12.prod.outlook.com ([fe80::290b:293f:5cbd:9c9d%4]) with mapi id 15.20.8093.018; Thu, 24 Oct 2024 15:05:52 +0000 From: Jennifer Schmitz To: "gcc-patches@gcc.gnu.org" CC: Richard Sandiford , Kyrylo Tkachov Subject: [PATCH] SVE intrinsics: Fold svaba with op1 all zeros to svabd. Thread-Topic: [PATCH] SVE intrinsics: Fold svaba with op1 all zeros to svabd. Thread-Index: AQHbJiY3RVMg5bJOh0WK6ZM0FYYroA== Date: Thu, 24 Oct 2024 15:05:52 +0000 Message-ID: <18778C11-2B63-45AD-B9C4-AE61EBEDC61A@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH0PR12MB5252:EE_|PH7PR12MB8594:EE_ x-ms-office365-filtering-correlation-id: 144f1c0f-da95-4e35-3042-08dcf43d5a3c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: tXYLahG1asBIglsV044AqErSOed4HWv8XqhcVK64NLp3owy2roiMGQicbQebPn54FUQ+QoaIstUgkAuyH2S85v4EpQpIl2/mozO7yaXD6TJSqKfhlGldlpz0lhY1Uq8M9Fl5kcJTwYAcOFQqG5hMJBiuFOqS0J0VS7NPRWHZ+/CWcOatc8fcZvdp9XK4T/I+/gTPcGgllJ3l9NslVcuOXEMF4yXKCpgol+8OWIHj0quR8kvo4PZJGWLt+kcP8CxnEdQAqJYBhiNi10ywnKZ9ueJCJ3H1Wd+ga9F3xMQSq8qm+bc0XSSr8XT1R8DILN+wxJuK9Ed67dPsCzpxXjbLTZNXHfoDDyAHebookeA50ytQQeKwpdLVBEwDem7DBvSt7hmH8qnEyqSossfICrRCIiGwZAKj0Bp2bYFDwf644iRlELa1Pg3MAO7SHYe7IrlSikQVTKd8h3pfRu4R1xg0E8AC0VV2y0lClI7lcI7QnY4QITMtz9wOB2+iFXGjdM/O79e3DeWOMvKrp+CsAGCxhVSmHTUQ2BUiscuuiDS/1/jeA0ndANvh4PDcdnvkhHTGKc3jrVaKKI3Y2rBL4sc3/XJP5YZ5S1o+dnWebrfRUYjyuGjziKISrq073BYAqSTq0PXSDDjIxc74WET0ym6a6p5lj2GNgYGsYzKyY2unZJuBJKRBldRbBSMh6ssjlbaeSK3ad5AkNbxb3NbL8L9CA2Mw8JRdprHCHM6jNMPAk+IlDj8hrsFicMU0qagtdCe779pfMOntpIlUlBCKo/C6Esw+RPQj93M3GEHSk2wxP33+UK+cpckvssQ/xN5w7BPQ9ewAGxlszksPiirWxxP2qt+Ns8q9csqOu6YirBNTxIP8QtR3yzCmpqRztLWj40DEbMNhO1dhn9824y6Rdb91RlLGDmer4VGhydlmzsCjXCwQcMe1DXK/IhgqQX2Bed9jh6Ql+TPZbod2uh2qXjUX0YOq61pPdEjPH8WMSJeW1dVpor7Q22BIRekmyGVOnRKWHeO9IM4xjupo8Vsa0oiMetAPcqGMcvFdZE3s0CtAOq7+pCC5jtfskQA0C6G4FLUZor3YXPVmr+NVKWoBQb/+NL71wls9CfkPbLii6Yt3GWOYrh7zvsh7JuOs6xEaOjlAC9vo6d6DlTxKB9xkVzQktwoP/z/FTo4YZsT5qKS6SPs8v6qkC/68y4+vtntXeCbMBmMLaDM1nQsTFFhbX7MOSqtBmUrp+uTEH7O/zjlM3z2KgWVIz5YNWqeVAk9WHDuWEdB0RxGvK5Q5oiSXbeFj4aZPbjAS1FNPGZmQwwKDgiLP1g5xPZL7s+3dieEnJYqeLIlC7F0Rta5r/q5DaMTUvpYRuSJkHgcCwa1O+bhaCzJLTnxeAA6CMr2XC5SNsv6+ x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH0PR12MB5252.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: EB4n8k7u511h9gZkeWUVBFLTceL96hqseBat7ygn84GZC8f0yLNlpc2LGUSMJy9tVLE8q3/2z/ngktERqU07bIQE5Vn2usNuCwkcQnwCMujZCYnYPkt3LwnRMHMHxwZ5qQfMYmw7m/Rkdg3GjMfZ4RgBoH5YOcRi6U3s0qRcydnHoQDrTJkKr7VcPa78sST2O49AIRx25QPjuxSz77/jANv300CFe+htp8I2ajSgTX3XMloooCNljSXoNVrJvA8Oik5vDQrUj/VcKVgYadqCH3/Hq4QoVXPwayHonjcH0uz8rATn9BfxVU++O5tie2FGcchzgS7uNlDhrXDbhjJd7MXpSUJHwIaTMFBb9nE2bxIX9/jesg75E6yCHW1It87eWLrumWlLwBdUpPten6IeyVpe0+q3Dd4lFpKYL9HFsSp/a3mhmZXpiT2IGva7zJXU4tnFZWxkaC615p7e1xU8U3914BKVA3DsUZcxRwDLnqtvtac29QZ+VVFZtOpn/oIXQyHMT2SucTgifo92jOZLKVYGHwJvWCLvx5Zi6Hd2DnVxfWd+yDnMoYbU2jrcbwI8OjrMnzU/nGtaWP/HX0rtBFizYQ9qNI7MvlI6yvfEDQowXN4BOi4N+vp8rmwlMABh32pUY5wXHwQ/7WeUmIVG3ZA6OTMEM/e9m+cyAsfdxjbr1KHzGMr4MN7zZGWlnYULWs6wcpN5d0VBGRwUHjIQe0gAniOU4lpcq8rT2w7S3g+9MnxzoEMX1PNoITOqoljmS8taoTBqn5bLy3YqapI/XKd1S+BFxBXkGuR+yLRDvkLy75MIGloJIu72s3+rtfp1eoHuy7IFOlW+8mUM0/HErB3cD4RkEGgVUJlzOyI25Usgmtbzn0+3KygzM5nq0Baji5FQwqpWTxSMFJJ4wkoOSUVNWyUnZhSB9gFD9CGXMg4q4f/u5NMGb37YkwsYNrmIOln0KGdaJ892F+k8hbNNbkG67NqEUbr+09RrT4GBJ2GmSHz3q2P1KbzwBE23zni5u0e5giBN628FThId8bS9Mc1zPHEObj7rA9Gr0PskHN5ZouvaoVYoxAbP2OFcrNzv4s6HLyHBZtFGV0nU2FyQiZPugjgC7FUSoJam6r3EGLH6OP5wuIdD68ABGGCw2n0OLWd55OrrshxZGwKoJ0X58On6G3IAuYCpl36P3VESW79syHkyVcTiFgzD8OP7OjAV47BkR6QrwC1iSLpWjKHJnZoSqN0rd5PGw0Y2kJo73uGNZR27dTyXh34CBwB9MsyLQR0PzTly5hCLsnrLR6bWchaDWazrXt/EzXEdfgmNLrKUje4a0XaMg/C+k/XNkPcm58f1rRhFabtgn0lgltuQaPEObLDFClbNx7HbkEhw41uI4yYDGXZT6AYI07VkoVZalP9dR2zMYOJ7MzCGHwZiB26Y88GpVOb2TKTduoOClareWBHeKjl4WvFxpf2xQyVUWxN8XcI3k3oZMzWiOBOiXq8x1gn59urAdtEUeosh9irck6j9YaFG3sNcIklEonwI4duvG3/V1ialuBOfN80APtCPgPZura+zIF6f0sT6Q5rZtthY+Z1tQjW4Pe5i+Sn7 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH0PR12MB5252.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 144f1c0f-da95-4e35-3042-08dcf43d5a3c X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Oct 2024 15:05:52.3559 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: r3ONbnQ1rOuYv2wAL/FrwAbMoVTw4M5I3BF9W9C0TSnWAziH78Fv0W9eaezYYNWMAfmlV8iliTA94G0a1kKlmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8594 X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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 Similar to https://gcc.gnu.org/pipermail/gcc-patches/2024-October/665780.html, this patch implements folding of svaba to svabd if op1 is all zeros, resulting in the use of UABD/SABD instructions instead of UABA/SABA. Tests were added to check the produced assembly for use of UABD/SABD, also for the _n case. The patch was bootstrapped and regtested on aarch64-linux-gnu, no regression. OK for mainline? Signed-off-by: Jennifer Schmitz gcc/ * config/aarch64/aarch64-sve-builtins-sve2.cc (svaba_impl::fold): Fold svaba to svabd if op1 is all zeros. gcc/testsuite/ * gcc.target/aarch64/sve2/acle/asm/aba_s32.c: New tests. * gcc.target/aarch64/sve2/acle/asm/aba_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/aba_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/aba_u64.c: Likewise. --- .../aarch64/aarch64-sve-builtins-sve2.cc | 18 +++++++++++++++ .../aarch64/sve2/acle/asm/aba_s32.c | 23 +++++++++++++++++++ .../aarch64/sve2/acle/asm/aba_s64.c | 22 ++++++++++++++++++ .../aarch64/sve2/acle/asm/aba_u32.c | 22 ++++++++++++++++++ .../aarch64/sve2/acle/asm/aba_u64.c | 22 ++++++++++++++++++ 5 files changed, 107 insertions(+) diff --git a/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc b/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc index 6a20a613f83..107b299d068 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc +++ b/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc @@ -80,6 +80,24 @@ unspec_sqrdcmlah (int rot) class svaba_impl : public function_base { +public: + gimple * + fold (gimple_folder &f) const override + { + /* Fold to svabd if op1 is all zeros. */ + tree op1 = gimple_call_arg (f.call, 0); + if (!integer_zerop (op1)) + return NULL; + function_instance instance ("svabd", functions::svabd, + shapes::binary_opt_n, f.mode_suffix_id, + f.type_suffix_ids, GROUP_none, PRED_x); + gcall *call = f.redirect_call (instance); + /* Add a ptrue as predicate, because unlike svaba, svabd is + predicated. */ + gimple_call_set_arg (call, 0, build_all_ones_cst (f.gp_type ())); + return call; + } + public: rtx expand (function_expander &e) const override diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s32.c b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s32.c index 73c00282526..655ad630241 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s32.c +++ b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s32.c @@ -108,3 +108,26 @@ TEST_UNIFORM_Z (aba_11_s32_tied2, svint32_t, TEST_UNIFORM_Z (aba_11_s32_untied, svint32_t, z0 = svaba_n_s32 (z1, z2, 11), z0 = svaba (z1, z2, 11)) + +/* +** aba_11_s32_zeroop1n: +** ptrue (p[0-7])\.b, all +** mov z0\.s, #11 +** sabd z0\.s, \1/m, z0\.s, z1\.s +** ret +*/ +TEST_UNIFORM_Z (aba_11_s32_zeroop1n, svint32_t, + z0 = svaba_n_s32 (svdup_s32 (0), z1, 11), + z0 = svaba (svdup_s32 (0), z1, 11)) + + +/* +** aba_11_s32_zeroop1: +** ptrue (p[0-7])\.b, all +** mov z0\.s, #11 +** sabd z0\.s, \1/m, z0\.s, z1\.s +** ret +*/ +TEST_UNIFORM_Z (aba_11_s32_zeroop1, svint32_t, + z0 = svaba_s32 (svdup_s32 (0), z1, svdup_s32 (11)), + z0 = svaba (svdup_s32 (0), z1, svdup_s32 (11))) diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s64.c b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s64.c index 0c169dbf613..8b1eb7d2f4e 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s64.c +++ b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s64.c @@ -108,3 +108,25 @@ TEST_UNIFORM_Z (aba_11_s64_tied2, svint64_t, TEST_UNIFORM_Z (aba_11_s64_untied, svint64_t, z0 = svaba_n_s64 (z1, z2, 11), z0 = svaba (z1, z2, 11)) + +/* +** aba_11_s64_zeroop1n: +** ptrue (p[0-7])\.b, all +** mov z0\.d, #11 +** sabd z0\.d, \1/m, z0\.d, z1\.d +** ret +*/ +TEST_UNIFORM_Z (aba_11_s64_zeroop1n, svint64_t, + z0 = svaba_n_s64 (svdup_s64 (0), z1, 11), + z0 = svaba (svdup_s64 (0), z1, 11)) + +/* +** aba_11_s64_zeroop1: +** ptrue (p[0-7])\.b, all +** mov z0\.d, #11 +** sabd z0\.d, \1/m, z0\.d, z1\.d +** ret +*/ +TEST_UNIFORM_Z (aba_11_s64_zeroop1, svint64_t, + z0 = svaba_s64 (svdup_s64 (0), z1, svdup_s64 (11)), + z0 = svaba (svdup_s64 (0), z1, svdup_s64 (11))) diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u32.c b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u32.c index 2ba8f419567..fc2fed28e02 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u32.c +++ b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u32.c @@ -108,3 +108,25 @@ TEST_UNIFORM_Z (aba_11_u32_tied2, svuint32_t, TEST_UNIFORM_Z (aba_11_u32_untied, svuint32_t, z0 = svaba_n_u32 (z1, z2, 11), z0 = svaba (z1, z2, 11)) + +/* +** aba_11_u32_zeroop1n: +** ptrue (p[0-7])\.b, all +** mov z0\.s, #11 +** uabd z0\.s, \1/m, z0\.s, z1\.s +** ret +*/ +TEST_UNIFORM_Z (aba_11_u32_zeroop1n, svuint32_t, + z0 = svaba_n_u32 (svdup_u32 (0), z1, 11), + z0 = svaba (svdup_u32 (0), z1, 11)) + +/* +** aba_11_u32_zeroop1: +** ptrue (p[0-7])\.b, all +** mov z0\.s, #11 +** uabd z0\.s, \1/m, z0\.s, z1\.s +** ret +*/ +TEST_UNIFORM_Z (aba_11_u32_zeroop1, svuint32_t, + z0 = svaba_u32 (svdup_u32 (0), z1, svdup_u32 (11)), + z0 = svaba (svdup_u32 (0), z1, svdup_u32 (11))) diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u64.c b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u64.c index 8c6bef02004..f6ed2167d6a 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u64.c +++ b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u64.c @@ -108,3 +108,25 @@ TEST_UNIFORM_Z (aba_11_u64_tied2, svuint64_t, TEST_UNIFORM_Z (aba_11_u64_untied, svuint64_t, z0 = svaba_n_u64 (z1, z2, 11), z0 = svaba (z1, z2, 11)) + +/* +** aba_11_u64_zeroop1n: +** ptrue (p[0-7])\.b, all +** mov z0\.d, #11 +** uabd z0\.d, \1/m, z0\.d, z1\.d +** ret +*/ +TEST_UNIFORM_Z (aba_11_u64_zeroop1n, svuint64_t, + z0 = svaba_n_u64 (svdup_u64 (0), z1, 11), + z0 = svaba (svdup_u64 (0), z1, 11)) + +/* +** aba_11_u64_zeroop1: +** ptrue (p[0-7])\.b, all +** mov z0\.d, #11 +** uabd z0\.d, \1/m, z0\.d, z1\.d +** ret +*/ +TEST_UNIFORM_Z (aba_11_u64_zeroop1, svuint64_t, + z0 = svaba_u64 (svdup_u64 (0), z1, svdup_u64 (11)), + z0 = svaba (svdup_u64 (0), z1, svdup_u64 (11)))