From patchwork Fri Jan 27 11:36:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 49268 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp784855wrn; Fri, 27 Jan 2023 03:37:18 -0800 (PST) X-Google-Smtp-Source: AMrXdXsD0+5RcuWn0JDm9ypW6l+zwl5xaKjHxAdPlYvoJnggprzqBVhSf2ATTXeRLqH8pCMRBV+g X-Received: by 2002:a17:906:8d08:b0:86f:e30c:72c1 with SMTP id rv8-20020a1709068d0800b0086fe30c72c1mr45185876ejc.8.1674819438557; Fri, 27 Jan 2023 03:37:18 -0800 (PST) Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id d4-20020a17090692c400b0087bdb28557esi1020423ejx.736.2023.01.27.03.37.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Jan 2023 03:37:18 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=I4WxqwHO; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 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 80CFF3858296 for ; Fri, 27 Jan 2023 11:37:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 80CFF3858296 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1674819437; bh=ZcyqSlwY+T5ICemcTwElBmEjgD1q5lHRfxzOarD9P04=; 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=I4WxqwHOHX8VLpu+PyiR2E/ndybY35uPkL2Hz8mUaDHZGs6UL8Y6llYXmCun1BdIw YmHCnCQX2yzvgTmHKPcR+1RsGiojnqsEmx9EUCE7QgGstt6uAG6VAmz7Z+8gyWA4RH wAalhec/RmfRtJ/amh+x5h+9/Ateo219am/yuO6Y= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2064.outbound.protection.outlook.com [40.107.241.64]) by sourceware.org (Postfix) with ESMTPS id 5EF643858430 for ; Fri, 27 Jan 2023 11:36:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5EF643858430 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OAEgGn/MnzzIYV4ZdVAb5vs/zkLIjEhsIz1fWGVbFS12q0Ll2/y0qXMRNvwLgTSogQlu7Bkcpc6KyqU2p0jKt8oxFaX7+TB97CqE7x0FOYotswjvey5R3oKF6eUZOgyIHxLXdlx/2i59EhIHrxeN/Wgkp353M6NmwV9cmWt2SDhQhvD+/T1YEGq4asqGRztA6wWlOgnpeiMD9SiJMWESt5pXRXGGcSiCHZqRyjLMh/M+8BjBl3I7S3Bzl4oUSGyZdcUB5JfepVCOSu8IA9s8dybmSpsteI8xT0o9LvPXOXdWodMWsAXDgN6qJul6yNIAuTjshuTWEzOt4u4vgI61Tg== 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=ZcyqSlwY+T5ICemcTwElBmEjgD1q5lHRfxzOarD9P04=; b=ZYmPXUjHJ9P+C3ejCDOKlxgBRsY0FgqqZ7aZSM19lzCAPCj39PduoBGmjyiRvVvMN8wC1QLfm/xzsVSziaYV43bZuKzoWiwvyU+2GtFee8Z6luslOWeW75/TODl+4NpxixClo0VTzEPhliU2sCu1VFCDoba6XpL8qKBUtL0LnZiy5YGiyyoWWaeaBxjbMvILP1+fG1X25LAZYT7d3JvCe8yu+yY5eR5W6kCbrWyGoNSF6Cse+EyPDUxWvb8OTC91isW5+apsknUndXZNgbeo1Hp1tveLH+RqM+6RGPVmjY5x5dKoy8VrTXrZFZdXmB72q/p5/RncT2NiFt7hJ2WvvQ== 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 VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AS8PR04MB8136.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.23; Fri, 27 Jan 2023 11:36:04 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389%7]) with mapi id 15.20.6043.022; Fri, 27 Jan 2023 11:36:04 +0000 Message-ID: <44b896ee-5b03-1ed6-bda2-8cffec382810@suse.com> Date: Fri, 27 Jan 2023 12:36:02 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: [PATCH 3/3] x86: drop LOCK from XCHG when optimizing Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR3P281CA0118.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::13) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB8136:EE_ X-MS-Office365-Filtering-Correlation-Id: 87ca9490-8114-4570-c85b-08db005aac33 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zwglEKkS3/Fi35142InXkyJK08X/F5m9Pj6LfQX5KAcl35RCmG/QDTx3Imgf7wAz/AUiue2ntqeTgufxUX3KmK/AYEBYSFFlzXnFy7b33i8tNcGhdOulyZw0wnlNWZEZbYdNEt4sDvXEaM/YbgdZA6Qx2N5uJcY+QG0qi6LX8PhcM5IKVtEJzzWB22wenJCp22EpGP4bzcGbqqGjYFoQr6K3AbjSCsTm/hntdpwcL9M1WZB3+dfd2P0xH9n2/LFfsUEY+/ke78r8osmDKmtnwilATVOFxO9jgZe/Mb4Uwh5Z+f5oEfYfTLgC9MnsG6SBjYMBzNEUhX15xmgRgpmtHivuK62Vjk5NqJG2w+LOIpj7KqRZsPD/8W3hqlg1L7s75FiIEOtKli7BGHAX5FVtWJvfu7Fo+n5/nRneIwzG74aoJyL1N8YHrtlnMuy0ij5LRRefmaXYvRhpNpfXpcnxO/HNXvcnqTq/3llK6RCHIuXy/Okb0kFkOFpo4uViZY3bC4ajTNvV4hxfvoKqkU+ERJ/b0jTdZMQcNYDRvA9zPKvM0QF4AV7JbXfmiZC3ej+cKAkbju771FS+gpk4X2CwoO/3cvEYft8JqUGZiNiFUVQN5+S6FpRroFBxTEbwovd3vHDw9pCdpNP2I8HiJLTm5t7uK8igXBdjJVza8amHcQaRQWJeKOGcANpJ4unvevnxBaw8iPnmsm7I6X5KKp3gy6KSGxvEm54WRtcpeJOhC20= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR04MB6560.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(346002)(376002)(39860400002)(136003)(396003)(366004)(451199018)(31686004)(6506007)(5660300002)(2906002)(36756003)(316002)(8936002)(41300700001)(31696002)(2616005)(4326008)(6916009)(66476007)(26005)(66556008)(186003)(6512007)(83380400001)(8676002)(66946007)(86362001)(38100700002)(6486002)(478600001)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?cmH0gnI7SEGAdnXzeqSdc5aia1qd?= =?utf-8?q?BIkmWYn2MMDHwJOBzBbP2u9KsWBPNcXaeOWpJa93yRM0sw4Gap4mpQ6LDLZ8D+Ha3?= =?utf-8?q?YdQWBhkVxA0jW+WTAt9sCCVIGoU2XqPYMmIJC1fuWSM7s9E7Kh8m2n8lPAsOYa849?= =?utf-8?q?KyfuzsOdLZI7NjxcuhSR7oGmOkfE8wibl8Px8fT9QAxaV0F7ert8N7cDMjrfOtKf7?= =?utf-8?q?w/LMzNqljIN0SDMdIe02VSvWZ+eT7fwTFAhqq0EoyJ7jA3bx15EG9zQXXmw/TshHe?= =?utf-8?q?6oIq3ecAXuZo01coVcubjsAJ5mRmdTwG9zZA4jZNwE6k9DoPCyrb872tS32t/UKn6?= =?utf-8?q?FnzOwgQLZH9sj/HtQV3KvIxNiQHyKvNHrKnPnE9z9ztl7NAZ2s9eLrfB93vAW9nbd?= =?utf-8?q?1jVDj2zIv9lQmN4L3HZ79RiLN74TrlVDXLFYtNuc/yzCptnFtJw5meMGxdk9JW95G?= =?utf-8?q?iwt9IFpoTw0OVcG5ek1ao+mpRJ4WHRcI/ZJocb9rUo/zwfqzIxua7v9pwfyDRmTUY?= =?utf-8?q?eXaNaO6Z3aEjqN7vTbftw0sz2or/tgYeAHf3CjbDIOuRa3b9qS67Fk0ohNYZ8thJ3?= =?utf-8?q?Y7l6yE4N9LoDZam5SgtyyZ+PatH7ZwNDW7oCrIaFWtB8/tyril5GE0X5B/tTQtNCM?= =?utf-8?q?BvdxoUwbSpgj0i9y0ve4KNmyX6U3dilUe6M6jbspvFeaYGkLagDm8nJQTe9NQ+EhC?= =?utf-8?q?yZPP+s5zlMmYALip58jvzmozRYzF2L/cyLbi7ObMGZr1f0rCAj3iuBkqrDZerhHaW?= =?utf-8?q?URaKuWcXS+uh2+0/R8xXK0ttKprK0NEmsvyYbhIWSBHRPQDRMvwfVircTSiNBgS2T?= =?utf-8?q?PFu7HhWK4j9z76dkXkb44NWx3oWOYcjsMRukM81uNX8IQFhREUkcKG4Fyr1XiS1UC?= =?utf-8?q?qKO7ZY4HD8gCn2nedONUx3uegeudubJIefxT7fRB9IrLEDbOqaVobuijzIQzAE8gM?= =?utf-8?q?Kvqs1fDcnaqW9GiStOiOYxJBbkzkvUuG3n7Gy3A7dEbAoRIbQh40p/wsYy5bn0844?= =?utf-8?q?eqP0ttGSiJwQFBDtB85fP5xBMXqh5UMKZIqV5rR9HvHFrrMUnvwTs8Qcge4N0iJZM?= =?utf-8?q?Bh6QqrBECX33pJmr4zvgfNLdCaJ3XGcdzy3BqwCcbGb7xdgXjGUywlMtDKPreOu0u?= =?utf-8?q?RBuj+L37vNHcUkV7WfHn5/xODiow0P9UR9xSp6FcEvvrle4oNwLEDBkp0D3hon+M3?= =?utf-8?q?/Zd+IHWmgvdweMQN9zv+qw+hKB/X2CDc+6DrESGONUESFrz9vWWLR9py+tnbDJcjb?= =?utf-8?q?9mWx6jv1T2NkcxcsntwhhGLq6LOHEQOTiyB0pthEfc+2i++AiiBBcQZGqO/AWi6ZS?= =?utf-8?q?biemPxAkUzqaL2EBxIbzRkfJI2jr4SD4uV4S1UujwpQ+TjFoEl7c6gy5D9I6ZN9Yg?= =?utf-8?q?GNMDS84xVI4WBiWO7BKhO4NFiCUg8skQyM1E3p2I092M/HlMRwtxwhhGpotehgJGb?= =?utf-8?q?lqY7Rig+u5G041eeDdc4a3dl670RNPwyfSu8dQOVdRE2WIkx9sttKXa/gN+pJVmo2?= =?utf-8?q?u3CGNEOyO+Vw?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 87ca9490-8114-4570-c85b-08db005aac33 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2023 11:36:04.0907 (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: AMDuaZ0A4RecNbzTSAruS+DZ7vnUcblP5//Ks4/1qoA9we4VsD1zQz9+4rbkdur8jzm6AxzyfDj2hYySkCDX7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8136 X-Spam-Status: No, score=-3028.6 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.29 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: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756175467512120363?= X-GMAIL-MSGID: =?utf-8?q?1756175467512120363?= Like with segment overrides on LEA, optimize away such a redundant instruction prefix. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -5179,14 +5179,20 @@ md_assemble (char *line) /* Check for lock without a lockable instruction. Destination operand must be memory unless it is xchg (0x86). */ - if (i.prefix[LOCK_PREFIX] - && (i.tm.opcode_modifier.prefixok < PrefixLock + if (i.prefix[LOCK_PREFIX]) + { + if (i.tm.opcode_modifier.prefixok < PrefixLock || i.mem_operands == 0 || (i.tm.base_opcode != 0x86 - && !(i.flags[i.operands - 1] & Operand_Mem)))) - { - as_bad (_("expecting lockable instruction after `lock'")); - return; + && !(i.flags[i.operands - 1] & Operand_Mem))) + { + as_bad (_("expecting lockable instruction after `lock'")); + return; + } + + /* Zap the redundant prefix from XCHG when optimizing. */ + if (i.tm.base_opcode == 0x86 && optimize && !i.no_optimize) + i.prefix[LOCK_PREFIX] = 0; } if (is_any_vex_encoding (&i.tm) --- a/gas/testsuite/gas/i386/optimize-2.d +++ b/gas/testsuite/gas/i386/optimize-2.d @@ -22,6 +22,8 @@ Disassembly of section .text: +[a-f0-9]+: 08 e4 or %ah,%ah +[a-f0-9]+: 66 09 ed or %bp,%bp +[a-f0-9]+: 09 f6 or %esi,%esi + +[a-f0-9]+: 87 0a xchg %ecx,\(%edx\) + +[a-f0-9]+: 87 11 xchg %edx,\(%ecx\) +[a-f0-9]+: c5 f1 55 e9 vandnpd %xmm1,%xmm1,%xmm5 +[a-f0-9]+: c5 f9 6f d1 vmovdqa %xmm1,%xmm2 +[a-f0-9]+: c5 f9 6f d1 vmovdqa %xmm1,%xmm2 --- a/gas/testsuite/gas/i386/optimize-2.s +++ b/gas/testsuite/gas/i386/optimize-2.s @@ -20,6 +20,9 @@ _start: or %bp, %bp or %esi, %esi + lock xchg %ecx, (%edx) + lock xchg (%ecx), %edx + vandnpd %zmm1, %zmm1, %zmm5 vmovdqa32 %xmm1, %xmm2 --- a/gas/testsuite/gas/i386/optimize-2b.d +++ b/gas/testsuite/gas/i386/optimize-2b.d @@ -23,6 +23,8 @@ Disassembly of section .text: +[a-f0-9]+: 84 e4 test %ah,%ah +[a-f0-9]+: 66 85 ed test %bp,%bp +[a-f0-9]+: 85 f6 test %esi,%esi + +[a-f0-9]+: 87 0a xchg %ecx,\(%edx\) + +[a-f0-9]+: 87 11 xchg %edx,\(%ecx\) +[a-f0-9]+: c5 f1 55 e9 vandnpd %xmm1,%xmm1,%xmm5 +[a-f0-9]+: c5 f9 6f d1 vmovdqa %xmm1,%xmm2 +[a-f0-9]+: c5 f9 6f d1 vmovdqa %xmm1,%xmm2 --- a/gas/testsuite/gas/i386/optimize-3.d +++ b/gas/testsuite/gas/i386/optimize-3.d @@ -9,6 +9,8 @@ Disassembly of section .text: 0+ <_start>: +[a-f0-9]+: a9 7f 00 00 00 test \$0x7f,%eax + +[a-f0-9]+: f0 87 0a lock xchg %ecx,\(%edx\) + +[a-f0-9]+: f0 87 11 lock xchg %edx,\(%ecx\) +[a-f0-9]+: 62 f1 7d 28 6f d1 vmovdqa32 %ymm1,%ymm2 +[a-f0-9]+: 62 f1 fd 28 6f d1 vmovdqa64 %ymm1,%ymm2 +[a-f0-9]+: 62 f1 7f 08 6f d1 vmovdqu8 %xmm1,%xmm2 --- a/gas/testsuite/gas/i386/optimize-3.s +++ b/gas/testsuite/gas/i386/optimize-3.s @@ -5,6 +5,9 @@ _start: {nooptimize} testl $0x7f, %eax + {nooptimize} lock xchg %ecx, (%edx) + {nooptimize} lock xchg (%ecx), %edx + {nooptimize} vmovdqa32 %ymm1, %ymm2 {nooptimize} vmovdqa64 %ymm1, %ymm2 {nooptimize} vmovdqu8 %xmm1, %xmm2