From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2044.outbound.protection.outlook.com [40.107.20.44]) by sourceware.org (Postfix) with ESMTPS id 279E43853D4D for ; Fri, 18 Nov 2022 16:42:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 279E43853D4D 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=zYJmqZ9SQ9EXK9NnjkOzj+HKOOg51PRMvH5p7BjmS8E=; b=0eOf5sIjYq9oLyZWR5z3pYiyDUw2YIEobJ18R9lpf7V1oR+w4BtcPjuz3rbsjwYMvQ1vWONhs8xASU6+9MgNhjHeOcOhi0UwbhRoMPqtJUBuMswrSiyJLFMc9APOPV8DqK1OSxSAsjb/wspBt69sGMjLq3qazELOHpwXVuKij0k= Received: from DB6PR0202CA0040.eurprd02.prod.outlook.com (2603:10a6:4:a5::26) by AS4PR08MB7556.eurprd08.prod.outlook.com (2603:10a6:20b:4fe::22) 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:42:35 +0000 Received: from DBAEUR03FT019.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:a5:cafe::8d) by DB6PR0202CA0040.outlook.office365.com (2603:10a6:4:a5::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13 via Frontend Transport; Fri, 18 Nov 2022 16:42:35 +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 DBAEUR03FT019.mail.protection.outlook.com (100.127.142.129) 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:42:35 +0000 Received: ("Tessian outbound b4aebcc5bc64:v130"); Fri, 18 Nov 2022 16:42:35 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7553978866166cd1 X-CR-MTA-TID: 64aa7808 Received: from 1557cd119303.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 295DC70A-868F-485C-BE6E-24A75A0B0D37.1; Fri, 18 Nov 2022 16:42:25 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 1557cd119303.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 18 Nov 2022 16:42:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hm2IF/FTTkRcG4i94k6ji3rtcQi+XgTMt5g2wTSE48G+9mIq7Y7Hcq5a7Xnl5o0VW8BgL6TaEZsoR4ejSZAiceYhRWmDTs1yyjAzGbPZI7s0HEFnEaUxgoY/hTb+LlKPYZYNQtZnC7ltIhKECzf+B0v34ihaOiUN8z/j8ACTZMSRBRAsiFoDsPuDqk314Du+4AyVABDtjy7DVoYB4W0sS+wMQw2hljLlx4de7JZ07M1pP0dg9za6I8CUZ+I5bBcITkRyK5OibGpy4PlOdLhb2DB1fdkR+YQxmMegvCImewmMLarNjYfwgVSHKP3eu28wdeYMZRsYjRZEZOLvlEoJsA== 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=zYJmqZ9SQ9EXK9NnjkOzj+HKOOg51PRMvH5p7BjmS8E=; b=EKrGrb+tc4sTye+DuMszf1IZptfXgXsguPd6WB7ggk6WYTlAfO8UmEU+k2ZQvVu1lkpgx6jW/UDRAnghT8kYtl2HYdb5YCGsSpaDNA/fQaE6BHopHx1aU2M80CgM9tkUNRbkt/NEFpRlHUECcCiV64QTg7GWOtorStBT7XcHv2h7fwiUFEqfV0xna1eXeU1eA7AK8kQnflPDOJ+lPU+36iGn4ZcYd3K0jTfcR6mtMPTtK2u1b3QOjqp0fTeGJFKKVkLPCYt+sFo60zfm0taQawyinHG5kg0sL6g6b3qxOBS0P61t8oCIEsNEFqjNqAByydr1XmSbEcKVad5de/IOuw== 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=zYJmqZ9SQ9EXK9NnjkOzj+HKOOg51PRMvH5p7BjmS8E=; b=0eOf5sIjYq9oLyZWR5z3pYiyDUw2YIEobJ18R9lpf7V1oR+w4BtcPjuz3rbsjwYMvQ1vWONhs8xASU6+9MgNhjHeOcOhi0UwbhRoMPqtJUBuMswrSiyJLFMc9APOPV8DqK1OSxSAsjb/wspBt69sGMjLq3qazELOHpwXVuKij0k= Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by GVXPR08MB7871.eurprd08.prod.outlook.com (2603:10a6:150:17::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.6; Fri, 18 Nov 2022 16:42:20 +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:42:20 +0000 From: Kyrylo Tkachov To: Andrea Corallo , "gcc-patches@gcc.gnu.org" CC: Richard Earnshaw , Andrea Corallo Subject: RE: [PATCH 09/35] arm: improve tests for vmax* Thread-Topic: [PATCH 09/35] arm: improve tests for vmax* Thread-Index: AQHY+qMPKg2zG7G2+kWaoPreN2Zscq5E5B8A Date: Fri, 18 Nov 2022 16:42:20 +0000 Message-ID: References: <20221117163809.1009526-1-andrea.corallo@arm.com> <20221117163809.1009526-10-andrea.corallo@arm.com> In-Reply-To: <20221117163809.1009526-10-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_|GVXPR08MB7871:EE_|DBAEUR03FT019:EE_|AS4PR08MB7556:EE_ X-MS-Office365-Filtering-Correlation-Id: 64dff254-4621-4d1e-a519-08dac983e565 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: ecFKy9HPp8SGIOt2uEJBh7AYfqBlGFdF4Nq1x3/qmDlJwDuYGuwruu8e7MtdiGR7WPTRGyxMS9Fug6ZfeNqGb/XygRC/rpYBdF005K++e5IXMYJTR9Tr+YGvDK0V/V5ArImg1puiHN+oAvjWHsTdjKOqbFV0a2NEyjZWWQGvWiVs5LNNiE5McXJNWHgO6lmdqL0Ur9Su8G3F8uQvNuaIB41rkUXk3XbgEytW+ujlz8rfjjXHhyc55SxprMOCQdRogZG7vHpBybYKcaOL9xddk4Pb1QI3J07vRT86tR8ImM3C8pLN02ErxW25SRO5webvh8QaI3ZCtwsJ99W+POyCCRswZP5izTCywb7peoqqXmP/E+aZAodcJpN6tNSn67MHyRnye5L8FYm3CFLnr7tYT5CrphJ4yZsrMZqr6NGdEUsh1v4xzNeY4n+P3s6V7OKD4lNwqaICT4RKaLPvbc+XJYYdN2LvhXa+7UWcHWAZSoM6WsT3OPgn61dhXvqRTHFXBGeFJWtsI3JanuZOAZI7PMzl23luwqfzFeephl1FNrFJsYT5fA/cm/+hQdnKHm1rJngf3euCJHoGqL+eOnHYLBf3yoGuvubCsZaTbMs3X/MpHCYJml8K+1XKKBgHiIq85zRjlBdJzUJKLPUDXP/Wv/WSmiUYkJcEzOPSjMsIssDeqfCD1q7/4Q0ZLsEZdopdzmoBjjNyySVugiXttj6wUHqlKRWOapZnQRyrFnT6QGCk9TwxQzcLJUrDKumCR++kicgH9GcmDhMbakstvBtp6Q== 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)(346002)(39860400002)(136003)(366004)(376002)(396003)(451199015)(122000001)(52536014)(66446008)(66946007)(66476007)(76116006)(64756008)(84970400001)(38100700002)(8936002)(66556008)(8676002)(38070700005)(2906002)(41300700001)(4326008)(83380400001)(71200400001)(30864003)(5660300002)(53546011)(9686003)(478600001)(6506007)(26005)(33656002)(7696005)(110136005)(54906003)(186003)(316002)(55016003)(86362001)(579004)(559001);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: GVXPR08MB7871 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: DBAEUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d5b6d276-fdd9-46d9-7d42-08dac983dcb9 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iHTwx7CDbuUhIDuPJ4WLALb2V3BVlIpyovyFXedAeZMe0+u/XjlBX0Qt0GhH8/M3mlSpJe0HYAZabQmnp6EBPN8oQsLB0f0W7zJNtJKUeoTbhjpE7iDTm4tR220m/eWSP2ZS6dNGJ0wmK1QRTH6VZqyme77rKIyzD9DRUgSap41B8ga69qXv6LVGntol0+gLMZPEuNPEZzhI2QPbg4G/t2TELIxVEUIWN5LoaQ5ovS7+qZAEJpWn/5f1vvHY1EOj/xrqB9QN5BCZOVCJ2PxdIny6UM6R0H7r4i624q+/s3ecUNqjp2CycPBu42FPW7h7S9/XjJkFTmVzBGiAtIQUfdOzbuXeu8OSRWZoF0PMXrp6I2AL6SvOcmMUrT0qKMSN3ltbGKRwLStgEGpEbJFU0FAHpbUzh4f5jefYsUi9BKOH4v8IiFNglFsaVfLFqKUVHihT7YNIXb9X0Z0Wi9AProbCqp+VPGAQlxT3QPtrlWa84HCnxVeJB2oeMpiK2LarCPfgKaNQt5VKXmYeIcT+Ai9F+8tLTE8UO0ED1p8MyJuJVawU/wv9qkF3+bb1SOLcTqw0R/P6irbt84XluQbD4/1kNhTMay+Zqmcahc2Zo1gcFewP5qPOpg5vcFTRjbMglA5KZ6sFHw+ZaRkAuIr8qFiC3t6LoNMry8KxF3QuF/IIL0Fw1XqrNWyPDpUs98+k1uh5vUg89x6rfE5ALxSHFWmDugEvOMW91r149v3x1zpvl1MA+DozuVwHjfFFgJxUImRqfqiFGc1hS/FPSBqMhA== 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)(376002)(136003)(346002)(396003)(39860400002)(451199015)(36840700001)(40470700004)(46966006)(36860700001)(83380400001)(86362001)(82740400003)(81166007)(2906002)(356005)(30864003)(8936002)(4326008)(52536014)(8676002)(70586007)(41300700001)(5660300002)(316002)(82310400005)(40480700001)(70206006)(55016003)(9686003)(7696005)(6506007)(53546011)(26005)(40460700003)(47076005)(54906003)(110136005)(336012)(478600001)(186003)(84970400001)(33656002)(559001)(579004);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2022 16:42:35.2889 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 64dff254-4621-4d1e-a519-08dac983e565 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: DBAEUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7556 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 09/35] arm: improve tests for vmax* >=20 > gcc/testsuite/ChangeLog: >=20 > * gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c: Improve test. > * gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxaq_s16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxaq_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxaq_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_s16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_u16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_u32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_u8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise. > * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise. Ok. Thanks, Kyrill > --- > .../arm/mve/intrinsics/vmaxaq_m_s16.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxaq_m_s32.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxaq_m_s8.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxaq_s16.c | 16 +++++++- > .../arm/mve/intrinsics/vmaxaq_s32.c | 16 +++++++- > .../gcc.target/arm/mve/intrinsics/vmaxaq_s8.c | 16 +++++++- > .../arm/mve/intrinsics/vmaxavq_p_s16.c | 41 ++++++++++++++++--- > .../arm/mve/intrinsics/vmaxavq_p_s32.c | 41 ++++++++++++++++--- > .../arm/mve/intrinsics/vmaxavq_p_s8.c | 41 ++++++++++++++++--- > .../arm/mve/intrinsics/vmaxavq_s16.c | 29 ++++++++++--- > .../arm/mve/intrinsics/vmaxavq_s32.c | 29 ++++++++++--- > .../arm/mve/intrinsics/vmaxavq_s8.c | 29 ++++++++++--- > .../arm/mve/intrinsics/vmaxnmaq_f16.c | 16 +++++++- > .../arm/mve/intrinsics/vmaxnmaq_f32.c | 16 +++++++- > .../arm/mve/intrinsics/vmaxnmaq_m_f16.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxnmaq_m_f32.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxnmavq_f16.c | 27 +++++++++--- > .../arm/mve/intrinsics/vmaxnmavq_f32.c | 27 +++++++++--- > .../arm/mve/intrinsics/vmaxnmavq_p_f16.c | 39 +++++++++++++++--- > .../arm/mve/intrinsics/vmaxnmavq_p_f32.c | 39 +++++++++++++++--- > .../arm/mve/intrinsics/vmaxnmq_f16.c | 16 +++++++- > .../arm/mve/intrinsics/vmaxnmq_f32.c | 16 +++++++- > .../arm/mve/intrinsics/vmaxnmq_m_f16.c | 26 ++++++++++-- > .../arm/mve/intrinsics/vmaxnmq_m_f32.c | 26 ++++++++++-- > .../arm/mve/intrinsics/vmaxnmq_x_f16.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxnmq_x_f32.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxnmvq_f16.c | 27 +++++++++--- > .../arm/mve/intrinsics/vmaxnmvq_f32.c | 27 +++++++++--- > .../arm/mve/intrinsics/vmaxnmvq_p_f16.c | 39 +++++++++++++++--- > .../arm/mve/intrinsics/vmaxnmvq_p_f32.c | 39 +++++++++++++++--- > .../arm/mve/intrinsics/vmaxq_m_s16.c | 26 ++++++++++-- > .../arm/mve/intrinsics/vmaxq_m_s32.c | 26 ++++++++++-- > .../arm/mve/intrinsics/vmaxq_m_s8.c | 26 ++++++++++-- > .../arm/mve/intrinsics/vmaxq_m_u16.c | 26 ++++++++++-- > .../arm/mve/intrinsics/vmaxq_m_u32.c | 26 ++++++++++-- > .../arm/mve/intrinsics/vmaxq_m_u8.c | 26 ++++++++++-- > .../gcc.target/arm/mve/intrinsics/vmaxq_s16.c | 16 +++++++- > .../gcc.target/arm/mve/intrinsics/vmaxq_s32.c | 16 +++++++- > .../gcc.target/arm/mve/intrinsics/vmaxq_s8.c | 16 +++++++- > .../gcc.target/arm/mve/intrinsics/vmaxq_u16.c | 16 +++++++- > .../gcc.target/arm/mve/intrinsics/vmaxq_u32.c | 16 +++++++- > .../gcc.target/arm/mve/intrinsics/vmaxq_u8.c | 16 +++++++- > .../arm/mve/intrinsics/vmaxq_x_s16.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxq_x_s32.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxq_x_s8.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxq_x_u16.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxq_x_u32.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxq_x_u8.c | 25 +++++++++-- > .../arm/mve/intrinsics/vmaxvq_p_s16.c | 31 ++++++++++---- > .../arm/mve/intrinsics/vmaxvq_p_s32.c | 31 ++++++++++---- > .../arm/mve/intrinsics/vmaxvq_p_s8.c | 31 ++++++++++---- > .../arm/mve/intrinsics/vmaxvq_p_u16.c | 39 +++++++++++++++--- > .../arm/mve/intrinsics/vmaxvq_p_u32.c | 39 +++++++++++++++--- > .../arm/mve/intrinsics/vmaxvq_p_u8.c | 39 +++++++++++++++--- > .../arm/mve/intrinsics/vmaxvq_s16.c | 23 +++++++---- > .../arm/mve/intrinsics/vmaxvq_s32.c | 23 +++++++---- > .../gcc.target/arm/mve/intrinsics/vmaxvq_s8.c | 23 +++++++---- > .../arm/mve/intrinsics/vmaxvq_u16.c | 27 +++++++++--- > .../arm/mve/intrinsics/vmaxvq_u32.c | 27 +++++++++--- > .../gcc.target/arm/mve/intrinsics/vmaxvq_u8.c | 27 +++++++++--- > 60 files changed, 1318 insertions(+), 257 deletions(-) >=20 > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c > index 48d213277df..4c487ed7f60 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxat.s16 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo (uint16x8_t a, int16x8_t b, mve_pred16_t p) > { > return vmaxaq_m_s16 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxat.s16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxat.s16 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint16x8_t a, int16x8_t b, mve_pred16_t p) > { > return vmaxaq_m (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c > index 49273819861..5156467f0c1 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxat.s32 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32x4_t a, int32x4_t b, mve_pred16_t p) > { > return vmaxaq_m_s32 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxat.s32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxat.s32 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32x4_t a, int32x4_t b, mve_pred16_t p) > { > return vmaxaq_m (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c > index 5ecdb2c19dc..6564bd88c9b 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxat.s8 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo (uint8x16_t a, int8x16_t b, mve_pred16_t p) > { > return vmaxaq_m_s8 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxat.s8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxat.s8 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint8x16_t a, int8x16_t b, mve_pred16_t p) > { > return vmaxaq_m (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c > index f9a9f896aa2..6cabf9f723b 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmaxa.s16 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo (uint16x8_t a, int16x8_t b) > { > return vmaxaq_s16 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxa.s16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmaxa.s16 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint16x8_t a, int16x8_t b) > { > return vmaxaq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxa.s16" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c > index efe2fc16ff7..d0dd3c23600 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmaxa.s32 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32x4_t a, int32x4_t b) > { > return vmaxaq_s32 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxa.s32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmaxa.s32 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32x4_t a, int32x4_t b) > { > return vmaxaq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxa.s32" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c > index 5c2e35f71a6..a7344638dcf 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmaxa.s8 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo (uint8x16_t a, int8x16_t b) > { > return vmaxaq_s8 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxa.s8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmaxa.s8 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint8x16_t a, int8x16_t b) > { > return vmaxaq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxa.s8" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c > index 74ffad4e726..ac81c8fd1bd 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > foo (uint16_t a, int16x8_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (uint16_t a, int16x8_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > foo1 (uint16_t a, int16x8_t b, mve_pred16_t p) > { > return vmaxavq_p (a, b, p); > } >=20 > - > -int16_t > -foo2 (uint8_t a, int16x8_t b, mve_pred16_t p) > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > +uint16_t > +foo2 (int16x8_t b, mve_pred16_t p) > { > - return vmaxavq_p (a, b, p); > + return vmaxavq_p (1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxavt.s16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c > index 40800b0f12e..119c0c34c76 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, int32x4_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (uint32_t a, int32x4_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, int32x4_t b, mve_pred16_t p) > { > return vmaxavq_p (a, b, p); > } >=20 > - > -int32_t > -foo2 (uint16_t a, int32x4_t b, mve_pred16_t p) > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (int32x4_t b, mve_pred16_t p) > { > - return vmaxavq_p (a, b, p); > + return vmaxavq_p (1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxavt.s32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c > index 7638737fb84..dfd7f828ef6 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > foo (uint8_t a, int8x16_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (uint8_t a, int8x16_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > foo1 (uint8_t a, int8x16_t b, mve_pred16_t p) > { > return vmaxavq_p (a, b, p); > } >=20 > - > -int8_t > -foo2 (uint32_t a, int8x16_t b, mve_pred16_t p) > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > +uint8_t > +foo2 (int8x16_t b, mve_pred16_t p) > { > - return vmaxavq_p (a, b, p); > + return vmaxavq_p (1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxavt.s8" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c > index 0dca149b3e8..9f59e8e4542 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > foo (uint16_t a, int16x8_t b) > { > @@ -11,18 +18,28 @@ foo (uint16_t a, int16x8_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > foo1 (uint16_t a, int16x8_t b) > { > return vmaxavq (a, b); > } >=20 > - > -int16_t > -foo2 (uint8_t a, int16x8_t b) > +/* > +**foo2: > +** ... > +** vmaxav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > +uint16_t > +foo2 (int16x8_t b) > { > - return vmaxavq (a, b); > + return vmaxavq (1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxav.s16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c > index f419a771017..716b8a2a979 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, int32x4_t b) > { > @@ -11,18 +18,28 @@ foo (uint32_t a, int32x4_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, int32x4_t b) > { > return vmaxavq (a, b); > } >=20 > - > -int32_t > -foo2 (uint16_t a, int32x4_t b) > +/* > +**foo2: > +** ... > +** vmaxav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (int32x4_t b) > { > - return vmaxavq (a, b); > + return vmaxavq (1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxav.s32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c > index 214ad88f4aa..0f1a87af54b 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > foo (uint8_t a, int8x16_t b) > { > @@ -11,18 +18,28 @@ foo (uint8_t a, int8x16_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > foo1 (uint8_t a, int8x16_t b) > { > return vmaxavq (a, b); > } >=20 > - > -int8_t > -foo2 (uint32_t a, int8x16_t b) > +/* > +**foo2: > +** ... > +** vmaxav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > +uint8_t > +foo2 (int8x16_t b) > { > - return vmaxavq (a, b); > + return vmaxavq (1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxav.s8" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c > index f19707125db..cd4c813bf3b 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c > @@ -1,21 +1,33 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmaxnma.f16 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo (float16x8_t a, float16x8_t b) > { > return vmaxnmaq_f16 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxnma.f16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmaxnma.f16 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo1 (float16x8_t a, float16x8_t b) > { > return vmaxnmaq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxnma.f16" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c > index 94fc3a2aa28..527466fc131 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c > @@ -1,21 +1,33 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmaxnma.f32 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo (float32x4_t a, float32x4_t b) > { > return vmaxnmaq_f32 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxnma.f32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmaxnma.f32 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo1 (float32x4_t a, float32x4_t b) > { > return vmaxnmaq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxnma.f32" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c > index b2e82f5464c..39c68cdc172 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c > @@ -1,22 +1,41 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmat.f16 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo (float16x8_t a, float16x8_t b, mve_pred16_t p) > { > return vmaxnmaq_m_f16 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxnmat.f16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmat.f16 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) > { > return vmaxnmaq_m (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c > index 8fa7344b054..f6f8bf07549 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c > @@ -1,22 +1,41 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmat.f32 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo (float32x4_t a, float32x4_t b, mve_pred16_t p) > { > return vmaxnmaq_m_f32 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxnmat.f32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmat.f32 q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) > { > return vmaxnmaq_m (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c > index 6d8cf19a341..4c1f20be036 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c > @@ -1,9 +1,16 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmaxnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > foo (float16_t a, float16x8_t b) > { > @@ -11,18 +18,28 @@ foo (float16_t a, float16x8_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > foo1 (float16_t a, float16x8_t b) > { > return vmaxnmavq (a, b); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmaxnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > -foo2 (float32_t a, float16x8_t b) > +foo2 (float16x8_t b) > { > - return vmaxnmavq (a, b); > + return vmaxnmavq (1.1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxnmav.f16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c > index ef79030d8eb..86087335cea 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c > @@ -1,9 +1,16 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmaxnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > foo (float32_t a, float32x4_t b) > { > @@ -11,18 +18,28 @@ foo (float32_t a, float32x4_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > foo1 (float32_t a, float32x4_t b) > { > return vmaxnmavq (a, b); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmaxnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > -foo2 (float16_t a, float32x4_t b) > +foo2 (float32x4_t b) > { > - return vmaxnmavq (a, b); > + return vmaxnmavq (1.1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxnmav.f32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.= c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c > index f7f39f59dad..a4973567d5e 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c > @@ -1,9 +1,20 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > foo (float16_t a, float16x8_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > foo1 (float16_t a, float16x8_t b, mve_pred16_t p) > { > return vmaxnmavq_p (a, b, p); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > -foo2 (float32_t a, float16x8_t b, mve_pred16_t p) > +foo2 (float16x8_t b, mve_pred16_t p) > { > - return vmaxnmavq_p (a, b, p); > + return vmaxnmavq_p (1.1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxnmavt.f16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.= c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c > index 341f6254a5a..b229cb3a322 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c > @@ -1,9 +1,20 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > foo (float32_t a, float32x4_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > foo1 (float32_t a, float32x4_t b, mve_pred16_t p) > { > return vmaxnmavq_p (a, b, p); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > -foo2 (float16_t a, float32x4_t b, mve_pred16_t p) > +foo2 (float32x4_t b, mve_pred16_t p) > { > - return vmaxnmavq_p (a, b, p); > + return vmaxnmavq_p (1.1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxnmavt.f32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c > index 59a8070e07b..faf968ebb21 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c > @@ -1,21 +1,33 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmaxnm.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo (float16x8_t a, float16x8_t b) > { > return vmaxnmq_f16 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxnm.f16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmaxnm.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo1 (float16x8_t a, float16x8_t b) > { > return vmaxnmq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxnm.f16" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c > index 5db42bd4b8c..f7ee01b1f14 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c > @@ -1,21 +1,33 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmaxnm.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo (float32x4_t a, float32x4_t b) > { > return vmaxnmq_f32 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxnm.f32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmaxnm.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo1 (float32x4_t a, float32x4_t b) > { > return vmaxnmq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmaxnm.f32" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c > index 4668fd03c9d..ee3444393ed 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c > @@ -1,23 +1,41 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) > { > return vmaxnmq_m_f16 (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxnmt.f16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p= ) > { > return vmaxnmq_m (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxnmt.f16" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c > index 9e8ccbc84b7..5d434432856 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c > @@ -1,23 +1,41 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) > { > return vmaxnmq_m_f32 (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxnmt.f32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p= ) > { > return vmaxnmq_m (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxnmt.f32" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c > index ecca6069d22..dad76734fd8 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c > @@ -1,22 +1,41 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo (float16x8_t a, float16x8_t b, mve_pred16_t p) > { > return vmaxnmq_x_f16 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxnmt.f16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float16x8_t > foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) > { > return vmaxnmq_x (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c > index c3965dda4f1..2fe8c0d4f3d 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c > @@ -1,22 +1,41 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo (float32x4_t a, float32x4_t b, mve_pred16_t p) > { > return vmaxnmq_x_f32 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxnmt.f32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > float32x4_t > foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) > { > return vmaxnmq_x (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c > index 80bd1d4cda1..9787cc1ba90 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c > @@ -1,9 +1,16 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmaxnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > foo (float16_t a, float16x8_t b) > { > @@ -11,18 +18,28 @@ foo (float16_t a, float16x8_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > foo1 (float16_t a, float16x8_t b) > { > return vmaxnmvq (a, b); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmaxnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > -foo2 (float32_t a, float16x8_t b) > +foo2 (float16x8_t b) > { > - return vmaxnmvq (a, b); > + return vmaxnmvq (1.1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxnmv.f16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c > index bb2fc46f88a..b1191876850 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c > @@ -1,9 +1,16 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmaxnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > foo (float32_t a, float32x4_t b) > { > @@ -11,18 +18,28 @@ foo (float32_t a, float32x4_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > foo1 (float32_t a, float32x4_t b) > { > return vmaxnmvq (a, b); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmaxnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > -foo2 (float16_t a, float32x4_t b) > +foo2 (float32x4_t b) > { > - return vmaxnmvq (a, b); > + return vmaxnmvq (1.1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxnmv.f32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c > index 3efe203007b..0b1740d5ed2 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c > @@ -1,9 +1,20 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > foo (float16_t a, float16x8_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > foo1 (float16_t a, float16x8_t b, mve_pred16_t p) > { > return vmaxnmvq_p (a, b, p); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float16_t > -foo2 (float32_t a, float16x8_t b, mve_pred16_t p) > +foo2 (float16x8_t b, mve_pred16_t p) > { > - return vmaxnmvq_p (a, b, p); > + return vmaxnmvq_p (1.1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxnmvt.f16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c > index 6c13247f1f1..ca6ad91d24d 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c > @@ -1,9 +1,20 @@ > /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ > /* { dg-add-options arm_v8_1m_mve_fp } */ > /* { dg-additional-options "-O2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ >=20 > #include "arm_mve.h" >=20 > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > foo (float32_t a, float32x4_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > foo1 (float32_t a, float32x4_t b, mve_pred16_t p) > { > return vmaxnmvq_p (a, b, p); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > float32_t > -foo2 (float16_t a, float32x4_t b, mve_pred16_t p) > +foo2 (float32x4_t b, mve_pred16_t p) > { > - return vmaxnmvq_p (a, b, p); > + return vmaxnmvq_p (1.1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxnmvt.f32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c > index 2791ed4c562..548824fc58a 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c > @@ -1,23 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int16x8_t > foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) > { > return vmaxq_m_s16 (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int16x8_t > foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) > { > return vmaxq_m (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s16" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c > index 27f7d5d7b16..e935729b47d 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c > @@ -1,23 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int32x4_t > foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) > { > return vmaxq_m_s32 (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int32x4_t > foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) > { > return vmaxq_m (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s32" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c > index 23b7569f720..8028fa031c7 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c > @@ -1,23 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int8x16_t > foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) > { > return vmaxq_m_s8 (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int8x16_t > foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) > { > return vmaxq_m (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s8" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c > index 61e51e3b830..e872f9e72f8 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c > @@ -1,23 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) > { > return vmaxq_m_u16 (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) > { > return vmaxq_m (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u16" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c > index 23df7eeaed6..76606555881 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c > @@ -1,23 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) > { > return vmaxq_m_u32 (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) > { > return vmaxq_m (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u32" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c > index 138d5c87894..7ade467cafd 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c > @@ -1,23 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) > { > return vmaxq_m_u8 (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) > { > return vmaxq_m (inactive, a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u8" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c > index a42fc82a852..bf547a2420d 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmax.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int16x8_t > foo (int16x8_t a, int16x8_t b) > { > return vmaxq_s16 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.s16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmax.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int16x8_t > foo1 (int16x8_t a, int16x8_t b) > { > return vmaxq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.s16" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c > index 14c094a5d11..25bb950c0bf 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmax.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int32x4_t > foo (int32x4_t a, int32x4_t b) > { > return vmaxq_s32 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.s32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmax.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int32x4_t > foo1 (int32x4_t a, int32x4_t b) > { > return vmaxq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.s32" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c > index 0540a27bae9..33057f1a58e 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmax.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int8x16_t > foo (int8x16_t a, int8x16_t b) > { > return vmaxq_s8 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.s8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmax.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int8x16_t > foo1 (int8x16_t a, int8x16_t b) > { > return vmaxq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.s8" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c > index 6b9b5a73bcd..7717a9a5057 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmax.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo (uint16x8_t a, uint16x8_t b) > { > return vmaxq_u16 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmax.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint16x8_t a, uint16x8_t b) > { > return vmaxq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.u16" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c > index 3112302bf1a..36b5c276cfe 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmax.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32x4_t a, uint32x4_t b) > { > return vmaxq_u32 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmax.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32x4_t a, uint32x4_t b) > { > return vmaxq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.u32" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c > index b1baa5083bd..e643e5f3e3c 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c > @@ -1,21 +1,33 @@ > /* { 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: > +** ... > +** vmax.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo (uint8x16_t a, uint8x16_t b) > { > return vmaxq_u8 (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmax.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint8x16_t a, uint8x16_t b) > { > return vmaxq (a, b); > } >=20 > -/* { dg-final { scan-assembler "vmax.u8" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c > index 9d92f2ccd85..a32feb0d7cd 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int16x8_t > foo (int16x8_t a, int16x8_t b, mve_pred16_t p) > { > return vmaxq_x_s16 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int16x8_t > foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) > { > return vmaxq_x (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c > index 200fd4b1bb1..3ac1994c4f8 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int32x4_t > foo (int32x4_t a, int32x4_t b, mve_pred16_t p) > { > return vmaxq_x_s32 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int32x4_t > foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) > { > return vmaxq_x (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c > index 2fe752558b9..c9ba33d1504 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int8x16_t > foo (int8x16_t a, int8x16_t b, mve_pred16_t p) > { > return vmaxq_x_s8 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.s8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > int8x16_t > foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) > { > return vmaxq_x (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c > index 967622e331c..954a9e2f02a 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) > { > return vmaxq_x_u16 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u16" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint16x8_t > foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) > { > return vmaxq_x (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c > index 56b5d8fa8b8..022d418af84 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) > { > return vmaxq_x_u32 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u32" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32x4_t > foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) > { > return vmaxq_x (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c > index 1816f959dd7..7e1687a8b72 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c > @@ -1,22 +1,41 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) > { > return vmaxq_x_u8 (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > -/* { dg-final { scan-assembler "vmaxt.u8" } } */ >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint8x16_t > foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) > { > return vmaxq_x (a, b, p); > } >=20 > -/* { dg-final { scan-assembler "vpst" } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c > index 657efc51bea..a97703eb58c 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxvt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int16_t > foo (int16_t a, int16x8_t b, mve_pred16_t p) > { > @@ -11,18 +22,20 @@ foo (int16_t a, int16x8_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int16_t > foo1 (int16_t a, int16x8_t b, mve_pred16_t p) > { > return vmaxvq_p (a, b, p); > } >=20 > - > -int16_t > -foo2 (int8_t a, int16x8_t b, mve_pred16_t p) > -{ > - return vmaxvq_p (a, b, p); > -} > - > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxvt.s16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c > index 5882351c0fa..b4bddcb8312 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxvt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int32_t > foo (int32_t a, int32x4_t b, mve_pred16_t p) > { > @@ -11,18 +22,20 @@ foo (int32_t a, int32x4_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int32_t > foo1 (int32_t a, int32x4_t b, mve_pred16_t p) > { > return vmaxvq_p (a, b, p); > } >=20 > - > -int32_t > -foo2 (int16_t a, int32x4_t b, mve_pred16_t p) > -{ > - return vmaxvq_p (a, b, p); > -} > - > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxvt.s32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c > index 3737ecd3307..ee8c3e9155f 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxvt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int8_t > foo (int8_t a, int8x16_t b, mve_pred16_t p) > { > @@ -11,18 +22,20 @@ foo (int8_t a, int8x16_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int8_t > foo1 (int8_t a, int8x16_t b, mve_pred16_t p) > { > return vmaxvq_p (a, b, p); > } >=20 > - > -int8_t > -foo2 (int32_t a, int8x16_t b, mve_pred16_t p) > -{ > - return vmaxvq_p (a, b, p); > -} > - > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxvt.s8" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c > index 348cf39caa0..906adf85936 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > foo (uint16_t a, uint16x8_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (uint16_t a, uint16x8_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > foo1 (uint16_t a, uint16x8_t b, mve_pred16_t p) > { > return vmaxvq_p (a, b, p); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > -foo2 (uint32_t a, uint16x8_t b, mve_pred16_t p) > +foo2 (uint16x8_t b, mve_pred16_t p) > { > - return vmaxvq_p (a, b, p); > + return vmaxvq_p (1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxvt.u16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c > index f2e976216c5..acc5367c5a2 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, uint32x4_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (uint32_t a, uint32x4_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, uint32x4_t b, mve_pred16_t p) > { > return vmaxvq_p (a, b, p); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > -foo2 (uint8_t a, uint32x4_t b, mve_pred16_t p) > +foo2 (uint32x4_t b, mve_pred16_t p) > { > - return vmaxvq_p (a, b, p); > + return vmaxvq_p (1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxvt.u32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c > index 7df5b63c9bc..358cb40f829 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c > @@ -1,9 +1,20 @@ > /* { 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(?: @.*|) > +** ... > +** vmaxvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > foo (uint8_t a, uint8x16_t b, mve_pred16_t p) > { > @@ -11,18 +22,36 @@ foo (uint8_t a, uint8x16_t b, mve_pred16_t p) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > foo1 (uint8_t a, uint8x16_t b, mve_pred16_t p) > { > return vmaxvq_p (a, b, p); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vmaxvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > -foo2 (uint16_t a, uint8x16_t b, mve_pred16_t p) > +foo2 (uint8x16_t b, mve_pred16_t p) > { > - return vmaxvq_p (a, b, p); > + return vmaxvq_p (1, b, p); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxvt.u8" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c > index 8412452cf33..485355a7d72 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxv.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int16_t > foo (int16_t a, int16x8_t b) > { > @@ -11,18 +18,16 @@ foo (int16_t a, int16x8_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxv.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int16_t > foo1 (int16_t a, int16x8_t b) > { > return vmaxvq (a, b); > } >=20 > - > -int16_t > -foo2 (int8_t a, int16x8_t b) > -{ > - return vmaxvq (a, b); > -} > - > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxv.s16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c > index 09f4909c9a8..3b9075689a0 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxv.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int32_t > foo (int32_t a, int32x4_t b) > { > @@ -11,18 +18,16 @@ foo (int32_t a, int32x4_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxv.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int32_t > foo1 (int32_t a, int32x4_t b) > { > return vmaxvq (a, b); > } >=20 > - > -int32_t > -foo2 (int16_t a, int32x4_t b) > -{ > - return vmaxvq (a, b); > -} > - > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxv.s32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c > index a087bbc6b64..f13a0168d9d 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxv.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int8_t > foo (int8_t a, int8x16_t b) > { > @@ -11,18 +18,16 @@ foo (int8_t a, int8x16_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxv.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > int8_t > foo1 (int8_t a, int8x16_t b) > { > return vmaxvq (a, b); > } >=20 > - > -int8_t > -foo2 (int32_t a, int8x16_t b) > -{ > - return vmaxvq (a, b); > -} > - > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxv.s8" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c > index 47fe0d1cf0f..6a0fe254043 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > foo (uint16_t a, uint16x8_t b) > { > @@ -11,18 +18,28 @@ foo (uint16_t a, uint16x8_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > foo1 (uint16_t a, uint16x8_t b) > { > return vmaxvq (a, b); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmaxv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint16_t > -foo2 (uint32_t a, uint16x8_t b) > +foo2 (uint16x8_t b) > { > - return vmaxvq (a, b); > + return vmaxvq (1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxv.u16" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c > index aa723daf5dd..eed20046e53 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, uint32x4_t b) > { > @@ -11,18 +18,28 @@ foo (uint32_t a, uint32x4_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, uint32x4_t b) > { > return vmaxvq (a, b); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmaxv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > -foo2 (uint8_t a, uint32x4_t b) > +foo2 (uint32x4_t b) > { > - return vmaxvq (a, b); > + return vmaxvq (1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxv.u32" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c > index 3aae785040c..d44a6d3bb02 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c > @@ -1,9 +1,16 @@ > /* { 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: > +** ... > +** vmaxv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > foo (uint8_t a, uint8x16_t b) > { > @@ -11,18 +18,28 @@ foo (uint8_t a, uint8x16_t b) > } >=20 >=20 > +/* > +**foo1: > +** ... > +** vmaxv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > foo1 (uint8_t a, uint8x16_t b) > { > return vmaxvq (a, b); > } >=20 > - > +/* > +**foo2: > +** ... > +** vmaxv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) > +** ... > +*/ > uint8_t > -foo2 (uint16_t a, uint8x16_t b) > +foo2 (uint8x16_t b) > { > - return vmaxvq (a, b); > + return vmaxvq (1, b); > } >=20 > -/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > -/* { dg-final { scan-assembler-times "vmaxv.u8" 3 } } */ > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > -- > 2.25.1