From patchwork Wed Sep 27 15:50:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 145433 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp2723705vqu; Wed, 27 Sep 2023 08:53:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH+QrnQrbvmztSV4QphpmK5M6ZHdLz048dvo95w/8nyuSImToWb1ii3mKegwx5GzL4M6a9z X-Received: by 2002:a17:906:12:b0:9a5:9f8d:770 with SMTP id 18-20020a170906001200b009a59f8d0770mr1904983eja.46.1695830000451; Wed, 27 Sep 2023 08:53:20 -0700 (PDT) Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id o26-20020a1709061b1a00b0099c49a11e7asi12286487ejg.976.2023.09.27.08.53.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Sep 2023 08:53:20 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=OdmR0hvO; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0819E387542D for ; Wed, 27 Sep 2023 15:50:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0819E387542D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1695829832; bh=0VHqMNiTkwtpkEH9AINo74BfrHU2EFPSy3zGnuDI/cc=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=OdmR0hvORN5XYNWtL6Cq/vRE3aHWh4rP9ylBpSPAJaf0yhMG541c4xeOPpDvto8fC BuR1+qHxTS+8b7agvt9XzRi7IRs9A1WUtztz6HnnPdF3d7ugVRECB1nr1m0Ysby79W zSFYZZXr+jbpBDAQKTwpOagfamW6idWGkATBiEH4= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2078.outbound.protection.outlook.com [40.107.13.78]) by sourceware.org (Postfix) with ESMTPS id 06D0D3831E11 for ; Wed, 27 Sep 2023 15:50:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 06D0D3831E11 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A4033wpbR4CYEH3wtB3yNPsDvXZXc9rDHug0H45ezH3tpzaL4yAAmsNByy3JBYaqHuy/aXBwKIvZDSwFshiceO/2NSwO/SOUmIq2wmf0DG0Dn9lubEsi6Bl9Jfgptx0+1wlcLO+kgeGzvHH+ECyRXIQ9JQu2Hn4DwvQqg7LFHZLvjORxrS/uqZfj4ddmhT6MqWabDfFVciJaffO84Fvpe4oAcpIGACZfgNxfpqsTspzW9yNstvhWyB4kRZd+pIBTEa6XKEzLug9hUo5kviNTK1AMNS7sarsOGFbwxHTimHluM3+GQszFYJIe2WE6Yu83EBcfvh/HOIxe2Mt4DplzHg== 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=0VHqMNiTkwtpkEH9AINo74BfrHU2EFPSy3zGnuDI/cc=; b=YIAoZk7wLKT1I0K0SAwZSBe8+0KCOYuvp62ajXJNJlKQTcAzhN+lsn1gFSVI5hflPN+5tE0KQns26+WT8xfgWbpKNCgUb544KRpKMm9iY3kpKR+Y0LKR9FnhNsIWNvvhYJOywlGiMUFjClj6ewbzykg75zMBPV0keXq6Ytf8CrDHa0UJJCI8Wms5EpEe9S8wHYcTtBzMd+7MsbF0JgFVY6Ly1Xzne6PpTg3AAk8TX+NnSzo1K90a2quY6puvZ15jheKH+5rztjtgT1ScCUZUy9q+vsISxRXPnw3pNFK0wneZX0ArMme3F2Os3hX6oMziNk5vXiV0PbeHcbyNEMFaeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from AS8PR04MB8788.eurprd04.prod.outlook.com (2603:10a6:20b:42f::21) by PAXPR04MB8942.eurprd04.prod.outlook.com (2603:10a6:102:20d::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Wed, 27 Sep 2023 15:50:18 +0000 Received: from AS8PR04MB8788.eurprd04.prod.outlook.com ([fe80::afae:3fda:c84d:bcdc]) by AS8PR04MB8788.eurprd04.prod.outlook.com ([fe80::afae:3fda:c84d:bcdc%7]) with mapi id 15.20.6838.016; Wed, 27 Sep 2023 15:50:18 +0000 Message-ID: Date: Wed, 27 Sep 2023 17:50:17 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: [PATCH 05/11] x86: respect ".arch nonop" when selecting which NOPs to emit Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: <7ce54bc2-fef2-d2e4-21fd-202fdead0c20@suse.com> In-Reply-To: <7ce54bc2-fef2-d2e4-21fd-202fdead0c20@suse.com> X-ClientProxiedBy: FR2P281CA0124.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9d::18) To AS8PR04MB8788.eurprd04.prod.outlook.com (2603:10a6:20b:42f::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8788:EE_|PAXPR04MB8942:EE_ X-MS-Office365-Filtering-Correlation-Id: 9284b570-29e5-4e4e-10e3-08dbbf717320 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: svMIj7J0oAIJzNJ7t3E4S3wc4f0zE8yXBcwjCwvH7kfn6r1Yv0C/a7GV2AnuYnnsFSgMkkTny9QQCFn1apNxaHUtQeBKmyE3jr9qJqY4EsUmA29JKlQVUxFaPFg3r/bC9IT+VskVi3j76AFi0Hq1TX2CGbSr+Bcv0N/4mWXiApU2fzmA+hZdVHkxg32HVPxsL/e0mahhsjKALiUH1LLtq7SHkch5tUDCuZl2zIoOhnHiTYYYA3gW6TTu+XDaVnMhnZMpf/wxzdM9SgMugNzCYBNjiDzZSWJ1a4UmGLTwmmpHtCdYYArs4l2cxGw1qIq6dgZ3nIJzvaTTZHXwN8Pxzyi82JYczeY2yeBbcXmuIiU6GO24fjfqTuoBYSDLzyHzulMBsdv0wTnYrkvz2+V1/G7eSUNgWDVfffZM3WuHUBW3EkUoewDeFxDdGP8pyGN1AltVrT3rkb3CFeKOBR42rWpTwU8rqDCZkBHGTDkXN4YiKP36pQwIaBORhgYAk4fQy4jLpQqD6eNOjMUvvC8UBvo5qUL1Y997B9akA6u7rD9+VGhoYRr8u5i1zFW0/LAAlxPde9dQokk+rsO4tIwdFWWG/AWNFeTz8tkvR0WadHfcE7v+ne1zzRLtSlXu/spOhmn0uNDKuueh62g89LmKRQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8788.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(39860400002)(346002)(376002)(136003)(366004)(230922051799003)(1800799009)(186009)(451199024)(36756003)(38100700002)(86362001)(31696002)(31686004)(4326008)(2616005)(2906002)(6916009)(66476007)(478600001)(41300700001)(66556008)(66946007)(5660300002)(6486002)(316002)(6506007)(6512007)(8676002)(83380400001)(26005)(8936002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?8glbVm6XI8icaF6Hlff8kwCdcQiu?= =?utf-8?q?9xzvFwAwICVnQFT0N92p5lQrxGKVuBDymSk4j+lzBxy23QKfRpucoq/k+YrR2nEyk?= =?utf-8?q?ttaahJIk1zfLmoRlLD0CHCWxv2QpL/kcdzZnCdeqwxwKjqYIQN6btZh/HocO5LsRy?= =?utf-8?q?VBm1BQYHMb5T7zK3hz9n3ZfFVkFb7M9NZGO06RfA7DymRdsct1hpQdpYK1nk6Qt/9?= =?utf-8?q?GNZOn4EWyB+VvsOHZjUN7drpdz0w9/1kB3hNYeT+K4991cBN2FqCKmm2BqEQPg8JO?= =?utf-8?q?iqJffq4vP2AD2t0qNzv0vwn1kLpmlL2whJ+4fsuF9yaOAl812f3TrTvbjOGENOnAH?= =?utf-8?q?2f5M9fdjrJVvTojcCqULl9F+cfEwXv2hk4hLjQgGxH2HcsjC60uXbPcixD4Dqyd+T?= =?utf-8?q?SyE2paGKMp8wjCxmmy5iDMzUIUo4ZcucxVI/DgKCcfjO704gT2tUDTAqnt7mkiML/?= =?utf-8?q?MOaH53zGWFE5RwKeUdwd0O1US3L0L1tHCY/b33345sBHohEsdQe5wzUgcGRUShSlQ?= =?utf-8?q?mjdVrtog+nIjcqz6YcCaQUxZcvfkXA64KAL3/71QfbffMP9YEVM9jjkaP4Bi/GOtr?= =?utf-8?q?lEXG9uNNfAUSjubgVfyn0EYNnxLH1z9qyCuCSodjygEKqLdRTNAiZRuDIz+Pp6DW8?= =?utf-8?q?7+RcROzBsErHOyNk6HxZIvr9McBLRIJKqOdicIG31pWP9TsymsQ3nH8Sf5gURL0Zy?= =?utf-8?q?B4Zk4KmISRmqsc6qEIuy+0dWYdzlQG2pWck2lpWYLXx/GZ1cDrDxnmh/0spxMlFg9?= =?utf-8?q?uihFJnIU7fhMJfMqU/aL6TWpE0zmAmE3r67yfcHleWysqkb1fveId5I22ZI/HphbB?= =?utf-8?q?ppHNr8/W2pLNb8A6lraDw6o5ZHXZN9wlI8JZZ3O/VgiHPMcaAcUA/d72mecKeLUZH?= =?utf-8?q?I7bDTd5IwwhqGn50kF3Q71G0/omre8AyZ3zfV7VxR5ncQSXy2fZUOAU14mdmNXbtJ?= =?utf-8?q?dxReOrEOag2HOo20X7JYMCdS+1+6ultKL4QAuGlVGV0gIyuccHzMIOKGkopfs7xqd?= =?utf-8?q?LFtMayfXybFU08+q16vEa5P04EvpAx18FLUIeNuW5wREk6aQI6LJShJMmVZH1GTFl?= =?utf-8?q?Mxp19NhB9ZsHAzazUCIQkiBylm5pkxLyLJ+DtAcSTc7kA+iRaKYkRB4hpSvrectcD?= =?utf-8?q?acfxyMekXS1oTK2fGIKvkX11Q4KnGJgVk5LtgoYiQYeL+EOMeHhQgkUruRyccxv3q?= =?utf-8?q?KCI3O3hDrM+I6DR2xmfaZr1NmcyQ4xL3gRMEYZsV9u90LUU9PPq1sW7GZ+mTrW78x?= =?utf-8?q?cKrfWyS5mciC0gvl5HNiPelDPYza6Zgborx6tCTEInh+lY1bwWtTwm4+7pMkBTOqL?= =?utf-8?q?UgeQq1d/e3v3n+lLbG+9JAJal7E2Tt+QjC+8QmrzkSMHMt6cZvQtznC7yejZvTjPw?= =?utf-8?q?l1OHpDHf68le6sHq/fTjstHQeJRfKJYsvDjE3MKB8AWlV8F7viB90WgQu/nlevLqC?= =?utf-8?q?Uj1+rwNG8Bys8Uf5pIMICfcLyAk+FAsY6VXK0WJchtlewiSIQnvQQh5zfOk6NPKAt?= =?utf-8?q?CVaTGxtMd7VU?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9284b570-29e5-4e4e-10e3-08dbbf717320 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8788.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2023 15:50:18.7643 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lEwHrnkUpj7j8lyIriYggp5DF4lpInxdsZiyI5OwFHiyYkpJqwLGyjnFzj59horrS+ygp3rktoPTRg7PtM0f0w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8942 X-Spam-Status: No, score=-3026.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP 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: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778206638664773698 X-GMAIL-MSGID: 1778206638664773698 Making GENERIC64 a special case was never correct; prior to the generalization of ".arch .no*" to cover all ISA extensions other processor families supporting long NOPs should have been covered as well. When introducing ".arch .nonops" (among others) it wasn't apparent that a hidden implication of .cpunop not being possible to separately turn off existed here. Seeing that the two large case label blocks in the 2nd switch() already had identical behavior, simply collapse all of the (useful) case labels into a single "default" one. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -802,7 +802,7 @@ static const char *cpu_arch_name = NULL; static char *cpu_sub_arch_name = NULL; /* CPU feature flags. */ -static i386_cpu_flags cpu_arch_flags = CPU_UNKNOWN_FLAGS; +i386_cpu_flags cpu_arch_flags = CPU_UNKNOWN_FLAGS; /* If we have selected a cpu we are generating instructions for. */ static int cpu_arch_tune_set = 0; @@ -1463,7 +1463,8 @@ i386_generate_nops (fragS *fragP, char * patt = fragP->tc_frag_data.code == CODE_64BIT ? f64_patt : f32_patt; if (fragP->tc_frag_data.isa == PROCESSOR_UNKNOWN) { - /* PROCESSOR_UNKNOWN means that all ISAs may be used. */ + /* PROCESSOR_UNKNOWN means that all ISAs may be used, unless + explicitly disabled. */ switch (fragP->tc_frag_data.tune) { case PROCESSOR_UNKNOWN: @@ -1485,8 +1486,10 @@ i386_generate_nops (fragS *fragP, char * case PROCESSOR_BD: case PROCESSOR_ZNVER: case PROCESSOR_BT: - patt = alt_patt; + if (fragP->tc_frag_data.cpunop) + patt = alt_patt; break; + case PROCESSOR_I386: case PROCESSOR_I486: case PROCESSOR_PENTIUM: @@ -1508,35 +1511,13 @@ i386_generate_nops (fragS *fragP, char * abort (); break; - case PROCESSOR_I386: - case PROCESSOR_I486: - case PROCESSOR_PENTIUM: - case PROCESSOR_IAMCU: - case PROCESSOR_K6: - case PROCESSOR_ATHLON: - case PROCESSOR_K8: - case PROCESSOR_AMDFAM10: - case PROCESSOR_BD: - case PROCESSOR_ZNVER: - case PROCESSOR_BT: - case PROCESSOR_GENERIC32: + default: /* We use cpu_arch_isa_flags to check if we CAN optimize with nops. */ if (fragP->tc_frag_data.isa_flags.bitfield.cpunop) patt = alt_patt; break; - case PROCESSOR_PENTIUMPRO: - case PROCESSOR_PENTIUM4: - case PROCESSOR_NOCONA: - case PROCESSOR_CORE: - case PROCESSOR_CORE2: - case PROCESSOR_COREI7: - if (fragP->tc_frag_data.isa_flags.bitfield.cpunop) - patt = alt_patt; - break; - case PROCESSOR_GENERIC64: - patt = alt_patt; - break; + case PROCESSOR_NONE: abort (); } --- a/gas/config/tc-i386.h +++ b/gas/config/tc-i386.h @@ -260,6 +260,7 @@ enum processor_type PROCESSOR_NONE }; +extern i386_cpu_flags cpu_arch_flags; extern enum processor_type cpu_arch_tune; extern enum processor_type cpu_arch_isa; extern i386_cpu_flags cpu_arch_isa_flags; @@ -295,6 +296,7 @@ struct i386_tc_frag_data unsigned int mf_type : 3; unsigned int classified : 1; unsigned int branch_type : 3; + unsigned int cpunop : 1; }; /* We need to emit the right NOP pattern in .align frags. This is @@ -310,6 +312,7 @@ struct i386_tc_frag_data (FRAGP)->tc_frag_data.isa = cpu_arch_isa; \ (FRAGP)->tc_frag_data.isa_flags = cpu_arch_isa_flags; \ (FRAGP)->tc_frag_data.tune = cpu_arch_tune; \ + (FRAGP)->tc_frag_data.cpunop = cpu_arch_flags.bitfield.cpunop; \ (FRAGP)->tc_frag_data.code = i386_flag_code; \ (FRAGP)->tc_frag_data.max_bytes = (MAX_BYTES); \ (FRAGP)->tc_frag_data.length = 0; \ --- a/gas/testsuite/gas/i386/x86-64.exp +++ b/gas/testsuite/gas/i386/x86-64.exp @@ -109,6 +109,8 @@ run_dump_test "x86-64-nops-1-g64" run_dump_test "x86-64-nops-1-k8" run_dump_test "x86-64-nops-1-core2" run_dump_test "x86-64-nops-1-pentium" +run_dump_test "x86-64-nops-1a-g64" +run_dump_test "x86-64-nops-1a-core2" run_dump_test "x86-64-nops-2" run_dump_test "x86-64-nops-3" run_dump_test "x86-64-nops-4" --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-nops-1a-core2.d @@ -0,0 +1,5 @@ +#as: -march=core2+nonop +#source: nops-1.s +#objdump: -drw +#name: x86-64 -march=core2+nonop nops 1 +#dump: x86-64-nops-1-pentium.d --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-nops-1a-g64.d @@ -0,0 +1,5 @@ +#as: -march=generic64+nonop +#source: nops-1.s +#objdump: -drw +#name: x86-64 -march=generic64+nonop nops 1 +#dump: x86-64-nops-1-pentium.d