From patchwork Wed Dec 13 14:58:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Carlotti X-Patchwork-Id: 1875682 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=Cn3eDxjf; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=Cn3eDxjf; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SqzCV6JSWz20LX for ; Thu, 14 Dec 2023 01:59:18 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8D067385C6E0 for ; Wed, 13 Dec 2023 14:59:16 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2049.outbound.protection.outlook.com [40.107.8.49]) by sourceware.org (Postfix) with ESMTPS id DDEBE3858019 for ; Wed, 13 Dec 2023 14:59:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DDEBE3858019 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 DDEBE3858019 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.8.49 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1702479544; cv=pass; b=KMpviEOJVwUTXHTiPhHIiQ76P5W/Ix1CazbWvPHoaj+dIFF/2xMMik45JcnI7kbZhu/2pQqvGqlUDPgoEsSJA7QKhJMPYRL6/gggVLPlscs76zeI+HlEtAX9gXNgpZS5EVWL8IEXDOPkQBoHz1ks+zltcxW3kidxIzx4TjlmrWs= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1702479544; c=relaxed/simple; bh=4Tag/jiBtIR1Q4kLc25JCqruA+H2ifklnqzgz9+2GC8=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=v7oXwD0MRgQ/V5ybOmBQkOqb5plSC9WqK+czYy4EuMLKxNefqEFWzq2kDItmvw2HzGYT1yxlZZYd26bR6X9ObdGFljFSAWJM+mewXT0vWYRZLX4E+Hqjm8s1MmwJJ+djDkE07is1eEp3KJ2nWL+vmi0ypcIJ4yNJmzt5+hxAJic= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=S2VnbCqhuaJeQlo+lgFrmGU+JjkKWO8B252N/IpWZmm7p5SbOwZenOEiK83T98dmNU2pmlwN2ifdU2+cZDKXLe4LNlaIoIbMzfKRKF5Y8e/vKr7Ws7Z2skMF4XchO2BnpxEJ3UJhVD2msTCnFkogDbuUA7x6SreZGvYZRrennwrNy6Km1vjk+2oz4Uh+eqNvEiXZcLgmmSPfoqugcHw/j8wKUTbAljEIsBiDn0psvqxwrh845liZafwkx9xVQJAFNjy5TPLxACZNwt3xncmu1kGE+2ScVVgU7Fe05czNvEkRSQ1SKClSti//GtcLLb1FNSjhTRx6kg7ByMT+pEi0rg== 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=hdT8u6ovp03YnsEcm7QqOdGkaJ/4Sva+OoojpXAthL4=; b=HsA49QdNAneacL8RhVBpmY9dU0BGm4xpeznH1y3ySlneth4C2rjsys3Dy3YTmat9Ps7vak102m241NySy9ZlCXxJskMZJx8YHipQlK4ufbgROrjWPXxDSrkaNW3AWZDGFK6p4VTvgIfabCaHrmw53ZMdWQZdGvwhx4cnXt3MAs5pq1MhyGyOuY6F5ZBAeNifOkh8MX5+awTtYF6ON9sxRR/TQq2NuLNSuw+NVGj5i4gUuaR5qGs9YsZaVz/JZBHipYQdAASmaIjJ51KLQOCTZM0SDYhu87DiJX5Q9rBElPgdnkKhNCVlLJOzrO16ijDWX8X/u+0j0QXlaZX4vymCQA== 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=hdT8u6ovp03YnsEcm7QqOdGkaJ/4Sva+OoojpXAthL4=; b=Cn3eDxjftCvKDNykRa2JinBALQD/oU0YVzxpPAas+0Vv4kK2jCOz6CYtlIeEXcNA3ahPYcQJCRxz8RVBHcBKNJ0dmf201tIGYyPd4XSkrM360EaW+IeibBTLEAW7w86NnwZsVra0wUMPBk/nZh6yDXOF6sdj+9RSnPdC5sskm2g= Received: from DU2P251CA0018.EURP251.PROD.OUTLOOK.COM (2603:10a6:10:230::21) by AS2PR08MB10083.eurprd08.prod.outlook.com (2603:10a6:20b:647::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26; Wed, 13 Dec 2023 14:58:59 +0000 Received: from DU6PEPF0000B61D.eurprd02.prod.outlook.com (2603:10a6:10:230:cafe::6b) by DU2P251CA0018.outlook.office365.com (2603:10a6:10:230::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.33 via Frontend Transport; Wed, 13 Dec 2023 14:58:59 +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 DU6PEPF0000B61D.mail.protection.outlook.com (10.167.8.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Wed, 13 Dec 2023 14:58:59 +0000 Received: ("Tessian outbound 5d213238733f:v228"); Wed, 13 Dec 2023 14:58:59 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 002673c89da10b7f X-CR-MTA-TID: 64aa7808 Received: from 8b56a2c4fa4e.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8B405D45-3E60-4E21-B6B2-B00DCA69A268.1; Wed, 13 Dec 2023 14:58:53 +0000 Received: from EUR02-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 8b56a2c4fa4e.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 13 Dec 2023 14:58:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H9J9r3OMWcq2Q8L3OTnBSqIGRTXgFVuSbu7iEBQDzia16ZnQ19uW8W7ztYv1JaSwlZawL3tOvtZT95vnfKRHf1+F+V8QBtarSBtlBm8vcymRRHR8xOHDtQogin9ZszbTi97Wz+rXMi3zxqq8GTKcPHrXwHGDrnUwe116v9OVVX3QgtW9mBDR3hrPue/KTxM/HLWFVCJUdSFgGQm0E2Mj4YsFDoLldi7AbsjRbmSZrPeiUI8RAf6cD7yoSOQLoDX8oJ7YpKKkRME2iXmGy/x1fNG7au6IaDBfrHlwMDHi1WZ0mkwo/eIKu/qg0qecnu6pTmLcGLdsZovUUZzIuivX+Q== 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=hdT8u6ovp03YnsEcm7QqOdGkaJ/4Sva+OoojpXAthL4=; b=JGrNe1l8U1WXEanpF60WjE/3aQmGwZziztO5bWKaPRn9MbJEJT+pJmdsD+Up8zPj+iyQ3jIXYO2e8nciJROlcfvB46aCaVhXwSRUU1FRwN8vB0uHIuNenAlCkk712kKrnZg0ms1OamN1LmkUYIM7VyVGl/vJmvNYyBaDUmSP6EzvcIntJXodH8nasqyakDFDkgq4q0IRoYUi/5vXc2xfkTluKOg27lqKCkXhKwryJYKFwphZyjd7JTBve2jdj0MyoQj/ang6OkSbUUyBAhla0cnDPOaN//ol7dLeqHC8NENeqSvoNMh9Y6sbOVQZsG1To6fgbLD6trQQfFMUOTz/RQ== 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=hdT8u6ovp03YnsEcm7QqOdGkaJ/4Sva+OoojpXAthL4=; b=Cn3eDxjftCvKDNykRa2JinBALQD/oU0YVzxpPAas+0Vv4kK2jCOz6CYtlIeEXcNA3ahPYcQJCRxz8RVBHcBKNJ0dmf201tIGYyPd4XSkrM360EaW+IeibBTLEAW7w86NnwZsVra0wUMPBk/nZh6yDXOF6sdj+9RSnPdC5sskm2g= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) by PAWPR08MB8983.eurprd08.prod.outlook.com (2603:10a6:102:340::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26; Wed, 13 Dec 2023 14:58:49 +0000 Received: from AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2]) by AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2%7]) with mapi id 15.20.7091.022; Wed, 13 Dec 2023 14:58:49 +0000 Date: Wed, 13 Dec 2023 14:58:45 +0000 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org Subject: [PATCH v2] aarch64: Fix +nopredres, +nols64 and +nomops Message-ID: References: Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: LO0P265CA0014.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:355::16) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|PAWPR08MB8983:EE_|DU6PEPF0000B61D:EE_|AS2PR08MB10083:EE_ X-MS-Office365-Filtering-Correlation-Id: a191b70d-f808-4e8a-88f0-08dbfbec098e 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: OgtNl/kTVbvuGiu3/3LEFuoJe8ER/qK8CV4Y6D3KjdRJ/8LLIwMYmHjJpZLuH719EsxtbksMD4aK3APmNXutuy3Agtq+tSQdnX1VqM0prbq4wZuLoHkMeCq+3I50hj2EQfseaBGVQzZ+2Qypip9l21m0mbq+VSZIrJxILQw4lKjUlhLJWn+LYRi4m2RV/07TozdQ9BueuZbOJmYsYTUIKEGTTnGpV55lq/W/5+oVhcCfBaqzzqygn8RAPCdOaF++GG4qOp+EbmbhQHbTrGqItYMKwXrLVugx3UnfDScel9pvOJPOz5dAe4OZ643e3B1XofoZh6UaG4b8UwKFHJOXqL6kIjrl4IhubCMinDcOSP0gJMYOkbAXXUEEjrV3bpX4ZncgPNkEaBGqcvVcK6GEJ4K7HEaWG6qpErL41V/9llMebKYdu7iZvtRvuY4sV2URBzNb+XBZDOrVt7uZwl3ooQbZc4lp8FSABVbLwSrc05cSU4yAWc1xvSeVN9MtX4iz/0cRpJeLioUt9HZ/lY6OHP9zbd2bvgbx6EVGDWFSHYk= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB6678.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(396003)(376002)(366004)(136003)(346002)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(26005)(6666004)(6506007)(83380400001)(6512007)(5660300002)(44832011)(478600001)(41300700001)(2906002)(6486002)(316002)(66946007)(8676002)(6916009)(66476007)(66556008)(8936002)(31696002)(86362001)(38100700002)(84970400001)(31686004); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB8983 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: DU6PEPF0000B61D.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4d0cd728-3547-4ac6-ceab-08dbfbec035d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Vy1Xqapy3dtY81r6TLA7jQijbejIug7r6K2/c3XDQ31de2Mp36ljx4YWoEB7INy4GzIDrIZTSn1QXjL5euzDHA97TcWcb2hAwuESIWp2PoMgX+1cz/H2P1oE5UX6u6OeGAUJo5lBIGaHRglaIewOdMF6Da+WeVLU0lzTdaFJiuxv0DT18dkHBnX//ypW7HpKjDNWh9SHvPbNLinvHpiA7jY1Gi3SMkymB2fBiXLbZ/uAxo1tbrwBoAwUpDpjTNV0ppPEudxxV2sY4efQ4yVAv/lIOuPTQmR9SQkQmndJ8lZECEkr5uDHaCMsX5eDxCbIU+0oSdYP5sON991/41nQno9D7UATMOjWedb4C4gTb2816M39dNqTPxUqnxcIkDYjJVJQJwCJZ6d7SpMu/VfgciXo8c+dKjxjPCDYa19BTu+NZiG0ZGNK5gzwJoh/UXvcnHBfxRKB0NjbIQW94JdCKTDU+iuEOYAf5gRgHj1yn54vP4uRwJqNmJut6QGUMSxxDMgvf6mf89zXoqw6a1rQebMSx0ynCvr0vB2I/tsS/mDrK9IF+hV2RdQIkmNPshTb/4vOiqh0nB+bCMR07Q8AOane4FNnDIHPGlq/aepObOwmztPJZ14+pjyix6p4ZDNPm4wRy7XvAEfpsFhGNXMR2NSN0sXtzpqzIgfWjvM0rNobU3Jw3VqYtjW17h9X2aAmmSh+NToUHqA9ROXiqWQ+2t/pe6ZyZS6hN5NB1q4z5Ck= 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)(4636009)(376002)(396003)(346002)(39860400002)(136003)(230922051799003)(186009)(64100799003)(82310400011)(1800799012)(451199024)(36840700001)(40470700004)(46966006)(31686004)(84970400001)(40480700001)(26005)(336012)(40460700003)(82740400003)(81166007)(86362001)(31696002)(356005)(47076005)(6512007)(83380400001)(44832011)(70586007)(5660300002)(36860700001)(6506007)(6666004)(70206006)(316002)(6486002)(8676002)(8936002)(6916009)(41300700001)(2906002)(478600001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2023 14:58:59.4246 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a191b70d-f808-4e8a-88f0-08dbfbec098e 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: DU6PEPF0000B61D.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB10083 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org On Sat, Dec 09, 2023 at 07:22:49PM +0000, Richard Sandiford wrote: > Andrew Carlotti writes: > > ... > > This is the only use of native_detect_p, so it'd be good to remove > the field itself. Done > > ... > > > > @@ -447,6 +451,13 @@ host_detect_local_cpu (int argc, const char **argv) > > if (tune) > > return res; > > > > + if (!processed_exts) > > + goto not_found; > > Could you explain this part? It seems like more of a parsing change > (i.e. being more strict about what we accept). > > If that's the intention, it probably belongs in: > > if (n_cores == 0 > || n_cores > 2 > || (n_cores == 1 && n_variants != 1) > || imp == INVALID_IMP) > goto not_found; > > But maybe it should be a separate patch. I added it because I realised that the parsing behaviour didn't make sense in that case, and my patch happens to change the behaviour as well (the outcome without the check would be no enabled features, whereas previously it would enable only the features with no native detection). I agree that it makes sense to put it with the original check, so I've made that change. > Looks good otherwise, thanks. > > Richard New patch version below, ok for master? --- For native cpu feature detection, certain features have no entry in /proc/cpuinfo, so have to be assumed to be present whenever the detected cpu is supposed to support that feature. However, the logic for this was mistakenly implemented by excluding these features from part of aarch64_get_extension_string_for_isa_flags. This function is also used elsewhere when canonicalising explicit feature sets, which may require removing features that are normally implied by the specified architecture version. This change reenables generation of +nopredres, +nols64 and +nomops during canonicalisation, by relocating the misplaced native cpu detection logic. gcc/ChangeLog: * common/config/aarch64/aarch64-common.cc (struct aarch64_option_extension): Remove unused field. (all_extensions): Ditto. (aarch64_get_extension_string_for_isa_flags): Remove filtering of features without native detection. * config/aarch64/driver-aarch64.cc (host_detect_local_cpu): Explicitly add expected features that lack cpuinfo detection. gcc/testsuite/ChangeLog: * gcc.target/aarch64/options_set_28.c: New test. diff --git a/gcc/common/config/aarch64/aarch64-common.cc b/gcc/common/config/aarch64/aarch64-common.cc index c2a6d357c0bc17996a25ea5c3a40f69d745c7931..4d0431d3a2cad5414790646bce0c09877c0366b2 100644 --- a/gcc/common/config/aarch64/aarch64-common.cc +++ b/gcc/common/config/aarch64/aarch64-common.cc @@ -149,9 +149,6 @@ struct aarch64_option_extension aarch64_feature_flags flags_on; /* If this feature is turned off, these bits also need to be turned off. */ aarch64_feature_flags flags_off; - /* Indicates whether this feature is taken into account during native cpu - detection. */ - bool native_detect_p; }; /* ISA extensions in AArch64. */ @@ -159,10 +156,9 @@ static constexpr aarch64_option_extension all_extensions[] = { #define AARCH64_OPT_EXTENSION(NAME, IDENT, C, D, E, FEATURE_STRING) \ {NAME, AARCH64_FL_##IDENT, feature_deps::IDENT ().explicit_on, \ - feature_deps::get_flags_off (feature_deps::root_off_##IDENT), \ - FEATURE_STRING[0]}, + feature_deps::get_flags_off (feature_deps::root_off_##IDENT)}, #include "config/aarch64/aarch64-option-extensions.def" - {NULL, 0, 0, 0, false} + {NULL, 0, 0, 0} }; struct processor_name_to_arch @@ -358,8 +354,7 @@ aarch64_get_extension_string_for_isa_flags /* If either crypto flag needs removing here, then both do. */ flags = flags_crypto; - if (opt.native_detect_p - && (flags & current_flags & ~isa_flags)) + if (flags & current_flags & ~isa_flags) { current_flags &= ~opt.flags_off; outstr += "+no"; diff --git a/gcc/config/aarch64/driver-aarch64.cc b/gcc/config/aarch64/driver-aarch64.cc index 8e318892b10aa2288421fad418844744a2f5a3b4..c18f065aa41e7328d71b45a53c82a3b703ae44d5 100644 --- a/gcc/config/aarch64/driver-aarch64.cc +++ b/gcc/config/aarch64/driver-aarch64.cc @@ -262,6 +262,7 @@ host_detect_local_cpu (int argc, const char **argv) unsigned int n_variants = 0; bool processed_exts = false; aarch64_feature_flags extension_flags = 0; + aarch64_feature_flags unchecked_extension_flags = 0; aarch64_feature_flags default_flags = 0; std::string buf; size_t sep_pos = -1; @@ -348,7 +349,10 @@ host_detect_local_cpu (int argc, const char **argv) /* If the feature contains no HWCAPS string then ignore it for the auto detection. */ if (val.empty ()) - continue; + { + unchecked_extension_flags |= aarch64_extensions[i].flag; + continue; + } bool enabled = true; @@ -380,7 +384,8 @@ host_detect_local_cpu (int argc, const char **argv) if (n_cores == 0 || n_cores > 2 || (n_cores == 1 && n_variants != 1) - || imp == INVALID_IMP) + || imp == INVALID_IMP + || !processed_exts) goto not_found; /* Simple case, one core type or just looking for the arch. */ @@ -447,6 +452,10 @@ host_detect_local_cpu (int argc, const char **argv) if (tune) return res; + /* Add any features that should be be present, but can't be verified using + the /proc/cpuinfo "Features" list. */ + extension_flags |= unchecked_extension_flags & default_flags; + { std::string extension = aarch64_get_extension_string_for_isa_flags (extension_flags, diff --git a/gcc/testsuite/gcc.target/aarch64/options_set_28.c b/gcc/testsuite/gcc.target/aarch64/options_set_28.c new file mode 100644 index 0000000000000000000000000000000000000000..9e63768581e9d429e9408863942051b1b04761ac --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/options_set_28.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv9.3-a+nopredres+nols64+nomops" } */ + +int main () +{ + return 0; +} + +/* { dg-final { scan-assembler-times {\.arch armv9\.3\-a\+crc\+nopredres\+nols64\+nomops\n} 1 } } */