From patchwork Thu Apr 11 14:28:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Carlotti X-Patchwork-Id: 88373 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6982A385841C for ; Thu, 11 Apr 2024 14:29:04 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2063.outbound.protection.outlook.com [40.107.104.63]) by sourceware.org (Postfix) with ESMTPS id 469AB3858D38 for ; Thu, 11 Apr 2024 14:28:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 469AB3858D38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 469AB3858D38 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.104.63 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1712845700; cv=pass; b=P3PonkuTYGBSaANxtPi5XGNsY+IztptY8PByevlAt56FIFLkXnAtYTepSobCMM2BaOScL6GuitVycqihqU96ho37TbC2q9hPtVWuMZCjP02cwqCv1t7nHlCRdstcgmB5iGmh5nETKocBFbtObQ/cBa+grrUGOdYm29BJJjyc60U= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1712845700; c=relaxed/simple; bh=kFzkDtiktwcS/U4/AGT30jSzR09Mlt8so7GihUUPm/U=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=Km3zrKsse3NFGQHEzSxbQ1BaLN/jUk5zkIRiaJ2Dz3xorodizlExoR4+e4fT+nVkb1O0FnkIbFS87AhgCiKQPM4+KDQjVn0Q8/y5rUlHkwVlVg8N8THywjAIGvXJZCm/hanslEXv5ajZ4DO2tZ8WPwiRF3OdunkEtogTrp0LJPI= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=MV7yoXCPn/igzCQjU7KhQiX10JHVrAF1hvIecIo5B9wUqBUjzd4in0y7cRIfEqu5VRdr+xoqCQUL12PixJpqrexpT1QjVxcbttPur3ug7jtOZedtatFKvhAWbQGYLCb8K+fTBgxs0i+0ALWegcLIudWUjUnSpizs1wPaQVs+nfj+Lrvws8kpZyNe4hdSAFzbgHYCr70XfnLDMpAWeSfIqg9U1zvOBNiBXsaK0WV7i3yvMmVhWp4S2HoV+mkYSD8hOEF7R3DNEjdSxvt4+hzOYWPYxiE+7rztZMWkAMy3673mFMxdtAVDlMz9mK0uEu6PTlh0geXgxHA0p943fMLF9g== ARC-Message-Signature: i=2; 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=pzD1asNZXlft0M8uJ8ET9nM17DkrAMin49bq3f3qpWQ=; b=HkLLYLDfemiCPbUWlzBnikC/kYnkpl7likeF69UqMvqJdTA88k9SDDf7jF5ws/Matv89bra02T8HMdNRr7YHFqziIQ26nfwFSq3XfNi4l+GH1ZEdp2p8I3uU1nglWEmGpDuhxMabh2zb9ZosWUG+j7DIP4dZGRyJdRd3dtKnl1pyZZGTfmog58oaWxBi7wz4FdAVn4OeVUbFhK66uOgHYxSaKC4gawE0L4n7R0lNrpgFeCsGVsdMhJo51m624g50B5oMQczEagpzsRcs+WayFEmW+UNHanm617BzLLnQ0ecvHP8w6OcYWHyGIIcVsiHbj56eRgDhuVoPQb9FD+/ZLw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=pzD1asNZXlft0M8uJ8ET9nM17DkrAMin49bq3f3qpWQ=; b=Yqrm/Ks0L/iFhew70bzpZplnj7LsA+i7fr/vodrEfve4E/LJzITEjWQwxBnks6t3qDLluw8D2rZYzXi+l9kG0VIFWrBKNSAPkILQXMwpyzCtHwysDTbXL88yY/H/ckyd1RSuPiAFD8Pypl2ULxtMz0NG1gltUzrOaATZyJVbG64= Received: from AS4P190CA0005.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::17) by DB4PR08MB9309.eurprd08.prod.outlook.com (2603:10a6:10:3f7::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.53; Thu, 11 Apr 2024 14:28:16 +0000 Received: from AM3PEPF0000A798.eurprd04.prod.outlook.com (2603:10a6:20b:5de:cafe::f4) by AS4P190CA0005.outlook.office365.com (2603:10a6:20b:5de::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.22 via Frontend Transport; Thu, 11 Apr 2024 14:28:16 +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 AM3PEPF0000A798.mail.protection.outlook.com (10.167.16.103) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7452.22 via Frontend Transport; Thu, 11 Apr 2024 14:28:15 +0000 Received: ("Tessian outbound 69494ddfa74f:v300"); Thu, 11 Apr 2024 14:28:15 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 80908f313d77c483 X-CR-MTA-TID: 64aa7808 Received: from 9b6502bdd26d.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 0393E708-9C88-439D-9F69-E3AA2BE61D9B.1; Thu, 11 Apr 2024 14:28:09 +0000 Received: from EUR03-AM7-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 9b6502bdd26d.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 11 Apr 2024 14:28:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bkZ0cfXFrP5jaWfZqxgfSiNQKOI/ZULaCAKo8TGMmYwB3ogW6k1tZ0B6OeqOFl1ZnBwNvsVo305kGT0yirJ/PRKcyuei7QjQtx/hO2dosWcVXJOU4Y2MvAFoevp3b2cy+2OpWg8cuL3zx/zORpabdmcN4m82akd6cJGgrVVY6/ceb7qhJ3qdISSVMzX+u0CRbP5y5LlQifC+3N3Z2hbiInIKdcDx9mGTCqJgVxgEGaxlj+fV3W5roEHbvGYeclGyAKpYca3S9NjRd24k+7hi15O+oNuHTMgSqfgl+i+C2zIIJzgMHE4fOxdzJEB7E+e7ZLtMEwLsBWsqI7xBusBtag== 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=pzD1asNZXlft0M8uJ8ET9nM17DkrAMin49bq3f3qpWQ=; b=H/r8TAufVWFF9VplPfE7MkldTcH4L9PcyPUoVyQeRPbN03fCPwbhtPu5MN9s7InIm0bYs40opLxTMv9ZBtWGlVpQAUo7ytEhhc/OKkq3gouv5H/SX5JWta7fjlWj/f3ioqdL2F2Izuic7JfIahgR+n9FJwQPlndwvTf0fLR0YJqx/TpU26IEP7xltzlcqBEGfdwrQxLzXE6oxgaO7XCEw0PDoTvbfP5x1EBHQ1iK2ZGVwlpF9XLxyL49veS+4Y5hJ8tISss+juoZC18POhtje+yYRB+VXfxum+zSd8oUfJaCyBw8qXozXuw98MD6uIHmwSY7/Jm+vBnRfwnEuMGOYw== 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=pzD1asNZXlft0M8uJ8ET9nM17DkrAMin49bq3f3qpWQ=; b=Yqrm/Ks0L/iFhew70bzpZplnj7LsA+i7fr/vodrEfve4E/LJzITEjWQwxBnks6t3qDLluw8D2rZYzXi+l9kG0VIFWrBKNSAPkILQXMwpyzCtHwysDTbXL88yY/H/ckyd1RSuPiAFD8Pypl2ULxtMz0NG1gltUzrOaATZyJVbG64= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from PAXPR08MB6686.eurprd08.prod.outlook.com (2603:10a6:102:13e::8) by GVXPR08MB10499.eurprd08.prod.outlook.com (2603:10a6:150:152::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Thu, 11 Apr 2024 14:28:07 +0000 Received: from PAXPR08MB6686.eurprd08.prod.outlook.com ([fe80::1874:990a:c669:3e9a]) by PAXPR08MB6686.eurprd08.prod.outlook.com ([fe80::1874:990a:c669:3e9a%7]) with mapi id 15.20.7409.042; Thu, 11 Apr 2024 14:28:07 +0000 Date: Thu, 11 Apr 2024 15:28:05 +0100 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org Cc: Richard Sandiford , Richard Earnshaw Subject: [committed 2/5 v2] aarch64: Fix FMV array iteration bounds Message-ID: References: Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: LNXP265CA0072.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5d::36) To PAXPR08MB6686.eurprd08.prod.outlook.com (2603:10a6:102:13e::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PAXPR08MB6686:EE_|GVXPR08MB10499:EE_|AM3PEPF0000A798:EE_|DB4PR08MB9309:EE_ X-MS-Office365-Filtering-Correlation-Id: f5744c92-9126-4601-f593-08dc5a33a05b 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: U6hImZirOg3OB/KeaaBXKXnaTE6iqzROrku8we5YsVnhh+o0bz+MI5WXLe3PoQhsj7KRs6VQWvqwxWA5iSdoirm82jYv7fijNDVKT6k8G2BnLXykeDpHm8PBuiVBvM+ETUW6yl9pZ4rKFWB1XH+i1MeL9V4Uxg21PuFEmuPm0dm8btxMAs9vqnJQpTJs+7Ymm5EBefoDwgO1cBOkMKlD/Ns6SYiiyT8tTkA9/L/d46TXcXunHRb8irIBfAfDOojCRHsi3AgnZZ9bSohgeaB0fp0bbrmQAIt7tmaWflUMFIdB+q70hVhAvEBr2m9CEaMV4XXp46xVoZU244Ot+j3bSY9t/H6AiB/dMrgauyU6AFiia/5sPazM7watmQGhrxPtWjxqbhfsU674Rrcn3RANCsW5fBMBjrAfRzHl9TOfJF3m3YGaCBuTesXYu804DGbdmTXKrq2i/3X3HbKmDwnMzfIlGCyn04DnPepi9fRwCK71tykR3w8yscVjkoRRWoZZrF95By4PlUlvYVsbP3Nw4Mc5K5BQB/W9DFf0x4BVNT6YuVe9tAlZPFBMG0YlOek5iHsFM6IM5mebeJuW64B5GAGBXEago5Hmz9HFWpaPX4knbltf20kNly8LxyYnlARArSTZZJLlIGamqaUjCUZexX4C0TAPmH5pRKMuRu0Fpu0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB6686.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(366007); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10499 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: AM3PEPF0000A798.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 285387de-1210-4014-41ca-08dc5a339b5c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bVfGcvZWmmMZuwPe+d7H1x3pfq5aNqwxg1daG0aCotwrKx1FLaX6ckFJbijAJ4G9G+kNLjFSZjqtBdIpGDvywhGh/sKLEezm0yODeaeFT54pcN+FkAtYhyi3wsyqJxAEQs/ePUvMShKAD2jtl5umCKzWEPoqCL1Wj9mq1KWFWsvSjsf2R3yhNmdtavPC7zwkCfKjURUB6KXQmK4zxVfYI2uO3yluNf959Bd7qwxNCNEzrmChHy9uUX10Mynma7J3zMYB9Eli0LUEDKGzjm4YNbtZQV4QZPpD97ekUxmrdMOfQHNtnGb6TlZ+pha1ZHoDVBtGEN4IL8t8vloTZj38kFQuoqr73K+Nym2Em/t1HrSh9k39mcKVvWD0JAla3QXOG9PQw/43NnFEmdBms17i4NYIOX0cdir5LECDWhp3Tg97yXBTuzadb/K/5SPTsbP9qMFTRfVNUvbEr2R6QxzfhDWQPgbmqcYhsYURu9U8ETBHh4CB7YfCFsjH/JSerXp4Hkj3/E6UA/4pncardwzZeWCxh7J5y/vTnQqj7QYj9YpF2CeaWYTglszvPYBfnP8Zh8IqViyfuFd1X/FdIFs9ImdzQbmwMJRBNOOFRTZbLcEG/QET1Gjd58Pvs2HlDhVr4G4TxbxnHGCEXoP44GMimkix5ZzGRpl5BsWgfC466o/H9YZJVtosCEg3WLACLn9yV8LyGUEacN/D5fwdRM6nunRrYqkOVyyhjoIFNfLGxZojhVkOKYS1RzUyfrWWqPyo 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:(13230031)(82310400014)(36860700004)(376005)(1800799015); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2024 14:28:15.9512 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f5744c92-9126-4601-f593-08dc5a33a05b 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: AM3PEPF0000A798.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB9309 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org There was an assumption in some places that the aarch64_fmv_feature_data array contained FEAT_MAX elements. While this assumption held up till now, it is safer and more flexible to use the array size directly. Also fix the lower bound in compare_feature_masks to use ">=0" instead of ">0", and add a test using the features at index 0 and 1. However, the test already passed, because the earlier popcount check makes it impossible to reach the loop if the masks differ in exactly one location. gcc/ChangeLog: * config/aarch64/aarch64.cc (compare_feature_masks): Use ARRAY_SIZE and >=0 for iteration bounds. (aarch64_mangle_decl_assembler_name): Use ARRAY_SIZE. gcc/testsuite/ChangeLog: * g++.target/aarch64/mv-1.C: New test. diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 1ea84c8bd7386e399f6ffa3a5e36408cf8831fc6..4f708213551523b4af966ac8521754df5eb6bf3c 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -19700,7 +19700,7 @@ aarch64_parse_fmv_features (const char *str, aarch64_feature_flags *isa_flags, if (len == 0) return AARCH_PARSE_MISSING_ARG; - static const int num_features = ARRAY_SIZE (aarch64_fmv_feature_data); + int num_features = ARRAY_SIZE (aarch64_fmv_feature_data); int i; for (i = 0; i < num_features; i++) { @@ -19899,7 +19899,8 @@ compare_feature_masks (aarch64_fmv_feature_mask mask1, auto diff_mask = mask1 ^ mask2; if (diff_mask == 0ULL) return 0; - for (int i = FEAT_MAX - 1; i > 0; i--) + int num_features = ARRAY_SIZE (aarch64_fmv_feature_data); + for (int i = num_features - 1; i >= 0; i--) { auto bit_mask = aarch64_fmv_feature_data[i].feature_mask; if (diff_mask & bit_mask) @@ -19982,7 +19983,8 @@ aarch64_mangle_decl_assembler_name (tree decl, tree id) name += "._"; - for (int i = 0; i < FEAT_MAX; i++) + int num_features = ARRAY_SIZE (aarch64_fmv_feature_data); + for (int i = 0; i < num_features; i++) { if (feature_mask & aarch64_fmv_feature_data[i].feature_mask) { diff --git a/gcc/testsuite/g++.target/aarch64/mv-1.C b/gcc/testsuite/g++.target/aarch64/mv-1.C new file mode 100644 index 0000000000000000000000000000000000000000..b4b0e5e3fea0ed481de1918d30cd8248bb4f7ab5 --- /dev/null +++ b/gcc/testsuite/g++.target/aarch64/mv-1.C @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-require-ifunc "" } */ +/* { dg-options "-O0" } */ + +__attribute__((target_version("default"))) +int foo () +{ + return 1; +} + +__attribute__((target_version("rng"))) +int foo () +{ + return 1; +} + +__attribute__((target_version("flagm"))) +int foo () +{ + return 1; +} + +__attribute__((target_version("rng+flagm"))) +int foo () +{ + return 1; +} + +int bar() +{ + return foo (); +} + +/* Check usage of the first two FMV features, in case of off-by-one errors. */ +/* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._Mrng:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._MrngMflagm:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._Mflagm:\n" 1 } } */