From patchwork Wed Jun 28 15:15:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oluwatamilore Adebayo X-Patchwork-Id: 113943 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp9003760vqr; Wed, 28 Jun 2023 08:16:55 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6cSA3i4PODiBOZqJPfTgMVYOwBmwVuPjA2LLHUMbbFJLuVyoi9vyIK2JKZQodf26JXSH8Y X-Received: by 2002:a17:907:3e27:b0:982:30e3:ddcb with SMTP id hp39-20020a1709073e2700b0098230e3ddcbmr37640351ejc.65.1687965415250; Wed, 28 Jun 2023 08:16:55 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id o9-20020a170906774900b00988839e5435si5006081ejn.522.2023.06.28.08.16.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jun 2023 08:16:55 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=EVkdCJOf; arc=fail (signature failed); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B249B3858423 for ; Wed, 28 Jun 2023 15:16:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B249B3858423 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1687965413; bh=HkzbDJO85PziXsTyVMCj85ZySzKM6wZATYlKD38oR5s=; h=To:CC:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=EVkdCJOfhybatSUx1nO3KxMe8pNVAzDRyWRQSFE07YNxvbts1wJecpwQQgBqOvHFH rlCDVpeqiearMb3Gj2alA9VqQnx56L/NTVyMNCJma9QoJUfSidxwSUQU7VhwdZqNas W/fhzWPnK3sceFCCWJuVK5CIsGrvf3C5ELMzXKto= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on2058.outbound.protection.outlook.com [40.107.14.58]) by sourceware.org (Postfix) with ESMTPS id 991FA3858C74 for ; Wed, 28 Jun 2023 15:16:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 991FA3858C74 Received: from DUZPR01CA0089.eurprd01.prod.exchangelabs.com (2603:10a6:10:46a::12) by GV2PR08MB9160.eurprd08.prod.outlook.com (2603:10a6:150:e0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.24; Wed, 28 Jun 2023 15:15:57 +0000 Received: from DBAEUR03FT015.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:46a:cafe::59) by DUZPR01CA0089.outlook.office365.com (2603:10a6:10:46a::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.34 via Frontend Transport; Wed, 28 Jun 2023 15:15:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT015.mail.protection.outlook.com (100.127.142.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.18 via Frontend Transport; Wed, 28 Jun 2023 15:15:56 +0000 Received: ("Tessian outbound 7c913606c6e6:v142"); Wed, 28 Jun 2023 15:15:56 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7964c5b39a4d2b93 X-CR-MTA-TID: 64aa7808 Received: from 47511184ee42.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 7A758AAF-277C-488D-9818-09B6E4DCA1A0.1; Wed, 28 Jun 2023 15:15:49 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 47511184ee42.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 28 Jun 2023 15:15:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M7kLKyMsGp630Lw3hlBGr//0znq22PdFbiW6nkJCj5lqD/74zNOjf1Eh21i6kzsc+VwFDbemMB6Bi3Iby3EiQLZzEOO5JfMcnZyn60eBLROZGqpBn6Nf8L+5yxc+eefARapduvgdXuCzF1vq5aV91ZBdxegnjmtsZCq/UMmXXVNRQL3b4UZCXiZlQBxQKCBXODzM7OymcOjUVpA6p1I/yKOzaFaC1oXxAw4j7VSOB6Ishnunyke6/iRDRFAsco1wt5cPPndO6VZju8DB8S6bgYPWLvuqxET9zHofGBcvVi8czrlmi8GjzYrj9X7hyhsjjyNxlQCTIq1Q+mIPJUhfQA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HkzbDJO85PziXsTyVMCj85ZySzKM6wZATYlKD38oR5s=; b=mMxfPfL56UiH+jiB/tp6C3/QMT0dwfuKaT4KJT2o+N/kyro4S+BDnuWnZ1Bv1fh3fviBSpTWLMD8aXNUFLa3qSSY/AJ6ezMd51POZT9x54jE0XZTYVo3MfU6z+wS6mc9lXa5U0OEgSHPuj99P4zvFzzKB072v/1xHS8q49yaOPP65Ms1ynpjkkpAnFQx9tgzovNeFaqHGlk1iaI4UEtLAi+bWr4L5NBrI4dldwWYLcn/gqLqtqqqD6R/k3V0Yf0KqCZR0TF6qviJBOiodcSShiTiUMSg6YeS4KY6AvG2avES1ncsl5tSbYirqXRHN8o/elFS85bgZ0SypYVB8Oq6/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=armh.onmicrosoft.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none Received: from AM6P192CA0049.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:82::26) by DU0PR08MB9347.eurprd08.prod.outlook.com (2603:10a6:10:41f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.23; Wed, 28 Jun 2023 15:15:45 +0000 Received: from AM7EUR03FT053.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:82:cafe::1c) by AM6P192CA0049.outlook.office365.com (2603:10a6:209:82::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.19 via Frontend Transport; Wed, 28 Jun 2023 15:15:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by AM7EUR03FT053.mail.protection.outlook.com (100.127.140.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6544.20 via Frontend Transport; Wed, 28 Jun 2023 15:15:44 +0000 Received: from AZ-NEU-EX02.Emea.Arm.com (10.251.26.5) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 28 Jun 2023 15:15:40 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX02.Emea.Arm.com (10.251.26.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 28 Jun 2023 15:15:39 +0000 Received: from e119885.cambridge.arm.com (10.2.78.55) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Wed, 28 Jun 2023 15:15:39 +0000 To: CC: , , Subject: [PATCH 2/2] AArch64: New RTL for ABDL Date: Wed, 28 Jun 2023 16:15:32 +0100 Message-ID: <20230628151532.48412-1-oluwatamilore.adebayo@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230628151453.48317-1-oluwatamilore.adebayo@arm.com> References: <20230628151453.48317-1-oluwatamilore.adebayo@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM7EUR03FT053:EE_|DU0PR08MB9347:EE_|DBAEUR03FT015:EE_|GV2PR08MB9160:EE_ X-MS-Office365-Filtering-Correlation-Id: 70bf839d-d832-4c0a-511d-08db77ea9294 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: B+OhaA0ysX5svb6KzRwglQBY8wYxOJLR+rjHQbSDVd4KVfhd2yQMPtMlMziDTu2CLw0h3FYBfAuNgueejxG4nlmGecd5H7B4qDj4S/53uyiut+brMrgGgk/UTXkoayosO3eaAvdHgIHVKJTZG1xqrGCyIPmwhWSoehKfUa/1eL+vUjRO6RZi9SpPitZmq3kgpujrT1OYkGKphXkyF+0gYx8+9JCebD1YHIqOtwrXM+hixTSMMuHjPmdOy5UvTovXknbFDePx/LFTOfUhQ9IkUNda/VtztLNLvVhsrTp51myUrjGf5KB+5FX/O6CCpq9JkxM8C3DC2pAzZ6Hy3cTIadoWsHTBQMrS/qPBpXtZA5+BiSI+LAsR6KC3oza6XMKFS0mcTaRvaBQJzAJeFLqPSCxidHE66V6+oUGnhGJFdRAi7e5J1KaNEvXwq6UTlM8gF2mt/gbfGd9++wwy25VAEPZP1g0Zp12LfyUQzAeqj0BieymcdYPUPRpl4sIxeJhu7elhgqYdTsO3chkonpzi97oEHuVSx9/RspGSHH1rqKpeb0zuZ0+73Qb661yf7htkI7IfAA77Zn4t9p18Np1BYEa6qqd0PWtTz57IBNLHldAHZBRjGxXi1YqWuXPRo7L2SZ2t63JwdlN2yIrE/eZflfw/m8XEWJLgQY6KruFSnRFBoyhqtnJpXG1heE/Kwn85ZxBbSHtIMeICxQPk/uq5Os/+angke5Rau1ugwJqtAVS97r5x5yPKOfvCYs5elb2gjixmgnnY3JhOLQUUukTkWi00W6Y3bV0GGcGAXns3LtP6m2kXefguNU0MQuim5tVW X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(39860400002)(376002)(396003)(451199021)(46966006)(40470700004)(36840700001)(41300700001)(8676002)(4326008)(70206006)(8936002)(70586007)(316002)(7049001)(26005)(186003)(336012)(1076003)(54906003)(478600001)(37006003)(6666004)(2616005)(40460700003)(7696005)(6200100001)(82310400005)(5660300002)(2906002)(40480700001)(30864003)(6862004)(44832011)(356005)(84970400001)(82740400003)(81166007)(36756003)(36860700001)(86362001)(47076005)(83380400001)(426003)(36900700001)(579004); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9347 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 632f6d13-8e69-4b4b-4e68-08db77ea8b7e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rWnXr+C4dXGDiinj0PMOmMdLVqyq7FP0jHoMn98cpOKlD2CJkAPl5W/A5JWX/USNzDtdjzJDG3KqOaO65P4uIjk/JoKFX8HVM1YV7eNpa+r9vwKzbqt3LWqh/az90M3emV5jhXvIbkCurcrjjU661OCK2AZzt6sa6HY49R5nmhDf/RkvHY9FE4Dq+KIvFZVFltEX+cluuR3XjiIkhI6VGjZVMWGBxfIc9AzVhzB6wbeClXnqGiR3yYb81CwlbARIzx3goM4wZ3Od7D6LzKq44pd+koGaWZmtwosjOkFonRYzn07UHR1bShlc7Ghzg++f6CKg/N3+BhMUIMf0dEJc+Tb0czVcNseuvKxIvt2kmgZBcLyyyV1OMpr5XfEej0rXpjAUxsf/Y4fwuPfCmaMdXzSQUr9djODgBaKDwBqwzgjsBaL/kH/D6IOIpPaWjIu74wzgCHL3i0UUKFK8KEHMsJ/mTTPQFgiPwjQi7zq5xMR45XiNo4hLUVQy2iyV8vCRBeDaVZ6kEjSZ+x8i3lIpUO5J/iMnXCm80Ut9qKF4nm25TzB7ju4+ARCEtEGZ96XJPJDLsHpTFR+RwCL87FyX1UUB63tTfNxl0V/mJCfUHZDLIQGUvuwHIVw0qYxtlmZ4WYQmL3+dM6kKOxjLsW/FyfSK16a4OaYf7Gj1NwUHrzCkfwmAxMT+DnxL9CFCP78CoD0TUeByx9UrDyge05och9s7mxlMyC0iJR1j5Jphdfv9bjhOSOxE9ZSVvj8l4E9ZpSX4Xx5Z/1UjkNyQwBzN+w== 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:(13230028)(4636009)(396003)(376002)(346002)(136003)(39860400002)(451199021)(46966006)(40470700004)(36840700001)(84970400001)(7049001)(82310400005)(36860700001)(70206006)(40460700003)(6862004)(6200100001)(30864003)(44832011)(5660300002)(36756003)(86362001)(8676002)(81166007)(70586007)(41300700001)(82740400003)(4326008)(316002)(40480700001)(8936002)(47076005)(1076003)(26005)(2906002)(186003)(478600001)(54906003)(2616005)(83380400001)(7696005)(426003)(37006003)(6666004)(336012)(579004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2023 15:15:56.8303 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 70bf839d-d832-4c0a-511d-08db77ea9294 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: DBAEUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9160 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Oluwatamilore Adebayo via Gcc-patches From: Oluwatamilore Adebayo Reply-To: Oluwatamilore Adebayo Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1769780097141005783?= X-GMAIL-MSGID: =?utf-8?q?1769960023214591872?= From: oluade01 This patch adds new RTL for ABDL (sabdl, sabdl2, uabdl, uabdl2). gcc/ChangeLog: * config/aarch64/aarch64-simd.md (vec_widen_abdl_lo_, vec_widen_abdl_hi_): Expansions for abd vec widen optabs. (aarch64_abdl_insn): VQW based abdl RTL. * config/aarch64/iterators.md (USMAX_EXT): Code attributes that give the appropriate extend RTL for the max RTL. gcc/testsuite/ChangeLog: * gcc.target/aarch64/abd_2.c: Added ABDL testcases. * gcc.target/aarch64/abd_3.c: Added ABDL testcases. * gcc.target/aarch64/abd_4.c: Added ABDL testcases. * gcc.target/aarch64/abd_none_2.c: Added ABDL testcases. * gcc.target/aarch64/abd_none_3.c: Added ABDL testcases. * gcc.target/aarch64/abd_none_4.c: Added ABDL testcases. * gcc.target/aarch64/abd_run_1.c: Added ABDL testcases. * gcc.target/aarch64/sve/abd_1.c: Added ABDL testcases. * gcc.target/aarch64/sve/abd_2.c: Added ABDL testcases. * gcc.target/aarch64/sve/abd_none_1.c: Added ABDL testcases. * gcc.target/aarch64/sve/abd_none_2.c: Added ABDL testcases. --- gcc/config/aarch64/aarch64-simd.md | 65 ++++++++++++++ gcc/config/aarch64/iterators.md | 3 + gcc/testsuite/gcc.target/aarch64/abd_2.c | 33 +++++--- gcc/testsuite/gcc.target/aarch64/abd_3.c | 36 +++++--- gcc/testsuite/gcc.target/aarch64/abd_4.c | 34 ++++---- gcc/testsuite/gcc.target/aarch64/abd_none_2.c | 73 ++++++++++++++++ gcc/testsuite/gcc.target/aarch64/abd_none_3.c | 73 ++++++++++++++++ gcc/testsuite/gcc.target/aarch64/abd_none_4.c | 84 +++++++++++++++++++ gcc/testsuite/gcc.target/aarch64/abd_run_1.c | 29 +++++++ .../gcc.target/aarch64/abd_widen_2.c | 62 ++++++++++++++ .../gcc.target/aarch64/abd_widen_3.c | 62 ++++++++++++++ .../gcc.target/aarch64/abd_widen_4.c | 56 +++++++++++++ gcc/testsuite/gcc.target/aarch64/sve/abd_1.c | 57 +++++++++++-- gcc/testsuite/gcc.target/aarch64/sve/abd_2.c | 47 +++++++++-- .../gcc.target/aarch64/sve/abd_none_1.c | 73 ++++++++++++++++ .../gcc.target/aarch64/sve/abd_none_2.c | 80 ++++++++++++++++++ 16 files changed, 811 insertions(+), 56 deletions(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/abd_widen_2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/abd_widen_3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/abd_widen_4.c diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index bf90202ba2ad3f62f2020486d21256f083effb07..9acf0ab3067a76c0ba49d61e2857558c8482e77d 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -975,6 +975,71 @@ (define_expand "aarch64_abdl2" } ) +(define_insn "aarch64_abdl_hi_internal" + [(set (match_operand: 0 "register_operand" "=w") + (abs: + (minus: + (ANY_EXTEND: + (vec_select: + (match_operand:VQW 1 "register_operand" "w") + (match_operand:VQW 3 "vect_par_cnst_hi_half" ""))) + (ANY_EXTEND: + (vec_select: + (match_operand:VQW 2 "register_operand" "w") + (match_dup 3))))))] + "TARGET_SIMD" + "abdl2\t%0., %1., %2." + [(set_attr "type" "neon_abd_long")] +) + +(define_insn "aarch64_abdl_lo_internal" + [(set (match_operand: 0 "register_operand" "=w") + (minus: + (USMAX: + (: + (vec_select: + (match_operand:VQW 1 "register_operand" "w") + (match_operand:VQW 3 "vect_par_cnst_lo_half" ""))) + (: + (vec_select: + (match_operand:VQW 2 "register_operand" "w") + (match_dup 3)))) + (: + (: + (vec_select: (match_dup 1) (match_dup 3))) + (: + (vec_select: (match_dup 2) (match_dup 3))))))] + "TARGET_SIMD" + "abdl\t%0., %1., %2." + [(set_attr "type" "neon_abd_long")] +) + +(define_expand "vec_widen_abd_hi_" + [(match_operand: 0 "register_operand") + (ANY_EXTEND: (match_operand:VQW 1 "register_operand")) + (ANY_EXTEND: (match_operand:VQW 2 "register_operand"))] + "TARGET_SIMD" + { + rtx p = aarch64_simd_vect_par_cnst_half (mode, , true); + emit_insn (gen_aarch64_abdl_hi_internal (operands[0], operands[1], + operands[2], p)); + DONE; + } +) + +(define_expand "vec_widen_abd_lo_" + [(match_operand: 0 "register_operand") + (ANY_EXTEND: (match_operand:VQW 1 "register_operand")) + (ANY_EXTEND: (match_operand:VQW 2 "register_operand"))] + "TARGET_SIMD" + { + rtx p = aarch64_simd_vect_par_cnst_half (mode, , false); + emit_insn (gen_aarch64_abdl_lo_internal (operands[0], operands[1], + operands[2], p)); + DONE; + } +) + (define_insn "aarch64_abal" [(set (match_operand: 0 "register_operand" "=w") (plus: diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index d9c7354730ac5870c0042f1e30fb1140a117d110..1385842d0a51b3f4a0871af4d0bbbeeeee5299d4 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -1984,6 +1984,9 @@ (define_code_attr max_opp [(smax "smin") (umax "umin")]) ;; Same as above, but louder. (define_code_attr MAX_OPP [(smax "SMIN") (umax "UMIN")]) +;; Map smax and umax to sign_extend and zero_extend +(define_code_attr USMAX_EXT [(smax "sign_extend") (umax "zero_extend")]) + ;; The number of subvectors in an SVE_STRUCT. (define_mode_attr vector_count [(VNx32QI "2") (VNx16HI "2") (VNx8SI "2") (VNx4DI "2") diff --git a/gcc/testsuite/gcc.target/aarch64/abd_2.c b/gcc/testsuite/gcc.target/aarch64/abd_2.c index c0d41fb7ef99baf95b0f6a2e68a88f6748482af3..9703f4906741e5cbaef14e3d11065a243603a7f9 100644 --- a/gcc/testsuite/gcc.target/aarch64/abd_2.c +++ b/gcc/testsuite/gcc.target/aarch64/abd_2.c @@ -11,25 +11,36 @@ TEST1(signed, int) TEST1(signed, short) TEST1(signed, char) -TEST2(signed, char, short) -TEST2(signed, char, int) -TEST2(signed, short, int) +TEST2(signed, int, short) +TEST2(signed, int, char) TEST3(signed, char, int, short) -TEST3(signed, char, short, int) +TEST3(signed, char, int, char) + +TEST3(signed, short, int, char) +TEST3(signed, short, char, short) +TEST3(signed, short, int, short) + +TEST3(signed, int, char, short) +TEST3(signed, int, short, char) +TEST3(signed, int, char, int) +TEST3(signed, int, short, int) TEST1(unsigned, short) TEST1(unsigned, char) -TEST2(unsigned, char, short) -TEST2(unsigned, char, int) +TEST3(unsigned, short, char, short) -TEST3(unsigned, char, short, int) +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 35 } } */ +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 3 } } */ +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 5 } } */ -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 4 } } */ -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ +/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 0 } } */ /* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 3 } } */ -/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ +/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tabs\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/abd_3.c b/gcc/testsuite/gcc.target/aarch64/abd_3.c index 4873c64f34885b3993010beafa01087569336dec..bdb4cb39fce456f05a5d18298a52677be7422731 100644 --- a/gcc/testsuite/gcc.target/aarch64/abd_3.c +++ b/gcc/testsuite/gcc.target/aarch64/abd_3.c @@ -11,26 +11,36 @@ TEST1(signed, int) TEST1(signed, short) TEST1(signed, char) -TEST2(signed, char, short) -TEST2(signed, char, int) -TEST2(signed, short, int) +TEST2(signed, int, short) +TEST2(signed, int, char) TEST3(signed, char, int, short) -TEST3(signed, char, short, int) +TEST3(signed, char, int, char) + +TEST3(signed, short, int, char) +TEST3(signed, short, char, short) +TEST3(signed, short, int, short) + +TEST3(signed, int, char, short) +TEST3(signed, int, short, char) +TEST3(signed, int, char, int) +TEST3(signed, int, short, int) TEST1(unsigned, short) TEST1(unsigned, char) -TEST2(unsigned, char, short) -TEST2(unsigned, char, int) -TEST2(unsigned, short, int) +TEST3(unsigned, short, char, short) -TEST3(unsigned, char, short, int) +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 35 } } */ +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 3 } } */ +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 5 } } */ -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 4 } } */ -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ -/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 4 } } */ -/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ +/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 0 } } */ +/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 3 } } */ +/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tabs\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/abd_4.c b/gcc/testsuite/gcc.target/aarch64/abd_4.c index 98aa730d6aad700e3a9a712e14adc08c9fb546c2..9e078f1df619ea5ab960bb2a9874f8b89b17be47 100644 --- a/gcc/testsuite/gcc.target/aarch64/abd_4.c +++ b/gcc/testsuite/gcc.target/aarch64/abd_4.c @@ -9,22 +9,20 @@ TEST1(signed, int) -TEST2(signed, char, short) -TEST2(signed, char, int) -TEST2(signed, short, int) - -TEST3(signed, char, short, int) - -TEST2(unsigned, char, short) -TEST2(unsigned, char, int) -TEST2(unsigned, short, int) - -TEST3(unsigned, char, short, int) - -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */ -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 3 } } */ -/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 2 } } */ -/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 3 } } */ -/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 2 } } */ - +TEST3(signed, int, char, int) +TEST3(signed, int, short, int) + +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 7 } } */ +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 0 } } */ +/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 0 } } */ + +/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 0 } } */ +/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 0 } } */ +/* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 0:w + } } */ + +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tabs\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/abd_none_2.c b/gcc/testsuite/gcc.target/aarch64/abd_none_2.c index 658e7426965ead945d0cad68ef721f176fb41665..d7ef2c1417b5461f8c4315d8d4911ca9f57c592c 100644 --- a/gcc/testsuite/gcc.target/aarch64/abd_none_2.c +++ b/gcc/testsuite/gcc.target/aarch64/abd_none_2.c @@ -7,8 +7,81 @@ #define ABD_ABS #include "abd.h" +TEST1(signed, long) + +TEST2(signed, long, char) +TEST2(signed, long, short) +TEST2(signed, long, int) + +TEST3(signed, char, long, short) +TEST3(signed, char, long, int) +TEST3(signed, char, long, char) + +TEST3(signed, short, long, char) +TEST3(signed, short, long, int) +TEST3(signed, short, long, short) + +TEST3(signed, int, long, char) +TEST3(signed, int, long, short) +TEST3(signed, int, long, int) + +TEST3(signed, long, char, short) +TEST3(signed, long, short, char) +TEST3(signed, long, char, int) +TEST3(signed, long, int, char) +TEST3(signed, long, short, int) +TEST3(signed, long, int, short) +TEST3(signed, long, char, long) +TEST3(signed, long, short, long) +TEST3(signed, long, int, long) + TEST1(unsigned, int) +TEST1(unsigned, long) + +TEST2(unsigned, int, long) + +TEST2(unsigned, long, char) +TEST2(unsigned, long, short) +TEST2(unsigned, long, int) +TEST2(unsigned, int, short) +TEST2(unsigned, int, char) + TEST3(unsigned, char, int, short) +TEST3(unsigned, char, long, short) +TEST3(unsigned, char, int, long) +TEST3(unsigned, char, long, int) +TEST3(unsigned, char, int, char) + +TEST3(unsigned, short, int, char) +TEST3(unsigned, short, long, char) +TEST3(unsigned, short, int, long) +TEST3(unsigned, short, long, int) +TEST3(unsigned, short, int, short) +TEST3(unsigned, short, long, short) + +TEST3(unsigned, int, char, short) +TEST3(unsigned, int, short, char) +TEST3(unsigned, int, char, long) +TEST3(unsigned, int, long, char) +TEST3(unsigned, int, short, long) +TEST3(unsigned, int, long, short) +TEST3(unsigned, int, char, int) +TEST3(unsigned, int, short, int) +TEST3(unsigned, int, long, int) + +TEST3(unsigned, long, char, short) +TEST3(unsigned, long, short, char) +TEST3(unsigned, long, char, int) +TEST3(unsigned, long, int, char) +TEST3(unsigned, long, short, int) +TEST3(unsigned, long, int, short) +TEST3(unsigned, long, char, long) +TEST3(unsigned, long, short, long) +TEST3(unsigned, long, int, long) /* { dg-final { scan-assembler-not {\tsabd\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tuabd\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/abd_none_3.c b/gcc/testsuite/gcc.target/aarch64/abd_none_3.c index 14cfdcbde6998b527989326ff8848d071a4774e8..f23dd7d06e7facff1116a9c78303993a178b1c0b 100644 --- a/gcc/testsuite/gcc.target/aarch64/abd_none_3.c +++ b/gcc/testsuite/gcc.target/aarch64/abd_none_3.c @@ -7,8 +7,81 @@ #define ABD_ABS #include "abd.h" +TEST1(signed, long) + +TEST2(signed, long, char) +TEST2(signed, long, short) +TEST2(signed, long, int) + +TEST3(signed, char, long, short) +TEST3(signed, char, long, int) +TEST3(signed, char, long, char) + +TEST3(signed, short, long, char) +TEST3(signed, short, long, int) +TEST3(signed, short, long, short) + +TEST3(signed, int, long, char) +TEST3(signed, int, long, short) +TEST3(signed, int, long, int) + +TEST3(signed, long, char, short) +TEST3(signed, long, short, char) +TEST3(signed, long, char, int) +TEST3(signed, long, int, char) +TEST3(signed, long, short, int) +TEST3(signed, long, int, short) +TEST3(signed, long, char, long) +TEST3(signed, long, short, long) +TEST3(signed, long, int, long) + TEST1(unsigned, int) +TEST1(unsigned, long) + +TEST2(unsigned, int, long) + +TEST2(unsigned, long, char) +TEST2(unsigned, long, short) +TEST2(unsigned, long, int) +TEST2(unsigned, int, short) +TEST2(unsigned, int, char) + TEST3(unsigned, char, int, short) +TEST3(unsigned, char, long, short) +TEST3(unsigned, char, int, long) +TEST3(unsigned, char, long, int) +TEST3(unsigned, char, int, char) + +TEST3(unsigned, short, int, char) +TEST3(unsigned, short, long, char) +TEST3(unsigned, short, int, long) +TEST3(unsigned, short, long, int) +TEST3(unsigned, short, int, short) +TEST3(unsigned, short, long, short) + +TEST3(unsigned, int, char, short) +TEST3(unsigned, int, short, char) +TEST3(unsigned, int, char, long) +TEST3(unsigned, int, long, char) +TEST3(unsigned, int, short, long) +TEST3(unsigned, int, long, short) +TEST3(unsigned, int, char, int) +TEST3(unsigned, int, short, int) +TEST3(unsigned, int, long, int) + +TEST3(unsigned, long, char, short) +TEST3(unsigned, long, short, char) +TEST3(unsigned, long, char, int) +TEST3(unsigned, long, int, char) +TEST3(unsigned, long, short, int) +TEST3(unsigned, long, int, short) +TEST3(unsigned, long, char, long) +TEST3(unsigned, long, short, long) +TEST3(unsigned, long, int, long) /* { dg-final { scan-assembler-not {\tsabd\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tuabd\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/abd_none_4.c b/gcc/testsuite/gcc.target/aarch64/abd_none_4.c index d612216b98bf5484783489cc48b4417ad1914b1d..f5cfc5dd73d0e4008318b7f2a9a143c98b12c88f 100644 --- a/gcc/testsuite/gcc.target/aarch64/abd_none_4.c +++ b/gcc/testsuite/gcc.target/aarch64/abd_none_4.c @@ -9,14 +9,98 @@ TEST1(signed, short) TEST1(signed, char) +TEST1(signed, long) + +TEST2(signed, long, char) +TEST2(signed, long, short) +TEST2(signed, long, int) +TEST2(signed, int, short) +TEST2(signed, int, char) +TEST2(signed, short, char) TEST3(signed, char, int, short) +TEST3(signed, char, long, short) +TEST3(signed, char, long, int) +TEST3(signed, char, short, char) +TEST3(signed, char, int, char) +TEST3(signed, char, long, char) + +TEST3(signed, short, int, char) +TEST3(signed, short, long, char) +TEST3(signed, short, long, int) +TEST3(signed, short, char, short) +TEST3(signed, short, int, short) +TEST3(signed, short, long, short) + +TEST3(signed, int, char, short) +TEST3(signed, int, short, char) +TEST3(signed, int, long, char) +TEST3(signed, int, long, short) +TEST3(signed, int, long, int) + +TEST3(signed, long, char, short) +TEST3(signed, long, short, char) +TEST3(signed, long, char, int) +TEST3(signed, long, int, char) +TEST3(signed, long, short, int) +TEST3(signed, long, int, short) +TEST3(signed, long, char, long) +TEST3(signed, long, short, long) +TEST3(signed, long, int, long) TEST1(unsigned, int) TEST1(unsigned, short) TEST1(unsigned, char) +TEST1(unsigned, long) + +TEST2(unsigned, int, long) + +TEST2(unsigned, long, char) +TEST2(unsigned, long, short) +TEST2(unsigned, long, int) +TEST2(unsigned, int, short) +TEST2(unsigned, int, char) +TEST2(unsigned, short, char) TEST3(unsigned, char, int, short) +TEST3(unsigned, char, long, short) +TEST3(unsigned, char, int, long) +TEST3(unsigned, char, long, int) +TEST3(unsigned, char, short, char) +TEST3(unsigned, char, int, char) +TEST3(unsigned, char, long, char) + +TEST3(unsigned, short, int, char) +TEST3(unsigned, short, long, char) +TEST3(unsigned, short, int, long) +TEST3(unsigned, short, long, int) +TEST3(unsigned, short, char, short) +TEST3(unsigned, short, int, short) +TEST3(unsigned, short, long, short) + +TEST3(unsigned, int, char, short) +TEST3(unsigned, int, short, char) +TEST3(unsigned, int, char, long) +TEST3(unsigned, int, long, char) +TEST3(unsigned, int, short, long) +TEST3(unsigned, int, long, short) +TEST3(unsigned, int, char, int) +TEST3(unsigned, int, short, int) +TEST3(unsigned, int, long, int) + +TEST3(unsigned, long, char, short) +TEST3(unsigned, long, short, char) +TEST3(unsigned, long, char, int) +TEST3(unsigned, long, int, char) +TEST3(unsigned, long, short, int) +TEST3(unsigned, long, int, short) +TEST3(unsigned, long, char, long) +TEST3(unsigned, long, short, long) +TEST3(unsigned, long, int, long) /* { dg-final { scan-assembler-not {\tsabd\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tuabd\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/abd_run_1.c b/gcc/testsuite/gcc.target/aarch64/abd_run_1.c index 7bb0a801415ffeab235bd636032112228255e836..1bfd6aca157db47b0874af7308a5fa8d61f71da2 100644 --- a/gcc/testsuite/gcc.target/aarch64/abd_run_1.c +++ b/gcc/testsuite/gcc.target/aarch64/abd_run_1.c @@ -11,10 +11,17 @@ TEST1(signed, int) TEST1(signed, short) TEST1(signed, char) +TEST2(signed, char, short) +TEST2(signed, short, int) +TEST2(signed, int, long) + TEST1(unsigned, int) TEST1(unsigned, short) TEST1(unsigned, char) +TEST2(unsigned, char, short) +TEST2(unsigned, short, int) + #define EMPTY { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } #define sA { -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50 } #define uA { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 } @@ -27,6 +34,8 @@ typedef signed short s16; typedef unsigned short u16; typedef signed int s32; typedef unsigned int u32; +typedef signed long s64; +typedef unsigned long u64; s8 sc_out[] = EMPTY; u8 uc_out[] = EMPTY; @@ -34,6 +43,8 @@ s16 ss_out[] = EMPTY; u16 us_out[] = EMPTY; s32 si_out[] = EMPTY; u32 ui_out[] = EMPTY; +s64 sl_out[] = EMPTY; +u64 ul_out[] = EMPTY; s8 sc_A[] = sA; s8 sc_B[] = B; @@ -56,6 +67,8 @@ s16 ss_gold[] = GOLD; u16 us_gold[] = GOLD; s32 si_gold[] = GOLD; u32 ui_gold[] = GOLD; +s64 sl_gold[] = GOLD; +u64 ul_gold[] = GOLD; extern void abort (void); @@ -88,6 +101,22 @@ int main () fn_unsigned_int (ui_A, ui_B, ui_out); COMPARE (ui_out, ui_gold); + + fn_signed_char_char_short (sc_B, sc_A, ss_out); + COMPARE(ss_gold, ss_out); + + fn_signed_short_short_int (ss_A, ss_B, si_out); + COMPARE(si_gold, si_out); + + fn_signed_int_int_long (si_B, si_A, sl_out); + COMPARE(sl_gold, sl_out); + + fn_unsigned_char_char_short (uc_B, uc_A, us_out); + COMPARE(us_gold, us_out); + + fn_unsigned_short_short_int (us_A, us_B, ui_out); + COMPARE(ui_gold, ui_out); + return 0; } diff --git a/gcc/testsuite/gcc.target/aarch64/abd_widen_2.c b/gcc/testsuite/gcc.target/aarch64/abd_widen_2.c new file mode 100644 index 0000000000000000000000000000000000000000..6557f0c98a24a104c0b9ec20890b85afa8ce2734 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/abd_widen_2.c @@ -0,0 +1,62 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +#pragma GCC target "+nosve" +#define N 1024 + +#define ABD_ABS +#include "abd.h" + +TEST2(signed, char, short) +TEST2(signed, char, int) +TEST2(signed, char, long) +TEST2(signed, short, int) +TEST2(signed, short, long) +TEST2(signed, int, long) + +TEST2(signed, short, char) + +TEST3(signed, char, short, int) +TEST3(signed, char, short, long) +TEST3(signed, char, int, long) +TEST3(signed, char, short, char) + +TEST3(signed, short, char, int) +TEST3(signed, short, char, long) +TEST3(signed, short, int, long) + +TEST3(signed, int, char, long) +TEST3(signed, int, short, long) + +TEST2(unsigned, char, short) +TEST2(unsigned, char, int) +TEST2(unsigned, char, long) +TEST2(unsigned, short, int) +TEST2(unsigned, short, long) + +TEST2(unsigned, short, char) + +TEST3(unsigned, char, short, int) +TEST3(unsigned, char, short, long) +TEST3(unsigned, char, short, char) + +TEST3(unsigned, short, char, int) +TEST3(unsigned, short, char, long) + +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 13 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 13 } } */ +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 14 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 14 } } */ +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.8h, v\[0-9\]+\.8b, v\[0-9\]+\.8b" 3 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.8h, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ + +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 0 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 0 } } */ +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 14 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 14 } } */ +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.8h, v\[0-9\]+\.8b, v\[0-9\]+\.8b" 3 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.8h, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ + +/* { dg-final { scan-assembler-not {\tsabd\t} } } */ +/* { dg-final { scan-assembler-not {\tuabd\t} } } */ +/* { dg-final { scan-assembler-not {\tabs\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/abd_widen_3.c b/gcc/testsuite/gcc.target/aarch64/abd_widen_3.c new file mode 100644 index 0000000000000000000000000000000000000000..dfdd20e790a37dc52f838aec008332ce6d4b7a85 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/abd_widen_3.c @@ -0,0 +1,62 @@ +/* { dg-do compile } */ +/* { dg-options "-Ofast" } */ + +#pragma GCC target "arch=armv8-a" +#define N 1024 + +#define ABD_ABS +#include "abd.h" + +TEST2(signed, char, short) +TEST2(signed, char, int) +TEST2(signed, char, long) +TEST2(signed, short, int) +TEST2(signed, short, long) +TEST2(signed, int, long) + +TEST2(signed, short, char) + +TEST3(signed, char, short, int) +TEST3(signed, char, short, long) +TEST3(signed, char, int, long) +TEST3(signed, char, short, char) + +TEST3(signed, short, char, int) +TEST3(signed, short, char, long) +TEST3(signed, short, int, long) + +TEST3(signed, int, char, long) +TEST3(signed, int, short, long) + +TEST2(unsigned, char, short) +TEST2(unsigned, char, int) +TEST2(unsigned, char, long) +TEST2(unsigned, short, int) +TEST2(unsigned, short, long) + +TEST2(unsigned, short, char) + +TEST3(unsigned, char, short, int) +TEST3(unsigned, char, short, long) +TEST3(unsigned, char, short, char) + +TEST3(unsigned, short, char, int) +TEST3(unsigned, short, char, long) + +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 13 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 13 } } */ +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 14 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 14 } } */ +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.8h, v\[0-9\]+\.8b, v\[0-9\]+\.8b" 3 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.8h, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ + +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 0 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 0 } } */ +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 14 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 14 } } */ +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.8h, v\[0-9\]+\.8b, v\[0-9\]+\.8b" 3 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.8h, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ + +/* { dg-final { scan-assembler-not {\tsabd\t} } } */ +/* { dg-final { scan-assembler-not {\tuabd\t} } } */ +/* { dg-final { scan-assembler-not {\tabs\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/abd_widen_4.c b/gcc/testsuite/gcc.target/aarch64/abd_widen_4.c new file mode 100644 index 0000000000000000000000000000000000000000..298b1c614955b470669fc3987a7c4bdeb4833e5e --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/abd_widen_4.c @@ -0,0 +1,56 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +#pragma GCC target "+nosve" +#define N 1024 + +#define ABD_IDIOM +#include "abd.h" + +TEST2(signed, char, short) +TEST2(signed, char, int) +TEST2(signed, char, long) +TEST2(signed, short, int) +TEST2(signed, short, long) +TEST2(signed, int, long) + +TEST3(signed, char, short, int) +TEST3(signed, char, short, long) +TEST3(signed, char, int, long) + +TEST3(signed, short, char, int) +TEST3(signed, short, char, long) +TEST3(signed, short, int, long) + +TEST3(signed, int, char, long) +TEST3(signed, int, short, long) + +TEST2(unsigned, char, short) +TEST2(unsigned, char, int) +TEST2(unsigned, char, long) +TEST2(unsigned, short, int) +TEST2(unsigned, short, long) + +TEST3(unsigned, char, short, int) +TEST3(unsigned, char, short, long) + +TEST3(unsigned, short, char, int) +TEST3(unsigned, short, char, long) + +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 13 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 13 } } */ +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 10 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 10 } } */ +/* { dg-final { scan-assembler-times "sabdl\\tv\[0-9\]+\.8h, v\[0-9\]+\.8b, v\[0-9\]+\.8b" 3 } } */ +/* { dg-final { scan-assembler-times "sabdl2\\tv\[0-9\]+\.8h, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ + +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 0 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 0 } } */ +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 10 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 10 } } */ +/* { dg-final { scan-assembler-times "uabdl\\tv\[0-9\]+\.8h, v\[0-9\]+\.8b, v\[0-9\]+\.8b" 3 } } */ +/* { dg-final { scan-assembler-times "uabdl2\\tv\[0-9\]+\.8h, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ + +/* { dg-final { scan-assembler-not {\tsabd\t} } } */ +/* { dg-final { scan-assembler-not {\tuabd\t} } } */ +/* { dg-final { scan-assembler-not {\tabs\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/abd_1.c b/gcc/testsuite/gcc.target/aarch64/sve/abd_1.c index e49006f90b22040f890c279ec19c490a655abd63..4f4824010b14deaa2514e1a96cac6df5a1278b62 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/abd_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/abd_1.c @@ -10,26 +10,69 @@ TEST1(signed, int) TEST1(signed, short) TEST1(signed, char) -TEST2(signed, char, int) TEST2(signed, char, short) +TEST2(signed, char, int) +TEST2(signed, char, long) TEST2(signed, short, int) +TEST2(signed, short, long) +TEST2(signed, int, long) + +TEST2(signed, int, short) +TEST2(signed, int, char) +TEST2(signed, short, char) -TEST3(signed, char, int, short) TEST3(signed, char, short, int) +TEST3(signed, char, int, short) +TEST3(signed, char, short, long) +TEST3(signed, char, int, long) +TEST3(signed, char, short, char) +TEST3(signed, char, int, char) + +TEST3(signed, short, char, int) +TEST3(signed, short, int, char) +TEST3(signed, short, char, long) +TEST3(signed, short, int, long) +TEST3(signed, short, char, short) +TEST3(signed, short, int, short) + +TEST3(signed, int, char, short) +TEST3(signed, int, short, char) +TEST3(signed, int, char, long) +TEST3(signed, int, short, long) +TEST3(signed, int, char, int) +TEST3(signed, int, short, int) TEST1(unsigned, short) TEST1(unsigned, char) TEST2(unsigned, char, short) TEST2(unsigned, char, int) +TEST2(unsigned, char, long) TEST2(unsigned, short, int) +TEST2(unsigned, short, long) + +TEST2(unsigned, short, char) TEST3(unsigned, char, short, int) +TEST3(unsigned, char, short, long) +TEST3(unsigned, char, short, char) + +TEST3(unsigned, short, char, int) +TEST3(unsigned, short, char, long) +TEST3(unsigned, short, char, short) + +/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.d, p\[0-9\]/m, z\[0-9\]+\.d, z\[0-9\]+\.d" 0 } } */ +/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.s, p\[0-9\]/m, z\[0-9\]+\.s, z\[0-9\]+\.s" 16 } } */ +/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.h, p\[0-9\]/m, z\[0-9\]+\.h, z\[0-9\]+\.h" 10 } } */ +/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.b, p\[0-9\]/m, z\[0-9\]+\.b, z\[0-9\]+\.b" 4 } } */ -/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.s, p\[0-9\]/m, z\[0-9\]+\.s, z\[0-9\]+\.s" 2 } } */ -/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.h, p\[0-9\]/m, z\[0-9\]+\.h, z\[0-9\]+\.h" 3 } } */ -/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.b, p\[0-9\]/m, z\[0-9\]+\.b, z\[0-9\]+\.b" 3 } } */ -/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.h, p\[0-9\]/m, z\[0-9\]+\.h, z\[0-9\]+\.h" 3 } } */ -/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.b, p\[0-9\]/m, z\[0-9\]+\.b, z\[0-9\]+\.b" 3 } } */ +/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.d, p\[0-9\]/m, z\[0-9\]+\.d, z\[0-9\]+\.d" 0 } } */ +/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.s, p\[0-9\]/m, z\[0-9\]+\.s, z\[0-9\]+\.s" 0 } } */ +/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.h, p\[0-9\]/m, z\[0-9\]+\.h, z\[0-9\]+\.h" 10 } } */ +/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.b, p\[0-9\]/m, z\[0-9\]+\.b, z\[0-9\]+\.b" 4 } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tabs\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/abd_2.c b/gcc/testsuite/gcc.target/aarch64/sve/abd_2.c index ea64fa837b1025933ab6c339b86f0db06ffbe0e4..ffa978af9edf7248d0c262e00ffbe3546f92d3bc 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/abd_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/abd_2.c @@ -7,23 +7,56 @@ #include "../abd.h" TEST1(signed, int) +TEST1(signed, long) -TEST2(signed, char, int) TEST2(signed, char, short) +TEST2(signed, char, int) +TEST2(signed, char, long) TEST2(signed, short, int) +TEST2(signed, short, long) +TEST2(signed, int, long) TEST3(signed, char, short, int) +TEST3(signed, char, short, long) +TEST3(signed, char, int, long) + +TEST3(signed, short, char, int) +TEST3(signed, short, char, long) +TEST3(signed, short, int, long) + +TEST3(signed, int, char, long) +TEST3(signed, int, short, long) +TEST3(signed, int, char, int) +TEST3(signed, int, short, int) + +TEST3(signed, long, char, long) +TEST3(signed, long, short, long) +TEST3(signed, long, int, long) -TEST2(unsigned, char, int) TEST2(unsigned, char, short) +TEST2(unsigned, char, int) +TEST2(unsigned, char, long) TEST2(unsigned, short, int) +TEST2(unsigned, short, long) TEST3(unsigned, char, short, int) +TEST3(unsigned, char, short, long) + +TEST3(unsigned, short, char, int) +TEST3(unsigned, short, char, long) + +/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.d, p\[0-9\]/m, z\[0-9\]+\.d, z\[0-9\]+\.d" 4 } } */ +/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.s, p\[0-9\]/m, z\[0-9\]+\.s, z\[0-9\]+\.s" 8 } } */ +/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.h, p\[0-9\]/m, z\[0-9\]+\.h, z\[0-9\]+\.h" 6 } } */ +/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.b, p\[0-9\]/m, z\[0-9\]+\.b, z\[0-9\]+\.b" 3 } } */ -/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.s, p\[0-9\]/m, z\[0-9\]+\.s, z\[0-9\]+\.s" 1 } } */ -/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.h, p\[0-9\]/m, z\[0-9\]+\.h, z\[0-9\]+\.h" 2 } } */ -/* { dg-final { scan-assembler-times "sabd\\tz\[0-9\]+\.b, p\[0-9\]/m, z\[0-9\]+\.b, z\[0-9\]+\.b" 2 } } */ -/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.h, p\[0-9\]/m, z\[0-9\]+\.h, z\[0-9\]+\.h" 2 } } */ -/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.b, p\[0-9\]/m, z\[0-9\]+\.b, z\[0-9\]+\.b" 2 } } */ +/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.d, p\[0-9\]/m, z\[0-9\]+\.d, z\[0-9\]+\.d" 0 } } */ +/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.s, p\[0-9\]/m, z\[0-9\]+\.s, z\[0-9\]+\.s" 0 } } */ +/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.h, p\[0-9\]/m, z\[0-9\]+\.h, z\[0-9\]+\.h" 6 } } */ +/* { dg-final { scan-assembler-times "uabd\\tz\[0-9\]+\.b, p\[0-9\]/m, z\[0-9\]+\.b, z\[0-9\]+\.b" 3 } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tabs\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/abd_none_1.c b/gcc/testsuite/gcc.target/aarch64/sve/abd_none_1.c index a4c2053c50e235e6ea6ad8bfb124889556be1657..1fb58b38474796bb6ed66fb098372ac81446d572 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/abd_none_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/abd_none_1.c @@ -6,8 +6,81 @@ #define ABD_ABS #include "../abd.h" +TEST1(signed, long) + +TEST2(signed, long, char) +TEST2(signed, long, short) +TEST2(signed, long, int) + +TEST3(signed, char, long, short) +TEST3(signed, char, long, int) +TEST3(signed, char, long, char) + +TEST3(signed, short, long, char) +TEST3(signed, short, long, int) +TEST3(signed, short, long, short) + +TEST3(signed, int, long, char) +TEST3(signed, int, long, short) +TEST3(signed, int, long, int) + +TEST3(signed, long, char, short) +TEST3(signed, long, short, char) +TEST3(signed, long, char, int) +TEST3(signed, long, int, char) +TEST3(signed, long, short, int) +TEST3(signed, long, int, short) +TEST3(signed, long, char, long) +TEST3(signed, long, short, long) +TEST3(signed, long, int, long) + TEST1(unsigned, int) +TEST1(unsigned, long) + +TEST2(unsigned, int, long) + +TEST2(unsigned, long, char) +TEST2(unsigned, long, short) +TEST2(unsigned, long, int) +TEST2(unsigned, int, short) +TEST2(unsigned, int, char) + TEST3(unsigned, char, int, short) +TEST3(unsigned, char, long, short) +TEST3(unsigned, char, int, long) +TEST3(unsigned, char, long, int) +TEST3(unsigned, char, int, char) + +TEST3(unsigned, short, int, char) +TEST3(unsigned, short, long, char) +TEST3(unsigned, short, int, long) +TEST3(unsigned, short, long, int) +TEST3(unsigned, short, int, short) +TEST3(unsigned, short, long, short) + +TEST3(unsigned, int, char, short) +TEST3(unsigned, int, short, char) +TEST3(unsigned, int, char, long) +TEST3(unsigned, int, long, char) +TEST3(unsigned, int, short, long) +TEST3(unsigned, int, long, short) +TEST3(unsigned, int, char, int) +TEST3(unsigned, int, short, int) +TEST3(unsigned, int, long, int) + +TEST3(unsigned, long, char, short) +TEST3(unsigned, long, short, char) +TEST3(unsigned, long, char, int) +TEST3(unsigned, long, int, char) +TEST3(unsigned, long, short, int) +TEST3(unsigned, long, int, short) +TEST3(unsigned, long, char, long) +TEST3(unsigned, long, short, long) +TEST3(unsigned, long, int, long) /* { dg-final { scan-assembler-not {\tsabd\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tuabd\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/abd_none_2.c b/gcc/testsuite/gcc.target/aarch64/sve/abd_none_2.c index 4862db93a81e890637ee8e02dcc9de9e0e613e91..a9465b56bab9aad5a6bea65055e7d928c7aabe39 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/abd_none_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/abd_none_2.c @@ -9,13 +9,93 @@ TEST1(signed, short) TEST1(signed, char) +TEST2(signed, long, char) +TEST2(signed, long, short) +TEST2(signed, long, int) +TEST2(signed, int, short) +TEST2(signed, int, char) +TEST2(signed, short, char) + TEST3(signed, char, int, short) +TEST3(signed, char, long, short) +TEST3(signed, char, long, int) +TEST3(signed, char, short, char) +TEST3(signed, char, int, char) +TEST3(signed, char, long, char) + +TEST3(signed, short, int, char) +TEST3(signed, short, long, char) +TEST3(signed, short, long, int) +TEST3(signed, short, char, short) +TEST3(signed, short, int, short) +TEST3(signed, short, long, short) + +TEST3(signed, int, char, short) +TEST3(signed, int, short, char) +TEST3(signed, int, long, char) +TEST3(signed, int, long, short) +TEST3(signed, int, long, int) + +TEST3(signed, long, char, short) +TEST3(signed, long, short, char) +TEST3(signed, long, char, int) +TEST3(signed, long, int, char) +TEST3(signed, long, short, int) +TEST3(signed, long, int, short) TEST1(unsigned, int) TEST1(unsigned, short) TEST1(unsigned, char) +TEST1(unsigned, long) + +TEST2(unsigned, int, long) + +TEST2(unsigned, long, char) +TEST2(unsigned, long, short) +TEST2(unsigned, long, int) +TEST2(unsigned, int, short) +TEST2(unsigned, int, char) +TEST2(unsigned, short, char) TEST3(unsigned, char, int, short) +TEST3(unsigned, char, long, short) +TEST3(unsigned, char, int, long) +TEST3(unsigned, char, long, int) +TEST3(unsigned, char, short, char) +TEST3(unsigned, char, int, char) +TEST3(unsigned, char, long, char) + +TEST3(unsigned, short, int, char) +TEST3(unsigned, short, long, char) +TEST3(unsigned, short, int, long) +TEST3(unsigned, short, long, int) +TEST3(unsigned, short, char, short) +TEST3(unsigned, short, int, short) +TEST3(unsigned, short, long, short) + +TEST3(unsigned, int, char, short) +TEST3(unsigned, int, short, char) +TEST3(unsigned, int, char, long) +TEST3(unsigned, int, long, char) +TEST3(unsigned, int, short, long) +TEST3(unsigned, int, long, short) +TEST3(unsigned, int, char, int) +TEST3(unsigned, int, short, int) +TEST3(unsigned, int, long, int) + +TEST3(unsigned, long, char, short) +TEST3(unsigned, long, short, char) +TEST3(unsigned, long, char, int) +TEST3(unsigned, long, int, char) +TEST3(unsigned, long, short, int) +TEST3(unsigned, long, int, short) +TEST3(unsigned, long, char, long) +TEST3(unsigned, long, short, long) +TEST3(unsigned, long, int, long) /* { dg-final { scan-assembler-not {\tsabd\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tsabdl2\t} } } */ /* { dg-final { scan-assembler-not {\tuabd\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl\t} } } */ +/* { dg-final { scan-assembler-not {\tuabdl2\t} } } */