From patchwork Tue Jul 4 15:24:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 115836 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp1299683vqx; Tue, 4 Jul 2023 08:27:34 -0700 (PDT) X-Google-Smtp-Source: APBJJlE3O+knOu8NRKvs4R23lO+V1YxXEmKQwf38wuoTWucjB9CAKW73sj+MeWP1fkHnKd3foGBE X-Received: by 2002:a2e:9bd6:0:b0:2b4:45bc:7bd with SMTP id w22-20020a2e9bd6000000b002b445bc07bdmr9891130ljj.4.1688484454121; Tue, 04 Jul 2023 08:27:34 -0700 (PDT) Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id w26-20020a17090652da00b00992ad8595fdsi6570913ejn.464.2023.07.04.08.27.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jul 2023 08:27:34 -0700 (PDT) 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="JgH/KOpi"; 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 D967D3853D03 for ; Tue, 4 Jul 2023 15:25:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D967D3853D03 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1688484319; bh=Z4wchasqhlScTh17R7+2lVjbAUjvjoqQ59B7QVrMlRk=; 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=JgH/KOpil5jarZ0ns3IJTKsfmsBEJV7JTGVuUnM7NQHseoqxy7uB2tshzpV5S9Ad8 x9fb9yJyRQhxrpaEfbXs/Yo1fplt3UYUrWUg4H9YnpN8Lru5G4PU0vLKXOO3Mhm4AH APAbaOqYBGfwDgnRqR1aM6SRidr6PCEmtAp1SV5g= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2083.outbound.protection.outlook.com [40.107.6.83]) by sourceware.org (Postfix) with ESMTPS id 3F0AB38555B3 for ; Tue, 4 Jul 2023 15:24:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3F0AB38555B3 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FExeVuorlGQc4Sqa4LY/kfnwp1MOClIHOervlrRJPbrng8DmP+zHkZMpize73dBopvEUw+fwdKiToGT4aHz4fQXdeWj+IcolEOB713jN6/ZJimUZASsRiCqk6gk99uCv0LUEatCvCaz7rUOeUUzPFrzLi6fYsXlxUMFl4K3VGn82JKxoTmUV9OeciKRcs4+kn4Fadw7VfCZeIddlzwRG0j9+BOMOG1P0f254ODlaRPhNyFOlj6SGMgD+2+FefqAk2X0rw1Ib4PPDed84sdqtBtPADCVkWWgW9hp0RbgHtBR1Uh+MEsBTFHFPNyeQs/hSXVNlUortqp9MJv90aset1A== 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=Z4wchasqhlScTh17R7+2lVjbAUjvjoqQ59B7QVrMlRk=; b=YExIR89mNzAq/G/h3uGfMQqpclNCqAQef+v/ffXnuGb3TXgUUG48o16fGQ2LYthBjDopOIBftjlFUxILACyoY787ye1ZFNzx54iYAwdTcQFZurPRTyfC2wgZ+YO/r92cgksJCJHrkYBhEIlPJEprDhRUz+xLHWRZFBBLfhOqq9EylWRpaVxGpd4VeMJTlZ+2+tATYF2n9yNHeqEK/8JShpg03EMaJxbeOMbBPwNOiAoYe+naXg89WG4r0b0OHGR7Tcho1uvUdx9xOPGc5pAIKnAk2+IUHWAFsTEZ9FSxwxLIU+TBhe4DZOTNyk2kIYIWU3VebyDboLuA+/GPtf8yHg== 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 DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by PA4PR04MB9269.eurprd04.prod.outlook.com (2603:10a6:102:2a4::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Tue, 4 Jul 2023 15:24:01 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::9bd3:48c9:ff58:9880]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::9bd3:48c9:ff58:9880%4]) with mapi id 15.20.6544.024; Tue, 4 Jul 2023 15:24:01 +0000 Message-ID: <126aeaee-40ae-34aa-5e30-9579264d6336@suse.com> Date: Tue, 4 Jul 2023 17:24:08 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: [PATCH 10/10] x86: simplify table-referencing macros Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR3P281CA0138.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:95::17) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|PA4PR04MB9269:EE_ X-MS-Office365-Filtering-Correlation-Id: 5603c626-7909-4d76-cd72-08db7ca2b1cf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HtJvd596oVbSehl9jHjI+RQ0NeqP6is+LJ32o7LdbiRa8lCIzdMBh7ZvVcci45fUVJJTScowaUL728iZ84iQcPXG2EtkSNJ1pbB5F6tHYap3zANzHsZslRe3nfWk1pnSspgzwxX40q8jyr3C8QFsOhxM1vmgnQJzZ1Nr0+Up+XdRyk127eZnXmA9oP4V3hl6kHWMqjuDX3a1yke7PNgEEjpeCATxKb0VaiYvv7hzNb1JyGfP7MoanFHsAeqqBkJAXlf3jIT1onSE49aThddE/oi/71WkyBDoM029H8PUfi7xDHGNLw6/jNRewVBByn9JQfWHU0PcKrcglRKYtwARmujeRkLR1DI3b+d7iIyZKJbo/iyhJiMlB4MyY53MIlPCcJzov1J73GRC4JUQXutuqDja6crjtPT+Pvh6uaP7GTsGFyHHcA1+MgmnUoxwBO8Xr7kQdQ761QQCQaEr/rKXwC9dEa1QIU73MtRRQBVpn6T5V638cLe1XCJQQIL7UVuXbfGQSrFgikV85WARr5/PmEDE+MyBL6B67BmoIbcTS5mpFbCxS5OGnm2nGGYipgVfn79cQtXbBcgPy5r2Mu9OfMScpenCr/L4bAuoqZPHXUn8RMYkbNA8cVAa2R7bYN26dhTh2Qp9tvpJq85MOcurAw== 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:(13230028)(376002)(39850400004)(346002)(136003)(396003)(366004)(451199021)(26005)(31686004)(478600001)(6512007)(6506007)(31696002)(86362001)(2616005)(186003)(38100700002)(66476007)(6916009)(66556008)(4326008)(66946007)(6486002)(316002)(8676002)(8936002)(41300700001)(2906002)(5660300002)(36756003)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?hjz05rWAYhWjAHAQ0qdqNEhxIiri?= =?utf-8?q?uGmz8YrNhTsa4hiFmYLXW9CNAdaTwFmXnuBtXE25NllVIG8gizbjCJQmHRbTA9Wa/?= =?utf-8?q?LBAFypzjjbyXQuD74fV5pFQfYNttdKe3ov/IzfvH9rf3qq8gh9MYZKADYWj6KRCpr?= =?utf-8?q?BsaTWB9ecmVvlSHjHzVyckB3/8yWbFiqKXJhqybaM2V6yuiB9GSRxsfULm9hmz5en?= =?utf-8?q?/dLwHbPzSKXDIqu8wWgLJlKi/vibtMZoiOU6ngmuGbTjgNlUDYpRpS18LnWWiS3dp?= =?utf-8?q?2E0pTIBRLsSMqZtPLlAaYHHIhMSFGcs4f+XILrCZdvNTwmkcR74oDne+47qIVvWn4?= =?utf-8?q?e4sjKxsBKX115BX0BoQM0esMABZOS4PPvD+WFfCyMWipUcq6ekJexnn6QUkBX+1Vk?= =?utf-8?q?Vyrl5Cx1qGlj+r6xauQT8Q03G/T6TF+im9aiq4dKd6YQDw1ng12NCcnwrswVEf347?= =?utf-8?q?aSGEPr0N7sq33paVSDKCNoPDK/dkT8qBjfGSUL+xfz+F4VX6IFASPbDWg9dcUCZFT?= =?utf-8?q?vs/EwgS4BuJWgN92lfe7GpZMOKglQoc3s1himbiVGJ1sndj+dPwf3t750vtX8K0DO?= =?utf-8?q?xrOkFjGw1hVpmm3zHY+IpiW5vWOHyORs0KtnLbkm7dTtapNhUnOKfkqiMSZ6DJxRy?= =?utf-8?q?bUb0UmXCQMZ1zjcO0y/CusIw3fibB8AzdgxZDEdekgWgcNUdTRXVwcMRmQKSMSwNX?= =?utf-8?q?25f5i2+7q7gXCvbXt6dvgVE5lq7FG1ZjaSlXOor1jLPHFroVRtBk7/GI8p2w367ic?= =?utf-8?q?yeqzE8OwDa/dUU66kxelSd7LYx1fJgInD7uxxNijm+T00e9LDyH8NylZ3Ndx2EBNZ?= =?utf-8?q?99DQ82V6cMcw0hhbaArMyb8gOQN12onCC/sOXNB0xA8Nsf0ge1tZwTnxSybFZYkwi?= =?utf-8?q?5CRg/gTGxRtq80K3lfryC3a7GJ6qB1JH5ExQTB3HVh5QlIBmbuT53EjvWAHOKZah4?= =?utf-8?q?byeiRXs8+F6N0h0dJ/8wTUTnxRAmGDEjyqXOQRgILXL8QTKrqNFuZ5evODu7nGl+q?= =?utf-8?q?DtFlTVH6hufnSmSTr8GJerkscC33R7nAwo5gMuZlW62912lo9QMR8HwRHa67sBNeQ?= =?utf-8?q?BOSDlj8CzEQaK53BH41jkO2x0ToyZzvZM9liCKcNTcNSdL5SPqCWck031tSTsV9Pc?= =?utf-8?q?+defYg7ME5XwTxrRF+vUcuIA/jPGgTXJUrY006MGjPNrC9IqnvmisfSTmO4zrwDp1?= =?utf-8?q?6f7KNYgwI9IjpprsuC+JvJwgyq2pzCwqNwz+LtBwjEMVQVeLNwIx4a7xhJPlCJgML?= =?utf-8?q?LFAzjO4XiPaP6fwAxcX8YAwduIb/RlKUzeLwcDTEUkBKouo6rO5SbfKL1TVfnFkGI?= =?utf-8?q?U3Rd9D+OKpZGDBFRaWYSrp+c7Unu6n14iidqwjPN0ZBG43Qd/Y8gC2XU1tWxxyeDU?= =?utf-8?q?buMa9qLlBKD2UPjRo1SD7JJl5PQwCmUm2yUFhhB/t3W4wbpd6bbawkYIzMU8p9D2M?= =?utf-8?q?Rys8ISIXkordKeHl5p/PUhaoeam11l8ws6SxWfqnDimE5EoA1unwLUjmXTB8wDZGP?= =?utf-8?q?b+pKrubUSlur?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5603c626-7909-4d76-cd72-08db7ca2b1cf X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2023 15:24:01.4283 (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: mXzyk5l+wiwRSrl6apzqilqtvh+AuM4PXuLDEFgRal8+2r/u7pPRGeMT4z6Zpz9y7BOCHcMAiLz4xt3JzheerA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB9269 X-Spam-Status: No, score=-3027.3 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 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?1770504275035963814?= X-GMAIL-MSGID: =?utf-8?q?1770504275035963814?= First of all it is entirely unclear why THREE_BYTE_TABLE_PREFIX() was introduced by bf890a93a7c4. Nothing uses the .prefix_requirement values from the two relevant entries. And then having VEX_Cn_TABLE() and friends take arguments is misleading. These aren't used (or pointlessly used in the case of VEX_C5_TABLE); the respective table index is decoded from the insn (or implied in the case of VEX_C5_TABLE). --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -789,20 +789,18 @@ enum #define FLOAT NULL, { { NULL, FLOATCODE } }, 0 #define DIS386(T, I) NULL, { { NULL, (T)}, { NULL, (I) } }, 0 -#define DIS386_PREFIX(T, I, P) NULL, { { NULL, (T)}, { NULL, (I) } }, P #define REG_TABLE(I) DIS386 (USE_REG_TABLE, (I)) #define MOD_TABLE(I) DIS386 (USE_MOD_TABLE, (I)) #define RM_TABLE(I) DIS386 (USE_RM_TABLE, (I)) #define PREFIX_TABLE(I) DIS386 (USE_PREFIX_TABLE, (I)) #define X86_64_TABLE(I) DIS386 (USE_X86_64_TABLE, (I)) #define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I)) -#define THREE_BYTE_TABLE_PREFIX(I, P) DIS386_PREFIX (USE_3BYTE_TABLE, (I), P) -#define XOP_8F_TABLE(I) DIS386 (USE_XOP_8F_TABLE, (I)) -#define VEX_C4_TABLE(I) DIS386 (USE_VEX_C4_TABLE, (I)) -#define VEX_C5_TABLE(I) DIS386 (USE_VEX_C5_TABLE, (I)) +#define XOP_8F_TABLE() DIS386 (USE_XOP_8F_TABLE, 0) +#define VEX_C4_TABLE() DIS386 (USE_VEX_C4_TABLE, 0) +#define VEX_C5_TABLE() DIS386 (USE_VEX_C5_TABLE, 0) #define VEX_LEN_TABLE(I) DIS386 (USE_VEX_LEN_TABLE, (I)) #define VEX_W_TABLE(I) DIS386 (USE_VEX_W_TABLE, (I)) -#define EVEX_TABLE(I) DIS386 (USE_EVEX_TABLE, (I)) +#define EVEX_TABLE() DIS386 (USE_EVEX_TABLE, 0) #define EVEX_LEN_TABLE(I) DIS386 (USE_EVEX_LEN_TABLE, (I)) enum @@ -2081,9 +2079,9 @@ static const struct dis386 dis386_twobyt { Bad_Opcode }, { "getsec", { XX }, 0 }, /* 38 */ - { THREE_BYTE_TABLE_PREFIX (THREE_BYTE_0F38, PREFIX_OPCODE) }, + { THREE_BYTE_TABLE (THREE_BYTE_0F38) }, { Bad_Opcode }, - { THREE_BYTE_TABLE_PREFIX (THREE_BYTE_0F3A, PREFIX_OPCODE) }, + { THREE_BYTE_TABLE (THREE_BYTE_0F3A) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -2493,11 +2491,11 @@ static const struct dis386 reg_table[][8 /* REG_8F */ { { "pop{P|}", { stackEv }, 0 }, - { XOP_8F_TABLE (XOP_09) }, + { XOP_8F_TABLE () }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { XOP_8F_TABLE (XOP_09) }, + { XOP_8F_TABLE () }, }, /* REG_C0 */ { @@ -4016,7 +4014,7 @@ static const struct dis386 x86_64_table[ /* X86_64_62 */ { { MOD_TABLE (MOD_62_32BIT) }, - { EVEX_TABLE (EVEX_0F) }, + { EVEX_TABLE () }, }, /* X86_64_63 */ @@ -4063,13 +4061,13 @@ static const struct dis386 x86_64_table[ /* X86_64_C4 */ { { MOD_TABLE (MOD_C4_32BIT) }, - { VEX_C4_TABLE (VEX_0F) }, + { VEX_C4_TABLE () }, }, /* X86_64_C5 */ { { MOD_TABLE (MOD_C5_32BIT) }, - { VEX_C5_TABLE (VEX_0F) }, + { VEX_C5_TABLE () }, }, /* X86_64_CE */ @@ -7854,17 +7852,17 @@ static const struct dis386 mod_table[][2 { /* MOD_62_32BIT */ { "bound{S|}", { Gv, Ma }, 0 }, - { EVEX_TABLE (EVEX_0F) }, + { EVEX_TABLE () }, }, { /* MOD_C4_32BIT */ { "lesS", { Gv, Mp }, 0 }, - { VEX_C4_TABLE (VEX_0F) }, + { VEX_C4_TABLE () }, }, { /* MOD_C5_32BIT */ { "ldsS", { Gv, Mp }, 0 }, - { VEX_C5_TABLE (VEX_0F) }, + { VEX_C5_TABLE () }, }, { /* MOD_0F01_REG_0 */ @@ -8710,7 +8708,7 @@ get_valid_dis386 (const struct dis386 *d ins->need_vex = 2; ins->codep++; vindex = *ins->codep++; - dp = &vex_table[dp->op[1].bytemode][vindex]; + dp = &vex_table[VEX_0F][vindex]; ins->end_codep = ins->codep; /* There is no MODRM byte for VEX 77. */ if (vindex != 0x77 && !fetch_modrm (ins))