From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80040.outbound.protection.outlook.com [40.107.8.40]) by sourceware.org (Postfix) with ESMTPS id C759B3853D74 for ; Fri, 18 Nov 2022 16:36:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C759B3853D74 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com 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=dmPX7O1FIP8of9cTpr5hb+/Aa7ERfdke2Fmr2X917SE=; b=B9N0tCxQH5aj9igY5cCOHg64n2v2+m7e7ytjAviyb3bMCFe8bNAN8NVvksT1Yetfi0OXLHHSK5B63FwglLEaAQHQuC1lR9E4iMOoaBXaYOLGKJ7m30QYRFmcEG4CS96QEWuFJ6asGYDRdAfpNhOYUBrhp09xqjtITGcmQGL9zio= Received: from DB6PR1001CA0003.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::13) by DBBPR08MB5881.eurprd08.prod.outlook.com (2603:10a6:10:208::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.8; Fri, 18 Nov 2022 16:36:01 +0000 Received: from DBAEUR03FT007.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:b7:cafe::7) by DB6PR1001CA0003.outlook.office365.com (2603:10a6:4:b7::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.19 via Frontend Transport; Fri, 18 Nov 2022 16:36:01 +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 DBAEUR03FT007.mail.protection.outlook.com (100.127.142.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.8 via Frontend Transport; Fri, 18 Nov 2022 16:36:01 +0000 Received: ("Tessian outbound 73ab5f36653e:v130"); Fri, 18 Nov 2022 16:36:01 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: ab2b0478dfac8e14 X-CR-MTA-TID: 64aa7808 Received: from 2d41aabf5ff7.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 963DF6D8-8C28-41D8-AF4B-711D22505C51.1; Fri, 18 Nov 2022 16:35:50 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2d41aabf5ff7.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 18 Nov 2022 16:35:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oFhWqcMWZAH/nXhZtSZhFh306F9Lz1EGGLzYyYBhJ2ow8+TMMyK8BVTIgTjRIjbUcf5WU9br+O1WIxnZVq0dGENGh0CkbYlVm25oObj3zGIER9D8feURj8V9TaVBgNL1kCfkR5OTKmwMjI2mQsMH2McBXEsjJcXTFdtz1FJ4NNOHGqTx5UJHUnmwbEifnGexLkmSO2mOAuVRdydF+/5iw0SX6lnCEVFY6INn1keHtM/C1WpXyGqZ9Ac7Nmg8LM9/nVKn1qLIE46brV8qWfjUtVjoaefLg6SvLqW+3D1uCBbpi2vPN6aqaqnHL3zs+XESPyQxuO7fu60jr17Zchk8bw== 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=dmPX7O1FIP8of9cTpr5hb+/Aa7ERfdke2Fmr2X917SE=; b=b2IDzDyvvrqoOTvapOAOE9BhHc5W1eXluHoNHFDK02mvHiWM86GE/Csry2ryiPwN3W54iqLWlqOVcEj6GX+RTxyPhe2hjhygL68iHTLAqbG5DJlp5A8ZoP8lUAlRVVGY3pC0QOeUseH9BGqrBjYAX1VnOzhwYEiqvF/13i9wPEtF3rb9j9Y2WoLmH4w6wPDqvvWzvGMatMoR+N87Tym+3hxX6cuVgsTJG+IlKjBCWFMdfi3Rm2+AtRCvSObuHZQhyCdRXEFS+CS9tVeTh7e27J0whUWyT6axoUc3s7ra28eIvsv6Jc1GTlrD4ulUXbHHGXUpNopKisyxp4SFLVG6KQ== 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=dmPX7O1FIP8of9cTpr5hb+/Aa7ERfdke2Fmr2X917SE=; b=B9N0tCxQH5aj9igY5cCOHg64n2v2+m7e7ytjAviyb3bMCFe8bNAN8NVvksT1Yetfi0OXLHHSK5B63FwglLEaAQHQuC1lR9E4iMOoaBXaYOLGKJ7m30QYRFmcEG4CS96QEWuFJ6asGYDRdAfpNhOYUBrhp09xqjtITGcmQGL9zio= Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by PAVPR08MB9259.eurprd08.prod.outlook.com (2603:10a6:102:307::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.8; Fri, 18 Nov 2022 16:35:44 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::8668:3414:edde:d292]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::8668:3414:edde:d292%7]) with mapi id 15.20.5857.008; Fri, 18 Nov 2022 16:35:44 +0000 From: Kyrylo Tkachov To: Andrea Corallo , "gcc-patches@gcc.gnu.org" CC: Richard Earnshaw , Andrea Corallo Subject: RE: [PATCH 04/35] arm: improve tests and fix vdwdupq* Thread-Topic: [PATCH 04/35] arm: improve tests and fix vdwdupq* Thread-Index: AQHY+qME6EN/CJVhtEykMel4/THD6K5E4kgQ Date: Fri, 18 Nov 2022 16:35:44 +0000 Message-ID: References: <20221117163809.1009526-1-andrea.corallo@arm.com> <20221117163809.1009526-5-andrea.corallo@arm.com> In-Reply-To: <20221117163809.1009526-5-andrea.corallo@arm.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAXPR08MB6926:EE_|PAVPR08MB9259:EE_|DBAEUR03FT007:EE_|DBBPR08MB5881:EE_ X-MS-Office365-Filtering-Correlation-Id: 2aaec44a-482c-4e2d-79de-08dac982fae2 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: R87HPuW1CDoHTzGz5yZpilz4BdB/2E2CCaj7AYVoDr0gIC06VGGSplB0eoQNIttbFbzGD3+eFHIWD7nn6eAGvKGgzvRM6DyYV0jc5dtnbamD9jU/yHSnsZKaS+KQrrnzl6uuLUpW17NTNKeSyGzxeKleD7A9IrfKNg+shRNIpZPIrKfRiz/w5LSe4hUmvduZ+zvqmYXetaQDEGejdGOkHnPRAiPvMxolhQYRnEkWVPNoznCiPTJ4hNpUMlsaEfVR+RIude+hcBdu7gnDRdWJzJ8jliLNV3zQ8nlUfHWy2HSU4RjEufEk9H6JrXwTqvEEeEnZBGv3mplkk6fEAkJsnqBpaLdBduXCca8ex1bi8Z0JPp9sWDIizhr/6HVZIw0d7u7rtlmoFwhqLQw0lQK+dFNPl7sB9+VjMJmNQv2gqB7A34i66XjtyXfvknd9o5Es+A6KY+vhJ54a8mAb9gvGYCnZfCdnRmwtuxxTa+ceOOPe62W4YOiFKxaV8rV4SgdveFrCUBk1UiQzOYFCErx4771YhibPegiHBrrkuBrXXEzA5YP8cm31cOpWcmCtfvvRflVDjR1nv8HgaQOGNESBPI2c/vI6zTxqsSkGtRyH+yG0HC7JflygT/nX+Akll+gAn3w8g+r4UlFSdks0hbu6M4zrcc/EcnKjcvOmzC6eJgqO0MfamDL34RcJ6XqEmJSRhbm6G54tl0yxtpS6LNczW6+KvRxi60rIBoQY5UtYzz1a5rL5hJkZ89+7aWIASIzwYx+ooK5QVhbABOWSV2Tagg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB6926.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(346002)(396003)(366004)(136003)(39860400002)(451199015)(84970400001)(83380400001)(55016003)(8676002)(4326008)(186003)(86362001)(33656002)(66556008)(66476007)(52536014)(122000001)(38100700002)(66446008)(316002)(38070700005)(53546011)(64756008)(5660300002)(76116006)(30864003)(66946007)(6506007)(54906003)(478600001)(2906002)(8936002)(41300700001)(26005)(110136005)(7696005)(71200400001)(9686003)(559001)(579004);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9259 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT007.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 280dbf66-58e8-4448-3419-08dac982f04b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qFlaNMDixk9eHAQsRYUsK9Wi0osbKdyN90wQDNfEa9XqBOPKETK6X7ynDhpg/wBlfkSGrxWZcaV4S+oBhRDyUa//RsL0RNunncbVnqf6jHU1YDJr+GieMe2RGBsf4kpAM8q6fZMfgC9foUSFi/I61TbYpibuHuz5m/mZ86phvUWQkP2wAbu27mpFsf8+LtFbvxMc68ozXbNqRj1XCW9JPthx4jiEiDIam7y3vq23eNPrI/9iGS9hFzDki9Sje4shljvLRyRqippQRR8ZWYeuP6AH5U0treGagwiOVEeQJWEQtpP4Tb6JwKLNuhPYhffMynt13+ANfvXyY01V4bN4lKHzstm4gzSQ5v4MIw13BS1P7nJ/e93tvL6l5xOYWHpq/OYI4vL4sAORSwI3AoI8vo9TThcFgDjltWAOu/PPWUjsscT3MXukc5l6M5yeEK9fNqHevDZOU4u4W+E/dDRri4Qwrr4JTxITtbVPH4hMN+w8yJVGPTBrIug4yeACDxw5D03B/r4K9KpNRffhcxLseoKcijIml8XflG3ivO+KqosgB+m2Ek5x8qEOfh8775eY9HVrCelNkTSKjogdZ4yWt9/EcH+gxRDw4uDda3XP4eOJVoTa+JO3WJ0uAOac7LAAy49jDaaKUC9SctK1oaOPvKu0T4G6tLpLEQoNJ+yPDEF9JPE2q3kShKcC5VOxyiGUGdH1fHqrkI3Dx5wnXbIUoH1CSSg0k5/vH93kAiQFpML9jA979R6VpuXvvuRDbibayhacdOJ3aScPmtJQkjNaTg== 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:(13230022)(4636009)(396003)(39860400002)(376002)(136003)(346002)(451199015)(46966006)(36840700001)(40470700004)(36860700001)(52536014)(86362001)(82740400003)(9686003)(81166007)(2906002)(83380400001)(356005)(4326008)(8936002)(30864003)(8676002)(5660300002)(70206006)(70586007)(40480700001)(82310400005)(40460700003)(41300700001)(26005)(53546011)(7696005)(55016003)(6506007)(47076005)(54906003)(316002)(186003)(336012)(110136005)(478600001)(84970400001)(33656002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2022 16:36:01.8268 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2aaec44a-482c-4e2d-79de-08dac982fae2 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: DBAEUR03FT007.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB5881 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,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 List-Id: > -----Original Message----- > From: Andrea Corallo > Sent: Thursday, November 17, 2022 4:38 PM > To: gcc-patches@gcc.gnu.org > Cc: Kyrylo Tkachov ; Richard Earnshaw > ; Andrea Corallo > Subject: [PATCH 04/35] arm: improve tests and fix vdwdupq* >=20 > gcc/ChangeLog: >=20 > * config/arm/mve.md (mve_vdwdupq_m_wb_u_insn): Fix > spacing. >=20 > gcc/testsuite/ChangeLog: >=20 > * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c : Improve test. > * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c : Likewise. > * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c : Likewise. Ok. Thanks, Kyrill > --- > gcc/config/arm/mve.md | 2 +- > .../arm/mve/intrinsics/vdwdupq_m_n_u16.c | 44 ++++++++++++++-- > .../arm/mve/intrinsics/vdwdupq_m_n_u32.c | 46 ++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_m_n_u8.c | 46 ++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_m_wb_u16.c | 50 ++++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_m_wb_u32.c | 48 +++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_m_wb_u8.c | 50 ++++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_n_u16.c | 32 ++++++++++-- > .../arm/mve/intrinsics/vdwdupq_n_u32.c | 32 ++++++++++-- > .../arm/mve/intrinsics/vdwdupq_n_u8.c | 32 ++++++++++-- > .../arm/mve/intrinsics/vdwdupq_wb_u16.c | 32 ++++++++++-- > .../arm/mve/intrinsics/vdwdupq_wb_u32.c | 32 ++++++++++-- > .../arm/mve/intrinsics/vdwdupq_wb_u8.c | 32 ++++++++++-- > .../arm/mve/intrinsics/vdwdupq_x_n_u16.c | 42 ++++++++++++++-- > .../arm/mve/intrinsics/vdwdupq_x_n_u32.c | 46 ++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_x_n_u8.c | 46 ++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_x_wb_u16.c | 50 ++++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_x_wb_u32.c | 46 ++++++++++++++--- > .../arm/mve/intrinsics/vdwdupq_x_wb_u8.c | 50 ++++++++++++++++--- > 19 files changed, 655 insertions(+), 103 deletions(-) >=20 > diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md > index 1215f845388..58ffe03c499 100644 > --- a/gcc/config/arm/mve.md > +++ b/gcc/config/arm/mve.md > @@ -9195,7 +9195,7 @@ (define_insn > "mve_vdwdupq_m_wb_u_insn" > VDWDUPQ_M)) > ] > "TARGET_HAVE_MVE" > - "vpst\;\tvdwdupt.u%#\t%q2, %3, %R4, %5" > + "vpst\;vdwdupt.u%#\t%q2, %3, %R4, %5" > [(set_attr "type" "mve_move") > (set_attr "length""8")]) >=20 > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.= c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c > index 5303fd7d361..8f53f5ef0cb 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > foo (uint16x8_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 1, p); > + return vdwdupq_m_n_u16 (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint16x8_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) > { > return vdwdupq_m (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u16" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint16x8_t > +foo2 (uint16x8_t inactive, mve_pred16_t p) > +{ > + return vdwdupq_m (inactive, 1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.= c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c > index 9f22bd7f852..30e971fb733 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32x4_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 4, p); > + return vdwdupq_m_n_u32 (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32x4_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 4, p); > + return vdwdupq_m (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u32" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint32x4_t > +foo2 (uint32x4_t inactive, mve_pred16_t p) > +{ > + return vdwdupq_m (inactive, 1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c > index 0591e731958..0abc19a2318 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > foo (uint8x16_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 4, p); > + return vdwdupq_m_n_u8 (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint8x16_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 4, p); > + return vdwdupq_m (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u8" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint8x16_t > +foo2 (uint8x16_t inactive, mve_pred16_t p) > +{ > + return vdwdupq_m (inactive, 1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git > a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c > index e4e7b47e082..b3e6affbf8f 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > -foo (uint16x8_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) > +foo (uint16x8_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 8, p); > + return vdwdupq_m_wb_u16 (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > -foo1 (uint16x8_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) > +foo1 (uint16x8_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 8, p); > + return vdwdupq_m (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u16" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint16x8_t > +foo2 (uint16x8_t inactive, mve_pred16_t p) > +{ > + return vdwdupq_m (inactive, 1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git > a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c > index 42917dc9886..60c52b0d850 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > -foo (uint32x4_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) > +foo (uint32x4_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 1, p); > + return vdwdupq_m_wb_u32 (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > -foo1 (uint32x4_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) > +foo1 (uint32x4_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) > { > return vdwdupq_m (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u32" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint32x4_t > +foo2 (uint32x4_t inactive, mve_pred16_t p) > +{ > + return vdwdupq_m (inactive, 1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.= c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c > index 32c3153ffb3..459321a7984 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > -foo (uint8x16_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) > +foo (uint8x16_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 2, p); > + return vdwdupq_m_wb_u8 (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > -foo1 (uint8x16_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) > +foo1 (uint8x16_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_m (inactive, a, b, 2, p); > + return vdwdupq_m (inactive, a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u8" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint8x16_t > +foo2 (uint8x16_t inactive, mve_pred16_t p) > +{ > + return vdwdupq_m (inactive, 1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c > index 725a6e4bc0e..9f76dbf35eb 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c > @@ -1,21 +1,45 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > foo (uint32_t a, uint32_t b) > { > - return vdwdupq_n_u16 (a, b, 2); > + return vdwdupq_n_u16 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint32_t a, uint32_t b) > { > - return vdwdupq_u16 (a, b, 2); > + return vdwdupq_u16 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u16" } } */ > +/* > +**foo2: > +** ... > +** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint16x8_t > +foo2 () > +{ > + return vdwdupq_u16 (1, 1, 1); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c > index 6ceaadb984d..962f766b496 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c > @@ -1,21 +1,45 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32_t a, uint32_t b) > { > - return vdwdupq_n_u32 (a, b, 8); > + return vdwdupq_n_u32 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32_t a, uint32_t b) > { > - return vdwdupq_u32 (a, b, 8); > + return vdwdupq_u32 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u32" } } */ > +/* > +**foo2: > +** ... > +** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint32x4_t > +foo2 () > +{ > + return vdwdupq_u32 (1, 1, 1); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c > index a1712e418be..c73b1b69661 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c > @@ -1,21 +1,45 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > foo (uint32_t a, uint32_t b) > { > - return vdwdupq_n_u8 (a, b, 4); > + return vdwdupq_n_u8 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint32_t a, uint32_t b) > { > - return vdwdupq_u8 (a, b, 4); > + return vdwdupq_u8 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u8" } } */ > +/* > +**foo2: > +** ... > +** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint8x16_t > +foo2 () > +{ > + return vdwdupq_u8 (1, 1, 1); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c > index 0164ea9502c..3b1968d78aa 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c > @@ -1,21 +1,45 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > foo (uint32_t *a, uint32_t b) > { > - return vdwdupq_wb_u16 (a, b, 2); > + return vdwdupq_wb_u16 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint32_t *a, uint32_t b) > { > - return vdwdupq_u16 (a, b, 2); > + return vdwdupq_u16 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u16" } } */ > +/* > +**foo2: > +** ... > +** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint16x8_t > +foo2 () > +{ > + return vdwdupq_u16 (1, 1, 1); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c > index 7681371b016..8554f62ee6b 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c > @@ -1,21 +1,45 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32_t *a, uint32_t b) > { > - return vdwdupq_wb_u32 (a, b, 8); > + return vdwdupq_wb_u32 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32_t *a, uint32_t b) > { > - return vdwdupq_u32 (a, b, 8); > + return vdwdupq_u32 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u32" } } */ > +/* > +**foo2: > +** ... > +** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint32x4_t > +foo2 () > +{ > + return vdwdupq_u32 (1, 1, 1); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c > index 6f60bb09b24..eb91a80daf5 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c > @@ -1,21 +1,45 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > foo (uint32_t *a, uint32_t b) > { > - return vdwdupq_wb_u8 (a, b, 4); > + return vdwdupq_wb_u8 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint32_t *a, uint32_t b) > { > - return vdwdupq_u8 (a, b, 4); > + return vdwdupq_u8 (a, b, 1); > } >=20 > -/* { dg-final { scan-assembler "vdwdup.u8" } } */ > +/* > +**foo2: > +** ... > +** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint8x16_t > +foo2 () > +{ > + return vdwdupq_u8 (1, 1, 1); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.= c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c > index ce975267531..9c0fd1e253c 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > foo (uint32_t a, uint32_t b, mve_pred16_t p) > { > return vdwdupq_x_n_u16 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint32_t a, uint32_t b, mve_pred16_t p) > { > return vdwdupq_x_u16 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u16" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint16x8_t > +foo2 (mve_pred16_t p) > +{ > + return vdwdupq_x_u16 (1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.= c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c > index 9ed75d292d8..3107e2fdbbe 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_x_n_u32 (a, b, 4, p); > + return vdwdupq_x_n_u32 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_x_u32 (a, b, 4, p); > + return vdwdupq_x_u32 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u32" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint32x4_t > +foo2 (mve_pred16_t p) > +{ > + return vdwdupq_x_u32 (1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c > index 3705094c4df..03d01e0dd43 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > foo (uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_x_n_u8 (a, b, 4, p); > + return vdwdupq_x_n_u8 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint32_t a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_x_u8 (a, b, 4, p); > + return vdwdupq_x_u8 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u8" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint8x16_t > +foo2 (mve_pred16_t p) > +{ > + return vdwdupq_x_u8 (1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git > a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c > index caf744d7255..f7dca660c03 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > -foo (uint32_t * a, uint32_t b, mve_pred16_t p) > +foo (uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_x_wb_u16 (a, b, 8, p); > + return vdwdupq_x_wb_u16 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint16x8_t > -foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) > +foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_x_u16 (a, b, 8, p); > + return vdwdupq_x_u16 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u16" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint16x8_t > +foo2 (mve_pred16_t p) > +{ > + return vdwdupq_x_u16 (1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git > a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c > index 8c8be86bce6..032ae94e8c3 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > -foo (uint32_t * a, uint32_t b, mve_pred16_t p) > +foo (uint32_t *a, uint32_t b, mve_pred16_t p) > { > return vdwdupq_x_wb_u32 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint32x4_t > -foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) > +foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) > { > return vdwdupq_x_u32 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u32" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint32x4_t > +foo2 (mve_pred16_t p) > +{ > + return vdwdupq_x_u32 (1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.= c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c > index 1c6ef4ed33f..5d238a7a865 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c > @@ -1,23 +1,57 @@ > /* { dg-require-effective-target arm_v8_1m_mve_ok } */ > /* { dg-add-options arm_v8_1m_mve } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > -foo (uint32_t * a, uint32_t b, mve_pred16_t p) > +foo (uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_x_wb_u8 (a, b, 2, p); > + return vdwdupq_x_wb_u8 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > uint8x16_t > -foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) > +foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) > { > - return vdwdupq_x_u8 (a, b, 2, p); > + return vdwdupq_x_u8 (a, b, 1, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vdwdupt.u8" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: > @.*|) > +** ... > +*/ > +uint8x16_t > +foo2 (mve_pred16_t p) > +{ > + return vdwdupq_x_u8 (1, 1, 1, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > -- > 2.25.1