From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2044.outbound.protection.outlook.com [40.107.247.44]) by sourceware.org (Postfix) with ESMTPS id 5937B3858D28 for ; Fri, 3 Nov 2023 13:02:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5937B3858D28 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 5937B3858D28 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.247.44 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1699016549; cv=pass; b=T6QPe7NgweZWfvqc91vp5n7WpDc+zU24OXDY8I5xLTtI/UwK+KGDgYA4XjUXTlbqWLJIalF98LwylNCn3lvx0lSCcgrH4iYVNgj5r47AN5tdb67HmUSad2PI70rYPsjpagCYvq72c4bwd28ViX16UX2WY2DiYFFipUNFY4JUPJ8= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1699016549; c=relaxed/simple; bh=/C2TaeV6Dxh7geNsjUUAf7d02/LiSgrZX+STyWyuLBs=; h=DKIM-Signature:Message-ID:Date:To:From:Subject:MIME-Version; b=QlV9cDP759/c23Ct2++Ms29mpuCi9Xxq8fjs9qM9ldk7sl9QcXd8UNxO2CXiFRF8B2xzp835CsKXiBaEbxkIT8YtqPQXALd/PwrPNwTiRK3ZOYbznaHAyeNp1JaMskvs7Gy8ndOuZwATru1rhoDNzn/QuU0bGgr1wbUd/uz3DA4= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NMSFbTKgU4ZGdiqyxObEmpJw6+FlmD5MEzFhfjX4JKihupI2cQhHmNAg2PUz1nx/TfjOv2Yy5CFC5X7SibusNOPYX85qX8wVxWu7MbTu5IERHYLep4IuqVRl48lYNLcXEiSMNcLJH+J59isIgy+n5my+N/9xPcEZJ26z0QnNZYsZ4bwIJlNujZBlHWhPgemk9jMcR0Ti7qxU9J7XoLQtDYbNFQGxSArmLL6QSUyST4zyrJfFNMkNLtKMiaq4FmzyGIQP4ijQMWVdKZVV1zLZ4G9paOUz4MZNWM6m7PjE0/IwcYTnKK4b+4xmxYrWcRRiHjkNUvcw6Bi/T6uD2S8e5w== 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=7yLFvNgCtWICMUPkpYZ6dKnA5Buy2uyK3N7gtPnjNPo=; b=Du4kEg3K1Y6fma609RLXLJCIQ/T1+FXN+haXOl9ge0pjBHYBQk45raG3p0feRr1a6pBNYnnwsNkUsopmgpuyKXRRb1bzxPzt/pb3Jk2ZjyBNgR/2pW/GtMdXRkvaKm3DWfnM9jrDf0fqgkUfIXc4mDryh3ybEGebVaM6Bq/d7sEaPMaAyxsLvAhGjRYZhzRhi08I9ttn3ufE/IpPfbhu3w7ZuX5hZMeyKiuvigczi489N9b9Rg45EvzPkEzePkQnGAIsDCwL1qisiE56q2+1rY72WqTfkVegyBh+w1sBMOgiN9Z5/GcrgB4ML4AdSgBdbKJ92bvXYur+DyW6aNt9Sg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7yLFvNgCtWICMUPkpYZ6dKnA5Buy2uyK3N7gtPnjNPo=; b=szj0GXtyi6uko/ZmpHyDYpSsnPXcd1Mdha2ILltbAJksWvhDVApH6QXPqMvUOOZErC1PCH57XYcY3edmHWFoTpWlKsTXEqubFf9+beoTy6b06bDF+8qWRwCC3fKMFRUz5S8g2pp4+3xZX7j8G+hekVPwFcU74TcUWa9Z28ExhFPs09PuktImWj+FIyEELeJGdgfqkGunYhG3OEUmgKNPzi0SyvpNR5Rukec38mzozQ/xyFOT3Wu0ShcVqibm5ZL4AWvG+hrxIBECbgYaCFW+DK6xyFhpi2SWZ3lPp9miP5XtwtfgcySG5LMDy/IbccGDYkocTMoBxLFZUFvIZ2GWrg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19; Fri, 3 Nov 2023 13:02:16 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::d924:b650:a2ad:7b25]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::d924:b650:a2ad:7b25%3]) with mapi id 15.20.6954.019; Fri, 3 Nov 2023 13:02:16 +0000 Message-ID: <05f45405-17c9-4e52-84e7-87c428a6ee56@suse.com> Date: Fri, 3 Nov 2023 14:02:14 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Content-Language: en-US To: Binutils Cc: "H.J. Lu" , "Hu, Lin1" From: Jan Beulich Subject: [PATCH] x86: rework UWRMSR operand swapping Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0149.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::16) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|AM8PR04MB7779:EE_ X-MS-Office365-Filtering-Correlation-Id: 1197e4b4-369a-42c0-dd1a-08dbdc6d1af2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 82MOs0S2a7dcLyCeu7yC8hW0iQLiJDIuk8wmIZ81jcCyM+skqZ2ljwMUrh119zc7VxgCxUelmKzTZ7Z7qKzncudLj3J64OvWFCEOFlMF/lmaDp/FFrOHu0qxOg9f8q/iZ35q3X5BRQmXjfo7siUBehdOHfEskZzVZhtukmLgECkywCOgN5pTmEJvxVWr8aIb2I6Z0N7lKFSb7tUQYaSzdTVtB2bjwxYYX2fBE6uIVyv+Ty4J8hWcLbm75mlASt0x+bNxuDdTTPMjeT+aG9PzmCVCsV65wYsTtO8Ou+t7GGjMJHK8Ia4ja4jtXo5VG12aWNlQXrZLGvEPq9xBuT+3d8Pw+ZHZZTzGphQZqnZGxf1cuh73/+TgVdrttyKruDNoY5yHRH1NRSJ/a3ywAMZZjrXydwvl+RxjscmQ9rmq4N4sf6DvpJ3Pd40qeQDYTsMvXJJ6UhCeodL4+iQvVhlltU3poSCYW07VjpH0pCU2kYXfjOvwYjl4E3m5Eb/Om7zwmLwMugSjc8PPFdpjcyWUpa2r6BcldNDW1QZ761YXTdSNoYYInZv19iU2jw/YI4qxiMDLRCHYgnCyDnzC9ojw49geWaXVD2j2wiTZSngs96RJfW7iq3f7C89HexMtDNV61gq1MCdEjiAa2Lf94BXRkA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8790.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(376002)(136003)(396003)(346002)(39860400002)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(26005)(2616005)(6512007)(478600001)(54906003)(6486002)(8676002)(6506007)(5660300002)(2906002)(41300700001)(66946007)(8936002)(66556008)(4326008)(6916009)(66476007)(316002)(31696002)(36756003)(86362001)(38100700002)(31686004)(83380400001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MUcvT0ZlUmd2UjFIeXhuMlgxaE5leFVDNU8vcy83M3I4NzAxblEvd3RiRDIz?= =?utf-8?B?R0x6VE9UYVlWV0dqWWViK0RNMU5mVXo5VlU0elVMNkE2ZjBHSnh3aVVaVHpD?= =?utf-8?B?Y1F6cDNINXJ1NmJlU05acWFiMy9mZTMxbU5hN2xIWm41a2MrSXFuN3FqKzI5?= =?utf-8?B?Y0xFSXFmb3dOYWNXMmFFbEEwQUIxeHdlaDF6NmJxdjJHS0NYNEZqNSswMDNw?= =?utf-8?B?SUFxQkk1emxqdHY4ZjhPYWJWUHU3Um9BRXlZcUpJL0paMVpMQ1lhckxxejdu?= =?utf-8?B?NzRXbFd6ejFJMFN4K2EwOXJoamJta3JCN25CSlQ2MDhETzNvUnZLSXNMYldR?= =?utf-8?B?ZmxPN0d6dVd1b2hEWGRrMHJIa2wzUHZqSDNvUDg2U2xtZmoyYWNwdlgyVlkw?= =?utf-8?B?VkJxTkNnSUQ0dFlDUldMdk1OSVNMT2dTa2U3VnBqUUhQNWtSbUh6MnNsblhT?= =?utf-8?B?SWVjbUJWQ0gwV3dLQVZ3UW9WZ2hKeFIyUy9EU1hIR2pzVlU4ZE5HdFFNR1FG?= =?utf-8?B?MHFoak5lNUx2WG4reDZLRHBOc2hVdUJMSjJXYWFsL2JKakRrNFBJanpFUGlF?= =?utf-8?B?UWhlKzhPSVp1L0MvazNqbEg3QnhIV0NGazRhRXRlRWN3VVlUbmdQdG9oQ0FB?= =?utf-8?B?OGVXcVVhQXI3VU04S0ZlVkFxY3BLd3UyeGJTOWtZbzRNWDRSazd6RERBUEE5?= =?utf-8?B?L3FuZkRQNG1BdnMvbnRXZEU5L3FzczlPR0F0eVFKN1NmRlRCcm4wOEZ5UXRz?= =?utf-8?B?cFpDRUpJM0NEYzh6VXROVzJPRnVDTEhSemVMSUZCYnA4QXhhWk1kSXovbm5y?= =?utf-8?B?YTBHSHNHQ0pVd2FyVXhYTy93OERabzJOMFh3UjF5TCtvWTBzTE9HRnkwditN?= =?utf-8?B?Yk5SemRCSXFJYmQ4L01ieDBjdmczNFBFYnVlOHdpTk1ITnlXaUhKSkNxNzdp?= =?utf-8?B?bHlITmNNeVJFTDhQa3hoOXMrK1lhZWRnalpmQkhUOHVwb1VoRE9WUWpiQ285?= =?utf-8?B?SEN4OTlaNkVRaVFRSmJHRlorKzBuaWliT1ZwenBiZURaMzBTY25oSHpMZHBK?= =?utf-8?B?d3RJRHdUMFRlVWZaSE9DZlNwZlpxRFhxVktFaCtta1NBaWZRN2ljaUpLUlNy?= =?utf-8?B?U3JMZnJkTDRBU2FEaFZrbmFadFYvQk91dlpZdGhxbExxVnp4UjZhcUN4NDlT?= =?utf-8?B?KzZVUG1jSEtrT1BpY1Q1ZkxjdEp2TE1KVkxoRXNFUk5qenlJV3pmRm1GTGt5?= =?utf-8?B?cy9xM0dRTkc0V2YyMWdEeGJVZzBNTmV1YTFNelFkYm4zQ2VqRUliL0pyak9L?= =?utf-8?B?dDRFMWtaQXhRM3NHUXViei90NytiKzMyRDkvdDk2a2dLTUxPRis0TkxFTjBS?= =?utf-8?B?cEdaTWVjY1lBdm5IL3ZZWnM2UklSNTMzMkU2L0l0UUJ3V2JCMTZIdzVQSmtq?= =?utf-8?B?UmVRL2tyOXhYUCtadmVVY2JPbXpiS2xRVjVTK1JVTW5QY1NKUDdQaVBpZlZy?= =?utf-8?B?YnNPZVlLaU9ESk5jc0U5Sm5iajZOVjVPOGtKM2ZtdkFiR1FmSVJta3ZsK3Zp?= =?utf-8?B?NndyemcvbUdhQzdPZjA3Q3FwbXdlZkwyY0hEUDgwNkdQbHFjZ1ZhcHo2UUhX?= =?utf-8?B?dTUvSTdlekw4MmQrSEtGMkFtR25CckhyOHpsaEtVSjN5QzhtWlhuNGtLT0hL?= =?utf-8?B?TDFWb0pra3UxNm51NzU0cWJqZkFPU3lWVW9oeHBJdmtKK2kyQkR5SFdhZjBZ?= =?utf-8?B?Rk94ZUhqc1lpRzJaeSsxNDQ0YmQ3ZlBIR1UrN2IxNGpkZks1K3MvWWMrRVhx?= =?utf-8?B?V2lCdElzMkxKeEYycHNicTNrT2w0RHJ3dytwZTRyUENZczZVRGxpdGZ5OWpF?= =?utf-8?B?OUFXbHdMdklqT2oycUJSUjJaTUVudjRFRE9aMGhKZzFLVzEvVVBVV2QrVmhY?= =?utf-8?B?cDV5UUJXeVVYSmZHREhudGJIZEFmSFp6cEE3czZoU0dtWmtYdjREOFp1NFdO?= =?utf-8?B?ajZrbGR4aVJiSlZTQktWVXhoMVZEakIyVHNsN2dOblh5NEZPaFlkMytvdWZm?= =?utf-8?B?SXpDT0dsUk5vbmtkclRORkJUSjl3b01lREd3M2FZWFNxS0d1NWtEbGticFlE?= =?utf-8?Q?Q1IJIuf557H2mMFvnaYUHewn0?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1197e4b4-369a-42c0-dd1a-08dbdc6d1af2 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 13:02:16.5704 (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: cd+xXNUA2AHeVzu7GpGWAxiqYA+v1ii1aR+ZAEEe8qgMe74PSnYF5X8zD7S9jBZUJa17E7PH+fv5BQ3MkOpqqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7779 X-Spam-Status: No, score=-3026.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,T_SCC_BODY_TEXT_LINE 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: As indicated during review already, doing the swapping early is overall cheaper than doing it only after operand matching. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -5201,10 +5201,14 @@ md_assemble (char *line) && operand_type_check (i.types[1], imm))) swap_operands (); - /* The order of the immediates should be reversed - for 2 immediates extrq and insertq instructions */ - if (i.imm_operands == 2 - && (t->mnem_off == MN_extrq || t->mnem_off == MN_insertq)) + /* The order of the immediates should be reversed for 2-immediates extrq + and insertq instructions. Also UWRMSR wants its immediate to be in the + "canonical" place (first), despite it appearing last (in AT&T syntax, or + because of the swapping above) in the incoming set of operands. */ + if ((i.imm_operands == 2 + && (t->mnem_off == MN_extrq || t->mnem_off == MN_insertq)) + || (t->mnem_off == MN_uwrmsr && i.imm_operands + && i.operands > i.imm_operands)) swap_2_operands (0, 1); if (i.imm_operands) @@ -7557,17 +7561,6 @@ match_template (char mnem_suffix) break; } - /* This pattern aims to put the unusually placed imm operand to a usual - place. The constraints are currently only adapted to uwrmsr, and may - need further tweaking when new similar instructions become available. */ - if (i.imm_operands && i.imm_operands < i.operands - && operand_type_check (operand_types[i.operands - 1], imm)) - { - i.tm.operand_types[0] = operand_types[i.operands - 1]; - i.tm.operand_types[i.operands - 1] = operand_types[0]; - swap_2_operands(0, i.operands - 1); - } - return t; } --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -3354,6 +3354,8 @@ eretu, 0xf30f01ca, FRED&x64, NoSuf, {} urdmsr, 0xf20f38f8, USER_MSR|x64, RegMem|NoSuf|NoRex64, { Reg64, Reg64 } urdmsr, 0xf2f8/0, USER_MSR|x64, Modrm|Vex128|VexMap7|VexW0|NoSuf, { Imm32, Reg64 } uwrmsr, 0xf30f38f8, USER_MSR|x64, Modrm|NoSuf|NoRex64, { Reg64, Reg64 } -uwrmsr, 0xf3f8/0, USER_MSR|x64, Modrm|Vex128|VexMap7|VexW0|NoSuf, { Reg64, Imm32 } +// Immediates want to be first; md_assemble() takes care of swapping operands +// accordingly. +uwrmsr, 0xf3f8/0, USER_MSR|x64, Modrm|Vex128|VexMap7|VexW0|NoSuf, { Imm32, Reg64 } // USER_MSR instructions end.